为什么 siunitx 无法将这个混合符号和数字参数排版为 \SI?

为什么 siunitx 无法将这个混合符号和数字参数排版为 \SI?

我在 OSX Lion 上使用 MacTeX 2011 发行版(安装了所有更新),我从siunitx包中收到一个奇怪的错误,而这在 Snow Leopard 上的 MacTex 2010 中并没有发生过。

举一个简单的例子

\documentclass{article}
\usepackage{siunitx}
\sisetup{mode=text,per-mode=symbol,input-symbols={\pi\cdot}}
\begin{document}
\SI{2 \pi \cdot 10}{\kilo\hertz}
\end{document}

将无法排版并出现错误Missing $ inserted.,而将\SI命令更改为

\SI{2 \pi \cdot 1}{\kilo\hertz}

将会被排版且没有错误。

有人能解释一下为什么siunitx无法正确解析第一个命令吗?

答案1

如果强制使用文本模式进行输出,则需要确保为需要它的符号选择数学模式。正如 egreg 指出的那样,一种选择是关闭解析器并允许数字中的任何数学模式材料。另一种方法要求您为每个数学模式符号创建一个合适的包装器:

\documentclass{article}
\usepackage{siunitx}
\sisetup{mode=text,per-mode=symbol,input-symbols=\mypi\mycdot}
\protected\def\mypi{\ensuremath{\pi}}
\protected\def\mycdot{\ensuremath{\cdot}}
\begin{document}
\SI{2 \mypi \mycdot 10}{\kilo\hertz}
\end{document}

答案2

您必须关闭第一个参数中的数字解析:

\SI[parse-numbers=false]{2\pi\cdot10}{\kilo\hertz}

文档第 22 页。

相关内容