我需要 fontenc 和 inputenc 吗

我需要 fontenc 和 inputenc 吗

我的问题感觉像是重复的:fontenc 与 inputenc,但在这个问题中,OP使用了德语和非ascii字符。

我只说英语和写英语。我的键盘是标准的 en-GB 布局,这使得输入非 ASCII 字符变得困难。我使用latex而不是xetex。我的 LateX 文件 100% 是 ASCII。偶尔我下载到.bib文件中的引文会包含非 ASCII 字符,但我从未遇到过“修复”这些问题的问题。我是否需要或是否会从使用fontencinputenc包裹?

答案1

字体编码

由于OT1编码的缺陷,我还推荐T1字体编码:

\usepackage[T1]{fontenc}

例如,OT1不同家族的编码不一致,打字机也不同,……

\usepackage{textcomp}

对于获取其他符号(欧元等)很有用。我会使用前者进一步开发的Computer Modern/EC新字体:Latin Modern

\usepackage{lmodern}

输入编码

当然,使用纯 ASCII 表示文本并使用命令表示其他字符是有优势的。这样,文本就与编码完全无关,并且可以更轻松地在不同环境中使用不同的编码。

但有时 ASCII 以外的字符可能会漏掉。如果OT1文件编译正常,但缺少字符:

\documentclass{article}
% Default font encoding: OT1
\begin{document}
Umlauts via LICR: \"a\"o\"u\ss

Umlauts directly: äöüß
\end{document}

输出中缺少非 ASCII 字符

没有警告或错误,只有.log文件显示:

Missing character: There is no ä in font cmr10!
Missing character: There is no ö in font cmr10!
Missing character: There is no ü in font cmr10!
Missing character: There is no ß in font cmr10!

切换到T1编码有助于提供更多字符。但是我不知道有哪个编辑器支持T1编码。例如,某些位置与 中的插槽匹配latin1。但其他字符不同或有其他位置。以下示例使用 ^^ 符号来避免编辑和复制粘贴时出现问题,因为该示例同时使用两种不同的编码:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{lmodern}

\begin{document}

% Umlauts/Euro: äöüß/€

Umlauts/Euro via LICR: \"a\"o\"u\ss/\texteuro

Umlauts/Euro directly (latin9): ^^e4^^f6^^fc^^df/^^a4

Umlauts/Euro directly (UTF-8): ^^c3^^a4^^c3^^b6^^c3^^bc^^c3^^9f/^^e2^^82^^ac
\end{document}

非 ASCII 字符的意外结果

这次,文件中甚至没有任何提示.log

因此我建议使用inputenc带有编码的包ascii

\usepackage[ascii]{inputenc}

然后非 ASCII 输入字符会产生错误:

! Package inputenc Error: Keyboard character used is undefined
(inputenc)                in inputencoding `ascii'.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.10 Umlauts/Euro directly (latin9): ä
                                      öüß/€

修复输入行后,这有助于确保文件确实是 ASCII。

答案2

inputenc如果你的输入中没有非 ASCII 字符,则不需要。英国键盘上唯一的东西通常是£

fontenc如果您想要访问采用原始 TeX 字体的传统编码以外的编码的字体,则需要这样做OT1。即使在英语中使用也有优势,T1特别是如果在文本中使用,像 < 这样的符号会以倒置问号的形式出现,这样就不会那么令人意外。

答案3

你至少应该使用fontenc包,这样你的符号才能正确设置。另请参阅这里。 如果你真的仅使用 ascii 字符,inputenc不需要。

我个人会在所有情况下同时使用这两种方法,因为我没有发现使用它们有任何缺点。

相关内容