Латекс: как разбить линию на несколько строк внутри табличного
Я не могу понять, как разбить линию внутри мультируста в табличном выражении. Мне нужно создать таблицу, в которой у меня есть одна ячейка с двумя строками, и у меня есть длинный текст, но она не разбивает строку, а текст перекрывает другую ячейку с левой стороны.
Любые предложения?
Пример кода:
\begin{center}
\begin{tabular}{|p{1cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
\multirow{2}{*}{Long text to break} % HERE IS A PROBLEM
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3}
\\ \cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ \hline
\hline
\end{tabular}
\end{center}
Ответы
Ответ 1
Вы можете попробовать minipage
it:
\begin{center}
\begin{tabular}{|l|l|l|l|l|l|}
\hline
\multirow{2}{*}{\begin{minipage}{0.5in}Long text to break\end{minipage}}
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\
\cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\
\hline
\hline
\end{tabular}
\end{center}
Однако в вашем конкретном случае мое предложение было бы просто ослабить ограничения других столбцов, потому что там слишком много места. С каждым p{}
, который заставляет другие столбцы быть определенной шириной, поэтому места для первого столбца недостаточно.
Следующий код выглядел презентабельно для меня, когда я скомпилировал его:
\begin{center}
\begin{tabular}{|l|l|l|l|l|l|}
\hline
\multirow{2}{*}{Long text to break}
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\
\cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\
\hline
\hline
\end{tabular}
\end{center}
Ответ 2
p
и \parbox
также работает:
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{|p{1.5cm}|l|l|l|l|l|}
\hline
\multirow{2}{*}{\parbox{1.5cm}{Long text to break}}
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3} \\
\cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\
\hline
\hline
\end{tabular}
\end{center}
\end{document}
![parbox in latex document]()
Ответ 3
для меня кратчайший и наиболее практичный ответ:
используйте \linewidth
как длину параметра {width}
.
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{|p{1cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
\multirow{2}{\linewidth}{Long text to break} % HERE IS A PROBLEM
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3}
\\ \cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ \hline
\hline
\end{tabular}
\end{center}
\end{document}
Что это!
Единственная возможная проблема заключается в том, что в маловероятном случае, когда текст в других ячейках действительно короткий, он может выглядеть так:
![Broken text in the right width but sadly going out of the table]()
Однако, если обычно ваша таблица имеет больше текста на других ячейках, чем просто "sth1", она будет выглядеть великолепно:
![enter image description here]()
Ответ 4
Для меня это сработало, чтобы использовать встроенную команду "multirow" -
{*} - "{width}"
Ответ 5
Также используя parbox
и \\
:
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{tabular}{|p{1cm}|p{2.5cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}
\hline
\multirow{2}{*}{\parbox{1cm}{Long\\ text\\ to\\ break}} % NOT A PROBLEM?
& Thing & \multicolumn{2}{|c|}{Thing 2} & \multicolumn{2}{|c|}{Thing 3}
\\ \cline{2-6}
& sth 1 & sth 1 & sth 2 & sth 1 & sth 2 \\ \hline
\hline
\end{tabular}
\end{center}
\end{document}
В любом случае будьте осторожны, чтобы не превышать поля ваших клеток.