在https://repo.or.cz/wortliste.git/blob/HEAD:/wortliste(在我看来,这是 [PDF|Xe|Lua]LaTeX 当前使用的德语连字模式的来源\babelprovide[hyphenrules=ngerman-x-latest]{ngerman}
)我们发现,对于许多单词,断点的优先级是指定的。例如,对于转向灯断点选择指定为Fuß=gän-ger==am-pel
。如果我没记错的话,这意味着
转向灯是一个复合词,由富斯甘格和安佩尔,并可拆分为两部分;
富斯甘格本身就是一个复合词,由菲斯和领班,并可拆分为两部分;
领班可以在音节边界处拆分为领班,并且断点位于词素内,同样地,
安佩尔可以在音节边界处拆分为安佩尔,并且断点位于词素内。
此外,Fuß=gän-ger==am-pel
告诉我们拆分单词的主要方式是尾灯,不是吗?
有什么方法可以告诉 [Xe|Lua|PDF]LaTeX 使用这些信息?从今天(2022-08-23)开始,TeX Live 提供
\documentclass{article}
\usepackage[ngerman]{babel}
\babelprovide[hyphenrules=ngerman-x-latest]{ngerman}% provides me with patterns from 2022-03-16 as of now
% \hyphenpenalty=49%% one less than the default value 50.
% \exceptionpenalty=50%% ad-hoc value greater than \hyphenpenalty.
% \exhyphenpenalty=48%% ad-hoc value less than \hyphenpenalty (though usually they coincide).
% \babelhyphenation[ngerman]{Fuß{-}{}{}[1]gän{-}{}{}[2]ger-am{-}{}{}[2]pel}%% of course, we could have an exception list.
\showoutput
\begin{document}
Fußgängerampel
\end{document}
产量lualatex
....\TU/lmr/m/n/10 F
....\kern-0.83 (font)
....\TU/lmr/m/n/10 u
....\TU/lmr/m/n/10 ß
....\discretionary (penalty 50)
.....< \TU/lmr/m/n/10 -
....\TU/lmr/m/n/10 g
....\TU/lmr/m/n/10 ä
....\TU/lmr/m/n/10 n
....\discretionary (penalty 50)
.....< \TU/lmr/m/n/10 -
....\TU/lmr/m/n/10 g
....\TU/lmr/m/n/10 e
....\TU/lmr/m/n/10 r
....\discretionary (penalty 50)
.....< \TU/lmr/m/n/10 -
....\TU/lmr/m/n/10 a
....\TU/lmr/m/n/10 m
....\discretionary (penalty 50)
.....< \TU/lmr/m/n/10 -
....\TU/lmr/m/n/10 p
....\kern0.28 (font)
....\TU/lmr/m/n/10 e
....\TU/lmr/m/n/10 l
在标准输出上。不幸的是,这意味着 LuaLaTeX 不会优先选择这四个断点中的任何一个,不是吗?
答案1
看看 Keno Wehr 的复写LuaLaTeX 包,为德语提供加权连字,以及自动防止复合词边界上的错误连字(例如,“Auf-lage”)以及自动将圆字母 s 替换为长 s(ſ),以便使用 Fraktur 字体排版。
目前使用此包的最大缺点是处理文档变得很多慢点。