我注意到 latex 和 luatex 对于未声明的数学字符使用不同的字体。Latex 使用文本字体,而 luatex 使用数学字体。例如:
\documentclass{article}
\usepackage[T1]{fontenc}
\begin{document}
\loggingall
$
\showthe\textfont0
\showthe\font
Å
$
\end{document}
luatex 输出:
> \OT1/cmr/m/n/10 .
l.7 \showthe\textfont\symoperators
> \OML/cmm/m/it/10 .
l.8 \showthe\textfont\symletters
Missing character: There is no Å (U+00C5) in font cmmi10!
乳胶输出:
> \OT1/cmr/m/n/10 .
l.7 \showthe\textfont\symoperators
> \OML/cmm/m/it/10 .
l.8 \showthe\textfont\symletters
LaTeX Warning: Command \r invalid in math mode on input line 9.
Missing character: There is no ┼ in font cmr10!
我在 latex 日志中看到这个符号是通过 定义的\r A
。我在两个引擎上使用 时得到的结果相同$\AA$
。我理解在数学中使用文本符号是不正确的。
但问题不在于有效的排版。而是关于luatex 和 latex 如何为非数学声明字符选择默认字体比如 luatex 设置数学字体cmmi10
,latex 设置文本字体cmr10
。难道 latex 使用默认operators
系列和 luatex letters
?在这种情况下,是否可以判断 luatex 的行为与 latex 相同?
例如,文档使用 latex 和 T1 编码字体 (fe lmodern
) 排版,并且将输出数学中文本字体的所有符号(忽略警告),如果后者使用 luatex 编译该文档,则会缺少一堆字符。 (我使用的是 TL2019 和 DVI 模式)
答案1
首先,\AA
在数学模式下不是一个合法的命令,所以输出是 TeX 可以采取的任何措施来摆脱困境。
我得到的是
Missing character: There is no <C5> in font cmr10!
(pdflatex
终端实际显示的内容可能取决于操作系统)这并不奇怪,因为字形 Å 位于0xC5
T1 编码字体的 slot 处。在标准 LaTeX 中,Å
声明为\r A
,这在数学模式下无效。
没有lualatex
错误,但也没有输出,我得到
Missing character: There is no Å (U+00C5) in font cmmi10!
为什么没有错误?因为 LuaTeX 直接解释 Unicode,并且初始化文件已分配Å
数学代码(准确地说是\Umathcodenum
),因此如果使用 OpenType/TrueType 数学字体,则输出可能有意义。此数学代码仅指向数学字母字体中的字符。
所以答案是:不要\AA
在数学模式下使用。