使用 p{width} 作为列说明符,而不是 l/r/c。
\begin{tabular}{|p{1cm}|p{3cm}|}
This text will be wrapped & Some more text \\
\end{tabular}
编辑:(基于评论)
\begin{table}[ht]
\centering
\begin{tabular}{p{0.35\linewidth} | p{0.6\linewidth}}
Column 1 & Column2 \\ \hline
This text will be wrapped & Some more text \\
Some text here & This text maybe wrapped here if its tooooo long \\
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
我们得到:
https://i.stack.imgur.com/XHn2Z.png
对于常规 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 中)获取每个包的文档。
另一种选择是在需要文本换行的每个单元格中插入一个 minipage,例如:
\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
的含义:当我尝试时,它似乎更多的是table-width而不是column-width,所以我不得不像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 个。然后其余的由包自动完成。
大部分示例取自 http://en.wikibooks.org/wiki/LaTeX/Tables 。
像一块蛋糕一样简单!
您可以在保持当前对齐方式(c
、r
或 l
)的同时定义新的列类型,如(在本例中为 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}
https://i.stack.imgur.com/pcSlA.png
\begin{tabular}{|c|L|L|}
中有 L
如果您想换行但保持对齐,则可以将该单元格换行在 minipage
或 varwidth
环境中(varwidth 来自 varwidth 包)。 Varwidth 将“与它的内容一样宽,但不比 X 宽”。您可以创建一个自定义列类型,其行为类似于“p{xx}”,但通过使用缩小以适应
\newcolumntype{M}[1]{>{\begin{varwidth}[t]{#1}}l<{\end{varwidth}}}
这可能需要 array
包。然后,当您使用 \begin{tabular}{llM{2in}}
之类的内容时,前两列正常左对齐,第三列正常左对齐,但如果它比 2in 宽,则文本将被换行。
要将文本 AB
更改为表格单元格中的 A \r B
,请将其放入单元格位置:\makecell{A \\ B}
。
在此之前,您还需要包含包 makecell
。
\makecell[l]{A \\ B}
定义对齐方式(l = left, r=right)
新的 tabularray
使在单元格中换行比以往更容易。
该包支持所有传统使用的列名,如 c
、l
、r
等,但也有自己的 Q
列,它接受各种键来控制宽度以及垂直和水平对齐。它还提供了一个 X
列,如 tabularx` 中所知,它将自动计算列的宽度以使表格适合可用的文本宽度。
另一个不错的功能是所有设置也可以为单个单元格完成。
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{table}
\begin{tblr}{|c|Q[2cm,valign=m]|X[j,valign=m]|}
\hline
Title 1 & Title 2 & Title 3 \\
\hline
one-liner & multi-line text & multi-line piece of text to show case a multi-line and justified cell \\
\hline
apple & orange & banana \\
\hline
\SetCell{h,2cm} wrapping text only in a single cell & orange & banana \\
\hline
\end{tblr}
\end{table}
\end{document}
https://i.stack.imgur.com/cxg1E.png
(感谢 Shayan Amani 在他们的回答中提供了 MWE!)
\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}
\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}}