在 LaTeX 中排版带有复杂表头(例如主干指标下分设多个子指标,需要跨列合并单元格)的学术三线表时,绝对不能使用默认的 \hline 和竖线 |。
规范的做法是调用 booktabs 宏包来绘制标准粗细的三线,并结合 \multicolumn 命令合并列,同时使用 \cmidrule 来绘制跨列表头下方的“辅助短横线”。
以下为您提供一段可直接编译的标准代码模板及详细语法解析。

一、 核心代码模板(可直接复制编译)
在 LaTeX 文档的导言区(\begin{document} 之前),必须确保调用了 booktabs 和 multirow 宏包:
\usepackage{booktabs} % 三线表核心宏包
\usepackage{multirow} % 处理跨行/跨列的宏包
完整的跨列三线表代码示例:
\begin{table}[htbp]
\centering
\caption{不同算法在两个数据集上的性能对比(跨列合并示例)}
\label{tab:merged_columns}
% 定义表格列数及对齐方式:第一列左对齐(l),其余四列居中(c)
\begin{tabular}{l c c c c}
\toprule % 顶线(粗线,1.5磅)
% 第一行表头:第一列留空,后面两个跨列大表头
\multirow{2}{*}{算法名称} &
\multicolumn{2}{c}{数据集 A (Dataset A)} &
\multicolumn{2}{c}{数据集 B (Dataset B)} \\
% 绘制表头下方的辅助短横线:跨第2-3列、跨第4-5列
% (lr) 表示左右两端向内缩进,防止相邻的短横线连在一起
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
% 第二行表头:子指标名称
& 准确率 (\%) & 耗时 (ms) & 准确率 (\%) & 耗时 (ms) \\
\midrule % 栏目线(细线,0.75磅)
% 表内数据正文
Baseline Method & 85.2 & 120 & 82.1 & 145 \\
Proposed Model & \textbf{92.4} & \textbf{95} & \textbf{91.3} & \textbf{110} \\
Prior Work [15] & 88.6 & 105 & 86.4 & 130 \\
\bottomrule % 底线(粗线,1.5磅)
\end{tabular}
\end{table}
二、 核心语法解析(为什么这么写?)
1. 跨列合并命令:\multicolumn{列数}{对齐方式}{内容}
-
在上述代码中,
\multicolumn{2}{c}{数据集 A}表示:将接下来的 2 列合并为一列,文字采用居中对齐(c),内容为“数据集 A”。 -
注意:合并列后,当前行的列数总和必须与
\begin{tabular}中定义的列数一致。例如总共 5 列,第一列占 1 个位置,两个\multicolumn{2}{c}各占 2 个位置,总和刚好是 $1+2+2 = 5$。
2. 辅助短横线命令:\cmidrule(lr){起始列-终止列}
-
\cmidrule{2-3}表示在第 2 列到第 3 列的下方画一条细横线。它的粗细与\midrule相同。 -
极其重要的修饰符
(lr):在\cmidrule后面紧跟(lr)代表 left 和 right(左右端)都进行适度截断缩进。如果不加(lr),\cmidrule{2-3}和\cmidrule{4-5}的线条会头尾相连,视觉上变成一根贯穿的长线,就无法区分这是两个不同的主表头了。
3. 三线表粗细三剑客:\toprule、\midrule、\bottomrule
-
只要调用了
booktabs宏包,这三个命令会自动为您分配符合学术出版规范的线宽(默认顶线/底线 0.08em,中线 0.05em),无需像 Word 那样手动输入“1.5磅”或“0.75磅”,彻底告别丑陋的\hline。
三、 避坑排版细节提示
-
严禁出现竖线:在
\begin{tabular}{lcccc}的定义中,绝对不要在字母之间加竖线管道符(如l|c|c),这违背了三线表的基本学术规范。 -
数据对齐:如果是带有小数点的纯数字列,为了排版更专业,推荐在导言区引入
\usepackage{siunitx}宏包,将表格对齐方式的c改为S,实现自动按小数点对齐。
