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 [2016/10/16 07:57] jejust3_composition:tableaux:fixer_la_largeur_d_un_tableau [2022/10/10 14:47] (Version actuelle) – Usage de ⟨...⟩ dbitouze
Ligne 1: Ligne 1:
-\question{Comment fixer la largeur d'un tableau ?} %7.20+====== Comment fixer la largeur d'un tableau? ======
  
-\reponse L'environnement \env{tabular*} permet de faire celamais + 
-seul l'espace entre les colonnes peut s'adapter Cet espace n'est pas +Fondamentalement, deux techniques sont à notre disposition pour jouer sur la largeur d'un tableau 
-à confondre avec \param{\\tabcolsep} qui est l'espacement de part et +pendant sa mise en forme, pour obtenir à la fin la largeur totale désirée. 
-d'autre d'une colonne et non celui qui sépare celles-ci.  On doit +On peut: 
-utiliser \texcode{\cmd{extracolsep}\{\cmd{stretch}\{1\}\}} ainsi +  * étirer les espaces entre les colonnes ; 
-% +  * étirer certaines des colonnes du tableau. 
-\begin{noexemple}+ 
 +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 tableausous 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>
   \begin{tabular*}{0.5\linewidth}{   \begin{tabular*}{0.5\linewidth}{
       @{\extracolsep{\stretch{1}}}       @{\extracolsep{\stretch{1}}}
Ligne 15: 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 23: Ligne 55:
                 (attention, d'utilisation délicate) \\                 (attention, d'utilisation délicate) \\
     printf()  & impression formatée d'une chaîne de     printf()  & impression formatée d'une chaîne de
-                caract\`eres \\+                caractères \\
     sqrt()    & racine carrée (penser à lier à la     sqrt()    & racine carrée (penser à lier à la
                 bibliothèque mathématique) \\                 bibliothèque mathématique) \\
     \hline     \hline
   \end{tabular*}   \end{tabular*}
-\end{noexemple+</code> 
-% +</WRAP> 
-ou (avec le package \pack{array}) +<WRAP column 30ex> 
-% +<latex> 
-\begin{noexemple}+  \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 /> 
 + 
 + 
 +==== Avec l'extension “array” ==== 
 + 
 +Une autre possibilité, avec l'extension [[ctanpkg>array]]: 
 + 
 +<WRAP column 58ex> 
 +<code latex> 
 +\usepackage{array} 
 +  ... 
   \begin{tabular*}{0.5\linewidth}{   \begin{tabular*}{0.5\linewidth}{
       !{\extracolsep{\stretch{1}}}       !{\extracolsep{\stretch{1}}}
Ligne 39: 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 47: Ligne 112:
                 (attention, d'utilisation délicate) \\                 (attention, d'utilisation délicate) \\
     printf()  & impression formatée d'une chaîne de     printf()  & impression formatée d'une chaîne de
-                caract\`eres \\+                caractères \\
     sqrt()    & racine carrée (penser à lier à la     sqrt()    & racine carrée (penser à lier à la
                 bibliothèque mathématique) \\                 bibliothèque mathématique) \\
     \hline     \hline
   \end{tabular*}   \end{tabular*}
-\end{noexemple+</code> 
-% +</WRAP> 
-\texcode{!\marg{code}} est équivalent à \texcode{@\marg{code}} à la +<WRAP column 30ex> 
-différence près que la séparation \param{\\tabcolsepn'est pas +<latexdoc> 
-supprimée.  Donc soit on supprime cette séparation des deux côtés du +\documentclass{article
-tableau, soit on utilise cette fonction \texcode{!\marg{code}}.+  \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 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 ===== 
 + 
 +Dans les cas simples, il est bien sûr possible de le faire « à la main », 
 +en fixant la largeur des colonnes: 
 + 
 +<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} 
 +  ...
  
-\reponse Les packages \pack{tabularx} et \pack{easytable} permettent 
-de faire cela. Avec l'environnement \env{tabularx}, par exemple, on 
-peut utiliser un nouveau type de colonne: \texcode{X} qui ressemble à 
-une colonne de type \texcode{p\marg{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, 
-% 
-\begin{noexemple} 
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 73: Ligne 205:
    \hline    \hline
 \end{tabularx} \end{tabularx}
-\end{noexemple+</code> 
-% +</WRAP> 
-donne +<WRAP column 30ex> 
-% +<latexdoc> 
-\begin{flushleft}+\documentclass{article
 +  \usepackage{lmodern} 
 +  \usepackage[width=8cm]{geometry} 
 +  \usepackage{tabularx} 
 +  \usepackage[french]{babel} 
 +  \pagestyle{empty} 
 + 
 +\begin{document}
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 84: Ligne 223:
    \hline    \hline
 \end{tabularx} \end{tabularx}
-\end{flushleft+\end{document
- +</latexdoc> 
-Cet exemple donnera un tableau s'étalant sur tout une ligne et divisé +</WRAP> 
-en deux colonnes de largeur égale.+<WRAP clear /> 
 + 
 + 
 +==== Avec l'extension “tabulary” ==== 
 + 
 +L'extension [[ctanpkg>tabulary]] (du même auteur que [[ctanpkg>tabularx]]) 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é. 
 + 
 + 
 +==== Avec d'autres extensions ==== 
 + 
 +L'extension [[ctanpkg>ltxtable]] combine les fonctionnalités des extensions [[ctanpkg>longtable]] et [[ctanpkg>tabularx]]. 
 +Lisez bien [[texdoc>ltxtable|sa documentation]], car son utilisation est peu intuitive.
  
-\reponse Il est \'egalement possible de sp\'ecifier la largeur d'une +L'extension [[ctanpkg>easytable]] fonctionne un peu comme [[ctanpkg>tabularx]].
-colonne (\texcode{p\marg{larg}}).  \`A partir de l\`a, en g\'erant +
-habilement les longueurs, on peut fixer la largeur du tableau et de +
-chacune de ses colonnes.+
  
-\reponse Le package \pack{tabulary} fonctionne un peu comme +----- 
-\pack{tabularx}, mais accepte les paramètres \texcode{L}, \texcode{C}, +//Sources :// 
-\texcode{R}\texcode{J} qui permettent respectivement d'aligner à +  * [[faquk>FAQ-fixwidtab|Fixed-width tables]]
-gauchede centrer, d'aligner à droite et de justifier le contenu +  * [[https://texblog.org/2019/06/03/control-the-width-of-table-columns-tabular-in-latex/|Control the width of table columns (tabular) in LaTeX]]
-d'une colonneDe plus, la largeur des colonnes est proportionnelle à +  * [[https://tex.stackexchange.com/questions/223445/tabular-fixed-width|Tabular fixed width]].
-la longueur de la plus grande entrée (de chaque colonne).+
  
-\endinput+{{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:site_name=(FAQ LaTeX francophone) 
 +}}
  
3_composition/tableaux/fixer_la_largeur_d_un_tableau.1476604679.txt.gz · Dernière modification : 2016/10/16 07:57 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0