\flushbottom 与 \raggedbottom

\flushbottom 与 \raggedbottom

我用\documentclass{book}

  • 如果我使用\flushbottom,我会收到类似这样的消息Underfull \vbox (badness 10000) has occurred while \output is active []。请参阅问题
  • 当我使用时这些消息会消失\raggedbottom,但页面内容的高度当然会因页面而异。

因此,似乎没有最佳解决方案,只能在“邪恶”之间进行权衡……LaTeX 专业人士对此事的看法是什么?在这种情况下应该选择哪个选项?

答案1

没有一个普遍正确的答案。

\raggedbottom当然是一种更容易实现的格式,因为您失去了均衡页面内容的限制。

但是,如果您愿意,\flushbottom则必须确保页面内容适合指定的大小。例如,如果您的内容完全由 15 pt 基线上的文本行组成,行或段落之间没有可拉伸的空白,并且文本主体高度不是该值的倍数\baselineskip,那么每一个页面会不够满,因为 TeX 无法达到指定的大小,所以必须断行。解决方案是调整\baselineskip和/或以兼容,或者,如果在网格上排版不是绝对要求,则在行之间(通过提供组件)或段落之间(通过提供组件)\textheight添加一些垂直拉伸粘连。\baselinestretchplus\parskipplus

在最后的编辑阶段,您可能希望使用 来逐页(或逐跨)调整页面大小\enlargethispage

也可以看看

我是否需要关心坏盒子?

答案2

使用这个技巧,你会得到一个,\textheight这样每页都包含整数行(等于不使用这个技巧时得到的行数)

\documentclass[12pt]{book} % or 10pt or 11 pt
\usepackage{setspace}
\setstretch{1.15}

\setlength{\dimen0}{\textheight}
\addtolength{\dimen0}{-\topskip}
\divide\dimen0\baselineskip
\setlength{\textheight}{\number\dimen0 \baselineskip}
\addtolength{\textheight}{\topskip}

\usepackage{lipsum}

\begin{document}
\lipsum
\end{document}

或者,您可以加载geometry包并使用其选项heightrounded(但这也会改变其他页面参数)。

相关内容