在 LaTeX 中插入表格
原 文:在 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
包手册
在 LaTeX 中插入表格相关推荐
- latex中插入表格
\begin{table} \centering \caption{表格题目} \begin{tabular}{ccc} %三个c是因为三列,令每列显示在中间显示,也可以是l或r \toprule第一 ...
- 【Latex】【插入图片】如何在latex中插入并列图片
[Latex][插入图片]如何在latex中插入并列图片 实验分析部分需要将多个图片并列展示,今天看了网友的一些提示,写出了两种并列展示图片的方法: 每个图片都有一个标题 多个图片共用一个标题,每个图 ...
- html网页在指定位置嵌入表格,网页制作中表格的主要作用 网页制作中插入表格怎么调整位置...
在网页设计中,表格有什么重要作用 1.当需要提交所有数据时,可以提交整个100个表,如果不使用表,可以逐个提交. 2.表格设计简洁美观,方形,与网页的设计非常一致. 3.网站其实是一个大版本的表格,数 ...
- 解决LaTex中插入Visio画图有多余边框的问题
解决LaTex中插入Visio画图有多余边框的问题 参考文章: (1)解决LaTex中插入Visio画图有多余边框的问题 (2)https://www.cnblogs.com/tianshifu/p/ ...
- latex中插入visio矢量图的方法
其实,我们用visio画的都是矢量图,只是我们通常转换成位图(jpg等格式)后再使用,这样其实就失去了矢量图的价值了.这里讲一种在latex中插入viso生成的矢量图的方法. 首先,在我们的电脑中安装 ...
- matlab mnl,LaTex中插入VISO 和 MATLAB 经验总结
LaTex中插入VISO图形 1. 在VISO中,调整图形大小. [文件]-->[页面设置]-->[页面尺寸]-->[调整大小以适合绘图内容]-->[确定] 这样,图形就可自 ...
- 在Latex中插入Python代码
这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...
- 在WordPress文章中插入表格的四种方法,史上最全
https://boke112.com/4553.html/all td, tr {border: 1px solid #000000;text-align: center;padding: 10px ...
- latex附录中放python代码_在Latex中插入Python代码
这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...
- python matplotlib图中插入表格
python matplotlib图中插入表格 解决问题 示例代码 结果 解决问题 在matplotlib画的图里插入表格数据.使用到pyplot和gridspec函数. 示例代码 #导入库 impo ...
最新文章
- w ndows连接USB不正常,Raspberry Pi Zero W 连接电脑 – 针对Windows 10 缺少RNDIS驱动
- 【怎样写代码】参数化类型 -- 泛型(三):泛型之类型参数
- Shell脚本文件操作
- IE9会颠覆传统的上网模式?
- 7.git提交的前进与后退
- Specified key was too long; max key length is 1000 bytes问题解决
- 让你的man手册显示与众不同
- QT学习:数据库基本概念
- HTML轮播图全宽,jq全兼容自适应宽度图片轮播(新手适用)
- Windows 7 添加SSD硬盘后重启卡住正在启动
- PIM DM技术原理与实验
- 大一c语言选择题库及答案,c语言选择题(大一c语言编程题库)
- java 导出Excel表头
- 微信开发者工具的下载及小程序项目创建
- 簇是操作系统读写文件的基本单位
- pandas学习之drop和dropna篇
- Java多线程入门(狂神说)
- echarts 折线图,无数据时不显示灰色线条
- 多媒体——图片——对图片进行简单加工
- 职教云python程序设计答案_智慧职教云课堂2020Python程序设计基础章节答案
热门文章
- 蓝牙音箱项目:记录CSR8635芯片的蓝牙音箱的开发过程
- 百度网盘视频倍速方法
- Hibernate Hierachy
- Vue项目搭建常用的配置文件,request.js和vue.config.js
- [Redis]Redis客户端
- 用python的tkinter做游戏(六)—— 坦克大战或射击游戏Demo 篇
- 【数据分析】豆瓣电影Top250爬取的数据的可视化分析
- win10远程连接Ubuntu
- mysql数据库配置步骤,MySQL数据库安装配置步骤详解
- SIM868——AT+CBC 监测锂电池电量理解与测试