From Le wiki des fiches à Bébert

Tableaux: TableauxSimples

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


Sommaire

Ton premier tableau

Créer les colonnes

Créer les lignes

1er problème : la taille des tableaux

La solution : p{valeurUnité}

Un raccourci *{nb}{type}

Remplacer les traits verticaux : @{texte}

Traits Des traits horizontaux partiels = \cline

Modifier l'espace entre les colonnes

Modifier l'épaisseur des traits

Modifier l'espacement entre 2 traits

Modifier l'espacement entre 2 lignes

Fusion de colonnes


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 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%red}
 \begin{tabular}{|c|c|c|}
 \hline
 case 1&case 2&case 3\\ \hline
 case 4&case 5&case 6\\ \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.}\pat

 \begin{tabular}{|c||c||c|}
 \hline
 case 1&case 2&case 3\\ \hline
 case 4&case 5&case 6\\ \hline\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\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. . .


Tableaux Deuxième partie : améliorer ses tableaux avec le package array

Récupéré sur http://bebertlafiche.free.fr/index.php5/Tableaux/TableauxSimples
Page mise à jour le 19/10/2011 23:37