tabularxとtextwidth
Oct 01 2020
プロジェクトに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コマンドを使用してテキストをcell0に適切に合わせると、次の行のcell2がテキストへの自動調整を失い、固定幅を取得することです(これは望ましくありません)。では、cell2がテキストの自動調整を維持すると同時に、cell0のテキストを調整するにはどうすればよいですか?
回答
2 Mico Oct 01 2020 at 11:48
「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}