SIunits 包 - 分离值和单位

SIunits 包 - 分离值和单位

使用该包写入单位时,可以自动添加值和单位之间的空格吗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}

在此处输入图片描述

相关内容