fontenc 的作用是什么?何时应用?基于创建我自己的包的示例

fontenc 的作用是什么?何时应用?基于创建我自己的包的示例

在使用 LaTeX 一段时间后,我现在正在尝试了解它的工作原理。以下示例涉及 fontenc 的功能。

为了不必写下我通常使用的所有软件包的包含内容,我创建了软件包 MP,它可以完成这些包含内容,并且还提供了创建标题页的命令。对于后一个功能,键值选项通过 pgfopts 提供给 MP。

MP 有

\usepackage[T1]{fontenc}

通过处理输入

\pgfkeys{
keyone/.store in=\MP@keyone
...
}
\ProcessPgfPackageOptions*

并提供标题页命令

\newcommand\MPtitlepage{...}

但是,当我在主文档中使用 MP 时,如果主文档中没有 \usepackage[T1]{fontenc},并且为 MP 提供了一个包含外来字符的选项,Latex 会错误地显示它们。例如,主文档

\documentclass[a4paper]{article}  
\usepackage[keyone=R\`aul]{MP}
\begin{document}
\MPtitlepage
\end{document}

显示 Raul 时,u 下有一个引号。另一方面,我可以在 MP 中省略 fontenc,而不会出现此问题。

有人能用这个例子解释一下 fontenc 的作用吗?我特别困惑,因为从这个例子中我感觉 TeX 不是在输出时而是在定义时将变量“翻译”为输出字母。但我真的不知道发生的不同“翻译”是什么,也不知道它们有什么用处。

答案1

我使用\'重音符号代替您的重音符号作为示例,以便于 markdown 输入。

在 OT 编码中,重音命令\'定义为

 \DeclareTextAccent{\'}{OT1}{19}

因此它将位置 19 处的重音符号放在字符 a 的末尾。

在 T1 编码 ( t1enc.def) 中可以找到以下定义:

 \DeclareTextComposite{\'}{T1}{a}{225}

这意味着最后 \'a 被映射到位置 225 处的字形。

在您的代码中,accent 命令在包选项中展开,因此您处于输出的中间位置。您可以使用 和 来可视化\edef状态\show

\documentclass{report}
\usepackage[T1]{fontenc}

\begin{document}
\edef\test{\'a}\show\test

\fontencoding{OT1}\selectfont
\edef\test{\'a}\show\test

\end{document}

这是第一场演出(T1 编码处于活动状态)

> \test=macro:
->á.
l.37 \edef\test{\'a}\show\test

第二个

> \test=macro:
->\unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa \hbox {a\gl
obal \mathchardef \accent@spacefactor \spacefactor }\accent 19 a\egroup \spacef
actor \accent@spacefactor .
l.40 \edef\test{\'a}\show\test

相关内容