在 LaTeX 中插入表格

article/2025/10/24 21:44:08

原  文:在 LaTeX 中插入表格
译  者:Xovee
翻译时间:2020-1024

在 LaTeX 中插入表格

在科研论文中,表格是最重要的内容之一。LaTeX 提供了许多定制化表格的功能,包括调整表格大小,合并单元格,改变表格颜色等等。

文章目录

  • 在 LaTeX 中插入表格
  • 介绍
  • 在 Overleaf 中创建一个简单的表格
  • 固定长度的表格
  • 合并行和列
  • 跨越多页的表格
  • 表格的位置
  • 表题、标签、引用
  • 表格列表
  • 改变表格的外表
    • 线的宽度、单元格的填充
    • 交替对行着色
    • 对表格着色(单元格、行、列)
  • 参考指南
  • 来自 Xovee 的一些私货
  • 延伸阅读

介绍

下面的代码展示了一个简单的表格:

\begin{center}
\begin{tabular}{ c c c }cell1 & cell2 & cell3 \\ cell4 & cell5 & cell6 \\  cell7 & cell8 & cell9    
\end{tabular}
\end{center}

在这里插入图片描述

tabular环境是LaTeX默认创建表格的环境。你需要对这个环境手动指定一个参数。{c c c}参数告诉LaTeX,表格将会有三列,每一列都是居中对齐(c: center)。

在Overleaf中打开这个例子

在 Overleaf 中创建一个简单的表格

你可以在 tabular环境中放置分割线:

\begin{center}
\begin{tabular}{ |c|c|c| } \hlinecell1 & cell2 & cell3 \\ cell4 & cell5 & cell6 \\ cell7 & cell8 & cell9 \\ \hline
\end{tabular}
\end{center}

在这里插入图片描述

下面介绍tabular环境中一些重要的参数。

{ |c|c|c| }
这个参数设定了表格中有三列,列旁都有一个竖直的分割线。每一个c都代表这一列中的内容是居中对齐的,你也可以使用r来向右对齐,或者l来向左对齐。

\hline
这个参数会在表格中插入水平的分割线。你可以多次使用这个命令。

cell1 & cell2 & cell3 \\
&符号分割了单元格之间的内容。\\代表着一行的结束。

下面展示另外一个例子。

\begin{center}\begin{tabular}{||c c c c||} \hlineCol1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline1 & 6 & 87837 & 787 \\ \hline2 & 7 & 78 & 5415 \\\hline3 & 545 & 778 & 7507 \\\hline4 & 545 & 18744 & 7560 \\\hline5 & 88 & 788 & 6344 \\ [1ex] \hline
\end{tabular}
\end{center}

在这里插入图片描述

在这个例子里,表格中插入了一些双层的线。你可以利用这些线来让表格的内容显示的更加有条理。

在Overleaf中打开这个例子

固定长度的表格

在设计表格的时候,你也许想要每一列或者整个表格的长度是固定的。下面的例子介绍了如何设定表格的长度。

\begin{center}
\begin{tabular}{ | m{5em} | m{1cm}| m{1cm} | } 
\hline
cell1 dummy text dummy text dummy text& cell2 & cell3 \\ 
\hline
cell1 dummy text dummy text dummy text & cell5 & cell6 \\ 
\hline
cell7 & cell8 & cell9 \\ 
\hline
\end{tabular}
\end{center}

在这里插入图片描述
首先,你需要引入array包:

\usepackage{array}

tabular环境中,m{5em}参数对表格中的第一列设定了5em的长度(另外两列的长度是1cm),并且设定了单元格中的内容是水平对齐的。在这里,m代表middle,p代表top,b代表bottom。在标准的表格中,每一行必须手动插入。使用这个参数可以让单元格中的内容自动调整、换行,来满足所设定的固定长度。

如果你不需要控制每一个单元格的宽度,而是想设定整个表格的宽度,并且均等地设定空间,你可以使用tabularx包。请参考下面的例子:

