Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
composition:tableaux:fixer_la_largeur_d_un_tableau [2018/12/09 10:25] jejust3_composition:tableaux:fixer_la_largeur_d_un_tableau [2022/10/10 14:47] (Version actuelle) – Usage de ⟨...⟩ dbitouze
Ligne 2: Ligne 2:
  
  
-$\Reponse$  L'environnement ''tabular*'' permet de faire celamais +Fondamentalement, deux techniques sont à notre disposition pour jouer sur la largeur d'un tableau 
-seul l'espace entre les colonnes peut s'adapter.  Cet espace n'est pas +pendant sa mise en formepour obtenir à la fin la largeur totale désirée. 
-à confondre avec ''\tabcolsep'' qui est l'espacement de part et +On peut: 
-d'autre d'une colonne et non celui qui sépare celles-ci On doit +  * étirer les espaces entre les colonnes 
-utiliser ''\extracolsep{\stretch{1}}'' ainsi+  * é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 <latex>\LaTeX</latex> 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 (avec ''clpr'').
 +
 +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), à l'intérieur d'une directive ''@{}''.
 +Voici comment ça se présente:
 +<code latex>
 +\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
 +</code>
 +
 +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}}''.
 +
 +<note important>
 +''\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.
 +</note>
 +
 +<WRAP column 58ex>
 <code latex> <code latex>
   \begin{tabular*}{0.5\linewidth}{   \begin{tabular*}{0.5\linewidth}{
Ligne 17: Ligne 47:
     }     }
     \hline     \hline
-    fonctions rôle \\+    Fonction  Rôle \\
     \hline     \hline
     atoi()    & transforme une chaîne de caractères     atoi()    & transforme une chaîne de caractères
Ligne 31: Ligne 61:
   \end{tabular*}   \end{tabular*}
 </code> </code>
 +</WRAP>
 +<WRAP column 30ex>
 +<latex>
 +  \begin{tabular*}{0.5\linewidth}{
 +      @{\extracolsep{\stretch{1}}}
 +      l
 +      p{8cm}
 +      @{}
 +    }
 +    \hline
 +    Fonction  & 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*}
 +</latex>
 +</WRAP>
 +<WRAP clear />
  
-% 
-ou (avec le package [[ctanpkg>array|array]]) 
-% 
  
 +==== Avec l'extension “array” ====
 +
 +Une autre possibilité, avec l'extension [[ctanpkg>array]]:
 +
 +<WRAP column 58ex>
 <code latex> <code latex>
 +\usepackage{array}
 +  ...
 +
   \begin{tabular*}{0.5\linewidth}{   \begin{tabular*}{0.5\linewidth}{
       !{\extracolsep{\stretch{1}}}       !{\extracolsep{\stretch{1}}}
Ligne 43: Ligne 104:
     }     }
     \hline     \hline
-    fonctions rôle \\+    Fonction  Rôle \\
     \hline     \hline
     atoi()    & transforme une chaîne de caractères     atoi()    & transforme une chaîne de caractères
Ligne 57: Ligne 118:
   \end{tabular*}   \end{tabular*}
 </code> </code>
 +</WRAP>
 +<WRAP column 30ex>
 +<latexdoc>
 +\documentclass{article}
 +  \usepackage[french]{babel}
 +  \usepackage{lmodern}
 +  \usepackage{array}
 +  \pagestyle{empty}
  
 +\begin{document}
 +  \begin{tabular*}{0.5\linewidth}{
 +      !{\extracolsep{\stretch{1}}}
 +      l
 +      p{8cm}
 +    }
 +    \hline
 +    Fonction  & 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*}
 +\end{document}
 +</latexdoc>
 +</WRAP>
 +<WRAP clear />
  
