一份(不太)简短的 LATEX2" 介绍
或 110 分钟了解 LATEX 2"
英文作者: Tobias Oetiker
Hubert Partl, Irene Hyna and Elisabeth Schlegl
英文版本: Version 6.2, Februrary 28, 2018
中文翻译: CTEX 开发小组
中文版本:版本 6.01,二零一九年四月
前言
LATEX [1] 是一个文档准备系统 (Document Preparing System),它非常适用于生成高印刷质
量的科技类和数学类文档。它也能够生成所有其他种类的文档,小到简单的信件,大到完整的书
籍。LATEX 使用 TEX [6] 作为它的排版引擎。
这份短小的手册描述了 LATEX 2" 的使用,对 LATEX 的大多数应用来说应该是足够了。参考
文献 [1, 2] 对 LATEX 系统提供了完整的描述。
本手册在英文版 lshort 的基础上进行了适当的重新编排,共有八章和两篇附录:
第一章 讲述 LATEX 的来源,源代码的基本结构,以及如何编译源代码生成文档。
第二章 讲述在 LATEX 中如何书写文字,包括中文。
第三章 讲述文档排版的基本元素——标题、目录、列表、图片、表格等等。结合前一章的内容,
你应当能够制作内容较为丰富的文档了。
第四章 LATEX 排版公式的能力是众人皆知的。本章的内容涉及了一些排版公式经常用到的命令、
环境和符号。章节末尾列出了 LATEX 常见的数学符号。
第五章 介绍了如何修改文档的一些基本样式,包括字体、段落、页面尺寸、页眉页脚等。
第六章 介绍了 LATEX 的一些扩展功能:排版参考文献、排版索引、排版带有颜色和超链接的电
子文档。
第七章 介绍了如何在 LATEX 里使用 TikZ 绘图。作为入门手册,这一部分点到为止。
第八章 当你相当熟悉前面几章的内容,需要自己编写命令和宏包扩展 LATEX 的功能时,本章介
绍了一些基本的命令满足你的需求。
附录 A 介绍了如何安装 TEX 发行版和更新宏包。
附录 B 当新手遇到错误和需要寻求更多帮助时,本章提供了一些基本的参考。
这些章节是循序渐进的,建议刚刚熟悉 LATEX 的读者按顺序阅读。一定要认真阅读例子的
源代码,它们贯穿全篇手册,包含了很多的信息。
如果你已经对 LATEX 较为熟练,本手册的资源已不足够解决你的问题时,请访问 “Com-
prehensive TEX Archive Network” (CTAN) 站点,主页是 www.ctan.org。所有的宏包也可以从
mirrors.ctan.org 和遍布全球的各个镜像站点中获得。
在本书中你会找到其他引用 CTAN 的地方,形式为 CTAN:// 和之后的树状结构。引用本身是
一个超链接,点击后将打开内容在 CTAN 上相应位置的页面。
要在自己的电脑上安装 TEX 发行版,请参考附录 A 中的内容。各个操作系统下的 TEX 发
行版位于 CTAN://systems。
v
vi
前言
如果你有意在这份文档中增加、删除或者改变一些内容,请通知作者。作者对 LATEX 初学者
的反馈特别感兴趣,尤其是关于这份介绍哪些内容很容易理解,哪些内容可能需要更好地解释,
而哪些内容由于太过难以理解、非常不常用而不适宜放在本手册。
CTEX 开发小组
https://github.com/CTeX-org
lshort 的的最新中文版本位于 CTAN://info/lshort/chinese。如果用户对其他语言的版本感兴趣,请浏览
CTAN://info/lshort。
目录
中文版致谢
英文版致谢
前言
目录
i
iii
v
vii
第一章 LATEX 的基本概念
1
1
1.1 概述 . . . . . . . . . . . . . . . .
1
1.1.1 TEX . . . . . . . . . . . .
1
1.1.2 LATEX . . . . . . . . . . .
1
1.1.3 LATEX 的优缺点 . . . . . .
2
1.2 第一次使用 LATEX . . . . . . . . .
3
1.3 LATEX 命令和代码结构 . . . . . .
3
1.3.1 LATEX 命令和环境 . . . .
4
1.3.2 LATEX 源代码结构 . . . .
4
1.4 LATEX 宏包和文档类 . . . . . . .
4
1.4.1 文档类 . . . . . . . . . . .
5
1.4.2 宏包 . . . . . . . . . . . .
6
1.5 LATEX 用到的文件一览 . . . . . .
1.6 文件的组织方式 . . . . . . . . . .
6
1.7 LATEX 和 TEX 相关的术语和概念 7
第二章 用 LATEX 排版文字
9
9
2.1 语言文字和编码 . . . . . . . . . .
9
2.1.1 ASCII 编码 . . . . . . . .
9
2.1.2 扩展编码 . . . . . . . . .
2.1.3 UTF-8 编码 . . . . . . . . 10
2.2 排版中文 . . . . . . . . . . . . . 10
xeCJK 宏包 . . . . . . . . 10
ctex 宏包和文档类 . . . . 10
2.3 LATEX 中的字符 . . . . . . . . . . 11
2.3.1 空格和分段 . . . . . . . . 11
2.3.2 注释 . . . . . . . . . . . . 11
2.3.3 特殊字符 . . . . . . . . . 11
2.3.4 连字 . . . . . . . . . . . . 12
2.2.1
2.2.2
2.3.5 标点符号 . . . . . . . . . 12
2.3.6 特殊西文符号与重音 . . . 12
2.3.7 其它符号 . . . . . . . . . 13
2.3.8 LATEX 标志 . . . . . . . . 13
2.4 文字强调 . . . . . . . . . . . . . 13
2.5 断行和断页 . . . . . . . . . . . . 14
2.5.1 单词间距和断行 . . . . . . 14
2.5.2 手动断行和断页 . . . . . . 14
2.5.3 断词 . . . . . . . . . . . . 15
第三章 文档元素
17
3.1 章节和目录 . . . . . . . . . . . . 17
3.1.1 章节标题 . . . . . . . . . 17
3.1.2 目录 . . . . . . . . . . . . 18
3.1.3 文档结构的划分 . . . . . . 18
3.2 标题页 . . . . . . . . . . . . . . . 18
3.3 交叉引用 . . . . . . . . . . . . . 20
3.4 脚注和边注 . . . . . . . . . . . . 20
3.5 特殊环境 . . . . . . . . . . . . . 21
3.5.1 列表 . . . . . . . . . . . . 21
3.5.2 对齐环境 . . . . . . . . . 23
3.5.3 引用环境 . . . . . . . . . 23
3.5.4 摘要环境 . . . . . . . . . 24
3.5.5 代码环境 . . . . . . . . . 24
3.6 表格 . . . . . . . . . . . . . . . . 25
3.6.1 列格式 . . . . . . . . . . . 25
3.6.2 列宽 . . . . . . . . . . . . 27
3.6.3 横线 . . . . . . . . . . . . 27
3.6.4 合并单元格 . . . . . . . . 28
3.6.5 嵌套表格 . . . . . . . . . 29
3.6.6 行距控制 . . . . . . . . . 29
3.7 图片 . . . . . . . . . . . . . . . . 30
3.8 盒子 . . . . . . . . . . . . . . . . 31
3.8.1 水平盒子 . . . . . . . . . 31
3.8.2 带框的水平盒子 . . . . . . 31
3.8.3 垂直盒子 . . . . . . . . . 32
vii
viii
3.8.4 标尺盒子 . . . . . . . . . 32
3.9 浮动体 . . . . . . . . . . . . . . . 33
3.9.1 浮动体的标题 . . . . . . . 33
3.9.2 并排和子图表 . . . . . . . 34
第四章 排版数学公式
37
4.1 AMS 宏集 . . . . . . . . . . . . . 37
4.2 公式排版基础 . . . . . . . . . . . 37
4.2.1 行内和行间公式 . . . . . . 37
4.2.2 数学模式 . . . . . . . . . 38
4.3 数学符号 . . . . . . . . . . . . . 39
4.3.1 一般符号 . . . . . . . . . 39
4.3.2 指数、上下标和导数 . . . 39
4.3.3 分式和根式 . . . . . . . . 40
4.3.4 关系符 . . . . . . . . . . . 40
4.3.5 算符 . . . . . . . . . . . . 40
4.3.6 巨算符 . . . . . . . . . . . 41
4.3.7 数学重音和上下括号 . . . 42
4.3.8 箭头 . . . . . . . . . . . . 43
4.3.9 括号和定界符 . . . . . . . 43
4.4 多行公式 . . . . . . . . . . . . . 44
4.4.1 长公式折行 . . . . . . . . 44
4.4.2 多行公式 . . . . . . . . . 44
4.4.3 公用编号的多行公式 . . . 45
4.5 数组和矩阵 . . . . . . . . . . . . 45
4.6 公式中的间距 . . . . . . . . . . . 46
4.7 数学符号的字体控制 . . . . . . . 47
4.7.1 数学字母字体 . . . . . . . 47
4.7.2 数学符号的尺寸 . . . . . . 47
4.7.3 加粗的数学符号 . . . . . . 48
4.8 定理环境 . . . . . . . . . . . . . 49
4.8.1 LATEX 原始的定理环境 . . 49
amsthm 宏包 . . . . . . . 49
4.8.2
4.8.3 证明环境和证毕符号 . . . 50
4.9 符号表 . . . . . . . . . . . . . . . 52
4.9.1 LATEX 普通符号 . . . . . . 52
4.9.2 AMS 符号 . . . . . . . . . 56
第五章 排版样式设定
59
5.1 字体和字号 . . . . . . . . . . . . 59
5.1.1 字体样式 . . . . . . . . . 59
5.1.2 字号 . . . . . . . . . . . . 59
5.1.3 选用字体宏包 . . . . . . . 61
5.1.4 字体编码 . . . . . . . . . 61
目录
5.1.5 使用 fontspec 宏包更改
字体 (xelatex) . . . . . . 61
5.1.6 使用 xeCJK 宏包更改中
文字体 . . . . . . . . . . . 63
5.2 段落格式和间距 . . . . . . . . . . 63
5.2.1 长度和长度变量 . . . . . . 63
5.2.2 行距 . . . . . . . . . . . . 64
5.2.3 段落格式 . . . . . . . . . 64
5.2.4 水平间距 . . . . . . . . . 65
5.2.5 垂直间距 . . . . . . . . . 65
5.3 页面和分栏 . . . . . . . . . . . . 66
5.3.1 利用 geometry 宏包设置
页面参数 . . . . . . . . . 68
5.3.2 页面内容的垂直对齐 . . . 68
5.3.3 分栏 . . . . . . . . . . . . 68
5.4 页眉页脚 . . . . . . . . . . . . . 69
5.4.1 基本的页眉页脚样式 . . . 69
5.4.2 手动更改页眉页脚的内容 70
fancyhdr 宏包 . . . . . . . 70
5.4.3
第六章 特色工具和功能
73
6.1 参考文献和 BIBTEX 工具 . . . . . 73
6.1.1 基本的参考文献和引用 . . 73
6.1.2 BIBTEX 数据库 . . . . . . 74
6.1.3 BIBTEX 样式 . . . . . . . 75
6.1.4 使用 BIBTEX 排版参考文献 75
natbib 宏包 . . . . . . . . 76
6.1.5
biblatex 宏包 . . . . . . . 77
6.1.6
6.2 索引和 makeindex 工具 . . . . . 79
6.2.1 使用 makeindex 工具的
方法 . . . . . . . . . . . . 79
6.2.2 索引项的写法 . . . . . . . 80
6.3 使用颜色 . . . . . . . . . . . . . 80
6.3.1 颜色的表达方式 . . . . . . 81
6.3.2 带颜色的文本和盒子 . . . 82
6.4 使用超链接 . . . . . . . . . . . . 82
hyperref 宏包 . . . . . . . 82
6.4.1
6.4.2 超链接 . . . . . . . . . . . 84
6.4.3 PDF 书签 . . . . . . . . . 84
6.4.4 PDF 文档属性 . . . . . . 85
第七章 绘图功能
87
7.1 绘图语言简介 . . . . . . . . . . . 87
7.2 TikZ 绘图语言 . . . . . . . . . . 87
7.2.1 TikZ 坐标和路径 . . . . . 88
目录
7.2.2 TikZ 绘图命令和参数 . . 90
7.2.3 TikZ 文字结点 . . . . . . 92
7.2.4 在 TikZ 中使用循环 . . . 94
第八章 自定义 LATEX 命令和功能
95
8.1 自定义命令和环境 . . . . . . . . 95
8.1.1 定义新命令 . . . . . . . . 95
8.1.2 定义环境 . . . . . . . . . 96
8.2 编写自己的宏包和文档类 . . . . 96
8.2.1 编写简单的宏包 . . . . . . 96
8.2.2 在宏包中调用其它宏包 . . 97
8.2.3 编写自己的文档类 . . . . 97
8.3 计数器 . . . . . . . . . . . . . . . 97
8.3.1 定义和修改计数器 . . . . 98
8.3.2 计数器的输出格式 . . . . 98
8.3.3 LATEX 中的计数器 . . . . 98
8.4 LATEX 可定制的一些命令和参数 . 99
ix
附录 A 安装 TEX 发行版
101
A.1 TEX 发行版简介 . . . . . . . . . 101
A.1.1 安装发行版 . . . . . . . . 101
A.2 安装和更新宏包 . . . . . . . . . . 102
A.2.1 手动安装宏包 . . . . . . . 103
附录 B 排除错误、寻求帮助
105
B.1 LATEX 错误 . . . . . . . . . . . . 105
B.2 查找帮助文档 . . . . . . . . . . . 107
B.3 常用宏包简介 . . . . . . . . . . . 108
B.3.1 文字、公式和符号 . . . . 108
B.3.2 排版元素 . . . . . . . . . 108
B.3.3 图表和浮动体 . . . . . . . 109
B.3.4 修改版式 . . . . . . . . . 109
参考文献
GNU Free Documentation License
索引
111
113
119
2
19
19
71
76
78
94
97
源代码示例列表
1.1 LATEX 的一个最简单的源代码示例。 . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 book 文档类的文档结构示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 LATEX 默认的标题页示例和效果。 . . . . . . . . . . . . . . . . . . . . . . . . . . .
fancyhdr 宏包的使用方法示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1
6.1 利用 books.bib 生成参考文献的源代码 demo.tex。 . . . . . . . . . . . . . . . .
6.2 应用 biblatex 的示例 egbibdata.bib 和 demo.tex。 . . . . . . . . . . . . . . . . . .
7.1 TikZ 绘图示例源代码和效果。 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1 宏包的一个最简示例。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
第一章 LATEX 的基本概念
欢迎使用 LATEX!本章开头用简短的篇幅介绍了 LATEX 的来源,然后介绍了 LATEX 源
代码的写法,如何编译 LATEX 源代码生成文档,以及理解接下来的章节所必须的一些知
识。
1.1 概述
1.1.1 TEX
TEX 是高德纳 (Donald E. Knuth) 开发的、以排版文字和数学公式为目的的软件 [6]。1977
年,正在编写著作《计算机程序设计艺术》的高德纳,意图扭转排版质量每况愈下的状况,以免影
响他的出书,于是开始开发 TEX,以发掘当时开始用于出版工业的数字印刷设备的潜力。TEX 排
版引擎发布于 1982 年,在 1989 年又加以改进以更好地支持 8-bit 字符和多语言排版。TEX 以其
卓越的稳定性、跨平台、几乎没有 bug 而著称。TEX 的版本号不断趋近于 ,当前为 3.141592653。
TEX 读作 “Tech” ,其中 “ch” 的发音类似于 “h” ,与汉字“泰赫”的发音相近。TEX 的拼写
来自希腊词语 τεχνική (technique,技术) 的开头几个字母。在 ASCII 字符环境,TEX 写作 TeX。
1.1.2 LATEX
LATEX 是一种格式(format)。为免误会,初次接触这一概念的读者可以粗略地将 LATEX 理
解成是对 TEX 的一层封装。LATEX 使用 TEX 程序作为自己的排版引擎。LATEX 最初的设计目标
是分离内容与格式,以便作者能够无需关注版式设计,只需专注与内容创作就能得到高质量排版
的作品。最初的开发者是 Leslie Lamport 博士 [1],当前 LATEX 由 LATEX3 工作组1维护。
LATEX 读作 “Lah-tech” 或者 “Lay-tech” ,与汉字“拉泰赫”或“雷泰赫”的发音相近。LATEX
在 ASCII 字符环境写作 LaTeX。当前的 LATEX 版本为 LATEX 2",意思是超出了第二版,但还远
未没达到第三版,在 ASCII 字符环境写作 LaTeX2e。
1.1.3 LATEX 的优缺点
经常有人喜欢对比 LATEX 和以 Microsoft Office Word 为代表的“所见即所得”(What You
See Is What You Get)字处理工具。这种对比是没有意义的,因为 TEX 是一个排版引擎,LATEX
是其封装,而 Word 是字处理工具。二者的设计目标不一致,也各自有自己的适用范围。
不过,这里仍旧总结 LATEX 的一些优点:
• 具有专业的排版输出能力,产生的文档看上去就像“印刷品”一样。
• 具有方便而强大的数学公式排版能力,无出其右者。
1https://www.latex-project.org
1
2
第一章 LATEX 的基本概念
• 绝大多数时候,用户只需专注于一些组织文档结构的基础命令,无需(或很少)操心文档
的版面设计。
• 很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等。
• 强大的可扩展性。世界各地的人开发了数以千计的 LATEX 宏包用于补充和扩展 LATEX 的功
能。本手册附录中的 B.3 小节可见一瞥。更多的宏包参考 The LATEX companion[2]。
• 能够促使用户写出结构良好的文档——而这也是 LATEX 存在的初衷。
• LATEX 和 TEX 及相关软件是跨平台、免费、开源的。无论用户使用的是 Windows,macOS
(OS X),GNU/Linux 还是 FreeBSD 等操作系统,都能轻松获得和使用这一强大的排版工
具,并且获得稳定的输出。
LATEX 的缺点也是显而易见的:
• 入门门槛高。本手册的副标题叫做“110 分钟了解 LATEX 2"”,实际上 110 是本手册正文部
分(包括附录)的页数。如果你以平均一页一分钟的速度看完了本手册,你只是粗窥门径
而已,离学会它还很远。
• 不容易排查错误。LATEX 作为一个依靠编写代码工作的排版工具,其使用的宏语言比 C++
或 Python 等程序设计语言在错误排查方面困难得多。它虽然能够提示错误,但不提供调
试的机制,有时错误提示还很难理解。
• 不容易定制样式。LATEX 提供了一个基本上良好的样式,为了让用户不去关注样式而专注
于文档结构。但如果想要改进 LATEX 生成的文档样式则是十分困难。
• 相比“所见即所得”的模式有一些不便,为了查看生成文档的效果,用户总要不停地编译。
1.2 第一次使用 LATEX
源代码 1.1 是一份最短的 LATEX 源代码示例。
\documentclass{article}
\begin{document}
``Hello world!'' from \LaTeX.
\end{document}
源代码 1.1: LATEX 的一个最简单的源代码示例。
这里首先介绍如何编译使用这份源代码,在后续小节中再介绍源代码的细节。
你可以将这份源代码保存为 helloworld.tex,而后编译。具体来说:
• 如果使用 TEXworks! 或 TEXstudio 等编辑器,你可以使用编辑器提供的“编译”按钮或者
“排版”按钮。建议将编译命令设置为“XeLaTeX”。
• 如果使用命令行方式进行编译,则需打开 Windows 命令提示符或者 Linux / macOS(OS
X)的终端,在源代码所在的目录下输入命令:
xelatex helloworld
如果编译成功,可以在 helloworld.tex 所在的目录,看到生成的 helloworld.pdf 以及一
些其它文件。