为什么我已经为一个很长的单词指定了一些允许的连字符点,而 TeX 却不能对这个单词进行连字符连接?

为什么我已经为一个很长的单词指定了一些允许的连字符点,而 TeX 却不能对这个单词进行连字符连接?

基于整个文档的自动长单词断词我构造了一个长单词连字符的示例:

\documentclass{report}
\usepackage[english]{babel}
\begin{document}
\selectlanguage{english}
\hyphenation{temporincididuntutlaboreetdolo-remagna-aliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut}

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporincididuntutlaboreetdoloremagnaaliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut aliquip ex ea commodo consequat. 
\end{document}

但是,它不起作用。你能帮忙吗?

答案1

\hyphenation指令不仅允许您在指令的参数中为给定的“单词”指示一些可能的连字符点。相反,您指示的连字符点是唯一可能的连字点。

根据构造,您不允许 TeX 对这三个子字符串进行连字符连接

temporincididuntutlaboreetdolo
remagna
aliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut

如果它们出现在 105 个字符的 [!!] 字符串内

temporincididuntutlaboreetdoloremagnaaliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut

因此,不要感到惊讶,TeX 不会在三个子字符串中的任何一个中插入连字符点。

如果启用了段落完全对齐功能(默认情况下启用),TeX 还必须遵守一些相当严格的规则,这些规则涉及 (a) 允许单词间空白拉伸多少以及 (b) 行数不足的容忍度。出于所有实际目的,只需知道过度拉伸的单词间空白会受到非常严重的惩罚,而行数不足也会受到惩罚。要了解空白需要拉伸到什么程度才能在两个允许的连字符点之一处断行超长的单词,请考虑下面的第一段。它是根据指令排版的\sloppy,该指令暂停了 TeX 与 (a) 单词间空白拉伸度和 (b) 行数不足相关的大部分惩罚。请观察前两行中巨大的单词间空白和严重不足的第三行。这不仅仅是“马虎”,而是对眼睛的直接攻击!!

要恢复体面的排版效果,必须发出指令\raggedright;参见第二段。请注意,段落前两行中大量的单词间空白消失了——但代价是增加了两行严重不足的行。请注意,如果\raggedright有效,105 个字符的单词确实会被连字符连接。这是因为\raggedright会对(严重)过满的行施加惩罚。默认情况下,该\raggedright设置会禁用大多数连字符操作,因为每个“连字符操作”都会带来相当大的 TeX 惩罚。但是,对于手头的段落,过满的行带来的惩罚比连字符操作更大。

顺便说一句,如果省略该\hyphenation指令,TeX 能够(至少对我来说,这有点令人惊讶)找到合理的“合适”连字点。

在此处输入图片描述

\documentclass{report}
\usepackage[english]{babel}
%%\selectlanguage{english} % not needed
\hyphenation{temporincididuntutlaboreetdolo-remagna-aliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut}

\usepackage{showframe} % to indicate edges of text block

\begin{document}
\sloppy
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporincididuntutlaboreetdoloremagnaaliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut aliquip ex ea commodo consequat. 

\medskip
\fussy % opposite of "\sloppy"
\raggedright % suspend full justification
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporincididuntutlaboreetdoloremagnaaliquaUtenimadminimveniamquisnostrudexercitationullamcolaborisnisiut aliquip ex ea commodo consequat. 

\end{document}

相关内容