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)将编码的选择权留给用户。需要特殊字体编码的软件包(如tipa
或chessfss
)会做一些调整来加载定义,但不会激活它们。fontspec
另一方面,只需将编码设置为 EU1/EU2。