1.5 Latex表格

基本表格

  LaTex要使用表格,必须开启一个新的环境tabular。每一列的靠左靠右和居中使用l、r、c三个字母来控制的。横线使用\hline,其余的和latex数学公式里矩阵用法类似。以下是一个表格的例子:

\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
	\begin{tabular}{|l|r|}
		\hline
		商品 & 价格 \\
		\hline
		水杯 & 6.5 \\
		\hline
		牙刷 & 2.5 \\
		\hline
	\end{tabular}
\end{document}

  效果如下图:
在这里插入图片描述

多列合并

  在markdown里不能进行表格单元格合并,只能使用原始html语法。Latex是支持的,语法也不难。以下是多列合并的例子:

\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
	\begin{tabular}{|l|r|r|}
		\hline & \multicolumn{2}{|l|}{价格}\\
		\cline{2-3}
		商品 & 非会员价格 & 会员价格 \\
		\hline
		水杯 & 6.5 & 5.5 \\
		\hline
		牙刷 & 2.5 & 2.0 \\
		\hline
	\end{tabular}
\end{document}

  效果如下:
在这里插入图片描述
  这里的\cline{2-3}是部分横线的意思。但是有没有发现上面表格里的商品实际上上面还有个空单元格,所以它被挤到下面来了。如果把\cline{2-3}换成\hline就可以发现问题。如下列代码:

\documentclass[UTF8]{article}
\usepackage{CTEX}
\begin{document}
	\begin{tabular}{|l|r|r|}
		\hline & \multicolumn{2}{|l|}{价格}\\
		\hline
		商品 & 非会员价格 & 会员价格 \\
		\hline
		水杯 & 6.5 & 5.5 \\
		\hline
		牙刷 & 2.5 & 2.0 \\
		\hline
	\end{tabular}
\end{document}

  效果:
在这里插入图片描述
  所以需要合并行。

多行合并

  遗憾的是自带的包没有多行合并功能,如果要多行合并,必须使用额外的包,multirow。用法如下:

\documentclass[UTF8]{article}
\usepackage{ctex}
\usepackage{multirow}
\begin{document}
	\begin{tabular}{|l|r|r|}
		\hline 
		\multirow{2}*{商品} & \multicolumn{2}{|c|}{价格}\\
		\cline{2-3}
		& 非会员价格 & 会员价格 \\
		\hline
		水杯 & 6.5 & 5.5 \\
		\hline
		牙刷 & 2.5 & 2.0 \\
		\hline
	\end{tabular}
\end{document}

  效果图:
在这里插入图片描述
  这里需要注意的是,合并多行的时候,需要在每一行前面补一个空列,这个multirow多行包的原理其实是写了一个新单元格覆盖在表格上。下面的代码演示了为什么是覆盖:

\documentclass[UTF8]{article}
\usepackage{ctex}
\usepackage{multirow}
\begin{document}
	\begin{tabular}{|l|r|r|}
		\hline 
		\multirow{2}*{商品} & \multicolumn{2}{|c|}{价格}\\
		\hline
		价格 & 非会员价格 & 会员价格 \\
		\hline
		水杯 & 6.5 & 5.5 \\
		\hline
		牙刷 & 2.5 & 2.0 \\
		\hline
	\end{tabular}
\end{document}

  效果:
在这里插入图片描述

格内换行

  表格内换行,网上很多博客写这个,但是都太复杂了。正常情况下,单元格内是不能换行的,如下面的例子:

\documentclass[a4paper,UTF8]{article}
\usepackage{ctex}
\usepackage{booktabs}
\begin{document}
	\begin{tabular}{|c|c|}
		\hline
		第一行 & 一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十\\
		\hline
		第二行 & 一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十\\ 
		\hline
	\end{tabular}
\end{document}

  默认是不换行的,所以成这样了:
在这里插入图片描述
  我推荐的方案比网上其他方案都简单,是加入两个包:booktabs和array。但仅仅是这样还没用,还需要变化一下,把单元格格式表达式改一改,定义宽度,如以下代码:

\documentclass[a4paper,UTF8]{article}
\usepackage{ctex}
\usepackage{booktabs}
\usepackage{array}
\usepackage{multirow}
\begin{document}
	\begin{tabular}{|c|p{8cm}|}
		\hline
		第一行 & 一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十\\
		\hline
		第二行 & 一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十\\ 
		\hline
	\end{tabular}
\end{document}

  编译效果如下:
在这里插入图片描述

表格颜色

  单元格丰富多彩的颜色有时候是刚需。这时候需要用到xcolor包。下面是行颜色的例子:

\documentclass[UTF8]{article}
\usepackage{ctex}
\usepackage{multirow}
\usepackage[table]{xcolor}
\begin{document}
	\begin{tabular}{|l|r|r|}
		\hline 
		\multirow{2}*{商品} & \multicolumn{2}{c|}{价格}\\
		\cline{2-3}
		
		& 非会员价格 & 会员价格 \\
		\hline
		\rowcolor{red}
		水杯 & 6.5 & 5.5 \\
		\hline
		\rowcolor{green}
		牙刷 & 2.5 & 2.0 \\
		\hline
	\end{tabular}
