在以下文档中:
\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 的类定义了maxdepth
5pt,这实际上意味着您不能比预期更靠近页面底部 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 的列。