LaTeX/Tableaux
Dans les livres scolaires, les tableaux sont souvent utilisés pour récapituler des résultats d'une recherche. Il est donc nécessaire de maîtriser leur emploi afin de produire des documents de bonne qualité.
La gestion des tableaux n'est cependant pas très intuitive. Les tableaux de base ne sont pas très astreignants, leur logique est similaire au HTML (cf. "Programmation HTML/Tableaux"), mais vous remarquerez assez rapidement qu'un tableau un peu plus élaboré demande plus de temps pour sa construction.
Avant de continuer, veillez à bien avoir assimilé les tableaux de base présentés dans la section "Premiers pas : faire des tableaux".
L'environnement "tabular".
Rappelons quelques concepts déjà explicités.
 ...
Remarquez que les espaces insérées entre ces commandes sont purement inutiles, mais elles facilitent la lecture.
Tableau de base.
Cet exemple montre comment créer un simple tableau en LaTeX. C'est un tableau trois par trois, mais sans aucun filet.
Modifions celui-ci en y ajoutant quelques filets verticaux, simples ou doubles :
Pour ajouter des filets horizontaux tout en haut et tout en bas du tableau :
Et finalement, pour ajouter des filets centrés entre toutes les lignes. Remarquez l'utilisation de l'environnement codice_18 pour centrer le tableau dans la page. On peut aussi obtenir un filet double horizontal en doublant la commande codice_17 (non représenté ici).
Texte dans un tableau.
Les algorithmes de LaTeX pour mettre en forme les tableaux ont quelques imperfections. L'une d'entre elles est qu'il ne mettra pas automatiquement le texte sur plusieurs lignes dans les cellules, même si celui-ci déborde de la largeur de la page. Pour les colonnes qui contiendront une certaine quantité de texte, il est recommandé d'employer l'attribut codice_9 et d'indiquer la largeur désirée de la colonne (bien que cela puisse obliger à effectuer quelques ajustements avant d'obtenir le résultat escompté).
Avant de procéder, nous devons présenter le système de mesure que LaTeX emploie. Il est très souple puisque vous pouvez choisir parmi toute une variété d'unités de longueur :
Il existe des commandes connues sous le nom de "commandes de longueur", qui jouent le rôle de variable, qui n'ont pas de valeurs fixes car elles dépendent de la configuration de la classe et/ou du préambule courants du document.
Les plus utiles sont :
Les exemples fournis sont très longs parce que j'illustrais ce qui se produit quand il y a juste un morceau de texte dans les cellules d'un tableau. Ainsi au lieu de le reproduire dans la page, allez () directement consulter le fichier Latex en exemple, wrapped.tex et puis regardez le résultat.
Alignement du texte.
Lorsque l'on utilise des colonnes du type p, m, c ou b, il peut être utile de changer la façon dont le paragraphe est aligné. Pour cela la méthode la plus claire est de définir un nouveau type de colonne qui réalise l'alignement désiré. Par exemple le code latex suivant définit un nouveau type de colonne ("M") qui centre verticalement le paragraphe par rapport à la ligne (comme le type de colonne m) et aligne le paragraphe à gauche de la colonne ("drapeau droit" en typographie, codice_32 en LaTeX) :
On peut ensuite l'utiliser dans un tableau comme suit :
 \hline
 colonne 1 & colonne "M" \tabularnewline
 \hline
 court texte & Texte plus long qui sera centré dans la ligne et aligné à gauche dans la colonne \tabularnewline
 \hline
Ce qui donne :
À noter :
Pour avoir du texte centré verticalement et horizontalement, il faut utiliser
D'autres solutions existent, voir cette page (en anglais).
Définition groupée de colonnes.
Il est possible de définir les colonnes identiques ou les groupes de colonnes identiques d'un tableau en une seule fois. Cela est particulièrement utile pour les tableaux contenant beaucoup de colonnes identiques ou des tableaux pour lesquels la syntaxe des colonnes est complexe.
La syntaxe est la suivante : codice_37
Voici un exemple de tableau à 10 colonnes :
 \hline
 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 \\
 \hline
 2 & 4 & 6 & 8 & 10 & 12 & 14 & 16 & 18 & 20 \\
 \hline
 3 & 6 & 9 & 12 & 15 & 18 & 21 & 24 & 27 & 30 \\
 \hline
 4 & 8 & 12 & 16 & 20 & 24 & 28 & 32 & 36 & 40 \\
 \hline
 5 & 10 & 15 & 20 & 25 & 30 & 35 & 40 & 45 & 50 \\
 \hline
 6 & 12 & 18 & 24 & 30 & 36 & 42 & 48 & 54 & 60 \\
 \hline
 7 & 14 & 21 & 28 & 35 & 42 & 49 & 56 & 63 & 70 \\
 \hline
 8 & 16 & 24 & 32 & 40 & 48 & 56 & 64 & 72 & 80 \\
 \hline
 9 & 18 & 27 & 36 & 45 & 54 & 63 & 72 & 81 & 90 \\
 \hline
Résultat :
L'environnement codice_38, maîtrise de la largeur d'un tableau.
C'est fondamentalement une légère extension de la version originale de tableau, bien qu'elle exige un paramètre supplémentaire (avant les descriptions de colonne) pour indiquer la largeur souhaitée du tableau.
 \hline
 label 1 & label 2 & label 3 & label 4 \\
 \hline 
 item 1 & item 2 & item 3 & item 4 \\
 \hline
Cependant, cela ne ressemble pas à ce qui était attendu. Les colonnes ont toujours leur largeur normale (juste assez large pour adapter leur contenu) tandis que les lignes sont aussi larges que la largeur demandée du tableau.
Le tableau a une apparence très laide. La raison de ce désordre est que vous devez également insérer un espace supplémentaire de colonne. Heureusement, Latex a des longueurs élastiques, qui à la différence d'autres, ne sont pas fixes, et Latex peut dynamiquement décider du moment jusqu'auquel elles doivent rester fixes. Ainsi, la solution est :
 \hline
 label 1 & label 2 & 3 & label 4 \\
 \hline 
 item 1 & item 2 & 3 & item 4 \\
 \hline
Vous remarquerez la présence de la construction @{...} ajoutée au début de la description de colonne. Plus de détails de ce rajout seront donnés sous peu. À l'intérieur de celle-ci, la commande \extracolsep, exige une largeur comme paramètre. Une largeur fixe aurait pu être employée, cependant, en utilisant une longueur élastique, telle que \fill, les colonnes sont automatiquement espacées de tel sorte que le résultat voulu est atteint.
L'environnement codice_39 - Calcul automatique de la largeur des colonnes.
Le paquet codice_39 met à disposition l'environnement codice_39 permettant de définir des colonnes de type codice_42 qui adaptent automatiquement leur largeur de sorte que le tableau ait la largeur souhaitée. L'environnement codice_39 prend comme argument la largeur du tableau puis la déclaration des colonnes du tableau :
Les déclarations des colonnes sont identiques à celles d'un tableau classique sauf le type codice_42 dont la largeur s'adapte pour que le tableau ait la largeur indiquée. Voici un exemple tiré en partie de "The LateX companion" p113.
 \hline
 1 & The two gentlemen of Verona & The Taming of the Shrew \\
 \hline
 2 & The comedy of errors & Love's Labour's Lost \\
 \hline
 3 & The Merchant of venice & The Merry Wives of Windsor \\
 \hline
Voici le résultat, on remarque le comportement différent de la colonne codice_9 et de la colonne codice_42 :
Espacement entre les lignes, espacement entre les colonnes.
Pour aérer un tableau, il est possible de redéfinir l'espacement entre les lignes d'un tableaux et l'espacement entre les colonnes, par exemple :
\setlength{\tabcolsep}{1cm} 
Expressions avec @.
Maintenant qu'il a été présenté, il serait intéressant de nous pencher sur le « prescripteur » @, bien que celui-ci n'ait pas un grand nombre d'applications évidentes.
Il prend typiquement du texte comme paramètre, et lorsqu'il est apposé à une colonne, il insère automatiquement ce texte dans chaque cellule de cette colonne avant les données mêmes de cette cellule. Il faut préciser qu'une fois utilisé, l'espace entre les colonnes concernées est supprimé. Pour ajouter un espace, employez la commande @{\hspace{"largeur"}}</span >.
Pour mieux comprendre cela exigera quelques exemples d'utilisation. Parfois, il est souhaitable dans les tables scientifiques d'avoir les nombres alignés sur la virgule décimale. Ceci peut être réalisé en faisant ce qui suit :
Son application supprimant les espaces, il peut être très utile pour maîtriser l'espacement horizontal entre les colonnes. À partir d'un tableau de base, changeons les descriptions des colonnes:
 \hline
 truc & truc \\ \hline
 truc & truc \\
 \hline
Lignes enveloppant des colonnes multiples.
La commande adéquate ressemble à ceci:
 \multicolumn{"nomb_col"}{"alignement"}{"contenu"}.
Donnons un exemple simple:
Colonnes enveloppant des lignes multiples.
Nous avons proposé précédemment une méthode simple mais détournée (cf. "Faire des tableaux > Fusionner les lignes").
Si l'on veut vraiment fusionner les lignes, il faut avoir recours à l'extension codice_50, et donc ajouter
dans le préambule. Cela fournit alors la commande requise pour envelopper des lignes :
Les paramètres sont assez simples à comprendre.
Avec le paramètre "largeur", vous pouvez indiquer une largeur fixe si vous le désirez, ou une largeur normale (c'est-à-dire, juste assez large pour adapter le contenu de la colonne) en entrant simplement un astérisque (*).
Cette approche a été employée dans l'exemple suivant :
Ce qui est essentiel de remarquer lorsque vous utilisez la commande \multirow sur les lignes consécutives à envelopper, est qu'une entrée vide devant les cellules concernées doit être insérée : en effet, la commande codice_51 indique simplement que le "texte" est sur plusieurs lignes, il ne modifie pas la structure du tableau (contrairement à codice_52). Ceci a de l'importance lorsque l'on met un fond coloré (voir ci-après).
Couleur.
Nous avons vu dans "Programmation LaTeX/Options de mise en forme avancées > Couleur" comment mettre du texte en couleur, caractères et fond. 
Mais le fond du texte est une boîte plus petite que la cellule du tableau. Si l'on veut mettre le fond d'une cellule en couleur, il faut utiliser l'extension codice_53. Vous pouvez l'appeler en même temps de codice_54 en utilisant l'option codice_55 :
Le recours à l'extension codice_57 est fortement recommandé pour améliorer le rendu.
Vous pouvez alors définir :
Par exemple
 1 & 2 & 3 \\
 a & b & c
 \rowcolor{cyan} 1 & 2 & 3 \\
 a & b & c
 1 & 2 & 3 \\
 a & \cellcolor{gray} b & c
On a souvent recours à une alternance de couleurs d'une ligne à l'autre. On peut utiliser pour cela la commande codice_63 (avec un "s") :
l'argument "début" est la ligne où commence cette alternance, ce qui permet d'épargner les lignes d'en-tête. Par exemple
 1 & 2 & 3 \\
 a & b & c \\
 I & II & III
Notez que :
La commande codice_69 permet de définir la couleur des filets (horizontaux et verticaux). Elle influe sur les filets tracés après cette commande ; elle peut donc être placée avant un tableau ou bien à l'intérieur de celui-ci.
La fonction codice_65 colorie les cases une par une. Lorsque l'on utilise codice_51, on a donc :
La deuxième ligne de texte est donc recouverte par la couleur de fond. Pour éviter ceci, il faut mettre le codice_51 sur la dernière ligne et utiliser une valeur négative pour le nombre de lignes. Par exemple
 1 & & 3 \\
 a & & c \\
 I & \multirow{-3}{1em}{2 A II} & III
Tableaux longs.
Si un tableau est susceptible d'être sur plusieurs pages, on utilise l'environnement codice_77. Il s'utilise comme l'environnement codice_55 "et" comme l'environnement codice_1 :
\hline
ligne 1 colonne 1 & ligne 1 colonne 2 \\
Il propose de plus des commandes supplémentaires :
Notes de bas de page.
En typographie, les notes de bas de page sont incompatibles avec les tableaux. De fait, si l'on utilise la commande codice_91 dans un tableau, on a l'appel de note mais la note elle-même n'apparaît pas en bas de page.
Si l'on veut vraiment une note de bas de page et que celle-ci est unique, on peut mettre codice_92 à l'appel de note, et placer codice_93 après l'environnement du tableau. Mais si l'on a plusieurs notes, il faut numéroter les notes à la main avec codice_94, ce qui pose le problème du suivi de la numérotation des notes.
Une solution plus satisfaisante consiste à mettre le tableau dans un environnement codice_95, la note apparaît alors sous le tableau, mais pas en bas de la page.
Résumé.
Nous en avons déjà assez dit au sujet des tableaux de base à mon avis. Après vous pouvez expérimenter afin d'en maîtriser le concept. Je dois admettre que la syntaxe d'un tableau en Latex peut sembler plutôt tordue, et ainsi voir des exemples plus sophistiqués pourrait vous embrouiller davantage. Mais heureusement, nous en avons assez vu pour que vous puissiez créer par vous-même n'importe quel tableau dont vous pouvez avoir besoin dans vos documents. Il est clair que Latex a beaucoup de ressources, ainsi attendez-vous à trouver des instructions plus avancées dans un proche avenir.