我尝试格式化一个双列文章文档,其中包含一些跨两列的图形、小表格等。我用它\raggedbottom
来避免文本中出现大量空白/粘连,但有时这样做会增加太多空间,导致两列的底线不对齐。现在我尝试调整段落长度和parskip
。
将 parskip 设置为\setlength{\parskip}{0pt plus 0.1in minus 0.01in}
似乎会产生良好的效果,但在某些地方段落之间的间距仍然比我想要的要大,而新的 parskip 长度应该允许(我使用字体大小 9,有时段落之间的间距是 0.5 英寸...)。
我将其改为\setlength{\parskip}{0pt plus 0.005in minus 0.01in}
,得到的长度与之前完全相同。此外,plus 0.1in
从代码中删除 会使文本的行为与我使用的 一样\raggedbottom
。
所以我的问题是,parskip 如何表现,以及我如何强制它使用我尝试实现的值?
答案1
考虑
\documentclass{article}
\addtolength\textheight{-20.7\baselineskip}
%\setlength\parskip{0pt plus 1pt}
\setlength\parskip{0pt}
\flushbottom
\begin{document}
aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa\\aaaa
bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb\\bbb
\pagebreak
ccc
\end{document}
在第一页上,第一段和第二段的行数总和不等于\textheight
,并且\flushbottom
意味着页面末尾没有拉伸,并且没有可拉伸性,\parskip
因此根本没有胶水拉伸,所以页面末尾很短(好像\raggedbottom
已经生效了)但这非常糟糕,tex 警告:
Underfull \vbox (badness 10000) has occurred while \output is active [1]
然而,如果你给它一点弹性\parskip
\setlength\parskip{0pt plus 1pt}
然后\parskip
拉伸以占据所有可用空间,这样\flushbottom
即使\parskip
过度拉伸也能实现。如下0pt plus 1pt
所示,您可以获得
Underfull \vbox (badness 4660) has occurred while \output is active [1]
如果可拉伸性较小,视觉输出虽然相同,但会非常糟糕0pt plus 1sp
。
Underfull \vbox (badness 10000) has occurred while \output is active [1]
相反,如果你指定 parskip 可以拉伸到足够的程度,那么它根本不会被认为是坏的。0pt plus 5pt
产生相同的视觉输出,但没有关于盒子未满的警告。