Je ne sais pas vous, mais perso, je trouve un peu chiant de créer des tableaux en LaTeX, surtout s’il est complexe… Je suis toujours obligé de rechercher à droite et à gauche, et même au milieu, où trouver telle ou telle commande.
C’est la raison pour laquelle j’ai envie de réunir dans cet article tout ce qu’il faut savoir sur les tableaux. Projet ambitieux qui, je présume, s’enrichira au fil du temps…
Les bases des tableaux en LaTeX
Je ne vais pas tout reprendre, car il existe une page assez complète ici :
Les dimensions de tableaux en LaTeX
Marges des cellules
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} Sans redéfinir les marges : \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d\\ \hline \end{tabular} \bigskip En redéfinissant les marges: \setlength{\tabcolsep}{1cm} \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d\\ \hline \end{tabular} \end{document}
Le package cellspace
Il permet de définir des marges verticales par défaut pour éviter que du texte colle aux traits horizontaux.
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{amsmath} \usepackage{cellspace} \setlength{\cellspacebottomlimit}{5pt} \setlength{\cellspacetoplimit}{5pt} \setlength{\parindent}{0pt} \begin{document} Sans utiliser \textit{cellspace} : \begin{tabular}{|*4{c|}} \hline $\dfrac{p}{q}$ & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \bigskip En utilisant \textit{cellspace}: \begin{tabular}{|*4{Sc|}} \hline $\dfrac{p}{q}$ & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Hauteur des cellules : \arraystretch (more stretch)
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} \renewcommand{\arraystretch}{2} \begin{tabular}{|*4{c|}} \hline a & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Hauteur personnalisée pour une ligne
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|*4{c|}} \hline a & b & c & d\\[1cm] \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Ici, nous utilisons l’alias “\\” suivi de la dimensions (avec unité) que nous souhaitons en dessous du texte et avant le trait horizontal suivant (donc la marge basse de la ligne)
Les filets (traits) des tableaux en LaTeX
Épaisseur des filets
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} Sans redéfinir les marges : \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d\\ \hline \end{tabular} \bigskip En redéfinissant les marges: \setlength{\arrayrulewidth}{3pt} \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d\\ \hline \end{tabular} \end{document}
Un trait vertical dans une cellule : \vline
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d \vline~ e\\ \hline \end{tabular} \end{document}
Traits en pointillés
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{arydshln} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c:c|} \hline a & b\\ \hdashline c & d \\ \hline \end{tabular} \end{document}
Traits horizontaux sur quelques cellules
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|c|c|c|} \hline a & b & c & d\\ \cline{1-1}\cline{4-4} e & f & g & h \\ \hline \end{tabular} \end{document}
Délimitateur “@{…}”
On l’utilise quand on souhaite autre chose qu’un trait entre deux cellules.
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{xspace} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c@{\xspace$\to$\xspace}c|} \hline a & b\\ \hline c & d \\ \hline \end{tabular} \end{document}
Les couleurs
Lignes sur fond de couleurs
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|c|} \rowcolor{orange!50} \hline a & b\\ \hline c & d \\ \hline \end{tabular} \end{document}
Colonne sur fond de couleur
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|>{\columncolor{orange!50}}c|c|} \hline a & b\\ \hline c & d \\ \hline \end{tabular} \end{document}
Une seule cellule sur fond de couleur
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|c|} \hline \cellcolor{orange!50}a & b\\ \hline c & d \\ \hline \end{tabular} \end{document}
La couleur des filets
Couleur de tous les filets
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \arrayrulecolor{red} \begin{tabular}{|c|c|} \hline a & b\\ \hline c & d \\ \hline \end{tabular} \end{document}
Couleur d’un trait vertical
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|c|} \hline a & b\\ \arrayrulecolor{red}\hline\arrayrulecolor{black} c & d \\ \hline \end{tabular} \end{document}
Un trait vertical en couleur
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage[table]{xcolor} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|cc!{\color{red}\setlength{\arrayrulewidth}{2pt}\vline}cc|} \hline a & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Fusions dans des tableaux LaTeX
Fusionner des colonnes des tableaux LaTeX
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|*4{c|}} \hline a & \multicolumn{2}{|c|}{b et c} & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Fusionner des lignes des tableaux LaTeX
Il est ici nécessaire d’utiliser le package multirows.
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{multirow} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|*4{c|}} \hline a & \multirow{2}{*}{b et f} & c & d\\ \cline{1-1}\cline{3-4} e & & g & h \\ \hline \end{tabular} \end{document}
Des traits en diagonale dans une cellule de tableau LaTeX : le package diagbox
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{diagbox} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|ccc|} \hline \diagbox{$a$}{$b$} & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Une croix dans une cellule de tableaux LaTeX
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{diagbox} \setlength{\parindent}{0pt} \begin{document} \begin{tabular}{|c|ccc|} \hline \diagbox[width=7mm,height=5mm]{\diagbox[width=7mm,height=5mm,dir=SW]{}{}}{} & b & c & d\\ \hline e & f & g & h \\ \hline \end{tabular} \end{document}
Il y a toutefois un petit inconvénient à cette méthode : il faut jouer manuellement sur les dimensions de la cellule.
Alors maintenant, bien entendu, si vous constatez qu’il manque quelque chose d’important, n’hésitez pas à intervenir en commentaire !
Thank you very much…