Ceci est une ancienne révision du document !
Comment fixer la largeur d'un tableau?
Fondamentalement, deux techniques sont à notre disposition pour jouer sur la largeur d'un tableau pendant sa mise en forme, pour obtenir à la fin la largeur totale désirée. On peut:
- étirer les espaces entre les colonnes,
- étirer certaines des colonnes du tableau.
Voici comment appliquer ces deux possibilités:
En jouant sur les espaces intercolonnes
Avec les fonctions de base de LaTeX
Les fonctionnalités de base de permettent uniquement d'étirer
les espaces: l'environnement
tabular*
prend un argument supplémentaire qui indique
la largeur totale désirée pour le tableau, sous la forme d'une longueur comme 15cm
ou \columnwidth
.
Cet argument s'écrit avant celui qui décrit la mise en forme des colonnes du tableau.
Pour que cela fonctionne, il faut également utiliser la commande \extracolsep
dans l'argument suivant
(celui qui décrit la mise en forme des colonnes, avec clpr
), à l'intérieur d'une directive @{}
.
Voici comment ça se présente:
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
La commande \extracolsep
s'applique également à tous les espaces intercolonnes
situés à sa droite ; si vous ne souhaitez pas que tous les espaces soient étirés,
ajoutez \extracolsep{0pt}
pour annuler l'effet de la commande initiale.
On peut également utiliser \extracolsep{\stretch{1}}
.
\extracolsep
ne doit pas être confondu avec \tabcolsep
, qui est l'espacement
de part et d'autre d'une colonne et non celui qui sépare celles-ci.
\begin{tabular*}{0.5\linewidth}{ @{\extracolsep{\stretch{1}}} l p{8cm} @{} } \hline fonctions & rôle \\ \hline atoi() & transforme une chaîne de caractères en entier \\ fscanf() & remplit les variables dont on donne l'adresse à partir d'un fichier (attention, d'utilisation délicate) \\ printf() & impression formatée d'une chaîne de caractères \\ sqrt() & racine carrée (penser à lier à la bibliothèque mathématique) \\ \hline \end{tabular*}
Avec l'extension “array”
Une autre possibilité, avec l'extension array:
\usepackage{array} ... \begin{tabular*}{0.5\linewidth}{ !{\extracolsep{\stretch{1}}} l p{8cm} } \hline fonctions & rôle \\ \hline atoi() & transforme une chaîne de caractères en entier \\ fscanf() & remplit les variables dont on donne l'adresse à partir d'un fichier (attention, d'utilisation délicate) \\ printf() & impression formatée d'une chaîne de caractères \\ sqrt() & racine carrée (penser à lier à la bibliothèque mathématique) \\ \hline \end{tabular*}
!{code}
est équivalent à @{code}
à la différence près que
la séparation \tabcolsep
n'est pas supprimée. Donc soit on supprime
cette séparation des deux côtés du tableau, soit on utilise cette fonction !{code}
.
En jouant sur la largeur des colonnes
L'extension tabularx définit une spécification de colonne en plus de clpr
: X
.
Les colonnes de format X
se comportent comme des colonnes p
qui s'étendent pour remplir
l'espace disponible. S'il y a plus d'une colonne X
dans un tableau, l'espace libre est réparti
entre elles.
L'extension tabulary (du même auteur) fournit un moyen d'« équilibrer »
l'espace occupé par les colonnes d'un tableau. Elle définit des spécifications de colonne
C
, L
, R
et J
, qui donnent, respectivement, des versions centrée, gauche, droite
et justifiée des colonnes qui se partagent l'espace en trop.
L'extension examine la largeur « naturelle » de chaque colonne (c'est-à-dire la largeur qu'elle aurait
sur une feuille de papier de largeur infinie) et alloue de l'espace à chaque colonne en conséquence.
Elle fait quelques vérifications pour que les entrées vraiment grandes n'écrasent pas tout le reste
(il y a une notion de « largeur maximale »), et pour que les entrées minuscules ne deviennent pas
plus petites qu'un minimum spécifié.
Bien sûr, tout ce travail signifie que l'extension doit compiler chaque ligne plusieurs fois,
donc tout ce qui produit des effets de bord (par exemple, un compteur qui serait utilisé
pour compter les lignes) devient inévitablement peu fiable, et ne devrait même pas être essayé.
L'extension ltxtable combine les fonctionnalités des paquets longtable et tabularx. Lisez bien sa documentation, car son utilisation est peu intuitive.
Les packages tabularx et easytable permettent
de faire cela. Avec l'environnement
tabularx
, par exemple, on peut utiliser
un nouveau type de colonne: X
qui ressemble à une colonne de type p{larg}
,
si ce n'est qu'il n'est pas nécessaire de passer l'argument \meta{larg},
et que la largeur s'adapte à la place restante:
\begin{tabularx}{\linewidth}{|X|X|} \hline salut & coucou \\ bonjour & hello \\ \hline \end{tabularx}
qui donne:
Cet exemple donnera un tableau s'étalant sur tout une ligne et divisé en deux colonnes de largeur égale.
Il est également possible de spécifier la largeur d'une
colonne (
p{larg}
). À partir de là, en gérant habilement les longueurs,
on peut fixer la largeur du tableau et de chacune de ses colonnes.
Le package tabulary fonctionne un peu comme tabularx,
mais accepte les paramètres
L
, C
, R
, J
qui permettent respectivement
d'aligner à gauche, de centrer, d'aligner à droite et de justifier le contenu d'une colonne.
De plus, la largeur des colonnes est proportionnelle à la longueur de la plus grande entrée
(de chaque colonne).
Sources: