loading...
Featured image of post LaTeX:不太精通的教程

LaTeX:不太精通的教程

总会用到的

1978年,为了解决解决当时学术出版里公式排版不美观的问题,计算机科学家Donald Knuth开发了一个排版系统,并给他命名为TeX(发音接近 “tech”),它的功能强大,但写起来很繁琐

而我们要学的LaTeX(读作"Lay-tech"或 “Lah-tech”)是一个基于TeX的排版系统,它由Leslie Lamport在 1980年开发,目的是让普通人更容易使用TeX

可以这样理解:

  • TeX就像汇编语言,底层、强大,但复杂
  • LaTeX就像高级语言,在 TeX 上加了封装,更易用

LaTeX在现代被广泛使用,用于生成高质量的文档,尤其擅长处理包含数学公式、科学符号和复杂排版的内容

所以学点吧,学点总没错

注意:LaTeX的命令是大小写敏感的!

为何选择LaTeX?

与我们熟知的Word这类“所见即所得”(WYSIWYG) 的编辑器不同,LaTeX 是一种**“所见即所想” (WYSIWYM)** 的排版系统

  • Word (所见即所得)

    我们的编辑界面就是最终的页面,自由度高,上手简单

    但缺点在于,手动调整格式容易出现细节不一致(如行距、字体混乱),且对于学术论文中的公式、图表、参考文献的自动编号和交叉引用支持不佳

  • LaTeX (所见即所想)

    我们负责撰写内容并用代码写排版指令,例如\section{引言}就是告诉LaTeX“这里是一个一级标题,内容是引言”

    我们无需关心它具体用什么字体、多大字号、距离页边距多少,编译器会根据预设的规范,自动生成一篇格式精美、高度一致的文档

这种模式赋予了LaTeX无与伦比的优势,特别是在学术写作领域:

  1. 规范与专业:自动处理编号、格式,确保全文样式统一,版面专业
  2. 强大的数学公式支持:被公认为数学公式排版的行业标准
  3. 自动化管理:目录、图表列表、参考文献等都能自动生成和更新
  4. 结构化写作:强迫作者专注于内容和逻辑,而非琐碎的格式调整

同一篇文章,虽然Word和LaTeX最终都能实现类似的效果,但LaTeX的排版更加专业好用

另外,关于LaTeX的读音,虽然百科上的推荐发音是"拉泰赫",但读成"拉泰克斯"也是可以的,读音不重要

Overleaf

何为overleaf

对于初学者,安装和配置本地LaTeX环境可能比较繁琐,因此,本教程将以Overleaf为核心工具

Overleaf是一个强大的在线LaTeX编辑器:

  • 零配置:无需在本地安装任何软件,注册账号即可使用
  • 实时预览:左侧编写代码,右侧实时显示生成的PDF效果
  • 模板丰富:提供大量期刊、论文、简历、幻灯片等高质量模板
  • 协作方便:可以像谷歌文档一样与他人在线协作

我们完全可以把它当成长期的LaTeX工具使用

如何使用?

  1. 访问Overleaf官网 或者Overleaf中文官网 并注册一个免费账户

  2. 登录后,点击左上角的 “New Project”,我们可以选择创建一个"Blank Project"(空白项目)、“Example Project”(示例项目)或从"Templates"(模板)中选择一个开始

    如果我们已经有本地项目,也可以选择"Upload project"(上传项目)

  3. 进入编辑器界面,我们会看到:

    • 左侧:文件列表(可以上传图片、创建.bib文件等)
    • 中间:源代码编辑区,我们将在这里编写LaTeX代码
    • 右侧:点击编译,实时预览生成的PDF文档

    可以点击两个区域之间的箭头

  4. 中间写好之后,点击右边区域上方的"重新编译"按钮,稍等片刻即可看见文档

    如果因为语法等错误编译失败,则会看见修复建议和原始错误日志

  5. 点击左上角叶子状图标,可以进行设置,包括编译器种类、Tex版本、自动补全、主题等等

LaTeX编译器

overleaf支持很多不同的LaTeX编译器引擎,大部分语法在他们中都是一样的

pdfLaTeX

传统的LaTeX引擎,最常见,历史最久

优点

  • 稳定、兼容性最好
  • 生态最丰富,几乎所有宏包都支持

缺点

  • 不支持Unicode → 中文、Emoji、现代字体用起来很麻烦
  • 字体只能用TeX内置机制,必须事先安装TeX字体集(比如fandol),否则会报错

XeLaTeX

基于Unicode,专门为现代字体设计的引擎

