为什么带连字符的单词会导致边距违规(以及如何防止这种情况发生)?

为什么带连字符的单词会导致边距违规(以及如何防止这种情况发生)?

当句子中包含带连字符的单词时,我的文本有时会超出右边距。例如,在下图中,包含“inter-member”的行比文本其余部分的行更向右延伸。当带连字符的单词是行中的最后一个单词时,我最常看到这种情况。

在此处输入图片描述

为什么会发生这种情况?我该如何预防?

答案1

为了完整起见,摘自 TeX Book:

粗略地说,TeX 按照以下方式将段落分成行:断点插入单词之间或连字符后,以便生成其不良程度不超过当前 的行\tolerance。如果无法插入此类断点,则设置一个溢出框。否则,选择断点以使段落在数学上是最优的,即尽可能最佳,即它没有任何其他断点序列可能获得的“缺点”。缺点基于各个行的不良程度以及诸如带有连字符的连续行或紧挨着松散行之类的情况的存在。

TeX 根据段落的次数(是的,整个段落*;而不仅仅是逐行或逐句)通过连字符发出断点。

因此,为了避免糟糕的换行,你可以

  • 重新措辞你的部分内容段落这可以实现更好的连字;

  • 使用自由连字符:meth\-od在文本中、\hyphenation{meth-od}其他地方或\discretionary{meth-}{od}{method};或

  • 使用babel用于特定语言的改进连字功能。

*(La)TeX 内存使用的组成部分对于一些讨论,涉及段落构建和换行时的内存使用情况的示例。

答案2

这实际上是一个常见问题解答,(La)TeX 使行溢出。正如@Canagreek 提到的,最简单和最好的解决方案是加载microtype包。这将大大减少过满的行数,并且通常使段落看起来更好(均匀的灰度和更少的连字符)。

如果你仍然获得过满的行,并且愿意接受相当丑陋的段落,您可以添加命令命令\sloppy。这会将\tolerance@Marco 的答案中提到的设置为 9999(最大可能的有限值),但也会更改其他一些参数。相反的\sloppy\fussy(和是默认值)。

另外,请确保为文本加载了正确的连字词典,例如\usepackage[UKenglish]{babel}。否则,TeX 可能无法找到单词的连字点,或者使用错误的连字点。

答案3

如果您使用的是 PDFTeX(我听到评论说可以让它与 LuaTeX 配合使用),使用 microtype 包将有助于减少所需的连字符数量。我不认为它会解决不规则间距的问题,但它会减少这种情况的发生 --- 我现在正在处理一个 5 页的文档,它没有一个连字符实例。

答案4

方法没有连字符规则。写进你的序言中

\hyphenation{meth-od}

或者写成meth\-od。但我不太确定是否可以用这种方式连字符。

相关内容