我正在创建一种虚构语言的语法,并且已经为这种语言创建了一种自定义字体。该字体有一个系统,其中字符和连字符覆盖前一个字符,以创建具有较小字形集的更复杂的“字符”。如果 LaTeX 在应该覆盖前一个字符的字符之前对单词进行连字符处理,则看起来会很糟糕。我一直在“解决”这个问题,方法是手动将 \mbox 放在我注意到断掉的特定单词周围,但显然这不是永久的解决方案。我如何指定一组仅适用于使用此自定义字体编写的文本的自定义连字符规则?即使像“不要对任何单词进行连字符处理,只在空格处换行”这样简单的规则也可以,但是,我希望常规英语文本能够像往常一样进行连字符处理。如果这很重要,字体中也有很多连字符,但我还没有注意到 LaTeX 试图在需要形成连字符的两个字符之间对单词进行连字符处理。
答案1
切换字体时,还会切换到新语言,可以是现有的无连字符语言,也可以是您已定义自定义模式的语言。除非您使用 luatex,否则加载模式需要构建自定义格式,因为您无法将模式加载到正常的 tex 运行中。
最简单的方法可能是不使用任何模式,默认不使用连字符,然后将其用于\hyphenation
想要允许使用连字符的单词。
\documentclass{article}
\showhyphens{football}% hyphenates in english
\newlanguage\something
\language\something
\showhyphens{football}% but not here
\hyphenation{foo-tball}
\showhyphens{football}% but does now
\language0
\showhyphens{football}% back to english
\begin{document}
{\language\something\ttfamily % your font
stuff here
}
\end{document}
显示日志
Underfull \hbox (badness 10000) in paragraph at lines 3--3
[] \OT1/cmr/m/n/10 foot-ball
Underfull \hbox (badness 10000) in paragraph at lines 6--6
[] \OT1/cmr/m/n/10 football
Underfull \hbox (badness 10000) in paragraph at lines 8--8
[] \OT1/cmr/m/n/10 foo-tball
Underfull \hbox (badness 10000) in paragraph at lines 10--10
[] \OT1/cmr/m/n/10 foot-ball
显示在新语言中,除指定连字点的单词外,所有连字均被禁用