tabularx e textwidth
Gostaria de inserir uma tabela de 3 colunas em meu projeto, mas estou enfrentando problemas ao tentar ajustar o texto em uma célula com várias colunas. Aqui está o meu código:
\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}
O problema é que sempre que eu uso o comando hsize para fazer o texto caber na célula0 corretamente, a célula2 na linha seguinte perde seu ajuste automático para o texto e adquire largura fixa (o que eu não quero). Então, como posso ajustar o texto na célula0 ao mesmo tempo que a célula2 mantém o ajuste automático do texto?
Respostas
Seu cálculo da largura utilizável do objeto "cell0" está incorreto. Seria (quase) correto se ambas as colunas subjacentes fossem do tipo X; entretanto, não é esse o caso, é?
Para calcular a largura combinada utilizável das colunas 2 e 3 corretamente, sugiro que você faça o seguinte.
Primeiro, encontre a célula na coluna 3 que determina a largura natural dessa coluna. Isso geralmente é feito de forma fácil e confiável por inspeção visual.
Suponha que a célula que define a largura natural da coluna 3 consista na string
aratherlongword. Sua largura pode ser determinada executando
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- Então a largura combinada utilizável das colunas 2 e 3 pode ser calculada como
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
Um MWE completo (observe que descartei, \multicolumn{1}{|c}{}pois é redundante.)
\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}