\end{document}

  效果图:
在这里插入图片描述

跨页表格

  普通表格是不难跨页的,我先举个例子,代码比较长:

\documentclass[UTF8]{article}
\usepackage{ctex}
\begin{document}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
编号 & 姓名 & 武力 & 智力 & 体力 & 技力 & 名将\\
\hline
01 & 丁奉 & 82 & 68 & 129 & 44 & \\
\hline
02 & 丁原 & 74 & 54 & 126 & 43 & \\
\hline
03 & 丁斐 & 42 & 75 & 109.5 & 45 & \\
\hline
04 & 丁楓 & 45 & 75 & 112.5 & 45 & \\
\hline
05 & 丁瑤 & 70 & 52 & 120 & 45 & \\
\hline
06 & 丁儀 & 72 & 39 & 121.5 & 29 & \\
\hline
07 & 刁玄 & 35 & 60 & 105 & 40 & \\
\hline
08 & 于禁 & 79 & 71 & 129 & 46 & \\
\hline
09 & 于詮 & 31 & 75 & 106.5 & 47 & \\
\hline
10 & 士孫瑞 & 51 & 76 & 114 & 47 & \\
\hline
11 & 士異 & 50 & 71 & 114 & 46 & \\
\hline
12 & 士壹 & 69 & 54 & 121.5 & 37 & \\
\hline
13 & 士碧 & 42 & 75 & 117 & 48 & \\
\hline
14 & 士徽 & 70 & 47 & 123 & 43 & \\
\hline
15 & 士燮 & 72 & 43 & 126 & 40 & \\
\hline
16 & 大喬 & 70 & 80 & 118.5 & 47 & 1\\
\hline
17 & 小喬 & 82 & 82 & 126 & 48 & 1\\
\hline
18 & 山濤 & 35 & 88 & 112.5 & 50 & \\
\hline
19 & 公孫度 & 76 & 44 & 127.5 & 40 & \\
\hline
20 & 公孫恭 & 40 & 78 & 115.5 & 47 & \\
\hline
21 & 公孫康 & 68 & 48 & 124.5 & 42 & \\
\hline
22 & 公孫淵 & 82 & 61 & 130.5 & 44 & \\
\hline
23 & 公孫婷 & 58 & 77 & 121.5 & 45 & \\
\hline
24 & 公孫越 & 56 & 46 & 120 & 41 & \\
\hline
25 & 公孫範 & 79 & 30 & 129 & 38 & \\
\hline
26 & 公孫續 & 51 & 55 & 114 & 41 & \\
\hline
27 & 公孫瓚 & 86 & 67 & 132 & 45 & \\
\hline
28 & 卞喜 & 73 & 36 & 126 & 39 & \\
\hline
29 & 天香 & 57 & 90 & 121.5 & 37 & \\
\hline
30 & 太史享 & 51 & 55 & 114 & 41 & \\
\hline
31 & 太史昭容 & 90 & 71 & 127.5 & 46 & \\
\hline
32 & 太史慈 & 97 & 69 & 133.5 & 45 & 1\\
\hline
33 & 孔月 & 45 & 80 & 118.5 & 47 & \\
\hline
34 & 孔秀 & 67 & 45 & 118.5 & 40 & \\
\hline
35 & 孔岫 & 42 & 81 & 117 & 47 & \\
\hline
36 & 孔羨 & 35 & 77 & 108 & 47 & \\
\hline
37 & 孔融 & 37 & 89 & 112.5 & 47 & \\
\hline
38 & 文媛 & 60 & 69 & 126 & 46 & \\
\hline
39 & 文欽 & 83 & 48 & 130.5 & 41 & \\
\hline
40 & 文聘 & 82 & 46 & 129 & 40 & \\
\hline
41 & 文蕊 & 88 & 40 & 124.5 & 40 & \\
\hline
42 & 文鴦 & 90 & 42 & 130.5 & 40 & \\
\hline
43 & 文醜 & 95 & 27 & 132 & 38 & \\
\hline
44 & 方悅 & 75 & 31 & 120 & 43 & \\
\hline
\end{tabular}
\end{document}

  编译后,整个表格到了第二页,而且后面几行不显示了:
在这里插入图片描述
  怎么办呢?这个时候就需要使用longtable了,然后在表头下加上\endhead命令,就OK了。将上述代码改成下面代码:

