Tableaux à double entrée et LaTeX
Le jeudi 15 mai 2008 à 21:54 - Lien permanent
Avec LaTeX, il n'est pas absolument évident de réaliser des tableaux à double entrée du type suivant :
Ce n'est pas très compliqué, mais il faut un peu d'astuce. C'est ce qu'explique ce billet.
Le problème
Ce qui est facile avec LaTeX, c'est de dessiner des tableaux parfaitement rectangulaires. À titre d'exemple, voici un code très simple, et son résultat :
\begin{tabular}{|l|c c c|} \hline & A & B & C \ \hline $\alpha$ & $\times$ & $\times$ & \ $\beta$ & $\times$ & & $\times$ \ \hline \end{tabular}
Cependant, la case située tout en haut à gauche ne sert à rien, et l'on aimerait s'en affranchir, de façon à réaliser un vrai tableau à double entrée. L'idée de base est alors la suivante :
- on supprime le filet de gauche, donc la spécification de tableau devient
l|c c c|
au lieu de|l|c c c|
; - on ne trace le premier filet horizontal qu'entre les colonnes 2 et 4, donc le
\hline
devient\cline{2-4}
; - mais alors, comment faire pour récupérer le filet de gauche seulement sur les lignes 2 et 3 ? Il y a bien une commande
\vline
, mais elle trace un filet vertical, sur une ligne, à l'endroit courant et pas tout à gauche, donc cela ne produit pas le résultat escompté...
La solution avec \multicolumn
La commande \multicolumn
sert à créer des cases qui s'étendent sur plusieurs colonnes. Elle prend donc en paramètres le nombre de colonnes à occuper, la spécification du format de la case en question, bordures comprises, et enfin le contenu de la case.
Ce qui est intéressant, c'est qu'avec cette commande, on puisse spécifier les bordures d'une case. Nous allons donc la détourner pour créer les cases de gauche des lignes 2 et 3 : elles feront une colonne de large (donc pas de multicolonnage au sens propre), mais nous pourront ainsi tracer leur filet de gauche. D'où le code final :
\begin{tabular}{l|c c c|} \cline{2-4} & A & B & C \ \hline \multicolumn{1}{|l|}{$\alpha$} & $\times$ & $\times$ & \ \multicolumn{1}{|l|}{$\beta$} & $\times$ & & $\times$ \ \hline \end{tabular}
Moralité : pour tracer une bordure verticale récalcitrante sur une case (et non une colonne en entier), pensez à \multicolumn
. Ceci permet également de modifier l'alignement d'une cellule isolée, comme souligné sur la FAQ LaTeX francophone.
Commentaires
Bonjour.
En reprenant votre code et en l'adaptant au tableau que je désirais créer, je suis tombé sur un os!
Le tableau n'est en effet pas fermé sur sa droite, c'est a dire que le trait vertical a la droite du C (dans votre cas) ne se prolonge pas plus bas que la premiere ligne. Je ne comprend pas ?
Merci d'avance.
Bonjour;
si vous voulez laisser le tabeleau ouvert par rapport au coté droit du c, vous pouvez taper ce code là :
j'espère que j'ai répondu à votre question. :)
Bonjour, et tout d'abord, merci pour ce tutoriel intéressant et qui m'a déjà servi.
Cependant, j'aimerais ajouter une rangée au dessus des "A B C", encadrée, qui commencerait à gauche de A et terminerait à droite de C, et dans laquelle je pourrais noter, par exemple "Nom des variables".
Idem pour une colonne à gauche de \alpha \beta, qui commencerait au dessus de \alpha et terminerait en dessous de \beta, et dans laquelle je pourrais également noter quelque chose.
Comment faire?
Emeris