LaTeX数字与单位的完美渲染方案: siunitx 使用指南
国际单位制(SI, Système International d’Unités)是现代科学和工程领域中最广泛使用的计量单位体系。它为全球科学家、工程师和研究人员提供了一个统一的语言来描述物理量。
siunitx
是一个强大的 LaTeX 包,专门设计用于处理数值和单位的排版。它提供了一系列命令和选项,可以让我们轻松地排版各种数值和单位,包括科学计数法、数值范围、测量不确定性等。
利用 siunitx
,我们可以轻松的排版出符合国际单位制的标准的数值和单位。例如,LaTeX 本身并不提供 ℃ 符号的排版命令,想要排版摄氏度单位时,我们通常需要手动输入 ^{\circ}\mathrm{C}
来间接实现。但当我们使用 siunitx
包时, 可以直接使用 \degreeCelsius
命令。
本文将介绍 siunitx
的基本用法,包括数值和单位的排版、数值范围的排版、测量不确定性的排版,以及一些其他有用的功能。
注意:
siunitx
API 已经更新到了v3
版本,本文将只介绍v3
版本的用法。
1. 命令列表
siunitx
提供了以下几个主要命令:
基础命令
命令 | 用途 |
---|---|
\unit[⟨options⟩]{⟨unit⟩} | 单位排版 |
\num[⟨options⟩]{⟨number⟩} | 数字排版 |
\complexnum[⟨options⟩]{⟨number⟩} | 复数排版 |
\qty[⟨options⟩]{⟨number⟩}{⟨unit⟩} | 数值和单位同时排版 |
\ang[⟨options⟩]{⟨angle⟩} | 角度排版(度分秒等) |
组合命令
命令 | 用途 |
---|---|
\numlist[⟨options⟩]{⟨number⟩} | 数值列表排版 |
\numproduct[⟨options⟩]{⟨unit⟩} | 数值乘积排版 |
\numrange[⟨options⟩]{⟨number⟩}{⟨unit⟩} | 数值范围排版 |
\qtylist[⟨options⟩]{⟨angle⟩} | 数值+单位 列表排版 |
\qtyproduct[⟨options⟩]{⟨numbers⟩}{⟨unit⟩} | 数值+单位 乘积排版 |
\qtyrange[⟨options⟩]{⟨number1⟩}{⟨number2⟩}{⟨unit⟩} | 数值+单位 范围排版 |
全局配置
命令 | 用途 |
---|---|
\sisetup{⟨options⟩} | 全局配置 |
2. 基础命令
2.1 单位排版: \unit
命令
siunitx
提供了 \unit
命令,用于排版数值和单位。\unit
命令可以直接渲染给定的单位文本或者宏定义的命令:
\unit{kg.m.s^{-1}} \\ %文本形式
\unit{\kilogram\metre\per\second}\\ %宏命令形式
\unit{ \kilogram \metre \per \second} \\ %宏命令形式(空格会被删除)
\unit[per-mode = symbol] %宏命令形式(指定 per-mode = symbol)
{\kilogram\metre\per\second} \\
\unit[per-mode = fraction] %宏命令形式(指定 per-mode = fraction)
{\kilogram\metre\per\second}
对应的输出如下结果:
- 对于文本形式,
.
提供了一个小的间隔,以便更好地区分不同的单位。 上下标仍通过^
和_
来实现。 - 对于宏命令形式,
\kilogram
、\metre
、\per
、\ampere
是siunitx
提供的一些常用单位的宏命令。这些宏命令可以直接在\unit
命令中使用,单位间的间隔会自动调整,手动添加的间隔会被删除。内置的宏命令可以参考:附:siunitx 中SI宏命令列表 - 每个命令都提供了可选项,在
[]
中指定。如per-mode = symbol
选项,用于指定\per
命令的显示方式。默认情况下,会以上标为-1 的形式显示\per
命令,我们可以通过设置per-mode
选项为symbol
或fraction
来更改。
2.2 数值排版: \num
命令
siunitx
提供了 \num
命令,用于自动处理与排版数值:
- 软硬空格都会被删除
- 自动给大数添加空格(每三位添加一个空格)
- 自动识别指数形式(自动处理
e
,E
,d
,D
) - 如果数值是小数,小数点左侧为空时,会自动添加 0 (
.
和,
都会被识别为小数点)
2.3 复数排版: \complexnum
命令
siunitx
提供了 \complexnum
命令,用于排版复数。\complexnum
命令的用法与 \num
命令类似,只是它可以处理复数。
复数可以通过笛卡尔形式或极坐标形式表示:
- a + bi (笛卡尔形式)
- a + ib (笛卡尔形式)
- r:θ (极坐标形式)
在笛卡尔形式中,复数由实部和虚部组成,形式为 a + bi
或 a + ib
。在极坐标形式中,复数由模长和幅角组成,形式为 r:θ
。
2.4 数值和单位同时排版: \qty
与 \complexqty
命令
siunitx
提供了 \qty
与 \complexqty
命令,用于同时排版数值和单位。\qty
命令接受两个参数,第一个参数是数值,第二个参数是单位,分别与\num
和 \unit
命令对应。
\complexqty
命令\qty
命令一致,但用于处理数字为复数的情况。
2.5 角度排版: \ang
命令
siunitx
提供了 \ang
命令,用于排版角度。\ang
命令接受一个参数,即角度值。角度值可以是弧度值,也可以是度、分、秒的组合,以 ;
隔开。
3. 组合命令
3.1 列表排版: \numlist
与 \qtylist
命令
如果有多个数值需要排版,我们可以使用 \numlist
命令。\numlist
命令接受一个参数,即数值列表。数值之间用 ;
隔开。
\qtylist
命令与 \numlist
命令类似,用于排版数值和单位的列表。
3.2 乘积排版: \numproduct
与 \qtyproduct
命令
如果有多个数值需要相乘,我们可以使用 \numproduct
命令。\numproduct
命令接受一个参数,即数值列表。数值之间用英文字母 x
隔开。
\qtyproduct
命令与 \numproduct
命令类似,用于排版数值和单位的乘积。
3.3 范围排版: \numrange
与 \qtyrange
命令
如果有数值范围需要排版,我们可以使用 \numrange
命令。\numrange
命令接受两个参数,即数值范围的上限和下限。
\qtyrange
命令与 \numrange
命令类似,用于排版数值和单位的范围。
4. 全局配置
siunitx
中的命令都可以通过可选项进行配置,但如果我们希望对整个文档进行统一的配置,可以使用 \sisetup
命令。可选的配置选项可以查找官网文档查找:https://texdoc.org/serve/siunitx/0
例如:
\sisetup{%
range-phrase = {\,\textasciitilde\,}, % to 改为 ~
range-units = single, % 第一个数字不加单位
number-mode = text, % 数字字体改为与正文一致
}