Comment aligner des nombres sur le séparateur décimal ?#

1.  Avec un tableau#

On peut tout d’abord tricher en utilisant un tableau où une virgule sert de séparateur de colonnes. Voici un exemple de cette méthode en mode mathématique avec l’environnement array :

\documentclass{article}
  \usepackage{lmodern} % Caractères plus lisibles
  \pagestyle{empty} % N'affiche pas de numéro de page

\begin{document}
\[
\begin{array}{|r @{,} l|}
   1&2    \\
   233&45 \\
   x&y    \\
\end{array}
\]
\end{document}

2.  Avec l’extension dcolumn#

L’extension dcolumn, de David Carlisle, permet d’aligner les nombres d’un tableau par rapport à leur séparateur décimal. Elle met à cet effet un type de colonne D qui demande trois paramètres à savoir D{⟨séparateur du code⟩}{⟨séparateur affiché⟩}{⟨nombre de décimales⟩} :

  • le ⟨séparateur du code⟩ comme le ⟨séparateur affiché⟩ dans le document final permettent de gérer les variantes linguistiques que sont la virgule, le point ou tout autre symbole vous semblant utile ;

  • le ⟨nombre de décimales⟩ permet de bien définir l’espace qu’occupe le nombre : des nombres avec plus de décimales iront donc déborder dans les autres colonnes.

Voici un exemple avec l’environnement array (qu’on pourrait faire aussi avec l’environnement tabular) pour du français avec deux décimales, en créant au passage notre propre type de colonne basé sur D avec \newcolumntype :

\documentclass{article}
  \usepackage{lmodern} % Caractères plus lisibles
  \pagestyle{empty} % N'affiche pas de numéro de page
  \usepackage{dcolumn}

  \newcolumntype{,}{D{,}{,}{2}} % Notre style de colonne "," basé sur "D"

\begin{document}
\[
\begin{array}{|,|}
1,2    \\
233,45 \\
x,y    \\
10
\end{array}
\]
\end{document}

3.  Avec l’extension siunitx#

Toujours dans un tableau, en dehors du mode mathématique, l’extension siunitx, de Joseph Wright, met à disposition le style de colonne S, aligné sur le marqueur décimal mais aussi les milliers (espace en français, virgule en anglais), comme le montre l’exemple suivant.

\documentclass{article}
  \usepackage{lmodern} % Caractères plus lisibles
  \pagestyle{empty} % N'affiche pas de numéro de page
  \usepackage[locale=FR]{siunitx} % Pour du français

\begin{document}
\begin{tabular}{lS}
 A & 1,23          \\
 B & 123456,123456 \\
\end{tabular}
\end{document}

4.  Avec l’extension numprint#

L’extension numprint, d’Harald Harders, fournit des types de colonnes n et N qui permettent d’aligner les valeurs sur le séparateur décimal (le premier pour un tableau mathématique, le second pour un tableau textuel). Ils prennent tous les deux paramètres n{⟨nombre de chiffre avant la virgule⟩}{⟨nombre de chiffre après la virgule⟩}. En voici un exemple :

\documentclass{article}
  \usepackage{lmodern} % Caractères plus lisibles
  \pagestyle{empty} % N'affiche pas de numéro de page
  \usepackage{numprint}

\begin{document}
\[
\begin{array}{|n{3}{2}|}
1,2    \\
233,45 \\
%x,y   \\ % Restituerait "x  0,0 y" sinon
10
\end{array}
\]
\end{document}