tabular
环境提供了最简单的表格功能,此时还不需要调用任何宏包。下面我们画出一个最基本的表格。
其中\hline
命令表示横线,|
表示竖线;&
用来分列,\\
用来换行,l、c、r
分别表示居左、居中、居右。
正如图形浮动环境figure
一样,表格也有一种类似的浮动环境table
,其标题和交叉引用的方法和图形浮动环境类似。
科研文献总常用的三线表,采用的是booktabs
宏包,三条线分别用\toprule
、midrule
、bottomrule
等命令表示。
\documentclass{ctexart}\usepackage{booktabs} % 三线表宏包\begin{document}\begin{table}\centering\begin{tabular}{lll} %全部居中\toprule操作系统 & 发行版 & 编译器\\\midruleWindows & MikTeX & TexMakerX\\Unix/Linux & texTeX & Kile \\MacOS & MacTex & TeXShop\\\bottomrule\end{tabular}\end{table}\end{document}
tabular
环境中的行可以采用居顶、居中、居底等纵向对齐方式,分别用t、c、b来表示,缺省的是居中对齐。列之间的分隔符也可以改用其他符号,比如||
来画双竖线。
语法:[纵向对齐]{横向对齐和分隔符}
如果我们要扩大或者缩小某一列的宽度怎么办?我们可以将对齐方式参数从l、c、r改为p{宽度},这时的纵向对齐方式是居顶,t、c、b等参数失效。
可以看出,在控制参数之后,表格内容缺省居左对齐。我们可以用列前置命令>{}
配合\centering
、\raggedleft
命令来把横向对齐方式改为居中或者居右。列前置命令仅对紧邻其后的一列有效。我加上之后就报错了:lllegal character in array arg.
于是,我参考文章LaTeX中的那些坑
原来少了一个\arraybackslash
,只需要对最后一列的参数加上\arraybackslash
命令即可, 之后我在导言区调用array
宏包,就可以实现三线表的居中对齐了。
\documentclass{ctexart}\usepackage{booktabs} % 三线表宏包\usepackage{array}\begin{document}\begin{table}[htbp]\centering\begin{tabular}{p{60pt}>{\centering}p{60pt}>{\raggedleft\arraybackslash}p{60pt}} \toprule[1.5pt] %控制线的粗细操作系统 & 发行版 & 编译器\\\midrule[1pt]Windows & MikTeX & TexMakerX\\Unix/Linux & texTeX & Kile \\MacOS & MacTex & TeXShop\\\bottomrule[1.5pt]\end{tabular}\end{table}\end{document}
至于为什么这样做,反正是换行的意思,避免冲突,具体参考LaTeX中的那些坑
array
宏包还提供另外两种对齐方式参数:
m{width}:与p{width}类似,文字垂直居中,水平居左;
b{width}:与p{width}类似,文字靠底部,水平居左;
有时候表格的某单元需要横跨几列,我们使用\multicolumn
命令,同时使用booktabs
宏包的\cmidrule
命令来画横跨几列的横线。
\multicolumn{横跨列数}{对齐方式}{内容}
\cmidrule{起始列-结束列}
\documentclass{ctexart}\usepackage{booktabs} % 三线表宏包\usepackage{array}\usepackage{multirow} %合并单元格\begin{document}\begin{table}[htbp]\centering\begin{tabular}{ccccc} \toprule& \multirow{2}{*}{Re-SSD} & \multirow{2}{*}{MFN}&\multicolumn{2}{c}{程序运行时长(s)}\\\cmidrule{4-5}& & &追赶法&逆矩阵法\\\midrule%[1pt]字母数据A&0.0740 & 0 & 2.191141 &14.049576 \\字母数据R&0.0672 & 0 &4.449666& 40.723701 \\脑部MRI数据&0.0628 & 0 & 3.310251 & 27.489843\\肺部CT数据& 0.0460 & 0 & 2.072329 & 14.016090\\\bottomrule\end{tabular}\end{table}\end{document}