siunitx
我在使用该包时遇到了问题,特别是在使用该detect-all
选项并尝试将\pi
符号用作数字时。
最小工作示例(MWE)如下:
\documentclass{article}
\usepackage{XCharter}
\usepackage{siunitx}
\begin{document}
This works happily: \SI{2\pi e15}{\radian\per\second}
\sisetup{detect-all,}
But this gives an error : \SI{2\pi e15}{\radian\per\second}.
\end{document}
答案1
如果您运行\sisetup{detect-all}
,则siunitx
需要整个\SI
指令处于数学模式才能\pi
正确处理,即它要求您运行
$\SI{2\pi e15}{\radian\per\second}$
在该软件包的用户指南第 5 页上,可以找到:
默认情况下,所有文本都以当前的直立数学字体排版。可以通过设置适当的选项来更改:
\sisetup{detect-all}
将使用当前字体进行排版。
这意味着,如果detect-all
有效,siunitx
则不自动地\SI
使用数学字体来生成和的输出\si
。因此需要$
符号。
\documentclass{article}
\usepackage{XCharter,siunitx}
\begin{document}
\SI{2\pi e15}{\radian\per\second}
\sisetup{detect-all}
$\SI{2\pi e15}{\radian\per\second}$
\end{document}
答案2
siunitx 文档建议采用以下方法在“符号‘数字’”部分添加更多有效符号,如 pi:
\sisetup{input-digits = 0123456789\pi}
9.15 符号‘数字’
在某些情况下,您可能希望使用不属于通常的 0123456789 集合的“数字”。这可以通过设置输入数字选项来实现,但请记住,这将影响(阻止)例如四舍五入。
\sisetup{输入数字 = 0123456789\pi}%
\num{4\pi e-7}
4π × 10−7每个额外条目应为单个标记,并且应具有在数学和文本模式下都安全的定义,或者仅在已知输出模式时使用。例如,可能需要使用 etoolbox 使某些标记变得健壮才能实现此目的
\robustify\dots
\sisetup{输入数字 = 0123456789\dots}%
\qty{0,4066\dots}{\metre\squared}
0.406 6 ... m^2