tabularx dan textwidth

Oct 01 2020

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

2 Mico Oct 01 2020 at 11:48

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}