Comment construire un tableau avec le package tabularray ?#

Le package tabularray permet de composer des tableaux complexes simplement. La syntaxe permet une séparation fond/forme qui correspond bien à la philosophie de et rend le code particulièrement lisible.

Une de ses principales forces est également de permettre de régler l’aspect d’un tableau sans connaître a priori le nombre de colonnes et de cellules.

Il fournit l’environnement suivant :

\begin{tblr}{⟨description du tableau⟩}
	⟨contenu du tableau⟩
\end{tblr}

Note

  • Avant d’utiliser ce package, il est conseillé de connaître les rudiments de la composition classique de tableaux.

  • La documentation de tabularray propose plusieurs syntaxes possibles, dont certaines respectant moins la séparation fond/forme, qui ne seront pas présentées ici.

1.  Colonne de base#

Le type de colonnes (et de lignes) de base est notée Q.

Les réglages se font dans la description du tableau, à l’aide des options colspec et rowspec.

1.1.  Largeur et hauteur#

Pour ces réglages, on indique la largeur de chaque colonne dans colspec et la hauteur de chaque ligne dans rowspec.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	colspec ={| Q[1.5cm]| Q[3cm] | Q[5 cm] |},
	rowspec={| Q[1cm] || Q[3cm] |Q[2cm] |}
}
It’s a yellow submarine
    & yellow submarine
    &  yellow submarine \\
    %
Oubladi
	& oublada
	& oubladi \\
    %
Michelle, ma belle 
    & sont des mots
    & qui vont très bien \\
\end{tblr}

\end{document}

1.2.  Alignement vertical et horizontal#

L’alignement du texte peut être indiqué dans, au choix, rowspec ou colspec.

Les valeurs possibles pour l’alignement horizontal sont les mêmes que pour les tableaux classiques : l (par défaut), c et r.

Pour l’alignement vertical, c’est un peu plus délicat :

  • m : comme « middle », aligne la ligne du milieu sur la ligne de base (bref, au milieu de la ligne).

  • t : comme « top », aligne le sommet du texte sur la ligne de base. Le texte sera donc « en dessous » de la ligne de base.

  • h : comme « head », aligne le sommet du texte sur le haut de la cellule.

  • b: comme « bottom », aligne le bas du texte de la cellule sur la ligne de base. Le texte sera donc « au-dessus ».

  • f : comme « foot », aligne le bas du texte sur le bas de la ligne.

Dans l’exemple ci dessous, on voit bien la différence entre les différentes possibilités.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	colspec={| Q[m,2cm] || Q[t,2cm] |Q[h,2cm] || Q[b,2cm] | Q[f,2cm] |},
	rowspec={| Q[4cm,c] |}	
}
    {oubladi \\ oublada \\ oubladi}
    & {oubladi \\ oublada }
    & {Michelle \\ ma belle}
    & {sont des \\ mots qui}
    & { vont très \\ bien ensemble} \\
\end{tblr}

\end{document}

Note

Les retours à la ligne dans une cellule s’obtiennent en mettant son contenu entre accolades, puis avec \\.

1.3.  Un peu de couleur#

Pour ajouter de la couleur au tableau, il suffit de charger le package xcolor.

tabularray charge également le package ninecolors pour la gestion des couleurs. Ce dernier permet d’avoir un grand nombre de couleurs et de nuances prédéfinies.

La couleur d’une ligne ou d’une colonne s’ajoute dans le descriptif du tableau.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{tabularray}
\usepackage{xcolor}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	colspec ={| Q[l, 2cm, cyan7] | Q[c, 1.5cm, cyan4] | Q[r, 1.5cm, blue7] |},
	rowspec={| Q[m] || Q[t, 2cm] |Q[b, 1.5cm] |}
}
O flower of Scotland
	& When will we
	&  see your like again \\
%
That fought and died for
	& Your wee bit hill and glen
	& And stood against him \\
%
Proud Edward's army
	& And sent him homeward
	& Tae think again
\end{tblr}

\end{document}

2.  Colonnes X pour largeur automatique#

2.1.  Une colonne X dans le tableau#

Les colonnes de type X adaptent leur largeur de manière à ce que le tableau occupe toute la largeur disponible.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{tabularray}
\usepackage{xcolor}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	colspec ={| X[l, cyan7] | Q[c, 2cm, cyan4] | Q[r, 1.5cm, blue7] |},
}
Je ne 
	& veux pas
    & travailler \\
