使用 unicode-math 时在 \begin{document} 中会发生什么?

使用 unicode-math 时在 \begin{document} 中会发生什么?

以下是 MWE:

\documentclass{minimal}
\usepackage{unicode-math}
\let\x\times
\begin{document}
\let\y\times
\[a \x b\]
\[c \y d\]
\end{document}

该命令\times显然在该\begin{document}行改变了含义,因为在该行之前对它所作的别名无法正常工作:

如果没有该软件包,这种情况就不会发生unicode-math。我在这里看到了什么?我一直认为这\begin{document}是一个相当无害的标记,它只界定了前言的结尾(不允许进一步使用某些命令),但它显然至少在与该软件包交互时有副作用。

我正在使用,xelatex看看这是否有任何区别。

答案1

当你这样做时,\let\x\times含义\times仍然是 LaTeX 默认值;事实上,如果你添加

\show\x

手术后\let,你会得到

> \x=\mathchar"2202.
l.4 \show\x

\showthe\textfont2如果进一步在第一个 之前添加\],即在显示中\x使用 的位置,则会得到

> \TU/latinmodern-math.otf(2)/m/n/10 .
<to be read again>
                   \protect
l.7 \[a \x b\showthe\textfont2\]

你会看到\x指示 TeX 制作一个操作符号(第一个字节是2),从数学系列 2 中的字体中取出插槽中的字符"02。日志文件确实显示

Missing character: There is no ^^B in font 
[latinmodern-math.otf]/OT:script=math;language=dflt;!

没有字符,但数学二进制运算符号周围的间距是值得尊重的。

为什么加载时unicode-math的含义没有改变?因为它需要知道整个数学和文本字体设置,而这只能在开始文档时检测到。\times

相关内容