siunitx 在数学模式内外使用相同的字体

siunitx 在数学模式内外使用相同的字体

我想siunitx在数学模式中使用数学字体(例如$$)。但是,我找不到任何有效的设置组合。MWE:

\documentclass{article}

\usepackage{amsmath,amsfonts,mathtools}

\usepackage{fontspec}
\usepackage{unicode-math}
\usepackage{siunitx}
\sisetup{detect-all}

\setmainfont[Mapping=tex-text]{DejaVu Sans}

\setmathfont[%
Extension = .otf,
BoldFont = *bold,
StylisticSet=1]{xits-math}

\usepackage{polyglossia}
\setmainlanguage{greek}
\setotherlanguages{english}

\begin{document}
τέστ: \SI{200}{\micro\ohm} vs $\SI{200}{\micro\ohm}$ vs $200μΩ$

\begin{equation}
    5^{x} - \frac{45}{x} = \SI{200}{\micro\ohm} = 200\mu\Omega
\end{equation}
\end{document}

结果: 结果

如您所见,使用\SI{}{}$\SI{}{}$没有区别。但使用的字体不是数学字体,而是普通文本字体。

siunitx在数学模式下,如何使用正确的(数学)字体?

答案1

您遇到了 Unicode 数学模式设置与传统 TeX 完全不同的问题。这使得一些“正常”假设无效,但并不一定能给我一个好的替代方案。(我正在研究 v3,siunitx这是我将要研究的一个领域。)

问题归结为以下事实:\mathrm这是您的 sanserif 文档字体,但\mathnormal不是。因此,您可能希望

\sisetup{math-rm = \ensuremath}

您还需要改变微符号的定义,最好的可能是

\sisetup{math-micro = \symup{μ}}

例子

\documentclass{article}

\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{DejaVuSans.ttf}

\usepackage{unicode-math}
\setmathfont[%
Extension = .otf,
BoldFont = *bold,
StylisticSet=1]{xits-math}


\usepackage{siunitx}
\sisetup{detect-all, math-rm = \ensuremath, math-micro = \symup{μ}}

\begin{document}

Reference: 200\,μΩ $200\,\symup{μΩ}$

\textsf{siunitx}: \SI{200}{\micro\ohm} $\SI{200}{\micro\ohm}$ 

\end{document}

相关内容