1er problème : la taille des tableaux
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
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}
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.
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 |.
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.
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.
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}|}
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\\
\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}
\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} }
\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} }
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} }
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} }
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.
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 →