有没有更系统的方法来修复连字符?

有没有更系统的方法来修复连字符?

我发现捷克语单词“množina”表示“集合”,TeX 将其连字符改为“množi-na”,而不是“mno-ži-na”。更糟糕的是,表示“子集”的单词“podmnožina”将其连字符改为“podm-noži-na”,而不是“pod-mno-ži-na”,这是不可接受的。

除了使用命令提供的例外列表之外,有没有更好、更系统的方法来修复此连字\hyphenation?我的意思是修复单词“množina”很容易,但捷克语中有很多形式:“množina”、“množiny”、“množině”、“množinu”、“množino”、“množinou”、“množin”、“množinám”、“množinách”、“množinami”,所有这些形式的目的都是允许连字“mno-ži”。对于所有这些形式,我应该添加相应的前缀形式“pod-mno-ži-…”,其中的规则只是在前缀和词根之间连字,或者在词根中连字,就好像是唯一的单词一样。我的观点是,当修复一个问题时,例外列表会成倍增加。

根据建议,我添加了一个 MWE:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[IL2]{fontenc}
\usepackage[czech]{babel}

\begin{document}
    \lefthyphenmin=0
    \righthyphenmin=0
    \begin{minipage}{0pt}
        first
        podmnožina
    \end{minipage}
\end{document}

我注意到,如果我将 IL2 字体编码更改为 T1,连字功能就会按预期工作。字体编码与连字有什么关系?

答案1

捷克语连字模式没有问题,但是您使用了错误的字体编码。

CSLaTeX 已经过时了,但我试着解释一下它的工作原理。它读取捷克语和斯洛伐克语连字模式两次:在 IL2 编码和 T1 编码中。当一个人写\usepackage[IL2]{fontenc}或时,会使用适当的连字模式\usepackage[T1]{fontenc}

当你不使用 CSLaTeX 时,你不能对捷克语和斯洛伐克语使用 IL2 编码字体,因为标准 LaTeX 每种语言仅支持一种连字模式,并且对捷克语和斯洛伐克语使用 T1 编码模式。(注意:csplain是另一种情况,它支持每种语言更多的连字模式,但这可能不是您感兴趣的主题)。

T1 编码字体度量中存在众所周知的错误,通常由fontenc该错误生成,导致字体在捷克语和斯洛伐克语中无法使用(例如ptmr8tTimes Roman 的度量)。错误出现在字母 ď 和 ť 中。但 20 多年来没有人报告过这个错误,因此它似乎实际上没有被使用。

另一方面,没有人有义务维护 CSlaTeX,它带来的问题多于好处。因此我将其标记为过时。捷克/斯洛伐克 TeX 列表中的人们接受了这一点。结果:LaTeX 捷克/斯洛伐克用户无法使用 IL2 编码字体,他们可以报告 T1 编码指标的错误。

相关内容