Unités (siunitx)

Composer correctement une grandeur comme “9.81 m/s²” suppose quelques conventions : unités en romain droit, espace fine entre le nombre et l’unité, et espacement cohérent dans les produits et quotients d’unités composées. Le faire à la main est fastidieux et source d’écarts. Le paquet siunitx est l’outil standard qui compose automatiquement nombres, unités et grandeurs selon un même jeu de règles. Cette page présente les trois commandes centrales de la version actuelle (v3), \num, \unit et \qty, le type de colonne S pour aligner les nombres sur le séparateur décimal dans les tableaux, et leurs différences avec les noms v2 \SI et \si encore présents dans les anciens documents.

Pourquoi un paquet d’unités ?

La notation scientifique suit des conventions internationales (ISO 80000-2 / JIS Z 8000-2, voir la page dédiée). L’un des points clés est que les symboles d’unité se composent droits. m, kg et s ne sont pas des variables ; ils ne doivent donc pas être en italique de variable. Or, en mode mathématique LaTeX, les lettres sont inclinées par défaut : écrire littéralement $kg$ fait ressembler l’unité au produit d’un k et d’un g italiques.

Le second point est l’espacement. Entre le nombre et l’unité, on ne colle pas et on n’espace pas trop : on insère une espace fine (équivalent de \, en maths), donc ni 9.81m ni 9.81 m. Pour une unité composée comme m/s, on veut aussi une présentation cohérente dans tout le document : division par barre ou puissance négative s⁻¹, produit comme kg·m avec ou sans point médian. Les écrire un à un en \mathrm{m} tend à rendre espacements, puissances et produits incohérents.

siunitx prend tout cela en charge d’un coup : il compose les unités droites, insère l’espace correcte avant elles et rend produits, quotients et puissances selon une règle cohérente. Un seul réglage change l’apparence dans tout le document. Il suffit de charger \usepackage{siunitx} dans le préambule.

Composer un nombre : \num

\num{…} formate un nombre seul. Donnez-lui un nombre : il le compose droit et règle automatiquement groupement des chiffres, exposants et signes. Son interprétation des exposants est particulièrement utile : e, E, d et D sont reconnus comme “×10 à la puissance”. Ainsi \num{1.234e5} compose 1.234 × 10⁵ au lieu d’imprimer un e5 littéral. Il accepte . ou , comme séparateur décimal et ajoute, si besoin, un 0 avant le séparateur.

latex
\num{12345}      % → 12 345(桁区切りが入る / digit grouping)
\num{1.234e5}    % → 1.234 × 10^5
\num{0,1234}     % → 0.1234(カンマも小数点として解釈 / comma as decimal)
\num{.5}         % → 0.5(先頭に 0 を補う / leading zero added)
\num{3.45d-4}    % → 3.45 × 10^{-4}

Ici, 12345 reçoit une espace fine de groupement et devient 12 345, 1.234e5 devient 1.234 × 10⁵, et .5 devient 0.5. Les conventions régionales (groupement par virgule, virgule décimale, etc.) se changent par options, mais retenez d’abord : passer les nombres par \num plutôt que d’écrire des chiffres nus. Pour composer un produit de nombres, utilisez la commande dédiée \numproduct{1.2 x 3.4} (termes séparés par x) ; en v3, \num ne forme pas lui-même les produits.

Composer une unité : \unit

\unit{…} compose une unité seule. Deux styles d’entrée existent. Le premier est le style littéral, où l’on tape directement les symboles, comme \unit{kg.m/s^2}. Ici, le point . est un produit entre unités, / un quotient, et ^ / _ donnent exposants et indices. siunitx compose cela droit avec l’espacement correct : \unit{kg.m/s^2} donne kg m/s² (espace fine entre kg et m, 2 en exposant sur s).

L’autre est le style interprété (macro) : on construit l’unité avec des commandes pour l’unité, le préfixe et la puissance, un peu comme si on lisait l’unité en anglais. Le tableau liste les briques de base.

