\encodingdefault{T1} 和 \usepackage[T1]{fontenc} 之间的区别

\encodingdefault{T1} 和 \usepackage[T1]{fontenc} 之间的区别

我对 LaTeX 还很陌生,真的非常陌生。

据我所知,LaTeX 的默认字体编码是 OT1。现在,如果我没有记错的话,为了将默认编码更改为 Type 1,我必须放入\usepackage[T1]{fontenc}序言。但是,如果我\renewcommand{\encodingdefault}{T1}改为放入,或者两者都放入,会发生什么?

答案1

当你这样做

\usepackage[<ENCODING>]{fontenc}

文件<encoding>enc.def被加载(由于各个文件系统的统一性,编码名称被转换为小写)。例如

\usepackage[T1]{fontenc}

将加载t1enc.def。此文件的开头是

\ProvidesFile{t1enc.def}
 [2005/09/27 v1.99g
         Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
\DeclareTextAccent{\'}{T1}{1}
...

\ProvidesFile确保文件永远不会被加载两次。另一方面,fontenc.sty基本上是的包装器\input{<encoding>enc.def}。当请求的编码在西里尔编码列表中时,它还定义了一些小写和大写设置的补充。

在创建格式时,还会加载以下编码

OT1  T1  OML OMS

(最后两个是数学)。这就是为什么

\renewcommand{\encodingdefault}{T1}

有效:编码已经已知并且t1enc.def已经加载到内存中。

对于任何其他编码,\renewcommand您建议将发出

! LaTeX Error: Encoding scheme `<ENCODING>' unknown.

因为首要的任务<encoding>enc.def是说

\DeclareFontEncoding{<ENCODING>}{<code>}{<code>}

其中参数指定在编码激活后立即执行的代码(分别针对文本和数学模式)。

所以完整的答案是:

该方法\renewcommand仅适用于 OT1 和 T1;不要使用它。

还请注意最后的加载的编码fontenc将成为文档的默认编码。更准确地说,当

\usepackage[<ENCODING-1>,...,<ENCODING-n>]{fontenc}

经过处理后,LaTeX 就可以了

\renewcommand{\encodingdefault}{<ENCODING-n>}

(实际正在执行\let\encodingdefault\CurrentOption)。

相关内容