\begin{tabularx}{0.8\textwidth} { | >{\raggedright\arraybackslash}X | >{\centering\arraybackslash}X | >{\raggedleft\arraybackslash}X | }\hlineitem 11 & item 12 & item 13 \\\hlineitem 21  & item 22  & item 23  \\
\hline
\end{tabularx}

在这里插入图片描述
tabularx环境与tabular环境相似,但是更灵活。在这个例子里,表格的宽度被设定为文字宽度的0.8倍。你还可以使用其他的LaTeX单位。

大括号中的参数(\raggedright\arraybackslash等),设定了每一列的对齐方式:第一列向左对齐,第二列居中对齐,第三列向右对齐。

在 Overleaf 中的打开这个例子

合并行和列

你可以合并行和列来生成更大的单元格。下面的例子介绍了如何使用\multicolumn命令来合并列。

\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }\hline\multicolumn{4}{|c|}{Country List} \\\hlineCountry Name     or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 Code&ISO numeric Code\\\hlineAfghanistan   & AF    &AFG&   004\\Aland Islands&   AX  & ALA   &248\\Albania &AL & ALB&  008\\Algeria    &DZ & DZA&  012\\American Samoa&   AS  & ASM&016\\Andorra& AD  & AND   &020\\Angola& AO  & AGO&024\\\hline
\end{tabular}

在这里插入图片描述

下面我们介绍这个命令中的各个参数。

{4}
需要合并的列的数量。

{|c|}
这个列会居中对齐(c),并且列两旁有两条竖直的分割线。

{Country List}
单元格中展示的内容。

如果你想合并行,你首先需要引入multirow包,然后你可以使用multirow命令。

\begin{center}
\begin{tabular}{ |c|c|c|c| } 
\hline
col1 & col2 & col3 \\
\hline
\multirow{3}{4em}{Multiple row} & cell2 & cell3 \\ 
& cell5 & cell6 \\ 
& cell8 & cell9 \\ 
\hline
\end{tabular}
\end{center}

在这里插入图片描述
这个命令接受三个参数。第一个是需要合并的行数。第二个参数是行的宽度。第三个参数是单元格的内容

在 Overleaf 中打开这个例子

跨越多页的表格

如果你要插入一个非常长的表格,单个页面无法放的下这个表格,那么你可以引入longtable包来让表格跨越多个页面。使用longtable命令:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{longtable}\begin{document}\begin{longtable}[c]{| c | c |}\caption{Long table caption.\label{long}}\\\hline\multicolumn{2}{| c |}{Begin of Table}\\\hlineSomething & something else\\\hline\endfirsthead\hline\multicolumn{2}{|c|}{Continuation of Table \ref{long}}\\\hlineSomething & something else\\\hline\endhead\hline\endfoot\hline\multicolumn{2}{| c |}{End of Table}\\\hline\hline\endlastfootLots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\Lots of lines & like this\\...Lots of lines & like this\\\end{longtable}

在这里插入图片描述
longtable的用法和tabular相似。下面介绍长表格的四个关键元素:

\endfirsthead
这个命令之前的内容会出现在第一页中表格的头部。

\endhead
这个命令之前,endfirsthead命令之后的内容,会出现在除了第一页的其他页中,表格的头部。

\endfoot
endhead相似。在这个命令之前,\endhead之后,内容会出现在除了最后一页的其他页中,表格的底部。

\endlastfoot
endfirsthead相似。在这个命令之前,\endfoot命令之后的内容,会仅出现在最后一页表格的底部。

在 Overleaf 中打开这个例子

表格的位置

设定表格的位置非常简单。表格是处于table环境之中的。

\begin{table}[h!]
\centering\begin{tabular}{||c c c c||} \hlineCol1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline1 & 6 & 87837 & 787 \\ 2 & 7 & 78 & 5415 \\3 & 545 & 778 & 7507 \\4 & 545 & 18744 & 7560 \\5 & 88 & 788 & 6344 \\ [1ex] \hline\end{tabular}
\end{table}

在这里插入图片描述
在这个例子中,h!参数代表着表格的位置是必须这里,它覆盖了LaTeX表格的默认设定。其他可能的位置参数包括:

