Table des matières

Pourquoi les tableaux en LaTeX sont laids?

Depuis longtemps, plusieurs auteurs notent que les exemples de tableaux donnés par Leslie Lamport dans son manuel LaTeX ne sont pas terribles, qu'ils ont mal inspiré les utilisateurs et ont généralisé une mise en forme assez médiocre des tableaux en \LaTeX. Il est parfois même difficile de comprendre le « sens » d'exemples du livre de Lamport.

De fait, des tableaux générés avec \LaTeX peuvent paraître laids si leurs auteurs n'y consacrent pas un minimum d'attention. Voici ici quelques pistes pour éviter cet écueil.

L'espacement vertical

Le problème de l'espacement vertical est évident pour tous et est abordé dans plusieurs extensions. La question « Comment améliorer l'espacement entre les lignes d'un tableau ? » traite de ce sujet.

Le piège des filets

L'utilisation des filets (traits horizontaux et verticaux présents dans les tableaux) est souvent abusive. L'introduction de la documentation (en français) de l'extension booktabs de Simon Fear précise ce point (la version anglaise de la documentation pouvant être plus récente). Voir la question « Comment présenter un tableau comme dans les livres ? » pour un exemple.

Les mêmes règles sont également implémentées dans la classe memoir1).

La position de la légende

Par défaut, \LaTeX a également tort de mettre les légendes sous le tableau. Étant donné qu'un tableau peut s'étendre sur plusieurs pages, les règles traditionnelles de typographie placent la légende au-dessus du tableau. Si vous cherchez à mettre la légende au-dessus du tableau avec la commande \caption, la position finale sera décalée de 10pt vers le bas, et sera trop proche du tableau. Heureusement, l'extension topcapt résout le problème (ci-dessous à droite).

Légende standard

\begin{table}
  \caption{Tableau de maîtres}
  \begin{tabular}{...}
    ...
  \end{tabular}
\end{table}

Légende avec topcapt

\usepackage{topcapt}
...
\begin{table}
  \topcaption{Tableau de maîtres}
  \begin{tabular}{...}
    ...
  \end{tabular}
\end{table}

\documentclass{article}
  \usepackage[width=7cm]{geometry}
  \usepackage[french]{babel}
  \pagestyle{empty}
\begin{document}
\begin{table}
  \caption{Tableau de maîtres}
  \begin{tabular}{lc}
    Manet  & 1832--1883 \\
    Ingres & 1780--1867 \\
    Goya   & 1746--1828 \\
  \end{tabular}
\end{table}
\end{document}

\documentclass{article}
  \usepackage[width=7cm]{geometry}
  \usepackage{topcapt}
  \usepackage[french]{babel}
  \pagestyle{empty}
\begin{document}
\begin{table}
  \topcaption{Tableau de maîtres}
  \begin{tabular}{lc}
    Manet  & 1832--1883 \\
    Ingres & 1780--1867 \\
    Goya   & 1746--1828 \\
  \end{tabular}
\end{table}
\end{document}

Les classes KOMA-script disposent d'une commande similaire, \captionabove ; elles ont également une option de classe tablecaptionabove qui fait en sorte que \caption signifie \captionabove dans les environnements de tableau. L'extension caption peut être chargée avec une option qui a le même effet :

\usepackage[tableposition=top]{caption">caption}

Cela peut aussi être changé après le chargement de l'extension, avec \captionsetup :

\usepackage{caption">caption}
\captionsetup[table]{position=above}

Notez que les deux « options de position » sont différentes : top (en haut) dans un cas, et above (au-dessus) dans l'autre, mais dans ce contexte, elles signifient la même chose.

Faire soi-même le travail de topcapt peut être assez facile : celle-ci se contente en fait de permuter les valeurs des paramètres \LaTeX \abovecaptionskip (valeur par défaut 10pt) et \belowcaptionskip (valeur par défaut: 0pt). Voici donc un exemple de modification… supposant que les valeurs n'ont pas été modifiées par ailleurs :
\begin{table}
  \setlength{\abovecaptionskip}{0pt}
  \setlength{\belowcaptionskip}{10pt}
  \caption{Example table}
  \begin{tabular}{...}
    ...
  \end{tabular}
\end{table}

Source: The design of tables

1)
Il existe un projet de traduction de la documentation de Memoir.