Export PDF LaTeX Tableaux

Fusion de lignes

a marqué ce sujet comme résolu.

Salut,

Du côté de l’export vers LaTeX, il y a un petit souci du côté de la fusion des lignes (la fusion de colonnes). On utilise le package multirow et sa commande \multirow. Le problème c’est qu’elle ne peut pas adapter la taille des lignes dans le cas où le contenu de la cellule fusionnée est trop grande. Voici un exemple.

\documentclass[12pt, french]{scrartcl}
\usepackage{multirow}
\usepackage{longtable}
\usepackage{tabu, booktabs}

\begin{document}
\begin{longtabu}{|m{5cm}|m{5cm}|m{5cm}|}    \hline
A & B & \multirow{3}{*}{
\parbox{5cm}{Un texte de test pour tester les textes qui sont un 
             peu long et qui risquent de déborder de la cellule 
             fusionnée du tableau.}
} \\ \cline{1-2}
C & D &   \\ \cline{1-2}
E & F &   \\  \hline
G & H & I \\ \hline
\end{longtabu}
\end{document}

Une solution est d’ajouter des espaces aux autres lignes pour faire gonfler artificiellement la hauteur de la cellule fusionnée. J’utilise également des boîtes de sauvegarde pare

\begin{longtabu}{|m{5cm}|m{5cm}|m{5cm}|}    \hline
\vspace{0.7cm} A & B & \multirow{3}{*}{
\parbox{5cm}{Un texte de test pour tester les textes qui sont un 
             peu long et qui risquent de déborder de la cellule 
             fusionnée du tableau.}
} \\ \cline{1-2}
\vspace{0.7cm} C & D &   \\ \cline{1-2}
\vspace{0.7cm} E & F &   \\  \hline
G & H & I \\ \hline
\end{longtabu}

Là c’est bon, le contenu est dans sa cellule, mais il faut admettre que les placements du A, du C et du E ne sont pas trop beaux. On pourrait améliorer ça, en mettant le même espacement avant et après les cellules du A, du C et du E. Mais là, ça pose un autre souci. En effet, le but est d’avoir quelque chose d’automatique. Si le contenu de la première cellule est déjà suffisamment grand pour qu’ensuite toute la cellule fusionnée rentre, il ne faut pas rajouter d’espaces.

Je me suis donc dit que j’allais plutôt faire une colonne morte qui servirait juste à rajouter les espaces nécessaires. J’utilise également des boîtes de sauvegarde. Le but est ensuite d’essayer de calculer la hauteur à laisser en fonction de la hauteur de la boîte.

\newsavebox{\boxx}
\sbox{\boxx}{
\parbox{5cm}{Un texte de test pour tester les textes qui sont un 
             peu long et qui risquent de déborder de la cellule 
             fusionnée du tableau.}
}

\begin{longtabu}{|m{5cm}|m{5cm}|m{5cm}|m{0cm}}    \cline{1-3}
A & B &  \vspace{1cm} \vphantom{x}\\ \cline{1-2}
C & D &  \vspace{1cm} \vphantom{x} \\ \cline{1-2} 
E & F & \multirow{-3}{*}{\usebox{\boxx}} & \vspace{1cm} \vphantom{x} \\  \cline{1-3}
G & H & I  \\ \cline{1-3}
\end{longtabu}

Ça rend les choses un peu (beaucoup) plus difficile, et surtout ça demande de réfléchir à d’autres trucs (que faire s’il y a plusieurs fusions de lignes par exemple). Donc si quelqu’un voit quelque chose à améliorer, ou même quelque chose de totalement différent pour gérer la fusion de lignes, il est le bienvenu.

EDIT : On pourrait calculer pour chaque boîte correspondant à une fusion de lignes le rapport taille de la boîte sur nombre de colonnes et prendre ce nombre comme taille minimale pour une ligne ? Comme ça, on a quand même une certaine harmonie au niveau de la hauteur des lignes (dans le dernier code, la taille de la ligne « GHI » fait un peu tâche par rapport aux autres).

+0 -0

Ils ont eu le même problème chez Sphinx et ont fini par s’en débarasser. Il faut que j’analyse un peu ce qu’ils ont fait (c’est cryptique au premier abord), mais il semblerait qu’il y aie moyen de faire quelque chose d’intelligent.

EDIT: il y a aussi moyen de regarder du côté du package makecell. RE-EDIT: Non :/

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte