观察结果

观察结果

在以下使用 XeLaTeX 编译的示例中,如果在之前的数学运算中使用了,则\thinspacingmu 的值(由 所使用\,)的间距/值会受到干扰:\SI

\documentclass{article}

\usepackage{unicode-math}
\usepackage{siunitx}

\begin{document}

$1\mskip20mu1$ $\Leftarrow$

$\SI{1}{1}$ 

$1\mskip20mu1$ $\Leftarrow$

$1\mskip20mu1$

$\SI{1}{1}$

$1\mskip20mu1$ $\Leftarrow$

$a\SI{1}{1}$

$1\mskip20mu1$ 


\end{document}

在此处输入图片描述unicode-math

\SI如果是第一个命令,则可以看到类似的效果:

\documentclass{article}

\usepackage{unicode-math}
\usepackage{siunitx}

\begin{document}

$a\SI{2}{2}1\mskip20mu1$

$\SI{2}{2}a1\mskip20mu1$

\end{document}

观察结果

  • LuaLaTeX 不会发生这种情况,
  • 并非所有字体都会发生这种情况(unicode-mathCambria 不受影响,但xits是),
  • 必须\SI在数学和数学模式中使用,
  • 如果仅当\SI数学中只有一件事时才会发生(这意味着它可能不是一个非常棘手的问题),
  • 下次计算时,该值再次正确。

有人知道它是 XeTeX 吗?siunitxfontspec/unicode-math数学错误?


通过“一轮”最小化示例,我们可以删除siunitx但不能unicode-math

\documentclass{article}

\usepackage{unicode-math}

\begin{document}

$1\mskip20mu1$

\hbox{\everymath{\scriptscriptstyle} $a\,b$}

$1\mskip20mu1$

$1\mskip20mu1$

\end{document}

正如您所看到的,我已经在“核心”中\text放入了足以导致失败的代码。

答案1

经过进一步调查,我认为“这是谁的错误?”这个问题的答案是,问题出在 xetex 中。不知何故,scriptscriptsize 字体的 mu 值泄露了。

我在 xetex 错误跟踪器中提交了一个错误报告,其中包含一个既未使用 unicode-math 也未使用 siunitx 的示例。

https://sourceforge.net/p/xetex/bugs/117/

相关内容