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 :

Tableau classique LaTeX

\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 :

Tableau à double entrée

\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.