h
大约出现在这里(here)。

t
出现在页面的顶部(top)。

b
出现在页面的底部(bottom)。

p
将表格放置在一个专门放置表格的特殊页面。

!
覆盖LaTeX内部的参数。

H
将表格精确地放置在其出现的位置,一般等价于h!

更多例子请见这篇文章。

在上面的例子中我们还使用了下面两个命令:

\centering
这个命令使表格在容器中居中。

[1ex]
这个命令在行中的单元格内添加了额外的空间。

在 Overleaf 中打开这个例子

表题、标签、引用

表格可以拥有表题、标签,也可以在文中被引用。

The table \ref{table:1} is an example of referenced \LaTeX elements.\begin{table}[h!]
\centering
\begin{tabular}{||c c c c||} \hlineCol1 & Col2 & Col2 & Col3 \\ [0.5ex] \hline\hline1 & 6 & 87837 & 787 \\ 2 & 7 & 78 & 5415 \\3 & 545 & 778 & 7507 \\4 & 545 & 18744 & 7560 \\5 & 88 & 788 & 6344 \\ [1ex] \hline
\end{tabular}
\caption{Table to test captions and labels}
\label{table:1}
\end{table}

在这里插入图片描述
这个例子中介绍了三个重要的命令:

\caption{Table to test captions and labels}
显然,这个命令设定了表格的标题。你可以将标题放置在表格的上方,或者下方。

\label{table:1}
如果你需要在文档中引用表格,你需要给表格设定一个标签。标签会对表格进行编号。下面的命令可以让你引用标签。

\ref{table:1}
这个命令在文档中会变成表格的编号。

注意:你需要对文档编译两次来让标签正常的显示。

在 Overleaf 中打开这个例子

表格列表

创建一个表格的列表非常简单:

\documentclass{article}
\usepackage[utf8]{inputenc}\begin{document}\listoftables...
\end{document}

在这里插入图片描述
表格的标题会被用来生成这个列表。如果你使用了babel包,标题“List of Tables"会被相应地替换为对应的语言。更多信息请参考这篇文章。

在 Overleaf 中打开这个例子

改变表格的外表

你可以自定义表格的外表,来让它更加好看。下面我们将介绍如何更改表格中线的粗细、线的颜色、单元格的背景色等。

线的宽度、单元格的填充

你可以增加表格中列之间的间距、行的间距,来让表格的可读性更强。

\documentclass{article}
\usepackage[utf8]{inputenc}\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{1.5}\begin{document}
\begin{tabular}{ |p{3cm}|p{3cm}|p{3cm}|  }
\hline
\multicolumn{3}{|c|}{Country List} \\
\hline
Country Name     or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\
\hline
Afghanistan & AF &AFG \\
Aland Islands & AX   & ALA \\
Albania &AL & ALB \\
Algeria    &DZ & DZA \\
American Samoa & AS & ASM \\
Andorra & AD & AND   \\
Angola & AO & AGO \\
\hline
\end{tabular}
\end{document}

在这里插入图片描述

\setlength{\arrayrulewidth}{1mm}
这个命令设定了表格边界的宽度。例子中使用的宽度是1mm,你也可以设定其他的宽度。

\setlength{\tabcolsep}{18pt}
单元格的边界和单元格中的文字的距离被设置为18pt。你也可以设置其他的距离。

\renewcommand{\arraystretch}{1.5}
行高被设定为默认的1.5倍。

在 Overleaf 中打开这个例子

交替对行着色

在表格中,人们经常使用两种颜色来对不同的行进行交替着色,来增强表格的可读性。你可以使用xcolor包。

\documentclass{article}
\usepackage[table]{xcolor}\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{2.5}{\rowcolors{3}{green!80!yellow!50}{green!70!yellow!40}
\begin{tabular}{ |p{3cm}|p{3cm}|p{3cm}|  }
\hline
\multicolumn{3}{|c|}{Country List} \\
\hline
Country Name     or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\
\hline
Afghanistan & AF &AFG \\
Aland Islands & AX   & ALA \\
Albania &AL & ALB \\
Algeria    &DZ & DZA \\
American Samoa & AS & ASM \\
Andorra & AD & AND   \\
Angola & AO & AGO \\
\hline
\end{tabular}
}

