跳到正文

LaTeX 表格

在 tabular 环境中书写各行,单元格之间用 & 分隔,每行末尾写 \\;需要表题和编号时,把它放进 table 浮动体中。

第一个表格

表格以 \begin{tabular}{...} 开始。花括号中每列一个字母:l 表示左对齐,c 表示居中,r 表示右对齐。在表格内部,& 移到下一个单元格,\\ 结束当前行。

三列,三种对齐方式

\begin{tabular}{lcr}
Fruit  & Colour & Price \\
Apple  & red    & 0.44 \\
Banana & yellow & 1.20 \\
\end{tabular}

你不需要在源代码中把 & 对齐。它们两侧的空格会被忽略,所以只有在有助于阅读代码时才需要对齐。

列类型

列格式决定表格有多少列,以及每一列如何对齐。

字母含义在 Scissor LaTeX 中
l, c, r左对齐、居中、右对齐可用。
p{4cm}固定宽度的段落列按左对齐列处理。宽度被忽略,所以长文本不会在 4 cm 处换行。
m{..}, b{..}array 宏包提供的段落列按左对齐列处理;宽度被忽略。
X (tabularx)拉伸以填满宽度的列按左对齐列处理。
|列与列之间的竖线可用。
@{..}, >{..}, <{..}单元格周围的间距和代码接受但忽略。

表格线:\hline 或 booktabs

\hline 在整个表格上画一条横线,列格式中的 | 画出竖线。这样就得到经典的带边框外观。

用 \hline 和 | 制作的带边框表格

\begin{tabular}{|l|r|}
\hline
Name & Points \\
\hline
Erika Mustermann & 44 \\
John Doe & 38 \\
\hline
\end{tabular}

许多期刊偏好更少的线条。booktabs 宏包提供三条线:表头上方的 \toprule、表头下方的 \midrule 和末尾的 \bottomrule,不使用竖线。

用 booktabs 排版相同的数据

LaTeX导言区: \usepackage{booktabs}在编辑器中打开 (在新标签页中打开)
\begin{tabular}{lr}
\toprule
Name & Points \\
\midrule
Erika Mustermann & 44 \\
John Doe & 38 \\
\bottomrule
\end{tabular}

表题、编号和引用

要给表格加上表题和编号,请把 tabular 放进 table 环境中。添加 \caption{...},并在其后添加 \label{...}。然后 \ref{...} 就能在正文任意位置输出该表格的编号。

带表题的编号表格

LaTeX导言区: \usepackage{booktabs}在编辑器中打开 (在新标签页中打开)
\begin{table}[ht]
  \centering
  \caption{Points after the first round.}
  \label{tab:points}
  \begin{tabular}{lr}
    \toprule
    Name & Points \\
    \midrule
    Erika Mustermann & 44 \\
    Hans Mustermann  & 41 \\
    \bottomrule
  \end{tabular}
\end{table}

Table~\ref{tab:points} shows the points.
由 Scissor LaTeX 排版: 带表题的编号表格

表题出现在你书写它的位置:这里位于表格上方,这也是表格表题的常见位置。如果想让它位于下方,请把 \caption 放在 tabular 之后。

跨列单元格

\multicolumn{n}{align}{text} 把一行中的 n 个单元格合并为一个,并指定其对齐方式。常见用法是给一组列加上共同的表头。

跨两列的表头

LaTeX导言区: \usepackage{booktabs}在编辑器中打开 (在新标签页中打开)
\begin{tabular}{lcc}
\toprule
       & \multicolumn{2}{c}{Round} \\
Name   & 1  & 2  \\
\midrule
Erika  & 44 & 40 \\
John   & 38 & 45 \\
\bottomrule
\end{tabular}

跨行单元格

在 LaTeX 中,multirow 宏包的 \multirow{n}{*}{text} 让一个单元格的高度超过一行。Scissor LaTeX 保留文本,但不保留跨行:文本位于第一行,下面各行在该列保持为空。

\multirow:文本保留在第一行

LaTeX导言区: \usepackage{multirow,booktabs}在编辑器中打开 (在新标签页中打开)
\begin{tabular}{llr}
\toprule
Group & Name & Points \\
\midrule
\multirow{2}{*}{A} & Erika & 44 \\
                   & John  & 38 \\
\bottomrule
\end{tabular}

对大多数表格来说,这样阅读起来没有问题。如果标签应当在这几行之间居中,请改为把它写在中间一行。

与 TeX 安装的不同之处

这些写法在 TeX 安装中也都能编译,所以你在这里写的文档在那里仍然可用。

相关内容:用 multirow 制作跨多行的单元格,用 array、tabularx、longtable 设置列宽,用 caption、subcaption 设置表题,以及在浮动体中了解位置控制。如果想通过点击来创建表格,请使用 LaTeX 表格生成器。

常见问题

如何在 LaTeX 中给表格添加表题?

把 tabular 放进 \begin{table} ... \end{table} 中,并在其中写 \caption{Your text}。Scissor LaTeX 会为表格编号,并在表题前输出“Table 1:”。

为什么我的长文本在 p 列中不换行?

Scissor LaTeX 目前还不应用列宽,所以 p{4cm} 列的宽度等于其中最长的一行。请用 \newline 拆分长单元格,或把它们缩短。

如何合并 LaTeX 表格中的单元格?

用 \multicolumn{2}{c}{text} 跨列合并单元格。在 Scissor LaTeX 中,用 \multirow 向下跨行合并时会保留文本,但不保留跨行。

本页的每个示例都在构建网站时由 Scissor LaTeX 排版。 最后更新:2026-11-07