此输入文件排版没有错误,并且 PDF 是我想要的,包含三个字符:
\documentclass{article}
\usepackage[T5,TS1,T1]{fontenc} % 3 of lmodern's 8 encodings
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\begin{document}
%Font encoding now is T1, the default set by fontenc above
£ % lmodern character, in T1 encoding
\fontencoding{T5}\selectfont
ỉ % lmodern character (ihookabove), in T5 encoding
\fontencoding{TS1}\selectfont
€ % lmodern character, in TS1 encoding
\end{document}
但这对我来说很麻烦,因为我必须在文档中查找每个 lmodern 字符的编码,然后用 指定该编码\fontencoding {}
。
为什么 LaTeX 不自行查找并设置合适的编码,而是在字符不在当前编码中时给出错误?有没有办法让 LaTeX 查找编码?
答案1
如果您准备付出大量工作来支持您想要使用的所有角色,那么您就不需要这样做。
\documentclass{article}
\usepackage[T5,TS1,T1]{fontenc} % 3 of lmodern's 8 encodings
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage{textcomp}
\DeclareTextAccentDefault{\h}{T5}
\DeclareTextComposite{\h}{T5}{i}{191}
\DeclareUnicodeCharacter{1EC9}{\h\i}
\begin{document}
%Font encoding now is T1, the default set by fontenc above
£ % lmodern character, in T1 encoding
%\fontencoding{T5}\selectfont
ỉ % lmodern character (ihookabove), in T5 encoding
%\fontencoding{TS1}\selectfont
€ % lmodern character, in TS1 encoding
\end{document}
请注意,这些\fontencoding
行已被注释掉。实际上,该方法仅适用于 TS1 编码的字形。i
如您所见,这是有问题的,因为它必须丢失点。
为什么默认情况下不这样做?有几个原因,主要原因是用未使用的字符定义重载 LaTeX 会降低性能。诸如这样的重音\h
会使它们出现的单词无法使用连字符,因为字母来自不同的字体。对于越南语(没有连字符)来说这不是一个真正的问题,但对于其他语言和重音来说可能是一个问题。
假设你使用的是西里尔文。你可以添加如下声明
\DeclareTextSymbolDefault{\cyri}{T2A}
但当\"i
找到 时(可能通过 Unicode 输入Ї
),分音符将来自 T1 编码字体。否则,\"
重音符应以更复杂的方式定义。
无论如何,您都需要标记不同的语言来进行连字符连接,因此对复合命令进行真正困难的“全局”定义是没有意义的。
答案2
您可能想要切换到更现代的 unicode 引擎 xelatex 或 lualatex。
只需使用 fontspec 包(拉丁现代字体是默认字体):
\documentclass{article}
\usepackage{fontspec}
\begin{document}
£ % lmodern character, in T1 encoding
ỉ % lmodern character (ihookabove), in T5 encoding
€ % lmodern character, in TS1 encoding
\end{document}
使用 xelatex 或 lualatex 进行编译。
结果: 用该包提供的命令
替换inputenc
和代替字体包,几乎就是您切换时需要做的所有事情。fontenc
fontspec
如果您需要参考书目,您也应该(对于 pdflatex 也是如此)切换到带有 biber 后端的 biblatex。
答案3
除非(出于某种原因……)如果你使用选项$
加载,你可以直接排版它们,如果你使用,加载。你也可以使用和fontenc
[TS1,T1]
lmodern
textcompanion
\pounds
\texteuro
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[TS1, T1]{fontenc}
\usepackage{erewhon}
\begin{document}
\pounds\enspace £\enspace €\enspace \texteuro\enspace \$ \textdollar
\end{document}