CommandeSensSortie
gram\gram / \metre / \secondUnités de base (noms SI)g / m / s
kilo\kilo \milli \microPréfixes (placés avant l’unité)k / m / µ
kilogram\kilogramUnité préfixée prédéfiniekg
per\perPlace l’unité suivante au dénominateur… ⁻¹ ou /…
squared\squared / \cubedMet au carré / cube l’unité précédente (suffixe)m² / m³
square\square / \cubicMet au carré / cube l’unité suivante (préfixe)m² / m³
latex
\unit{\kilo\gram\per\cubic\metre}   % → kg/m^3 (密度 / density)
\unit{\metre\per\second\squared}     % → m/s^2 (加速度 / acceleration)
\unit{\kilo\gram}                     % → kg
\unit{\kilogram}                      % → kg(定義済みの一語 / predefined)

Pour un “kilogramme” préfixé, écrire le préfixe et l’unité à la suite, \kilo\gram, ou utiliser le mot prédéfini \kilogram, donne le même kg. \cubic\metre est une forme préfixe pour “mètre cube, m³”, et \metre\per\second\squared utilise le suffixe \squared pour “mètre par seconde au carré, m/s²”. L’apparence de \per (puissance négative s⁻¹ ou barre /s) se règle avec l’option per-mode décrite plus bas.

Les styles littéral et interprété peuvent produire le même résultat, mais le style interprété (macro) a des avantages : l’apparence des puissances, préfixes, produits et quotients peut être contrôlée globalement par options, et vous pouvez définir vos propres macros d’unité. Le style littéral est pratique pour écrire vite une unité simple. Dans tous les cas, l’unité est droite et l’espacement correct.

Nombre et unité ensemble : \qty

Dans les documents réels, nombres et unités apparaissent presque toujours ensemble. \qty{…}{…} prend le nombre en premier argument et l’unité en second, puis les compose comme une grandeur. Il combine \num et \unit : la partie nombre s’écrit exactement comme pour \num, la partie unité comme pour \unit. La valeur d’une grandeur est “nombre × unité”, l’espace entre les deux représentant la multiplication ; la commande concrétise cette idée.

latex
重力加速度は \qty{9.81}{\metre\per\second\squared} である。
The acceleration of gravity is \qty{9.81}{\metre\per\second\squared}.

\qty{1.234e5}{\kilo\gram\per\cubic\metre}  % → 1.234 × 10^5 kg/m^3
\qty{2.998e8}{m/s}                          % リテラル単位もそのまま使える

Ici, une espace fine suit 9.81, puis le m/s² droit ; “9.81 m/s²” est donc composé comme une seule grandeur. Vous pouvez passer directement un nombre avec exposant, comme \qty{1.234e5}{…}. La partie unité peut être une macro (\metre\per\second\squared) ou littérale (m/s).

L’apparence de \per se choisit avec l’option per-mode : par défaut, puissance négative (m s⁻¹) ; per-mode=symbol donne une barre (m/s) ; per-mode=fraction construit une fraction empilée (numérateur sur dénominateur). Les options peuvent être données individuellement entre crochets sur chaque commande, ou globalement dans le préambule avec \sisetup{…}.

latex
\qty{1.99}{\per\kilogram}                 % 既定 → 1.99 kg^{-1}
\qty[per-mode = symbol]{1.99}{\per\kilogram}    % → 1.99 /kg
\qty[per-mode = fraction]{1.345}{\coulomb\per\mole}  % → 縦組みの分数 C/mol

% 文書全体に方針を適用 / set a policy document-wide
\sisetup{per-mode = symbol}

Les angles ont leur commande dédiée \ang{…}. \ang{45} donne 45°, et un “format d’arc” avec points-virgules pour degrés, minutes et secondes existe aussi : \ang{45;30;15} compose 45°30′15″. Les composantes peuvent rester vides : \ang{;;1} donne seulement les secondes, et \ang{+10;;} seulement les degrés, avec signe explicite. Les angles ne prennent pas de préfixes SI, on utilise donc cette commande plutôt que \qty.