在这里插入图片描述

注意命令右边大括号中的参数。

\rowcolors{3}{green!80!yellow!50}{green!70!yellow!40}

命令\rowcolors接收三个参数:

  • 开始着色的行
  • 奇数行的颜色
  • 偶数行的颜色

参考xcolor包的官方文档(见文末链接),其中介绍了可用的颜色,以及如何创建自定义的颜色。在这个例子中,不同比例的绿色和黄色混合起来。

为了让上面的命令正常工作,记得在文档的序言部分使用下面的命令:

\usepackage[table]{xcolor}

在 Overleaf 中打开这个例子

对表格着色(单元格、行、列)

表格中的所有元素都可以被着色。你必须引入xcolor包。
下面介绍一个例子:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}\setlength{\arrayrulewidth}{1mm}
\setlength{\tabcolsep}{18pt}
\renewcommand{\arraystretch}{2.5}\newcolumntype{s}{>{\columncolor[HTML]{AAACED}} p{3cm}}\arrayrulecolor[HTML]{DB5800}\begin{tabular}{ |s|p{3cm}|p{3cm}|  }
\hline
\rowcolor{lightgray} \multicolumn{3}{|c|}{Country List} \\
\hline
Country Name    or Area Name& ISO ALPHA 2 Code &ISO ALPHA 3 \\
\hline
Afghanistan & AF &AFG \\
\rowcolor{gray}
Aland Islands & AX & ALA \\
Albania   &AL & ALB \\
Algeria  &DZ & DZA \\
American Samoa & AS & ASM \\
Andorra & AD & \cellcolor[HTML]{AA0044} AND    \\
Angola & AO & AGO \\
\hline
\end{tabular}

在这里插入图片描述
下面介绍如何更改表格中不同模块的颜色:

  • 线的颜色。使用\arrayrulecolor命令。在这个例子中,我们使用了一种HTML格式,你也可以使用其他可用的格式(参见xcolor的官方文档,见文末链接)。
  • 单元格的背景色。使用\cellcolor命令。你可以直接输入颜色的名字(红色、灰色、绿色等),你也可以使用其他的格式(例如HTML)。
  • 行的背景色。使用\rowcolor命令。
  • 列的背景色。这个有一点麻烦。使用下面的命令来定义一种新的列类型:
\newcolumntype{s}{>{\columncolor[HTML]{AAACED}} p{3cm}}

这个命令定义了一种新的列,叫做s,对齐方式是p,宽度是3cm,颜色是AAACED(HTML格式)。这个新的列类型可以在tabular环境中使用。

在 Overleaf 中打开这个例子

参考指南

tabular环境中参数

你可以使用tabular环境来创建表格。

\begin{tabular}[pos]{cols}table content
\end{tabular}

