SIunit est mort, vive SIunitx !

Tout comme subfig est venu remplacer le fameux package subfigure, SIunitx se revendique comme étant le successeur de SIunitTour d’horizon.

Quelques options avant de commencer

Bien entendu, il vous faudra charger le package siunitx dans le préambule. Je vous recommande de plus l’option « abbreviations », qui va permettre de charger par défaut tout un tas d’abréviations d’unités :

\usepackage[load-configurations = abbreviations]{siunitx}

De plus, pour respecter la typographie française (virgule comme séparateur des décimales et espace fine pour les milliers), vous pouvez précharger la configuration française :

\sisetup{locale = FR,
detect-all,
}

L’option « detect-all » permettra de garder la même fonte que dans le texte.

Écriture des unités

Bien évidemment, siunitx reprend les fonctionnalités de siunit, mais la syntaxe change un peu.

Nombre + unité (cas simple)

\SI{25000}{\milli\meter}

Nombre + unité

Nota : rien ne nous oblige ici à utiliser les macros \milli et \meter simplement pour affichers la lettre « m », donc la commande suivante est strictement équivalente :

\SI{25000}{mm}

Vous remarquerez que le package a le bon goût de mettre en forme le nombre automatiquement : il ajoute une espace fine entre les milliers.

Nombre + unité (cas plus complexe)

Vous l’aurez compris, les plupart des multiplicatifs et des unités élémentaires existent déjà. Reste à combiner toutes ces unités élémentaires.

Exposants

Exemple avec les « m² ». Les deux commandes suivantes sont équivalentes :

\SI{215}{\square\meter}
\SI{215}{\meter\squared}

Unités inverse

Il suffit de placer la commande \per pour passer l’exposant en négatif.

\SI{210}{\km\per\hour}

Unités avec exposant négatif

\SI{300}{\watt\per\square\meter}

Unités avec exposant négaitf (2)

Nota : dans le premier exemple, si on avait voulu empêcher l’utilisation d’exposants, c’est-à-dire utiliser « / » pour l’unité réciproque :

\SI[per-mode=symbol]{210}{\km\per\hour}

Exposants persos

Par défaut, siunitx fournit des exposants jusque 3 (« cubic »). Vous pouvez bien entendu passer une unité à n’importe-quel exposant avec la commande suivante :

\tothe{mon-exposant-perso}

Puissance de 10

Outre les multiples habituels (\kilo, \mega, \pico etc.), vous pouvez utiliser les puissances de 10 directement dans la valeur donnée :

\SI{6.022e23}{\per\mol}

Puissance de 10

 

 

Unités seules

Grosse nouveauté par rapport à l’ancien package, il est possible de n’afficher que l’unité, avec la même syntaxe que précédemment, mais en minuscule :

\si{\newton\meter}

Unité seule

Nota : pour définir le point centré comme séparateur des unités :

\sisetup{inter-units-product=\ensuremath{\cdot}}

Angles

\ang{15}

Écriture des angles

 

Écriture des nombres

Il est possible de donner des valeurs adimensionnelles, tout en profitant de la mise en forme automatique :

\num{24415.15625}

Grand nombre à virgule

 

On peut même passer plusieurs valeurs en même temps, par exemple pour indiquer des dimensions :

\num{10240x7680}

Nombres multiples

 

Listes et gammes

SIunitx offre la possibilité de donner des gammes de valeur :

\SIrange{10}{25}{\liter}

Gamme de valeur

 

Par défaut, le package va placer l’unité pour les deux bornes, et utiliser « to » comme séparateur. Pour obtenir le résultat ci-dessus, il nous faut donc :

\sisetup{
range-phrase=--,     % Utilise le tiret court pour dire "de... à"
range-units=single,  % Cache l'unité sur la première borne
}

De même, on peut définir une liste exhaustive :

\SIlist{0;8;16;32;64}{\mega b}

Liste de valeurs

 

Là encore, il nous faut personnaliser un peu les options pour traduire le « and » par défaut :

\sisetup{
list-final-separator= { et },   % Place "et" à la fin de la liste
list-units=single               % L'unité ne s'affiche qu'au dernier élément
}

Définir ses propres unités

Si vous avez des unités à rallonge, vous serez peut-être tentés de créer des raccourcis. Exemple pour la conductance :

\DeclareSIUnit{\cond}{\watt\per\kelvin\per\meter\squared}

Il vous suffira ensuite d’utiliser l’unité \cond pour afficher vos watt-par-kelvin-et-par-mètre-carré

Pour aller plus loin

Une seule référence : la documentation du package bien sûr !

 

 

Bonne compilation !

SIunit est mort, vive SIunitx  !
4.6 (91.11 %) 9 votes
  • quark67

    Bonjour, comme le montre la copie d’écran correspondant à la commande num{10240×7680} il y a un problème avec siunitx (du moins à la date actuelle, 4 décembre 2014) : par défaut, il n’y a pas de séparation des milliers lorsque le nombre est composé de 4 chiffres, comme par exemple 7680, qui devrait être affiché 7 680. Ceci est contraire aux règles typographiques françaises (néanmoins c’est toléré au Canada francophone, sans doute sous l’influence anglaise qui le permet également).

    En conséquence, il faut rajouter dans le préambule sisetup{group-minimum-digits=4} (ou sisetup{sepfour} si la version 1 est encore employée).

    • Salut !
      Effectivement, j’avais noté cette subtilité sur le format de nombre, mais je m’en étais contenté. A priori, les anglo-saxons préfèrent la virgule pour séparer les milliers (y compris au canada ?). Après, se pose aussi la question des séparateurs après la virgule…
      Il y a cette page qui résume les principaux standards selon la langue : https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html
      Merci pour ton bout de code !

  • Pingback: Configurer siunitx une bonne fois pour toutes | Jerry Magnin()

  • Pierre

    Bonjour,

    Déjà merci pour ce blog plein d’astuces pour latex ! c’est bien pratique. Je me permets juste de faire une petite remarque/mise à jour concernant l’option inter-units-separator=$cdots$ cette option est maintenant remplacée par inter-units-product (cf. documentation) et le mieux est de mettre cette valeur égale à ensuremath{{}cdot{}} (la command ensure permettant d’utiliser la commande SI en mode maths et text).

    • Merci pour ces précisions ! Je corrige ça de suite.

  • Pingback: Principales règles typographiques pour les articles scientifiques | Le Blog de Dorian()