在表格环境中使用换行符时出现问题。即,从以下示例来看,在第 3 列中,\newline 添加了新行,并且按预期工作,但是在第 4 列中,\newline 命令没有创建新行(请查看下面附加的图片)。你能告诉我为什么会出现这种情况吗?顺便说一下,我正在使用数组包。
\begin{center}
\begin{tabular}{|l|l|>{\raggedright\arraybackslash}p{5cm}|l|}
\hline
\rule[-1ex]{0pt}{2.5ex} ID & text & text & text \\
\hline
\rule[-1ex]{0pt}{2.5ex} 1 & text & text & text1 \newline text2\\
\hline
\rule[-1ex]{0pt}{2.5ex} 2 & text & text & \\
\hline
\rule[-1ex]{0pt}{2.5ex} 3 & text & text & \\
\hline
\rule[-1ex]{0pt}{2.5ex} 4 & text& text & \\
\hline
\rule[-1ex]{0pt}{2.5ex} 5 & text & text1 \newline text2 & text1 \newline text 2\\
\hline
\end{tabular}
\end{center}
答案1
正如以下问题评论中提到的那样:
- 单元格中的文本只能在所谓的“段落”单元格中断掉,即在类型为
p{<width>}
、m{<width>}
或 的列中的单元格中b{<width>}
,这些单元格定义了一个数组包或X
由包定义的类型tabularx
。 - 在这些单元格中,长度超过单元格宽度的文本会自动断掉,但是可以通过\newline
或\par
或在单元格的段落之间插入空行来强制断掉它。 c
和文本类型的列中的单元格不能断开。在这些单元格中l
,r
它们的宽度将适应所含文本的宽度。
关于如何编写表格的一些说明:
- 使用
\rule
表示水平线是错误的。因为这些线的定义是\hline
和cline
。 - 除它们之外,还存在许多其他行定义的包,如
booktabs
、hhline
等。 - 用于编写表格的新包 -
nicematrix
并tabularray
能够在其序言中定义所有表格行。
使用包编写的表格示例tabularray
:
\documentclass{article}
\usepackage{tabularray}
\begin{document}
\begin{center}
\begin{tblr}{hlines, vlines,
colspec = {c l Q[l, wd=50mm] Q[l, wd=3em]},
row{1} = {font=\bfseries, c}
}
ID & text & text & text \\
1 & text & text & text1 text2 \\
2 & text & text & \\
3 & text & text\newline text2
& \\
4 & text & text\par text2
& \\
5 & text & text1
text2 & text1 \newline text 2 \\
\end{tblr}
\end{center}
\end{document}
其生产成果为:
对于tabularray
语法,请查阅包文档,其中有全面而简洁的解释。