为什么带有连字符的单词不能用连字符连接?

为什么带有连字符的单词不能用连字符连接?

假设我有一个像 Baden-Württemberg 这样的单词。TeX 无法将这两个单词的任何部分连字符连接起来。为什么?

复合词中没有连字符

为什么不像这样:

在此处输入图片描述

小勾号表示可能的连字符点。欢迎提供技术 (TeXnical) 解释。

顺便说一句:我不是问如何解决这个问题("=例如使用 babel 速记)。

答案1

TeXbook,第 454 页,倒数第二个双重危险弯道段落

如果一个试验词1  … n已被此过程发现,则连字仍将被放弃,除非n≥ λ + ρ,其中 λ = max(1,| \lefthyphenmin|) 和 ρ = max(1,| \righthyphenmin|)。(纯 TeX 取 λ = 2 和 ρ = 3。)此外,紧跟在试验词后面的项目必须由零个或多个字符、连字和隐式字距组成,后面紧跟着粘连符、显式字距、惩罚项、什么内容或来自 、 或 的垂直模式材料。\mark因此,紧跟在试验词后面的框、规则、数学公式或自由裁量项将抑制连字。(由于 TeX 在显式连字符后插入空的自由裁量项,这些规则意味着已经连字的复合词将不会被算法进一步连字。)\insert\vadjust

显式连字符是字符代码与字体的\hyphenchar值匹配的字符或以这样的字符结尾的连字符(这就是为什么也-----抑制连字符的原因)。

事实上,如果你尝试下面的例子,你会看到 TeX 对复合词进行了连字符连接:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\begin{document}
\hyphenchar\font=\string"7F

\parbox{1pt}{In Baden-W\"urttemberg}

\end{document}

结果是


巴登
-符腾

T1 编码字体在位置上有0x7F一个与正常连字符相同的字符。将 改为\hyphenchar表示此位置,正常连字符不再抑制连字符。

答案2

\hyphenchar\font=\string"7F似乎不是解决这个问题的正确方法,因为它与字体无关。

更好的方法是设置\defaulthyphenchar=127看起来与字体无关的。此外,缩写中定义的连字符也将是正确的。但是,文本中有连字符时仍存在问题,例如:

Baden-W\"urttemberg
\gls{BP}-Test

在此处输入图片描述

如果您查看“den-Würt-”,它仍然没有正确拆分成两行。最后一个例子“BP-Test”也没有拆分。我发现的唯一解决方法是在文本中使用“=”而不是“-”,目前这种方法有效。但我希望有更好的解决方案...

以下是 MWE:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

%\usepackage{lmodern}
\usepackage{mathptmx}

\usepackage[
nonumberlist,
acronym,
nopostdot,
section]
{glossaries} 

\newacronym{BP}{BP}{Borderline-Pers\"onlichkeitsst\"orung}

\defaulthyphenchar=127

\begin{document}
\parbox{1pt}{In Baden"=W\"urttemberg}

\parbox{1pt}{In \gls{BP}}

\parbox{1pt}{\gls{BP}"=Test}

\end{document}

在此处输入图片描述

相关内容