数学中文本符号的默认字体设置

数学中文本符号的默认字体设置

我注意到 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终端实际显示的内容可能取决于操作系统)这并不奇怪,因为字形 Å 位于0xC5T1 编码字体的 slot 处。在标准 LaTeX 中,Å声明为\r A,这在数学模式下无效。

没有lualatex错误,但也没有输出,我得到

Missing character: There is no Å (U+00C5) in font cmmi10!

为什么没有错误?因为 LuaTeX 直接解释 Unicode,并且初始化文件已分配Å数学代码(准确地说是\Umathcodenum),因此如果使用 OpenType/TrueType 数学字体,则输出可能有意义。此数学代码仅指向数学字母字体中的字符。

所以答案是:不要\AA在数学模式下使用。

相关内容