为什么 \numrange{number}{number} 和 \SIrange{number}{number}{unit} 在数学模式下不能按预期工作?

为什么 \numrange{number}{number} 和 \SIrange{number}{number}{unit} 在数学模式下不能按预期工作?

查看代码:

\documentclass{scrartcl}
\usepackage[per-mode = fraction]{siunitx}
\begin{document}
  Text. \numrange{1}{3} experiments.\\[\baselineskip]
  Text. \SIrange{1}{5}{\kg} text.\\[\baselineskip]
  Text. $k = \numrange{1}{3}$ experiments text.\\[\baselineskip]
  Text. $v = \SIrange{1}{5}{\cubic\m\per\kg}$ text.\\[\baselineskip]
\end{document}

结果如下:

结果

在文本模式下,它可以正常工作。但在数学模式下,前后没有空格并且它具有斜体形状。为什么会这样?我做错了什么?

提前感谢您的帮助和努力!

答案1

命令\SIrange\numrange的实现方式使得它们只能在文本模式下可靠地使用:这涉及在命令输出中出现换行符时处理空格。因此,它们在数学模式下的行为是未定义的。(我正在研究所有命令的新实现,siunitx这是一个需要研究的领域。目前,我不能确定 v3 是否能够在这里提供更好的结果。)

答案2

在此处输入图片描述

\documentclass{scrartcl}
\usepackage[per-mode = fraction]{siunitx}
\sisetup{mode=text,range-phrase = {\text{~to~}}}
\begin{document}
  Text. \numrange{1}{3} experiments.\\[\baselineskip]
  Text. \SIrange{1}{5}{\kg} text.\\[\baselineskip]
  Text. $k = \numrange{1}{3}$ experiments text.\\[\baselineskip]
  Text. $v = \SIrange{1}{5}{\cubic\m\per\kg}$ text.\\[\baselineskip]
\end{document}

相关内容