使用 unicode-math 范围功能时间距会发生变化。为什么?

使用 unicode-math 范围功能时间距会发生变化。为什么?

您可以使用range的功能unicode-math来为特定的 Unicode 插槽或访问字形的宏设置数学字体。我尝试使用求和符号和拉丁现代,请参阅我的示例:

\documentclass{scrartcl}

\usepackage{amsmath}
\usepackage{unicode-math} % use unicode in math & setup math fonts
\setmathfont{Asana Math}
%\setmathfont[range=\sum]{Latin Modern Math} % substitute Sum sign

\begin{document}

Notice the different sum sign $\sum$, as intended. 

Notice also, the difference in spacing, not intended:
\begin{equation}
    \begin{bmatrix}
        0           & \frac{1}{2}   & \frac{2}{3} \\
        \frac{3}{4} & 0             & \frac{4}{5} \\
        \frac{5}{6} & \frac{6}{7}   & 0
    \end{bmatrix}
    \begin{pmatrix}
        A \\
        B \\
        C
    \end{pmatrix}
\end{equation}
\end{document}

但是,不仅和符号会发生变化,而且矩阵中的间距也会发生变化。注释掉 Latin Modern(如示例所示): 拉丁现代 Deactive 启用 Latin Modern(删除相关行前的 %): 拉丁现代活跃 为什么会这样?顺便说一句,我使用的Lualatex是 TeXLive 2012。

答案1

LuaTeX 从最后定义的字体中获取全局数学常量(我还不确定这是否可以视为错误或功能)。一个简单的解决方法是使用空范围再次调用 Asana Math(在没有范围的情况下调用它将撤消之前的字体调用):

\usepackage{amsmath}
\usepackage{unicode-math} % use unicode in math & setup math fonts
\setmathfont{Asana Math}
\setmathfont[range=\sum]{Latin Modern Math} % substitute Sum sign
\setmathfont[range={}]{Asana Math}

\begin{document}

Notice the different sum sign $\sum$, as intended.

Notice also, the difference in spacing, not intended:
\begin{equation}
    \begin{bmatrix}
        0           & \frac{1}{2}   & \frac{2}{3} \\
        \frac{3}{4} & 0             & \frac{4}{5} \\
        \frac{5}{6} & \frac{6}{7}   & 0
    \end{bmatrix}
    \begin{pmatrix}
        A \\
        B \\
        C
    \end{pmatrix}
\end{equation}
\end{document}

相关内容