tabularx e textwidth
Vorrei inserire una tabella a 3 colonne nel mio progetto, ma sto riscontrando problemi nel tentativo di adattare il testo in una cella a più colonne. Ecco il mio codice:
\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}
Il problema è che, ogni volta che utilizzo il comando hsize per adattare il testo correttamente a cell0, cell2 nella riga seguente perde la sua regolazione automatica al testo e acquisisce una larghezza fissa (cosa che non voglio). Quindi, come posso regolare il testo in cell0 nello stesso momento in cui cell2 mantiene la regolazione automatica del testo?
Risposte
Il tuo calcolo della larghezza utilizzabile dell'oggetto "cell0" non è corretto. Sarebbe (quasi) corretto se entrambe le colonne sottostanti fossero di tipo X; tuttavia, non è così, vero?
Per calcolare correttamente la larghezza combinata utilizzabile delle colonne 2 e 3, ti suggerisco di procedere come segue.
Innanzitutto, trova la cella nella colonna 3 che determina la larghezza naturale di quella colonna. Questo di solito è fatto facilmente e in modo affidabile mediante ispezione visiva.
Supponiamo che la cella che definisce la larghezza naturale della colonna 3 sia costituita dalla stringa
aratherlongword. La sua larghezza può essere determinata correndo
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- Quindi la larghezza combinata utilizzabile delle colonne 2 e 3 può essere calcolata come
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
Un MWE completo (nota che l'ho scartato \multicolumn{1}{|c}{}poiché è ridondante).
\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}