1.  Fusion de cellules

\multicolumn{cols}{pos}{text} permet de fusionner, sur une ligne, un nombre défini par cols de cellules, d’y placer le text avec l’alignement et les séparateurs définis par pos :

\begin{tabular}{|c|l|l|}
\hline
A & \multicolumn{2}{c|}{B} \\ \hline
1 & 234 & 456 \\ \hline
a & b   & c   \\ \hline
\end{tabular}

\multirow{nb}{larg}{text} du module multirow permet de fusionner, sur une colonne, un nombre nb de cellules, d’y placer le text sur une largeur définie par larg (ou {*} qui laisse LATEX gérer la largeur) :

\usepackage{multirow}
\begin{tabular}{|l|c|c|}
\hline
              AA & BB & CC \\ \hline
\multirow{2}*{X} & 1  & 2  \\
                 & 3  & 4  \\ \hline
              5  & 6  & 7  \\ \hline
\end{tabular}

\multirowsetup permet de régler l’alignement à \raggedright (valeur par défaut) \raggedleft ou \centering :

\usepackage{multirow}
\renewcommand{\multirowsetup}{\centering}
\begin{tabular}{|l|c|c|}
\hline
A & B & C                    \\ \hline
1 & 2 & \multirow{2}{1cm}{X} \\
3 & 4 &                      \\ \hline
5 & 6 & 7                    \\ \hline
\end{tabular}

2.  Bordures

Appliqué à une cellule, \multicolumn permet de redéfinir localement les propriétés d’une cellule, notament ses bordures verticales. Pour les bordures horizontales, \cline{ci-cj} trace une ligne dans les colonnes ci à cj.

\begin{tabular}{|l|c|c|}
\cline{2-3}
\multicolumn{1}{c|}{} & A  & B  \\ \hline 
Ligne 1               & A1 & B1 \\ \cline{1-1}
Ligne 2               & A2 & B2 \\ \hline
\end{tabular}

\begin{tabular}{|c|cc}
\cline{1-1}
1 & 2 & 3 \\ 
\cline{1-2}
1 & \multicolumn{1}{c|}{2} & 3 \\
\hline
1 & \multicolumn{1}{c|}{2} & 
       \multicolumn{1}{|c|}{3} \\
\hline
\end{tabular}

Remarquez l’erreur qui s’est glissée dans l’exemple précédent : le séparateur vertical entre 2 et 3 sur la dernière ligne semble trop épais car il y en a en réalité deux :

\multicolumn{1}{|c|}{3}

devrait être remplacé par

\multicolumn{1}{c|}{3}

On peut définir une bordure personnlisée grâce à @ :

\begin{tabular}{l@{ : }r@{ après J.C.}}
Charlemagne empereur & 800 \\
Marignan & 1515 \\
Conquête de la lune & 1969 \\
\end{tabular}

3.  Hauteur de ligne, largeur de colonne

3.1  Modifier pour toutes les lignes ou toutes les colonnes

Redéfinir \arraystretch permet d’augmenter la hauteur de toutes les lignes :

\renewcommand{\arraystretch}{1.8}
\begin{tabular}{|c|c|c|} 
\hline
A & B & C \\ \hline
1 & 2 & 3 \\ \hline 
\end{tabular}

Redéfinir \tabcolsep permet d’augmenter la largeur de toutes les colonnes :

\setlength{\tabcolsep}{10mm}
\begin{tabular}{|c|c|c|} \hline
A & B & C \\ \hline
1 & 2 & 3 \\ \hline 
\end{tabular}

3.2  Modifier pour une ligne ou une colonne particulière

Pour augmenter la hauteur d’une ligne, on peut y placer un segment vertical de largeur nulle (donc invisible) avec \rule[décalage vertical]{largeur}{hauteur} :

\begin{tabular}{|c|c|c|}
\hline
A & B & C \\ \hline 
a & b & c\rule[-7pt]{0pt}{20pt} \\ \hline 
1 & 2 & 3 \\ \hline 
\end{tabular}

Pour augmenter la largeur d’une colonne, on peut ajouter des espaces horizontaux à la cellule la plus large de la colonne :

\begin{tabular}{|c|c|c|} \hline
\hspace{7mm}A\hspace{7mm} & B & C \\ 
\hline
1 & 2 & 3 \\ \hline 
\end{tabular}

3.3  Colonne de largeur fixée pour texte multiligne

La lettre p crée une colonne de taille figée dont le texte est aligné à gauche avec la ligne du haut :

\begin{tabular}{|c|p{1.5cm}|p{2cm}|}
\hline
A & B & C \\ \hline
a & Bien trop long & Court \\ \hline
\end{tabular}

Avec le module array, la lettre m (resp. b) de crée une colonne de taille figée dont le texte est justifié (on préfèrerait ici un alignement à gauche étant donné la petite taille de la colonne voir paragraphe suivant) les autres cellules étant centrées verticalement (resp. en bas) :

\usepackage{array}
\begin{tabular}{|c|m{1.5cm}|c|}
\hline
A & B & C \\ \hline
a & bla bla bla & c \\ \hline
\end{tabular}

4.  Définir le format de colonne

Avec le module array on peut grâce aux opérateurs >{commandes} et <{commandes} définir des commandes qui seront appliquées avant et après chaque entrée d’une colonne.

On peut de cette manière mettre une colonne en mode mathématique :

\usepackage{array}
\begin{tabular}{|c|>{$}c<{$}|}
\hline
infini            & \infty     \\ 
dérivée partielle & \partial   \\ \hline
\end{tabular}

On peut aussi centrer horizontalement une colonne de taille figée :

\usepackage{array}
\begin{tabular}%
{|c|>{\centering\arraybackslash}m{2cm}|}
\hline
A & B              \\ \hline
a & Bien trop long \\ \hline
\end{tabular}

5.  Exemples

Une application des commandes vues précédemment

\renewcommand{\arraystretch}{1.8}
\setlength{\tabcolsep}{3mm}
\begin{tabular}%
{|>{\large\bfseries}l|c|c|}
\cline{2-3}
\multicolumn{1}{c|}{} &
\rotatebox{45}{Nobel} &
\rotatebox{45}{Année }\\ \hline
A. Einstein & Physique & 1905 \\ \hline
\multirow{2}*{M. Curie} & Physique & 1903 \\ 
\cline{2-3}
 & Chimie & 1911 \\ \hline
\end{tabular}

Plus difficile : définition de nouveaux séparateurs pour un sudoku :

\newcolumntype{I}{!{\vrule width 1.5pt}}
\newlength\savedwidth
\newcommand\whline{\noalign{\global\savedwidth
  \arrayrulewidth\global\arrayrulewidth 1.5pt}
  \hline \noalign{\global\arrayrulewidth
  \savedwidth}
}
\renewcommand{\arraystretch}{1.5}

\begin{tabular}{Ic|c|cIc|c|cIc|c|cI}
\whline
1 & 6 & 4 &   &   &   &   &   & 2 \\ \hline
2 &   &   & 4 & 6 & 3 & 9 & 1 &   \\ \hline
  &   & 5 &   & 8 &   & 4 &   & 7 \\ \whline
  & 9 &   &   &   & 6 & 5 &   &   \\ \hline
5 &   &   & 1 &   & 2 &   &   & 8 \\ \hline
  &   & 8 & 9 &   &   &   & 3 &   \\ \whline
8 &   & 9 &   & 4 &   & 2 &   &   \\ \hline
  & 7 & 3 & 5 &   & 9 &   &   & 1 \\ \hline
4 &   &   &   &   &   & 6 & 7 & 9 \\ \whline
\end{tabular}