【学习笔记】LaTeX 学习笔记
reference:
- Overleaf 帮助文档:https://cn.overleaf.com/learn
- WikiBooks:https://zh.wikibooks.org/wiki/LaTeX
- lshort-zh-cn.pdf 网页版:http://texpage.com/docs/zh/learning/
- 南科大《LaTeX 入门》:https://lib.sustech.edu.cn/2021/0707/c60a4857/page.htm
声明:本学习笔记内容浅薄,仅作为入门使用。进阶的 LaTeX 用法需要进一步研究。
熟悉 LaTeX
LaTeX:是一种基于 TeX 的文档排版系统。
LaTeX 发行版:一个将各种排版引擎、编译脚本、格式转换工具、管理界面、配置文件、支持工具、字体以及数以千计的宏包和文档,集合起来打包发布的软件。
本地 LaTeX 编辑器:TeX Live + TeX Studio
TeX Live:是由 TUG(TeX User Group)发布的一个 LaTeX 发行版。
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
TeX Studio:是一个用于创作 LaTeX 文档的集成写作环境(编辑器)。
进入 TeX Studio 官网,下载安装即可。
在线 LaTeX 编辑器:Overleaf
Overleaf 是一个在线的 LaTeX 编辑器。有许多优点:无需在意环境、实时预览、在线访问、版本控制、丰富的模板库。
LaTeX 文档基础
命令、环境、分组
命令:简单命令的格式为 \命令[可选参数]{必选参数}
LaTeX 的命令对大小写敏感!
环境:用以令一些效果在局部生效,或是生成特殊的文档元素。LaTeX 环境的用法为一对命令 \begin{} 和 \end{}
\begin{环境名}[可选参数]{必选参数}
...
\end{环境名}
分组:LaTeX 使用一对花括号 {} 作为分组,使得分组中使用的命令被限制在分组内,不会影响到分组外的内容(例如 {\bfseries ...})。
基础结构
LaTeX 文档结构:导言区+文档内容。
\documentclass[a4paper]{article} % 文档类型(如 article)
% 导言区开始
\usepackage{graphicx} % 引用宏包
\graphicspath{{image/}} % 设置图片目录
% 导言区结束
\begin{document}
% 这里开始是正文
\end{document}
文档内容:文档的正文内容,包含在 \begin{document} 与 \end{document} 这两个标签之间。
导言区:\begin{document} 之前 .tex 文件中的所有内容都被成为导言区。在导言区中,你可以定义文档的类型、定义你所使用的语言、定义你想引入的宏包,以及许多其他的模块。
\documentclass{}:声明了文档类型(称为文档类),控制文档的整体外观。不同类型的文档需要不同的文档类。\usepackage{}:引用宏包,以增强或扩充 LaTeX 的功能。- ...
组织方式
当编写长篇文章时,单个源文件会使修改、校对变得十分困难。将源文件分割成若干个文件,例如将每章内容单独写在一个文件中,会大大简化修改和校对的工作。
\include{<filename>}:用于在源代码中插入文件,<filename>为不带.tex的文件名。- 插入文件前,会另起一页。
- 不能嵌套使用
\include。
\input{<filename>}:用于在源代码中插入文件,<filename>为不带.tex的文件名。- 纯粹地将文件中的内容插入。
- 可以嵌套使用
\input。
文件路径分隔符:
- Windows:默认使用反斜杠
\作为路径分隔符。但内核支持两种分隔符(\与/均可)。- Linux/Unix/macOS:一律使用正斜杠
/作为路径分隔符(反斜杠\在 Linux Shell 里是转义字符,不会被识别为路径分隔符)。LaTeX 的
\input在不同系统下的路径写法:
- 在 LaTeX 中,反斜杠
\是命令起始符,不是路径分隔符。若想使用反斜杠必须转义\\。- 不论是在 Windows 或 Linux 环境下,都建议统一使用
/作为路径分隔符,TeX 引擎内部会把/转化成对应系统的路径分隔符。
LaTeX 个人常用宏包
\usepackage{ctex} % 中文支持
\usepackage{unicode-math} % 数学字体设定
\usepackage{amsmath} % 增强数学公式
\usepackage{latexsym} % 补充数学符号
\usepackage{xcolor} % 彩色支持
\usepackage{graphicx} % 图片支持
\usepackage{multicol} % 多栏排版
\usepackage{booktabs} % 高质量表格
\usepackage{enumitem} % 列表定制
\usepackage{calligra} % 手写字体
\usepackage{listings} % 代码高亮(基础版)
\usepackage{minted} % 代码高亮(pygments 版)
\usepackage{stackengine} % 元素堆叠
\usepackage{indentfirst} % 首行缩进
\usepackage{ulem} % 下划线/删除线
\usepackage{hyperref} % 超链接功能
ctex:提供对中文的支持
LaTeX 本身不直接支持中文。
ctex 提供了对中文字体的自动选择和配置功能*,用户无需手动配置中文字体。常用的有
- 宋体、黑体、楷体。
- 支持字体的设置,包括字体的大小、粗细、斜体等。
ctex 提供了中文排版:
- 自动支持中英文排版,能够处理中英文之间的空格问题。
- 自动设置合适的行间距,保证排版效果。
注意,源代码需要保存为 UTF-8 编码,并使用 xelatex 或 lualatex 编译。
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}
常常用于简要概述或总结本文的核心主题或论点。
章节层次
章节层次:LaTeX 的章节层次从高到低分别是:
| 层次 | 含义 |
|---|---|
\part |
部、篇 |
\chapter |
章(仅 book/report 有,article 没有) |
\section |
节(一级标题) |
\subsection |
小节(二级标题) |
\subsubsection |
小小节(三级标题) |
\paragraph |
段标题(行内标题) |
\subparagraph |
子段标题(行内标题) |
目录
目录:可以使用 \tableofcontents 生成目录,带章节标号与页码。
示例:
\tableofcontents
\part{数据结构}
\section{线段树}
\subsection{普通线段树}
\subsubsection{势能线段树}
\paragraph{Segment Tree Beat!}
LaTeX 文本标记
注释
注释是一种不会出现在最终输出文档的文字。
注释对组织文档、添加笔记、调试代码有着很大的帮助。
在 LaTeX 中添加注释,只需在要注释的内容前加一个 % 即可。
加粗、斜体、下划线、删除线、强调
加粗:\textbf{} 或 {\bfseries ...}
斜体:\textit{} 或 {\itshape ...}
下划线:\underline{}
删除线:\sout{}(需要使用 ulem 宏包)。
强调:\emph{}。它真正的作用取决于它所在的环境:
- 在正常文字中,强调文字是斜体;
- 在斜体文字中,强调文字是正常字体。
- 在
ulem宏包中,强调文字是下划线。
示例:
Some of the greatest \emph{discoveries} in science
were made by accident.
\textit{Some of the greatest \emph{discoveries}
in science were made by accident.}
\textbf{Some of the greatest \emph{discoveries}
in science were made by accident.}
颜色
需要使用宏包 xcolor。
文本颜色:\textcolor{<颜色>}{<文本>}。
文本背景颜色:\colorbox{<颜色>}{<文本>}。
字号
| 命令 | 相对大小(从小到大) | 大小 = 首行缩进 |
|---|---|---|
\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 文本默认字体为罗马(直立)衬线字体,Roman (upright) serif font。
可以使用 \fontfamily{...}\selectfont 切换字体(二者必须连用)。
\fontfamily{...}:声明选择的字体族。\selectfont:用于实际切换上述选择的字体。
LaTeX 数学公式
需要使用宏包 amsmath。
数学公式:LaTeX 的数学排版需要进入数学模式。
- 行内公式:用单个美元符号(
$)包围起来的内容。 - 单行公式:用两个美元符号(
$$)包围起来的内容(不推荐!),或\[ ... \]包围起来的内容。$$ ... $$是 Plain TeX 遗留语法,不支持amsmath等扩展,且在多数学术期刊模板中被禁止。- 最好不要尝试在单行公式中编写多行公式,很多编译器在
$$ ... $$或\[ ... \]中不处理\\。
equation环境内的公式:会自动编号。上述的行内公式与单行公式都是默认不自动编号的。align环境内的公式:常常用于多行公式。
示例:
$e^{ix} = \cos(x) + i \sin(x)$
$$
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}
此处应有一大段关于数学公式的细节介绍,但由于笔者在使用 markdown 时已经记清楚了个大概,就不再赘述。
数学公式的查找:
- (下载 TeX Live 后)运行
texdoc symbols查看符号表。或者访问在线版。 - https://www.luogu.com.cn/article/1gxob6zc
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 = e$。
\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 是图片的文件名(没有文件名的后缀),所以 logo.png 就是 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(整张纸的物理宽度)。
LaTeX 表格
表格:常见格式:
\begin{tabular}{<表格参数>}
& \\
\hline
&
\end{tabular}
<表格参数>:是你必须为表格指定的参数,示例:
\begin{tabular}{|l|c|r|}
\hline
cell1 & cell2 & cell3 \\
\hline
cell4 & cell5 & cell6 \\
\hline
cell7 & cell8 & cell9 \\
\hline
\end{tabular}
在该示例的表格参数中,l/c/r 分别表示居 左/中/右 对齐,竖线 | 表示表格在对应位置存在一条列间竖线。
&:用于划分单个表格单元格。\\:用于换行。\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 交叉引用
小提示:交叉引用至少要编译两遍才能稳定显示。
标签:用于标记你希望交叉引用的内容。相当于给一个内容命名,后续要引用时,就引用该标签。
它常与章节、公式、图片、表格等等一起使用。
为了避免标记冲突,通常使用 sec: 来标记章节、eq: 来标记公式、fig: 来标记图片、tab: 来标记表格。
引用:用于引用你之前标记的标签。
特别地,当使用了宏包 hyperref 时,\ref、\eqref 等会自动添加超链接。
章节的交叉引用
示例:
\section{介绍}\label{sec:介绍}
今天我们要介绍数据结构基础 ...
\newpage
在 \ref{sec:介绍} 章节中 ...
在第 \pageref{sec:介绍} 页的 \nameref{sec:介绍} 章节中。
\label{sec:}:给某章节编号。\ref{sec:}:引用某章节,将展示该标题的编号。\nameref{sec:}:引用某章节,将展示该标题的名字。\pageref{sec:}:引用某章节,将展示该标题的页码。
公式的交叉引用
示例 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:
\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{上指标求和法}的技巧 ...
\label{eq:}:给某公式编号。- 只能对带编号的环境使用(来自
amsmath),而不能对$$ ... $$或\[ ... \]使用。 - 单行公式用
equation等环境。 - 多行公式用
align/gather等环境,并把\label放在你想引用的那一行,其他不想编号的行可以加\notag或\nonumber。
- 只能对带编号的环境使用(来自
\ref{eq:}:引用某公式,将展示该公式的编号。\eqref{eq:}:引用某公式,将展示该公式的编号,并自动添加两个半角括号。
图片的交叉引用
示例:
福大校徽请参见图 \ref{fig:logo}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.2\linewidth]{福州大学 校徽.png}
\caption{福大校徽。}
\label{fig:logo}
\end{figure}
\centering:将图片居中。\caption:设置图片标题。图标题一般在下方。\label{fig:}:给某图片编号。\ref{fig:}:引用某图片,将展示该图片的编号。
表格的交叉引用
示例:
\begin{table}[htbp]
\centering
\begin{tabular}{|c|c|}
\hline
金牌 & $10\%$ \\
\hline
银牌 & $20\%$ \\
\hline
铜牌 & $30\%$ \\
\hline
\end{tabular}
\caption{ICPC 各奖牌比例}
\label{tab:ICPC 各奖牌比例}
\end{table}
ICPC 各奖牌比例详见表 \ref{tab:ICPC 各奖牌比例}。
\caption:设置表格标题。表标题一般在上方。\label{tab:}:给某表格编号。\ref{tab:}:引用某表格,将展示该图片的编号。
LaTeX 代码
reference:https://zhuanlan.zhihu.com/p/348850937
minted
需要使用宏包 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)。
Beamer(幻灯片类)
Beamer 是一个功能强大的 LaTeX 类,用于制作演示文稿。许多学术类演示文稿都依靠 Beamer 制作。
Beamer 结构清晰,且由于 Beamer 基于 LaTeX,对数学公式特别友好,故 Beamer 是学术类(尤其数学类)文稿制作的极佳选择。因为学术类演示文稿的内容重要性远大于文稿美观性。
常见格式:
\documentclass{beamer}
% 导言区开始
\usetheme{...} % 颜色主题
\usecolortheme{...} % 字体主题
% 导言区结束
\begin{document}
\begin{frame}
<文稿内容>
\end{frame}
...
\end{document}
Beamer 主题
Beamer 的主题分为颜色主题和字体主题两种:
\usetheme{}:设置颜色主题。\usecolortheme{}:设置字体主题。
可以通过 https://hartwork.org/beamer-theme-matrix/ 来挑选你喜欢的主题(行是颜色主题,列是字体主题)。
个人最喜欢的主题是:
\usetheme{Ilmenau}
\usecolortheme{default}
页
Beamer 的一个页称为一个 frame,通常一个页的格式为
\begin{frame}
...
\end{frame}
同样地,Beamer 也有标题页等的特殊页码。
引用块
Beamer 有三种基本引用块,分别是:提示块 block,警示块 alertblock,示例块 examples。
\begin{block}{<提示块名字>}
蓝色的提示块。
\end{block}
\begin{alertblock}{<警示块名字>}
红色的警示块。
\end{alertblock}
\begin{examples}
绿色的示例块,名字叫``例''。
\end{examples}
设置顶部导航栏(小圆点导航栏)
Beamer 内部自动的交叉引用:
- 一个小圆点代表了一个页。
- 一个
\subsection中的所有页,其对应的小圆点集中在同一行。 - 一个
\section中的所有\subsection,其包含的小圆点分列于不同行。
\useoutertheme{miniframes} % 使用 miniframes 外部主题
\setbeamertemplate{navigation symbols}{} % 把默认的导航符号移除,只保留顶部的栏
\setbeamertemplate{mini frame}[circle] % 使用小圆点代替小方块
设置滚动样式
\hypersetup{
pdfpagelayout=OneColumn, % 单列,连续滚动
pdfstartview=Fit % 打开时宽度自适应窗口
}

浙公网安备 33010602011771号