Première partie : les tableaux simples avec l'environnement tabular

Fleuron

Ton premier tableau

La réalisation de tableaux se fait au moyen de l'environnement tabular. On n'a pas besoin de charger un package, c'est compris dans LaTeX. Un exemple valant mieux qu'un long discourt, voici un tableau, les explications suivent:

\begin{tabular}{|l|c||rc|||}
\hline
Première ligne & colonne 2 & colonne 3 & colonne 4\\
\hline \hline
aligné à gauche & centré & aligné à droite & 4 \\
ligne3 &&colonne 3& 4\\
\hline
\end{tabular}

Créer les colonnes

Comme tous les environnements LaTeX tu commences par un begin \begin{tabular} et tu finis par un end \end{tabular}.

Maintenant il te faut définir le nombre et le type de colonnes, c'est le rôle de la commande {|l|c|r|} qui suit le \begin{tabular}.

Dans cet exemple tu crées 3 colonnes : avec l, pour left, donc la première colonne est justifiée gauche, c (center) une 2e colonne centrée, r (right) une 3e colonne justifiée droite.

Les | (pipe en anglais) obtenus par AltGr 6 (AltGr b en bépo) dessinent des traits verticaux séparant les colonnes. Ils ne sont pas obligatoire, dans ce cas, pas de lignes verticales et plusieurs accolés donnent des lignes verticales multiples. {lcr} donnera un tableau sans filets, {|l|c||r|} dans ce cas, les 2e et 3e colonnes sont séparées par un double trait vertical.

Créer les lignes

textecolonne1 & textecolonne2 &textecolonne3 & textecolonne4 \\

Permet de remplir une ligne du tableau. & sépare les colonnes et le \\ final indique la fin de la ligne.

Attention il doit y avoir nombreDeColonne – 1 & (il n'y en a pas ni au début de la ligne, ni à la fin) sous peine d'erreurs de compilation.

Une cellule vide est note && ou & &, comme la 3e ligne 2e colonne de notre premier exemple.

Remarques, que les espaces juste avant et juste après les & sont purement inutiles, mais ils facilitent la lecture.

&un mot&

et

& un mot &

on le même résultat, les espaces ajoutées, n'ont aucune influence sur l'espacement entre le texte et les filets.

\hline trace une ligne horizontale sur toute la largeur du tableau. Il se comporte comme les |.

1er problème : la taille des tableaux

La première difficulté que tu vas rencontrer, concerne la taille du tableau. En effet tabular dimensionne la taille de la colonne à la taille de la plus grande ligne et très vite on déborde de la page, d'autant plus que {lcr} ne reconnait pas les sauts de ligne.

\begin{tabular}{|l|l|}
\hline
Première ligne longue, très longue, trop longue& colonne 2\\
\hline
ligne2 &rien\\
\hline
\end{tabular}

Même la commande \par n'est pas reconnue et retourne une erreur de compilation.

La solution : p{valeurUnité}

Cette commande permet de fixer la largeur de la colonne. Elle reconnait toutes les unités comprises par LaTeX (voir fiche Unités \& longueurs). Le même tableau que précédemment avec une première colonne fixée à 3 cm.

\begin{tabular}{|p{3cm}|l|}
\hline
Première ligne longue, très longue, trop longue& colonne 2\\
\hline
ligne2 &rien\\
\hline
\end{tabular}

Cette commande ne produit que des colonnes justifiées, ce qui peut avoir comme dans l'exemple précédent des effets désastreux. Tu as plusieurs façons de remédier à cela : l'utilisation de la commande \par (saut de paragraphe, reconnue dans les colonnes p), ou les commandes \centering \raggedright et \raggedleft.

\begin{tabular}{|p{3cm}|l|}
\hline
Première ligne longue,\par très longue, trop longue& colonne 2\\
\hline
ligne2 &rien\\
\hline
\end{tabular}

\begin{tabular}{|p{3cm}|l|}
\hline%
\centering Première ligne longue, très longue,trop longue& colonne 2\\
\hline
ligne2 &rien\\
\hline
\end{tabular}

Je te laisse essayer les commandes \raggedright et \raggedleft.

Un raccourci *{nb}{type}

Pour éviter de taper plusieurs fois la même définition de colonne, il existe la commande *{nombreColonnes}{formatColonne}.

{|*{5}{p{2cm}|}}

est équivalent à

{|p{2cm}|p{2cm}|p{2cm}|p{2cm}|p{2cm}|}

et

{|*{3}{c|}*{2}{p{4cm}|}l|*{3}{p{2cm}|}}

est équivalent à

{|c|c|c|p{4cm}|p{4cm}|l|p{2cm}|p{2cm}|p{2cm}|}

Remplacer les traits verticaux : @{texte}

La commande @{texte} permet de remplacer les lignes verticales par la valeur de texte. Voici un exemple où la séparation entre les 2e et 3e colonne est constituée d'une flêche $\rightarrow$ = → et la séparation entre les 3eet 4eest un téléphone \ding{37} (\ding est une commande du package pifont qui permet d'afficher les symboles Dingbats, il faut charger le package : \usepackage{pifont}).

