抑制连字的标准技术(例如插入一个空组或将通常单独形成连字的字符放在组中)似乎不适用于由于终端而形成的连字。
例如:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[longs]{pacaslon}
\begin{document}
foss. fosse.
\end{document}
这里,“foss”中的双 ess 变成了长 ess 短 ess 连字(该字符与 eszet 基本相同,并在 Adobe 字体中使用该代码点),而“fosse”中的双 ess 变成了双长 ess 连字。有一条规则是,当双 ess 出现在缩写词末尾的句号之前时,它不应保持为双长 ess 连字,而不应保持为长 ess 短 ess。
所以我的问题是,我怎样才能抑制该连字符?请注意,双 ess 在单词末尾会变成长 ess-短 ess,因此仅仅写例如“{foss}。”不会改变结果。此外,写“fo{ſ}{ſ}”(即分别分组两个长 ess)不起作用,因为我想要一个长 ess 连字符。而且它没有代码点,所以我不能轻易写出来,但如果我可以,它会立即发现自己在单词末尾,然后变回长 ess-短 ess。
目前,我能找到的唯一解决方案是从 TFM 文件中删除句号前的将 double-long-ess 变成 long-ess-short-ess 的连字符,但随后我必须在几乎每个句号(即,除了表示缩写的句号之外的每个句号)前手动添加一个空组 {},这很容易出错并且很繁琐。
由于我无法再在网上找到 acaslon 包,因此我已将副本放在以下位置: http://rrt.adsensus.net/acaslon.zip
答案1
TeX 有一个原语,专门用于这种情况。如果一个字符后面(或前面)有\noboundary
,则不会使用该字符的边界连字符。所以
foss\noboundary.
应该是解决方案。句号会触发边界连线,但\noboundary
项目会中和它。