在twoside
文档中,\flushbottom
在 KOMA 类中自动激活。只要文本从上到下填满所有页面,并且公式仅出现在页面中间,就像本 MWE 中一样,这就可以正常工作。
\documentclass[twoside]{scrartcl}
\usepackage{lipsum}
\begin{document}
\lipsum[1-7]
\par
\[\sum_{n=1}^\infty \frac{1}{n^2}\]
\end{document}
该文档编译时没有出现警告,结果看起来不错。但是,有时公式会出现在分页符附近,就像这个经过调整以显示效果的 MWE 中一样。
\documentclass[twoside]{scrartcl}
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\par
\lipsum[1][1]
\par
\[\sum_{n=1}^\infty \frac{1}{n^2}\]
\end{document}
LaTeX 抱怨它无法填满页面,导致页面未满vbox
。
Underfull \vbox (badness 10000) has occurred while \output is active
结果看起来不太美观,段落之间有很大间隙,这是由于公式被强行放到第二页造成的。当文档中包含浮动时也会发生类似情况,导致vbox
我的文档出现许多未满的情况。
从印刷的角度来看,是否有针对这种情况的首选解决方案?我能想到三种可能的方法:
接受现状并忽略不充分的
vbox
警告。关闭
\flushbottom
。我个人认为这不是双面文档的好解决方案。让 LaTeX 增加受影响页面上的线条分布,使效果分布得更均匀。我个人认为这是视觉上最令人满意的方法。为此我需要修改多长?我需要添加橡胶长度吗
\linespread
?
对于这种情况,是否存在公认的最佳印刷实践?
编辑:请注意,在这种情况下,可以通过更改换行符来解决问题,这会导致某些段落中的行数不同,正如 David 所指出的那样。然而,对于vbox
高度不是 的倍数的浮动(即图像)导致的未满情况,这种情况几乎从未发生过\baselineskip
。以下 MWE 说明了这种情况。
\documentclass[twoside,12pt]{scrartcl}
\usepackage{lipsum}
\begin{document}
\begin{figure}[t]
\centering
\fbox{\begin{minipage}[c][25.2\baselineskip][c]{0.9\textwidth}\centering xxx\end{minipage}}
\end{figure}
\lipsum[1-3]
\end{document}
在这里,LaTeX 也抱怨文本不够饱满vbox
,并且段落在输出中看起来被拉长了。
答案1
示例文档有误,因为在数学显示之前不应该有段落分隔符。
然而,同样的问题也出现在
\documentclass[twoside]{scrartcl}
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\par
\lipsum[1][1]
\par
zzz
\[\sum_{n=1}^\infty \frac{1}{n^2}\]
\end{document}
您可以看到原文第 2 页顶部的异常空间不是垂直空间,而实际上是段落的“白线”,因此不会在分页符处丢失,此处该行有可见的文本。
如果你能够进行手动控制,你可以做很多事情,例如
使用
\enlargethispage
+/- 调整页面高度\baselineskip
以获得更好的分隔效果,在这种情况下,最好在双页跨页的两页上都进行此操作重写文本以使其更加合适。
在较大的段落中使用
\looseness
,在换行决定上有灵活性,可以多占一行或少占一行,例如在这里\documentclass[twoside]{scrartcl} \usepackage{lipsum} \begin{document} \looseness=1 \lipsum[1] \looseness=1 \lipsum[2] \looseness=1 \lipsum[3] \looseness=1 \lipsum[4] \looseness=1 \lipsum[5] \looseness=1 \lipsum[1] zzz \[\sum_{n=1}^\infty \frac{1}{n^2}\] \end{document}
您提到的选项 3 是最不理想的(实际上不是一个选项),更改页面之间的行距会非常分散注意力。
答案2
这回答David 很好地解决了vbox
公式导致的未满的情况。对于浮点数的情况,有一种不同的方法。长度\textfloatsep
(以及其他)控制图形和文本的分离。默认情况下,此长度是灵活的,但对于问题中提出的情况来说,灵活性太小了。默认情况下,该值似乎是
20.0pt plus 2.0pt minus 4.0pt
为了避免段落之间拉伸,弹性值至少应为\baselineskip
。这可以通过类似下面的设置来实现。
\setlength{\textfloatsep}{1.25\baselineskip plus 0.4\baselineskip minus 0.6\baselineskip}