新内容: 访问全新的 Overleaf 学习中心,探索免费的在线课程和直播网络研讨会——掌握 LaTeX 并充分利用 Overleaf 所需的一切尽在其中。本入门教程不要求你具备任何 LaTeX 使用经验。希望在学完之后,你不仅能写出自己的第一个 LaTeX 文档,还能掌握足够的知识并建立信心,向熟练使用 LaTeX 迈出下一步。
什么是 LaTeX?
LaTeX(读作”LAY-tek”或”LAH-tek”)是一种用于排版专业外观文档的工具。不过,LaTeX 的工作方式与你可能用过的许多其他文档制作应用(例如 Microsoft Word 或 LibreOffice Writer)截然不同:那些”所见即所得(WYSIWYG)“工具为用户提供一个交互式页面,用户在其中输入和编辑文本并应用各种样式。LaTeX 的工作方式则完全不同:你的文档是一个纯文本文件,其中穿插着用于表达所需(排版)结果的 LaTeX 命令。为了生成可见的排版文档,你的 LaTeX 文件需要由一个称为 TeX 引擎_的软件进行处理,该引擎利用文本文件中嵌入的命令来引导和控制排版过程,将 LaTeX 命令和文档文本转换为专业排版的 PDF 文件。这意味着你只需专注于文档的_内容,而计算机会通过 LaTeX 命令和 TeX 引擎负责处理文档的_视觉外观_(格式)。为什么要学习 LaTeX?
关于是否应学习使用 LaTeX 而非其他文档创作应用,支持和反对的理由都有不少;但归根结底,这是一种基于个人偏好、习惯以及文档需求的个人选择。 支持使用 LaTeX 的理由包括:- 支持排版极其复杂的数学公式、表格以及物理科学领域的技术内容;
- 提供脚注、交叉引用和参考文献管理功能;
- 可以轻松生成复杂或繁琐的文档元素,例如索引、术语表、目录、图片列表等;
- 由于其固有的可编程性以及通过数千个免费附加宏包实现的可扩展性,可高度定制以满足特定的文档制作需求。
编写你的第一段 LaTeX
第一步是创建一个新的 LaTeX 项目。你可以在自己的计算机上创建一个新的.tex 文件;也可以在 Overleaf 中新建一个项目。
让我们从最简单的可运行示例开始,它可以直接在 Overleaf 中打开:
\documentclass{article} 声明了文档的类型,称为文档_类_(class),它控制着文档的整体外观。不同类型的文档需要不同的文档类;例如,简历所需的文档类与科学论文不同,后者可能使用标准的 LaTeX article 类。你正在处理的其他类型文档可能需要不同的文档类,例如 book 或 report。要了解可用的众多 LaTeX 文档类,请访问 CTAN(Comprehensive TeX Archive Network)上的相关页面。
设置好文档类之后,我们的内容(称为文档的_正文_)写在 \begin{document} 和 \end{document} 标签之间。打开上面的示例后,你可以修改文本,完成后通过_重新编译文档_来查看生成的排版 PDF。在 Overleaf 中,只需点击 Recompile 即可,如以下简短视频片段所示:
任何 Overleaf 项目都可以配置为每次编辑后自动重新编译:点击 Recompile 按钮旁边的小箭头,将 Auto Compile 设置为 On,如下方截图所示:

