LaTeX 调查整个文档并为您选择分页符,但有时您想介入:“在此处分页”、“不要将此标题从文本中撕下来”、“段落的第一行被困在底部”。这些工具分为三个系列:建议或强制中断的命令、防止中断的设备以及阻止寡妇和孤儿的惩罚。本页将详细介绍何时到达每个位置。
建议与强制中断
首先,“更改”页面的工具。这里的关键区别在于 \pagebreak 和 \newpage 之间。两者都在此时结束页面,但它们以相反的方式处理剩余空间。 \pagebreak 拉伸垂直空间,使文本到达页面底部(正常的下边距),将内容展开。相比之下,\newpage 不会*拉伸:它将页面的其余部分留空并继续前进。
使用哪个取决于意图。要在中断之前将文本自然地压缩到底部,请使用 \pagebreak;要在一个干净的新页面上重新开始(例如,一章的结尾),请使用\newpage。但请注意,\pagebreak 可能会破坏中间段落作为副作用。官方参考文献还指出,由于 \pagebreak 会尽可能拉伸页面的垂直空间,因此在使用 \flushbottom 时,它可能会触发 未满框警告 或看起来很奇怪。
\pagebreak 采用可选强度参数\pagebreak[n](n 从 0 到 4)。四是直接要求,也是省略参数时的默认值;较低的数字是较温和的“如果可能”请求,\pagebreak[0] 相当于仅允许破坏此处。它遵循与 \linebreak[n] 行相同的约定 - 将其视为页级对应项。
用clearpage冲洗浮动
\newpage 的更强亲戚是 \clearpage。除了结束页面并继续前进之外,它还首先输出所有待处理的浮点数(数字和表格),然后中断。因为 LaTeX 会将 figure 和 table 浮动到它认为最好的位置,所以它们可能会落在比您编写它们的位置更晚的页面上。当一个部分必须位于其数字之后时,将 \clearpage 放在边界处会在新页面开始之前刷新累积的浮点数。
对于双面打印,\cleardoublepage 有帮助。与 \clearpage 一样,它会清除浮动,并且在 twoside 选项下,它使下一个正文内容从右侧奇数页开始,如有必要,插入空白反面(偶数)页。对于在右侧页面打开每一章的书籍来说,这是常见的行为(book 类中的默认设置)。另请注意,在两列模式下 \newpage 仅 结束当前列 — 要结束整个页面,您需要 \clearpage 或 \cleardoublepage。
防止分页
现在是相反的工具 - “不要破坏这里。”基本的一个是 \nopagebreak[n],它阻止此时分页; n 设置其持续程度(0 到 4,默认 4)。 \nopagebreak[0] 是建议尽可能避免中断,而 \nopagebreak[4] 是严格禁止的。将其放在您不想撕裂的接缝处 - 在标题和紧随其后的文本之间,或者在图形和其解释之间。
为了在一页上保持更大的范围,需要声明 \samepage 和同名的 samepage 环境。它的工作原理是为封闭区域内的每个可能的断点分配无限惩罚,这样它就不会在内部断点。但正如TeX常见问题解答所警告的那样,它并不是万能药:要继续一起运行文本,您必须在环境中结束该段落,并且如果所包含的材料发出自己的中断提示,\samepage对其无权控制。
更可靠的是 needspace 包。在 \usepackage{needspace} 之后,写 \needspace{3\baselineskip} 意味着“如果这里和页面底部之间没有 3 行的空间,则开始一个新页面”——换句话说,如果三行适合则继续,否则移至新页面。 这是将标题及其前几行保持在一起的首选。将长度表示为\baselineskip(行距)的倍数是直观的选择,尽管pt 或cm 也可以。还有\Needspace{...},它更精确地保留空间,以及\Needspace*{...},它使\flushbottom下的短页平底(后两者用于段落之间)。
寡妇和孤儿
孤行是位于页面最底部的段落的单独第一行; 寡行是一个段落中单独的最后一行,位于下一页的顶部。两者读起来都很糟糕,而且是排版试图避免的那种糟糕的中断。 (术语因来源而异,但 TeX FAQ 将孤行定义为“页面末尾段落的第一行”,将寡行定义为“页面开头段落的最后一行”。)
两个整数惩罚阻止了他们。 \clubpenalty 控制孤行(在段落的第一行*之后*断开),而 \widowpenalty 控制寡行(在*最后一行*之前*断开)。值越大,LaTeX 越会判断那里的中断“不值得”并避免它。标准级默认值是150(轻度劝阻)。根据TeX常见问题解答,实际上只有两个有意义的设置:有限(150或500 - 这几乎不重要)允许寡妇和孤儿,以及无限(10000或更多)禁止它们。
要禁止它们,请在前导码中将两者设置为最大值。通常的咒语是:
\clubpenalty=10000
\widowpenalty=10000但全面禁令是有代价的。为了避免严重中断,LaTeX 从页面中删除一行,因此 页面的底部不再对齐 - 它们变得破烂不堪。 这正是默认停止在“轻度沮丧”的原因。实际上,不是将所有内容都固定为 10000,而是通过 在最终校对期间仅手动修复有问题的点来获得更高质量的结果。 经典的目标修复是 \enlargethispage{\baselineskip},其中 暂时放大当前页面的 \textheight,仅 以允许多一行;将底部段落加长一行会将溢出的最后一行拉回到页面上并清除窗口。当您需要压缩一行(即使以缩小间距为代价)时,请使用带星号的\enlargethispage*{\baselineskip}。
命令快速参考
以下是主要分页命令和参数一览。 needspace 命令需要加载该包;其余的是标准LaTeX。
| 命令 | 它的作用 | |
|---|---|---|
\pagebreak[n] | 建议/强制中断(n=0–4,默认 4);将垂直空间拉伸到底部 | 可以在段落中间中断 |
\newpage | 现在结束页面;不拉伸,其余留空 | 在两列中,仅结束该列 |
\clearpage | 结束页面并首先刷新所有挂起的浮动,然后中断 | 用于在数字后面保留一个部分 |
\cleardoublepage | 与clearpage类似,但在右侧(奇数)页的两侧开始,如果需要插入空白 | 对于右侧开头章节的书籍 |
\nopagebreak[n] | 不鼓励在此时中断(n=0–4,默认 4) | 保留标题及其文本 |
\samepage | 对区域内的中断进行无限惩罚以将其保留在一页上(环境也是如此) | 并非万无一失;结束里面的段落 |
\needspace{N\baselineskip} | 除非剩余 N 行的空间,否则中断(需要空间包) | 用第一行保留标题 |
\clubpenalty | 整数阻止孤儿(搁浅的第一行);默认150,10000禁止 | 越高意味着越能避免 |
\widowpenalty | 整数令人沮丧的寡妇(搁浅的最后一行);默认150,10000禁止 | 越高意味着越能避免 |
\enlargethispage{\baselineskip} | 仅放大当前页面的文字高度,再容纳一行 | 加星号的表格挤成一行 |
在实践中使用这些
基本规则是最后调整分页符。 添加或删除即使是一个字符也会在每个后续分页符处发生变化,因此在中途撒上手动\newpage 命令会在您以后每次编辑文本时留下尴尬的间隙。先完成内容,最后再检查分页。对于寡妇和孤儿来说,也不要完全依靠序言中的全面禁止,而是单独修复显眼的地方(使用 \enlargethispage 等)是获得底部整齐排列的页面的更可靠途径。
分页是独立于换行(\linebreak 或\\)的单独层,它与figure 和table 的放置密切相关。对于行调整,请参阅“调整换行符”,对于段落本身,请参阅“换行符和段落符”,对于定位浮动,请参阅“浮动放置”。
分页证明工作流程
分页证明仅在正文、浮动和参考书目就位后开始。首先用\clearpage检查float是否备份;接下来用 needspace 保护单独位于页面底部的标题;最后用\enlargethispage等工具修复明显的寡妇和孤儿。仅在章节结构真正需要的地方保留分散的 \newpage 命令。
- 章节和附录边界: 使用
\clearpage或\cleardoublepage这样浮点数就不会漂移到下一部分。 - 标题之后: 保留几行,例如
\needspace{3\baselineskip}以避免标题滞留在页面底部。 - 单行寡行或孤行: 在本地应用
\enlargethispage之前检查空白和底部对齐。 - 为每个手动修复留下评论,以便您稍后可以告诉是否应该在文本编辑后将其删除。