Ceci est une ancienne révision du document !


Comment fusionner des cellules d'une même colonne dans une table ?

Certains tableaux nécessitent une cellule qui s'étendent sur plusieurs lignes. Le cas classique est celui où la colonne la plus à gauche étiquette le reste de la table. Si cette présentation peut être éventuellement traitée en utilisant une séparation diagonale comme vu à la question « Comment diviser une cellule par une diagonale ? », cette technique reste très limitée. Voici des solutions plus générales.

Avec l'extension “multirow”

L'extension multirow vous permet de construire de telles cellules s'étendant sur plusieurs lignes. Par exemple :

\begin{tabular}{|c|c|}
\hline
\multirow{4}{*}{Texte multiligne} 
      & Ligne 1\\
      & Ligne 2 \\
      & Ligne 3 \\
      & Ligne 4 \\
\hline
\end{tabular}

\documentclass{article}
\usepackage{multirow}
\pagestyle{empty} 
\begin{document}
\begin{tabular}{|c|c|}
\hline
\multirow{4}{*}{Texte multiligne} 
      & Ligne 1\\
      & Ligne 2 \\
      & Ligne 3 \\
      & Ligne 4 \\
\hline
\end{tabular}
\end{document}

L'extension centrera verticalement « Texte multiligne » dans la cellule étendue. Notez que les lignes qui ne contiennent pas la spécification multiligne doivent avoir des cellules vides pour laisser la place à la cellule multiligne.

FIXME Traduction à poursuivre.

The * may be replaced by a column width specification. In this case, the argument may contain forced line-breaks:

\begin{tabular}{|c|c|}
\hline
\multirow{4}{25mm}{Common\\g text} 
      & Column g2a\\
      & Column g2b \\
      & Column g2c \\
      & Column g2d \\
\hline
\end{tabular}

A similar effect (with the possibility of a little more sophistication) may be achieved by putting a smaller table that lines up the text into a *-declared \multirow.

The \multirow command may also used to write labels vertically down one or other side of a table (with the help of the graphics or graphicx package, which provide the \rotatebox command):

\begin{tabular}{|l|l|}
\hline
\multirow{4}{*}{\rotatebox{90}{hi there}}
      & Column g2a\\
      & Column g2b \\
      & Column g2c \\
      & Column g2d \\
\hline
\end{tabular}

(which gives text going upwards; use angle -90 for text going downwards, of course).

To make a \multicolumn multi-row “cell” in a table, you have to enclose a \multirow inside a \multicolumn — the other way around does not work, so:

\begin{tabular}{|c|c|c|}\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{combined cells}}
     &top right\\ \cline{3-3}
\multicolumn{2}{|c|}{}
     &middle right\\ \hline
bottom left
     &bottom center
     &bottom right\\ \hline
\end{tabular}

Multirow is set up to interact with the bigstrut package (which is also discussed in the answer to spacing lines in tables). You use an optional argument to the \multirow command to say how many of the rows in the multi-row have been opened up with \bigstrut.

The documentation of both multirow and bigstrut is to be found, as comments, in the package files themselves.


Source: Merging cells in a column of a table

3_composition/tableaux/cellules/fusionner_des_cellule_dans_une_colonne.1637737483.txt.gz · Dernière modification : 2021/11/24 07:04 de yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0