【学习笔记】LaTeX 学习笔记

reference:

声明:本学习笔记内容浅薄,仅作为入门使用。进阶的 LaTeX 用法需要进一步研究。

熟悉 LaTeX

LaTeX:是一种基于 TeX 的文档排版系统。

LaTeX 发行版:一个将各种排版引擎、编译脚本、格式转换工具、管理界面、配置文件、支持工具、字体以及数以千计的宏包和文档,集合起来打包发布的软件。

本地 LaTeX 编辑器:TeX Live + TeX Studio

TeX Live:是由 TUG(TeX User Group)发布的一个 LaTeX 发行版。

TeX Live 安装 reference:

TeX Studio:是一个用于创作 LaTeX 文档的集成写作环境(编辑器)。

进入 TeX Studio 官网,下载安装即可。

在线 LaTeX 编辑器:Overleaf

Overleaf 是一个在线的 LaTeX 编辑器。有许多优点:无需在意环境、实时预览、在线访问、版本控制、丰富的模板库。

英文版:https://www.overleaf.com/

中文版:https://cn.overleaf.com/

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 时已经记清楚了个大概,就不再赘述。

数学公式的查找

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 保持宽高比;通常与 widthheight 连用 \includegraphics[width=10cm, keepaspectratio]{logo}
angle=<角度> 将图片逆时针旋转(角度制) \includegraphics[angle=90]{logo}
trim=<左 下 右 上>, clip 裁剪图片边缘。四个参数分别对应
左下右上的裁剪距离。注意加 clip
\includegraphics[trim=1cm 2cm 1cm 2cm, clip]{logo}

长度单位举例:

  • cmmminpt
  • \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						% 打开时宽度自适应窗口
}
posted @ 2025-05-19 12:04  Calculatelove  阅读(207)  评论(0)    收藏  举报