在 TeX 中如何实现破折号?

在 TeX 中如何实现破折号?

LaTeX 如何实现破折号之间的差异? ------都打印不同的破折号,但-不是活动字符:它的 catcode 为 12,与 等数字相同2

答案1

此答案不适用于较新的 TeX 引擎,例如 XeTeX 和 LuaTeX。默认情况下,这些引擎不会将其视为--除 之外的任何其他内容--fontspec可以模拟传统引擎的行为。

正如 Tobi 指出的那样,它们被实现为连字,就像fifl等一样。更具体地说,TeX Font Metric 文件(就 TeX 而言,它只是一种字体)包含有关字体连字的信息。从这个意义上讲,“字体”是采用特定编码的字体 - 要么是与您在文档中使用的类型大致对应的编码(OT1T1等),要么是具有其他用途的编码。

当 TeX 需要字体时,它会查找 TeX Font Metric 文件,例如ec-lmr5.tfm。这不包含任何实际的字形 - 没有字符的图片。ec-lmr5.tmf只告诉 TeX 有关框的信息,而这正是 TeX 本身真正关心的。(一切都是框。)但是.tfm包含有关当 对应的框后面-跟着另一个相同类型的框时该怎么做的信息。它告诉 TeX 将这两个框替换为另一个框,对应于。它还告诉它如果框后面直接跟着第一个框的另一个实例,它应该使用对应于的框对框进行另一次替换

这取决于用于编写或生成 TeX Font Metric 文件的编码。这与文档(例如utf8或 )中使用的熟悉的输入和输出“编码”含义不同。为清楚起见,我们将这些编码称为“tfm 生成编码”。这是因为对应于标准文本编码(例如等)T1的 tfm 生成编码被定义为包含这些连字,所以文件以这种方式配置。因此,例如 提供的 tfm 生成编码文件包含对应于 和 的文件,其中定义了相关连字。当使用它来创建文件时,会插入实现连字的指令。相反,对于打字机字体,例如,通常设置为不包含此类连字。这可确保您在将给定输入提供给 TeX 时获得期望的输出。OT1T1.tfmfontinstT1.tfmfontinst.tfm

答案2

我对@cfr 的回答添加了三点。

  • 这些 TeX 连字符功能在 XeTeX 和 LuaTeX 中也是可行的。首先,它们能够加载经典的 TFM,并且此功能是本机的。其次,它们将此功能作为其 OTF 字体加载器中的特殊字体功能实现。此功能在两个引擎中的激活方式不同:在mapping=tex-textXeTeX 中由 激活,+tlig在 LuaTeX 中由 激活。

  • 首先,这些连字符是由 Metafont 在 Computer Modern 字体中实现的。然后,当准备从 Type1 到 TFM 的新字体时,这些连字符会自动生成,因为典型文件的最后一部分.enc配置了这些连字符。

  • 如果字体未转换为 TFM,则不包含此连字功能。此连字功能未知,且未在 TeX 以外的排版中采用。

相关内容