1. 前言
最近又开始写论文,记录一下使用Latex制作表格的方法
2.不同类型表格制作
2.1最基本的无线表格: tabbing
利用制表位进行表格的排版, 但是不会出现表线, 另外这个环境对于制表位比较灵活, 需要考虑很多因素(制表位的相对位置)才能制作出一个精美的表格. 一般来说不是很常用.
基本语法
begin{tabbing}
格式hspace{3em} = 作者 \
Plain TeX > 高德纳 \
LaTeX > Leslie Lamport
end{tabbing}
2.2 一般表格: tabular/array
其中tabular用于文本环境中, array用于数学环境中, 不过tabular也可以用于数学环境(但是如果表格中含有中文, 不加上text{}的话不会完全显示).
基本语法
begin{tabular}[]{}
&&...&\
......
end{tabular}
下面是一个具体的例子
begin{tabular}{|c|r@{.}l|}
hline
收入 & 12345&6 \
hline
支出 & 765&43 \
hline
节余 & 11580&17 \
hline
end{tabular}
在上面这个例子中, 我们采用tabular环境进行表格的设计, 这里要注意的是列格式的选取, 除了最为常用的c,l,r分别代表居中对齐, 左对齐和右对齐外, 还有|用来加上表列分割线, 以及@{}用来自定义格式, 本例中使用了小数点(.)来进行分割, 用来将表项内容按小数点对齐(同时消除了表项之间的默认间距), 其他列格式如下:
*{}{}: 重复多个表列的列格式说明;
p{}: 用于指定列宽, 可以换行.
对于tabular/array环境, 其列格式说明还可以进行自定义, 这一功能极大地方便了表格的制作.
例如, 如果我想对某一列输入公式, 一般的做法是直接在每一个cell中加上$$,但是这是很重复机械的工作, 下面我们来看如何自定义列格式, 使得公式输入变得简单1.
% 下面这条命令加入导言区
newcolumntype{C}{>{$}c}{}进行简化: {|c|*{2}{C|}}
hline
新的横坐标&cos theta & -sin theta \
hline
新的纵坐标&sin theta & cos theta \
hline
end{tabular}
caption{坐标旋转变换}
end{table}
同样地, 对于刘海洋老师书中的这个例子, 也可以用列格式定制来简化表格的实现:
[
begin{array}{|c|*{3}{r@{.}l|}} % 相当于 |c|r@{.}l|r@{.}l|r@{.}l|
hline
text{收入} & 12345&6 & 5000&0 & 1020&55 \
hline
text{支出} & 765&43 & 5120&5 & 98760&0 \
hline
text{节余} & 11580&17 & -120&5 & -97739&45 \
hline
end{array}
采用下面的简化命令:
% 下面两行放入导言区
newcolumntype{L}{>{$}l{$}r
可以达到一样的效果. 更多的列格式定制方法, 还请参考1.
基本调整命令
修改行高:renewcommandarraystretch{2}这条命令将默认的行高(1)调整为2, 使表项看起来更为宽松;
使用makecell宏包定制行的高度, 使用Gape[]{内容}进行调整;
使用multicolumn进行表格的合并, 使用vline进行竖直拆分;
...
2.3 科研论文: 三线表(toprule)
在科技文档中,数据表经常被表现为一种只有三种横线的形式,即三线表。为了美观,三线表顶部和底部的两条横线比较粗,而中间分隔表头与数据的线则较细2.
需要用到booktabs宏包, 进行三根不同粗细表线(toprule, midrule, bottomrule)的绘制. 具体还有很多微调定制的方法, 不过一般来说用不到的.
基本语法
% usepackage{booktabs}
begin{tabular}{ccccc}
toprule
序号 & 性别 & 年龄 & 身高/cm& 体重/kg\
midrule
1 & F & 14 & 156 & 42 \
2 & F & 16 & 158 & 45 \
3 & M & 14 & 162 & 48 \
4 & M & 15 & 163 & 50 \
bottomrule
end{tabular}
这 里 需 要 注 意 一 点 , 在 三 线 表 中 最 后 一 行 一 定 要 加 上 , 否 则 会 出 现 报 错 . color{red}这里需要注意一点, 在三线表中最后一行一定要加上verb==,否则会出现报错.
这里需要注意一点,在三线表中最后一行一定要加上,否则会出现报错.
2.4 广泛应用: 定宽表(tabularx)
简单介绍
这个表格除了排版行看起来比较长的表格之外, 还可以实现很多意想不到的功能, 例如制作复杂的论文封面等. 我本科时候就用这个环境做了一个跟Word模板一模一样的
基本语法
begin{tabularx}{}[]{}
&&...&\
......
end{tabularx}
这里的宽度参数主要采用textwidth来设置, 就是一页的宽度, 对于很多宽度较大的表格, 采用定宽表格搭配三线表能有很好的显示效果. 参数中的列格式说明可以采用默认的X列格式说明符, 即弹性宽度,
X列格式说明符表示自动延伸的表列, 可以与其他列说明符一起使用. X 列格式很好地处理了间距问题,表项内容会按一个定宽的 parbox 盒子排版,可以自动换行,内部默认是左对齐的2.
下面是一个调用示例
begin{tabularx}{textwidth}{|c|X|X|X|X|X|}
hline
数字 &1&2&3&4&5\
hline
字母 &A&B&C&D&E\
hline
天干 & 甲 & 乙 & 丙 & 丁 & 戊 \
hline
end{tabularx}
如果想要将内容设置为居中对齐, 那么就需要自己定义一个列格式, 由于tabularx环境包含array环境(array环境的二次开发), 这里我们就可以采用array中自定义列格式的方法, 即
newcolumntype{C}{>{centeringarraybackslash}X}
1
一个例子2:
begin{table}[H]
centering
begin{tabularx}{.7textwidth}{|c|C|C|C|C|C|}
hline
数字 &1&2&3&4&5\
hline
字母 &A&B&C&D&E\
hline
天干 & 甲 & 乙 & 丙 & 丁 & 戊 \
hline
end{tabularx}
end{table}
2.5跨页长表格(longtable)
endhead
endfirsthead
endfoot
endlastfoot &&...&\ ......
end{longtable}
3. 网页制作表格工具
直接使用网页在线制作表格,和excel的操作一样
(http://tablesgenerator.com)
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com