tabularx ve metin genişliği

Oct 01 2020

Projeme 3 sütunlu bir tablo eklemek istiyorum, ancak metni multicolumm bir hücreye sığdırmaya çalışırken sorunlarla karşılaşıyorum. İşte kodum:

\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}

Sorun şu ki, hsize komutunu metnin hücre0'a uygun şekilde sığdırılması için her kullandığımda, aşağıdaki satırdaki hücre2 metne otomatik ayarını kaybediyor ve sabit genişlik elde ediyor (ki bunu istemiyorum). Öyleyse, hücre2 metne otomatik ayarlamayı korurken aynı zamanda hücre0'daki metni nasıl ayarlayabilirim?

Yanıtlar

2 Mico Oct 01 2020 at 11:48

"Cell0" nesnesinin kullanılabilir genişliğine ilişkin hesaplamanız yanlış. Her iki temel sütun da türde olsaydı (neredeyse) doğru olurdu X; ancak durum böyle değil, değil mi?

Sütun 2 ve 3'ün kullanılabilir birleşik genişliğini doğru bir şekilde hesaplamak için aşağıdaki şekilde ilerlemenizi öneririm.

  • İlk olarak, 3. sütunun doğal genişliğini belirleyen hücreyi bulun. Bu genellikle görsel inceleme ile kolay ve güvenilir bir şekilde yapılır.

  • 3. sütunun doğal genişliğini tanımlayan hücrenin dizeden oluştuğunu varsayalım aratherlongword. Genişliği koşarak belirlenebilir

   \newlength\colwidth
   \settowidth\colwidth{aratherlongword}
  • Daha sonra 2. ve 3. sütunların kullanılabilir birleşik genişliği şu şekilde hesaplanabilir:
   \hsize=\dimexpr\hsize+\colwidth+2\tabcolsep\relax

Tam bir MWE ( \multicolumn{1}{|c}{}gereksiz olduğu için attığımı unutmayın .)

\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}