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

1.  Avec un tableau#

Vous pouvez 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[T1]{fontenc}    % Encodage T1 (adapté au français)
  \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 à trois paramètres :

D{⟨séparateur du code⟩}{⟨séparateur affiché⟩}{⟨nombre de décimales⟩}

Ces paramètres sont :

  • 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 (que nous pourrions 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[T1]{fontenc}    % Encodage T1 (adapté au français)
  \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[T1]{fontenc}         % Encodage T1 (adapté au français)
  \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). Ces types de colonne ont le format suivant :

n{⟨nombre de chiffre avant la virgule⟩}{⟨nombre de chiffre après la virgule⟩}

En voici un exemple :

\documentclass{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \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}