我怎样才能完全抑制连字?

我怎样才能完全抑制连字?

microtype软件包允许完全抑制连字。但是,此功能需要 pdfTeX 1.30 或更新版本。如果我使用 LaTeX 或 XeLaTeX 而又不得不避免连字,那就太不幸了。

还有其他方法可以针对整个文档或仅某个环境禁用连字吗?

答案1

liga在 XeLaTeX(或 LuaLaTeX)中,如果您使用的是 opentype/truetype 字体,则只需关闭默认连字功能(通常只是)即可加载它。

在标准 LaTeX 中,我知道的唯一安全解决方案是创建不包含连字的特殊 tfm 文件。pdftex \noligs1.30 中的新原语“ ”是专门创建的,这样您就不必处理这些 tfm 文件。修改 tfm 文件并不难,但我不知道如何让 latex 利用结果。

要修补 tfm 文件(例如“cmr10.tfm”),首先找到该文件并转到其位置,然后执行以下操作:

$ tftopl cmr10.tfm > cmr10-noligs.pl

输出文件cmr10-noligs.pl是 tfm 内容的“人类可读”表示。您可以在任何文本编辑器中打开它。靠近顶部,有一个表格,开头如下:

(LIGTABLE
    (LABEL O 40)
    (KRN C l R -0.277779)
    (KRN C L R -0.319446)
    (STOP)
    (LABEL C f)
    (LIG C i O 14)
    (LIG C f O 13)
    (LIG C l O 15)

在 中LIGTABLE,删除其中的所有带有 的行LIG(大多数字体只有LIG,但也有一些可能的变体,如/LIGLIG/>)。完成此操作后,您可能会在连续的行上看到LABEL和的组合STOP。每当出现这种情况时,也删除这两行。

然后保存文件,并运行shell命令

$ pltotf cmr10-noligs.pl

这将创建新的度量文件,cmr10-noligs.tfm然后可以使用该文件进行排版而无需任何自动连字。

在实际使用此字体之前,您(通常)还必须为其添加 dvips/pdftex 映射文件条目,否则这些程序会认为您已经创建了一个全新的 metafont 字体。在本例中,mypdftex.map包含以下行cmr10

 cmr10 CMR10 <cmr10.pfb

所需的只是该行的副本,其中包含新的 tfm 名称

 cmr10-noligs CMR10 <cmr10.pfb

注意:实际上可能没有与原始字体匹配的映射线,因为它本身就是虚拟字体。在这种情况下,您根本不需要额外的映射线,但您需要将<fontname>.vf文件(用来kpsewhich找到它,它位于您的磁盘某处)复制到<fontname>-noligs.vf

其他人必须解释如何从新的 tfm 文件创建 LaTeX 包,我已经不记得如何去做了。

答案2

如果您使用 XeTeX(或 LuaTeX),那么您很可能也会使用 fontspec 来加载 OpenType 字体,因此以下内容应该会禁用加载字体中的任何连字:

\setmainfont[Ligatures={NoRequired,NoCommon,NoContextual}]{Font Name}

否则,请参阅 Taco 的回答。

答案3

尝试

\usepackage{microtype}
\DisableLigatures{encoding = *, family = * }

它不仅适用于 pdfTeX,还适用于 LaTeX。

答案4

禁止连字符的一个非常重要的原因是,从 pdf 剪切并粘贴到很多地方,例如 word 和其他 MS 内容。这些目的地无法处理特殊字符。

我使用打字机字体\tentt来避免连字。这并不是真正的抑制,而是字体的本质,更少或没有连字。

我希望我知道一种方法(比上面的 tfm 方法更简单)来抑制它\tenrm

相关内容