优点

  • 原生支持Unicode → 直接输入中文没问题
  • 可以调用系统字体(比如Windows的宋体、Mac的苹方、Linux的思源黑体等),不需要fandol
  • 字体控制能力强(比如\setmainfont{Times New Roman}

缺点

  • 编译速度比pdfLaTeX慢一些
  • 个别宏包兼容性稍差,但大部分现在都支持了

LuaLaTeX

和XeLaTeX类似,也支持Unicode,底层基于Lua脚本引擎

优点

  • 同样支持系统字体
  • 更灵活:可以用Lua脚本扩展TeX功能(比如处理复杂语言、图形、自动化排版)

缺点

  • 和XeLaTeX一样,速度比pdfLaTeX慢
  • Lua机制比较复杂,对新手不太友好

LaTeX文档的基本结构

每一个LaTeX文档都由两部分组成:导言区正文区

我们先给出一个完整的示例,看不懂没关系,先尝尝咸淡:

% --- 导言区开始 ---
\documentclass[12pt, a4paper]{ctexart} % 定义文档类型和基本设置

\usepackage{amsmath} % 加载宏包,以使用更多功能
\usepackage{graphicx}
\usepackage[colorlinks, citecolor=blue]{hyperref}

\title{第一个LaTeX 文档} % 设置标题
\author{作者名字}
\date{\today} % 日期, \today 会自动生成当天日期
% --- 导言区结束 ---

% --- 正文区开始 ---
\begin{document}

\maketitle % 显示标题、作者和日期

正文内容

\end{document}
% --- 正文区结束 ---

编译结果:

image-20250817101503310

导言区

这是从\documentclass开始到\begin{document}之前的部分,我们在这里进行全局设置

文档类型 (\documentclass)

此命令用于定义文档的全局类型,例如是文章、书籍还是幻灯片

它必须 .tex文件中的第一个命令

格式

\documentclass[参数]{文档类型名称}

{类型名称} (必填)

这是文档的根本类型,决定了是否有章节、标题页的默认格式等

类型 中文版本 适用场景 特点
article ctexart 短小文档
如期刊文章、课程作业、报告
\chapter命令,章节较简单,适合短篇文档
report ctexrep 中长篇文档
如毕业论文、研究报告
\chapter命令,章节层次更丰富
book ctexbook 书籍排版 支持书籍格式,如封面、目录、章节分页
beamer ctexbeamer 幻灯片/演示文稿 专门用于制作演示文稿,支持动画、主题切换

[参数] (选填)

这些参数用于对文档的基础样式进行微调,多个参数之间用逗号隔开

  • 字体大小

    控制正文文字大小,也会影响章节标题、页眉页脚等

    选项 含义
    10pt 正文字体 10 磅(默认)
    11pt 正文字体 11 磅
    12pt 正文字体 12 磅
  • 纸张大小

    决定页面尺寸和默认页边距

    选项 尺寸
    a4paper 210mm × 297mm
    letterpaper 8.5in × 11in
    b5paper 176mm × 250mm
    a5paper 148mm × 210mm
  • 排版方式

    决定奇偶页布局差异,主要用于打印装订

    选项 含义
    oneside 单面排版,左右页边距相同(默认article
    twoside 双面排版,奇偶页左右页边距不同(默认book
  • 分栏

    控制正文是单栏还是多栏

    选项 含义
    onecolumn 单栏正文(默认)
    twocolumn 双栏正文,适合学术论文或期刊
  • 其他常用选项

    选项 含义
    openright 新章从奇数页开始(适合 book
    openany 新章可从任意页开始
    titlepage 文档使用单独的标题页
    draft 显示超长行标记,图形不渲染(调试用)
    final 正式排版(默认)

示例

\documentclass[12pt, a4paper, oneside]{ctexart}

这行代码定义了整个文档的基础框架:

  • {ctexart}

    将文档类型设置为中文文章,这意味着我们可以直接输入中文,并使用\section\subsection等命令

  • [12pt, a4paper, oneside]

    • 12pt:将文档的默认字体大小设置为12磅
    • a4paper:将排版的纸张设置为A4尺寸
    • oneside:采用单面排版模式

即:该命令声明了我们要创建的是一份字体大小为12pt、在 A4 纸上进行单面排版的中文文章

宏包 (\usepackage)

宏包(Package)可以理解为 LaTeX 的“插件”或“扩展库”

通过加载宏包,我们可以使用更多强大的命令和功能,例如插入图片、设置页边距、生成带链接的目录等

宏包通常在导言区(\documentclass 之后,\begin{document} 之前)加载

格式

\usepackage[可选参数]{宏包名称}

{宏包名称} (必填)

这是宏包的核心标识,用于指定需要加载的宏包

可以一次性加载多个无参数的宏包,用逗号隔开,例如\usepackage{amsmath, graphicx}

常用宏包:

宏包名称 主要功能与用途
ctex 中文支持的核心宏包,当使用ctexart等文档类型时,该宏包会被自动加载
amsmath 美国数学学会(AMS)宏包,提供更丰富的数学公式环境,如多行公式、矩阵等
amssymb AMS宏包,提供更多数学符号,如 \mathbb (黑板粗体)、\checkmark (对勾)
amsthm AMS宏包,用于定义专业的定理、引理、定义等环境
graphicx 提供\includegraphics 命令,是插入图片(如 JPG, PNG, PDF)的必备宏包
geometry 便捷地设置页面布局,如页边距、纸张方向、页眉页脚距离等
hyperref 自动为文档内的引用(目录、公式、参考文献)创建可点击的PDF超链接,极大提升电子文档的交互性
xcolor 提供颜色支持,可以定义和使用颜色来修饰文本、表格背景等
fancyhdr 用于自定义页眉和页脚,可以添加章节名、页码、校徽等复杂信息
listings 用于插入带语法高亮的代码块,是撰写技术文档的利器

[可选参数] (选填)

用于对所加载的宏包进行配置。每个宏包都有一套独立的参数

注意:在LaTeX中,当一个选项是布尔型(true/false)时,只写选项名就默认等价于true

这里分别介绍几个常用宏包的参数

  • geometry

    这个宏包专门用于精细控制页面尺寸和边距

    选项 功能说明
    left=2.5cmright=2.5cm 分别设置左、右页边距
    top=3cmbottom=3cm 分别设置上、下页边距
    margin=1in 将上、下、左、右所有页边距统一设置为1英寸
    a4paperb5paper 设定纸张尺寸
    landscape 设置为横向排版(默认为 portrait 纵向)
    showframe 在页面上显示布局的辅助线框,方便调试页边距设置
  • hyperref

    这个宏包用于生成PDF的超链接和书签

    选项 功能说明
    colorlinks=true 使用彩色文本作为链接,而非默认的带边框样式。强烈推荐设置
    linkcolor=black 设置内部链接(如目录、章节引用 \ref)的颜色
    citecolor=blue 设置文献引用(\cite)的链接颜色
    urlcolor=cyan 设置网址链接(\url)的颜色
    bookmarks=true 在PDF阅读器侧边栏中生成可点击的书签
    pdfstartview=FitH 设置PDF打开时的默认视图为“适合页宽”
  • xcolor

    这个宏包用于在文档中使用颜色

    选项 功能说明
    dvipsnames 加载dvips预定义的68种颜色名称(如Goldenrod
    svgnames 加载SVG预定义的151种颜色名称(如AliceBlue
    x11names 加载X11预定义的317种颜色名称(如LightSteelBlue

    加载这些选项后,就可以直接通过名称使用颜色,例如\textcolor{Goldenrod}{这是金麒麟色的文字}

  • ctex

    当手动加载\usepackage{ctex}时,可以填选

    选项 功能说明
    UTF8 明确指定源文件编码为UTF-8(现在通常是默认设置,无需手动指定)
    fontset=adobe 设置中文字体集为Adobe字体(需要系统安装相应字体)
    fontset=windows 在Windows系统下,设置中文字体集为系统自带字体(如宋体、黑体等)

示例

\usepackage{amsmath, amssymb}
\usepackage[a4paper, margin=2.5cm, showframe]{geometry}
\usepackage{graphicx}
\usepackage[colorlinks, citecolor=blue, linkcolor=black, bookmarks=true]{hyperref}

这段代码在导言区加载并配置了一系列常用的宏包:

  • \usepackage{amsmath, amssymb}

    通过逗号分隔的方式,同时加载了 amsmathamssymb 两个宏包

    他们为文档提供了强大的数学公式排版能力和丰富的数学符号支持

  • \usepackage[a4paper, margin=2.5cm, showframe]{geometry}

    加载了geometry宏包,并传入了三个参数:

    • a4paper: 确保页面尺寸是基于 A4 纸张计算的
    • margin=2.5cm: 将页面的上、下、左、右所有页边距统一设置为 2.5 厘米
    • showframe: 在生成的PDF上绘制辅助线框,方便我们检查页边距设置是否符合预期。
  • \usepackage{graphicx}

    加载了graphicx宏包

    这一行代码本身不产生任何效果,但它使得我们可以在正文部分使用\includegraphics命令来插入图片

  • \usepackage[...]{hyperref}

    加载了hyperref宏包,并通过一系列参数对其进行了详细配置:

    • colorlinks: 使链接以彩色文本显示
    • citecolor=blue: 文献引用链接为蓝色
    • linkcolor=black: 内部跳转链接(如目录)为黑色
    • bookmarks=true: 会在生成的 PDF 文件中创建书签,方便快速导航

正文区

在导言区完成文档的全局设置后,正文区(document环境)用于撰写具体内容。

正文环境:document

所有希望在最终PDF中显示的内容,都必须放在\begin{document}\end{document}之间

\begin{document}\end{document}中的document 并不是一个可选参数或用户自定义的名字,它是 LaTeX 固定的环境名称,用于标识正文的开始,不是可选的,不能改动!

命令 / 符号 功能说明
\begin{document} 正文开始标志
必须在导言区(包括所有\usepackage命令)之后使用
\end{document} 正文结束标志
编译器会忽略此命令之后的所有内容

注释

单行注释

使用符号%,从%开始到行尾的内容都会被忽略,不会出现在最终PDF里

  • 注释的一行是源代码的一行,而不是LaTeX文章的一行
  • 使用快捷键ctrl+/能快速注释选中行

多行注释

LaTeX没有内置的多行注释符号,如果想要多行注释,最简单的方式是连续多行都写%

也可以使用下面的方式:

\iffalse
这几行内容都会被忽略
即使有多行
LaTeX 也不会处理
\fi

\iffalse表示“如果条件为假”,LaTeX会跳过它和\fi 之间的内容,相当于把里面的东西忽略掉

示例

\begin{document}
    % 作者的所有可见内容、命令和环境都写在这里。
    % 这一行是注释,不会显示在PDF中
    ...
\end{document}

文档内容排版

在设置好文档的框架(导言区)后,我们就可以开始在正文环境中填充实际内容了

这部分将介绍如何组织文本结构、设置样式以及创建列表

段落、间距与分页

LaTeX会自动处理文本的排版,但我们有时也需要手动控制换行和分页

命令操作

注意:

  • 在行中的命令最好左右加上空格
  • 在行间的命令最好上下隔开空行
操作 实现方式 说明
开始新段落 在代码中留出一个或多个空行 这新段落会自动应用首行缩进
强制换行 \\\newline 在当前位置中断该行内容
从下一行开始它不属于新段落,因此没有首行缩进
禁止换行 ~ 这是非换行空格
放在两个词之间以确保它们不会因换行而分开
比如Dr.~Smith
制造水平空格 \quad 产生一个当前字号的全角宽度 (1em) 的空格
\qquad 产生当前字号的两倍全角宽度的空格
\hspace{长度} 产生一个指定长度的水平空格,如\hspace{1cm}
\hfill 弹性空格,会自动填充所在行所有可用的水平空间
可用于实现左右对齐
制造垂直空行 \vspace{长度} 产生一个指定高度的垂直空白,如\vspace{5mm}
\smallskip, \medskip, \bigskip 三个预设的、有弹性的垂直空白,尺寸由小到大
强制分页 \newpage 立即结束当前页面,将后续内容移至新的一页
局部取消缩进 \noindent 段落开头不缩进
注意要和正文之间有空格/换行符
全局取消缩进 \setlength{\parindent}{0pt} -
局部进行缩进 \hspace*{2em}段落\\ 和上一条命令结合可以做到指定行才缩进
左对齐 \begin{flushleft}...\end{flushleft} -
居中对齐 \begin{center}...\end{center} -
右对齐 \begin{flushright}...\end{flushright} -

示例

这是第一段的文字,一直写下去直到行尾自动换行

这是第二段的文字,因为它和第一段之间有一个空行,所以它会首行缩进
现在要强制换行了\\这一句紧接着上一句,但是没有缩进

\begin{center}
这是一段居中的文字
\end{center}

\noindent 这一行虽然换行了,却没有首行缩进

\noindent 开头 \quad 我远离了前面的字 \qquad 我更远离了 \hspace{2cm} 还是我比较远一点

左边内容→弹性 \hfill 弹性←右边内容

小空行:

\smallskip

中空行:

\medskip

大空行:

\bigskip

自定义空行:

\vspace{2cm}

到这里是两厘米空行

要另起一页了
\newpage
这是新的一页

编译结果:

image-20250819190726829

文本样式

LaTeX 提供了一系列命令来改变局部文本的字体样式

命令

命令 效果 英文说明
\textbf{...} 加粗文本 Bold Face
\textit{...} 意大利斜体 Italic
\textsl{...} 倾斜文本 Slanted
\textsc{...} 小型大写字母 Small Caps
\textup{...} 直立体 Upright (用于在斜体环境中恢复正常字体)
\underline{...} 下划线 Underline
\texttt{...} 等宽字体/打字机体 typewriter
\textnormal{...} 正常文本 恢复到当前文档的默认字体

他们之间可以互相嵌套,比如:\underline{\textbf{\textit{示例文本}}}

示例

\noindent
这是一段普通的文本,其中包含 \textbf{加粗}\textit{斜体}\\
这是正常字母:ABC\\
这是小型大写字母\textsc{abc}\\
请注意 \textsl{倾斜}\textit{意大利斜体} 的细微差别\\
\underline{\textbf{\textit{既要下划线又要斜体还要加粗就这样}}}\\

image-20250817132107426

特殊字符

在 LaTeX 中,许多键盘上的符号被用作特殊命令,因此不能直接输入。这一节将介绍如何正确地输入这些特殊字符,以及其他一些常用的排版符号。

英文引号

英文的弯引号‘ ’“ ”与键盘上直接打出的直引号'"是不同的

在 LaTeX 中,输入正确的弯引号需要使用特定的按键

功能 输入方式 渲染效果
英文单引号 (左) ` (反单引号)
英文单引号 (右) ’ (单引号)
英文双引号 (左) `` (两个反单引号)
英文双引号 (右) ’’ (两个单引号)

保留字符

以下字符在LaTeX中有特殊含义,因此不能直接在文本中输入 要显示它们本身,必须在前面加上反斜杠 \ 来进行转义

符号 输入命令 说明
# \# 宏定义参数符号
$ \$ 数学模式切换符号
% \% 注释符号
& \& 对齐符号(用于表格、矩阵等)
_ \_ 下标符号(数学模式)
{ \{ 命令参数或分组的开始
} \} 命令参数或分组的结束
^ \^{} 上标符号(数学模式)
~ \~{} 非换行空格或字母重音
\ \textbackslash 命令引导符,也就是反斜杠

常见货币与版权符号

符号 输入命令 备注
\texteuro 需要 textcomp 宏包
£ \pounds 无需特殊宏包
¥ \textyen 需要 textcomp 宏包 (在 ctex 环境下有时可直接输入)
© \copyright 版权符号
® \textregistered 注册商标符号
\texttrademark 商标符号
° \textdegree 度数符号 (文本模式)

破折号与连字号

类型 输入 渲染效果 用途
连字号 (Hyphen) - (一个 -) - 用于连接复合词,如state-of-the-art
En 短破折号 (En-dash) -- (两个 -) 用于表示数值、日期范围,如pages 10–20
Em 长破折号 (Em-dash) --- (三个 -) 用于分隔句子——功能类似中文的破折号

URL和文件路径

网址和文件路径中经常包含_%&等特殊字符,直接输入会导致编译错误

处理这个问题的最佳方法是使用urlhyperref宏包提供的\url{}命令,还可以生成可点击的链接

功能 命令 示例与说明
网址/路径 \url{...} \url{https://www.example.com/test_path?q=query%20space}
• 自动处理特殊字符
• 允许在合适的位置断行

字母重音与变音符号

在输入一些非英语单词(如法语、德语)时,需要为字母添加重音符号

虽然现代的XeLaTeX编译器通常支持直接输入这些字符,但使用命令还是好一些

效果 命令
à \`a

标题、作者与日期

这些信息构成了文档的“标题块”,通常显示在文档的最开始

它们在导言区被定义,然后在正文区通过一个命令显示出来

命令详解

命令 作用 使用区域
\title{文档标题} 定义文档的主标题 导言区
\author{作者姓名} 定义文档的作者 导言区
\date{日期} 定义文档的日期
可留空\date{}不显示日期,或使用\today自动生成当天日期
导言区
\maketitle 将以上三个命令定义的信息生成并显示在文档中 正文区

\title{...}\author{...}\date{...}这三个命令在\begin{document}之前被调用,它们只是将内容“暂存”起来,并不会直接显示任何东西

进入\begin{document}环境后,\maketitle命令被调用,它会读取之前暂存的标题、作者和日期信息,并按照ctexart文档类型预设的、规范的格式将它们排版输出

示例

\documentclass[12pt]{ctexart}

\title{噢耶,构构的文档}
\author{张顺三}
\date{\today}

\begin{document}
\maketitle

文档的正文

\end{document}

编译结果:

image-20250817125546110

章节与目录

对于结构化的长文档,章节是必不可少的

LaTeX通过简单的命令即可创建带自动编号的章节,并基于这些章节信息自动生成目录

命令详解

命令 层级 适用文档类型
\chapter{章标题} book, report
\section{节标题} 节(一级标题) article, report, book
\subsection{小节标题} 小节(二级标题) article, report, book
\subsubsection{小小节标题} 小小节(三级标题)
LaTeX默认只有三级标题,到此为止
article, report, book
\tableofcontents - 所有

\tableofcontents命令会在其所在位置插入一个完整的目录

LaTeX会自动扫描全文的章节命令来生成此目录

在Overleaf中,目录的更新是自动的;在本地环境中,有时需要编译两次才能正确生成

示例

\documentclass{ctexart}
\title{噢耶,构构的文档}
\author{张顺三}
\date{\today}
\begin{document}

\maketitle
\tableofcontents

\section{引言}
第一部分的正文内容

\subsection{研究背景}
第一部分第一节的正文内容

\subsubsection{地点调研}
第一部分第一节第一点的正文内容

\section{实验方法}
第二部分的正文内容

\end{document}

编译结果:

image-20250817130003732

摘要与关键词

摘要(Abstract)是学术文章开头不可或缺的部分,它简要概括了文章的核心内容

articlectexart等文档类型中,LaTeX提供了专门的abstract环境来排版摘要

环境与命令

环境 / 命令 功能说明
\begin{abstract}
...
\end{abstract}
摘要环境
放置在此环境中的文本会被自动格式化为摘要样式(通常会带有“摘要”标题,并采用稍窄的页边距)
\textbf{关键词:} 关键词并没有标准的独立命令,通常的做法是在摘要内容的末尾,手动换行并使用粗体命令来添加关键词列表

示例


\documentclass{ctexart}
\author{笔者}
\title{摘要的示例}

\begin{document}
\maketitle % 先显示标题

\begin{abstract}
\noindent 本文旨在提供一个关于如何在 LaTeX 中创建摘要和关键词的完整示例,通过使用 \texttt{abstract} 环境,我们可以轻松地生成符合学术规范的摘要部分
    
    \vspace{1ex} % 在摘要和关键词之间增加一点垂直距离
    \noindent\textbf{关键词:} LaTeX;摘要;关键词;学术写作
\end{abstract}

\section{引言}
正文内容

\end{document}

编译结果:

image-20250819183240596

\begin{abstract}...\end{abstract}环境会自动在文档标题下方生成一个居中的摘要标题,并将环境内的文本以特定格式进行排版

在摘要正文结束后,我们使用\vspace{1ex} 增加了一个小间距,然后用\noindent取消了接下来的行缩进,并通过\textbf{关键词:} 创建了加粗的关键词标题

列表环境

列表是组织和呈现条目式信息的有效方式

LaTeX提供了多种列表环境,它们都以\begin{...}开始,以\end{...}结束

列表中的每个项目都由\item命令开始

环境详解

环境名称 列表类型 特点
itemize 无序列表 各项默认使用(实心圆点)作为项目符号
enumerate 有序列表 各项自动编号,默认使用1.2.3. … 作为项目符号
description 描述列表 各项使用\item[标签]自定义标签,标签会加粗显示,适合术语解释

任何列表环境都可以嵌套在另一个列表的\item中,形成多级列表

示例

\section{水果分类}

\begin{description}
    \item[常见水果(描述列表)] 这是一些常见的水果:
        \begin{enumerate}
            \item 苹果(有序列表)
            \item 香蕉
        \end{enumerate}
    
    \item[不常见水果(描述列表)] 这是一些不常见的水果:
        \begin{itemize}
            \item 榴莲(无序列表)
            \item 蛇皮果
        \end{itemize}
\end{description}

编译结果:

image-20250818111246972

最外层是一个description列表,用\item[常见水果]\item[不常见水果]创建了两个带自定义粗体标签的条目

在常见水果条目内部,嵌套了一个enumerate环境,创建了带自动编号1.2.的有序列表

在不常见水果条目内部,嵌套了一个itemize环境,创建了带符号的无序列表

脚注

脚注用于在页面底部对正文内容进行补充说明、注释或提供引文来源

LaTeX 提供了完善的自动化支持,可以自动编号和定位

命令

命令 作用与说明
\footnote{脚注内容} 它会在命令所在的位置插入一个上标数字,
并将花括号{}中的脚注内容自动放置在当前页面的底部
\footnotemark[编号] 只生成上标数字标记,但不生成页面底部的脚注文本
用于\footnote命令无法正常工作的特殊环境
编号可以省略,也可以加上来指定脚注
\footnotetext[编号]{脚注内容} 只生成页面底部的脚注文本,不生成上标标记
通常与\footnotemark配对使用
编号可以省略,省略时自动递增

编号规则

默认编号规则

使用\footnote{}

LaTeX会自动给每个脚注分配连续编号(从 1 开始),编号会根据出现顺序递增

第一条脚注\footnote{内容 A}  
第二条脚注\footnote{内容 B}

image-20250819204954444

使用\footnotemark + \footnotetext

如果不指定编号,\footnotemark会自动使用下一个可用编号,对应的\footnotetext默认使用同一个编号

文字\footnotemark  % 自动分配编号 1
\footnotetext{脚注内容}  % 编号 1

image-20250819205019473

下一个脚注会自动编号2:

字1\footnotemark
\footnotetext{脚注内容1}

字2\footnotemark
\footnotetext{脚注内容2}

image-20250819205812229

一定要在每个标记后紧跟内容(也就是mark+text成对出现),不然footnotetext无法识别新的编号:

字1\footnotemark
字2\footnotemark

\footnotetext{脚注内容1}
\footnotetext{脚注内容2}

image-20250819210030750

\footnotemark使用时,会让当前页脚计数器footnote的值加1

当我们连续两次使用\footnotemark但还没有用\footnotetext,LaTeX会把两次标记都绑定到当前计数器值,因此两个标记都显示为2

手动指定编号

可以在方括号[]里指定编号,编号不会按顺序递增,而是使用我们指定的数字

第一次引用\footnotemark[1]  
第二次引用\footnotemark[5] 

\footnotetext[1]{脚注内容1}
\footnotetext[5]{脚注内容5}

image-20250819205310686

多次引用同一脚注

第一次引用\footnotemark[1],第二次引用同一脚注\footnotemark[1]  
\footnotetext[1]{脚注内容}

image-20250819205353648

特别注意

\footnotemark不增加编号计数,除非与\footnotetext配合

\footnote{}会同时生成标记和内容,计数自动递增

手动编号要小心,避免与自动编号冲突

示例1:常规用法

\LaTeX \footnote{发音为 /`laːtɛx/} 是一种高质量的排版系统

这个系统基于 TeX\footnote{TeX 是排版引擎,而 \LaTeX 是基于 TeX 的宏包}

编译结果:

image-20250819210832146

这里使用的\LaTeX是一个比较好玩的命令,会显示LaTeX的logo

示例2:在表格等特殊环境中使用

tabular环境中,直接使用\footnote 会出错,此时需要\footnotemark\footnotetext 的组合

表格在后面会讲到:创建表格

\begin{table}[h]
    \centering
    \caption{在表格中使用脚注}
    \begin{tabular}{|l|c|}
        \hline
        项目 & 预测数值\footnotemark[1] \\
        拨款博丽神社 & 999999999\footnotemark[2] \\
        \hline
    \end{tabular}
\end{table}
\footnotetext[1]{此数值为初步估算}
\footnotetext[2]{此数值为完全虚构}

编译结果:

image-20250819210650692

插入图片

在 LaTeX 中插入图片通常分为三步:

  1. 加载宏包
  2. 上传图片
  3. 使用figure环境和\includegraphics命令

图片通常被放置在浮动体(figure)环境中,这允许 LaTeX 自动寻找页面上最合适的位置放置图片,避免产生难看的大片空白

准备工作

加载宏包

在导言区必须导入graphicx包:

\usepackage{graphicx}

上传图片

在Overleaf的左侧文件列表中,点击 “Upload” 按钮,上传我们的图片文件

请确保图片文件与.tex文件在同一目录下或在子目录中(此时引用需写明路径,如images/logo.png

figure环境

这是包裹图片及其相关信息(如标题)的容器,下面我们一步步解析构成figure环境的各个命令

\begin{figure}[位置建议符]

**这个命令标志着一个figure浮动环境的开始,注意b

方括号[]中的位置建议符是可选的,我们通过它向LaTeX建议我们希望图片出现的位置

常用的建议符有:

参数 英文含义 说明 常用组合示例 说明
h here 尽可能把浮动体放在当前位置(代码所在位置附近) [h] 单独使用时可能不生效,因为LaTeX仍然会遵循排版规则
t top 尝试把浮动体放在页面顶部 [t] 浮动体优先放在页面顶部
b bottom 尝试把浮动体放在页面底部 [b] 浮动体优先放在页面底部
p page 将浮动体放在一个只包含浮动体的专门页面 [p] 适合大量图表或大表格
! override 忽略部分限制,强制LaTeX尽量遵守指定位置 [!h] 例如[!ht],让LaTeX尽量放在当前位置或顶部
H here absolutely 强制浮动体出现在当前位置,不允许浮动(需float宏包) [H] 完全固定位置,不浮动

我们可以将这些建议符组合使用,例如[htbp],这会告诉LaTeX:

优先尝试放在这里(h),如果不行就放在页顶(t),再不行就放在页底(b),最差的情况就单独放一页(p)

\centering

此命令会使其环境内的内容(在这里就是我们的图片)在页面上水平居中显示

它独占一行,不需要花括号

\includegraphics

这是实际插入图片文件的命令,通常放在figure环境内部

格式:

\includegraphics[可选参数]{图片文件名}
可选参数 功能说明
width=8cm 指定图片的显示宽度为8厘米
width=0.5\textwidth 指定图片的显示宽度为当前文本区域宽度的50%
这是一种更灵活、更推荐的方式,因为它会自动适应不同页面设置
height=6cm 指定图片的显示高度
scale=0.5 将图片缩放至原始尺寸的50%
angle=45 将图片逆时针旋转45度

\caption{图片标题}

这个命令会为我们的图片生成一个带自动编号的标题(例如"图1: 公司Logo")

LaTeX会自动管理编号,我们完全无需担心顺序问题,只需要在花括号{}中写入图片的描述即可

\label{标签名}

该命令为图片设置一个独一无二的标签,用于在正文中进行交叉引用,标签本身不会在文档中显示任何内容

为了便于管理,我们推荐使用fig:作为图片标签的前缀,也就是写成\label{fig:标签名}

设置好标签后,我们就可以在文中的任何地方使用\ref{fig:标签名}来引用这张图片的编号

\end{figure}

这个命令标志着figure环境的结束

示例

\documentclass{ctexart}
\usepackage{graphicx}

\begin{document}

\section{公司简介}

如图 \ref{fig:logo} 所示,这是我们公司的Logo,可爱捏

\begin{figure}[htbp]	
    \centering
    \includegraphics[width=0.4\textwidth]{2.png}
    \caption{公司 Logo}
    \label{fig:logo}
\end{figure}

\end{document}

编译结果:

image-20250818131120411

(确保1.png文件已上传至当前Overleaf项目中,注意文件路径)

  • \begin{figure}[htbp]

    开始一个图片浮动环境,并建议LaTeX将其放置在当前位置、页面顶部或底部

  • \centering

    命令\includegraphics输出的图片将会在可用宽度内居中

  • \includegraphics[width=0.4\textwidth]{logo.png}

    • {logo.png}: 指定要插入的图片文件
    • [width=0.4\textwidth]: 将该图片的显示宽度设置为页面文本宽度的 40%
  • \caption{公司 Logo}

    在图片下方生成带编号的标题

  • \label{fig:logo}

    为该图赋予一个唯一的标签fig:logo

在正文中,如图 \ref{fig:logo} 所示 这句话在编译后会自动变成 “如图 1 所示”,实现了自动引用

创建表格

与图片类似,表格通常被放置在一个叫table的浮动环境中,以便排版和添加标题

而表格的实际内容则由tabular环境构建

对于复杂表格,使用在线表格生成器(如 TablesGenerator.com )可以大大提高效率!

环境与命令

table环境

table环境是表格的浮动容器,其作用和用法与figure环境几乎完全相同,它允许LaTeX自动寻找最佳位置放置表格,其中\begin{table}[htbp]\centering\caption{}\label{}命令的用法也完全一致

为了区分,我们最好使用tab:作为表格标签的前缀,例如\label{tab:my-data}

tabular环境

它就类似图片的\includegraphics,是构建表格内容的主体,所有的文本、数字和分隔线都在这个环境中定义

一般也放在table环境中

\begin{tabular}{列格式定义}

这个命令标志着表格实际内容的开始

它有一个必须填写的参数{列格式定义},由一组特殊的字符构成,用于定义表格有多少列以及每一列的对齐方式

符号 含义 说明
l left 定义一个对齐的列
c center 定义一个居中对齐的列
r right 定义一个对齐的列

例如,{l|c|r} 表示创建一个三列的表格,第一列左对齐,第二列居中,第三列右对齐,列与列之间用竖线隔开

内容和边框

tabular 环境内部,我们使用以下符号和命令来填充内容和绘制线条:

命令 作用/说明
& 列分隔符,用于分隔同一行的不同列,如果一行有n列,则该行应有n-1个&
\\ 行结束符,结束当前行,后续内容将成为新的一行
\hline 水平线命令,绘制贯穿表格所有列的完整水平线,通常放在一行的\\之后,分隔不同的行
\cline{i-j} 局部水平线命令,从第i列左边开始,到第j列右边结束,可精细控制水平线的范围

示例

\documentclass{ctexart}

\begin{document}

\section{幻想乡智力表}


\begin{table}[htbp]
    \centering
    \caption{请输入文本}
    \label{tab:table}
    \begin{tabular}{|c|c|}
         \hline
         \textbf{妖精姓名} & \textbf{智商} \\
         \hline
         大妖精 & 1 \\
         \hline
         露娜 & 1 \\
         \hline
         琪露诺 & 9 \\
         \cline{2-2}
         & 4+5 \\
         \hline
    \end{tabular}
    
表格底下也能写字哈哈,到底能多长长长长长长长长长长呢

\end{table}

该表格的编号是:\ref{tab:table}

和图片一样,引用得到的都是编号

\end{document}

编译结果:

image-20250818183909350

  • \begin{table}[htbp] ... \end{table}

    创建一个表格浮动体

  • \centering, \caption, \label

    分别使表格居中、添加标题和设置引用标签tab:table

  • \begin{tabular}{|c|c|}

    • 开始tabular环境

    • {|c|c|} 定义了表格的格式:最外层有竖线,共两列居中对齐(c),列之间都有竖线(|)

  • \hline

    在表格的顶部、标题行下方和底部绘制了完整的水平分割线

  • \textbf{妖精姓名} & \textbf{智商} \\

    这是表格的标题行,&分隔了三列的内容,\\结束该行,这里还使用了\textbf命令对标题文字加粗

  • 琪露诺 & 9 \\

    这是第三行数据

  • & 4+5 \\

    这是第四行数据,注意,因为姓名这一列的内容与上一行相同,所以第一个 & 前留空即可

  • \cline{2-2}

    绘制了一条第2列的水平线

  • \ref{tab:table}

    引用表格的编号

数学公式

这是LaTeX最强大的功能,也是它在科技写作领域无可替代的原因

准备工作

在开始之前,确保我们在导言区已经加载了amsmath宏包,它是美国数学学会提供的数学公式扩展包

通常,我们还会一并加载amssymb(更多符号)和bm(公式加粗)

\usepackage{amsmath, amssymb, bm}

公式模式

LaTeX提供了多种将文本切换到“数学模式”的方式,主要分为三大类

  1. 行内
  2. 无编号行间
  3. 有编号行间

模式分类

模式类型 代码实现 特点
行内公式 $...$ 公式嵌入在普通文本行中
会为了适应行高而适当压缩公式的大小,例如分数会变小
无编号行间公式 \[...\] 公式会单独成行并居中显示
以标准、清晰的尺寸进行排版,但不带自动编号
有编号行间公式 \begin{equation}
...
\end{equation}
\[...\]类似,但会自动在公式右侧添加一个带括号的编号
可以使用\label加上标签,文中使用\eqre引用其编号
只能写一行公式,要多行必须结合aligned等环境

示例

\documentclass{ctexart}
\usepackage{amsmath}

\begin{document}

\section{勾股定理}

\noindent 勾股定理是一个基本的几何定理,它说明在直角三角形中,两条直角边的平方和等于斜边的平方,即: $a^2 + b^2 = c^2$,这是一个行内公式\\
我们可以将这个关系式单独展示出来,使其更醒目:
\[ a^2 + b^2 = c^2 \]\\
为了方便在后文中引用,我们通常使用带编号的公式环境:
\begin{equation}
    a^2 + b^2 = c^2
    \label{eq:pythagoras}
\end{equation}\\
根据公式 \eqref{eq:pythagoras}(这个编号是引用的喔),我们可以进行后续的计算

\end{document}

编译结果:

image-20250818184121980

  • $...$

    $符号使a^2 + b^2 = c^2 以行内模式插入文本中

  • \[...\]

    \[\]将公式在单独一行中居中显示

  • \begin{equation}...\end{equation}

    这个环境不仅使公式居中独立显示,还在右侧生成了编号(1)

  • \label{eq:pythagoras}

    我们在equation环境内部为这个公式贴上了一个标签eq:pythagoras

  • \eqref{eq:pythagoras}

    在正文中,我们使用\eqref命令引用该标签,LaTeX自动将其替换为带括号的对应编号(1)

常用数学命令

数学符号和结构是通过反斜杠\开头的命令生成的,下面是几类最常用的命令

上下标、根号与撇(求导)

注意: 上下标内容如果多于一个字符,必须用花括号{}包裹!

功能 命令 示例 渲染效果
上标 ^ x^{2y} $x^{2y}$
下标 _ a_{ij} $a_{ij}$
多字符上/下标 ^{...},_{...} x^{n+1}, a_{i,j} $x^{n+1}, a_{i,j}$
同时上下标 _...^... x_i^2 $x_i^2$
局部上下标 \limits \sum\limits_{i=1}^n $\sum\limits_{i=1}^n$
根号 \sqrt{} \sqrt{1+x^2} $\sqrt{1+x^2}$
n次方根 \sqrt[n]{} \sqrt[4]{16} $\sqrt[4]{16}$
连续根号 多重 \sqrt \sqrt{\sqrt{x}} $\sqrt{\sqrt{x}}$
撇(导数) ' f''(x) $f’’(x)$
高阶导数 ^{(n)} f^{(3)}(x) $f^{(3)}(x)$
点记号(微分) \dot{}, \ddot{} \dot{x}, \ddot{y} $\dot{x}, \ddot{y}$

分数

功能 命令 示例 渲染效果
标准分数 \frac{}{} \frac{1}{x+y} $\frac{1}{x+y}$
行间分数 \dfrac{}{} \dfrac{1}{x+y} $\dfrac{1}{x+y}$
行内小分数 \tfrac{}{} \tfrac{1}{2} $\tfrac{1}{2}$
连续分数 嵌套 \frac \frac{1}{1+\frac{1}{x}} $\frac{1}{1+\frac{1}{x}}$
二项式系数 \binom{n}{k} \binom{n}{k} $\binom{n}{k}$
组合公式 \tbinom{n}{k} / \dbinom{n}{k} \dbinom{n}{k}, \tbinom{n}{k} $\dbinom{n}{k}, \tbinom{n}{k}$

常见运算符

功能 命令 示例 渲染效果
求和 \sum \sum_{i=1}^{n} i $\sum_{i=1}^{n} i$
连乘 \prod \prod_{i=1}^{n} x_i $\prod_{i=1}^{n} x_i$
积分 \int \int_{a}^{b} f(x) \, dx $\int_{a}^{b} f(x) , dx$
二重/三重积分 \iint, \iiint \iint_D f(x,y) \, dxdy $\iint_D f(x,y) , dxdy$
极限 \lim \lim_{x \to \infty} \frac{1}{x} $\lim_{x \to \infty} \frac{1}{x}$
并集 \bigcup \bigcup_{i=1}^{n} A_i $\bigcup_{i=1}^{n} A_i$
交集 \bigcap \bigcap_{i=1}^{n} B_i $\bigcap_{i=1}^{n} B_i$
上确界 \sup \sup_{x \in S} f(x) $\sup_{x \in S} f(x)$
下确界 \inf \inf_{x \in S} f(x) $\inf_{x \in S} f(x)$
绝对值 \lvert ... \rvert \lvert a \rvert $\lvert a \rvert$
范数 \Vert ... \Vert \Vert v \Vert $\Vert v \Vert$
上取整 \lceil ... \rceil \lceil 3.2 \rceil $\lceil 3.2 \rceil = 4$
下取整 \lfloor ... \rfloor \lfloor 3.7 \rfloor $\lfloor 3.7 \rfloor = 3$
点乘 \cdot \vec{a} \cdot \vec{b} $\vec{a} \cdot \vec{b}$
向量叉乘 \times \vec{a} \times \vec{b} $\vec{a} \times \vec{b}$

省略符

横向省略号 \dots 1,2,\dots,n $1,2,\dots,n$
横向居中省略号 \cdots a_1 + a_2 + \cdots + a_n $a_1 + a_2 + \cdots + a_n$
纵向省略符号 \vdots 矩阵元素省略 $\vdots$
对角线省略符号 \ddots 矩阵元素省略 $\ddots$

希腊字母

小写 命令 大写 命令
α \alpha Α \Alpha(很少用)
β \beta Β \Beta(很少用)
γ \gamma Γ \Gamma
δ \delta Δ \Delta
ϵ \epsilon Ε \Epsilon(很少用)
ζ \zeta Ζ \Zeta(很少用)
η \eta Η \Eta(很少用)
θ \theta Θ \Theta
ι \iota Ι \Iota(很少用)
κ \kappa Κ \Kappa(很少用)
λ \lambda Λ \Lambda
μ \mu Μ \Mu(很少用)
ν \nu Ν \Nu(很少用)
ξ \xi Ξ \Xi
ο o Ο \Omicron(很少用)
π \pi Π \Pi
ρ \rho Ρ \Rho(很少用)
σ \sigma Σ \Sigma
τ \tau Τ \Tau(很少用)
υ \upsilon Υ \Upsilon
φ \phi Φ \Phi
χ \chi Χ \Chi(很少用)
ψ \psi Ψ \Psi
ω \omega Ω \Omega

关系符

功能 命令 渲染效果
小于等于 \leq $\leq$
大于等于 \geq $\geq$
不等于 \neq $\neq$
近似 \approx $\approx$
恒等 \equiv $\equiv$
相似 \sim $\sim$
成比例 \propto $\propto$
小于 < $<$
大于 > $>$
竖线(用于概率、集合等) \mid $\mid$

逻辑符号

功能 命令 渲染效果
全称量词 \forall $\forall$
存在量词 \exists $\exists$

逻辑与集合符号

符号 命令 渲染效果
空集 \emptyset $\emptyset$
集合元素 \in $\in$
非集合元素 \notin $\notin$
并集 \cup $\cup$
交集 \cap $\cap$
子集 \subset $\subset$
真子集 \subsetneq $\subsetneq$

括号

功能 命令 说明
固定大小 ( ), [ ], \{ \} 尺寸固定,不会随内容变化。输入 {} 需用 \ 转义
自动缩放 \left(...\right) 根据内容自动调整大小,必须成对使用
方括号缩放 \left[...\right] 自动缩放方括号
大括号缩放 \left\{...\right\} 自动缩放大括号
尖括号 \langle ... \rangle 常用于内积
双竖线符号 \Vert 双竖线,常用于范数或矩阵行列式

矩阵

在LaTeX中排版矩阵是一项核心功能,amsmath宏包为此提供了一系列功能强大且使用便捷的环境

这些环境可以自动处理元素的对齐和外层括号的样式

无论使用哪种矩阵环境,内部语法都是统一的:

  • 使用&分隔列,即分隔同一行中的元素
  • 使用\\来结束当前行,并开始新的一行

和表格很像吧

矩阵环境

amsmath提供了多种矩阵环境,它们唯一的区别在于最终呈现时外层使用的括号(分隔符)不同

环境名称 外层括号 常见用途
pmatrix ( ) (圆括号) 用于表示标准的矩阵
bmatrix [ ] (方括号) 同样用于标准矩阵,在一些文献中更常见,也常用于增广矩阵
vmatrix `
Vmatrix ‖ ‖ (双竖线) 专门用于表示矩阵或向量的范数
matrix (无括号) 只排列元素,不添加外层括号
当你需要使用特殊的括号(如{ })或根本不需要括号时使用
smallmatrix (无括号) 用于在行内创建小型矩阵
例如$A = \begin{smallmatrix} 1 & 0 \ 0 & 1 \end{smallmatrix}$

矩阵中的省略号

命令 方向 用途
\cdots 水平 (Horizontal) 用于省略中的元素
\vdots 垂直 (Vertical) 用于省略中的元素
\ddots 对角 (Diagonal) 用于省略对角线上的元素

示例

\documentclass{ctexart}
\usepackage{amsmath}

\begin{document}

\section{矩阵示例}

一个 3x3 的矩阵 A 可以用 \texttt{pmatrix} 表示:
\[
A = 
\begin{pmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9
\end{pmatrix}
\]

一个 2x2 的行列式可以用 \texttt{vmatrix} 表示:
\[
\det(B) =
\begin{vmatrix}
    x & y \\
    z & w
\end{vmatrix}
\]

一个 n 阶的单位矩阵 $I_n$ 可以用 \texttt{bmatrix} 和省略号清晰地表示:
\[
I_n = 
\begin{bmatrix}
    1      & 0      & \cdots & 0      \\
    0      & 1      & \cdots & 0      \\
    \vdots & \vdots & \ddots & \vdots \\
    0      & 0      & \cdots & 1
\end{bmatrix}
\]

\end{document}

编译结果:

image-20250819112856760

矩阵 A:

  • \begin{pmatrix}\end{pmatrix} 创建了一个外层为圆括号的矩阵环境
  • 1 & 2 & 3 \\定义了矩阵的第一行:123三个元素由&分隔,\\表示此行结束。后续行同理

行列式 det(B):

  • \begin{vmatrix}\end{vmatrix}创建了一个外层为单竖线的环境,这正是行列式的标准数学符号

单位矩阵 I_n:

  • \begin{bmatrix}\end{bmatrix}创建了一个外层为方括号的环境
  • \cdots被用来表示第一行和第二行中间被省略的0
  • \vdots被用来表示各列中间被省略的0
  • \ddots巧妙地表示了从左上到右下的对角线上被省略的1
  • 通过这些省略号命令的组合,我们能够清晰地表达任意大小的通用矩阵

多行公式对齐

对于较长的公式推导或一组需要对齐的方程,必须将其拆分为多行以保证清晰可读

amsmath宏包为此提供了多种功能强大的环境,核心控制语法是:

  • 使用&标记对齐点
  • 使用\\换行

哦,还是表格的用法

环境详解

不同的环境主要区别在于编号方式对齐能力

环境名称 编号方式 核心特点与用途
aligned 整体一个编号 本身不产生编号,提供对齐功能
必须嵌套在其他数学环境(如equation, \[...\])中使用
split 整体一个编号 aligned几乎相同,但长公式换行时编号的位置在公式中间
必须嵌套在其他数学环境(如equation, \[...\])中使用
gather 每行独立编号 用于将一组不需要对齐的公式堆叠在一起
每行都会居中并获得一个独立的编号
align 每行独立编号,
可灵活对齐
允许像写一个两列的表格一样对齐公式(在&处对齐)
每行默认都会获得一个编号
align* 完全无编号 align的无编号版本,功能完全相同,但所有行都不会产生编号

控制编号

align / gather等逐行编号的环境中,如果不希望某一行显示编号,可以在该行的\\之前使用以下命令:

  • \notag

  • \nonumber

示例1:aligned环境

\documentclass{ctexart}
\usepackage{amsmath}

\begin{document}
\section{公式推导}
二次展开式的推导过程如下:
\begin{equation}
\label{eq:expand}
\begin{aligned}
    (a+b)^2 &= (a+b)(a+b) \\
             &= a^2 + ab + ba + b^2 \\
             &= a^2 + 2ab + b^2
\end{aligned}
\end{equation}
整个过程由公式 \eqref{eq:expand} 概括
\end{document}

编译结果:

image-20250819114400200

  • \begin{equation}

    最外层是equation环境,意味着内部的所有内容,无论有多少行,都将作为一个整体,共享一个编号

  • \begin{aligned}

    内部的aligned环境是实际负责对齐工作的

  • &=

    每一行的=前面都放置了对齐符&,使得三行公式的等号在垂直方向上对齐(实际是&被对齐了)

  • \\

    在第一行和第二行的末尾用于换行

示例2:align环境

\documentclass{ctexart}
\usepackage{amsmath}
\begin{document}
\section{方程组}
我们有如下一组基本方程:
\begin{align}
    a_1 x + b_1 y &= c_1 \label{eq:line1} \\
    a_2 x + b_2 y &= c_2 \notag \\
    E &= mc^2 \label{eq:emc2}
\end{align}
其中,方程 \eqref{eq:line1}\eqref{eq:emc2} 是最重要的
\end{document}

编译结果:

image-20250819114842390

  • \begin{align}

    这个环境会默认给每一行分配一个编号

  • &=

    &同样被放在=前面,使得三行公式的等号对齐

  • \label{eq:line1}

    我们可以在任意行后面添加\label以引用这行的编号,而不是在整个环境中

  • \notag

    在第二行的\\前,我们加入了\notag命令,阻止LaTeX为这一行生成编号

学术写作

定理类环境

在数理、计算机等学科的写作中,需要频繁使用“定理”、“引理”、“定义”等结构化论述

amsthm 宏包为此提供了标准化的解决方案。

定义新环境:\newtheorem

在使用定理环境前,必须先在导言区用\newtheorem命令进行定义它

\newtheorem{新环境名}[共享环境名]{显示标题}[编号层级]

常用用法:

语法 说明
\newtheorem{环境名}{显示标题} 定义一个全新的、独立编号的环境
\newtheorem{环境名}{显示标题}[编号层级] 使该环境的编号与某个层级关联
最常用的是[section],表示编号为[章节号].[定理号],且每章重新从1开始
\newtheorem{新环境名}[共享环境名]{显示标题} 使新环境与某个已定义的环境共享同一个编号序列

在正文中使用

用法 说明
\begin{环境名} ... \end{环境名} 开始一个标准的定理环境
\begin{环境名}[自定义标题] ... \end{环境名} 在方括号中添加的标题,会显示在编号后的括号里
\begin{proof} ... \end{proof} amsthm 提供的标准证明环境
会自动以证明.开头,并以一个 Q.E.D. 方块结尾

示例

\documentclass{ctexart}
\usepackage{amsthm}

\newtheorem{theorem}{定理}[section]       % 定理环境,编号与 section 关联
\newtheorem{lemma}[theorem]{引理}        % 引理环境,与 theorem 共享编号
\newtheorem{corollary}[theorem]{推论}     % 推论环境,与 theorem 共享编号
\newtheorem{definition}{定义}                    % 定义环境,独立编号

\begin{document}
\section{主要结果}
我们首先给出一个关键定义:
\begin{definition}
    这个定义很关键
\end{definition}

然后是本节的核心定理:
\begin{theorem}[勾股定理] \label{thm:pythagoras}
    在一个直角三角形中,两条直角边的平方和等于斜边的平方
\end{theorem}

\begin{proof}
    证明过程略
\end{proof}

基于定理 \ref{thm:pythagoras},我们有一个直接的引理
\begin{lemma}
    这是一个直接的引理
\end{lemma}

我们还有一个推论:
\begin{corollary}
	这是一个推论
\end{corollary}

\end{document}

image-20250819141257071

定义解释:

  • \newtheorem{theorem}{定理}[section]

    创建了theorem环境,显示为“定理”,编号格式为 [章节号].[定理号] (如 1.1, 1.2 …)

  • \newtheorem{lemma}[theorem]{引理} & \newtheorem{corollary}[theorem]{推论}

    创建了lemmacorollary环境,它们和theorem使用同一个计数器

  • \newtheorem{definition}{定义}

    创建了 definition 环境,它自己独立编号 (如 1, 2, 3 …)

使用解释:

  • 第一个definition显示为 “定义 1”
  • theorem环境因为有[勾股定理],所以显示为 “定理 1.1 (勾股定理)”
  • proof环境自动添加了 “证明.” 和结尾的符号
  • 由于lemmacorollarytheorem共享编号,所以接下来的lemma显示为 “引理 1.2”,corollary显示为“推论1.3”

交叉引用

在LaTeX的手稿修改过程中,章节和图表的编号随时可能变化,要是让我们手动更新这些编号,等死就可以了

好在LaTeX的交叉引用机制就很好解决了这个问题,我们之前也有提到过

其原理是:

  • 为想要引用的、带编号的元素(章节、图片、表格、公式等)设置一个独一无二的标签(\label)
  • 在需要引用的地方,通过这个标签来提取它对应的编号 (\ref) 或页码 (\pageref)

核心命令

命令 作用与说明
\label{标签名} 在一个带编号的元素后面设置一个看不见的标记
标签名在文档中必须是唯一的
\ref{标签名} 在文本中插入该标签对应的元素编号
例如,如果\label{fig:flow}跟着图2的标题,那么\ref{fig:flow}就会显示为2
\eqref{标签名} amsmath宏包提供的\ref变体,专用于引用公式
它会自动在编号两侧加上括号,例如(2)
\pageref{标签名} 在文本中插入该标签所在的页码

推荐的标签规范

为了避免标签名混乱和冲突,强烈推荐使用带前缀的命名方式:

元素类型 推荐前缀 示例
章 (Chapter) ch: \label{ch:background}
节 (Section) sec: \label{sec:methodology}
图片 (Figure) fig: \label{fig:results_chart}
表格 (Table) tab: \label{tab:comparison}
公式 (Equation) eq: \label{eq:main_theorem}
定理 (Theorem) thm: \label{thm:pythagoras}

示例

\documentclass{ctexart}
\usepackage{amsmath}
\usepackage{graphicx}

\begin{document}

\section{随便写写} \label{sec:intro}
本文介绍一下交叉引用

\begin{equation}
    E = mc^2 \label{eq:emc}
\end{equation}

\section{方法}
在章节 \ref{sec:intro} 中,我们已经提出了核心思想。图 \ref{fig:placeholder} +1=2


公式 \eqref{eq:emc}它位于第 \pageref{eq:emc} 页。

\begin{figure}[h]
    \centering
    \includegraphics[width=0.4\textwidth]{2.png}
    \caption{老图}
    \label{fig:placeholder}
\end{figure}

\end{document}

编译结果:

image-20250819122913418

定义标签:

  • \section{引言}后面,我们用\label{sec:intro}将其标记
  • equation环境中,我们用\label{eq:emc}标记了公式
  • figure环境的\caption之后,我们用\label{fig:placeholder}标记了图片

引用标签:

  • 章节 \ref{sec:intro}在编译后会显示为 “章节 1”
  • 图 \ref{fig:placeholder}会显示为 “图 1”
  • 公式 \eqref{eq:emc}会显示为 “公式 (1)”
  • 第 \pageref{eq:emc} 页会显示为 “第 1 页”

如果我们在“随便写写”前再增加一个新的章节,那么原“随便写写”的编号会自动变为 2,而代码中所有 \ref{sec:intro}的地方,输出也会自动更新为2,无需任何手动修改

参考文献

BibTeX是LaTeX的标准参考文献管理系统,它将文献数据与排版样式彻底分离,实现了参考文献的完全自动化

工作流程:

  1. 创建一个.bib数据库文件,存放所有文献信息
  2. .tex文档的正文中,用\cite{}命令引用文献
  3. .tex文档中指定引用的样式和.bib文件的位置
  4. LaTeX编译器会自动完成文献的排序、格式化和列表生成

工作流程详解

创建.bib数据库文件

在Overleaf左侧文件栏,点击New File新建文件,命名为.bib后缀

这是一个纯文本文件,用于存储文献条目

添加文献条目

我们可以从Google Scholar、知网或各种学术数据库中直接导出BibTeX格式的条目,然后粘贴到.bib文件中

这部分通常不用我们自己写,做个了解就行

条目格式:

@类型{引用密钥,
    字段 = {},
    ...
}
常用类型 说明 常用字段 说明
@article 期刊文章 authortitleyear 作者, 标题, 年份
@book 书籍 journalvolumepages 期刊名, 卷, 页码
@inproceedings 会议论文集中的一篇 publisheraddress 出版社, 地址
@phdthesis 博士论文 doiurl 数字对象标识符, 网址

示例:

@article{einstein1905,
    author  = {Albert Einstein},
    title   = {Zur Elektrodynamik bewegter Körper},
    journal = {Annalen der Physik},
    year    = {1905},
    volume  = {322},
    pages   = {891--921},
}

这里的einstein1905就是这篇文献独一无二的引用密钥

在主文档中设置并引用

命令 作用 放置位置
\bibliographystyle{样式} 设置参考文献的格式
常用样式有:
plain (按字母排序)
unsrt (按引用顺序)
alpha (作者+年份)
abbrv (缩写)
文档末尾,\bibliography之前
\cite{引用密钥} 在正文中引用一篇或多篇文献 正文任意位置
\bibliography{文件名} 指定.bib文件的位置,并在此处生成参考文献列表
注意,文件名不用带.bib后缀
文档末尾,\end{document}之前

示例

main.tex 文件:

\documentclass{ctexart}

\begin{document}
\section{引言}

引用文献1:\cite{张健2008精确的程序静态分析}

引用文献2:\cite{何伟渔1994语法的静态分析和动态分析}

\bibliographystyle{plain}
\bibliography{text}

\end{document}

references.bib 文件:

@phdthesis{张健2008精确的程序静态分析,
  title={精确的程序静态分析},
  author={张健 and others},
  year={2008}
}
@article{何伟渔1994语法的静态分析和动态分析,
  title={语法的静态分析和动态分析},
  author={何伟渔},
  journal={上海师范大学学报: 哲学社会科学版},
  number={3},
  pages={100--106},
  year={1994}
}

编译结果:

image-20250819134920517

  • 在正文中,\cite{何伟渔1994语法的静态分析和动态分析}\cite{张健2008精确的程序静态分析}会被LaTeX替换为[1][2],因为plain样式是按作者字母排序的,这里我直接使用.bib文件的顺序,就是反着的

  • \bibliography{references}命令会扫描全文,发现只有这两篇文献被引用了

  • LaTeX会自动读取references.bib文件中这两篇文献的数据,并根据plain样式,在文末生成一个格式化、排序好的参考文献列表,标题都不用写


和所有语言一样,只会语法是远远不够的,一定得多上手编排一些文章进行练习,积累经验!

下面是一些LaTeX练习网站,感兴趣可以看看:

TEXnique :互动式LaTeX编程游戏,需要在限定时间内用LaTeX代码实现它给出的公式

LaTeX.org练习与解答 :LaTeX.org的论坛中有用户分享的练习题和解答,内容涉及数学公式、文档结构等方面

最后更新于 2025-08-24
距离小站第一行代码被置下已经过去
使用 Hugo 构建
主题 StackJimmy 设计
...当然还有kakahuote🤓👆