让表格在两列末尾对齐

让表格在两列末尾对齐

在以下文档中:

\documentclass[twocolumn]{article}
\begin{document}

\begin{tabular*}{\linewidth}{|c|}\hline test\\\hline\end{tabular*}

\vfill

\begin{tabular*}{\linewidth}{|c|}\hline test\\\hline\end{tabular*}

\pagebreak

\begin{tabular*}{\linewidth}{|c|}\hline test\\\hline\end{tabular*}

\vfill

\begin{tabular*}{\linewidth}{|c|}\hline test\\\hline\end{tabular*}

\end{document}

我希望第二个和第四个表格能够对齐,但是第四个表格的位置稍微高一点,好像 LaTeX 在其后插入了一些空格。如果我用文本代替表格,它们可以完美对齐。我该如何让它与表格配合使用?

答案1

您可以使用:\newpage代替\pagebreak,这也会使左下角的表格向上移动,这样您就可以获得所需的对齐方式。通常\newpage不建议这样做,但是由于您\vfill中间有一些表格,因此这在这里没有问题。

编辑:

以下是对所发生情况的部分解释。您的表格生成一个深度为 3.9pt 的水平盒子。这也是 TH 谈到的 3.9pt。现在假设您的底部边距为 1cm。那么不是文本的最底部,即距离页面底部 1 厘米处,但基线页面/列的最后一个水平盒子的宽度。因此,如果最后一行有下降部分,例如字母“j”,那么下降部分将比您预期的更靠近页面底部。这是有意为之的设计,因为它使基线页面的最后一行对齐。

就您的情况而言,据我所知,表格的下部水平线是“下降线”,如上所述,它下降了 3.9pt。现在,article字体大小为 10pt 的类定义了maxdepth5pt,这实际上意味着您不能比预期更靠近页面底部 5pt 以上。表格的 3.9pt 小于 5pt,因此这将被接受。

现在你会问:为什么第二列不适用相同的情况?我无法完全解释这一点,但我可以描述发生了什么。末尾的\end{document}调用宏\clearpage,而宏又调用\newpage。这就是为什么如果你使用\newpage而不是\pagebreak我上面建议的那样,你会得到所需的对齐方式的原因:对于这两列,你都有相同的宏来结束该列。

为什么 会\newpage阻止 3.9pt 的“下降线”?宏在导致分页符的之前\newpage添加了,这给出了另一个允许的断点,而这里您没有任何下降线。最后,是一种可无限拉伸的胶水,但它比 弱很多,因此它不会阻止最后一个表格移动到文本底部。只需自己尝试一下,将文档中的 两个 替换为!\vfil\penalty-10000\vfil\vfil\vfill\vfill\vfil

答案2

这不太令人满意。我不确定为什么会发生这种情况。如果你\pagebreak在最后一个表格后面添加一个,它们就会排成一行。有一些事情\penalty-10000(基本上就是这样\pagebreak的)让它按你认为的方式工作。

如果您查看页面生成器生成的框,您会发现左列有额外的 -3.9 pt 粘连,这就是导致其较低的原因。我不确定这到底是怎么回事(尽管我相信有人可以解释)。

您可以尝试以下实验来亲自查看。\nointerlineskip\null在第二个表格后添加,不做其他更改。这会导致表格向上移动(消除了 -3.9 pt 的粘连)。现在,\pagebreak在第四个表格后添加,并注意左列现在是高出 3.9 pt 的列。

相关内容