有时,假设我们的文档包含许多长单词,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 中很特殊,它表示“禁用此功能” - 有点“黑色或白色”。我期望介于0
和10000
(不包括)之间的任何值都会“减少”连字符的数量(即“灰色阴影”)。
根据我的笔记,我偶然发现了上述参数的细节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}
它还可能带来一些线满/线不足的问题。您可以查看其他答案以找到中间解决方案。