![siunitx 在数学模式内外使用相同的字体](https://linux22.com/image/344207/siunitx%20%E5%9C%A8%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E5%86%85%E5%A4%96%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AD%97%E4%BD%93.png)
我想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}