Lamport 的 \multicolumn 规则无效吗?

Lamport 的 \multicolumn 规则无效吗?
\documentclass{article}
\begin{document}
\begin{tabular}{r|r@{\,}l|}
1&2&300\\
10&-2&X\\
\multicolumn{2}{r@{\,}}{2}&\multicolumn{1}{l}{X}
\end{tabular}
\end{document}

根据 Lamport 的说法,列格式由三部分组成:

r|+ r@{\,}+l|

因此我期望两个 X 位于同一位置。但第三行中的 X 向右移动(与第二行中的 X 相比)。

通过反复试验,我找到了一个解决方案,即\multicolumn{1}{l}{X}用替换\multicolumn{1}{@{}l}{X}。这种行为背后的原因是什么?

答案1

你只给出了规则的一部分,而你展示的输出受到另一部分的影响。

确实(除了第一列之外)列间材料来自@{..}或被|添加到列的右边缘,因此@{\,}在第 2 列的右边缘而不是第 3 列的左边缘添加了一个窄空间。

但(@!array)不仅添加其参数中指定的材料;它移除空间\tabcolsep\tabcolsep被添加到两个都每列的两侧并使用@将其从当前列的右侧移除下面的左边缘。

\tabcolsep因此,第 3 列左侧没有填充并且与第 2 列齐平,实现此目的的最简单方法\multicolumn就是如您所展示的那样应用,@{}这不会增加任何内容但会删除\tabcolsep空间。

相关内容