siunitx 包中有一个特殊的宏,用于设置角度(单位为度),称为\ang{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}
但我不知道这是否是“官方”的做法。