Outils pour utilisateurs

Outils du site


issue205:latex

Last time the column was about tabs and tables. One of the big drawbacks with default tables is they cannot extend over the end of a page. An author is limited to tables that are one page or less in size. If a tabular environment extends beyond the limits of one page the extra content overwrites the page’s bottom margin and gives an Overfull \vbox message when compiled. Two packages have been built to overcome this difficulty: supertabular and longtable. They have different features and have their own strengths and weaknesses (as is true of all packages). Supertabular evaluates the amount of used space every time it encounters a
command (remember
tells Latex – Tex to insert a line break and carriage return). When the amount of used space equals the allowed text height, then supertabular closes the tabular environment, starts a new page with the appropriate header and then re-opens the tabular environment. This method implies that column widths (and the corresponding table width) can vary from page to page. Because supertabular uses an estimate of the content-free space available on a page, this estimate can sometimes be wrong. There are ways to control both row-height and column-width to prevent situations in which the table width varies from page to page, or to prevent the last row of a table from being placed on a page by itself.

La dernière fois, l'article portait sur les onglets et les tableaux. L’un des principaux inconvénients des tableaux par défaut est qu’ils ne peuvent pas s’étendre à la fin d’une page. Un auteur est limité aux tableaux d’une page ou moins. Si un environnement tabulaire dépasse les limites d’une page, le contenu supplémentaire écrase la marge inférieure de la page et donne un message Overfull \vbox lors de la compilation. Deux paquets ont été construits pour surmonter cette difficulté : supertabular et longtable. Ils ont des caractéristiques différentes et ont leurs propres forces et faiblesses (comme c’est le cas de tous les paquets).

Supertabular évalue la quantité d’espace utilisé chaque fois qu’il rencontre une commande
(rappelez-vous
dit à LaTeX – TeX d’insérer un saut de ligne et un retour de chariot). Lorsque la quantité d’espace utilisée est égale à la hauteur de texte autorisée, supertabular ferme l’environnement tabulaire, démarre une nouvelle page avec l’en-tête approprié, puis rouvre l’environnement tabulaire. Cette méthode implique que la largeur des colonnes (et la largeur du tableau correspondante) peut varier d’une page à l’autre. Étant donné que supertabular utilise une estimation de l’espace libre de contenu disponible sur une page, cette estimation peut parfois être erronée. Il existe des moyens de contrôler à la fois la hauteur de ligne et la largeur de colonne pour éviter les situations dans lesquelles la largeur du tableau varie d’une page à l’autre, ou pour empêcher la dernière ligne d’un tableau d’être placée toute seule sur une page.

Note: Because page breaks occur only after a
command, page breaks in a table must occur between rows and cannot occur inside a row. Supertabular is an environment that first requires the package to be loaded, and then requires the environment to be started. It also requires the environment to be closed. There are four somewhat different commands which can be used to begin the environment depending on the needs of the author. \begin{supertabular}{colspec} \begin{supertabular*}{width}{colspec} \begin{mpsupertabular}{colspec} \begin{mpsupertabular*}{width}{colspec} colspec is set up the same way as the tabular environment. It indicates how many columns, what the alignment of the contents will be, and often the character used to separate columns from each other. Width is a required attribute. As you would expect it sets a fixed width for the table. The mpsupertabular environments wrap each supertabular environment into a minipage environment. This allows the footnote command to be used inside the table and the footnote is printed at the end of the relevant page.

Remarque : Étant donné que les sauts de page ne se produisent qu’après une commande \\, les sauts de page dans un tableau doivent se produire entre les lignes et ne peuvent pas se produire à l’intérieur d’une ligne.

Supertabular est un environnement qui nécessite d’abord le chargement du paquet, puis le démarrage de l’environnement. Il exige également que l’environnement soit fermé. Il y a quatre commandes quelque peu différentes qui peuvent être utilisées pour commencer l’environnement en fonction des besoins de l’auteur :

\begin{supertabular}{colspec}

\begin{supertabular*}{width}{colspec}

\begin{mpsupertabular}{colspec}

\begin{mpsupertabular*}{width}{colspec}

colspec est configuré de la même manière que l’environnement tabulaire. Il indique le nombre de colonnes, l’alignement du contenu et souvent le caractère utilisé pour séparer les colonnes les unes des autres.

La largeur est un attribut obligatoire. Comme vous vous en doutez, il définit une largeur fixe pour le tableau.

Les environnements mpsupertabular enveloppent chaque environnement supertabular dans un environnement minipage. Cela permet d’utiliser la commande footnote à l’intérieur du tableau et la note est imprimée en bas de la page concernée.

