如何在数学模式下使用 SIrange

如何在数学模式下使用 SIrange

我无法确定在数学模式下以与文本模式相同的方式siunitx使用时,哪种字体选项是正确的,以排版范围短语SIrange。请参阅 MWE

\documentclass{book}
\usepackage{siunitx} 
\sisetup{mode=text} % does NOT have an effect here
\begin{document}
\SIrange{1}{2}{\watt}\\
$\alpha=\SIrange{1}{2}{\watt}$
\end{document}

答案1

我不确定为什么这不是默认行为,但如果你指定,range-phrase = {\text{~to~}}你会在数学模式内外得到相同的行为:

在此处输入图片描述

\documentclass{book}
\usepackage{siunitx} 
\sisetup{mode=text,range-phrase = {\text{~to~}}}
\begin{document}
\SIrange{1}{2}{\watt}\\
$\alpha=\SIrange{1}{2}{\watt}$
\end{document}

答案2

Peter 给出了一个答案,让范围短语在文本模式下打印,这可能解决了这个问题。但是,有一个原因siunitx不默认这样做。特别是,在文档中,它指出\SIrange只能在文本模式下使用。

要了解原因,请尝试以下演示。

\documentclass{article}
\usepackage{siunitx}
\begin{document}
Some filler text.
Some filler text.
Some filler text.
Some filler text.
$1\,$m to $10\,$m

Some filler text.
Some filler text.
Some filler text.
Some filler text.
\SIrange{1}{10}{\m}

\sisetup{range-phrase = \text{ to }}
Some filler text.
Some filler text.
Some filler text.
Some filler text.
\SIrange{1}{10}{\m}

\sisetup{range-phrase = \text{ to }\break}
Some filler text.
Some filler text.
Some filler text.
Some filler text.
\SIrange{1}{10}{\m}

\end{document}

您会发现,此处使用\text可防止换行。更重要的是,当我们强制使用 来换行时,行尾是错误的。除了插入水平盒子之外,\text没有其他可靠的方法来设置宏,所以 就会发生这种情况。在这样的盒子中,行尾的空格不会被丢弃,因此布局是错误的。因此,虽然大多数情况下看起来不错,但如果行尾出现在不合适的位置,那么灾难就会降临。(例如,参见\ensuretext\texthttps://bitbucket.org/josephwright/siunitx/issue/156/unbreakable-space-in-range-phrases在哪里出现这种情况。)除了声明应在文本模式下使用之外,没有其他好的解决方案\SIrange,所以这是官方立场。因此,标准设置为在所有支持的情况下都能正常工作。

答案3

我理解有时可能需要在数学模式下使用SIrangenumrange。这也是我偶然发现这个问题的原因。在这些特殊和罕见的情况下,Peter Grill 的答案将满足大多数(如果不是全部)需求。

在大多数情况下,当你已经“进入”数学模式时,你会想要写一个不等式,例如:

$\SI{1}{\watt} \leq \alpha \leq \SI{2}{\watt}$

相关内容