Answers:
将p {width}用作列说明符,而不是l / r / c。
\begin{tabular}{|p{1cm}|p{3cm}|}
This text will be wrapped & Some more text \\
\end{tabular}
\begin{tabular}{p{1cm}p{3cm}}
begin{tabular}{lp{<whatever is left to fill the line width>}}
p{0.2\linewidth}p{0.6\linewidth}}
在常规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中)获取每个软件包的文档。
另一种选择是在每个需要文本换行的单元格中插入一个小页面,例如:
\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}
itemize
列表放置在单元格中。
\columnwidth
:当我尝试使用它时,它似乎是表宽度而不是列宽度,因此我不得不设置一个手动比例0.2\columnwidth
来获得合理的宽度。
我喜欢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。然后其余的由程序包自动完成。
像一块蛋糕一样简单!
您可以定义新的列式一样(L
在这种情况下),同时保持当前的对齐方式(c
,r
或l
):
\documentclass{article}
\usepackage{array}
\newcolumntype{L}{>{\centering\arraybackslash}m{3cm}}
\begin{document}
\begin{table}
\begin{tabular}{|c|L|L|}
\hline
Title 1 & Title 2 & Title 3 \\
\hline
one-liner & multi-line and centered & \multicolumn{1}{m{3cm}|}{multi-line piece of text to show case a multi-line and justified cell} \\
\hline
apple & orange & banana \\
\hline
apple & orange & banana \\
\hline
\end{tabular}
\end{table}
\end{document}
如果要换行但保持对齐,则可以在minipage
或varwidth
环境中换行该单元格(varwidth来自varwidth包)。Varwidth将“与内容一样宽,但不超过X”。您可以创建一个自定义列类型,其行为类似于“ p {xx}”,但可以通过缩小以适合
\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}
这可能需要array
包装。然后,当您使用诸如\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}