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

Fleuron

Traits verticaux

Le package array (\usepackage{array}) est fortement recommandé car non seulement il améliore l'aspect des tableaux mais en plus, il ajoute des fonctionnalités très utiles comme tu vas le voir.

La première amélioration concerne les | dont array modifie le comportement.

Un tableau réalisé avec tabular sans le package array}

Le même avec le package array

Ça se passe de commentaire !

m{valeurUnité}

Cette commande permet de fixer la largeur de la colonne comme p{valeurUnité} de l'environnement tabular mais alors que p{valeurUnité} aligne toutes les cellules sur le haut de la rangée, m{valeurUnité} centre verticalement chaque cellule par rapport au reste de la rangée.

\begin{tabular}{|p{2cm}|l||p{1cm}|}
\hline
Première ligne longue, très longue, trop longue& colonne 2& un peu longue\\
\hline
ligne2&rien&rien\\
\hline
\end{tabular}

\begin{tabular}{|m{2cm}|l||m{1cm}|}
\hline
Première ligne longue, très longue, trop longue& colonne 2& un peu longue\\
\hline
ligne2&rien&rien\\
\hline
\end{tabular}

b{valeurUnité}

Même action que les commandes \p{valeurUnité} et \m{valeurUnité} mais cette fois ci la rangée est alignée sur le bas de la ligne.

\begin{tabular}{|b{2cm}|l||b{1cm}|}
\hline
Première ligne longue, très longue, trop longue& colonne 2& un peu longue\\
\hline
ligne2&rien&rien\\
\hline
\end{tabular}

Attention si tu peux mettre plusieurs b{...} dans un même tableau, comme l'exemple ci-dessus, tu ne peux mélanger des p{...} des b{...} et des m{...}. Tu ne peux avoir, par exemple, à la fois une rangée centrée et alignée en haut !

{texte}

Même action que la commande @{texte}, c'est à dire remplacer | par la valeur de «texte» mais sans la suppression des espaces.

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

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

Modifier l'espacement entre les filets horizontaux et le texte

Le package array ajoute une nouvelle distance \extrarowheight qui permet d'augmenter l'espacement entre les lignes horizontales et le texte. La valeur par defaut de \extrarowheight est 0. Tu modifies sa valeur à l'aide de \setlength. Voici un tableau avec la valeur par défaut :

\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 \extrarowheight de 5 pt

{\setlength{\extrarowheight}{5pt}
\begin{tabular}{|c|c|c|}
\hline
case 1&case 2&case 3\\
\hline
case 4&case 5&case 6\\
\hline
\end{tabular}
}

Les descripteurs <{déclaration} et >{déclaration}

Ces commandes permettent d'insérer un même «texte» dans chaque cellule d'une colonne. On peut insérer un texte avant >{...} ou après le texte des cellules <{...}.

Le tableau original

\begin{tabular}{|c|l|}
\hline
-1 & gel\\
\hline
90 & bout\\
\hline
22 & est bonne\\
\hline
\end{tabular}

Transformé par les descripteurs :

\begin{tabular}{|c<{\degres C}|>{l'eau}l<{.}|}
\hline
-1 & gel\\
\hline
90 & bout\\
\hline
22 & est bonne\\
\hline
\end{tabular}

Les descripteurs acceptent également les commandes LaTeX ce qui est particulièrement intéressant par exemple pour mettre toute une colonne en gras, en italique ou même en couleur. Dans ce cas on utilise que le descripteur >{...} car une commande LaTeX n'affecte que ce qui est placé après elle.

Le tableau original :

\begin{tabular}{|c|l|}
\hline
-1 & gel\\
\hline
90 & bout\\
\hline
22 & est bonne\\
\hline
\end{tabular}

Le tableau modifié :

\begin{tabular}{|>{\color{blue}\bfseries}c|>{\itshape}l|}
\hline
-1 & gel\\
\hline
90 & bout\\
\hline
22 & est bonne\\
\hline
\end{tabular}

Un autre exemple de l'utilisation des descripteurs, obtenir une colonne centrée horizontalement et verticalement comme la colonne 2 de l'exemple ci-dessous :

\begin{tabular}{|m{2cm}|>{\centering}m{2cm}||m{1cm}|}
\hline
Première ligne longue, très longue, trop longue& colonne 2& un peu longue\\
\hline
ligne2&rien&rien\\
\hline
\end{tabular}

Le descripteur >{...} accepte pratiquement toutes les commandes LaTeX, donc les possibilités de mise en forme des tableaux est grande.

N'étant pas mathématicien, je n'ai que très rarement besoin d'utiliser le mode mathématique. Mais il m'arrive parfois d'en avoir besoin comme dans le cas du symbole ± qui est un symbole mathématique. Le passage temporaire au mode math se fait en encadrant la partie math de $ par exemple pour ± $\pm$. Si tu veux faire un tableau avec 1 colonne en mode mathématique, voici comme faire :

\begin{tabular}{|l|>{$}c<{$}|}
\hline
une chose&256\pm14\\
\hline
autre chose&15896\pm69\\
\hline
\end{tabular}

Créer des descripteurs de colonnes

Tu peux définir toi même tes propres descripteurs, pratique si tu dois les utiliser dans plusieurs tableaux, ça évite d'avoir à retaper toujours les mêmes commandes et surtout, si besoin est, il te suffit de modifier la commande du descripteur pour que tous les tableaux l'utilisant soient modifiés. C'est le même principe que pour créer une nouvelle commandes (voir la fiche « LaTeXcréer ses commandes»). On défini cette nouvelle colonne par :

\newcolumntype{nom}[nb arguments]{définition}

Par exemple on va créer 2 nouveaux descripteurs «B» et «E» reprenant les exemples ci-dessus.

\newcolumntype{E}{>{\itshape l'eau}m{4cm}<{.}}
\newcolumntype{B}{>{\color{blue}}l<{\degres C}}
\begin{tabular}{|B|E|}
\hline
-1 & gel\\
\hline
90 & bout\\
\hline
22 & est bonne\\
\hline
\end{tabular}

Conclusion

Avec le package array on a augmenté la possibilité de créer des tableaux complexes, mais ce n'est pas fini, LaTeX à encore plus d'un tour dans son sac pour améliorer l'aspect de tes tableaux.