使用该包写入单位时,可以自动添加值和单位之间的空格吗SIunits
?
该软件包提供了以下两种添加单位的选项:
$500\kelvin$
$\unit{500}{\kelvin}$
只有后者添加了值和单位之间的分离。添加\unit{...}{...}
参数太麻烦,与手动方法相比没有任何易用性\;\mathrm{...}
。
\;
使用前一种符号来避免这种情况,当然可以用手动添加空格500\;\kelvin
,但我现在正在寻找除了单位之外不需要添加任何东西的可能性。
我有调查包siunitx
也是如此,它只用 替换了\unit{...}{...}
(\SI{...}{...}
显然是强制的!)。因此,这没有任何帮助。
是否可以自动/通常地\;
在文档中的每个单元(和单元组)之前添加?
答案1
可以SIunits
通过修补适当的内部
\documentclass{article}
\usepackage{SIunits}
\usepackage{xpatch}
\makeatletter
\xpretocmd\SI@fstyle{\;}{}{}
\makeatother
\begin{document}
$500\;\mathrm{K}$
$500\kelvin$
\end{document}
siunitx
您也可以通过激活“独立”单元和“预间隔”来实现这一点
\documentclass{article}
\usepackage{siunitx}
\sisetup{free-standing-units, space-before-unit, number-unit-product = \;}
\begin{document}
$500\;\mathrm{K}$
$500\kelvin$
\end{document}
(\qty
建议使用,因为有些结果需要更结构化的标记,但一个设计目标一直是支持一系列输入形式。)
要使这些方法奏效,您必须将单元作为单个命令:将诸如此类的东西链接在一起是\volt\per\kelvin
行不通的,因为没有办法“知道”什么标志着单元的结束。因为siunitx
我们可以声明一个新单元,然后只会在开头添加一个空格
\documentclass{article}
\usepackage{siunitx}
\sisetup{free-standing-units, space-before-unit, number-unit-product = \;}
\DeclareSIUnit{\voltperkelvin}{\volt\per\kelvin}
\begin{document}
$500\;\mathrm{V}\,\mathrm{K}^{-1}$
$500\voltperkelvin$
\end{document}
(为了使‘预间距’能够工作,需要‘预先’定义单位,这是文档siunitx
主要关注逻辑标记的原因之一。)
由于单元命令不是上下文相关的,因此实现起来更加困难SIunits
。人们可能会添加适当的切换,但这会显著改变代码的工作方式:可能会进入“开发”阶段(正如文档SIunits
所述,现在已在 中完成siunitx
)。
答案2
您可以使用 来控制间距number-unit-product
,可以作为包选项,也可以使用\sisetup
或 仅在 内局部控制\SI[number-unit-product=...]{500}{\kelvin}
,但您应该考虑这是否是真的需要
(当然\quad
是夸张了!)
\documentclass{article}
\usepackage[number-unit-product=\quad]{siunitx}
\begin{document}
\SI{500}{\kelvin}
% Local change
\SI[number-unit-product=\,\,]{1000}{\meter}
\end{document}