Латекс: как разбить многострочную строку внутри табличного - PullRequest
29 голосов
/ 21 октября 2010

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

Любойпредложения?

Пример кода:

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

Ответы [ 5 ]

33 голосов
/ 27 марта 2012

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

11 голосов
/ 22 октября 2010

Вы можете попробовать 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}
10 голосов
/ 02 февраля 2015

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

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

7 голосов
/ 06 мая 2013

У меня получилось использовать встроенную команду «multirow» - {*} это "{ширина}"

1 голос
/ 19 апреля 2019

Также с использованием 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}

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

...