---
myst:
html_meta:
keywords: tableau, tableaux, facile, facilement, complexe, joli
---
# Comment construire un tableau avec le package ?
Le package permet de composer des tableaux complexes simplement. La
syntaxe permet une séparation fond/forme qui correspond bien à la philosophie de LaTeX
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 :
```{noedit}
\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](/3_composition/tableaux/construire_un_tableau.md).
- La documentation de propose plusieurs syntaxes possibles, dont
certaines respectant moins la séparation fond/forme, qui ne seront pas présentées ici.
:::
## 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`.
### 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}
```
### 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 `\\`.
:::
### Un peu de couleur
Pour ajouter de la couleur au tableau, il suffit de charger le package .
charge également le package 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}
```
## Colonnes `X` pour largeur automatique
### 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}
```
### 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}
```
## Autre syntaxe
fournit aussi une autre possibilité de syntaxe pour la description
du tableau. Elle permet un réglage plus fin de l’aspect des cellules.
### 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}
```
### 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.
:::{caution} 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 :
```{noedit}
\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
() pour voir l’ensemble des clefs disponibles et les
possibilités qu’elles offrent.
:::
### 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}
```
## Fusion de cellules
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}
```
## 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}
```
:::{tip}
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 :
```{noedit}
hline{2}={1}{-}{solid},
hline{2}={2}{-}{solid}
```
:::
## Création de ses propres environnements de tableaux
fournit une commande permettant de créer des tableaux types.
Dans l’exemple ci-dessous, on prépare une grille d’évaluation.
:::{tip}
On ne connaît pas *a priori* le nombre de lignes et de colonnes à l’avance. On utilise donc
une possibilité fort pratique de : 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}
```
:::{warning}
Attention à ne pas oublier la paire d’accolades vide lors de l’appel du tableau !
:::
## Tableau sur plusieurs pages
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 : [](/3_composition/tableaux/tableau_sur_plusieurs_pages.md)
:::