Typesmith

表格

tabular 的对齐语法与 booktabs 三线表:把数据排得专业又清爽

基础约 20 分钟

tabular:先声明列,再填内容

表格的基础是 tabular 环境。它的写法是 \begin{tabular}{列格式} ... \end{tabular}——注意那个必须写的列格式参数,它用一串字母描述每一列怎么对齐:l 左对齐、c 居中、r 右对齐。有几列就写几个字母。

表格内部沿用了你已经熟悉的两个记号:& 分隔同一行的单元格,\\ 结束一行。这不奇怪——回想第 2 课,& 和 \\ 本来就是保留字符,它们的「本职」就是表格与对齐。

画线有两种:\hline 画一条横穿整表的横线,列格式里的 | 画竖线。例如 {|l|c|r|} 会得到「竖线-列-竖线-列-竖线-列-竖线」的网格效果。

带框线的网格表格
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

对照列格式 {|l|c|r|}:第一个 | 在表格最左边,中间两个 | 把三列隔开,最后一个 | 在右边。每多一个 | 就多一条竖线。

列格式进阶:重复列、固定宽度与去边距

列很多时不必手写一堆字母。*{3}{c} 表示「三列居中」,等价于 ccc;*{2}{|c}| 表示两列居中且每列左侧带竖线。

默认情况下,列与列之间会留一点空隙。如果你想精确控制宽度、去掉这点空隙,可以用 @{} 显式声明列间距,例如 {@{}l l@{}}。多数场景用不到,但排「内容刚好顶满版心」的表格时会用到。

还有一点容易忽略:表格环境本身不会自动居中,它会左对齐。想让它水平居中,需要在整个 tabular 外面套一层 \centering(在浮动体里)或 center 环境。

重复列格式与居中
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

*{3}{c} 与 ccc 完全等价。外面包一层 center 环境,整张表就水平居中了。

booktabs 三线表:学术界的标准

带满竖线和横线的「网格表」在学术出版里几乎绝迹。期刊和书籍通行的是三线表:只有三条粗细不同的横线,没有任何竖线。它由 booktabs 宏包提供。

三线表的三个命令是:\toprule 顶线(较粗)、\midrule 中线(分隔表头与数据)、\bottomrule 底线(较粗)。行与行之间不加线,靠留白区分——这正是它显得高级的原因。

如果表头跨若干列需要单独一道分隔线,用 \cmidrule{2-3} 画一条只覆盖第 2 到第 3 列的短线,比 \hline 更精细。

标准三线表
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

和第一个示例对比:去掉了所有竖线、用三条不同粗细的横线定边界,行距也更舒展。这就是书籍与期刊的通行风格。

table 浮动体:给表格编号与标题

裸 tabular 没有编号、也没有标题。正规做法是把它放进 table 环境——和 figure 一样,table 也是浮动体,会自动编号、可能移动位置。

table 里通常包含:\centering 居中、一个 \caption{...} 表注、可选 \label{tab:...},以及那个 tabular。惯例是表格的 \caption 写在表格上方(图片则写在下方),这样读者先看到标题再看到数据。

注意 table 与 tabular 只差一个字母、含义却完全不同:table 是带编号的浮动容器,tabular 是真正排行列的表格。初学者常把它们搞混。

带标题与引用的浮动表格
pdfLaTeX
编辑器加载中…
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

两个 \label 的惯例前缀区分得清清楚楚:图的记号用 fig: 开头,表的用 tab: 开头。这样 \ref 引用的是图还是表,一眼便知。

练习:做一张三线表
pdfLaTeX

用 booktabs 排一张三线表:三列(例如 Name / Major / Score),表头与数据之间用 \midrule 分隔,至少两行数据,首尾用 \toprule 与 \bottomrule。

编辑器加载中…

检查点(实时)

  • 使用 tabular 环境并声明列格式
  • 顶线 \toprule
  • 表头下用 \midrule
  • 底线 \bottomrule
  • 一行里有三列(两个 &)

🎯 目标效果

NameMajorScore
AliceMath95
BobPhysics88
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

练习:进阶:四列对照表
pdfLaTeX

排一张四列(l c c r)的对照表:表头写 Name / Q1 / Q2 / Total,至少三行数据,全部用 booktabs 三线表写法。

编辑器加载中…

检查点(实时)

  • 声明 tabular 的列格式
  • 每行要有四列(三个 &)
  • 用 toprule / midrule / bottomrule 构成三线表
  • 至少三行数据

🎯 目标效果

NameQ1Q2Total
Alice9085175
Bob7095165
Carol8080160
引擎:pdfLaTeX

点击「编译运行」生成真实 PDF

完成所有练习的检查点会自动记录