\documentclass[UTF8]{article}
\usepackage{ctex}
\usepackage{longtable}
\begin{document}
\begin{longtable}{|c|c|c|c|c|c|c|}
\hline
编号 & 姓名 & 武力 & 智力 & 体力 & 技力 & 名将\\
\hline
\endhead
01 & 丁奉 & 82 & 68 & 129 & 44 & \\
\hline
02 & 丁原 & 74 & 54 & 126 & 43 & \\
\hline
03 & 丁斐 & 42 & 75 & 109.5 & 45 & \\
\hline
04 & 丁楓 & 45 & 75 & 112.5 & 45 & \\
\hline
05 & 丁瑤 & 70 & 52 & 120 & 45 & \\
\hline
06 & 丁儀 & 72 & 39 & 121.5 & 29 & \\
\hline
07 & 刁玄 & 35 & 60 & 105 & 40 & \\
\hline
08 & 于禁 & 79 & 71 & 129 & 46 & \\
\hline
09 & 于詮 & 31 & 75 & 106.5 & 47 & \\
\hline
10 & 士孫瑞 & 51 & 76 & 114 & 47 & \\
\hline
11 & 士異 & 50 & 71 & 114 & 46 & \\
\hline
12 & 士壹 & 69 & 54 & 121.5 & 37 & \\
\hline
13 & 士碧 & 42 & 75 & 117 & 48 & \\
\hline
14 & 士徽 & 70 & 47 & 123 & 43 & \\
\hline
15 & 士燮 & 72 & 43 & 126 & 40 & \\
\hline
16 & 大喬 & 70 & 80 & 118.5 & 47 & 1\\
\hline
17 & 小喬 & 82 & 82 & 126 & 48 & 1\\
\hline
18 & 山濤 & 35 & 88 & 112.5 & 50 & \\
\hline
19 & 公孫度 & 76 & 44 & 127.5 & 40 & \\
\hline
20 & 公孫恭 & 40 & 78 & 115.5 & 47 & \\
\hline
21 & 公孫康 & 68 & 48 & 124.5 & 42 & \\
\hline
22 & 公孫淵 & 82 & 61 & 130.5 & 44 & \\
\hline
23 & 公孫婷 & 58 & 77 & 121.5 & 45 & \\
\hline
24 & 公孫越 & 56 & 46 & 120 & 41 & \\
\hline
25 & 公孫範 & 79 & 30 & 129 & 38 & \\
\hline
26 & 公孫續 & 51 & 55 & 114 & 41 & \\
\hline
27 & 公孫瓚 & 86 & 67 & 132 & 45 & \\
\hline
28 & 卞喜 & 73 & 36 & 126 & 39 & \\
\hline
29 & 天香 & 57 & 90 & 121.5 & 37 & \\
\hline
30 & 太史享 & 51 & 55 & 114 & 41 & \\
\hline
31 & 太史昭容 & 90 & 71 & 127.5 & 46 & \\
\hline
32 & 太史慈 & 97 & 69 & 133.5 & 45 & 1\\
\hline
33 & 孔月 & 45 & 80 & 118.5 & 47 & \\
\hline
34 & 孔秀 & 67 & 45 & 118.5 & 40 & \\
\hline
35 & 孔岫 & 42 & 81 & 117 & 47 & \\
\hline
36 & 孔羨 & 35 & 77 & 108 & 47 & \\
\hline
37 & 孔融 & 37 & 89 & 112.5 & 47 & \\
\hline
38 & 文媛 & 60 & 69 & 126 & 46 & \\
\hline
39 & 文欽 & 83 & 48 & 130.5 & 41 & \\
\hline
40 & 文聘 & 82 & 46 & 129 & 40 & \\
\hline
41 & 文蕊 & 88 & 40 & 124.5 & 40 & \\
\hline
42 & 文鴦 & 90 & 42 & 130.5 & 40 & \\
\hline
43 & 文醜 & 95 & 27 & 132 & 38 & \\
\hline
44 & 方悅 & 75 & 31 & 120 & 43 & \\
\hline
\end{longtable}
\end{document}

  整个页面显示就很好看了,所有数据正常展示,自带衔接上一页:
在这里插入图片描述

宽度定义

  定义宽度,前面已经讲过了,但是定义宽度,同时定义靠左靠右呢?这个可没讲过,语法也是很复杂的。这种特殊的需求,需要用到array包。而且需要注意的是,靠左是right,靠右是left,比如>{\raggedright\arraybackslash}p{4.5cm}是靠左,单元格宽度4.5cm。以下是例子:

\documentclass[utf8,a4paper]{article}
\usepackage{ctex}
\usepackage{array}\begin{document}
\begin{tabular}{|>{\raggedleft\arraybackslash}p{1.5cm}|>{\raggedright\arraybackslash}p{4.5cm}|>{\raggedleft\arraybackslash}p{1.5cm}|>{\raggedright\arraybackslash}p{4.5cm}|}
	\hline
	姓名 & 程序员 & 工作经验 & 一百年\\
	\hline
	性别 && 生日 & 1900/1/1\\
	\hline
	毕业院校 & 京仁大学 & 学历 & 本科\\
	\hline
\end{tabular}
\end{document}

  编译效果如下:
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒过来摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值