【学习笔记】LaTeX 小记
本文重构于 2026.06.23:以新的理解重新调整了这篇文章。
reference:
- 南方科技大学《LaTeX 入门》:https://lib.sustech.edu.cn/2021/0707/c60a4857/page.htm
- 复旦大学《现代 LaTeX 入门讲座》:https://github.com/stone-zeng/latex-talk
- lshort-zh-cn.pdf 网页版:http://texpage.com/docs/zh/learning/
- Overleaf 帮助文档:https://cn.overleaf.com/learn
声明:本学习笔记内容浅薄,仅作为入门使用。进阶的 LaTeX 用法需要进一步研究。
推荐将所有示例中的代码放到编译器中运行一遍,体验一下展示的效果。
熟悉 LaTeX
LaTeX 是一门专业的排版系统(标记语言),使用代码描述文档结构与格式,然后系统编译生成高质量的排版文档。由于 LaTeX 全程使用代码编写(纯文本格式),这使得 AI 可以轻松地指导 LaTeX 编写,我们要学会善用 AI 工具。
LaTeX 可以非常优雅地排版复杂公式,适用于生成高印刷质量的科技和数学类文档。
在如今这个 AI 工具如此发达的时代,是否需要精进掌握 LaTeX 还是五五之说,不过至少要做到可以 Vibe Coding。
下面是一些概念的介绍:
TeX:是 Donald Knuth 发明的排版系统,主要用来进行高质量的文字和数学公式排版。相当于是“底层排版系统”。
LaTeX:是建立在 TeX 上的“工具包”,可以简单理解成 LaTeX 是对 TeX 对一层封装。LaTeX 让用户不必直接处理太多底层排版细节,而是用更接近文档结构的方式写作。
LaTeX 发行版:一个将各种排版引擎、编译脚本、格式转换工具、管理界面、配置文件、支持工具、字体以及数以千计的宏包和文档,集合起来打包发布的软件。
本地 LaTeX 编辑器:TeX Live + VS Code
在本地进行 LaTeX 写作,需要 LaTeX 发行版(TeX Live)和本地 LaTeX 编辑器(VS Code / TeX Studio)配合使用。编辑器通常不负责真正的排版编译,而是调用 LaTeX 发行版中的工具完成文档生成。
TeX Live:是由 TUG(TeX User Group)发布的,目前使用最为广泛的 LaTeX 发行版,支持 Windows、Linux 和 macOS。其中 macOS 上有一套独立的发行版,称为 MacTeX。
TeX Live 安装 reference:
- https://www.cnblogs.com/eslzzyl/p/17358405.html
- https://tug.ctan.org/info/install-latex-guide-zh-cn/install-latex-guide-zh-cn.pdf
VS Code + LaTeX Workshop:先安装 VS Code,再在 VS Code 的扩展商店中搜索并安装 LaTeX Workshop。
然后在你打开 .tex 文件之时,就可以在左侧的导航栏,找到 TEX 一栏,里面有两个主要的命令:
- 「构建 LaTeX 项目」:编译该
.tex文件,导出成.pdf文件。可以理解成编译运行,注意要选对编译方式。 - 「查看 LaTeX PDF」:查看导出的
.pdf文件。
怎么编译?:
- 如果你使用编辑器:你可以使用编辑器提供的“编译”按钮(例如 VS Code 就要点上面提到的「构建 LaTeX 项目」)。
- 如果你使用命令行:则需要打开 Windows 的命令行或类 Unix 的终端,在项目所在的目录下输入
pdflatex <项目名>或xelatex <项目名>等等。前面的项表示编译方式,后面的项表示项目名称(可以省略.tex后缀)。
在线 LaTeX 编辑器:Overleaf / OnlineLaTeX
在线编辑器有许多优点:无需在意环境、实时预览、在线访问、版本控制、丰富的模板库。
推荐新手使用,不用折腾许多环境问题。
Overleaf:https://cn.overleaf.com/
不过免费版本编译时长限制为 \(10\)s,除了大型论文外肯定够用了。
OnlineLaTeX:https://www.onlinelatex.com/home/
LaTeX 文档基础
命令、环境、分组
命令:简单命令的格式形如
\命令[可选参数]{必选参数}
LaTeX 的命令对大小写敏感!
环境:用以令一些效果在局部生效,或是生成特殊的文档元素。LaTeX 环境的用法为一对命令 \begin{} 和 \end{}
\begin{环境名}[可选参数]{必选参数}
...
\end{环境名}
分组:使用一对花括号 {} 进行分组。分组可以限制命令的作用范围,使其只在局部生效,不影响分组外的内容。
示例:
这是普通文字,{\bfseries 这是加粗文字},这里又恢复普通文字。
基础结构
LaTeX 文档结构:导言区 + 文档内容。
\documentclass[a4paper]{article} % 文档类型(如 article, report, book, beamer)
% 导言区开始
\usepackage{graphicx} % 引用宏包
\graphicspath{{image/}} % 设置图片目录
% 导言区结束
\begin{document}
% 正文内容从这里开始
\end{document}
文档内容:文档的正文内容,包含在 \begin{document} 与 \end{document} 这两个标签之间。
导言区:\begin{document} 之前 .tex 文件中的所有内容都被成为导言区。在导言区中,你可以定义文档的类型、定义你所使用的语言、定义你想引入的宏包,以及许多其他的模块。
\documentclass{}:声明了文档类型(称为文档类),控制文档的整体外观。不同类型的文档需要不同的文档类。\usepackage{}:引用宏包,以增强或扩充 LaTeX 的功能。- ...
组织方式
当编写长篇文章时,单个源文件会使修改、校对变得十分困难。将源文件分割成若干个文件,例如将每章内容单独写在一个文件中,会大大简化修改和校对的工作。
\include{<文件名>}:用于在源代码中插入文件(按“完整章节”导入)。\include前后会自动执行\clearpage,因此通常每个文件开始与结束会另起一页。- 每个被包含文件会生成独立的
.aux辅助信息。 - 不能嵌套使用
\include。
\input{<文件名>}:用于在源代码中插入文件(直接嵌入内容)。- 纯粹地将文件中的内容插入,不会自动分页。
- 不会生成独立的辅助文件。
- 可以嵌套使用
\input。
注意:这里的 <文件名> 必须是不带 .tex 后缀的文件名(虽然 \input 就算带后缀好像也无妨)。
文件路径
在编写文章时,会涉及到对文件的引用(例如上面提到的 \include 与 \input),本地文件的路径分为绝对路径与相对路径。
建议将主文件、章节、图片、参考文献和宏定义分别置于清晰的子目录中,并优先使用相对路径。这样整个项目移动、压缩或提交给他人时,通常无需修改 LaTeX 源码。
文件路径分隔符:
- Windows:默认使用反斜杠
\作为路径分隔符,但内核支持两种分隔符(\与/均可)。 - Linux/Unix/macOS:一律使用正斜杠
/作为路径分隔符(反斜杠\在 Shell 里是转义字符,不会被识别为路径分隔符)。
不论是在 Windows 或 Linux 环境下,都建议统一使用 / 作为路径分隔符,TeX 引擎内部会把 / 转化成对应系统的路径分隔符。
By the way:在 LaTeX 中,反斜杠 \ 是命令起始符,不是路径分隔符。若想使用反斜杠必须转义 \\。
绝对路径:从文件系统的根目录 / 开始、能够唯一定位文件的完整路径。
示例:
% Windows
\input{C:/Users/Alice/Documents/Thesis/chapters/introduction}
% Linux/macOS
\input{/home/alice/thesis/chapters/introduction}
相对路径:以当前编译的主 .tex 文件所在目录为参考,描述目标文件的路径。
.表示当前目录,在很多情况下可以省略。..表示上一级目录,例如../表示当前目录的父目录。
示例:
\include{chapters/introduction}
\include{chapters/method}
% 与 \include{chapters/...} 相同
\include{./chapters/introduction}
\include{./chapters/method}
% 上一级目录下的 shared 文件夹中的 macros.tex 文件
\input{../shared/macros}
路径规范:LaTeX 的文件路径中尽量不要有中文、空格、特殊符号。
对 \input 而言,添加双引号 "" 可能可用。
示例:
\input{"/Users/calculatelove/Courses-FZU/430 大二秋冬/433 人工智能代数学基础/FinalProject/work"}
对 \include 而言,不能简单靠双引号解决。
LaTeX 个人常用宏包
\usepackage{ctex} % 提供中文排版支持,并适配 XeLaTeX / LuaLaTeX 等中文文档环境
\usepackage{unicode-math} % 使用 Unicode 方式设置和调用数学字体,通常需 XeLaTeX 或 LuaLaTeX 编译
\usepackage{amsmath} % 扩展数学公式排版功能,如多行公式、对齐环境和常用数学命令
\usepackage{latexsym} % 补充 LaTeX 默认未提供的一部分数学符号
\usepackage{xcolor} % 提供文字、表格、背景等颜色设置功能
\usepackage{graphicx} % 支持插入、缩放、旋转和裁剪图片
\usepackage{multicol} % 提供多栏排版环境,适合文章正文或题目分栏
\usepackage{booktabs} % 提供三线表等更美观、规范的表格线命令
\usepackage{enumitem} % 自定义列表的缩进、编号样式、间距和标签格式
\usepackage{calligra} % 提供 Calligra 英文手写字体
\usepackage{listings} % 支持基础代码排版与语法高亮,无需额外编译权限
\usepackage{minted} % 基于 Pygments 提供更丰富的代码高亮,编译时通常需启用 -shell-escape
\usepackage{stackengine} % 支持文字、符号和图形的堆叠、叠放与组合排版
\usepackage{indentfirst} % 使各章节后的首段也自动进行首行缩进
\usepackage{ulem} % 提供下划线、删除线、波浪线等文本修饰命令
\usepackage{hyperref} % 为目录、引用、网址和交叉引用生成可点击超链接
ctex:提供对中文的支持
LaTeX 本身不直接支持中文。
ctex 为中文文档提供了较为完整的支持:包括中文字体设置、中文标点处理、章节标题格式、日期格式以及中英文混排等功能。使用它之后,用户通常不需要手动配置复杂的 CJK 字体环境,就可以较方便地在 LaTeX 文档中输入和排版中文内容。
源代码文件应保存为 UTF-8 编码,推荐使用 xelatex 或 lualatex 编译。
Linux 与 macOS 环境下需要注意字体问题。
LaTeX 标题页
标题:\title{}
作者:\author{}
日期:\date{}。你可以手动地输入日期,或使用 \today 指令(\date{\today})。
现在你已经定义了文档的标题、作者、日期,你可以使用 \maketitle 指令来让这些命令生效。
示例:
\documentclass{article}
\title{Basis of Data Structure}
\author{C.L.}
\date{\today}
\begin{document}
\maketitle % 生成标题
What we are going to introduce is the Basis of data structure.
\end{document}
通常可以结合使用 \newpage 来使得标题页独占一页。
LaTeX 文档结构
摘要
摘要:常见格式为
\begin{abstract}
本文简要介绍 ... % 摘要
\end{abstract}
常常用于简要概述或总结本文的核心主题或论点。
标准文档类中,article 和 report 通常支持 abstract,而 book 默认没有 abstract 环境。
章节层次
章节层次:LaTeX 的章节层次从高到低分别是
| 层次 | 含义 |
|---|---|
\part |
部、篇 |
\chapter |
章(仅 book/report 有,article 没有) |
\section |
节(一级标题) |
\subsection |
小节(二级标题) |
\subsubsection |
小小节(三级标题) |
\paragraph |
段标题(行内标题) |
\subparagraph |
子段标题(行内标题) |
目录
小提示:目录至少要编译两遍才能稳定显示。
目录:可以使用 \tableofcontents 生成目录,带章节标号与页码。
示例:
\tableofcontents
\part{数据结构}
\section{线段树}
\subsection{普通线段树}
\subsubsection{势能线段树}
\paragraph{Segment Tree Beat!} 这段文字会接在标题后面。
LaTeX 文本标记
注释
注释:注释是一种不会出现在最终输出文档的文字。常用于组织文档、添加笔记、临时屏蔽内容和调试代码。
使用 % 添加注释,会注释掉从它出现的位置到该行行尾的内容。
示例:
This is text. % This is a comment.
如果需要注释多行,则每一行都需要添加 %。
加粗、斜体、下划线、删除线
加粗:\textbf{} 或 {\bfseries ...}
斜体:\textit{} 或 {\itshape ...}
下划线:\underline{}
删除线:\sout{}(需要使用 ulem 宏包)。
示例:
This is normal text.
\textbf{This is bold text.}
{\bfseries This is also bold text.}
\textit{This is italic text.}
{\itshape This is also italic text.}
\underline{This is underlined text.}
\sout{This is deleted text.}
混合使用示例:
\textbf{This sentence is bold, and \textit{this part is italic}.}
\textit{This sentence is italic, and \textbf{this part is bold}.}
\underline{This is underlined, and \textbf{this part is bold}.}
\sout{This text is deleted, but \textbf{this part is still bold}.}
颜色
需要使用宏包 xcolor,使用 \usepackage[dvipsnames]{xcolor} 可以载入更多预定义颜色。
文本颜色:\textcolor{<颜色>}{<文本>} 或 {\color{<颜色>} 文本},也可以给公式上色。
文本背景颜色:\colorbox{<颜色><文本>}
带边框的文本背景颜色:\fcolorbox{边框颜色}{背景颜色}{文本}
颜色混合:颜色A!比例!颜色B,例如 red!40!blue 表示 \(40\%\) 的红色与 \(60\%\) 的蓝色混合。
示例:
\textcolor{red}{这是一段红色文本。}
\textcolor{blue}{这是一段蓝色文本。}
\textcolor{green!40!black}{这是一段偏深绿色文本。}
\[
\textcolor{blue}{x^2} + \textcolor{red}{y^2} = z^2
\]
{\color{purple} 这一整句话都是紫色的。}
{\color{orange} 这一整句话都是橙色的。}
\colorbox{yellow}{这是黄色背景的文本。}
\colorbox{cyan}{这是青色背景的文本。}
\colorbox{green!20}{这是浅绿色背景的文本。}
\fcolorbox{red}{yellow}{这是红色边框、黄色背景的文本。}
\fcolorbox{blue}{white}{这是蓝色边框、白色背景的文本。}
\fcolorbox{black}{green!20}{这是黑色边框、浅绿色背景的文本。}
\colorbox{black}{\textcolor{white}{这是黑底白字。}}
\fcolorbox{red}{black}{\textcolor{white}{这是红框、黑底、白字。}}
自定义颜色:\definecolor{颜色名}{颜色模型}{颜色值},常见的颜色模型有
\definecolor{颜色名}{RGB}{红,绿,蓝} % 每个值的范围是 0~255
\definecolor{颜色名}{rgb}{红,绿,蓝} % 每个值的范围是 0~1
\definecolor{颜色名}{HTML}{十六进制颜色} % 例如 1E5AB4
\definecolor{颜色名}{gray}{灰度值} % 灰度值的范围是 0~1
\definecolor{颜色名}{cmyk}{青,品红,黄,黑} % 每个值的范围是 0~1
定义颜色之后,颜色名就可以像 red 一样使用。
示例:
% 导言区
\definecolor{myblue}{RGB}{30,90,180}
\definecolor{myred}{rgb}{0.8,0.2,0.2}
\definecolor{mygreen}{HTML}{2E8B57}
\definecolor{mygray}{gray}{0.5}
\definecolor{myprintblue}{cmyk}{1,0.5,0,0}
% 正文
\textcolor{myblue}{这是使用 RGB 模型定义的蓝色文本。}
\textcolor{myred}{这是使用 rgb 模型定义的红色文本。}
\textcolor{mygreen}{这是使用 HTML 模型定义的绿色文本。}
\textcolor{mygray}{这是使用 gray 模型定义的灰色文本。}
\textcolor{myprintblue}{这是使用 cmyk 模型定义的蓝色文本。}
字号
| 命令 | 相对大小(从小到大) | 默认 10 pt 文档下的大致字号 |
|---|---|---|
\tiny |
最小 | 5 pt |
\scriptsize |
很小 | 7 pt |
\footnotesize |
脚注大小 | 8 pt |
\small |
小 | 9 pt |
\normalsize |
正常(默认) | 10 pt |
\large |
稍大 | 12 pt |
\Large |
大 | 14.4 pt |
\LARGE |
很大 | 17.28 pt |
\huge |
次大 | 20.74 pt |
\Huge |
最大 | 24.88 pt |
示例:
{\tiny Text}
{\scriptsize Text}
{\footnotesize Text}
{\small Text}
{\normalsize Text}
{\large Text}
{\Large Text}
{\LARGE Text}
{\huge Text}
{\Huge Text}
字体
LaTeX 普通正文默认使用罗马字体族的中等字重、直立字形的衬线字体。在经典设置下,具体字体通常是 Computer Modern Roman。
LaTeX 常用字体族命令:
- 罗马字体:
\textrm{}或{\rmfamily ...} - 无衬线字体:
\textsf{}或{\sffamily ...} - 等宽字体:
\texttt{}或{\ttfamily ...}
切换字体:{\fontfamily{...}\selectfont ...}(二者必须连用)
\fontfamily{...}:声明选择的字体族。\selectfont:用于实际切换上述选择的字体。
示例:
% 导言区
\usepackage{fontspec}
\newfontfamily\msyhen{Microsoft YaHei}
\newCJKfontfamily\msyhcn{Microsoft YaHei}
% 正文
\textrm{这是罗马字体。}
\textsf{这是无衬线字体。}
\texttt{This is typewriter text.}
{\msyhcn 这是一段使用微软雅黑显示的中文文本。} % 注意 Overleaf 上没有微软雅黑
{\msyhen This is English text in Microsoft YaHei.}
LaTeX 数学公式
需要使用宏包 amsmath。
LaTeX 的数学内容必须写在数学模式中。
行内公式:用单个美元符号 $ ... $ 包围起来的内容(也可以写成 \( ... \))。
单行公式:
\[ ... \]包围起来的内容:不自动编号的单行公式。equation环境内的公式:自动编号的单行公式,使用equation*环境可以取消自动编号。
不推荐使用 $$ ... $$ 包围起来的内容:是 Plain TeX 遗留写法。它在许多情况下仍能编译,但可能产生不一致的公式间距,并且不适合与现代 LaTeX 数学环境混用,在多数学术期刊模板中被禁止。
最好不要尝试在单行公式中编写多行公式,很多编译器在上述的环境中不处理 \\。
多行公式:
align环境内的公式:每一行在某一位置对其的多行公式,自动编号。gather环境内的公式:每一行整体居中的多行公式,自动编号。- 使用
align*和gather*环境可以取消自动编号,使用\notag可以取消某一行编号。
示例:
这是一个行内公式 $e^{ix} = \cos(x) + i \sin(x)$,这是另一个行内公式 \(a^2 + b^2 = c^2\)。
\[
f(n) = \sum\limits_{i = m}^n \binom{n}{i} g(i) \iff g(n) = \sum\limits_{i = m}^n (-1)^{n - i} \binom{n}{i} f(i)
\]
\begin{equation}
E = mc^2
\end{equation}
\begin{align}
\complement_U (A \cap B) = \complement_U A \cup \complement_U B \\
\complement_U (A \cup B) = \complement_U A \cap \complement_U B
\end{align}
\begin{align}
\sum_{i = 1}^n\sum_{j = 1}^i A^j_iA^{n - j}_{m - j} & = \sum_{i = 1}^n\sum_{j = 1}^i \frac{i!}{(i - j)!}\frac{(m - j)!}{(m - n)!} \\
& = \sum_{j = 1}^n \frac{(m - j)!}{(m - n)!}\sum_{i = j}^n \frac{i!}{(i - j)!} \\
& = \sum_{j = 1}^n \frac{(m - j)!j!}{(m - n)!}\sum_{i = j}^n \frac{i!}{(i - j)!j!} \\
& = \sum_{j = 1}^n \frac{(m - j)!j!}{(m - n)!}\sum_{i = j}^n \binom{i}{j} \\
& = \sum_{j = 1}^n \frac{(m - j)!j!}{(m - n)!}\binom{n + 1}{j + 1}
\end{align}
\begin{gather}
\nabla \cdot \mathbf{E} = \frac{\rho}{\varepsilon_0} \\
\nabla \cdot \mathbf{B} = 0 \\
\nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} = \mu_0 \mathbf{J}
+ \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t}
\end{gather}
此处应有一大段关于数学公式的细节介绍,但由于笔者在使用 markdown 时已经记清楚了个大概,就不再赘述。
数学公式的查找:
- https://www.luogu.com.cn/article/1gxob6zc
- 在终端运行
texdoc symbols查看符号表(下载 TeX Live 后)。
LaTeX 列表
reference:https://cn.overleaf.com/learn/latex/Lists
列表:常见格式为
\begin{<列表类型>}
\item
\item
\item
\end{<列表类型>}
- 在 LaTeX 中有许多类型的列表,最常见的三种列表类型为:
- 无序列表:
itemize - 有序列表:
enumerate - 描述性列表:
description
- 无序列表:
\item:用来列举列表中的其中一项。\item[<描述>]:用来列举列表中的其中一项,可以自定义描述词(无序列表与有序列表仍然适用,但是描述性列表的描述词会加粗)。
示例:
无序列表:
\begin{itemize}
\item 第一项。
\item 第二项。
\item 第三项。
\end{itemize}
有序列表:
\begin{enumerate}
\item 第一项。
\item 第二项。
\item 第三项。
\end{enumerate}
描述性列表:
设 $G$ 为非空集合,其上有 $G \times G \to G$(封闭性)的二元运算 $\cdot$,如果满足以下性质,则称 $(G, \cdot)$ 是一个群:
\begin{description}
\item[结合律:] 对于任意 $a, b, c \in G$,成立 $a \cdot (b \cdot c) = (a \cdot b) \cdot c$。
\item[有单位元:] 存在 $e \in G$,使得对于任意 $a \in G$,都成立 $a \cdot e = e \cdot a = a$。
\item[存在逆元:] 对于任意 $a \in G$,都存在相应的 $b \in G$ 使得 $a \cdot b = b \cdot a = e$。
\end{description}
列表的嵌套:常见格式为
\begin{itemize} % 一级列表
\item 1
\begin{itemize} % 二级列表
\item 1.1
\begin{itemize} % 三级列表
\item 1.1.1
\item 1.1.2
\end{itemize}
\item 1.2
\end{itemize}
\item 2
\begin{itemize} % 二级列表
\item 2.1
\item 2.2
\end{itemize}
\end{itemize}
在 LaTeX 中,可以在列表中嵌套列表(可以是同一种列表,也可以是不同种列表)。
- 对于无序列表,黑圆点类型会随着嵌套深度的增加而变化。
- 对于有序列表,数字类型会随着嵌套深度的增加而变化。
LaTeX 图片
需要使用宏包 graphicx。
图片:常见格式为
\begin{figure}
\includegraphics[可选参数]{logo}
\end{figure}
\graphicspath{{image/}}:设置图片目录为.tex所在目录下的image文件夹(必须是双层花括号,结尾必须要有/)。\includegraphics[可选参数]{logo}:在文档中添加图片。这里的 logo 是图片的文件名(可以省略后缀名)。
| \includegraphics 可选参数 | 含义 | 举例 |
|---|---|---|
width=<长度> |
将图片缩放至指定宽度 | \includegraphics[width=0.8\textwidth]{logx} |
height=<长度> |
将图片缩放至指定高度 | \includegraphics[height=10cm]{logx} |
scale=<因子> |
将图片相对于原尺寸按比例缩放 | \includegraphics[scale=0.5]{logx} |
keepaspectratio |
保持宽高比;通常与 width 或 height 连用 |
\includegraphics[width=10cm, keepaspectratio]{logo} |
angle=<角度> |
将图片逆时针旋转(角度制) | \includegraphics[angle=90]{logo} |
trim=<左 下 右 上>, clip |
裁剪图片边缘。四个参数分别对应 左下右上的裁剪距离。注意加 clip |
\includegraphics[trim=1cm 2cm 1cm 2cm, clip]{logo} |
长度单位举例:
cm、mm、in、pt。\textwidth(正文区宽度,不包括左右页边距)、\linewidth(当前行的宽度)、\paperwidth(整张纸的物理宽度)。
示例:
\begin{figure}[htbp]
\centering
\includegraphics[width=0.3\linewidth]{photo.png}
\end{figure}
LaTeX 表格
表格:常见格式为
\begin{tabular}{<表格参数>}
表格内容 & 表格内容 \\
\hline
表格内容 & 表格内容
\end{tabular}
示例:
\begin{tabular}{|l|c|r|}
\hline
左对齐 & 居中 & 右对齐 \\
\hline
cell 1 & cell 2 & cell 3 \\
\hline
cell 4 & cell 5 & cell 6 \\
\hline
\end{tabular}
- 在表格参数中,
l/c/r分别表示左对齐/居中/右对齐,竖线|表示表格在对应位置存在一条列间竖线。 &:用于划分行内的单元格,每一行的单元格数量必须与列格式相匹配,例如 \(3\) 列表格需要有 \(2\) 个&分隔。\\:用于换行。\hline:用于表格在对应位置绘制一条行间横线。
*LaTeX 浮动体
reference:https://liam.page/2017/03/11/floats-in-LaTeX-basic/
图片和表格有时会很大,在插入的位置不一定放得下,又不方便分页。因此需要浮动调整。常见格式:
\begin{figure}[<位置描述符>] % 例如 htbp
<图片>
\end{figure}
- 位置描述符,指定了浮动体摆放的编号。基本的位置描述符有以下几种:
h:表示 here,尽量放在当前位置附近。t:表示 top,页面顶部。b:表示 bottom,页面底部。p:表示 float page,浮动页(单独成页)。
- 使用
htbp时,LaTeX 会根据文档排版的需要,选择最合适的位置来放置图像或表格。如果不能完全满足指定的位置,LaTeX 会根据文档的排版规则进行调整。
LaTeX 交叉引用
小提示:交叉引用至少要编译两遍才能稳定显示。
标签:用于标记你希望交叉引用的内容。相当于给一个内容起别名,后续要引用时,就引用该标签。常见格式为
\label{标签名}
常常与章节、公式、图片、表格等等一起使用。
为了避免标记冲突,通常使用统一前缀标记:sec: 表示章节,eq: 表示公式,fig: 表示图片,tab: 表示表格。
引用:用于引用你之前标记的标签。常见格式为
\ref{标签} % 引用对象的编号
\pageref{标签} % 引用对象所在的页码
\eqref{标签} % 引用公式的编号,并自动添加两个半角括号
\nameref{标签} % 引用章节标题等对象的名称
\eqref 来自宏包 amsmath,\nameref 通常来自宏包 hyperref。
特别地,当使用了宏包 hyperref 时,\ref、\eqref 等会自动添加超链接。
章节的交叉引用
示例:
\section{数据结构介绍}\label{sec:介绍}
今天我们要介绍数据结构基础 ...
\newpage
相关内容见第~\ref{sec:介绍} 节。% 其中 ~ 是不可断行空格,可以避免“第”和编号被拆到两行。
该节标题为“\nameref{sec:介绍}”,位于第~\pageref{sec:介绍} 页。
公式的交叉引用
编号只能对带编号的环境使用(来自 amsmath),而不能对 \[ ... \] 或 $$ ... $$ 使用。
示例 1:单行公式。
\begin{equation} \label{eq:范德蒙德卷积}
\sum\limits_{k}\binom{s}{k}\binom{t}{m - k} = \binom{s + t}{m}
\end{equation}
\newpage
详见公式 \ref{eq:范德蒙德卷积}。
详见公式 \eqref{eq:范德蒙德卷积}。
示例 2:多行公式,将 \label 放在你想引用的那一行,其他不想加编号的行可以加 \notag 或 \nonumber。
\begin{align}
& \sum\limits_{i = 1}^{n - 1} A_{n - 1 - s}^{i - 1} \cdot s \cdot (n - 1 - i)! \cdot (n - i) \notag \\
& = \sum\limits_{i = 1}^{n - 1} \frac{(n - 1 - s)!}{(n - i - s)!} \cdot s \cdot (n - i)! \notag \\
& = (n - 1 - s)! \cdot s \cdot \sum\limits_{i = 1}^{n - 1} \frac{(n - i)!}{(n - i - s)!} \notag \\
& = (n - 1 - s)! \cdot s \cdot s! \cdot \sum\limits_{i = 1}^{n - 1} \frac{(n - i)!}{(n - i - s)! \cdot s!} \notag \\
& = (n - 1 - s)! \cdot s \cdot s! \cdot \sum\limits_{i = 1}^{n - 1} \binom{n - i}{s} \notag \\
& = (n - 1 - s)! \cdot s \cdot s! \cdot \sum\limits_{i = 1}^{n - 1} \binom{i}{s} \label{eq:上指标求和法} \\
& = (n - 1 - s)! \cdot s \cdot s! \cdot \binom{n}{s + 1} \notag \\
& = (n - 1 - s)! \cdot s \cdot s! \cdot \frac{n!}{(n - 1 - s)! \cdot (s + 1)!} \notag \\
& = \frac{s}{s + 1} \cdot n! \notag
\end{align}
在公式 \eqref{eq:上指标求和法} 的化简中,运用了\emph{上指标求和法}的技巧 ...
示例 3:多行公式作为一个整体,只产生一个编号,使用 equation + aligned 环境。
\begin{equation} \label{eq:一元二次方程求根公式}
\begin{aligned}
ax^2 + bx + c &= 0 \\
x^2 + \frac{b}{a}x &= -\frac{c}{a} \\
\left(x + \frac{b}{2a}\right)^2 &= \frac{b^2 - 4ac}{4a^2} \\
x &= \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
\end{aligned}
\end{equation}
由式 \eqref{eq:一元二次方程求根公式} 可知,二次方程的解由判别式决定。
图片的交叉引用
示例:
福大校徽请参见图~\ref{fig:logo}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.2\linewidth]{fzu-logo.png}
\caption{福大校徽。}
\label{fig:logo}
\end{figure}
\centering:将图片居中。\caption:设置图片标题,若\caption放在\includegraphics前方,则标题在图片上方;否则在图片下方。- 图片标签应该放在
\caption之后,否则可能引用到错误的编号。
表格的交叉引用
示例:
\begin{table}[htbp]
\centering
\begin{tabular}{|c|c|}
\hline
金牌 & $10\%$ \\
\hline
银牌 & $20\%$ \\
\hline
铜牌 & $30\%$ \\
\hline
\end{tabular}
\caption{ICPC 各奖牌比例}
\label{tab:icpc-medal-ratio}
\end{table}
ICPC 各奖牌比例详见表~\ref{tab:icpc-medal-ratio}。
\centering:将表格居中。\caption:设置表格标题,若\caption放在tabular环境前方,则标题在表格上方;否则在表格下方。- 表格标签应该放在
\caption之后,否则可能引用到错误的编号。
LaTeX 代码
minted
reference:https://zhuanlan.zhihu.com/p/348850937
需要使用宏包 minted。
要使得 minted 与本地 LaTeX 发行版配合使用,必须安装附加程序 pygments。并且需要在 TeX Studio 中更改 xelatex 的编译命令(具体参考 reference)。但是可以在 Overleaf 上开箱即用。
minted 代码渲染:
\begin{minted}{<语言>}
<代码>
\end{minted}
minted 个人设置:
\definecolor{LightGray}{gray}{0.95} % 定义浅灰色背景
\setminted{
tabsize=4, % 设置缩进大小=4
autogobble, % 自动删除代码开头的多余缩进
breaklines, % 自动在长代码处换行
frame=lines, % 设置代码框架为线条
framesep=2mm, % 设置框架与代码之间的间距
baselinestretch=1.2, % 设置行间距
bgcolor=LightGray, % 设置背景颜色为浅灰色
fontsize=\footnotesize, % 设置代码字体为 \footnotesize
linenos % 显示行号
}
minted 插入代码:\inputminted{<language>}{<file>}(参照 \input)。
示例 1:
\begin{minted}{C++}
#include <bits/stdc++.h>
using i64 = long long;
#define debug(a) std::cout << #a << '=' << (a) << ' '
template <class T>
inline void chmin(T &x, const T &y) {
if (x > y) {
x = y;
}
}
template <class T>
inline void chmax(T &x, const T &y) {
if (x < y) {
x = y;
}
}
int main() {
std::ios::sync_with_stdio(0);
std::cin.tie(0);
return 0;
}
\end{minted}
LaTeX 页面布局
到 LaTeX 实际写作的时候,需要对 LaTeX 的页面布局进行调整。
等到笔者有实际写作需求的时候,将会研究一下好看的 LaTeX 页面布局。
页边距
需要使用宏包 geometry。
\geometry{left=1.8cm,right=1.8cm,top=1.8cm,bottom=1.8cm}
将正文区域安排在距离纸张四边各 1.8 厘米的位置以内。
Beamer(幻灯片类)
reference:https://shootingwang.github.io/LaTeX-Beamer.html
Beamer 是一个功能强大的 LaTeX 类,用于制作演示文稿。许多学术类演示文稿都依靠 Beamer 制作。
Beamer 结构清晰,且由于 Beamer 基于 LaTeX,对数学公式特别友好,故 Beamer 是学术类(尤其数学类)文稿制作的极佳选择。因为学术类演示文稿的内容重要性远大于文稿美观性。
常见格式为
\documentclass{beamer}
% 导言区开始
\usetheme{...} % 演示主题
\usecolortheme{...} % 颜色主题
% 导言区结束
\begin{document}
\begin{frame}
<文稿内容>
\end{frame}
...
\end{document}
主题
Beamer 的主题系统主要包括:
\usetheme{}:演示主题。\usecolortheme{}:颜色主题。\usefonttheme{}:字体主题。\useinnertheme{}:内部结构主题,控制标题页、列表、块环境等。\useoutertheme{}:外部结构主题,控制页眉、页脚、导航栏、侧边栏等。
可以通过 https://hartwork.org/beamer-theme-matrix/ 来挑选你喜欢的演示+颜色主题组合(行是演示主题,列是颜色主题)。
个人最喜欢的主题组合是:
\usetheme{Ilmenau}
\usecolortheme{default}
在 Overleaf 上,也可以搜索许多的 LaTeX 模版,例如 FZU Beamer,感谢学长的制作🙏
一些内部结构主题的简介:
| 内部结构主题 | 效果简介 |
|---|---|
default |
Beamer 默认内部样式 |
circles |
把项目符号、目录编号等设计成圆形风格 |
rectangles |
把项目符号、目录编号等设计成矩形或方块风格 |
rounded |
让块环境、标题框等元素带有圆角效果 |
一些外部结构主题的简介:
| 外部结构主题 | 效果简介 |
|---|---|
default |
Beamer 默认外部样式 |
infolines |
在底部加入信息栏,常显示作者、标题、日期、页码等信息 |
miniframes |
在顶部显示小圆点或小框形式的导航,用来表示每一页在章节中的位置 |
sidebar |
添加侧边栏,通常显示章节和小节导航 |
smoothbars |
类似 miniframes,但顶部导航条更平滑、美观,带有较柔和的导航区域效果 |
smoothtree |
类似 tree,但视觉上更平滑。顶部以层级结构显示 section/subsection |
split |
将顶部或底部区域分割成左右两部分,常用于同时显示章节、小节、标题、作者等信息 |
shadow |
基于较丰富的外观设计,带有阴影效果,视觉上更立体 |
tree |
在顶部以树状层级方式显示章节、小节导航 |
页
Beamer 的一个页称作一个 frame,一个页的常见格式为
\begin{frame}{标题}
<文稿内容>
\end{frame}
同样地,Beamer 也有标题页等的特殊页码。
% 导言区
\title{报告标题}
\author{作者}
\institute{单位}
\date{\today}
% 正文
\begin{frame}
\titlepage
\end{frame}
引用块
Beamer 有三种基本引用块:提示块 block,警示块 alertblock,示例块 examples。
常见格式为
\begin{block}{<提示块名字>}
蓝色的提示块。
\end{block}
\begin{alertblock}{<警示块名字>}
红色的警示块。
\end{alertblock}
\begin{examples}
绿色的示例块,名字叫``例''。
\end{examples}
小组件
设置顶部导航栏(小圆点导航栏)
小提示:至少要编译两遍才能稳定显示。
需要使用外部主题 miniframes,部分主题自带该外部主题(例如 Ilmenau)。
Beamer 内部自动的交叉引用:
- 一个小圆点代表了一个页。
- 一个
\subsection中的所有页,其对应的小圆点集中在同一行。 - 一个
\section中的所有\subsection,其包含的小圆点分列于不同行。
圆角阴影块
\setbeamertemplate{blocks}[rounded][shadow=true]
设置 PDF 滚动样式
\hypersetup{
pdfpagelayout=OneColumn, % 单列,连续滚动
pdfstartview=Fit % 打开时宽度自适应窗口
}
公式间距优化
% 每个 frame 开始时设置行间公式上下距离
\AtBeginEnvironment{frame}{%
\setlength{\abovedisplayskip}{4pt}
\setlength{\belowdisplayskip}{4pt}
\setlength{\abovedisplayshortskip}{2pt}
\setlength{\belowdisplayshortskip}{2pt}
}
页码设置
小提示:至少要编译两遍才能稳定显示。
\setbeamertemplate{page number in head/foot}[totalframenumber] % 当前 frame / 总 frame
进度条
% 进度条颜色
\setbeamercolor{progress bar}{fg=blue!70!black,bg=black!15}
\makeatletter
\newdimen\progressbar@width
\newcommand{\insertprogressbar}{%
\progressbar@width=\paperwidth
\multiply\progressbar@width by \insertframenumber
\divide\progressbar@width by \inserttotalframenumber
\begin{beamercolorbox}[wd=\paperwidth,ht=1.4pt,dp=0pt]{progress bar}
{\usebeamercolor[fg]{progress bar}%
\rule{\progressbar@width}{1.4pt}}%
{\usebeamercolor[bg]{progress bar}%
\rule{\dimexpr\paperwidth-\progressbar@width\relax}{1.4pt}}%
\end{beamercolorbox}%
}
% 放在 footline 下方
\addtobeamertemplate{footline}{}{\insertprogressbar}
\makeatother

浙公网安备 33010602011771号