ข้ามไปยังเนื้อหา

array, tabularx, longtable และ tabulary ใน Scissor LaTeX

แพ็กเกจ array และ tabularx รวมถึงแพ็กเกจที่เกี่ยวข้องใช้ได้บางส่วนใน Scissor LaTeX ตาราง tabularx, tabulary, longtable และ xltabular จัดเรียงพิมพ์เหมือน tabular และเซลล์ที่ยาวจะตัดบรรทัดเมื่อตารางจะกว้างเกินบรรทัด ความกว้างคอลัมน์ (p{3cm}, X และความกว้างของตาราง) และโค้ด >{...}/<{...} ถูกละเว้น \newcolumntype ไม่เป็นที่รู้จัก และส่วนหัวของ longtable ไม่ถูกพิมพ์ซ้ำ

แพ็กเกจเหล่านี้ทำอะไร

  • array เพิ่มชนิดคอลัมน์ เช่น m{width} และ b{width} โค้ดก่อนและหลังแต่ละเซลล์ด้วย >{...} และ <{...} และ \newcolumntype สำหรับตัวอักษรคอลัมน์ของคุณเอง
  • tabularx มี \begin{tabularx}{\textwidth}{lX} ซึ่งคอลัมน์ X จะยืดออกเพื่อให้ตารางมีความกว้างตามที่กำหนด tabulary ทำแบบเดียวกันด้วยคอลัมน์ L, C, R, J ที่แบ่งความกว้างกันตามเนื้อหา
  • longtable ทำให้ตารางแบ่งข้ามหน้าได้ พร้อมส่วนหัวที่พิมพ์ซ้ำ (\endhead) ส่วน xltabular รวม longtable และ tabularx เข้าด้วยกัน

สิ่งที่ใช้ได้ที่นี่

ฟีเจอร์ใน Scissor LaTeXหมายเหตุ
tabularx, tabulary, xltabular, longtable, tabular*ใช้ได้บางส่วนจัดเรียงพิมพ์เหมือน tabular อาร์กิวเมนต์ความกว้างรวมถูกละเว้น
คอลัมน์ X, L, C, R, Jใช้ได้บางส่วนX และ L ชิดซ้าย C อยู่กึ่งกลาง R ชิดขวา
p{3cm}, m{3cm}, b{3cm}ใช้ได้บางส่วนชิดซ้าย ความกว้างถูกละเว้น
ข้อความยาวในเซลล์ใช้ได้ตัดบรรทัดเมื่อตารางจะกว้างเกินบรรทัด
>{\bfseries}l, r<{\%}ถูกละไว้โค้ดก่อนและหลังเซลล์ถูกละเว้น
\newcolumntype{C}{...}ไม่รองรับถูกข้ามพร้อมหมายเหตุในแท็บปัญหา และนิยามของมันถูกพิมพ์ออกมาเป็นข้อความ ให้เขียนชนิดคอลัมน์ออกมาเต็ม ๆ แทน
\endhead, \endfirsthead, \endfoot, \endlastfootถูกละไว้ตารางยาวแบ่งข้ามหน้าได้ แต่ส่วนหัวไม่ถูกพิมพ์ซ้ำ
\tabularnewlineใช้ได้เหมือน \\
\arraybackslashไม่รองรับถูกข้ามพร้อมหมายเหตุในแท็บปัญหา นอกจากนั้นไม่มีผลเสีย

ตัวอย่าง

ตาราง tabularx ที่มีคอลัมน์ยืดได้ ข้อความยาวจะตัดบรรทัดที่ขอบของเนื้อความ เหมือนในการติดตั้ง TeX:

tabularx ที่มีคอลัมน์ X

LaTeXส่วนนำ: \usepackage{tabularx}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tabularx}{\textwidth}{lX}
\hline
Name & Notes \\
\hline
Erika Mustermann & Leads the project, writes the reports and checks
  every one of the 44 measurements twice before they are published. \\
John Doe & Builds the test setup. \\
\hline
\end{tabularx}
จัดหน้าโดย Scissor LaTeX: tabularx ที่มีคอลัมน์ X

longtable ที่มีแถวส่วนหัว ตารางจัดเรียงพิมพ์ได้ แต่ในเอกสารยาว ส่วนหัวจะไม่ถูกพิมพ์ซ้ำในหน้าถัดไป:

longtable พร้อม \endhead

LaTeXส่วนนำ: \usepackage{longtable}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{longtable}{lr}
\hline
Item & Count \\
\hline
\endhead
Pencils & 44 \\
Erasers & 12 \\
Rulers  & 7 \\
\hline
\end{longtable}

โค้ดใน >{...} ถูกละเว้น คอลัมน์นี้จึงไม่เป็นตัวหนาและเครื่องหมายเปอร์เซ็นต์หายไป:

>{...} และ <{...} ถูกละเว้น

LaTeXส่วนนำ: \usepackage{array}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{tabular}{>{\bfseries}l r<{\,\%}}
Growth & 44 \\
Share  & 12 \\
\end{tabular}

ให้เขียนการจัดรูปแบบไว้ในเซลล์แทน ซึ่งใช้ได้ทั้งที่นี่และในการติดตั้ง TeX:

การจัดรูปแบบที่เขียนไว้ในเซลล์

\begin{tabular}{lr}
\textbf{Growth} & 44\,\% \\
\textbf{Share}  & 12\,\% \\
\end{tabular}

ความเข้ากันได้

  • จากการติดตั้ง TeX มาที่นี่: ตารางจัดเรียงพิมพ์ได้และคงการจัดแนวไว้ แต่ไม่คงความกว้างคอลัมน์ ให้มองหาตัวอักษรคอลัมน์ที่กำหนดเองจาก \newcolumntype
  • จากที่นี่ไปยังการติดตั้ง TeX: เอกสารคอมไพล์ที่นั่นได้โดยไม่ต้องแก้ไข และความกว้างจะถูกนำมาใช้ที่นั่น

คู่มือฉบับเต็มอยู่บน CTAN: ctan.org/pkg/array ctan.org/pkg/tabularx ctan.org/pkg/tabulary ctan.org/pkg/longtable และ ctan.org/pkg/xltabular สำหรับตารางโดยทั่วไป ดู ตารางใน LaTeX

ดูเพิ่มเติม ตาราง multirow booktabs และ เครื่องมือสร้างตาราง LaTeX

คำถามและคำตอบ

ทำไมคอลัมน์ p{3cm} ของฉันจึงไม่กว้าง 3 cm

ยังไม่มีการนำความกว้างคอลัมน์มาใช้ ข้อความยาวยังคงตัดบรรทัดที่ขอบของเนื้อความ ตารางจึงยังอยู่ภายในหน้า

longtable แบ่งข้ามหน้าได้หรือไม่

ได้ ตารางยาวจะต่อในหน้าถัดไป แต่แถวที่ทำเครื่องหมายด้วย \endhead จะไม่ถูกพิมพ์ซ้ำที่นั่น

ทุกตัวอย่างในหน้านี้จัดหน้าโดย Scissor LaTeX ขณะสร้างเว็บไซต์ อัปเดตล่าสุด 2026-11-07