%
Je ne veux
    & pas
    & déjeuner \\
%
Je veux
    & seulement
    & oublier
\end{tblr}

\end{document}

2.2.  Plusieurs colonnes X#

On peut mettre plusieurs colonnes X, et régler leurs largeurs relatives. Dans l’exemple suivant, la deuxième colonne a une largeur 1,5 fois plus grande que la première, et la troisième colonne, 3 fois plus grande.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
    colspec={ |X[l,cyan7] | X[1.5, c, cyan4] | X[3, r, blue7] |}
}
O flower of Scotland
	& When will we
	&  see your like again \\
%
That fought and died for
	& Your wee bit hill and glen
	& And stood against him \\
%
Proud Edward's army
	& And sent him homeward
	& Tae think again
\end{tblr}

\end{document}

3.  Autre syntaxe#

tabularray fournit aussi une autre possibilité de syntaxe pour la description du tableau. Elle permet un réglage plus fin de l’aspect des cellules.

3.1.  Réglage global#

Dans le descriptif du tableau, on utilise les options rows, columns, hlines, et vlines dont les valeurs s’appliqueront à toutes les colonnnes, lignes, et filets.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	hlines, 
	vlines = {red,2pt},
	columns = {c, cyan9},
	rows = {m, 1.5cm}
}
Je ne 
    & veux pas
    &  travailler \\
    %
    Je ne veux
    & pas
    & déjeuner \\
    %
Je veux
    & seulement
    & oublier
  \end{tblr}

\end{document}

3.2.  Clefs disponibles#

Dans l’exemple précédent, les clefs utilisées pour chaque option sont implicites et on indique uniquement leur valeurs. La plupart du temps il n’est pas nécessaire de les indiquer explicitement, et on peut se contenter de donner valeur souhaitée pour chacune.

Prudence

Certaines clefs comme halign ou valign peuvent être utilisées pour le réglage des colonnes ou des lignes, ce qui n’est pas le cas d’autres. Par exemple, ht (height dimension) n’est disponible que pour les lignes et wd (width dimension) que pour les colonnes.

La version explicite de l’exemple serait :

\begin{tblr}{
	hlines, 
	vlines = {bg=red,2pt},
	columns = {halign=c, fg=cyan9},
	rows = {valign=m, ht=1.5cm}
}

Les clefs les plus utilisées sont celles du tableau suivant.

Clef

Description

Valeurs possibles

halign

alignement horizontal

l, c, r, j (justifié)

valign

alignement vertical

m, b, t, h, f

wd

largeur de colonne

valeur en cm ou en pt

ht

hauteur de ligne

valeur en cm ou en pt

bg

couleur de fond (background color)

nom de la couleur

fg

couleur du texte (foreground color)

nom de la couleur

font

réglage de la police

\bfseries, \itshape, …

Note

On pourra se reporter au pages 20 et 21 de la documentation (tabularray) pour voir l’ensemble des clefs disponibles et les possibilités qu’elles offrent.

3.3.  Réglage d’une ligne/colonne/cellule particulière#

On peut régler les cellules, colonnes ou lignes indivivuellement en utilisant des clefs dont les noms sont les mêmes que précédemment, mais au singulier :

Quelques exemples :

  • row{2} : deuxième ligne

  • row{1,4} : lignes 1 ET 4

  • column{1-4} : colonnes 1 À 4

  • hline{1} : premier filet horizontal

  • vline{1,3} : premier et troisième filets verticaux

  • cell{⟨colonnnes⟩}{⟨lignes⟩} : choix d’une ou plusieurs cellules

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	hlines, vlines,
	columns = {c},
	hline{2} = {dashed, red, 2pt},
	rows = {m, 1.5cm},
	column{1} = {font = \bfseries},
	row{1,3} = {fg=red},
	cell{1}{2} = {bg=cyan8},
	cell{1,3}{3} = {font = \itshape}
}
Je ne 
    & veux pas
    &  travailler \\
% 
Je ne veux
    & pas
    & déjeuner \\
% 
Je veux
    & seulement
    & oublier
\end{tblr}

\end{document}

4.  Fusion de cellules#

tabularray permet également de fusionner des cellules. Pour cela on ajoute à l’option cell, les clefs r pour le nombre de lignes et c pour le nombre de colonnes que prendra la cellule.

Note