它的参数包括:

  • pos:垂直位置。包含下面三种可选值:
    t:顶部的线与文本的baseline对齐
    b:底部的线与文本的baseline对齐
    c或none:文本的baseline直接与表格居中对齐

  • cols:定义了每一列边界的对齐方式。包含下面几种可选值:
    l:左对齐的列
    c:居中对齐的列
    r:右对齐的列
    p{'width'}:段落列中的文字顶部水平对齐
    m{'width'}:段落列中的文字中间水平对齐
    b{'width'}:段落列中的文字底部水平对齐
    |:垂直线
    ||:双垂直线
    *{num}{form}:格式重复 num 次;例如*{3}{|l}等价于|l|l|l|

  • 新的行、单元格之间的间隔,使用下面命令:
    &:列之间的分割符
    \\:开始一个新行(行后的额外距离可以这样指定:\\[6pt]
    \hline:水平线
    newline:在段落列中的单元格中开始一个新行
    \cline{i-j}:局部添加水平线,开始于第i列,终止于第j列

来自 Xovee 的一些私货

在科研论文写作中,三线表是一种非常流行的最佳实践。其有如下几个要点:

  • 能不用竖线就不用
  • 能不用横线就不用
  • 表格尽量放置在首次引用之后的页首 [t] 或者页尾 [b]

下面是一个示例:

\usepackage{booktabs}\begin{table*}[t]\centering\caption{A comparison between UESTC, Xidian University and BUPT.}\label{tab:univ-compa}\begin{tabular}{lcccrrr}\toprule\textbf{University} & \textbf{Double-Top (A)} & \textbf{985} & \textbf{211} & \textbf{ARWU Ranking} & \textbf{QS Ranking} & \textbf{US News Ranking} \\ \midruleUESTC & $\checkmark$ & $\checkmark$ & $\checkmark$ & 151-200 & 591-600 & 272 \\ BUPT & & & $\checkmark$ & 601-700 & 801-1000 & 760 \\Xidian University & & & $\checkmark$ & 401-500 & n/a & 729 \\\bottomrule\end{tabular}
\end{table*}

效果如下:
效果

延伸阅读

  • 设定图片和表格的位置
  • 表格和图片的列表
  • LaTeX中的距离
  • LaTeX中的颜色
  • xcolor包手册
  • tabularx包手册
  • tabu包手册
  • longtable包手册

http://chatgpt.dhexx.cn/article/6PbGvclS.shtml

相关文章

LaTeX表格处理

关于LaTeX中对表格的一些处理 在使用latex撰写文档时,可能会遇到表格太大超过页面范围,表格太小显示不美观,以及生成跨行表格,表头斜线等问题,以下是一些调整表格的命令。 调整表格大小 使用以下的latex命令之前&am…

latex画表格(自用)

绘制 latex 表格需要用到 table 和 tabular 环境。 其中table环境里写表格的标题(caption)、表格的偏移之类的。 tabular环境则是绘制表格的内容。 首先是table环境部分,\begin{center} 让表格居中,\caption{Table name.} 写表格…

Latex论文表格画法

参考 Latex论文表格画法 - 云社区 - 腾讯云 1、基本表格画法 \begin{table}[htbp] 表示表格的开始。中括号中的 htbp 表示的是表格的浮动格式。当然这个基本参数不仅仅只是对表格有用。需要注意的是,一般使用 [htb] 这样的组合,这样组合的意思就是Latex会…

LaTeX中的表格

LaTeX中的表格 这一节我们主要讨论LaTeX中表格的制作和排版问题。 (1)在LaTeX中,可以使用tabular环境生成表格。 (2)tabular环境需要一个指定列排版格式的必选参数。可以用l指定左对齐,用c指定居中对齐&a…

Latex 制作表格

Latex 制作表格 前言一、Latex三线表1、普通三线表2、跨页三线表 二、简单表1、基本需求表2、表格整体相关设置【表名及位置、表宽、注解、字号】1. 表格标题及位置2. 表宽设置3. 表格注解4. 字号设置 三、复杂表1、合并单元格2、斜线表头 五、常用表格模板代码总结 前言 Late…

Qt学习c++

Qt学习C 平台及版本Day01 HelloWorld程序生成Day02 分析第一个Qt程序1) main.cpp2) mainwindow.h和mainwindow.cpp Day03 Qt控件和事件Day04 信号和槽基本理解connect()函数实现信号和槽实例演示信号和槽机制 Day05 Qt QLabel文本框的使用QLabel文本框的信号和槽QLabel的常用方…

Qt学习基础

1. Qt是什么? Qt是一个基于C语言的图形用户界面(GUI)开发框架,Qt不仅仅可以进行GUI开发,除此之外Qt也能进行很多其它功能开发,包括但不限于多线程、数据库、图像处理、音视频处理、网络通信与文件IO等。 Qt…

Qt学习心得体会