The command shrinkheight{height} may be used to shrink (or increase if a negative length is used) the height of a row. This is useful in situations when the last row of a table appears at the top of a page. It is put at the start of the affected row. For example, in the sample table, it is possible to shrink the row originally at the bottom of the first page so the row at the top of the second page moves up. For more options read the documentation for supertabular. Although it is 24 pages long, most of the content is an explanation of the inner workings of the supertabular macro. There are also a few example long tables which reward the reader who invests a little time to understand them. Longtable: Like supertabular, this is also an environment which aids the writer to use tables that require more than one page. Like supertabular, the 27-page documentation is mostly details of the macro coding. Like supertabular, the documentation has some valuable examples.

La commande shrinkheight{height} peut être utilisée pour réduire (ou augmenter si une longueur négative est utilisée) la hauteur d’une ligne. Cela est utile lorsque la dernière ligne d’un tableau apparaît en haut d’une page. Elle est placée au début de la ligne concernée. Par exemple, dans le tableau d’exemple, il est possible de réduire la ligne à l’origine en bas de la première page afin que la ligne en haut de la deuxième page se déplace vers le haut.

Pour plus d’options, lisez la documentation pour supertabular. Bien qu’elle fasse 24 pages, la majeure partie du contenu est une explication du fonctionnement interne de la macro supertabular. Il existe également quelques exemples de longues tables qui récompensent le lecteur qui investit un peu de temps pour les comprendre.

Longtable : comme supertabular, c’est aussi un environnement qui aide l’auteur à utiliser des tableaux qui nécessitent plus d’une page. Comme supertabular, la documentation de 27 pages est principalement des détails du codage macro. Comme supertabular, la documentation contient quelques exemples précieux.

The longtable environment saves information about the width of each table in an aux file. It then uses this information in a second compile to calculate and set the width of each column to the widest required by the contents. This implies any file that uses longtable should be compiled several times before accepting the final pdf output. The major difference between supertabular and longtable is most parameters in longtable are set inside the code for the longtable environment, most for supertabular are set before or outside the environment. There are a few parameters set in the sample code shown right. Notice the [c] instruction in the begin command. With longtable, the position of the table can be set either l(eft), c(enter) or r(ight) in the begin command. With supertabular the table position is set outside the supertabular environment. (See the begin{center} command in the supertabular code fragment.

L’environnement longtable enregistre des informations sur la largeur de chaque table dans un fichier aux. Il utilise ensuite ces informations dans une deuxième compilation pour calculer et définir la largeur de chaque colonne au plus large requis par le contenu. Cela implique que tout fichier qui utilise longtable doit être compilé plusieurs fois avant d’accepter la sortie finale du pdf.

La différence majeure entre supertabular et longtable est que la plupart des paramètres dans longtable sont définis à l’intérieur du code pour l’environnement longtable ; la plupart de ceux dans supertabular sont définis avant ou en dehors de l’environnement. Quelques paramètres sont définis dans l’exemple de code affiché à droite.

Notez l’instruction [c] dans la commande begin. Avec longtable, la position de la table peut être définie l(eft) - gauche - , c(enter) - centre - ou r(ight) - droit - dans la commande begin. Avec supertabular, la position de la table est définie en dehors de l’environnement supertabular. (Voir la commande begin{center} dans le fragment de code supertabular.

There is a third environment which can be used for multi-page tables called xltabular. I leave it to you to investigate if this is of interest. As noted above, page breaks in multi-page tables occur only at breaks between rows ( or at hline commands). Usually this default behaviour is preferable. This can cause design problems in some instances. Occasionally it is necessary to break the contents of one row over two pages. There is a manual “fix” for this situation which involves adding some line breaks and empty cells to force the cell contents to arrange in a particular way along with the parfillskip command so text aligns properly. If you have a situation like this, read over the guidance on pp. 464-466 in volume 1 of The Latex Companion (3rd edition). Erik and I have presented coding about tables three times now, so enough about tables. Next time another adventure with Latex.

Il y a un troisième environnement qui peut être utilisé pour les tableaux de plusieurs pages, appelé xltabular. Je vous laisse le soin de chercher si cela vous intéresse.

Comme indiqué ci-dessus, les sauts de page dans les tables multi-pages se produisent uniquement aux sauts entre les lignes (ou aux commandes hline). Habituellement, ce comportement par défaut est préférable. Cela peut causer des problèmes de conception dans certains cas. Il est parfois nécessaire de casser le contenu d’une ligne sur deux pages. Il y a un « correctif » manuel pour cette situation qui consiste à ajouter des sauts de ligne et des cellules vides pour forcer le contenu des cellules à s’organiser d’une manière particulière avec la commande parfillskip afin que le texte s’aligne correctement. Si vous avez une situation comme celle-ci, lisez les pages 464 à 466 du volume 1 de The LaTeX Companion (3e édition).

Erik et moi avons présenté le codage des tableaux trois fois maintenant, alors assez sur les tableaux. La prochaine fois, une autre aventure avec LaTeX.

issue205/latex.txt · Dernière modification : 2024/06/12 15:33 de andre_domenech