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}