LaTeX : documentation et tutoriels


Construire des tableaux sous LaTeX
Préalable :
  • Pour réaliser des tableaux "basiques" sous Texmaker, on peut utiliser l'assistant "Tableaux" disponible via le menu "Assistants".
  • Les constructions de tableaux que nous allons voir ici essaient de palier à certains défauts des tableaux réalisés avec l'environnement dédié standard de LaTeX.
    Pour cela, tous les exemples inclueront dans leur préambule le code suivant :
    \usepackage{array,multirow,makecell}
    \setcellgapes{1pt}
    \makegapedcells
    \newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
    \newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
    \newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
    

Sommaire :


A) Construction d'un tableau 

1. Principes de base

Les tableaux se composent à l'aide de l'environnement tabular selon le principe suivant :
\begin{tabular}{ici on définit les colonnes}
ici on définit la première ligne
ici on définit la deuxième ligne
...
\end{tabular}
Pour la définition des colonnes, on utilise le codage suivant :
(le préambule doit inclure le code précisé au début de la page)
  • | : dessine un trait vertical (avec ||, on obtient un double-trait vertical).
  • l : définit une colonne dont le contenu sera aligné à gauche et dont la largeur variable sera gérée par LaTeX.
  • c : définit une colonne dont le contenu sera centré et dont la largeur variable sera gérée par LaTeX.
  • r : définit une colonne dont le contenu sera aligné à droite et dont la largeur variable sera gérée par LaTeX.
  • L{3cm} : définit une colonne de largeur fixe égale à 3cm dont le contenu sera aligné à gauche.
  • C{3cm} : définit une colonne de largeur fixe égale à 3cm dont le contenu sera centré.
  • R{3cm} : définit une colonne de largeur fixe égale à 3cm dont le contenu sera aligné à droite.
  • @{mot} : remplace l'espace entre 2 colonnes par mot (s'utilise à la place de |).
Pour la définition des lignes, on utilise le codage suivant :
  • \hline : dessine un trait horizontal sur toute la largeur du tableau.
  • \cline{i-j} : dessine un trait horizontal uniquement de la colonne i à la colonne j.
  • & : sert à séparer le contenu des différentes cases de la ligne concernée.
  • \\ : indique un changement de ligne.
Exemple 1 :

Code de l'exemple 1:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & bidule & machin  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple 1 : tableaux2.tex

Exemple 2 : utilisation d'une ligne horizontale partielle

Code de l'exemple 2:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\cline{1-2}  ligne 2 & truc & bidule & machin  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple 2 : tableaux2.tex

Exemple 3 : remplacement d'un trait vertical par le mot et

Code de l'exemple 3:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}@{et}R{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & bidule & machin  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple 3 : tableaux3.tex


2. Fusion de colonnes

Pour fusionner plusieurs cases sur une même ligne, on utilise la commande :
\multicolumn{nb de colonnes à fusionner}{description de la colonne fusionnée}{texte de la case}
(sur la ligne correspondante)
Attention : pour la description de la colonne fusionnée, il faut utiliser c, l ou r (et pas L{}, C{} et R{}).
Exemple : fusion des colonnes 3 et 4 de la deuxième ligne

Code de l'exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & \multicolumn{2}{l|}{fusion}  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple : tableaux4.tex


3. Fusion de lignes

Pour fusionner plusieurs cases sur une même colonne, on utilise la commande :
\multirow{nb de lignes à fusionner}*{texte de la case}
(dans la case de la colonne correspondante sur la première ligne concernée)
Exemple : fusion des lignes 1 et 2 dans la dernière colonne

Code de l'exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  \multirow{2}*{texte}  \\
\cline{1-3}  ligne 2 & truc & bidule &   \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple : tableaux5.tex


4. Augmenter les marges pour les tableaux contenant des formules mathématiques

Les marges par défaut des tableaux LaTeX sont insuffisantes si une case contient une formule mathématique d'une hauteur "respectable" (la formule touche alors les bords supérieurs et inférieurs de la case). Pour pallier à cet inconvénient, il suffit d'ajouter la commande \setcellgapes{4pt} juste avant le tableau posant problème.
Pour rétablir les marges par défaut, il suffit d'utiliser \setcellgapes{1pt} avant le prochain tableau.
Exemple :

Code de l'exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\setcellgapes{4pt}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & bidule & $\dfrac{3}{2}$ \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple : tableaux6.tex


5. Ajouter de la couleur dans un tableau

Pour utiliser de la couleur dans les tableaux, il faut d'abord ajouter \usepackage[table]{xcolor} au préambule (à inclure après \makegapedcells).
  • Pour colorier le fond d'une colonne, il faut utiliser la commande \rowcolor{couleur} au début de la de la ligne concernée.
  • Pour colorier une case, il faut utiliser la commande \cellcolor{couleur} avant le texte de la case correspondante.
Exemple :

Code de l'exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\usepackage[table]{xcolor}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|R{2cm}|C{1cm}|L{1.5cm}|}
\hline \rowcolor{lightgray} col 1 & col 2 &  col 3  \\
\hline  ligne 2 & truc & bidule  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple : tableaux7.tex


6. Titres de colonne "penchés"

Cela peut se faire en ajoutant \usepackage{graphicx} au préambule et en utilisant la commande \rotatebox{angle}{texte} dans la case correspondante.
Exemple :

Code de l'exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\usepackage{graphicx}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{tabular}{|C{2cm}|C{2cm}|}
\hline
\rotatebox{45}{colonne 1} & \rotatebox{45}{colonne 2}  \\
\hline  ligne 2 & truc  \\
\hline 
\end{tabular}
\end{document}

Fichier de l'exemple : tableaux8.tex


B) Adjonction d'un titre à un tableau "non flottant" 

Pour ajouter un titre à tableau en mode "non flottant" (titre qui pourra être référencé par (pdf)latex dans la liste des tableaux), il faut ajouter au préambule :
\usepackage{caption} 
Il n'y a plus alors qu'à indiquer le titre du tableau avec la commande \captionof{table}{Titre du tableau} (on peut aussi y ajouter un label).
La commande \listoftables permet alors d'afficher la liste des tableaux du document.
Exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{caption}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{center}
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & bidule & machin  \\
\hline 
\end{tabular}
\captionof{table}{Mon tableau}
\label{tab1}
\end{center}

\listoftables
\end{document}
Résultat :

Note :une double-compilation est nécessaire pour que la "liste des tableaux" soit complétée par (pdf)latex.

Fichier de l'exemple : tableaux9.tex


C) Insertion d'un tableau dans un "flottant" 

Cela se fait avec l'environnement table selon le principe suivant :
\begin{table}
\centering
ici on inclut le code du tableau
\caption{nom du tableau}
\label{l'étiquette du tableau}
\end{table}
Exemple :
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array,multirow,makecell}
\setcellgapes{1pt}
\makegapedcells
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash }b{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash }b{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash }b{#1}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{|R{2cm}||C{1cm}|L{1.5cm}|L{1.5cm}|}
\hline col 1 & col 2 &  col 3 &  col 4  \\
\hline  ligne 2 & truc & bidule & machin  \\
\hline 
\end{tabular}
\caption{Mon tableau}
\label{tab1}
\end{table}

\listoftables
\end{document}
La commande \listoftables permet alors d'afficher la liste des tableaux du document.
Résultat :

Note :une double-compilation est nécessaire pour que la "liste des tableaux" soit complétée par (pdf)latex.

Fichier de l'exemple : tableaux10.tex