如何在LaTeX表中包装文本?

我正在LaTeX中创build一个涉及几个表格的报告。 我被困在那,因为我的单元格数据在表中超过了页面的宽度。 我可以以某种方式包装文本,使其落入表格的同一单元格中的下一行?

它与桌子的宽度有什么关系? 但是,因为它超出了页面的宽度,这不会有什么不同,是吗?

使用p {width}代替你的列说明符而不是l / r / c。

\begin{tabular}{|p{1cm}|p{3cm}|} This text will be wrapped & Some more text \\ \end{tabular} 

使用常规tabular环境,您需要使用p{width}列types,如marcog所示。 但是这迫使你给出明确的宽度。

另一个解决scheme是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的伴侣那里得到的)。 也有包装tabulary ,这将调整列的宽度,以平衡行高。 有关详细信息,可以使用texdoc tabulary (TeXlive)获取每个包的文档。

另一种select是在需要文本换行的每个单元格中插入一个小型文件,例如:

 \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

如果要包装文本但保持alignment,则可以将该单元格包装在varwidthvarwidth环境中(varwidth来自varwidth包)。 Varwidth的宽度与内容一样宽但不超过X。 您可以创build一个类似“p {xx”的自定义列types,但是会缩小以适合使用

 \newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}} 

这可能需要array封装。 然后当你使用像\begin{tabular}{llM{2in}}的东西时,前两列我们是正常的左alignment,第三列是正常的左alignment,但是如果它比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}