tabularx dan textwidth
Saya ingin menyisipkan tabel 3 kolom dalam proyek saya, tetapi saya menghadapi masalah saat mencoba menyesuaikan teks dalam sel multikolum. Ini kode saya:
\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}
Masalahnya adalah, setiap kali saya menggunakan perintah hsize untuk membuat teks sesuai dengan sel0 dengan benar, cell2 di baris berikut kehilangan penyesuaian otomatisnya ke teks dan memperoleh lebar tetap (yang tidak saya inginkan). Jadi, bagaimana saya bisa menyesuaikan teks di cell0 pada saat yang sama cell2 mempertahankan penyesuaian otomatis ke teks?
Jawaban
Perhitungan Anda tentang lebar yang dapat digunakan dari objek "cell0" salah. Akan (hampir) benar jika kedua kolom yang mendasarinya memiliki tipe X; Namun, bukan itu masalahnya, bukan?
Untuk menghitung lebar gabungan kolom 2 dan 3 yang dapat digunakan dengan benar, saya sarankan Anda melanjutkan sebagai berikut.
Pertama, temukan sel di kolom 3 yang menentukan lebar alami kolom itu. Ini biasanya dilakukan dengan mudah dan andal dengan inspeksi visual.
Misalkan sel yang mendefinisikan lebar alami kolom 3 terdiri dari string
aratherlongword. Lebarnya dapat ditentukan dengan berlari
\newlength\colwidth
\settowidth\colwidth{aratherlongword}
- Kemudian lebar gabungan kolom 2 dan 3 yang dapat digunakan dapat dihitung sebagai
\hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax
MWE penuh (perhatikan bahwa saya telah membuang \multicolumn{1}{|c}{}karena itu berlebihan.)
\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}