我真的必须这样指定字体编码吗?

我真的必须这样指定字体编码吗?

此输入文件排版没有错误,并且 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和代替字体包,几乎就是您切换时需要做的所有事情。fontencfontspec

如果您需要参考书目,您也应该(对于 pdflatex 也是如此)切换到带有 biber 后端的 biblatex。

答案3

除非(出于某种原因……)如果你使用选项$加载,你可以直接排版它们,如果你使用,加载。你也可以使用和fontenc[TS1,T1]lmoderntextcompanion\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} 

在此处输入图片描述

相关内容