对于以下示例,
\hsize =2in
shelf{}ful shelf{}ful shelf{}ful
rot{}ten rot{}ten
shelf{}ful shelf{}ful shelf{}ful
shelf{}ful shelf{}ful
rot{}ten rot{}ten
shelf{}ful shelf{}ful
\bye
执行结果如下:
我的问题是:在第一段中,为什么第一个shelfful
没有连字符,而其他的shelfful
都有连字符?
答案1
TeXBook 有这个练习:
锻炼有时你会遇到像 'shelfful' 这样的罕见单词,
shelf{}ful
没有ff
连字符看起来会更好。你如何才能欺骗 TeX 认为这样的单词中没有两个连续的 f?回答
{shelf}ful
或shelf{}ful
等;甚至shelf\/ful
,这会产生 shelf/ful 而不是 shelf{\kern0pt}ful。事实上,后一种想法(插入斜体校正)更可取,因为 TeX 会在连字 后自行重新插入 ff 连字shelf{}ful
。附录 H 指出,连字会放入不包含明确字距的带连字的单词中,而斜体校正是明确的字距。)但斜体校正可能太多(尤其是在斜体字体中);shelf{\kern0pt}ful
通常是最好的。
注意,“连字符之后”应读作“之后试连字” 如果 TeX 尝试对单词进行连字,它实际上会在可能的断点处将其拆分,以添加自由连字符。如果此时未使用连字,则单词将在没有这些连字点的情况下重新组合,但原始{}
信息会丢失,并且将在重新组合的单词中形成连字。
TeX(不是 luatex)从不尝试对段落的第一个单词进行连字符处理(本质上是一个错误,被归类为保持 TeX 稳定性的功能),并且如果它可以将段落分成几行并且保持在\pretolerance
错误范围内,它也不会尝试对段落中的任何单词进行连字符处理。因此,是否真正打破 ff 连字符取决于整个段落,而不仅仅是使用f{}f
单词的位置。{}