我观察到在文本或数学模式下使用破折号排版时存在差异SIrange
。知道为什么会发生这种情况吗?以下是 MWE:
\documentclass{article}
\usepackage{siunitx}
\sisetup{
range-phrase= -}
\begin{document}
\SIrange{e-12}{e-10}{\second}
$\SIrange{e-12}{e-10}{\second}$
\end{document}
它看起来是这样的:
答案1
正如我在评论中所写的,LaTeX
如果你在数学模式之内或之外,你可以使用命令来TeX
决定采取不同的行为\if<>\else<>\fi
;特别是使用条件形式:
\ifmmode<expression inside math>
\else
<expression outside math>
\fi
因此,如果将此代码应用于您的 MWE:
\documentclass{article}
%
\usepackage{siunitx}
\sisetup{range-phrase=%
\ifmmode\mathbin{-}
\else
\thinspace\textendash\thinspace
\fi%
}
%
\begin{document}
%
\centering
\SIrange{e-12}{e-10}{\second}
\[
\SIrange{e-12}{e-10}{\second}
\]
%
\end{document}
结果是:
更新
还有另一种获得正确破折号的方法,正如 egreg 所建议的,通过考虑在数学模式中包含文本,替换\mathbin{-}
为:
\sisetup{range-phrase=%
\ifmmode\text{\,\textendash\,}
\else
\thinspace\textendash\thinspace
\fi%
}
%
获取:
答案2
范围命令(\numrange
和\SIrange
)仅适用于文本模式:文档中对此进行了介绍。原因是,如果您从数学模式开始,则无法确保在所有情况下都能正确删除行末的空格,因此例如
$\SIrange{10}{20}$
如果在 处发生换行,则标准设置的间距会错误to
。因此,代码不会尝试处理在数学模式下使用它的情况。我想我可以针对这种情况添加警告。