Латекс: как разбить строку многострочно внутри таблицы

Не могу понять, как в таблице разбить строку внутри многострочности. Мне нужно сделать какую-то таблицу, в которой у меня есть одна ячейка высотой в две строки, и у меня есть длинный текст в ней, но он не разрывает строку, а текст перекрывает другую ячейку с левой стороны.

Какие-либо предложения?

Пример кода:

\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}

person kokosing    schedule 21.10.2010    source источник


Ответы (5)


Вы можете попробовать minipage это:

\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}
person Steve Tjoa    schedule 21.10.2010
comment
Я не могу просто использовать параметр l в табличной команде, потому что ячейка была шириной, но длинный текст \ begin {minipage} {2cm} для разрыва \ end {minipage} помог мне, спасибо. - person kokosing; 22.10.2010

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 в латексном документе

person Tombart    schedule 27.03.2012
comment
Спасибо, у меня все хорошо. Однако я думаю, вам следует использовать \parbox вместо TeX \vbox - person Florian Bw; 17.01.2014
comment
Спасибо! Я обновил ответ. Parbox обрабатывает пространство над текстом. - person Tombart; 17.01.2014
comment
Здравствуйте, есть ли шанс, что мы сможем центрировать предложение, чтобы разбить его, вместо выравнивания по левому краю? - person lllllllllllll; 30.04.2019
comment
@lllllllllllll просто добавьте \centering в parbox содержимое, например: {\centering Long text to break} - person Tombart; 30.04.2019

для меня это самый короткий и практичный ответ:

используйте \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}

Вот и все!

Единственная возможная проблема заключается в том, что в маловероятном случае, когда текст в других ячейках действительно короткий, он может выглядеть так:   Текст с обрывом нужной ширины, но, к сожалению, выходит за пределы таблицы

Однако, если обычно в вашей таблице больше текста в других ячейках, чем просто "sth1", она будет выглядеть великолепно: введите здесь описание изображения.

person loved.by.Jesus    schedule 02.02.2015
comment
Как предотвратить переполнение многострочного столбца? - person Midiparse; 19.12.2015
comment
@Midiparse Мне очень жаль, что я не могу дать вам ответ. Одна из возможностей - поместить текст в поле и использовать это поле в многострочном окружении [просто догадываюсь (!)] - person loved.by.Jesus; 27.12.2015

Для меня сработало использование встроенной команды "multirow" - {*} это "{width}"

person OddballDK    schedule 06.05.2013

Также, используя 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}

В любом случае будьте осторожны, чтобы не выходить за пределы своих ячеек.

person MattAllegro    schedule 19.04.2019