暂时增加空间大小的限制?

暂时增加空间大小的限制?

我在准备文档时经常会看到关于“\hbox 过满”的警告。由于文档仍处于早期阶段,我认为没有必要当场更正它们 - 因为文档无论如何都会发生变化。

但我也想摆脱那个难看的溢出(通过增加单词之间可能的间距宽度),这样我就可以将草稿展示给某人。

有办法吗?

答案1

TeX 有一个原始参数来处理这种情况:\emergencystretch,Knuth 在 TeXbook 第 14 章中写道

如果您想不惜一切代价避免框线过满,而又不试图手动修复它们,您可能想设置\tolerance=10000;这允许在棘手的情况下接受任意糟糕的行。但无限的容忍度不是一个好主意,因为 TEX 不会区分非常​​糟糕和极其糟糕的行。实际上,10000 的容忍度鼓励 TEX 将所有糟糕之处集中在一处,形成一条真正难看的行,而不是两条中等糟糕的行,因为根据规则,一次“注销”产生的总缺点最少。有一种更好的方法可以获得所需效果:TEX 有一个名为 的参数,\emergencystretch在计算糟糕程度和缺点时,会将该参数添加到每行的假定可伸缩性中,以防框线过满无法避免。如果 为正数,当前几次遍历无法满足和\emergencystretch时,TEX 会在选择换行符之前对段落进行第三次遍历。的效果 是缩小不良程度,以便区分大无穷和小无穷。通过设置足够高(基于 ),您可以确保永远不会超过;因此永远不会出现过满框,除非断行任务确实不可能完成。\pretolerance\tolerance\emergencystretch\emergencystretch\hsize\tolerance

例如,你可以使用

\emergencystretch=.5em

答案2

\sloppyLaTeX对此用途有一个声明,它还设置了\emergencystretch一些其他相关参数,其定义为

\def\sloppy{%
  \tolerance=9999
  \emergencystretch=3em
  \hfuzz .5pt
  \vfuzz=\hfuzz}

因此,除了增加之外,\emergencystretch它还会增加(以允许导致更大“不良”的换行),并且\tolerance增加,因此 TeX 不会警告过满的框,除非它们超过半个点的过满。\hfuzz\vfuzz

相关内容