0%

LaTeX 表格排版

本文介绍 LaTeX 排版表格不如 Word 等工具简便,对于不太复杂的表格来讲,完全能够胜任。值得注意的是 Table 环境一个浮动体环境,浮动体排版与 Figure 环境类似。

表格的基本用法

排版表格最基本的 tabular 环境用法为

1
2
3
4
5
\begin{tabular}{⟨column-spec⟩}
⟨item1⟩ & ⟨item2⟩ & … \\
\hline
⟨item1⟩ & ⟨item2⟩ & … \\
\end{tabular}

其中 ⟨column-spec⟩ 是列格式标记,在接下来的内容将仔细介绍;& 用来分隔单元格;\\ 用来换行;\hline 用来在行与行之间绘制横线。

注: LaTeX 表格列格式

  • l/c/r 单元格内容左对齐/居中/右对齐,不折行
  • p{⟨width⟩} 单元格宽度固定为 ⟨width⟩,可自动折行绘制竖线
  • | 绘制竖线
  • @{⟨string⟩} 自定义内容 ⟨string⟩
1
2
3
4
5
6
7
\begin{tabular}{lcr|p{6em}}
\hline
left & center & right
& par box with fixed width\\
L & C & R & P \\
\hline
\end{tabular}

LaTeX-Table01.png

更多内容请参考手册 lshort-zh-cn

l/c/r 格式的列宽是由文字内容的自然宽度,直接生成给定总宽度的表格并不容易。

tabularx 宏包提供了方便的解决方案。它引入了一个 X 列格式,类似 p 列格式,不过会根据表格宽度自动计算列宽,多个 X 列格式平均分配列宽。X 列格式也可以用 array 里的辅助格式修饰对齐方式:

1
2
3
4
5
6
7
% 需要 tabularx 宏包
\begin{tabularx}{14em}%
{|*{4}{>{\centering\arraybackslash}X|}}
\hline
A & B & C & D \\ \hline
a & b & c & d \\ \hline
\end{tabularx}

LaTeX-Table02.png

定义 PLCR 格式

定义新的可变长度左中右 (LCR) 格式,L/C/R 三个格式会根据表格宽度的设定自行控制宽度,且其宽度相等,方便设置和页面相同宽度的表格。 还定义了 (P{}) 格式可以设定某一列宽度 (如 (P{1cm} 控制某一列的宽度为 1cm)),P{} 格式在 p{} 格式的基础上增加了居中功能。

PLCR 格式的可以在 tabularx 环境中使用,并且 P/L/C/R 可以与 l/c/r 格式混合使用。P 格式也可以在 tabular 环境中使用,而 L/C/R 不可以,即使这样也能满足大多数表格需求。

1
2
3
4
5
% 定义新表格命令
\newcolumntype{P}[1]{>{\centering \arraybackslash}p{#1}}
\newcolumntype{L}{X}
\newcolumntype{C}{>{\centering \arraybackslash}X}
\newcolumntype{R}{>{\raggedright \arraybackslash}X}

使用 tabular 环境

表格示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
\documentclass{article}
\usepackage{ctex}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{makecell}
\usepackage[left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}

\begin{document}

\begin{table}[!htp]
\centering
\newcolumntype{P}[1]{>{\centering \arraybackslash}p{#1}}
\renewcommand\arraystretch{1.1} %定义表格高度
\caption{某校学生身高体重样本}
\label{tab:heightweight}
\begin{tabular}{|P{1cm}|P{2cm}|P{2cm}|P{2cm}|}
\Xhline{2\arrayrulewidth}
序号 & 年龄 & 身高 & 体重 \\
\Xhline{2\arrayrulewidth}
1 & 14 & 156 & 42 \\
\hline
2 & 16 & 158 & 45 \\
\hline
3 & 14 & 162 & 48 \\
\hline
4 & 15 & 163 & 50 \\
\hline
平均 & 15 & 159.75 & 46.25\\
\Xhline{2\arrayrulewidth}
\end{tabular}
\end{table}

\end{document}

LaTeX-Table02P.png

使用 tabularx 环境

表格示例 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
\documentclass{article}
\usepackage{ctex}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage[left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}
% 定义新表格命令
\newcolumntype{P}[1]{>{\centering \arraybackslash}p{#1}}
\newcolumntype{L}{X}
\newcolumntype{C}{>{\centering \arraybackslash}X}
\newcolumntype{R}{>{\raggedright \arraybackslash}X}

\begin{document}

\begin{table}[!htp]
\centering
\caption{某校学生身高体重样本}
\label{tab:heightweight}
\begin{tabularx}{0.72\textwidth}{cCCC}
\toprule
序号 & 年龄 & 身高 & 体重 \\
\midrule
1 & 14 & 156 & 42 \\
2 & 16 & 158 & 45 \\
3 & 14 & 162 & 48 \\
4 & 15 & 163 & 50 \\
\cmidrule{2-4}
平均 & 15 & 159.75 & 46.25\\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

LaTeX-Table03.png

表格示例 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
\documentclass{article}
%\usepackage{ctex}
\usepackage{makecell} % for \Xhline
\usepackage{tabularx}
\usepackage[left=1.25in,right=1.25in,top=1in,bottom=1in]{geometry}
\usepackage{caption}
\captionsetup[table]{position=top,skip={2pt}}
% 定义新表格命令
\newcolumntype{P}[1]{>{\centering \arraybackslash}p{#1}}
\newcolumntype{L}{X}
\newcolumntype{C}{>{\centering \arraybackslash}X}
\newcolumntype{R}{>{\raggedright \arraybackslash}X}

\begin{document}

\begin{table}[htp!]
\centering
\renewcommand\arraystretch{1.2} %定义表格高度
\caption{Caption of Table}
\label{table2}
\begin{tabularx}{0.9\linewidth}{|P{1cm}|C|C|C|C|C|C|}
\Xhline{2\arrayrulewidth}
N & A & B & C & D & E & F \\
\Xhline{2\arrayrulewidth}
2 & 9.20E-05 & 9.90E-05 & 1.00E-06 & 8.00E-06 & 1.50E-05 & 6.70E-05 \\
4 & 9.80E-05 & 8.00E-05 & 7.00E-06 & 1.40E-05 & 1.60E-05 & 7.30E-05 \\
6 & 4.00E-06 & 8.10E-05 & 8.80E-05 & 2.00E-05 & 2.20E-05 & 5.40E-05 \\
8 & 8.50E-05 & 8.70E-05 & 1.90E-05 & 2.10E-05 & 3.00E-06 & 6.00E-05 \\
10 & 8.60E-05 & 9.30E-05 & 2.50E-05 & 2.00E-06 & 9.00E-06 & 6.10E-05 \\
12 & 1.70E-05 & 2.40E-05 & 7.60E-05 & 8.30E-05 & 9.00E-05 & 4.20E-05 \\
14 & 2.30E-05 & 5.00E-06 & 8.20E-05 & 8.90E-05 & 9.10E-05 & 4.80E-05 \\
16 & 7.90E-05 & 6.00E-06 & 1.30E-05 & 9.50E-05 & 9.70E-05 & 2.90E-05 \\
18 & 1.00E-05 & 1.20E-05 & 9.40E-05 & 9.60E-05 & 7.80E-05 & 3.50E-05 \\
20 & 1.10E-05 & 1.80E-05 & 0.0001 & 7.70E-05 & 8.40E-05 & 3.60E-05 \\
\Xhline{2\arrayrulewidth}
\end{tabularx}
\end{table}

\end{document}

LaTeX-Table04.png

参考资料

  • lshort-zh-cn:一份 (不太) 简短的 LATEX 2e 介绍