Qt是一种跨平台C图形界面程序开发框架,在社会中各种行业都有着举足轻重的地位。 Qt为了实现对象与对象之间的通信,提出了信号与槽的概念。当一个对象发生改变会发送一个信号通知另一个对象执行一个函数,这个函数称为槽,信号只需要…

QT 学习笔记(二)

文章目录 一、标准信号和槽1. 准备工作1.1 main.c1.2 widget.cpp 2. 添加按钮2.1 widget.h2.2 widget.cpp2.3 运行结果 3. 信号和槽(重点)3.1 信号3.2 自定义槽3.3 widget.h3.4 widget.cpp3.5 运行结果 二、两个独立窗口1. 添加新窗口2. 自定义信号3. 窗…

Qt学习 - 总

Qt学习 学习中的错误常用快捷键杂项布局信号与槽数据库相关QSS选择器 {property:value}Qt样式表设置函数 setStyleSheet()QSS文本属性 事件QMouseEvent:鼠标事件键盘事件QWheelEvent:滚轮事件QCloseEvent:关闭事件QTimerEvent:超时…

Qt日常学习

2022/07/28 使用Visual Studio2019 搭配 Qt5.14,可视化Qt界面使用QtDesigner。 若只使用代码来做界面太麻烦,效率低;只使用可视化界面进行拖拽效率高但无法实现全部功能。使用代码可视化结合的方式能够实现绝大部分功能。 练习1&#xff1…

QT入门学习(一):什么是QT

QT 是什么? QT是一个跨平台C图形用户界面应用程序开发框架。它不仅可以开发GUI程序,也可以开发非GUI程序。我们通常使用QT开发GUI程序。 它可以开发Windows、Linux、Mac平台的应用程序。也可以开发移动端应用程序以及嵌入式程序。 QT 模块 QT 有模块…

一位大佬对于 Qt 学习的最全总结(三万字干货)

击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号” 干货福利,第一时间送达! 分享一位大佬 Github 上关于 Qt 学习的总结。作者无私分享了一百多个自定义控件以及几本 Qt 的书籍(C Qt),特此引用这个大…

QT学习笔记(一)——QT基础

QT学习笔记(一)——QT基础 文章目录 QT学习笔记(一)——QT基础前言一、QT是什么?二、基础内容1.pro文件规则及含义2. Widget头文件3. QT坐标系的定义4. QApplication应用程序类5.按钮:QPushButton6. 信号和…

Qt初学者的一些学习方法、参考资料

1,简介 最近有一些朋友加我,询问Qt入门学习的方法、资料 我基本都一一作答,根据情况给出了一些参考意见 感觉很多新手开始学习时很迷茫,不知道学习哪些方面、看什么资料 这里干脆写一篇文章,把自己的学习过程给大家介…

Qt学习之C++基础

前言 用了大概2个月的时间,学了Qt,然后开发一个小项目,总的来说,在主机GUI程序中,相比Java的Swing和JavaFX,个人感觉Qt的界面设计更加简便一点,灵活性更高一些,然后下边就主要简述一…

Qt学习之Qt基础入门(中)

1. 前言 上一篇博客,总结了Qt的一些基础用法,这篇博客继续跟视频学习Qt的常用方法 Qt入门系列: Qt学习之C基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) Qt学习之Qt基础入门(下) 本文原创,创作不易&…

Qt学习之Qt基础入门(上)

1. 前言 上一篇博客,简单的介绍了一下C的面向对象编程,这篇博客就主要是用来入门Qt,废话不多说,开干! Qt入门系列: Qt学习之C基础 Qt学习之Qt安装 Qt学习之Qt基础入门(上) Qt学习之Qt基础入门(中) Qt学习…

qt基础入门教程

1、t的介绍、优点、成功案例 5.8.0 Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。爸是完全面向对象的,很容易扩展,并且允许真正的组件编程。 推荐安装 wps linux 桌面环境 虚拟机软件 屏幕共…

Qt入门教程100篇(已完结)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「CSDN学院」:传送门 😈「本文的内容」:Qt基础教程 😈「动动你的小手」:点赞👍收藏⭐️评论&…