如何校准回忆录的 \sloppybottom 和 \flushbottom 行为?

如何校准回忆录的 \sloppybottom 和 \flushbottom 行为?

Memoir 提供了命令\sloppybottom“让 TeX 在页面底部添加一行以避免下一页出现孤行。”[1] 但是它似乎还设置了\raggedbottom不是我想要的。如果我在命令\flushbottom后添加一个,我会得到一个有点奇怪的行为,TeX 会在页面顶部添加一个额外的行以避免出现孤行。有没有办法让 TeX 像使用时\sloppybottom一样填充页面,但仍然让所有页面的顶部对齐?\flushbottom\sloppybottom

(也就是说,底部会对齐,除非需要多加一行以避免出现孤行)

答案1

\sloppybottom\topskip通过设置非标准值来完成其工作:

\topskip=1\topskip plus 0.625\topskip minus .95\topskip

此粘连插入到页面上的第一个框之前,但自然长度会缩短第一个框的高度(如果该值为负数,则设置为零)。

让我们举个例子。假设\topskip=10pt(10 点文档大小的通常值);如果页面的第一行包含最高字符“A”,其高度为 6.83331pt,则插入的粘连为 3.16669pt。

\sloppybottom生效时,插入的胶水将是

3.16669pt plus 6.25pt minus 9.5pt

这样页面的可拉伸性为 6.25pt,可收缩性为 9.5pt,这样就可以挤进一行了。

然而,当页面被发送出去时,回忆录将其他胶水放在页面的顶部和底部:

\vskip 0pt plus -0.625\topskip minus -0.95\topskip

放在顶部,

\vskip 0pt plus.0001fil minus .95\topskip

放在底部。页面前面的粘连的作用是抵消 的拉伸和收缩分量\topskip,这样第一行就会进入其正常位置。底部的粘连是必要的,以补偿可能添加的行,因为输出例程总是想说类似于

\vbox to \vsize{<what's to be output}

以便将页脚放在所有页面的相同位置。如果您说\flushbottom让 TeX 不在顶部和底部插入两个粘连,但非标准\toskip粘连已经存在,因此无法对其进行补偿:结果是第一行会从其正常位置移开。

\enlargethispage它的工作方式非常不同,但需要在我们希望放大的页面上明确指定。

相关内容