使用 unicode-math 和 lualatex 计算平方根的高度不正确

使用 unicode-math 和 lualatex 计算平方根的高度不正确

这是我所看到的:在此处输入图片描述 请注意 \sqrt{11} 中平方根符号的高度差异。这似乎仅在我使用 进行编译时才会发生lualatex

这是我的 MWE:

\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont[]{TeX Gyre Pagella Math}
\setmathfont[range={cal}]{Latin Modern Math}

\begin{document}
  Note well:
  \begin{equation*}
    x = \sqrt{11}\sqrt{19}
    \qquad
    y = \frac{\sqrt{11}\sqrt{19}}{26}
  \end{equation*}
\end{document}

我认为这是一个错误,但我不确定是否是这种情况,或者如果是的话如何报告。

答案1

这是选项的已知“功能” range。您可以通过将最后一个数学字体重新设置为主要字体并将其选为某些符号的范围来解决这个问题。

作者unicode-math意识到了这一点。

\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont[]{TeX Gyre Pagella Math}
\setmathfont[range={cal}]{Latin Modern Math}
\setmathfont[range=\int]{TeX Gyre Pagella Math}

\begin{document}
  Note well:
  \begin{equation*}
    x = \sqrt{11}\sqrt{19}
    \qquad
    y = \frac{\sqrt{11}\sqrt{19}}{26}
  \end{equation*}
\end{document}

在此处输入图片描述

答案2

不仅根的高度存在问题,如果仔细观察,您会发现根的水平规则是错误的,而且分数规则也太细了。正如 egreg 所写,这是范围选项的问题。最后一种数学字体设置了重要的数学常数。在这种情况下,问题在于,\Umathradicalrule正如\Umathfractionrule您在以下示例中所看到的:

\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont[]{TeX Gyre Pagella Math}
\makeatletter\check@mathfonts \makeatother
\edef\textstylerulewidth{\the\Umathradicalrule\textstyle}
\edef\displaystylerulewidth{\the\Umathradicalrule\displaystyle}
\edef\displaystylefraction{\the\Umathfractionrule\displaystyle}

\setmathfont[range={cal}]{Latin Modern Math}


\begin{document}
\makeatletter\check@mathfonts \makeatother
\Umathradicalrule\textstyle=\textstylerulewidth 
\Umathradicalrule\displaystyle=\textstylerulewidth 
\Umathfractionrule\displaystyle=\displaystylefraction
  Note well:
  \begin{equation*}
    x = \sqrt{11}\sqrt{19}
    \qquad
    y = \frac{\sqrt{11}\sqrt{19}}{26}
  \end{equation*}
\end{document}

(像这样逐个设置值自然不是可行的方法,egreg 的解决方案更好,但在我看来,看看这个值如何影响输出很有趣。)

相关内容