由于我的编辑的一些限制,我不得不从我的scrbook
(via\clubpenalty10000
和\widowpenalty10000
) 中删除所有孤行和寡行。最重要的是,他们不想看到段落之间或图标题和文本之间的“太大”的空白。
一个解决方案是使用\raggedbottom
d 文档。但是这样一来,几乎每一页的结束高度都不一样,这在twoside
d 文档上看起来很糟糕。
有折衷方案吗?比如:“这是允许的最大间隙,只有间隙较大时才将空白放在页面底部”。或者:“... 在标准“间隙位置”和底部之间共享空白?”
编辑:或者有什么类似的东西\raggedbottom
,但是可以对齐相邻的边?——这应该是一个相当好的妥协
答案1
使用\clubpenalty10000
和\widowpenalty10000
通常不是避免寡妇线和俱乐部线的最佳方法,尤其是使用,\flushbottom
因为它们几乎总是使得页面构成的限制无法实现。
一个典型的例子是,一个段落的最后一行有几个单词超出了页面,通过将惩罚设置为 10000,可以强制 TeX 发送二行移到下一页,从而使当前页面变短。根据页面上是否有弹性胶,这会使页面不饱满,或至少不必要地松散。
大多数超过几行的段落都可以拆分成不同的行数,因此一个更好的(虽然是手动的)解决方案是\looseness=-1
在段落前添加,这样 TeX 就可以将段落压缩成少一行,使其全部适合页面,或者将其设置为 1,这样段落就会多出一行,并将两行发送到下一页。(请注意,您可以使用任何(如果找不到合适的换行符,则不必将其作为页面上的最后一个段落)。
或者,您可以使用\enlargethispage{\baselineskip}
(通常用于跨页的两页)在页面上挤压额外的一行。
这些是手动更正,因此不适合某些数据库目录的自动打印,其中惩罚设置可能是合适的,但对于手写的书,进行最后的分页调整所花费的时间应该与实际编写文本所花费的时间相比很小。
传统的 TeX 没有从分页到换行的反馈,因此最容易通过手动更正来完成,尽管在 luatex 中可以考虑使用换行和分页回调来自动化此操作。