跳到正文

Scissor LaTeX 中的 array、tabularx、longtable 和 tabulary

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 发行版中一样:

带 X 列的 tabularx

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 排版: 带 X 列的 tabularx

带表头行的 longtable。表格可以排版;在长文档中,表头不会在下一页重复:

带 \endhead 的 longtable

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