Bases de tabular

La base de la composition des tableaux est l’environnement tabular. Dans \begin{tabular}{ccc}, le {ccc} est une spécification de colonnes qui déclare d’avance le nombre de colonnes et leur alignement ; dans le corps, les cellules sont ensuite séparées par & et chaque ligne se termine par \\. Les filets horizontaux se tracent avec \hline. Cette page présente ces trois conventions, les spécificateurs de colonnes de base l, c, r et p{width}, ainsi que la différence entre tabular, qui construit le contenu du tableau, et l’environnement flottant table, qui le place comme tableau numéroté avec légende.

L’environnement tabular

tabular est l’environnement qui compose un tableau de lignes et de colonnes. Son trait distinctif est que \begin{tabular} prend juste après lui un argument obligatoire : la spécification des colonnes. Écrire \begin{tabular}{ccc} signifie « trois colonnes centrées », et le nombre ainsi que l’alignement déclarés ici fixent l’ossature du tableau entier. Chaque ligne du corps s’écrit ensuite comme autant de cellules reliées par &.

Dans le tableau, trois symboles ont un rôle. & (esperluette) est le séparateur de colonnes entre cellules d’une même ligne. \\ (deux barres obliques inverses) est le terminateur de ligne. Et \hline trace à cet endroit un filet horizontal sur toute la largeur du tableau. Le \\ après la toute dernière ligne peut être omis, mais pour tracer un filet sous cette dernière ligne, il faut la fermer avec \\, puis placer \hline.

latex
\begin{tabular}{ccc}
  \hline
  A & B & C \\
  D & E & F \\
  \hline
\end{tabular}

Cet exemple compose un tableau de trois colonnes et deux lignes, encadré en haut et en bas par un filet horizontal. Le contenu de chaque cellule (A à F) est centré, conformément au c de la spécification. Les espaces autour de & sont ignorés, vous pouvez donc en ajouter dans la source pour aligner visuellement les cellules.

Notez que \begin{tabular} accepte aussi, avant la spécification des colonnes, un argument optionnel de position verticale entre crochets : \begin{tabular}[t]{…} aligne le haut du tableau, [b] son bas, sur la ligne de base environnante. Par défaut, c’est le centre vertical du tableau qui s’aligne sur la ligne.

Les spécificateurs de colonnes de base

L’argument de spécification des colonnes s’écrit avec une lettre par colonne. Il y a quatre bases. l aligne à gauche, c centre, r aligne à droite ; chacune donne à la colonne la largeur naturelle de son contenu. Ces colonnes ne se replient pas : si le contenu d’une cellule est long, la colonne s’étire jusqu’à la largeur de cette ligne unique, et le tableau peut dépasser la page.

Le quatrième, p{width}, fonctionne autrement. C’est une colonne composée comme une boîte de paragraphe (parbox) de largeur donnée : quand son contenu dépasse cette largeur, il se replie automatiquement sur plusieurs lignes. Utilisez p{width} pour les colonnes contenant du texte long. La largeur peut être absolue, comme p{5cm}, ou relative au texte, comme p{0.3\linewidth}. Par défaut, le contenu d’une colonne p est aligné en haut et justifié.

SpécificateurAlignementRepli ?
lAligné à gaucheNon (largeur naturelle)
cCentréNon (largeur naturelle)
rAligné à droiteNon (largeur naturelle)
p{幅}Haut, justifiéOui (à la largeur donnée)

Les spécifications plus élaborées — \multicolumn pour les cellules couvrant plusieurs colonnes, *{n}{…} pour répéter des colonnes, et les types m{width} (centré verticalement), b{width} (bas) ainsi que les préfixes >{…} du package array — sont traitées dans la page « spécificateurs de colonnes en détail ». Avec seulement l, c, r et p{width}, on peut déjà construire la plupart des tableaux.

Filets — horizontaux et verticaux

Les filets horizontaux se tracent avec \hline. Placé entre deux lignes, ou en haut et en bas, il trace une ligne sur toute la largeur du tableau. Deux à la suite, \hline\hline, donnent deux filets parallèles, un double filet. Pour tracer seulement sur certaines colonnes au milieu du tableau, utilisez \cline avec une plage de colonnes, comme \cline{2-3}.

Les filets verticaux se créent en insérant | (barre verticale) dans la spécification des colonnes. Écrire {|l|c|r|} place des lignes verticales aux bords extérieurs et entre les trois colonnes ; avec \hline, chaque cellule est encadrée dans une grille. Utilisez || pour un double filet vertical.

latex
\begin{tabular}{|l|c|r|}
  \hline
  左 & 中央 & 右 \\
  \hline
  1 & 2 & 3 \\
  \hline
