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
3_composition:tableaux:fixer_la_largeur_d_un_tableau [2021/07/05 19:08] – Intégration du contenu de la page "3_composition/tableaux/fixer_la_largeur_d_un_tableau2". jejust3_composition:tableaux:fixer_la_largeur_d_un_tableau [2022/10/10 14:47] (Version actuelle) – Usage de ⟨...⟩ dbitouze
Ligne 2: Ligne 2:
  
  
-Deux techniques sont à notre disposition pour jouer sur 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. pendant sa mise en forme, pour obtenir à la fin la largeur totale désirée.
 On peut: On peut:
-  * étirer les espaces entre les colonnes,+  * étirer les espaces entre les colonnes ;
   * étirer certaines des colonnes du tableau.   * étirer certaines des colonnes du tableau.
  
-Voici comment appliquer ces deux possibilités:+Voici comment appliquer ces deux possibilités.
  
  
 ===== En jouant sur les espaces intercolonnes ===== ===== 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 fonctionnalités de base de <latex>\LaTeX</latex> permettent uniquement d'étirer
-les espaces: l'environnement ''tabular*'' prend un argument supplémentaire +les espaces: l'environnement ''tabular*'' prend un argument supplémentaire qui indique 
-(avant celui décrivant la mise en forme des colonnes avec ''clpr''qui contient +la largeur totale désirée pour le tableau, sous la forme d'une longueur comme ''15cm'' ou ''\columnwidth''. 
-une spécification de longueur, sous la forme ''15cm'' ou ''\columnwidth'', par exemple.+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 Pour que cela fonctionne, il faut également utiliser la commande ''\extracolsep'' dans l'argument suivant
-(celui avec ''clpr''), à l'intérieur d'une directive ''@{}''.+(celui qui décrit la mise en forme des colonnes), à l'intérieur d'une directive ''@{}''.
 Voici comment ça se présente: Voici comment ça se présente:
 <code latex> <code latex>
 \begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr} \begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
 </code> </code>
 +
 La commande ''\extracolsep'' s'applique également à tous les espaces intercolonnes 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, 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. 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>
- +
-$\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 +
 <code latex> <code latex>
   \begin{tabular*}{0.5\linewidth}{   \begin{tabular*}{0.5\linewidth}{
Ligne 45: 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 59: 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 />
  
-Une autre possibilité, avec le package [[ctanpkg>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 69: 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 83: 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 différence près que ''!{code}'' est équivalent à ''@{code}'' à la différence près que
Ligne 93: Ligne 160:
 ===== En jouant sur la largeur des colonnes ===== ===== En jouant sur la largeur des colonnes =====
  
-L'extension [[ctanpkg>tabularx]] définit une spécification de colonne en plus de ''clpr'': ''X''+Dans les cas simples, il est bien sûr possible de le faire « à la main », 
-Les colonnes de format ''X'' se comportent comme des colonnes ''p'' qui s'étendent pour remplir +en fixant la largeur des colonnes:
-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 [[ctanpkg>tabulary]] (du même auteur) fournit un moyen d'« équilibrer » +<code latex
-l'espace occupé par les colonnes d'un tableau. Elle définit des spécifications de colonne +\begin{tabular}{p{2cm}p{3cm}} 
-''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. +\end{tabular} 
-L'extension examine la largeur « naturelle » de chaque colonne (c'est-à-dire la largeur qu'elle aurait +</code>
-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 [[ctanpkg>ltxtable]] combine les fonctionnalités des paquets [[ctanpkg>longtable]] et [[ctanpkg>tabularx]]. +ou même en faisant dépendre la largeur des colonnes de la largeur de la page:
-Lisez bien [[texdoc>ltxtable|sa documentation]], car son utilisation est peu intuitive.+
  
 +<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” ====
  
-$\Reponse$  Les packages [[ctanpkg>tabularx]] et [[ctanpkg>easytable]] permettent +L'extension [[ctanpkg>tabularx]] définit un nouveau type de colonne: ''X''. 
-de faire cela. Avec l'environnement ''tabularx'', par exemple, on peut utiliser +Une colonne de format ''X'' se comporte comme une colonne ''p{⟨//largeur//}'', mais 
-un nouveau type de colonne: ''X'' qui ressemble à une colonne de type ''p{larg}'', +elle est capable de s'étendre pour remplir l'espace disponible. 
-si ce n'est qu'il n'est pas nécessaire de passer l'argument \meta{larg}, +Il n'est pas nécessaire de passer un argument ''⟨//largeur//⟩''
-et que la largeur s'adapte à la place restante:+
  
 +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> <code latex>
 +\usepackage{tabularx}
 +  ...
 +
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 132: 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}
  
-qui donne: +\begin{document}
- +
-<latex> +
-\begin{flushleft}+
 \begin{tabularx}{\linewidth}{|X|X|} \begin{tabularx}{\linewidth}{|X|X|}
    \hline    \hline
Ligne 143: Ligne 223:
    \hline    \hline
 \end{tabularx} \end{tabularx}
-\end{flushleft+\end{document
-</latex>+</latexdoc> 
 +</WRAP> 
 +<WRAP clear />
  
-Cet exemple donnera un tableau s'étalant sur tout une ligne et divisé 
-en deux colonnes de largeur égale. 
  
 +==== Avec l'extension “tabulary” ====
  
-$\Reponse$  Il est également possible de spécifier la largeur d'une +L'extension [[ctanpkg>tabulary]] (du même auteur que [[ctanpkg>tabularx]]) fournit un moyen d'« équilibrer » 
-colonne (''p{larg}'').  À partir de làen gérant habilement les longueurs+l'espace occupé par les colonnes d'un tableau. Elle définit des spécifications de colonne 
-on peut fixer la largeur du tableau et de chacune de ses colonnes.+''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$  Le package [[ctanpkg>tabulary]] fonctionne un peu comme [[ctanpkg>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). 
  
 +==== 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.
 +
 +L'extension [[ctanpkg>easytable]] fonctionne un peu comme [[ctanpkg>tabularx]].
  
 ----- -----
-//Sources://+//Sources ://
   * [[faquk>FAQ-fixwidtab|Fixed-width tables]],   * [[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://texblog.org/2019/06/03/control-the-width-of-table-columns-tabular-in-latex/|Control the width of table columns (tabular) in LaTeX]],
Ligne 169: Ligne 260:
  
 {{htmlmetatags>metatag-keywords=(LaTeX,tables,mise en forme des tableaux,largeur fixe,tableau de la largeur de la page,flottants) {{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.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