Présentation de l'extension tabu

Christophe Boulet

Cet article présente l'extension tabu qui étend les fonctionnalités des extensions tabularx, array et longtable tout en ajoutant un certain nombre de fonctionnalités nouvelles intéressantes. La connaissance de tabular est un prérequis à l'utilisation de tabu.

Commentez

- Titre : Présentation de l'extension tabu

- Auteur : Christophe Boulet

- Parution : 28 octobre 2014

- Mise à jour : 28 octobre 2014

- Public visé :

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 Winnt. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Présentation de l'extension tabu

- I-A. Fixation de la largeur totale du tableau

- I-B. Insertion de formules mathématiques

- I-C. Des nombres bien présentés

- I-D. Insertion de note de bas de page (footnote)

- I-E. Les filets

- I-F. Et si on changeait le style de nos lignes

- I-G. Alignement et fontes

- I-H. Sauvegarde et restauration des paramètres d'un tableau

- I-I. Fusion de multiples colonnes et lignes

- I-J. Coloration de lignes et colonnes

- I-K. Colorer alternativement plusieurs lignes

- II. Conclusion

- III. Remerciements

I - Présentation de l'extension tabu

L'intérêt de celle-ci est qu'elle étend les fonctionnalités des extensions tabularx, array et longtable tout en ajoutant un certain nombre de fonctionnalités nouvelles intéressantes.

