避免过度拉伸

避免过度拉伸

我想要存档的内容:

布局中 \raggedbottom 生效,parskip 按照配置拉伸段落。如下所示:

\raggedbottom
\setlength{\parskip}{11pt plus 5pt minus 5pt}

我期望 parskip 能将段落拉长至 5pt(或将主题缩小 5pt),但发生的情况是:什么也没有。

如果我使用 \flushbottom,无论我使用什么,段落都会被拉伸以适合页面。唯一的区别是,不良报告取决于 parskip 是否过度拉伸。

所以我的问题是:有没有办法实现 parskip 拉伸到给定值的期望结果,但不管 \flushbottom 是否实现,都不会更多?

根据要求编辑:

完全不拉伸:

\documentclass{article}
\addtolength\textheight{-10.7\baselineskip}
\setlength{\parskip}{0pt plus 11pt}
%\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}

拉伸到最大限度(远远超过 parskip 所“允许”的程度):

\documentclass{article}
\addtolength\textheight{-10.7\baselineskip}
\setlength{\parskip}{0pt plus 11pt}
\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}

我希望它处于中间位置:延伸到 parskip 允许的范围内,但不要延伸太远。

(例子毫无羞耻地借用自parskip 和类似参数如何表现

答案1

默认\raggedbottom添加

plus.0001fil

粘贴到页面底部,这是无限顺序,因此没有有限顺序粘贴会拉伸,所以您的\parskip实际上是 0pt。

因此,您可以重新定义\@textbottom为使用有限胶水(例如0pt plus \textheight)或定义\parskip为具有fil胶水(这将允许它无限制地增长而不会积累坏处)

所以你可能想要

\def\@textbottom{\vskip \z@ \@plus \textheight}

因此拉伸分布在页面底部和段落之间。

但请注意,如果胶水伸展,您不能给它一个上限

\setlength{\parskip}{0pt plus 11pt}

这并不意味着粘合最多可以延伸到 11pt,在不良度计算中使用了正值,因此当粘合超出该范围时,页面的不良度会迅速增加,但如果需要,它仍然会超出该范围。

所有有限粘连都会按相同的因子拉伸,因此页面空间的末尾将比段落间空间拉伸更多,拉伸比例与\textwidth11pt 相同。


如果只有一个段落分隔符,并且 textbottom 具有完整的 textheight 拉伸,则 parskip 会拉伸一点,但只是引人注目

在此处输入图片描述

如果你只在底部给出 .4\textheight,那么 parskip 会得到更多的拉伸

在此处输入图片描述

如果你只允许 .1 文本高度,那么 parskip 会拉伸更多,但现在拉伸不够,无法填满页面,并且不会出现框未满警告

Underfull \vbox (badness 1253) has occurred while \output is active

在此处输入图片描述

\documentclass{article}
\addtolength\textheight{-10.7\baselineskip}
\setlength{\parskip}{0pt plus 11pt}
%\flushbottom
\makeatletter
\def\@textbottom{\vskip \z@ \@plus .1\textheight}
\makeatother
\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}

相关内容