Как обернуть текст в таблицы LaTeX?
Я создаю отчет в LaTeX, который включает в себя несколько таблиц. Я застрял на этом, поскольку мои данные ячейки в таблице превышают ширину страницы. Могу ли я каким-то образом обернуть текст так, чтобы он попал в следующую строку в той же ячейке таблицы?
Это как-то связано с шириной стола? Но поскольку он превышает ширину страницы, это не будет иметь значения, не так ли?
6 ответов:
используйте P{width} для спецификаторов столбцов вместо l/r / c.
\begin{tabular}{|p{1cm}|p{3cm}|} This text will be wrapped & Some more text \ \end{tabular}
обычной
tabularсреда, Вы хотите использоватьp{width}тип столбца, как marcog указывает. Но это заставляет вас давать явные ширины.другое решение-это
tabularxсреда:\usepackage{tabularx} ... \begin{tabularx}{\linewidth}{ r X } right-aligned foo & long long line of blah blah that will wrap when the table fills the column width\ \end{tabularx}
все столбцы X имеют одинаковую ширину. Вы можете повлиять на это, установив
\hsizeв объявлении формата:>{\setlength\hsize{.5\hsize}} X >{\setlength\hsize{1.5\hsize}} Xно тогда все факторы должны суммироваться до 1, я полагаю (я взял это из LaTeX companion). Также пакет
tabularyчто отрегулирует ширины столбца для того чтобы сбалансировать высоты строки. Для получения подробной информации, вы можете получить документацию для каждого пакета сtexdoc tabulary(в TeXlive).
другой вариант-вставить мини-страницу в каждую ячейку, где требуется перенос текста, например:
\begin{table}[H] \begin{tabular}{l} \begin{minipage}[t]{0.8\columnwidth}% a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line a very long line % \end{minipage}\tabularnewline \end{tabular} \end{table}
мне нравится простота
tabularyпакет:\usepackage{tabulary} ... \begin{tabulary}{\linewidth}{LCL} \hline Short sentences & \# & Long sentences \ \hline This is short. & 173 & This is much loooooooonger, because there are many more words. \ This is not shorter. & 317 & This is still loooooooonger, because there are many more words. \ \hline \end{tabulary}в примере вы упорядочиваете всю ширину таблицы относительно \textwidth. Например, 0,4 из них. Затем все остальное автоматически делается пакетом.
большая часть примера взята из http://en.wikibooks.org/wiki/LaTeX/Tables .
если вы хотите обернуть текст, но сохранить выравнивание, то вы можете обернуть эту ячейку в
minipageилиvarwidthсреда (varwidth происходит из пакета varwidth). Varwidth будет "таким же широким, как его содержимое, но не шире X". Вы можете создать пользовательский тип столбца, который действует как "p{xx}", но сжимается, чтобы соответствовать с помощью\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}что может потребовать . Затем, когда вы используете что-то вроде
\begin{tabular}{llM{2in}}первые две колонки у нас нормальные левосторонние и третья столбец будет нормально выровнен по левому краю, но если он станет шире, чем 2 дюйма, то текст будет завернут.
\begin{table} \caption{ Example of force text wrap} \begin{center} \begin{tabular}{|c|c|} \hline cell 1 & cell 2 \ \hline cell 3 & cell 4 & & very big line that needs to be wrap. \ \hline cell 5 & cell 6 \ \hline \end{tabular} \label{table:example} \end{center} \end{table}
Comments