本文介绍 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}
|
更多内容请参考手册 lshort-zh-cn
l/c/r
格式的列宽是由文字内容的自然宽度,直接生成给定总宽度的表格并不容易。
tabularx 宏包提供了方便的解决方案。它引入了一个 X
列格式,类似 p
列格式,不过会根据表格宽度自动计算列宽,多个 X
列格式平均分配列宽。X
列格式也可以用 array 里的辅助格式修饰对齐方式:
1 2 3 4 5 6 7
| \begin{tabularx}{14em} {|*{4}{>{\centering\arraybackslash}X|}} \hline A & B & C & D \\ \hline a & b & c & d \\ \hline \end{tabularx}
|
定义 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}
|
使用 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}
|
表格示例 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{makecell} \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}
|
参考资料
- lshort-zh-cn:一份 (不太) 简短的 LATEX 2e 介绍