据我所知,表格的构建方式是声明需要多少列以及如何格式化它们。在某些列(尤其是l
、c
和r
)中,LaTeX 会计算这些列所需的宽度。在其他列中,作者定义宽度(通过使用p{<width>}
和类似的声明)。LaTeX 还会添加列间空间。这会导致表格的总宽度。
X
我还认为,我理解 LaTeX 在环境中使用时如何计算列的最终宽度,tabularx
以适应列,以便总宽度达到表格的定义宽度。
我的问题是:是否允许在 -commandp{<width>}
中使用声明\multicolumn
?据我所知,如果作者插入这样一个\multicolumn
定义其自身宽度的 ,而不是使用 LaTeX 计算出的组合列宽度,LaTeX 一定会感到困惑。
举个例子:假设我们有两列,一个l
-列和一个p{2cm}
。LaTeX 发现,第一列中最长的条目是 1cm,因此,这两列的总可用宽度是1 cm + 2\tabcolsep + 2cm
。现在假设作者订购了\multicolumn{2}{p{5cm}}{...}
,这显然比 LaTeX 计算的 宽度要宽得多3cm + 2\tabcolsep
。
但是,如果作者希望能够插入大量文本,并将其分布到几行中,就像在常规p
列中一样,他们应该使用什么呢?
答案1
使用tabularray
,您可以选择多列单元格的宽度以及跨越算法:
\documentclass{article}
\usepackage{tabularray}
\usepackage{caption}
\begin{document}
In Table \ref{tab:default} (default span), the multicolumn cell is 5cm wide. The third single cell is enlarged to reach, together with the other two cells, the total width of 5cm.
\begin{table}[h]
\centering
\caption{\label{tab:default}Default span}
\begin{tblr}{
hlines, vlines,
cell{1}{1}={c=3}{c,5cm}
}
Multicolumn cell with default span \\
First & Second & Third \\
\end{tblr}
\end{table}
In Table \ref{tab:even} (even span), the multicolumn cell is 5cm wide. The three single cells are enlarged to have the same width and reach, all together, the total width of 5cm.
\begin{table}[h]
\centering
\caption{\label{tab:even}Even span}
\begin{tblr}{
hlines, vlines,
hspan=even,
cell{1}{1}={c=3}{c,5cm}
}
Multicolumn cell with even span\\
First & Second & Third \\
\end{tblr}
\end{table}
In Table \ref{tab:minimal} (minimal span), the multicolumn cell is adapted to the total width of the three single cells. In this case, the 5cm width of the multicolumn cell is ignored.
\begin{table}[h]
\centering
\caption{\label{tab:minimal}Minimal span}
\begin{tblr}{
hlines, vlines,
cell{1}{1}={c=3}{c,5cm},
hspan=minimal,
}
Multicolumn cell with minimal span\\
First & Second & Third\\
\end{tblr}
\end{table}
\end{document}
PS:垂直线只是为了显示列宽而添加的,不应用于专业的表格中。