抱歉,这个问题已经被问过很多次了,但是我无法轻易找到我的具体问题的答案。
我正在使用 XeLaTeX 和回忆录类来制作一个相当长的文档(100 页),其中包含许多部分,其中一些部分不到一页。我收到很多 underfull vbox 错误:
Underfull \vbox (badness 10000) has occurred while \output is active [1]
因为章节标题有时会落在页面边界上。这会迫使 XeLaTeX 在章节标题前插入难看的空格(参见下面的 MWE)。我看过很多关于如何手动解决这个问题,但由于文档的长度和经常变化的事实,这种方法效率不高。
我的问题是:有没有办法告诉 XeLaTeX 自动增加行距(或做其他技巧)以自动修复 vbox 不足的错误?
MWE 如下:
\documentclass[a4paper,12pt]{memoir}
\usepackage[hmargin={2.5cm, 2.5cm}, vmargin={3.5cm,3.5cm}, headheight=1.5em]{geometry}
\usepackage{lipsum}
\begin{document}
\chapter{Hello}
\section{Hello1}
\lipsum[2]
\section{Hello2}
\lipsum[3-4]
\section{Hello3}
\lipsum[3]
\end{document}
答案1
这是因为memoir
在下运行\flushbottom
,并且由于Hello3
标题移动到下一页,所以memoir
找到它理想的xelatex
做大幅度伸展。这与在 下做同样的事情无关pdflatex
。
尝试添加
\raggedbottomsection
你的序言,这有助于
顺便说一句:memoir
有自己内置的保证金界面
答案2
这实际上取决于你想在哪些方面保持灵活性。我绝不会通过增加行距来填满一页。最好是让页面变短并在末尾留出空白,而不是这样做,让文本难以阅读。
如果你想让节头前的空间任意增加,你可以这样做
\advance\beforesecskip 0pt plus -1fill
这会使警告消失(并且示例中的第二部分会向下移动页面)