推荐使用 siunitx 获取角速度的方法

推荐使用 siunitx 获取角速度的方法

siunitx 包中有一个特殊的宏,用于设置角度(单位为度),称为\ang{42},其呈现为,即按照建议设置数字和单位之间的空格,与插入一个细空格的42°正常 不同。不幸的是,该宏没有可选参数来添加其他单位(如),这导致以下问题:\unit\ang\ang{42}[\per\second]

具有以度为单位的角速度(单位:度/秒;我不想在这里使用 rad/s),获得良好(正确)输出的推荐方法是什么,使用 siunitx 的推荐方法是什么?

我有两点建议:

第一的

\SI{42}{\degree\per\second}

导致第二

\num{42}\si{\degree\per\second}

看起来像在此处输入图片描述。两者都看起来很陌生,但后者的输出可能看起来比第一个更熟悉一些,尽管前者的代码比第二个的代码更好。

有人知道什么是官方正确的吗?

答案1

保持灵活性的一种可能性是\ang使用如下所示的 xparse 参数签名重新定义{omo},以在第三个参数中添加可选单元。然后可以轻松重新定义此宏。

不幸的是,这要么会调用\SI原始宏,从​​而失去角分和角秒的可能性,\ang要么会调用旧\ang宏。据我所知,后者在没有代码重复的情况下是不可能的,因为无论\let是命令还是xparse 定义的宏都无法处理( siunitx 中定义的\LetLtxMacro情况就是如此)。\ang

作为一种解决方法,可以使用以下定义,直到有更好的解决方案:

\NewDocumentCommand{\angsi}{omom}{%
    \ang[#1]{#2}\si[#3]{#4}%
}

然后可以写

\angsi{42}{\per\second}

或者

\angsi{1;2;3}{\per\second}

\,如果需要的话,稍后添加有关宏定义的间距。

更新

我联系了 Joseph Wright (siunitx 包作者),他建议

<num>°\,s^{-1}

根据NIST标准:

There is a space between the numerical value and unit symbol, even
when the value is used in an adjectival sense, except in the case
of superscript units for plane angle.

这就是要走的路,可以通过以下方式实现

\NewDocumentCommand{\angsi}{omom}{%
    \ang[#1]{#2}\,\si[#3]{#4}%
}

答案2

首先,加载siunits包:

\usepackage[Gray,squaren,thinqspace,thinspace]{SIunits}

然后这个命令:

\degree\per\second

在数学模式下,将为您提供:

°/s

答案3

我目前遇到了同样的排版角速度问题。我使用了以下样式:

\SI[per-mode=symbol]{42}{\degree\per\second}

另一个选择是使用

\SI[per-mode=fraction]{42}{\degree\per\second}

但我不知道这是否是“官方”的做法。

相关内容