LaTeX 如何知道使用多个已加载的输出编码中的哪一个?

LaTeX 如何知道使用多个已加载的输出编码中的哪一个?

LaTeX 的输入和输出编码之间的差异已在很多地方讨论过;我特别喜欢用户 @egreg 的回答这里

然而,处理输出编码时有一个方面我不明白:当用户加载多个输出编码时,LaTeX 如何决定并知道在编译期间的任何给定时间使用哪一个?

例如,文档中tipa有一个例子,其中用户加载三种输出编码:

\documentclass{article}
\usepackage[T3,OT2,T1]{fontenc}
\usepackage[noenc]{tipa}

另外,为什么需要某些输出编码的包或语言不能自己加载这些编码?也就是说,为什么用户必须决定通过fontenc选项加载哪一个?

答案1

编码有点像 babel 的语言:最后一个编码选项将在文档开始时处于活动状态,但在文档过程中,您可以使用 从一种编码切换到另一种预声明的编码\fontencoding{..}\selectfont。相当多的命令都包含这样的字体编码开关。

从某一方面来说fontenc它是一个相当特殊的包:您可以多次加载它。

\usepackage[T3]{fontenc}
\usepackage[T1]{fontenc}

不会给出“选项冲突”错误消息,也不会忽略第二个\usepackage。两个命令之后,活动编码将是 T1。

这意味着软件包作者在加载时必须小心谨慎fontenc:他们可以轻松覆盖用户想要用作默认的编码。这个问题刚刚出现在新的libertine-type1-package 中:它将默认字体编码设置为 LY1,这会导致意外替换。通常,普通字体包(对于可以与“普通”编码一起使用的字体,如 T1、LY1 或 OT1)将编码的选择权留给用户。需要特殊字体编码的软件包(如tipachessfss)会做一些调整来加载定义,但不会激活它们。fontspec另一方面,只需将编码设置为 EU1/EU2。

相关内容