本文的主要内容是:
- 用工具快速生成表格
- 三线表的画法
- 合并单元格
- 添加斜线表头(Slash header)
- 给表格添加脚注
快速生成LaTeX表格
手动输入LaTeX的表格实在是太累了!大家一定也曾想尽办法让自己已经写好的Microsoft Word或者Microsoft Excel内的表格变成LaTeX的表格环境。在这里我介绍两种办法让大家方便地将word和excel表格变为LaTeX命令。
在线工具
在线工具的优点在于不需要下载任何文件,打开浏览器就可以用。在这里我推荐Tables Generator这个网站。将我们已经制作好的表格黏贴进去后,立即就可以得到LaTeX命令。同时访问这个网站不需要科学上网。最令人意外的是,这个网站不仅仅支持将表格转换成LaTeX命令,也可以将表格转换成HTML表格、纯文本表格、markdown表格和MediaWiki表格。
classes of lipids | polar portion | nonpolar portion |
---|---|---|
triacyglycerol | glycerol | fatty acid |
glycerophospholipid | phosphorate group and alcohol | fatty acid |
sphingolipid | phosphorate group and Choline | Sphingosine and fatty acid |
ganglioside | oilgosaccharide | Sphingosine and fatty acid |
cholesterol | the hydroxyl group at C-3 | the steroid nucleus and the hydrocarbon side chain at C-17 |
我们将上面的表格输入这个网站,就可以得到以下的结果:
LaTeX表格
1 | \begin{table}[] |
HTML表格
1 | <style type="text/css"> |
纯文本表格
1 | +---------------------+-------------------------------+------------------------------------------------------------+ |
Markdown表格
1 | | classes of lipids | polar portion | nonpolar portion | |
本地插件
有很多朋友不喜欢在线工具,因为它们更新速度快,消失的速度也快,同时完全离不开网络。我们也有着可以下载到本地的插件,能够将excel表格转化成LaTeX代码。我要介绍的插件是Excel2LaTeX,这个插件是一个可以应用于Windows平台下的Microsoft Excel 2000-2019的excel插件,是一个标准的.xla
文件。
它能支持的Excel表格特性有:
- 粗体、斜体
- 精确到每一单元格的左右对齐
- 每一个单元格的边框样式
- 字体颜色(使用
xcolor
宏包) - 单元格背景色(使用
colorbl
宏包) - 内容旋转(使用
rotating
宏包) - 合并单元格
- 能将单元格中的特殊符号转换为LaTeX命令
- 支持
booktabs
宏包
其实它还有更多优良的特性,在此不再赘述。
画三线表
三线表是学术论文写作中的必备。三线表通常只有三条线,即顶线、底线和栏目线,这三条线都是横线,表格中没有任何竖线。其中顶线和底线为粗线,栏目线为细线。要制作三线表,我们必须使用booktabs
宏包。进入tabular
环境后,在对应的位置加入相应的横线:顶线是\toprule
,栏目线是\midrule
,底线是\bottomrule
。
首先在你的导言区加上:
1 | \usepackage{booktabs} |
1 | \begin{tabular}{ccccc} |
合并单元格
合并单元格在LaTeX中看起来是个非常非常困难的事情。从完成这件事上所用的宏包的数量也可以看出着并不简单。为了达到这个目的,我们需要使用两个宏包array
和multirow
。
1 | \documentclass{article} |
让我们来看看tabular
环境的参数的意义:
@{code}
: 这将插入给定代码而不是列分隔空间。代码可以是诸如符号或空间宏之类的命令。在这里,我们将其设置为空,从而实现与线的左对齐。p{width}
: 这指定了包含文本的特定宽度的单元格。字母p代表段落。>{code}
: 这会在列的单元格之前插入代码,而<{code}
之后会执行此操作。这来自array
宏包,并在其手册中有所记录。在这里,我们使用它来插入\raggedleft
命令以避免默认的完全对齐,这在表格单元格中不太好。r,l,c
: 这些分别代表右对齐,左对齐,居中对齐。
现在,让我们再将着眼点放在Input
这个单元格。
1 | \multicolumn{number of columns}{formatting}{text} |
在这里,我们将列数设置为2,并设置为居中格式,最后输入单元格文本。
添加斜线表头
斜线表头是设计表格时常用的元素。在LaTeX中实现这一点非常容易,只需要使用slashbox
宏包即可。
1 | \documentclass{article} |
slashbox
宏包提供了两种命令,分别是:
1 | \slashbox[width][trim]{left top text}{right bottom text} |
可选参数用于在自动计算不适合的情况下进行调整。你可以指定斜线列的宽度;可以分别通过声明l,r或lr来选择左侧修剪,右侧修剪或两侧切割,从而选择默认左侧和右侧柱分隔空间的修剪。
需要注意的是slashbox
宏包并不被TeX Live发行版包括。事实上,它是一个非常古老的宏包,并不建议大家使用。
slashbox
的替代品diagbox
宏包兼容了slashbox宏包提供的所有命令。
1 | \usepackage{diagbox} |
在导言区加载完之后,我们就可以开始排版表头了。
1 | \documentclass{article} |
同时,\diagbox
命令还有非常多的参数,比如可以指定斜线方向的dir
,它可以取 NW(西北)、NE(东北)、SW(西南)、SE(东南)四种方向。在只有一条斜线的表头中,NE 与 SW、SE 与 NW 是等价的。斜线方向的默认值是 NW。
\diagbox
的更多参数以及diagbox
宏包的更多功能详见其文档。
添加脚注
表格中的条目(例如行标题文本)应该很短,否则会出现问题。例如,长标题可能会让我们的眼睛更难以跟随短行条目但是跳过更宽的行。在保持表本身简洁明快的同时添加必要细节的一种方法是使用脚注。
比起将笔记放在页面底部,直接在表格底部添加注记更好。我们也可称它们为表注。
为了做到这一点,我们需要使用threeparttable
宏包。
1 | \documentclass{article} |
其中,threeparttable
是用于取代table
环境的新环境,在threeparttable
环境的最后可以添加另一种环境tablenotes
来为你的表格提供注释。
在表格中使用注释的方法是使用命令\tnote{reference number}
,而引用参数来自于环境tablenotes
。
tablenotes
和itemize
非常相像。使用的语法也是一模一样的。
1 | \begin{tablenotes} |