-''!{code}'' est équivalent à ''@{code}'' à la +''!{code}'' est équivalent à ''@{code}'' à la différence près que 
-différence près que la séparation ''\tabcolsep'' n'est pas +la séparation ''\tabcolsep'' n'est pas supprimée. Donc soit on supprime 
-supprimée.  Donc soit on supprime cette séparation des deux côtés du +cette séparation des deux côtés du tableau, soit on utilise cette fonction ''!{code}''.
-tableau, soit on utilise cette fonction ''!{code}''.+
  
  
-$\Reponse$  Les packages [[ctanpkg>tabularx|tabularx]] et [[ctanpkg>easytable|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: ainsi, 
  
 +===== En jouant sur la largeur des colonnes =====
 +
 +Dans les cas simples, il est bien sûr possible de le faire « à la main »,
 +en fixant la largeur des colonnes:
  
 <code latex> <code latex>
 +\begin{tabular}{p{2cm}p{3cm}}
 +  ...
 +\end{tabular}
 +</code>
 +
 +ou même en faisant dépendre la largeur des colonnes de la largeur de la page:
 +
 +<code latex>
 +\begin{tabular}{p{.25\textwidth}p{.33\textwidth}}
 +  ...
 +\end{tabular}
 +</code>
 +
 +Mais diverses extensions ont été développées pour s'en occuper pour vous.
 +
 +
 +==== Avec l'extension “tabularx” ====
 +
 +L'extension [[ctanpkg>tabularx]] définit un nouveau type de colonne: ''X''.
 +Une colonne de format ''X'' se comporte comme une colonne ''p{⟨//largeur//⟩}'', mais
 +elle est capable de s'étendre pour remplir l'espace disponible.
 +Il n'est pas nécessaire de passer un argument ''⟨//largeur//⟩''
 +
 +S'il y a plus d'une colonne ''X'' dans un tableau, l'espace libre est réparti
 +entre elles.
 +
 +
 +Voici un exemple qui donne un tableau s'étalant sur toute la largeur d'une ligne,
 +et divisé en deux colonnes de largeur égale:
 +
 +<WRAP column 50ex>
 +<code latex>
 +\usepackage{tabularx}
 +  ...
 +
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 81: Ligne 206:
 \end{tabularx} \end{tabularx}
 </code> </code>
 +</WRAP>
 +<WRAP column 30ex>
 +<latexdoc>
 +\documentclass{article}
 +  \usepackage{lmodern}
 +  \usepackage[width=8cm]{geometry}
 +  \usepackage{tabularx}
 +  \usepackage[french]{babel}
 +  \pagestyle{empty}
  
-donne +\begin{document}
- +
-<latex> +
-\begin{flushleft}+
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 92: Ligne 223:
    \hline    \hline
 \end{tabularx} \end{tabularx}
-\end{flushleft+\end{document
-</latex>+</latexdoc> 
 +</WRAP> 
 +<WRAP clear /> 
 + 
 + 
 +==== Avec l'extension “tabulary” ====
  
-Cet exemple donnera un tableau s'étalant sur tout une ligne et divisé +L'extension [[ctanpkg>tabulary]] (du même auteur que [[ctanpkg>tabularx]]) fournit un moyen d'« équilibrer » 
-en deux colonnes de largeur égale.+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é.
  
-$\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. 
  
 +==== Avec d'autres extensions ====
  
-$\Reponse$  Le package [[ctanpkg>tabulary|tabulary]] fonctionne un peu comme +L'extension [[ctanpkg>ltxtable]] combine les fonctionnalités des extensions [[ctanpkg>longtable]] et [[ctanpkg>tabularx]]. 
-[[ctanpkg>tabularx|tabularx]], mais accepte les paramètres ''L'', ''C'', +Lisez bien [[texdoc>ltxtable|sa documentation]], car son utilisation est peu intuitive.
-''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).+
  
 +L'extension [[ctanpkg>easytable]] fonctionne un peu comme [[ctanpkg>tabularx]].
  
 +-----
 +//Sources ://
 +  * [[faquk>FAQ-fixwidtab|Fixed-width tables]],
 +  * [[https://texblog.org/2019/06/03/control-the-width-of-table-columns-tabular-in-latex/|Control the width of table columns (tabular) in LaTeX]],
 +  * [[https://tex.stackexchange.com/questions/223445/tabular-fixed-width|Tabular fixed width]].
  
-{{htmlmetatags>metatag-keywords=(LaTeX) +{{htmlmetatags>metatag-keywords=(LaTeX,tables,mise en forme des tableaux,largeur fixe,tableau de la largeur de la page,flottants
-metatag-og:title=(Comment fixer la largeur d'un tableau?)+metatag-og:title=(Comment fixer la largeur d'un tableau)
 metatag-og:site_name=(FAQ LaTeX francophone) metatag-og:site_name=(FAQ LaTeX francophone)
 }} }}
  
3_composition/tableaux/fixer_la_largeur_d_un_tableau.1544351116.txt.gz · Dernière modification : 2018/12/09 10:25 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0