On peut voir dans l’exemple ci-dessous que, si du texte est présent dans les cellules qui sont fusionnées, il est ignoré.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	hlines, vlines,
	columns = {c, cyan9},
      rows = {m, 1.5cm},
      cell{2}{2} = {c=2}{fg=red, bg=yellow},
      cell{1}{1} = {r=3}{font=\bfseries}
}
Il portait des culottes
    & des bottes 
    & de moto \\
% 
IGNORÉE
    & Un blouson de 
    & IGNORÉE \\
% 
IGNORÉE
    & cuir noire avec
    & un aigle sur le dos
  \end{tblr}
  
\end{document}

5.  Gestion des filets#

Pour gérér les filets verticaux et horizontaux, la syntaxe est très proche de ce qui a été vu pour les lignes et les colonnes.

Les options hlines et vlines permettent d’avoir des filets horizontaux et verticaux partout.

Les options hline et vline permettent de sélectionner un filet particulier.

Dans tous ces cas, les clefs possibles sont les suivantes :

Clef

Description

Valeurs possibles

fg

couleur

cyan4, olive8, …

text

remplace la ligne par du texte

une lettre par exemple

wd

épaisseur

valeur en pt, ou en cm

dash

style de ligne

solid, dashed, dotted

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}

\begin{tblr}{
	hlines, 
	vlines,
	hline{1}={red, 2pt, dashed},
	vline{2}={cyan2, 4pt, dotted}
}
    {oubladi \\ oublada \\ oubladi}
    & {oubladi \\ oublada }
    & {Michelle \\ ma belle}
    & {sont des \\ mots qui}
    & { vont très \\ bien ensemble} \\
\end{tblr}

\end{document}

Astuce

Pour obtenir un filet horizontal double, par exemple en dessous de la première ligne, on pourra utiliser les deux lignes ci-dessous dans le desrciptif du tableau :

hline{2}={1}{-}{solid},
hline{2}={2}{-}{solid}

6.  Création de ses propres environnements de tableaux#

tabularray fournit une commande permettant de créer des tableaux types.

Dans l’exemple ci-dessous, on prépare une grille d’évaluation.

Astuce

On ne connaît pas a priori le nombre de lignes et de colonnes à l’avance. On utilise donc une possibilité fort pratique de tabularray : pour la sélection des cellules avec cell, les valeurs U, V, W, X, Y et Z désignent respectivement les six dernières colonnes (ou lignes).

On peut donc décider des caractéristiques des six dernières lignes sans connaître leur position.

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{xcolor}
\usepackage{tabularray}
\usepackage{babel}

\begin{document}


% Création du tableau « grille »
\NewTblrEnviron{grille}
\SetTblrInner[grille]{
	width=.9\linewidth,
	colspec = {|X[4]|X[4]|X|},
	hlines,
	hline{2,Y} ={1}{-}{solid},
	hline{2,Y} = {2}{-}{solid},
	columns = {valign=m},
	column{Z} = {halign=r, font=\large},
	rows = {.8cm},
	row{1} = {font=\bfseries,halign=c, bg=azure9},
	row{Z} = {font=\bfseries\large, bg=azure9},
	cell{Z}{1} = {c=2}{c},
}
% -------------------------------------------------------------------------------
% Appel et utilisation du tableau
\begin{grille}{} % penser à la paire d’accolades vide ici 
	Compétences
		& Observable
		& Points  \\
		APP - rechercher l'information utile
		& identifier le solvant extracteur dans le protocole
		& /2 \\
	%
	REA - réaliser des calculs
		& {applications numériques correctes; \\ conversions}
		& /2 \\
	%
	VAL - comparer un résultats à une valeur de référence
		& comparer la valeur obtenue avec celle donnée dans le doc 2
		& /1.5  \\
	%	
	COM - présenter une démarche
		& {rédaction; \\ utilisation du vocabulaire scientifique}
		& /3 \\
	%
    COM - utiliser le langage mathématique
		& rédaction du développement littéral
		& 1.5 \\
    TOTAL 
		& 
		& /10 \\
\end{grille}

\end{document}

Avertissement

Attention à ne pas oublier la paire d’accolades vide lors de l’appel du tableau !

7.  Tableau sur plusieurs pages#

tabularray fournit l’environnement longtblr qui permet au tableau de se poursuivre sur plusieurs pages. L’en-tête et le pied du tableau seront alors répétés sur chaque page.

Note

Pour en savoir plus sur les tableaux sur plusieurs pages : Comment composer un tableau s’étendant sur plus d’une page ?