\end{tabular}

Cela dit, la convention est d’éviter les filets trop nombreux. Les filets verticaux et les doubles filets sont particulièrement déconseillés en typographie professionnelle. L’auteur de booktabs dit clairement « never use vertical rules, and never use double rules » ; les tableaux d’articles suivent en général une mise en page sobre avec seulement quelques filets horizontaux. La conception de tableaux lisibles et l’idiome \toprule / \midrule / \bottomrule sont traités en détail dans la page « Filets et tableaux de qualité publication ».

Fins de ligne et espacement des lignes

Le terminateur de ligne \\ prend un argument optionnel. Ajouter une longueur entre crochets, comme \\[2pt], insère un espace vertical supplémentaire sous cette ligne ; une valeur négative resserre. Utilisez-le quand un filet semble trop proche du texte ou lorsque vous voulez de l’air entre les lignes.

Notez que \\ est fondamentalement une commande de saut de ligne : au-delà des lignes de tableau, elle sert de même « séparateur de lignes » dans les matrices mathématiques et dans les environnements d’alignement comme align. La logique « séparer les colonnes avec &, passer à la ligne avec \\ » se transpose donc directement des tableaux aux mathématiques alignées.

Pour augmenter uniformément la hauteur de toutes les lignes, modifiez le multiplicateur avec \renewcommand{\arraystretch}{1.3}. L’espace entre colonnes, 6 pt de chaque côté par défaut, est contrôlé par la longueur \tabcolsep. Ces réglages dimensionnels plus fins sont aussi présentés dans les pages « spécificateurs de colonnes en détail » et « filets et tableaux de qualité publication ».

tabular et l’environnement table

On les confond souvent, mais tabular et table sont deux choses entièrement différentes. tabular compose le tableau lui-même, c’est-à-dire le contenu des lignes et des colonnes, et peut apparaître n’importe où en mode texte : au milieu d’un paragraphe, dans un élément de liste, dans une légende de figure, voire dans une note de bas de page tant que l’on est hors de $…$. Seul, tabular n’a ni légende, ni numéro, ni contrôle de placement.

À l’inverse, l’environnement table est un flottant que l’on place autour d’un tabular. Il fournit un titre avec numéro automatique via \caption{…} (« Tableau 1 », etc.), des références croisées via \label{…} et \ref{…}, ainsi que des spécificateurs de placement comme [htbp] qui laissent LaTeX décider où placer le tableau sur la page. Quand un tableau est grand et risque de tomber sur un saut de page, en faire un flottant permet à LaTeX de le déplacer à un endroit approprié. L’usage complet de table (légendes, numérotation, placement) est réservé à une autre page.

document.tex
\begin{table}[htbp]
  \centering
  \caption{四半期ごとの売上}
  \begin{tabular}{lrr}
    \hline
    四半期 & 売上 & 前年比 \\
    \hline
    Q1 & 1{,}200 & +5\% \\
    Q2 & 1{,}350 & +8\% \\
    \hline
  \end{tabular}
\end{table}

Dans cet exemple, le table extérieur prend en charge la légende numérotée « Table 1: Quarterly sales » et le placement, tandis que le tabular intérieur compose le contenu. \centering centre le tableau horizontalement. L’idée est la répartition des rôles : contenu dans tabular, titre et placement dans table. Un tabular seul suffit à composer un tableau, mais pour le référencer comme « tableau N » dans un article ou un rapport, enveloppez-le dans un table.

Un exemple complet

Enfin, voici un tabular qui combine les éléments ci-dessus : un libellé aligné à gauche en colonne 1, une colonne p{width} qui se replie en colonne 2, et un nombre aligné à droite en colonne 3.

latex
\begin{tabular}{l p{5cm} r}
  \hline
  項目 & 説明 & 価格 \\
  \hline\hline
  りんご & 蜜入りの大玉。贈答にも使われる人気の品種です。 & 380 \\
  みかん & 甘くて手で剥ける小ぶりの柑橘。 & 120 \\
  \hline
\end{tabular}

Ce tableau comporte trois colonnes. La colonne 1 (« Item ») est alignée à gauche à sa largeur naturelle, et la colonne 3 (« Price ») est alignée à droite. La colonne 2 (« Description ») est une colonne p de 5cm, donc le texte long se replie automatiquement à 5cm et cette seule cellule devient multilignes ; la hauteur de ligne augmente en conséquence. Un double filet \hline\hline se trouve sous l’en-tête, et des filets simples \hline ferment le haut et le bas. Mettre le même long texte dans une colonne l ou r l’étirerait horizontalement sans repli : c’est la différence décisive avec p{width}.