tabularx et textwidth
J'aimerais insérer un tableau à 3 colonnes dans mon projet, mais je rencontre des problèmes en essayant d'ajuster du texte dans une cellule multicolore. Voici mon code:
\begin{center}
\begin{tabularx}{\textwidth}{|c X c|}
\hline
\multicolumn{1}{|c}{} &
\multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax}X|}{ cell0: text text text text text text text text text text text text text text text text }\\
\hline
cell1 & cell2: text text text text text text text text & cell3\\
\hline
\end{tabularx}
\end{center}
Le problème est que chaque fois que j'utilise la commande hsize pour que le texte tienne correctement dans cell0, cell2 dans la ligne suivante perd son ajustement automatique au texte et acquiert une largeur fixe (ce que je ne veux pas). Alors, comment puis-je ajuster le texte dans cell0 en même temps que cell2 conserve l'ajustement automatique au texte?
Réponses
Votre calcul de la largeur utilisable de l'objet "cell0" est incorrect. Ce serait (presque) correct si les deux colonnes sous-jacentes étaient de type X; cependant, ce n'est pas le cas, n'est-ce pas?
Pour calculer correctement la largeur combinée utilisable des colonnes 2 et 3, je vous suggère de procéder comme suit.
Tout d'abord, recherchez la cellule de la colonne 3 qui détermine la largeur naturelle de cette colonne. Cela se fait généralement facilement et de manière fiable par inspection visuelle.
Supposons que la cellule qui définit la largeur naturelle de la colonne 3 se compose de la chaîne
aratherlongword. Sa largeur peut être déterminée en courant
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- Ensuite, la largeur combinée utilisable des colonnes 2 et 3 peut être calculée comme suit:
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
Un MWE complet (notez que j'ai jeté \multicolumn{1}{|c}{}car il est redondant.)
\documentclass{article}
\usepackage{tabularx}
\begin{document}
\begin{center}
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
\begin{tabularx}{\textwidth}{|c X c|}
\hline
& \multicolumn{2}{>{\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax}X|}{%
cell0: text text text text text text text text text text text text text text text text }\\
\hline
cell1 & cell2: text text text text text text text text & aratherlongword\\
\hline
\end{tabularx}
\end{center}
\end{document}