试图回答在书籍类中包含封面和标题页我发现\newpage
只有当有一些内容时才会创建一个新页面,即
\documentclass{article}
\begin{document}
\newpage
\end{document}
没有产生任何结果(没有 pdf 文件)
\documentclass{article}
\begin{document}
\null\newpage
\end{document}
可以 (空白页,页脚为 1)。\null
也\mbox{}
可以代替 。 你能解释一下原因吗?
我的理解是,空白页不是空白的,因为 LaTeX 会自动引入页眉和页脚。我曾经使用过\pagestyle{empty}
或者\thispagestyle{empty}
可以理解它,但第一个代码不适合这种情况。
答案1
添加页眉和页脚后TeX 已决定要进行分页,因此分页符是否为空完全无关紧要。
页面上必须包含一些不可丢弃的东西(一个盒子,一条规则,一个什么东西),因为可丢弃的东西(胶水,惩罚,字距)会在分页符处被丢弃。
这样做\newpage\newpage
不会产生空白页,因为在垂直模式下发布时,它本质上确实
\vfil
\penalty-10000
请注意,文档的开头被隐式地视为分页符,因此初始可丢弃项确实会被丢弃。这也是为什么在执行以下操作时没有垂直空间的原因
\begin{document}
\vspace{10cm}
Hello world
\end{document}
并且顶部会出现“Hello world”。
宏\null
确实如此\hbox{}
,因此它提供了一个框。添加不可见内容的更好方法是执行
\vspace*{0pt}
有一个非常这样做的理由是:在发出最终的\clearpage
(隐式调用)之后,TeX 仍在工作,并且已准备好创建新页面,因为可能仍存在待处理的浮动。如果将其行为更改为允许\newpage
\end{document}
\newpage
创建没有不可丢弃项目的页面,则总是最后得到一张空白页。
这是的完整定义\newpage
:
% latex.ltx, line 6503 (2015/10/01 patch level 2)
\def \newpage {%
\if@noskipsec
\ifx \@nodocument\relax
\leavevmode
\global \@noskipsecfalse
\fi
\fi
\if@inlabel
\leavevmode
\global \@inlabelfalse
\fi
\if@nobreak \@nobreakfalse \everypar{}\fi
\par
\vfil
\penalty -\@M}
这就引出了问题,即 在哪里\if@noskipsec
为真;好吧,它在启动时为真,但在 时设置为假,\begin{document}
在排版运行部分标题时又设置为真。如果某些文本在 之前排版,但后来设置为等同于,则该命令\@nodocument
负责发出错误消息。因此,第一个条件的目的是当发现类似的东西时将事情整理好。\begin{document}
\relax
\paragraph{Title}\newpage
\if@inlabel
当 LaTeX 处理 时,条件为真\item
,因此该部分用于从诸如 之类的输入中恢复\item\newpage
。最后,\if@nobreak
当 LaTeX 排版了“块”分段标题(\section
例如 )时,条件为真,同样,这用于从 之类的内容中恢复\section{Title}\newpage
。
因此,初始部分只是尝试避免在存在争议代码的情况下出现后续问题的代码。如果这些(希望)罕见情况均未发生,则只会\par\vfil\penalty-10000
发出。请注意,\par
通常隐含在中\vfil
,但万一用户重新定义了\vfil
,则仍会发出。
我不建议\leavevmode\newpage
这样做,但命令做开始一个段落,贡献\parskip
粘连和\baselineskip
胶水。相反,\null
或者\vspace*{0pt}
只贡献一个高度和深度为零的框/规则(后者也是 10000 惩罚和零胶水),没有\parskip
和\baselineskip
胶水。
其实没什么大不了的,因为我们正在分析制作一个明显空白的页面的问题:一个空白框、一条不可见的规则或一个空白段落不会造成太大的影响,但我们贡献的越少越好。开始一个段落也会释放 的内容\everypar
,在某些情况下这可能会产生一些副作用。