Ceci est une ancienne révision du document !


Comment fixer la largeur d'un tableau?

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

Les fonctionnalités de base de \LaTeX permettent uniquement d'étirer les espaces: l'environnement tabular* prend un argument supplémentaire (avant celui décrivant la mise en forme des colonnes avec clpr) qui contient une spécification de longueur, sous la forme 15cm ou \columnwidth, par exemple. Pour que cela fonctionne, il faut également utiliser la commande \extracolsep dans l'argument suivant (celui 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.

$\Reponse$ L'environnement tabular* permet de faire cela, mais seul l'espace entre les colonnes peut s'adapter. Cet espace n'est pas à confondre avec \tabcolsep qui est l'espacement de part et d'autre d'une colonne et non celui qui sépare celles-ci. On doit utiliser \extracolsep{\stretch{1}} ainsi

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

Une autre possibilité, avec le package 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.

$\Reponse$ 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:


\begin{flushleft}
\begin{tabularx}{\linewidth}{|X|X|}
   \hline
    salut   & coucou \\
    bonjour & hello  \\
   \hline
\end{tabularx}
\end{flushleft}

Cet exemple donnera un tableau s'étalant sur tout une ligne et divisé en deux colonnes de largeur égale.

$\Reponse$ 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.

$\Reponse$ 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:

3_composition/tableaux/fixer_la_largeur_d_un_tableau.1625512093.txt.gz · Dernière modification : 2021/07/05 19:08 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0