前言:排版工具与书写工具的讨论
LaTeX 是一种“非所见即所得”的排版系统,用户需要输入特定的代码,保存在后缀为.tex 的文件中,通过编译得到所需的 pdf 文件.
例如以下代码:
1 | \documentclass{article} |
最后输出的结果是一个 pdf 文件,内容是”Hello, world!“。
如何理解“非所见即所得”呢?在这里举个“所见即所得”的例子:Word。Word 的界面就是一张 A4 纸,输入的时候是什么样子,最后呈现出来就是什么样子。这给了我们极高的自由度,也非常容易上手,但是有如下问题: - 对于对细节不敏感的用户,Word 的排版常常会在细节存在问题,比如两段话之间行间距不同、字体不同、标题样式不同等; - 对于撰写论文的用户,Word 的标题、章节、图表、参考文献等无法自动标号,也很难在正文中引用; - 对于有公式输入需求的用户,Word 自带的公式不稳定,而公式插件效果常常不好。
相比之下,使用 LaTeX 进行排版,就像是在铺好的轨道上驾驶火车一样。使用 LaTeX 没有办法像 Word 一样非常自由,但是可以保证规范性,这使得 LaTeX 非常适合用于论文的排版。在学习的过程中,也将会感受到这一点。
无论是 LaTeX 还是 Word,其归根结底都只是排版工具,用 Word 也可以排出 LaTeX 的效果,用 LaTeX 也可以排出 Word 的效果。另外,笔者最建议的书写工具是 Markdown,其书写的过程中可以不在意排版,也支持使用 LaTeX 语法输入公式,与 LaTeX 之间的转换非常方便。
准备工作:安装 LaTeX 与配置环境
安装 Tex Live
官方的地址是http://mirror.ctan.org/systems/texlive/Images/texlive2021.iso,但是可能速度较慢,以下是一些国内的镜像地址:
- 清华大学:https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/texlive2021.iso;
- 北京交通大学:https://mirror.bjtu.edu.cn/ctan/systems/texlive/Images/texlive2021.iso;
- 上海交通大学:https://mirrors.sjtug.sjtu.edu.cn/ctan/systems/texlive/Images/texlive2021.iso;
- 中国科技大学:https://mirrors.ustc.edu.cn/CTAN/systems/texlive/Images/texlive2021.iso;
- 重庆大学:https://mirrors.cqu.edu.cn/CTAN/systems/texlive/Images/texlive2021.iso;
- 腾讯云:https://mirrors.cloud.tencent.com/CTAN/systems/texlive/Images/texlive2021.iso。 其中的 iso 文件可以使用压缩软件解压,或者加载到光盘,接下来直接安装就行了。对于其他操作系统的用户(如 MacOS),可以参考TeX Live 下载及安装说明 | 始终 (liam.page)中的方法。
选择 TeX 编辑器
对于新手,最推荐的编辑器是 TeXworks,非常适合用来上手,也避免了配置环境带来的问题。如果想要提高效率的话,可以选用:
TeXstudio,安装地址为TeXstudio - A LaTeX editor (sourceforge.net); 宇宙第一的 Visual Studio Code,这是笔者最建议的 TeX 编辑器,不过需要手动配置 LaTeX,较为麻烦; 另外,也有在线的编辑器,如Overleaf, 在线 LaTeX 编辑器。
选择 pdf 阅读器和编辑器
LaTeX 编译的结果是 pdf 文件,建议选用专业的 pdf 阅读器或 pdf 编辑器。特别是在阅读 beamer 类型的文件时,不同的阅读器效果差别极大。在这里推荐 Acrobat:
- Adobe Acrobat Reader,免费,可用于查看、签署、协作处理和批注 PDF 文件,安装地址为Adobe Acrobat Reader (中国);
- Adobe Acrobat Pro,付费,可用于创建、保护、转换和编辑 PDF 文件,安装地址为 Adobe Acrobat | Adobe Document Cloud。
利用 LaTeX 编写文档
文档类型
TeX 有多种文档类型可选,笔者较常用的有如下几种类型:
- 对于英文,可以用
book
、article
和beamer
; - 对于中文,可以用
ctexbook
、ctexart
和ctexbeamer
,这些类型自带了对中文的支持。 不同的文件类型,编写的过程中也会有一定的差异,如果直接修改文件类型的话,甚至会报错。以下统一选用ctexart
。在编辑框第一行,输入如下内容来设置文件类型:
1 | \documentclass{ctexart} |
另外,一般也可以在\documentclass
处设置基本参数,笔者通常设置默认字体大小为
12pt,纸张大小为 A4,单面打印。需要将第一行的内容替换为:
1 | \documentclass[12pt, a4paper, oneside]{ctexart} |
文件的正文部分需要放入 document 环境中,在 document 环境外的部分不会出现在文件中。
1 | \documentclass[12pt, a4paper, oneside]{ctexart} |
宏包
为了完成一些功能(如定理环境),还需要在导言区,也即 document
环境之前加载宏包。加载宏包的代码是\usepackage{}
。本份教程中,与数学公式与定理环境相关的宏包为amsmath
、amsthm
、amssymb
,用于插入图片的宏包为graphicx
,代码如下:
1 | \usepackage{amsmath, amsthm, amssymb, graphicx} |
另外,在加载宏包时还可以设置基本参数,如使用超链接宏包 hyperref,可以设置引用的颜色为黑色等,代码如下:
1 | \usepackage[bookmarks=true, colorlinks, citecolor=blue, linkcolor=black]{hyperref} |
标题
标题可以用\title{}
设置,作者可以用\author
设置,日期可以用\date{}
设置,这些都需要放在导言区。为了在文档中显示标题信息,需要使用\maketitle
。例如:
1 | \documentclass[12pt, a4paper, oneside]{ctexart} |
正文
正文可以直接在 document 环境中书写,没有必要加入空格来缩进,因为文档默认会进行首行缩进。相邻的两行在编译时仍然会视为同一段。在 LaTeX 中,另起一段的方式是使用一行相隔,例如:
1 | 我是第一段. |
这样编译出来就是两个段落。在正文部分,多余的空格、回车等等都会被自动忽略,这保证了全文排版不会突然多出一行或者多出一个空格。另外,另起一页的方式是:
1 | \newpage |
在正文中,还可以设置局部的特殊字体:
字体 | 命令 |
---|---|
直立 | |
意大利 | |
倾斜 | |
小型大写 | |
加宽加粗 |
章节
对于 ctexart
文件类型,章节可以用\section{}
和\subsection{}
命令来标记,例如:
1 | \documentclass[12pt, a4paper, oneside]{ctexart} |
目录
在有了章节的结构之后,使用\tableofcontents
命令就可以在指定位置生成目录。通常带有目录的文件需要编译两次,因为需要先在目录中生成.toc
文件,再据此生成目录。
1 | \documentclass[12pt, a4paper, oneside]{ctexart} |
图片
插入图片需要使用 graphicx 宏包,建议使用如下方式:
1 | \begin{figure}[htbp] |
其中,[htbp]
的作用是自动选择插入图片的最优位置,\centering
设置让图片居中,[width=8cm]
设置了图片的宽度为
8cm,\caption{}
用于设置图片的标题。
表格
LaTeX 中表格的插入较为麻烦,可以直接使用Create LaTeX tables online – TablesGenerator.com来生成。建议使用如下方式:
1 | \begin{table}[htbp] |
列表
LaTeX
中的列表环境包含无序列表itemize
、有序列表enumerate
和描述description
,以enumerate
为例,用法如下:
1 | \begin{enumerate} |
另外,也可以自定义\item
的样式:
1 | \begin{enumerate} |
定理环境
定理环境需要使用 amsthm 宏包,首先在导言区加入:
1 | \newtheorem{theorem}{定理}[section] |
其中{theorem}
是环境的名称,{定理}
设置了该环境显示的名称是“定理”,[section]
的作用是让theorem
环境在每个
section 中单独编号。在正文中,用如下方式来加入一条定理:
1 | \begin{theorem}[定理名称] |
其中[定理名称]
不是必须的。另外,我们还可以建立新的环境,如果要让新的环境和theorem
环境一起计数的话,可以用如下方式:
1 | \newtheorem{theorem}{定理}[section] |
另外,定理的证明可以直接用 proof 环境。
页面
最开始选择文件类型时,我们设置的页面大小是 a4paper,除此之外,我们也可以修改页面大小为 b5paper 等等。
一般情况下,LaTeX
默认的页边距很大,为了让每一页显示的内容更多一些,我们可以使用geometry
宏包,并在导言区加入以下代码:
1 | \usepackage{geometry} |
另外,为了设置行间距,可以使用如下代码:
1 | \linespread{1.5} |
页码
默认的页码编码方式是阿拉伯数字,用户也可以自己设置为小写罗马数字:
1 | \pagenumbering{roman} |
另外,aiph
表示小写字母,Aiph
表示大写字母,Roman
表示大写罗马数字,arabic
表示默认的阿拉伯数字。如果要设置页码的话,可以用如下代码来设置页码从
0 开始:
1 | \setcounter{page}{0} |