unicodemath 和 siunitx 之间的奇怪交互

unicodemath 和 siunitx 之间的奇怪交互

我有一份文档,出于不同的原因,我使用unicode-mathsiunitx。当我加载unicode-math一些符号通常倾斜的单位(如数学变量)时,它们不再倾斜。

这是为什么?您知道解决方法吗?

这是一个最简单的例子:

\documentclass{article}

\usepackage{siunitx}
\usepackage{unicode-math}% this makes e appear straight (not math)

\begin{document}
\noindent

\SI{1.234}{\planckbar^{-4}\elementarycharge^{2}} %the outcome depends on loading unicode-math

$1.234 \hbar^{-4} e^2$ %this is always ok

\end{document}

输出(注意e符号,电子电荷,它应该是倾斜的)

unicodeplussiunitx

答案1

egreg 的回答提供了一个非常好的解决方案,但了解为什么会发生这种情况可能会有所帮助。

在内部,siunitx将输入解析为以下形式的结构

$\mathrm{<unit-output>}$

所以在这里

$\mathrm{\text{\ensuremath{e}}}$

使用传统 TeX,切换 math-text-math 可以让我们在字体方面“恢复正常”,这样我们就可以使用正常的斜体字体,而无需任何明确的格式。然而,unicode-math这似乎并没有发生:嵌套字体更改保持活动状态。因此,通常的设置会产生不正确的结果。

我会看看这个问题最后是否可以得到解决unicode-math或者是否需要做出改变siunitx

答案2

\text在 的参数中处理时,发生了一些奇怪的事情\SI。下面是一个修复方法:

\documentclass{article}

\usepackage{amsmath}
\usepackage{unicode-math}% this makes e appear straight (not math)
\usepackage{siunitx,xparse}

\NewDocumentCommand{\mathnormalsymbol}{m}{\text{$\mathnormal{#1}$}}
\DeclareSIUnit{\elementarycharge}{\mathnormalsymbol{e}}

\begin{document}

\SI{1.234}{\planckbar^{-4}\elementarycharge^{2}}

$1.234\, \hbar^{-4} e^2$ %this is always ok

\end{document}

在此处输入图片描述

相关内容