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
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
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
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
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
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
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