文档的导言区
上面的截图显示 Overleaf 将 LaTeX 文档存储为名为main.tex 的文件:按照惯例,包含文档 LaTeX 代码的文件使用 .tex 扩展名命名。
前面的示例展示了如何在 \begin{document} 命令之后输入文档内容;而 .tex 文件中出现在该位置_之前_的所有内容称为_导言区_,它相当于文档的”设置”部分。在导言区中,你可以定义文档类(类型)以及诸如撰写文档所用语言等具体设置;加载你想使用的_宏包_(稍后将详细介绍),也可以在这里进行其他类型的配置。
一个最简单的文档导言区可能如下所示:
\documentclass[12pt, letterpaper]{article} 定义了文档的整体类(类型)。附加参数写在方括号([...])中,必须用逗号分隔,用于配置该 article 类的这一实例,即我们希望为这个基于 article 类的特定文档使用的设置。
在本例中,这两个参数的作用如下:
12pt设置字号letterpaper设置纸张大小
9pt、11pt、12pt 等其他字号;如果未指定,默认字号为 10pt。至于纸张大小,其他可选值有 a4paper 和 legalpaper。更多信息请参阅关于页面尺寸和页边距的文章。
导言区中的这一行
添加标题、作者和日期信息
要为文档添加标题、作者和日期,需要在_导言区_(而_不是_文档正文)中再添加三行。这三行是:\title{My first LaTeX document}:文档标题\author{Hubert Farnsworth}:在这里写上作者姓名,并可选择在花括号内使用\thanks命令:\thanks{Funded by the Overleaf team.}:可以添加在author命令花括号内的作者姓名之后。它会添加一个上标,并生成一个包含花括号内文本的脚注。如果你需要在文章中感谢某个机构,这会很有用。
\date{August 2022}:你可以手动输入日期,也可以使用\today命令,在每次编译文档时排版当前日期
\maketitle 命令:
添加注释
LaTeX 是一种”程序代码”,只不过专门用于文档排版;因此,与用任何其他编程语言编写的代码一样,在文档中添加注释会非常有用。LaTeX 注释是一段不会被排版、也不会以任何方式影响文档的文本——通常用于添加”待办”笔记、加入说明性注解、对复杂宏进行行内解释,或在调试时注释掉某些 LaTeX 代码行/段落。 要在 LaTeX 中添加注释,只需在行首写一个% 符号,如以下基于上例的代码所示:
粗体、斜体和下划线
接下来,我们来看一些文本格式命令:- 粗体:LaTeX 中的粗体文本使用
\textbf{...}命令排版。 - 斜体:斜体文本使用
\textit{...}命令生成。 - 下划线:要为文本添加下划线,请使用
\underline{...}命令。
\emph{_argument_},它对 _argument_ 的效果取决于上下文。在普通文本中,强调的文本会以斜体显示;但如果在斜体文本中使用,则效果相反——请看下一个示例:
- 注意: 某些宏包(例如 Beamer)会改变
\emph命令的行为。
添加图片
本节将介绍如何向 LaTeX 文档添加图片。Overleaf 支持三种插入图片的方式:- 使用编辑器工具栏上的 Insert Figure 按钮(
),将图片插入 Visual Editor 或 Code Editor。 - 将图片复制并粘贴到 Visual Editor 或 Code Editor 中。
- 使用 Code Editor 编写插入图形的 LaTeX 代码。
\includegraphics{...} 和用于告知 LaTeX 图形所在位置的 \graphicspath{...}。
要使用 graphicx 宏包,请在 Overleaf 文档的导言区中加入以下一行:
\graphicspath{{images/}} 告诉 LaTeX 图片保存在当前目录下名为 images 的文件夹中:
\includegraphics{universe} 命令负责实际将图片插入文档。这里,universe 是图片文件的名称,但不带扩展名。
注意:
- 虽然
\includegraphics命令允许使用包含扩展名的完整文件名,但最佳做法是省略文件扩展名,因为这样 LaTeX 会搜索所有受支持的格式。 - 一般而言,图形文件名不应包含空格或多个点;在向 Overleaf 上传图片文件时,还建议文件扩展名使用小写字母。
图注、标签和引用
可以通过figure 环境为图片添加图注、标签和引用,如下所示:
\includegraphics[width=0.75\textwidth]{mesh}:这种形式的\includegraphics指示 LaTeX 将图片宽度设置为文本宽度的 75%——文本宽度的值保存在\textwidth命令中。\caption{A nice plot.}:顾名思义,该命令设置图注,图注可以放在图片的上方或下方。如果你创建了图片列表,该图注将被用于列表中。\label{fig:mesh1}:要在文档中引用这张图片,需要使用\label命令为其指定一个标签。该标签用于为图片生成编号,并配合下一个命令让你能够引用它。\ref{fig:mesh1}:这段代码将被替换为所引用图片对应的编号。
figure 环境或类似环境中,以便 LaTeX 能够自动将图片放置在文档中的合适位置。
更多指导请参阅以下 Overleaf 帮助文章:
- 图片的定位
- 插入图片
在 LaTeX 中创建列表
你可以使用_环境_创建不同类型的列表,环境用于封装实现特定排版功能所需的 LaTeX 代码。环境以\begin{_environment-name_} 开始,以 \end{_environment-name_} 结束,其中 _environment-name_ 可以是 figure、tabular,或者是某种列表类型:用于无序列表的 itemize 或用于有序列表的 enumerate。
无序列表
无序列表由itemize 环境生成。每个列表项之前都必须加上 \item 命令,如下所示:
有序列表
有序列表使用与无序列表相同的语法,但使用enumerate 环境创建:
\item 命令,在这里它会自动生成从 1 开始的有序列表编号。
更多信息请打开这个更大的 Overleaf 项目,其中演示了各种类型的 LaTeX 列表;也可以访问我们关于 LaTeX 列表的专门帮助文章,其中提供了更多示例,并介绍了如何创建自定义列表。
在 LaTeX 中添加数学公式
LaTeX 的主要优势之一是可以轻松地编写数学表达式。LaTeX 提供两种用于排版数学公式的书写模式:- _行内_数学模式,用于书写作为段落一部分的公式
- 行间(display)数学模式,用于书写不属于文本或段落、而是单独成行排版的表达式
行内数学模式
我们来看一个行内数学模式的示例:\( ... \)、$ ... $ 或 \begin{math} ... \end{math},如以下示例所示:
行间数学模式
以行间模式排版的公式可以带编号,也可以不带编号,如以下示例所示:\[ ... \]、\begin{displaymath} ... \end{displaymath} 或 \begin{equation} ... \end{equation}。过去,排版行间模式数学公式需要使用 $$ 字符作为定界符,例如 $$ _... display math here ..._$$,但这种方法已不再推荐:请改用 LaTeX 的定界符 \[ ... \]。
更完整的示例
以下示例演示了使用 LaTeX 排版的一系列数学内容。amsmath 宏包提供的 equation* 环境,因此我们需要在文档导言区中添加以下一行:
amsmath 的更多信息,请参阅我们的帮助文章。
- 数学表达式
- 下标和上标
- 方括号和圆括号
- 分数和二项式系数
- 公式对齐
- 运算符
- 数学模式中的间距
- 积分、求和与极限
- 数学模式中的行间样式
- 希腊字母和数学符号列表
- 数学字体
基本文档结构
接下来,我们将探讨摘要,以及如何将 LaTeX 文档划分为不同的章、节和段落。摘要
科学论文通常会提供一段_摘要_,即对其核心主题或论点的简要概述/总结。下一个示例演示了如何使用 LaTeX 的abstract 环境排版摘要:
段落和换行
有了摘要之后,我们就可以开始撰写第一个段落了。下一个示例演示了:- 如何通过按两次”回车”键(结束当前行并插入一个空行)来创建新段落;
- 如何在不开始新段落的情况下另起一行:使用
\\命令(即双反斜杠)插入手动换行;也可以使用\newline命令。
\\ 和 \newline 命令的用法:
\\ 或 \newline 来”模拟”段间距更大的段落,因为这可能会干扰 LaTeX 的排版算法。推荐的做法是继续使用空行来创建新段落,不使用任何 \\,并通过在导言区添加 \usepackage{parskip} 来加载 parskip 宏包。
有关段落的更多信息,请参阅以下文章:
- 段落和换行
- 如何在 LaTeX 中更改段落间距
- LaTeX Error: There’s no line here to end 提供了有关使用
\\的更多建议和指导。
章和节
无论使用何种写作软件,较长的文档通常都会被划分为部分、章、节、小节等。LaTeX 也提供了文档结构命令,但可用的命令及其实现(作用)可能取决于所使用的文档类。例如,使用book 类创建的文档可以划分为部分、章、节、小节等,而 letter 类则不提供(不支持)任何此类命令。
下一个示例演示了用于组织基于 book 类的文档结构的命令:
\chapter{First Chapter} 创建一个标题为 First Chapter 的新章,\section{Introduction} 生成一个标题为 Introduction 的节,依此类推。节还可以进一步划分为 \subsection{...},甚至 \subsubsection{...}。节、小节等的编号是自动生成的,但可以通过使用相应命令的所谓_带星号版本_(即末尾带有星号 (*) 的命令,例如 \section*{...} 和 \subsection*{...})来禁用编号。
总体而言,LaTeX 文档类提供以下章节命令,具体的文档类各自支持其中相关的子集:
\part{part}\chapter{chapter}\section{section}\subsection{subsection}\subsubsection{subsubsection}\paragraph{paragraph}\subparagraph{subparagraph}
\part 和 \chapter 命令仅在 report 和 book 文档类中可用。
有关文档结构命令的更多信息,请访问 Overleaf 关于节和章的文章。
创建表格
Overleaf 提供三种创建表格的方式:- 使用 Visual Editor(或 Code Editor)工具栏中的 Insert Table 按钮。
- 在使用 Visual Editor 时,从其他文档中复制并粘贴表格。
- 在 Code Editor 中编写表格的 LaTeX 代码。
在 LaTeX 中创建基本表格
我们从一个展示如何排版基本表格的示例开始:tabular 环境是 LaTeX 创建表格的默认方式。你必须为该环境指定一个参数,本例中为 {c c c},它告诉 LaTeX 表格有三列,并且每列中的文本都居中对齐。你也可以使用 r 使文本右对齐,使用 l 使文本左对齐。对齐符号 & 用于分隔表格行中的各个单元格。要结束一个表格行,请使用_换行_命令 \\。我们的表格放在 center 环境中,使其在页面的文本宽度内居中。
添加边框
tabular 环境支持在表格中使用水平线和垂直线(表线):
- 要在行的上方和下方添加水平线,请使用
\hline命令 - 要在列之间添加垂直线,请使用竖线参数
|
{|c|c|c|},它声明了三个(居中的)列,各列之间以垂直线(表线)分隔;此外,我们使用 \hline 在第一行上方和最后一行下方各放置一条水平线:
表注、标签和引用
你可以用与图片几乎相同的方式为表格添加表注和引用。唯一的区别是使用table 环境,而不是 figure 环境。
表 \ref{table:data} 展示了如何添加表注以及如何引用表格。
添加目录
创建目录非常简单,因为\tableofcontents 命令几乎为你完成了所有工作:
\addcontentsline 命令。
下载完成的文档
以下简短视频片段展示了如何下载项目的源代码或排版后的 PDF 文件: 更多信息请参阅 Overleaf 帮助文章从 Overleaf 导出你的作品。查找和使用 LaTeX 宏包
LaTeX 不仅具备强大的排版能力,还通过附加_宏包_提供了一个_可扩展框架_。LaTeX 并不试图提供”包揽一切”的命令和功能,而是被设计为_可扩展_的,允许用户加载外部代码集(宏包),以提供更专业的排版功能,或扩展 LaTeX 的内置功能(例如表格排版)。正如在添加图片一节中所见,graphicx 宏包通过提供导入图形文件的命令来扩展 LaTeX,并通过在导言区中写入以下语句来加载
加载宏包
如上所述,宏包是在文档导言区中通过\usepackage 命令加载的。但由于(许多)LaTeX 宏包提供了一组可用于配置其行为的_选项_,因此 \usepackage 命令通常如下所示:
[...]”告诉 LaTeX 在加载 somepackage 时应用哪组选项。在用户指定的选项集中,各个选项或设置通常以逗号分隔;例如,geometry 宏包提供了许多用于配置 LaTeX 页面布局的选项,因此 geometry 的典型用法可能如下所示:
geometry 宏包是由全球 LaTeX 社区成员编写并贡献、免费提供给任何想使用它的人的宏包之一。
如果某个 LaTeX 宏包不提供任何选项,或者用户希望使用宏包选项的默认值,则可以像这样加载它:
\usepackage[...]{somepackage} 时,LaTeX 会查找一个名为 _somepackage_.sty 的对应文件,并对其进行加载和处理——以使宏包命令可用,并执行该宏包提供的其他代码。如果 LaTeX 找不到 _somepackage_.sty,就会报错并终止,如以下 Overleaf 示例所示:
查找宏包信息:CTAN
宏包通过 Comprehensive TeX Archive Network(通常简称 CTAN)分发,在撰写本文时,CTAN 托管了来自 2881 位贡献者的 6287 个宏包。CTAN 这样描述自己:……分布在世界各地、提供 TEX 相关资料下载的一组互联网站点。你可以浏览 CTAN 查找有用的宏包,例如: 你也可以使用(页面顶部的)搜索功能。

