首页顶部的垂直空间不同

首页顶部的垂直空间不同

我一直在处理一份文档,其中某些页面的顶部有额外的垂直空间,并注意到在某些情况下,第一页的间距与后面的页面的间距不同。请参阅以下 MWE:

\documentclass{article}
\usepackage{lipsum}

\begin{document}
\vspace*{10pt}
\lipsum[1-2]
\newpage
\vspace*{10pt}
\lipsum[1-2]
\end{document}

第二页顶部的空间比第一页小。奇怪的是,如果你只使用一段lipsum,问题就消失了。它也可以通过使用

\null\vspace{10pt}

有人能解释一下这是怎么回事吗?

答案1

问题在于,\baselineskip粘连被插入到页面的第一行之前\vspace*。并且它取决于前一行的深度。在文档的开头,此深度为零,但在打印第二段的最后一行之后,深度来自 p 和 q 字母的深度。如果删除第二段,则最后一行仅包含单词,rutrum并且其深度为零。

如果分页符后未使用,则删除\vspace*“不稳定”,因为它是分页符后的“可丢弃物品”,并且通常使用粘连。\baselineskip\topskip

\vspace*实现很糟糕,因为它保存了\prevdepth(它用于下一个\baselineskip粘合),然后它放入不可丢弃的项目(\hrule)加上所需的\vskip,然后恢复\prevdepth寄存器:

\def\@vspacer#1{%
  \ifvmode
    \dimen@\prevdepth
    \hrule \@height\z@
    \nobreak
    \vskip #1
    \vskip\z@skip
    \prevdepth\dimen@
  \else ...

现在,“不稳定”一词\baselineskip被添加到材料之后\vspace*,并且不会在分页符处被删除。

我建议使用

\par \null \nobreak \vskip-\baselineskip \vskip<desired amount> \relax

而是 LaTeX 的\vspace*

答案2

Wipet 的分析是正确的。如果顶部需要精确的间距,则应中和 prevdepth。

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\g@addto@macro{\newpage}{\nointerlineskip}
\makeatother

\begin{document}
\nointerlineskip
\vspace*{10pt}
\lipsum[1]
\newpage
\vspace*{10pt}
\lipsum[1]
\end{document}

然而,\nointerlineskip如果我们在第一页需要空间,则应该添加一个,因为 LaTeX 会在顶部插入一个内容。

相关内容