Comment composer des tableaux de plus d'une page?

$\Reponse$ Le package supertabular permet de définir de longs tableaux, qui seront coupés automatiquement par \LaTeX si nécessaire, pour changer de page. L'environnement s'appelle supertabular. À l'intérieur de cet environnement, on définit le contenu du tableau de la même façon que dans l'environnement tabular. On peut, en plus, utiliser les commandes suivantes :

  • \tablefirsthead{…} définit le contenu de la première ligne du tableau ;
  • \tablehead{…} définit le contenu de la première ligne qui sera insérée en cas de changement de page au milieu du tableau ;
  • \tabletail{…} définit le contenu de la dernière ligne d'une page, en cas de changement de page au milieu du tableau ;
  • \tablelasttail{…} définit le contenu de la dernière ligne du tableau ;
  • \topcaption{…} et \bottomcaption{…} permettent de mettre une légende sur ce tableau, soit au début, soit à la fin (ces deux commandes sont incompatibles, si l'on utilise les deux, seule la légende de fin sera appliquée). \tablecaption{} place la légende à sa position « habituelle », qui est par défaut le haut du tableau.

Voici un exemple :

\begin{center}
  \tablefirsthead{\hline
    \multicolumn{1}{|c}{Nombre} & \multicolumn{1}{c}{Nombre$^2$} & Nombre$^4$ & \multicolumn{1}{c|}{!Nombre} \\ 
    \hline%
  }
  \tablehead{\hline
    \multicolumn{4}{|l|}{\small\textsl{suite du tableau}}\\
    \hline
    \multicolumn{1}{|c}{ Nombre} & \multicolumn{1}{c}{Nombre$^2$} & Nombre$^4$ & \multicolumn{1}{c|}{Nombre!} \\ 
    \hline%
  }
  \tabletail{\hline
    \multicolumn{4}{|r|}{\small\textsl{Suite à la page suivante...}}\\
    \hline%
  }
  \tablelasttail{\hline}
  \topcaption{Exemple}
  \bottomcaption{Exemple de grand tableau}
%
  \begin{supertabular}{| r@{\hspace{6.5mm}}|
      r@{\hspace{5.5mm}}| r | r|}
    1   &     1  &        1  &           1    \\
    2   &     4  &       16  &           2    \\
    3   &     9  &       81  &           6    \\
    4   &    16  &      256  &          24    \\
    5   &    25  &      625  &         120    \\
    6   &    36  &     1296  &         720    \\
    7   &    49  &     2401  &        5040    \\
    8   &    64  &     4096  &       40320    \\
    9   &    81  &     6561  &      362880    \\
    ... &    ... &      ...  &         ...    \\
  \end{supertabular}
\end{center}

\documentclass[10pt,french]{article}
 \usepackage[utf8]{inputenc}
 \usepackage{supertabular}
 \pagestyle{empty}

\begin{document}
  \tablefirsthead{\hline
    \multicolumn{1}{|c}{Nombre} & \multicolumn{1}{c}{Nombre$^2$} & Nombre$^4$ & \multicolumn{1}{c|}{!Nombre} \\ 
    \hline%
  }
  \tablehead{\hline
    \multicolumn{4}{|l|}{\small\textsl{suite du tableau}}\\
    \hline
    \multicolumn{1}{|c}{ Nombre} & \multicolumn{1}{c}{Nombre$^2$} & Nombre$^4$ & \multicolumn{1}{c|}{Nombre!} \\ 
    \hline%
  }
  \tabletail{\hline
    \multicolumn{4}{|r|}{\small\textsl{Suite à la page suivante...}}\\
    \hline%
  }
  \tablelasttail{\hline}
  \topcaption{Exemple}
  \bottomcaption{Exemple de grand tableau}
%
  \begin{supertabular}{| r@{\hspace{6.5mm}}|
      r@{\hspace{5.5mm}}| r | r|}
    1   &     1  &        1  &           1    \\
    2   &     4  &       16  &           2    \\
    3   &     9  &       81  &           6    \\
    4   &    16  &      256  &          24    \\
    5   &    25  &      625  &         120    \\
    6   &    36  &     1296  &         720    \\
    7   &    49  &     2401  &        5040    \\
    8   &    64  &     4096  &       40320    \\
    9   &    81  &     6561  &      362880    \\
    ... &    ... &      ...  &         ...    \\
  \end{supertabular}
\end{document}

$\Reponse$ Le package longtable est assez semblable au précédent, mais en un peu mieux. Il permet notamment d'avoir (modulo un nombre suffisant de compilations) la même largeur de colonnes dans tout le tableau, même si celui-ci est coupé sur plusieurs pages. Les en-têtes se définissent de manière un peu différente, comme dans l'exemple suivant :

\begin{longtable}{|p{0.2\linewidth}|p{0.2\linewidth}|p{0.2\linewidth}|}
   \hline
   Première colonne & Deuxième & Troisième 
   \endfirsthead
   \hline
   Première & Deuxième & Troisième \\
   \multicolumn{3}{|p{0.6666\linewidth}|}{Suite...}\\
   \endhead
   \hline
   \multicolumn{3}{|p{0.6666\linewidth}|}{Suite page suivante}
   \\ \hline 
   \endfoot 
   \hline
   \multicolumn{3}{|p{0.6666\linewidth}|}{Fin}\\
   \hline
   \endlastfoot 
   \hline
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   ... &    ... &      ...  \\ 
\end{longtable}

\documentclass[10pt,french]{article}
 \usepackage[utf8]{inputenc}
 \usepackage{longtable}
 \pagestyle{empty}

\begin{document}
\begin{longtable}{|p{0.2\linewidth}|p{0.2\linewidth}|p{0.2\linewidth}|}
   \hline
   Première colonne & Deuxième & Troisième 
   \endfirsthead
   \hline
   Première & Deuxième & Troisième \\
   \multicolumn{3}{|p{0.6666\linewidth}|}{Suite...}\\
   \endhead
   \hline
   \multicolumn{3}{|p{0.6666\linewidth}|}{Suite page suivante}
   \\ \hline 
   \endfoot 
   \hline
   \multicolumn{3}{|p{0.6666\linewidth}|}{Fin}\\
   \hline
   \endlastfoot 
   \hline
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   1   &     1  &        1  \\
   2   &     4  &       16  \\
   3   &     9  &       81  \\
   ... &    ... &      ...  \\ 
\end{longtable}
\end{document}
composition/tableaux/tableau_sur_plusieurs_pages.txt · Dernière modification: 2019/04/02 09:10 par jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0