tabularx и textwidth
Я хотел бы вставить в свой проект таблицу с 3 столбцами, но у меня возникают проблемы с попыткой уместить текст в ячейку с несколькими столбцами. Вот мой код:
\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}
Проблема в том, что всякий раз, когда я использую команду hsize для правильного размещения текста в ячейке 0, ячейка 2 в следующей строке теряет автоматическую настройку текста и приобретает фиксированную ширину (что мне не нужно). Итак, как я могу настроить текст в ячейке 0 в то время, когда ячейка 2 сохраняет автоматическую настройку текста?
Ответы
Ваш расчет полезной ширины объекта "cell0" неверен. Было бы (почти) правильно, если бы оба нижележащих столбца имели тип X; однако это не так, не так ли?
Чтобы правильно рассчитать полезную комбинированную ширину столбцов 2 и 3, я предлагаю вам поступить следующим образом.
Сначала найдите ячейку в столбце 3, которая определяет естественную ширину этого столбца. Обычно это делается легко и надежно путем визуального осмотра.
Предположим, что ячейка, определяющая естественную ширину столбца 3, состоит из строки
aratherlongword. Его ширину можно определить, запустив
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- Тогда полезная комбинированная ширина столбцов 2 и 3 может быть рассчитана как
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
Полный MWE (обратите внимание, что я отказался от него, \multicolumn{1}{|c}{}поскольку он избыточен).
\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}