v2 et v3 : \SI / \si sont les anciens noms

Les commandes \num, \unit et \qty ci-dessus sont les commandes centrales de siunitx version 3. Dans les anciens documents et réponses web, vous rencontrerez plutôt les commandes de version 2. La correspondance est la suivante.

v2 (ancien nom)v3 (actuel)Rôle
SI\SI{9.81}{\metre\per\second\squared}\qty{9.81}{...}Nombre + unité
si\si{\kilo\gram}\unit{\kilo\gram}Unité seule
num\num{1.234e5}\num{1.234e5} (inchangé)Nombre seul
SIrange\SIrange{10}{20}{\metre}\qtyrange{10}{20}{\metre}Plage (10 m à 20 m)
SIlist\SIlist{10;20;30}{\metre}\qtylist{10;20;30}{\metre}Liste (10 m, 20 m, 30 m)

Le manuel officiel indique qu’en v3 les noms des commandes de document ont été rendus “plus descriptifs”, et que \SI, \si, \SIrange et \SIlist restent disponibles mais ne sont pas recommandés pour les nouveaux documents (utilisez plutôt la famille \qty…). Le nom \num ne change pas entre v2 et v3. Si le but est de compiler un ancien document, on peut invoquer le comportement hérité avec \usepackage{siunitx}[=v2], mais pour écrire du neuf, utilisez les \qty, \unit et \num de v3.

La v3 a aussi rendu l’entrée un peu plus stricte. Un préfixe ne peut pas être utilisé seul : il doit accompagner une unité. Les produits s’écrivent avec des commandes dédiées, \numproduct pour les nombres et \qtyproduct pour les grandeurs avec unités. Souvent, les anciens noms d’options sont mappés en interne vers les nouveaux, avec une note dans le journal.

Aligner les nombres dans les tableaux : colonne S

Dans un tableau de nombres, les colonnes sont difficiles à lire si les chiffres ne s’alignent pas. Pour tabular, siunitx fournit le type de colonne S : écrivez S dans la spécification de colonne à la place de c, l ou r, et les nombres de cette colonne sont alignés sur le séparateur décimal. Leur contenu est analysé par le même moteur que \num, donc les valeurs avec exposant (1.2e3) sont aussi traitées correctement.

latex
\begin{tabular}{@{}S@{}}
  \toprule
  {Some Values} \\   % 見出しは波括弧で保護(数値と誤認させない)
  \midrule
      2.3456 \\
     34.2345 \\
     -6.7835 \\
   5642.5   \\
      1.2e3  \\
      e4     \\
  \bottomrule
\end{tabular}

Dans ce tableau, les nombres s’alignent sur le séparateur décimal, 1.2e3 est composé comme 1.2 × 10³, et e4 comme 10⁴. Point important : tout texte, par exemple un en-tête de colonne, doit être entouré d’accolades {…}. Sans la protection de {Some Values}, siunitx essaie de le lire comme une partie d’un nombre et l’alignement se casse.

Pour fixer la disposition des chiffres et placer la colonne comme souhaité, l’option table-format indique à siunitx “chiffres entiers.chiffres décimaux”. S[table-format=2.4] signifie “2 chiffres entiers, 4 décimales”, ce qui stabilise l’aspect de la colonne. Et pour aligner des nombres dans \multicolumn ou \multirow, il existe la version macro \tablenum[table-format=…]{…}, qui remplace la colonne S.

latex
\begin{tabular}{@{}S[table-format=4.1]@{}}
  \toprule
  {Mass / \unit{\gram}} \\
  \midrule
  1234.5 \\
    12.0 \\
     6.7 \\
  \bottomrule
\end{tabular}

Ici, l’en-tête de colonne utilise \unit{\gram} pour afficher “Mass / g” avec une unité droite, tandis que les nombres s’alignent sur 4 chiffres entiers et 1 décimale. Avec la colonne S, vous pouvez répartir les rôles : \qty pour les grandeurs dans le texte, colonne S pour les nombres dans les tableaux, et conserver un style numérique cohérent dans tout le document.