Les tableaux sous LaTeX

-nikopol-

Dans cet article vous découvrirez comment insérer un tableau dans un document LaTeX. Pour un débutant, le code pour générer un tableau peut paraître complexe, mais avec un peu d'habitude et d'entraînement, vous vous apercevrez très vite et comme toujours que finalement vous réaliserez vos tableaux très facilement. Vous découvrirez tout d'abord comment faire un tableau simple, puis comment gérer la taille des cellules et la largeur de vos tableaux. Commentez

- Titre : Les tableaux sous LaTeX

- Auteur : -nikopol-

- Parution : 28 avril 2014

- Mise à jour : 9 novembre 2019

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 -nikopol-. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Les tableaux simples

- I-A. Les filets horizontaux

- I-B. Les filets verticaux

- I-C. Les descripteurs de colonne

- II. Taille et espacement

- II-A. Fixer la taille d'une cellule

- II-B. Fixer la largeur d'un tableau.

- II-C. Tableaux sur plusieurs pages

- III. Conclusion

I - Les tableaux simples

Pour insérer un tableau, aucune extension n'est nécessaire, il faut utiliser l'environnement tabular déjà défini par LaTeX. On commencera donc par \begin{tabular}et bien évidemment, on finira par \end{tabular}. Compilez le code suivant et observez le rendu.

\documentclass{article}
\begin{document}
\begin{tabular}{cc}
cellule 1 & cellule 2 \\
cellule 3 & cellule 4\\
\end{tabular}
\end{document}

Vous venez de réaliser votre premier tableau. Quelques explications sont tout de même nécessaires :

- l'environnement tabular prend en argument les descripteurs de colonne, ici -cc- pour deux colonnes centrées (on y reviendra plus tard) ;

- ensuite, on remplit les cellules qui doivent être séparées par une esperluette (« et » commercial) & ;

- chaque ligne du tableau se termine par \\ pour passer à la ligne suivante.

I-A - Les filets horizontaux

Le tableau précédent extrêmement simple ne possède pas de filet horizontal. Compilez le code suivant et observez le rendu.

\documentclass{article}
\begin{document}
\begin{tabular}{cc}
\hline
cellule 1 & cellule 2 \\
\hline
cellule 3 & cellule 4\\
\hline
\end{tabular}
\end{document}

La commande \hline sert à insérer une ligne horizontale de la largeur du tableau.

I-B - Les filets verticaux

