表格中的新行不会创建新行

表格中的新行不会创建新行

在表格环境中使用换行符时出现问题。即,从以下示例来看,在第 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和文本类型的列中的单元格不能断开。在这些单元格中lr它们的宽度将适应所含文本的宽度。

关于如何编写表格的一些说明:

  • 使用\rule表示水平线是错误的。因为这些线的定义是\hlinecline
  • 除它们之外,还存在许多其他行定义的包,如booktabshhline等。
  • 用于编写表格的新包 -nicematrixtabularray能够在其序言中定义所有表格行。

使用包编写的表格示例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语法,请查阅包文档,其中有全面而简洁的解释。

相关内容