\begin{tabular}{|l@{$\rightarrow$}c@{\ding{37}}l|}
\hline
Robert Bidochon&RB&03.03.03.03.01\\
\hline
Ginette Lacaille&GL&02.02.02.02.01\\
\hline
\end{tabular}

Attention comme tu peux le remarquer sur l'exemple pécédent, la commande @{texte} supprime les espaces avant et après le trait de séparation.

\begin{tabular}{|l|l|l|}
\hline
Robert Bidochon&RB&03.03.03.03.01\\
\hline
Ginette Lacaille&GL&02.02.02.02.01\\
\hline
\end{tabular}

\begin{tabular}{|l@{|}c@{|}l|}
\hline
Robert Bidochon&RB&03.03.03.03.01\\
\hline
Ginette Lacaille&GL&02.02.02.02.01\\
\hline
\end{tabular}

L'avantage c'est que tu peux utiliser cette méthode pour aligner des chiffres sur la décimale :

\begin{tabular}{r@{,}l}
4&14159\\
+96&2\\
\hline
100&34159\\

Des traits horizontaux partiels = \cline

\cline{colonneDébut-colonneFin}, trace des lignes partielles : \cline{1-1} trace une ligne uniquement dans la 1er colonne, \cline{2-4} du début de la colonne 2 à la fin de la colonne 4.

\begin{tabular}{|l|l|l|l|}
\hline
case n°1&case n°2&case n°3&case n°4\\
\cline{1-1}
case n°5&case n°6&case n°7&case n°8\\
\cline{2-4}
case n°9&case n°10&case n°11&case n°12\\
\cline{1-2}\cline{4-4}
case n°13&case n°14&case n°15&case n°16\\
\hline
\end{tabular}

Modifier l'espace entre les colonnes

\tabcolsep correspond à la valeur de l'espace avant ou après un | (donc la moitié de l'espace inter-colonne). Tu le modifies à l'aide des commandes \setlength ou \addtolength (voir la fiche sur « LaTeX, les unités & les longueurs»). Sa valeur par défaut est de 6 pt.

\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}

le même tableau avec une valeur de \tabcolsep de 12pt.

{\setlength{\tabcolsep}{12pt}
\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
\hline
case 4&case 5&case 6\\
\hline
\hline
\end{tabular}
}

Modifier l'épaisseur des traits

\arrayrulewidth correspond à l'épaisseur d'un | , d'un \hline ou d'un \cline. Tu le modifies à l'aide des commandes \setlength ou \addtolength. Sa valeur par défaut est de 0.4 pt.

Attention cette commande affecte toutes les lignes d'un tableau on verra dans une autre fiche comment ne modifier qu'une seule ligne.

\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}

Le même tableau avec une valeur de \arrayrulewidth de 2pt.

{\setlength{\arrayrulewidth}{2pt}
\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}
}

Modifier l'espacement entre 2 traits

Il te faut modifier la valeur de \doublerulesep pour écarter 2 || ou 2 \hline consécutifs. Sa valeur par défaut est de 2 pt.

Attention cette commande affecte toutes les lignes d'un tableau on verra dans une autre fiche comment ne modifier qu'une seule ligne.

\begin{tabular}{|c||c||c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}

Le même tableau avec une valeur de \doublerulesep de 10pt.

{\setlength{\doublerulesep}{10pt}
\begin{tabular}{|c||c||c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}
}

Modifier l'espacement entre 2 lignes

Il te faut modifier la valeur de \arraystretch pour augmenter l'espacement entre 2 lignes. La valeur de \arraystretch est un coefficient multiplicateur : 0.5 diminue l'espace de moitié, 2.0 le double. Sa valeur par défaut est de 1.0.

Attention cette commande se modifie à l'aide de \renewcommand.


\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}

Le même tableau avec une valeur de \arraystretch de 2.0.

{\renewcommand{\arraystretch}{2}
\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}
}

Fusion de colonnes

La fusion de colonnes se fait avec la commande \multicolumn{nombCol}{alignement}{contenu} où alignement vaut l,c,r. Tu n'es pas obligé de respecter le choix que tu as fait à l'initialisation des colonnes ; regarde le comportement des cellules n°1 et n°10.

\begin{tabular}{|l|l|l|l|}
\hline
\multicolumn{2}{|r|}{Cellules fusionnées}&case n°3&case n°4\\
\hline
case n°5&\multicolumn{2}{l|}{Cellules fusionnées}&case n°8\\
\hline
case n°9&\multicolumn{3}{|c|}{Cellules fusionnées}\\
\hline
case n°13&case n°14&case n°15&case n°16\\
\hline
\end{tabular}

Attention aux | dans multicolumn qui peuvent tracer 2 traits comme dans la case n°10, il vaut mieux procéder comme pour la case n°6.

Conclusion

Voilà on vient de voir toutes les commandes associées à l'environnement tabular. Il permet de réaliser pas mal de tableaux. Mais bien sûr c'est pas suffisant, et de nombreux packages existent pour réaliser des tableaux plus complexes. Dans d'autres fiches nous aborderons les packages multirow pour fusionner les lignes, supertabular ou longtable pour faire des tableaux qui s'étendent sur plusieurs pages, colortbl pour colorier les cellules. . .