我在LaTeX中创建一个涉及几个表的报告。由于表中的单元格数据超出了页面的宽度,因此我坚持这一点。我可以以某种方式包装文本,使其落入表格的同一单元格的下一行吗?
它与表的宽度有什么关系吗?但是因为它超出了页面的宽度,它会有所作为吗?
答案 0 :(得分:435)
对列说明符使用p {width}而不是l / r / c。
\begin{tabular}{|p{1cm}|p{3cm}|}
This text will be wrapped & Some more text \\
\end{tabular}
答案 1 :(得分:130)
对于常规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同伴那里拿走了这个)。还有一个包tabulary
,它将调整列宽以平衡行高。有关详细信息,您可以使用texdoc tabulary
(在TeXlive中)获取每个包的文档。
答案 2 :(得分:43)
另一种选择是在每个需要文本包装的单元格中插入一个小型文件,例如:
\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}
答案 3 :(得分:34)
我喜欢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。然后其余部分由包自动完成。
答案 4 :(得分:5)
如果要包装文本但保持对齐,则可以将该单元格包装在minipage
或varwidth
环境中(varwidth来自varwidth包)。变量将“与其内容一样宽但不宽于X”。您可以创建一个自定义列类型,其行为类似于“p {xx}”,但通过使用
\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}
可能需要array
包。然后,当您使用类似\begin{tabular}{llM{2in}}
的前两列时,我们将正常左对齐,第三列将正常左对齐,但如果它比2更宽,则文本将被包装。
答案 5 :(得分:3)
像一块蛋糕一样简单!
您可以在保持当前对齐方式(L
,c
或{{1})的同时定义新的列类型(例如r
) }):
l
答案 6 :(得分:0)
要将文本AB
更改为表格单元格中的A \r B
,请将其放在单元格位置\makecell{A \\ B}
中。
在此之前,您还需要包含软件包makecell
。
答案 7 :(得分:-7)
\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}