我注意到,tolerance = 200
对于文章类中的单列布局, 是,但tolerance = 9999
对于双列布局, 是。但在 中ltxgrid.cls
,或tolerance
都保持在 200 。 \onecolumngrid
\twocolumngrid
双栏文章类中的较大公差解决了双栏模式较窄线条中的许多问题,但会留下非常宽的空间。
所以,我的问题是:为什么文章类中的双列值设置得如此之高,以及tolerance
在典型的双列模式中理想的值是多少?
答案1
article
做
\if@twocolumn
\twocolumn
\sloppy
\flushbottom
\else
\onecolumn
\fi
因此,您看到的容差是由于使用了\sloppy
,您可以在其他窄列上下文中使用相同的命令,或者如在多个地方讨论的那样,例如
\fussy、\sloppy、\emergencystretch、\tolerance、\hbadness 是什么意思?
您可能会考虑一个\sloppy
不会增加\tolerance
太多并且更多地依赖于的版本\emergencystretch
。
答案2
正如 David 所说,这里没有真正的最佳值。这完全取决于狭窄设置下的实际内容,以及您是否愿意通过重写文本、添加 TeX 未找到的连字符点等手动更正个别问题。
如果将容差设置得较高,那么 TeX 就会考虑更多可能的断点,并可能找到一个在有问题的情况下有效的断点。结果,您会得到一条或几条间隔相当糟糕的线条。如果将容差设置得较低,但使用较高的紧急拉伸,那么 Tex 最初只会找到“更好”的换行符,即间隔不那么大的线条,但如果这不能给出解决方案,那么您将得到更多(甚至所有)“间隔相当糟糕”的线条,而不是一条线条间隔严重,因为这种紧急拉伸随后被添加到所有线条中,使间隔松散的线条总体上看起来更好。哪种效果更好取决于个人喜好,但在我看来,这两种方法都不是很好。
我通常将容差设置为 2000-3000 左右,并为额外的 emergencystretch 设置一个较小的值,并准备手动修复任何剩余问题,但如果您需要全自动解决方案(或接近全自动解决方案),那么像 \sloppy 或非常高的 emergencystetch 值(或高容差 + 匹配的 emergencystretch 的适当组合,以便找到大致相同的断点集)是唯一的可能性。