Pour insérer des filets verticaux, il faut utiliser le caractère | (tube ou pipe en anglais) que l'on obtient par la combinaison de touches alt gr + 6. Ce caractère est à insérer dans l'argument de tabular, entre les descripteurs de colonne (il est possible d'en mettre plusieurs).

\documentclass{article}
\begin{document}
\begin{tabular}{|c||c|}
\hline
cellule 1 & cellule 2 \\
\hline
cellule 3 & cellule 4\\
\hline
\end{tabular}
\end{document}

I-C - Les descripteurs de colonne

Comme vu précédemment en argument de tabular, il faut ajouter les descripteurs de colonne et le nombre de colonnes que l'on souhaite. On ajoutera donc autant de descripteurs que l'on souhaite de colonnes.

\begin{tabular}{|c|c|l|r|}
\hline
quatre colonnes &des cellules centr\'ees & align\'ees \`a gauche &ou \`a droite \\
\hline
centr\'ee & centr\'ee & \`a gauche & \`a droite \\
\hline\hline
un & deux & trois & quatre\\
\hline
\end{tabular}

Vous remarquerez qu'il y a quatre descripteurs de colonne en argument de tabular. (on obtient donc un tableau à quatre colonnes) : deux descripteurs c, et deux nouveaux l et r.

- c pour « center », le contenu des deux premières colonnes sera centré.

- l pour « left », le contenu de la troisième cellule sera justifié à gauche.

- r pour « right », le contenu de la quatrième colonne sera justifié à droite.

Lorsque l'on a plusieurs fois le même type de colonnes, il peut être intéressant d'utiliser la syntaxe suivante pour la déclaration des descripteurs : *{<nb de colonnes>}{<colonne>}. Ainsi, |*{6}{p{3cm}|} et équivalent à {|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|p{3cm}|}.

II - Taille et espacement

II-A - Fixer la taille d'une cellule

Un des premiers problèmes rencontrés concerne la taille des cellules. En effet, les descripteurs « c », « l » et « r » ne permettent pas de retour à la ligne. La largeur des colonnes est celle de la plus grande ligne de cette colonne. Ce qui peut très vite devenir inesthétique et provoquer des débordements.

\begin{tabular}{|c|c|}
\hline
Une cellule contenant un texte tr\`es long & Une autre cellule contenant un texte encore plus long, beaucoup, beaucoup plus long   \\
\hline
\end{tabular}

Comme vous pouvez le voir, le code précédent provoque un dépassement du tableau de la feuille, vous obtiendrez aussi un avertissement de LaTeX, vous indiquant la taille de ce déplacement.

Pour résoudre ce problème, on va utiliser le descripteur de colonne p{<taille>} où <taille> sera la longueur souhaitée de la colonne dans une unité reconnue par LaTeX.
Ainsi, le tableau précédent utilisant p{3cm} va donner :

\begin{tabular}{|p{3cm}|p{3cm}|}
\hline
Une cellule contenant un texte tr\`es long & Une autre cellule contenant un texte encore plus long, beaucoup, beaucoup plus long   \\
\hline
\end{tabular}

Les deux colonnes ont maintenant une largeur de trois cm, mais force est de constater que ce résultat n'est pas du meilleur effet, notamment les espaces entre les mots qui sont trop grands. D'ailleurs, vous pouvez remarquer en compilant ce code que LaTeX vous avertit gentiment que le texte dans les cellules n'est pas acceptable typographiquement.

Heureusement la solution est très simple. Les colonnes de type « p » acceptent les commandes suivantes :

- \centering : contenu de la cellule centrée ;

- \raggedright : en drapeau à droite, c'est-à-dire le texte collé à gauche ;

- \raggedleft : en drapeau à gauche, c'est-à-dire le texte collé à droite ;

- \par : changement de paragraphe.

\begin{tabular}{|p{3.5cm}|p{3.5cm}|}
\hline
\centering Une cellule contenant un texte tr\`es long, beaucoup, beaucoup trop long & \raggedright  Une cellule contenant un texte tr\`es long, beaucoup, beaucoup trop long \tabularnewline
\hline
\raggedleft Une cellule contenant un texte tr\`es long, beaucoup, beaucoup trop long&  Une cellule contenant\par un texte tr\`es long,\par  beaucoup trop long  \tabularnewline
\hline
\end{tabular}

Les commandes telles que \raggedleft et \raggedright redéfinissent \\, il va donc falloir utiliser \tabularnewline à la place de \\

II-B - Fixer la largeur d'un tableau.

Bien qu'il soit préférable de laisser LaTeX s'occuper de la mise en page, il est parfois nécessaire de devoir fixer la largeur d'un tableau. Pour cela il faut utiliser l'extension tabularx. Il faut donc ajouter au préambule .\usepackage{tabularx}.

L'environnement tabularx fonctionne de la même façon que l'environnement tabular, à ceci près qu'il introduit un paramètre supplémentaire (la longueur totale du tableau) et un nouveau descripteur de colonne, qui prendra la largeur restante du tableau après que LaTeX ait affecté la longueur nécessaire aux autres colonnes (« c », « l », « r », « p »…).

Par exemple, pour la déclaration suivante : \begin{tabularx}{<longueur>}{|c|X|l|} :

- <longueur> sera la longueur totale du tableau ;

- X prendra la longueur restante après que les colonnes « c » et « l » seront remplies.

<longueur> peut prendre toutes les unités de longueur définies par LaTeX, ainsi que les commandes \textwidth ou \linewidth, pour avoir un tableau de la longueur totale de la ligne.

Ainsi le code suivant :

\documentclass{article}
\usepackage{tabularx}
\begin{document}
\noindent
\noindent\begin{tabularx}{\linewidth}{|c|X|l|}
\hline
Du texte centr\'e & ici la colonne s'adapte \`a la longueur de la ligne restante & du texte align\'e \`a gauche\\
\hline
4&5&6\\
7&\centering 8&9\\
\hline
\end{tabularx}
\end{document}

nous donne un tableau de la largeur de la ligne :

Si l'environnement tabularx ne se trouve pas dans un autre environnement de mise en page, il ne faut pas oublier de supprimer l'indentation avec la commande \noindent sinon le tableau débordera forcément de la page.

II-C - Tableaux sur plusieurs pages

Les environnements tabular et tabularx ne permettent pas d'obtenir des tableaux s'étendant sur plusieurs pages. Pour insérer un long tableau, il est possible d'utiliser l'extension longtable et donc ajouter dans le préambule \usepackage{longtable}. La syntaxe et les descripteurs de colonne sont les mêmes que pour l'environnement tabular. L'extension longtable ajoute des options, selon ce que l'on souhaite obtenir. Il est possible, par exemple de :

- déclarer la première ligne du tableau :

\hline
Colonne 1 & Colonne 2 & Colonne 3 \endfirsthead
\hline

- déclarer la première ligne de chaque page :

\hline
Colonne 1 & Colonne 2 & Colonne 3 \endhead
\hline

- déclarer la dernière ligne du tableau :

\hline
Colonne 1 & Colonne 2 & Colonne 3 \endlastfoot
\hline

- Déclarer la dernière ligne de chaque page :

\hline
Colonne 1 & Colonne 2 & Colonne 3 \endfoot
\hline

Par exemple :

\documentclass{article}
\usepackage{longtable}
\begin{document}
\begin{longtable}{|c|c|c|}
\hline
Colonne 1 & Colonne 2 & Colonne 3 \endhead
\hline
1&2&3\\
4&5&6\\
7&8&9\\
1&2&3\\
4&5&6\\
7&8&9\\
1&2&3\\
4&5&6\\
7&8&9\\
1&2&3\\
4&5&6\\
7&8&9\\
\hline
\end{longtable}
\end{document}

Pour plus d'informations sur ces options, vous pouvez vous reporter à la documentation de l'extension longtable.

III - Conclusion

Vous savez maintenant réaliser un tableau simple sous LaTeX, bien évidemment il y a de nombreux moyens d'améliorer ces tableaux ainsi que de nombreuses façons de les personnaliser. Pour cela, lisez le chapitre suivant : améliorations et personnalisations des tableaux.