为什么 lualatex 允许使用 tt mathmode 符号而 pdflatex 不允许?

为什么 lualatex 允许使用 tt mathmode 符号而 pdflatex 不允许?

考虑这个简单的例子:

\documentclass[preview]{standalone}
\usepackage[utf8]{inputenc}

\begin{document}
  $\texttt{\lambda}$
\end{document}

使用lualatex运行没有问题,但是pdflatex却报错:

! Missing $ inserted.
<inserted text> 
                $
l.5 $\texttt{\lambda}
                     $
? 

我认为这是由于两种工具对字体的处理方式不同,但 pdflatex 不应该报告“我无法显示此符号”吗?为什么会出现这种混淆数学模式错误?

答案1

外部$大多不相关,因为\texttt启动了文本模式,所以您得到完全相同的结果\texttt{\lambda}:LuaLaTeX 中的标准数学模式 lambda(提供的数学字体已经初始化,这在您的示例中正是因为数学模式已经启动而发生的)以及旧式 TeX 引擎和 XeLaTeX 中的错误。

\lambda是一个\mathchardef标记(一如既往),因此在 LaTeX 中没有“主动”选择,它只是从引擎继承而来。LuaTeX\mathchar中的行为已被改变,以允许它在数学模式之外:

非数学模式下允许的数学命令 命令\mathchar、和 和 控制序列是或\Umathchar的结果, 在水平和垂直模式下也是可接受的。在这些情况下,将使用请求的数学系列中的。\mathchardef\Umathchardef\textfont

(LuaTeX 手册,‘非数学模式下允许的数学命令’部分,LuaTeX 0.95 版本第 79 页,LuaTeX 0.80 版本第 153 页)。

相关内容