如何减少连字符的数量?

如何减少连字符的数量?

有时,假设我们的文档包含许多长单词,TeX 可能会在行末生成一些连字符。但这确实妨碍了我们的流畅阅读。虽然我知道我们可以在前言中添加连字符规则。它不能减少连字符数量,但会影响连字符的位置。据说该microtype包可以给我们更紧凑的输出。但它需要专家级别的参数调整。

答案1

前段时间,我想完全停用连字功能(而不是切换到\raggedright)。

我发现这个设置\pretolerance=10000会关闭完整的连字机制:它告诉 TeX 甚至不要寻找连字位置。

此外,还有参数\hyphenpenalty。例如,\hyphenpenalty=10000将(可能)抑制连字符。

当然,禁止连字符可能会导致行数不足/过满。这就是我添加的原因\tolerance=2000 \emergencystretch=10pt。该\tolerance参数控制 TeX 认为多少空白是“可接受的”;并且配置 TeX最多\emergencystretch使用10pt额外的白色空间每行以避免线路过满/不足。

我完全抑制连字符的解决方案是

\pretolerance=10000
\tolerance=2000 
\emergencystretch=10pt

现在,我知道您对“调整复杂参数”表示怀疑。但我鼓励您尝试和\pretolerance/或\hyphenpenalty结合我对\tolerance和的建议\emergencystretch

这个值10000在 TeX 中很特殊,它表示“禁用此功能” - 有点“黑色或白色”。我期望介于010000(不包括)之间的任何值都会“减少”连字符的数量(即“灰色阴影”)。

根据我的笔记,我偶然发现了上述参数的细节Knuth,D.:计算机与排版 - TEXbook。AddisonWesley,1986 年在第 96 页。

答案2

我认为,只有将两者结合起来才能取得好的结果已经给了答案。我正在使用以下内容:

\pretolerance=5000

我想要一些连字符,但是当它有意义时,我不会完全禁用它。

\tolerance=9000

我个人并不介意单词之间有一点空格,事实证明,如果容差太低,单词仍然可能会超出边界,因为低容差让 tex 别无选择,因为如果将单词移动到下一行时添加的空格将被声明为不可接受。

\emergencystretch=0pt

我永远都不想写超出边缘的内容,因此这里就不要拉伸。

\righthyphenmin=4
\lefthyphenmin=4

我喜欢在连字符之前阅读单词时进入单词流,这样我可能已经知道完整的单词是什么。如果连字符前至少有 4 个字符,这种情况更有可能发生。如果我不用看下一行就能弄清楚这个单词是什么,那么中断并不意味着阅读流被打断了。

答案3

完全禁用连字符通常会产生比它解决的问题更多的问题。您可能想改用\lefthyphenmin\righthyphenmin参数。它们在许多文档类中的默认值分别为 2 和 3;换句话说,左侧和右侧片段必须至少包含 2 个和 3 个字母。您可以重置它们,如下所示,

\lefthyphenmin4
\righthyphenmin4

并重新编译文档。只有包含至少现在将有 8 个字符使用连字符。这种方法的成功率(即连字符使用频率的减少)将主要取决于所使用的语言;如果其单词通常较短,则您可能会看到连字符使用频率大幅减少。

答案4

要完全停用连字符,您可以使用以下代码:

\usepackage[none]{hyphenat}

它还可能带来一些线满/线不足的问题。您可以查看其他答案以找到中间解决方案。

相关内容