TeX 在决定如何将其切割成页之前,已经准备好了“galley”(未中断的段落和间距列)。它总是在测试 galley 中的所有内容是否加起来构成一页之前完成一个段落,虽然它试图合理猜测何时触发分页,但这些猜测并不完全准确:为了获得栏平衡、脚注、交叉引用、图片和侧边栏以及一致的页尾,我们通常必须尝试较短的 galley 切割长度。因此,当新页面开始时,它的 galley 中可能已经堆积了大量的文本、图片和脚注。
当段落开始时(你需要添加额外空间的地方),\pagegoal 和 \pagetotal 是已知的,但说实话,它们只是猜测,程序不知道例如页面上方可能会添加什么图片,或者是否会有任何拉伸弹性内容的调用。
是的,应该可以使其关闭部分页面,但可能无法手动完成。还有一些副作用可能会非常麻烦。
我突然想到另一个选项是使用可拉伸间距,有点像这样:
Stretch to page height{
{figures}
Stretch to 35 normal lines{
{Intro paragraph (13.4 normal lines)}
{stretchy bit}
{main text (21 lines)}
}
{stretchy bit}
{footnotes}
}
(新部分是中间部分的“Stretch to 35 lines”,当然,“35 lines”需要根据未拉伸的文本运行长度进行计算。)
@Martin_Hosken 可能想评论一下为什么这是一个愚蠢的想法。
TeX has the ‘galley’ (uninterrupted column of paragraphs and spacing) all prepared before it decides how it will chop it into pages. It always finishes a paragraph before it tests to see if everything in the galley adds up to make a page, and while it tries to make a reasonable guess about when to trigger the page-chopping, those guesses aren’t fully accurate: to get column balancing, footnotes, cross-references, figures and sidebars and consistent end-of pages, we often have to try shorter cut-lengths of galley. Thus a new page might have quite a pile of text, figures and footnotes waiting in it’s galley as it starts.
When a paragraph is started (the point in which you’d have to add extra space) the \pagegoal and \pagetotal are known, but really, they are only guesses, and the program doesn’t know e.g. what pictures might be added on top of the page, or if there will be any call to stretch anything that’s flexible.
Yes, it should be possible to make it close out the partial page, but probably not manually. There are also some side effects that might be a complete pain.
It has just occurred to me that one other option would be to use stretchable spacing, a bit like this:
Stretch to page height{
{figures}
Stretch to 35 normal lines{
{Intro paragraph (13.4 normal lines)}
{stretchy bit}
{main text (21 lines)}
}
{stretchy bit}
{footnotes}
}
(The new bit being the ‘Stretch to 35 lines’ for the middle section, and of course the ‘35 lines’ would need to be calculated based on what the un-stretched length of the text run is.)
@Martin_Hosken might want to comment about why this is a silly idea, though.
机器翻译自 English