LaTeX 三线表跨列合并单元格代码:\multicolumn 与 \cmidrule

latex三线表跨列合并单元格代码|2026-09-11 14:56:22|阅读量:10

在 LaTeX 中排版带有复杂表头(例如主干指标下分设多个子指标,需要跨列合并单元格)的学术三线表时,绝对不能使用默认的 \hline 和竖线 |

规范的做法是调用 booktabs 宏包来绘制标准粗细的三线,并结合 \multicolumn 命令合并列,同时使用 \cmidrule 来绘制跨列表头下方的“辅助短横线”。

以下为您提供一段可直接编译的标准代码模板及详细语法解析。

LaTeX 调用 booktabs 宏包实现三线表跨列合并单元格(multicolumn)与辅助短横线(cmidrule)的代码与效果对照图

一、 核心代码模板(可直接复制编译)

在 LaTeX 文档的导言区(\begin{document} 之前),必须确保调用了 booktabsmultirow 宏包:

代码段
\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,实现自动按小数点对齐。