Les extensions xcolor (avec l'option table), ragged2e, numprint (ou siunitx selon les besoins) et longtable doivent être chargées si l'on souhaite tirer parti de toutes les possibilités offertes par tabu.

Exemple de préambule pour une utilisation complète de l'extension tabu

% on ne chargera en général que l'une des deux
\usepackage{siunitx}
\usepackage[autolanguage]{numprint}
% on pourra par défaut charger toutes ces extensions
\usepackage{tabularx}
\usepackage{array}
\usepackage{longtable}
\usepackage{ragged2e}
\usepackage{multirow}
\usepackage[table]{xcolor}
\usepackage{colortbl}
% chargement de tabu
\usepackage{tabu}

I-A - Fixation de la largeur totale du tableau

L'une des particularités de l'extension tabu est de permettre la gestion fine de la largeur des tableaux. Au travers des exemples qui suivent, sera présentée cette fonctionnalité qui trouvera, j'en suis sûr, ses adeptes.

La façon d'appeler tabu lors de la construction d'un tableau de base ne change pas par rapport aux autres extensions.

Tableau utilisant la totalité de la largeur disponible

\begin{tabu}{|X|X|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

Il est possible de fixer la largeur que doit occuper le tableau avec l'instruction to <dimension> comme le montre l'exemple ci-après.

Tableau utilisant 80% de la largeur disponible

\begin{tabu} to 0.8\linewidth {|X|X|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

L'une des particularités de tabu est de permettre d'ajouter un espacement aux colonnes du tableau avec l'instruction spread <dimension> pour les colonnes X.

Tableau utilisant la largeur naturelle des colonnes plus 30 points

\begin{tabu} spread 30pt {|X|X|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

Dans le cas où l'on souhaite utiliser la largeur naturelle avec spread <dimension>, il suffit de mettre l'instruction spread 0pt afin d'obtenir le résultat souhaité.

Tableau utilisant la largeur naturelle des colonnes

\begin{tabu} spread 0pt {|X|X|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

Une autre particularité de tabu est de pouvoir donner un coefficient de largeur pour les colonnes X à l'aide de l'instruction X[coefficient, alignement,type].

- Le coefficient permet d'ajuster la largeur des colonnes X en fonction des autres colonnes de même type. Il peut être positif ou négatif, dans ce cas l'instruction devient X[-coefficient, alignement, type].

- L'alignement horizontal peut prendre les valeurs r, c, l ou j (ou R, C, L ou J avec l'extension ragged2e).

- Type peut prendre les valeurs p (valeur par défaut), m ou b qui représentent l'alignement vertical.

Tableau dont la seconde colonne est deux fois plus grande que la première

\begin{tabu}{|X[m]|X[2,c,m]|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

Tableau dont la seconde colonne utilise un coefficient négatif

\begin{tabu}{|X[m]|X[-2,c,m]|X[c,m]|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

I-B - Insertion de formules mathématiques

Il existe deux formes qui permettent de créer des colonnes dédiées aux formules mathématiques :

- X[coefficient, alignement, type, $]

- X[coefficient, alignement, type, $$]

La première forme revient à créer une colonne de la forme >{$}X<{$}, tandis que la seconde crée une colonne de la forme >{$\displaystyle }X<{$}. Ceci peut donc être pratique si l'on souhaite afficher des formules en colonne au sein d'un tableau tant par le fait qu'il est facile de s'en souvenir, que par la simplicité d'utilisation.

Exemple avec l'option X[coefficient, alignement, type, $]

\tabulinesep=10pt
\begin{tabu}{|X|X[c, $]|}
\hline
Description & Formule \tabularnewline
\hline
Dans la colonne suivante j'insère ma formule mathématique & \sum_i \frac{a_i}{x_i} \tabularnewline
\hline
\end{tabu}

Exemple avec l'option X[coefficient, alignement, type, $$]

\tabulinesep=10pt
\begin{tabu}{|X|X[c, $$]|}
\hline
Description & Formule \tabularnewline
\hline
Dans la colonne suivante j'insère ma formule mathématique & \sum_i \frac{a_i}{x_i} \tabularnewline
\hline
\end{tabu}

Dans les exemples ci-dessus, l'utilisation de \tabulinesep=10pt permet d'insérer un espacement vertical supplémentaire. Cette instruction peut se révéler très utile dans certains cas (notamment avec les formules mathématiques) afin d'obtenir un tableau parfaitement lisible. La commande \tabulinesep prend toutes les dimensions acceptées par LaTeX comme valeur.

I-C - Des nombres bien présentés

Exemple avec l'option \tabudecimal{user-macro}

% définition de la macro \usermacro dans le préambule du document
% \def\usermacro#1{\SI[group-four-digits=true, round-mode=places, round-precision=2, round-integer-to-decimal=true, per-mode=symbol, detect-all]{#1}{\km}}
\tabulinesep=3pt
\begin{tabu}spread 0pt{|[blue]*2{>{\tabudecimal \usermacro}X[r, m]|[blue]}}
\tabucline [blue]{-}
\rowfont[c]{\bf } année 1 & année 2 \\
\tabucline [black]{-}
12.345 & 678.901 \\
23.45 & 0 \\
678.9012 & 34.567 \\
8910.12 & 345.678 \\
\tabucline [blue]{-}
\end {tabu}

Comme le montre l'exemple ci-dessus, il est assez simple d'avoir des colonnes dont les nombres et les unités sont parfaitement alignés. À la limitation près de définir auparavant la macro adéquate.

I-D - Insertion de note de bas de page (footnote)

Sans avoir besoin de charger une quelconque extension supplémentaire, il est possible d'insérer dans tabu des notes de bas de page comme le montre l'exemple qui suit.

Tableau avec une note de bas de page (footnote)

\begin{tabu}{|X|X|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789\footnote{Note de bas de page} & 01234 56789 01234 56789 01234 56789 \tabularnewline
01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789\footnote{Seconde note de bas de page} & 01234 56789 01234 56789 01234 56789 \tabularnewline
01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

I-E - Les filets

Il est facile de créer des tableaux avec des filets colorés comme le montrent les exemples qui suivent.

Dans tabu, les filets | prennent deux arguments optionnels qui sont la largeur du trait et sa couleur. L'exemple ci-dessous vous permettra d'avoir un aperçu de ce que cela donne.

Tableau utilisant la totalité de la largeur disponible dont les lignes verticales sont colorées et de différentes épaisseurs

\begin{tabu}{|[green]X|[2pt,blue]X|[5pt,red]}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

La commande \everyrow{code} permet d'exécuter pour chaque ligne une instruction \tabucline. Il est possible de modifier localement celle-ci en insérant l'instruction \tabucline.

La syntaxe complète de la commande \tabucline est la suivante :

[épaisseur on largeur pointillé [couleur optionnelle] off espacement [couleur optionnelle]]{première colonne-dernière colonne}

Les exemples ci-dessous montrent les possibilités d'utilisation des instructions \everyrow et \tabucline.

Tableau dont chaque filet horizontal est ajouté automatiquement

\everyrow{\tabucline -} % ligne simple
\begin{tabu}{|X[c,m]|X[c,m]|}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\end{tabu}
\tcbline

\everyrow{\tabucline[2pt blue] -} % ligne de 2 points d'épaisseur en bleu
\begin{tabu}{|X[c,m]|X[c,m]|}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\end{tabu}

Tableau avec lignes de séparation horizontales vides modifiées localement

\begin{tabu}{|X[c,m]|X[c,m]|}
\tabucline{-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline{2-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline{-1}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline{-}
\end{tabu}

Les exemples précédents montrent la facilité à insérer des filets horizontaux de couleur et d'épaisseur variable. Les exemples suivants montrent comment, avec tabular, obtenir des filets colorés et en modifier l'épaisseur, puis plusieurs possibilités offertes par tabu.

Exemple de filets avec tabular et tabu

{\LARGE \textbf{Tabular}}
\vspace{6pt}

{\setlength\arrayrulewidth{2pt} % épaisseur du trait 2 points
\arrayrulecolor{blue} % trait couleur bleu
\begin{tabular}{|c|c|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabular}}

\vspace{6pt}

\tcbline
{\LARGE \textbf{Tabu}}
\vspace{6pt}

\begin{tabu} spread 0pt{|[1pt red]X[c,m]|[2pt red]X[c,m]|[3pt red]} % ligne verticale de 1, 2 et 3 points
\tabucline[1pt red]{-} % ligne horizontale de 1 point
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[2pt red]{-} % ligne horizontale de 2 points
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[3pt red]{-} % ligne horizontale de 3 points
\end{tabu}

\vspace{6pt}

\tcbline
\taburulecolor |cyan|{magenta} % trait extérieur couleur magenta et intérieur cyan
\begin{tabu} spread 0pt{||X[c,m]|X[c,m]||}
\hline
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\hline
\end{tabu}
\vspace{6pt}

L'inconvénient de la méthode utilisée avec tabular est que tous les filets sont de la même épaisseur et couleur.

Avec tabu, il est possible de personnaliser indépendamment chaque filet comme le montre l'exemple ci-dessus.

L'option \taburulecolor |couleur interne|{couleur externe} permet de colorer les filets doubles c'est-à-dire | | ou \hline\hline. Toutefois, cette fonctionnalité ne fonctionne pas avec \tabucline{-}.

Ces exemples montrent qu'il est facile et rapide d'obtenir des filets de diverses épaisseurs et couleurs, cela sans difficulté et avec une syntaxe plus intuitive.

I-F - Et si on changeait le style de nos lignes

Il est possible, avec l'instruction \tabulinestyle, de spécifier des styles de ligne préalablement définis avec la commande \newtabulinestyle.

L'instruction \tabulinestyle prend la forme suivante :

- épaisseur ligne couleur on largeur pointillé couleur off espacement couleur.

- couleur on largeur pointillé couleur off espacement couleur.

- on largeur pointillé couleur off espacement couleur.

- épaisseur ligne couleur.

- on largeur pointillé couleur.

- off espacement.

- épaisseur ligne.

Comme le montre l'exemple ci-dessous, la possibilité de nommer des styles de ligne peut vite s'avérer appréciable dans le cas où l'on souhaite, par exemple, avoir des bordures extérieures plus fortes que les lignes de séparation intérieures.

Exemple avec les options tabulinestyle et newtabulinestyle

Tableau avec modification locale des différents styles de ligne.

\begin{tabu}{|X[c,m]|X[c,m]|}
\tabucline[1pt blue]{-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[1pt]{-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[1pt on 1.5pt off 2pt]{2-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[2pt on 10pt blue off 4pt red]{1-2}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[1.5pt]{-1}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[magenta]{-}
\end{tabu}
\tcbline %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tableau utilisant la commande \textbf{newtabulinestyle} pour les lignes horizontales et verticales. À noter que l'application verticale ne prend en compte que la première partie de la spécification soit \textbf{2pt on 10pt}.

\newtabulinestyle{maligne=2pt on 10pt blue off 4pt red}
\newtabulinestyle{maligneinterne=1pt on 1.5pt off 2pt}
\begin{tabu}{|[maligne]X[c,m]|[maligneinterne]X[c,m]|[maligne]}
\tabucline[maligne]{2-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[maligne]{-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline[maligne]{-1}
\end{tabu}
\tcbline %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Tableau pour lequel la définition de \textbf{maligne} est appliquée globalement à l'intégralité du tableau.

\begin{tabu}{|X[c,m]|[maligneinterne]X[c,m]|}
\tabulinestyle{maligne}
\tabucline{2-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline{-}
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\tabucline{-1}
\end{tabu}

Outre le fait que la commande \tabulinestyle{style de ligne} est particulièrement souple d'utilisation, elle permet, si on le veut, de créer de nombreux styles prédéfinis que l'on pourra appliquer comme bon nous semble.

Associée à la sauvegarde et restauration des paramètres (voir page ) cela ouvre des possibilités plus qu'intéressantes.

I-G - Alignement et fontes

Chaque ligne peut avoir un alignement indépendant ainsi qu'une graisse spécifique avec l'instruction \rowfont[alignement]{spécification de fonte}. L'alignement horizontal peut prendre les valeurs r, c, l ou j (ou R, C, L ou J avec l'extension ragged2e).

Tableau dont la fonte et l'alignement d'une ligne est modifié

\begin{tabu}{|X[c,m]|X[c,m]|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\rowfont[r]\bfseries
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\rowfont[l]\itshape
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

Le grand intérêt de cette instruction est de pouvoir changer localement la graisse et l'alignement d'une ligne sans avoir à modifier un tableau, ou de passer par des expédients qui rendent peu lisible le code source (en utilisant \multicolumn par exemple).

I-H - Sauvegarde et restauration des paramètres d'un tableau

Si l'on utilise plusieurs fois un tableau avec les mêmes paramètres, il est possible de sauvegarder ceux-ci afin de les réutiliser plus tard. Ce sont les instructions \savetabu et \usetabu qui le permettent.

Ci-dessous un exemple d'utilisation de ces commandes.

Sauvegarde des paramètres du tableau avec \savetabu

\begin{tabu}{|X[l,m]|X[c,m]|X[r,m]|}\savetabu{montableau}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabu}

Restauration des paramètres du tableau à l'identique avec \usetabu

\begin{tabu}{\usetabu{montableau}}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabu}

Comme on le voit dans cet exemple, la restauration des paramètres du tableau s'opère parfaitement, même si le contenu du tableau est modifié.

Cette option s'avère particulièrement pratique dans le cas où plusieurs tableaux basés sur le même modèle doivent être construits, car elle évite de devoir ressaisir l'intégralité de l'en-tête de définition du tableau. Ceci est particulièrement vrai si celui-ci est un peu complexe.

I-I - Fusion de multiples colonnes et lignes

Comme le montre l'exemple ci-dessous, la méthode pour fusionner les lignes et colonnes est identique à celle utilisée pour tabular.

Toutefois, l'auteur a prévu de créer, dans le futur, une commande permettant la fusion simultanée de lignes et colonnes. Voilà une initiative qui fait plaisir, la méthode actuelle étant un peu contraignante au niveau de la syntaxe.

Fusion de lignes et colonnes avec tabular et tabu

{\LARGE \textbf{Tabular}}

Tableau de base\vspace{6pt}

\begin{tabular}{|c|c|c|}
\hline
1 & 2 & 3 \tabularnewline
\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{ABC}} & 4 \tabularnewline
\cline{3-3}
\multicolumn{2}{|c|}{} & 5 \tabularnewline
\hline
\end{tabular}

\vspace{6pt}Utilisation de colonnes p\{dimension\}

\begin{tabular}{|p{2cm}|p{2cm}|p{2cm}|}
\hline
1 & 2 & 3 \tabularnewline
\hline
\multicolumn{2}{|p{2cm}|}{\multirow{2}{*}{ABC}} & 4 \tabularnewline
\cline{3-3}
\multicolumn{2}{|p{2cm}|}{} & 5 \tabularnewline
\hline
\end{tabular}
\tcbline

{\LARGE \textbf{Tabu}}

Fonctionnement identique à Tabular

\begin{tabu}{|c|c|c|}
\hline
1 & 2 & 3 \tabularnewline
\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{ABC}} & 4 \tabularnewline
\cline{3-3}
\multicolumn{2}{|c|}{} & 5 \tabularnewline
\hline
\end{tabu}

\vspace{6pt}Utilisation de colonnes p\{dimension\}

\begin{tabu} spread 0pt{|p{2cm}|p{2cm}|p{2cm}|}
\hline
1 & 2 & 3 \tabularnewline
\hline
\multicolumn{2}{|p{2cm}|}{\multirow{2}{*}{ABC}} & 4 \tabularnewline
\cline{3-3}
\multicolumn{2}{|p{2cm}|}{} & 5 \tabularnewline
\hline
\end{tabu}

I-J - Coloration de lignes et colonnes

La coloration des colonnes et lignes ne change pas par rapport à tabular. Sauf dans le cas où l'on souhaite colorer alternativement plusieurs lignes.

Coloration d'une colonne, d'une ligne et d'une cellule

{\LARGE \textbf{Tabular}}\vspace{6pt}

\begin{tabular}{|c|>{\columncolor{cyan}}c|c|}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\rowcolor{green}01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & \cellcolor{red}01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabular}
\tcbline

{\LARGE \textbf{Tabu}}\vspace{6pt}

\begin{tabu} spread 0pt {|X|>{\columncolor{cyan}}X|X|}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\rowcolor{green}01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & \cellcolor{red}01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabu}

I-K - Colorer alternativement plusieurs lignes

Dans l'exemple qui suit, vous pourrez remarquer que l'ordre d'apparition des couleurs est inversé entre \rowcolors et \taburowcolors. Ceci est tout à fait normal.

En effet, \rowcolors semble appliquer la coloration à toutes les lignes, puis, si la ligne ne doit pas être colorée, appliquer la couleur de fond de la page. Ceci a pour effet de ne pas commencer obligatoirement la coloration des lignes par la première couleur définie dans la commande.

Alors que \taburowcolors semble commencer par vérifier que la ligne doit être colorée et, si ce n'est pas le cas, ne fait rien. Ceci permet, dans l'exemple qui suit, de bien commencer par la couleur green!25.

Et surtout, n'oubliez pas de mettre l'instruction \rowcolors entre {...} si vous ne voulez pas que celle-ci s'applique à tous les tableaux qui suivent.

Cette précaution n'est pas utile avec \taburowcolors, ce qui est bien agréable à l'utilisation.

Coloration de ligne alternativement

{\LARGE \textbf{Tabular}}\vspace{6pt}

{\rowcolors{2}{green!25}{yellow!50}
\begin{tabular}{|c|c|c|}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabular}}
\tcbline

{\LARGE \textbf{Tabu}}\vspace{6pt}

\taburowcolors[2] 2{green!25..yellow!50}
\begin{tabu} spread 0pt {|X|X|X|}
\hline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
01234 56789 & 01234 56789 & 01234 56789 \tabularnewline
\hline
\end{tabu}

L'instruction \taburowcolors prend les arguments suivants :

- la position de début de la coloration des lignes ;

- le nombre de lignes à colorer dans la séquence ;

- la couleur de début de coloration ;

- la couleur de fin de coloration.

L'instruction complète s'écrit \taburowcolors[début] nbr lignes{couleur début..couleur fin}.

Tableau avec des lignes colorées par séquence de 5 commençant à la 2e ligne afin d'obtenir un dégradé de couleurs

\taburowcolors[2] 5{green!25..yellow!50}
\begin{tabu}{|X[c]|X[c]|}
\hline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
01234 56789 01234 56789 & 01234 56789 01234 56789 \tabularnewline
\hline
\end{tabu}

La possibilité de faire un dégradé de couleur comme le montre l'exemple précédent est propre à tabu.

II - Conclusion

Comme vous avez pu le voir dans cette présentation, tabu est une extension qui mérite que l'on s'y attarde.

La souplesse qu'elle apporte dans la conception de tableaux, ainsi que les possibilités de réutilisation, au travers des styles et sauvegarde d'en-têtes, font de celle-ci l'extension incontournable pour la production de tableaux à la fois attrayants et bien présentés.

III - Remerciements

Merci à -Nikopol- pour sa relecture technique et ses conseils, ainsi que f-leb et FRANOUCH pour la relecture orthographique.