我有一份文档,出于不同的原因,我使用unicode-math
和siunitx
。当我加载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
符号,电子电荷,它应该是倾斜的)
答案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}