使用 siunitx,\ohm 产生斜体 Omega

使用 siunitx,\ohm 产生斜体 Omega

标题基本上说明了一切。

siunitx

\usepackage[binary-units=true]{siunitx}
\sisetup{locale = DE}

对于\SI{...}{\micro\ohm}\micro输出正确(非斜体),\ohm输出为斜体。这在文本和数学模式下都会发生。

我的 MWE 是

\documentclass{publisher-custom}
\usepackage[binary-units=true]{siunitx}
\sisetup{locale = DE}

\begin{document}
\SI{1,09715247}{\micro\ohm}
\end{document}

由于我无法更改(或在此处发布)发布商自定义文档类代码中的内容,我该如何修复此问题?

更新:

通过 grep 搜索 [Oo]mega,我在发布者的 cls 文件中找到了以下几行:

...
\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
...
\DeclareMathSymbol{\varOmega}{\mathalpha}{operators}{"0A}
...

这有帮助吗?

答案1

更新后问题的答案

特殊类文件用途:

\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
\DeclareMathSymbol{\varOmega}{\mathalpha}{operators}{"0A}

然后\Omega默认为斜体且\varOmega直立。如果可用,则包siunitx使用\upOmega来初始化 的符号math-ohm,否则\Omega用作\text{$\Omega$},从而得到斜体Ω。而\mathrm{\Omega}会给出一个直立的 Ω。

由于直立欧姆符号可用,因此可以轻松为包提供\varOmega宏:\upOmegasiunitx

\documentclass{article}
\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}% italics
\DeclareMathSymbol{\varOmega}{\mathalpha}{operators}{"0A}% upright
\providecommand*{\upOmega}{\varOmega}% for siunitx
\usepackage[binary-units=true]{siunitx}
\sisetup{locale = DE}

\begin{document}
  \SI{1,09715247}{\micro\ohm}
\end{document}

结果

回答第一个版本问题的

我得到的是斜体\mu。也许你想要的是\micro斜体。\ohm是直立的:

\documentclass{article}
\usepackage[binary-units=true]{siunitx}
\sisetup{locale = DE}
\begin{document}
\si{\mu\ohm} vs.\@ \si{\micro\ohm}
\end{document}

结果

答案2

您的文档类的设计者希望您使用斜体大写希腊字母,在我看来,根据 ISO 这是理想的(但当然是一个品味问题)。

由于您的模板是按原样编写的,因此我不会像评论中建议的那样更改此行为。只需像这样重新定义math-ohmfrom :siunitx

% arara: pdflatex

%\documentclass{publisher-custom}
\documentclass{article}
\usepackage{siunitx}
\sisetup{%
    ,binary-units=true
    ,locale = DE
    ,math-ohm  =\Omega
    }
\usepackage{lmodern}
% from your class definition
\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
\DeclareMathSymbol{\varOmega}{\mathalpha}{operators}{"0A}


\begin{document}
\si{\micro\ohm} and $\si{\micro\ohm}$ but $\mu\times\Omega$
\end{document}

在此处输入图片描述

相关内容