5
1

Je compose un tableau. Sur l'une des rangées, l'un des items doit occuper trois lignes, le suivant en occupe deux et le suivant une seule. Il me faut donc avoir un tableau de la forme suivante :

Ouvrir dans l'éditeur
\hline
A & B & \multirow{3}{*}{C} \\
A & B & \\
A & & \\
\hline

J'aimerais que les deux « B » soient centrés verticalement dans leur cellule. Mais je ne sais pas comment appliquer multirow pour que deux cellules de la même colonne soient centrées certicalement par rapport à une cellule contigüe de trois cellules. Comment faire ?

Posée 29 Oct '15, 00:09

Pathe's gravatar image

Pathe ♦♦
7.5k29197245
Taux d'acceptation : 55%


Une autre possibilité en gardant un seul tableau, à combiner avec setspace ou array pour régler les bordures :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{ccc}
\hline
A& \multirow{2}{*}{B} & \multirow{3}{*}{C} \\
A & & \\
A& \multirow{-2}{*}{B}&\\
\hline
\end{tabular}
\end{document}
Lien permanent

Publiée 29 Oct '15, 10:37

Nikopol's gravatar image

Nikopol
1.0k614
Taux d'acceptation : 42%

Modifiée 29 Oct '15, 10:43

1

@Nikopol En particulier si les lignes du tableau sont amenées à être colorées (grâce à la commande \rowcolors du package colortbl -- ou xcolor chargé avec l'option table), il peut être nécessaire de faire figurer les \multirow{⟨n⟩}{*}{...}, non pas sur la première, mais sur la ⟨n⟩e (dernière) des lignes concernées en remplaçant alors ⟨n⟩ par -⟨n⟩ : \multirow{-⟨n⟩}{*}{...}, comme indiqué ici.

(29 Oct '15, 13:42) denis ♦♦ denis's gravatar image

Une manière d'obtenir ce que vous souhaitez, c'est d'intégrer des tableaux dans un tableau comme suit :

Ouvrir dans l'éditeur
\documentclass{book}
\begin{document}
\begin{tabular}{ccc}\hline
\begin{tabular}{c} A \\ A \\ A \end{tabular}
&
\begin{tabular}{c} B \\ B \end{tabular}
&
\begin{tabular}{c} C\end{tabular}\\ \hline
\end{tabular}
\end{document}

Voici le résultat :

alt text

Quand le contenu des cellules est plus compliqué et que l'on souhaite un alignement approprié, une solution est d'éliminer l'espacement horizontal par défaut dans l'environnement tabular, grâce à \setlength{\tabcolsep}{0pt}.

Ouvrir dans l'éditeur
\documentclass{book}
\begin{document}
\setlength{\tabcolsep}{0pt}
\begin{tabular}{|l|l|c|l|l|}
AAAAAAAAA & \makebox[1cm]{} & B &\makebox[1cm]{}& CCCCCC\\ \hline
\setlength{\tabcolsep}{0pt}% 
\begin{tabular}{|l|} A \\ A \\ A \end{tabular}
&& \begin{tabular}{|l|} B \\ B \end{tabular}
&& \begin{tabular}{|l|} C\end{tabular}\\ \hline
A && BBBBBBBBBBB && C\\
\end{tabular}
\end{document}

pour le résultat suivant :

alt text

Lien permanent

Publiée 29 Oct '15, 02:11

pluton's gravatar image

pluton
1.2k22836
Taux d'acceptation : 34%

Modifiée 29 Oct '15, 11:03

Ça fonctionne, mais le grand tableau aligne le contenu des cellules à gauche et les cellules de ces petits tableaux internes à la ligne sont légèrement décalées par rapport aux autres ; je pense qu'elles n'ont pas les mêmes dimensions. Voici un exemple :

Ouvrir dans l'éditeur
\documentclass{book}
\begin{document}
\begin{tabular}{lll}
AAAAAAAAA & B & CCCCCC\\ \hline
\begin{tabular}{l} A \\ A \\ A \end{tabular}
& \begin{tabular}{l} B \\ B \end{tabular}
& \begin{tabular}{l} C\end{tabular}\\ \hline
A & BBBBBBBBBBB & C\\
\end{tabular}
\end{document}

Comment les aligner ?

(29 Oct '15, 10:29) Pathe ♦♦ Pathe's gravatar image
1

il faut placer un \setlength{\tabcolsep}{0pt} avant le début du tableau principal. Ensuite pour gérer les espacements horizontaux, on peut ajouter des colonnes vides.

(29 Oct '15, 10:57) pluton pluton's gravatar image

Avec {NiceTabular} de nicematrix et sa commande intégrée \Block, on a directement le résultat voulu.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{ccc}
\hline
A & \Block{3-1}{B\\ B} & \Block{3-1}{C} \\
A \\
A \\
\hline
\end{NiceTabular}

\end{document}
Lien permanent

Publiée 18 Sep '21, 13:27

fpantigny's gravatar image

fpantigny
1.2k44
Taux d'acceptation : 34%

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.