我对 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
)。