LaTex入门笔记

本文reference:

关于 LaTeX

LaTex是一种基于 TeX 的排版系统,由图灵奖得主 Lamport开发,
TeX 是由 Knuth 最初开发。感谢两位大神的贡献。

LaTex具有多种发行版,其中TeX Live是目前的主流选择,由TUG(Tex User Group)维护。

安装指南可参考:

安装完成后,进入VScode插件市场搜索并安装LaTeX Workshop,恭喜你,你已经成功完成了本地部署。

虽然我的想法是建议在linux环境下进行部署,但如果你确实对命令行,环境这些比较头痛,这里也有在线编辑网站Overleaf供你选择,这里有着各种各样的模板,缺点是编译时间有限制。

Why LaTeX?

它的优点有:

  1. 支持复杂的公式
  2. 排版功能强大
  3. 格式与内容分离,避免如word排版功能冗杂。
  4. 很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等

等等。不难看出,LaTeX生来便是写论文的不二之选。

基本内容

  1. Hint:本文示例内容可自行渲染结合观看,或寻求AI帮助渲染,或能更好理解
  2. Hint:实践是最好的老师

文档结构

导言区 + 文档内容

\documentclass[a4paper]{article} % 文档类型(如 article)

% 导言区开始
\usepackage{graphicx} % 引用宏包
\graphicspath{{image/}} % 设置图片目录
% 导言区结束

\begin{document}
% 这里开始是正文
\end{document}

导言区:类似于头文件或者引用。于\begin{document}之前。可定义文档类型,所使用语言,引入的宏包,以及其他模块。

  • \documentclass{}:声明文档类型
  • \usepackage():引用宏包,扩展功能
  • ....暂待补充

文档内容:于\begin{document} \end{document}之间

命令、环境、分组

命令:基本格式为\命令[可选参数]{必选参数},且大小写敏感

环境:用以令一些效果在局部生效,或是生成特殊的文档元素。LATEX 环境 的用法为一对命令 \begin 和 \end:

\begin{⟨environment name⟩}[⟨optional arguments⟩]{⟨mandatory arguments⟩}
…
\end{⟨environment name⟩}

参数允许无/一/多个,部分环境可嵌套。

分组:使用一对花括号 { 和 } 作为分组,在分组中使用的命令被限制在分组内,不会影响到分组外的内容。

组织方式

当编写长篇文章时,单个源文件会使修改校对以及编译变得十分困难。一般处理是将源文件分成若干个子文件,LaTex提供了如下的组织方式:

  • \include{<filename>}:用于在源代码中插入文件,<filename> 为不带 .tex 的文件名。

    • 插入文件前,会另起一页
    • 不能嵌套使用 \include
  • \input{<filename>}:用于在源代码中插入文件,<filename> 为不带 .tex 的文件名。

    • 纯粹地将文件中的内容插入
    • 可以嵌套使用 \input
  • 注1:文件目录支持绝对路径与相对路径
  • 注2:文件目录最好不要加空格和特殊字符,尽量避免使用中文路径,否则可能会出错
  • 注3:Windows以\作为路径分隔符,但内核支持\/。而类Unix系统一律使用/作为路径分隔符,为避免路径识别问题,统一建议以/作为路径分隔符。

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}		% 超链接功能

LaTex标题页

标题\title{}

作者\author{}

日期\date{}。你可以手动地输入日期,或使用 \today 指令(\date{\today}

完成定义后可以用\maketitle生成标题页,具体地:

\documentclass{article}

\title{Genshin Impact}
\author{Linear Young}
\date{\today}

\begin{document}

\maketitle

The story of Genshin Impact takes place in a fantasy world called Teyvat. Players assume the role of a Traveler from another world, who embarks on a journey to find their separated sibling and gradually uncovers the deep‑seated secrets of this world. Developed by Shanghai MiHoYo Destiny Technology Co., Ltd., the game is renowned for its high‑quality cel‑shaded visuals, expansive world‑building, and continuously updated content.

\end{document}

通常可以结合使用 \newpage 来使得标题页独占一页

文档结构

摘要

摘要常见格式:

\begin{abstract}
	% 摘要
\end{abstract}

常用于概述或总结文章核心论点

章节层次

章节层次从高到低:

层次 含义
\part 部、篇
\chapter 章(仅 book/report 有,article 没有
\section 节(一级标题)
\subsection 小节(二级标题)
\subsubsection 小小节(三级标题)
\paragraph 段标题(行内标题)
\subparagraph 子段标题(行内标题

目录

目录\tableofcontents生成目录。示例:

\tableofcontents

\part{数据结构}

\section{线段树}

\subsection{普通线段树}

\subsubsection{势能线段树}

\paragraph{Segment Tree Beat!}

注1:一般需要编译两次源代码。

原理是:当你写如\section{Introduction},LaTex会

  1. 正文打印标题
  2. 把该命令写入.toc文件中

\tableofcontents是读取.toc文件并按格式生成目录。

故第一遍生成.toc文件内容,第二遍读取.toc文件内容并生成目录

注2:有时我们使用了 \chapter\section 这样不生成目录项的章节标题命令,而又想手动 生成该章节的目录项,可以在标题命令后面使用:

\addcontentsline{toc}{⟨level⟩}{⟨title⟩} 

其中 ⟨level⟩ 为章节层次 chapter section 等,⟨title⟩ 为出现于目录项的章节标题。

文本标记

注释

注释是一种不会出现在最终输出文档的文字。

注释对组织文档、添加笔记、调试代码有着很大的帮助。

在 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或者color

文本颜色\textcolor{<颜色>}{<文本>}

文本背景颜色\colorbox{<颜色>}{<文本>}

色彩表达方式有两种,其一是使用色彩模型和色彩代码,代码用 0 ∼ 1 的数字代表成分的 比例。color 宏包支持 rgb、cmyk 和 gray 模型,xcolor 支持更多的模型如 hsb 等。

\large\sffamily
{\color[gray]{0.6}
60\% 灰色} \\
{\color[rgb]{0,1,1}
青色}

其二是直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错):

\large\sffamily
{\color{red} 红色} \\
{\color{blue} 蓝色}

colorxcolor各自定义了一些颜色,这里不展开叙述,如有需要可自行查询。

xcolor还支持将颜色用过表达式互补

\large\sffamily
{\color{red!40} 40\% 红色}\\
{\color{blue}蓝色
\color{blue!50!black}蓝黑
\color{black}黑色}\\
{\color{-red}红色的互补色}

字号

命令 相对大小(从小到大) 大小 = 首行缩进
\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}

数学公式内容较多,笔者认为如有需要自行查找即可,不在此一一列举。

数学公式的查找

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}
	\graphicspath{{image/}}
	\includegraphics[可选参数]{logo}
\end{figure}
  • \graphicspath{{image/}}:设置图片目录为 .tex 所在目录下的 image 文件夹(参数必须是双层花括号,结尾必须要有 /),后可接多个路径。
  • \includegraphics[可选参数]{logo}:在文档中添加图片。这里的 logo 是图片的文件名(没有文件名的后缀),所以 logo.png 就是 logo。

注:文件名可用绝对或相对路径表示,但文件名里既不要 有空格(类似 \include),也不要有多余的英文点号,否则宏包在解析文件名的过程中会出错。

\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:表示表格在对应位置存在一条行间横线。
  • \cline : 表示表格在对应位置存在一条列间竖线。

具体而言地,在科技论文排版中广泛应用的表格形式是三线表,形式干净简明。三线表由 booktabs 宏包 支持,它提供了 \toprule \midrule \bottomrule 命令用以排版三线表的三条线,以及和 \cline 对应的 \cmidrule。除此之外,最好不要用其它横线以及竖线:

% \usepackage{booktabs}
\begin{tabular}{cccc}
\toprule
& \multicolumn{3}{c}{Numbers} \\
\cmidrule{2-4}
& 1 & 2 & 3 \\
\midrule
Alphabet & A & B & C \\
Roman & I & II& III \\
\bottomrule
\end{tabular}

表格排版还存在许多技巧,笔者在此不详细展开,如有需要可自行了解

*LaTeX 浮动体

reference:https://liam.page/2017/03/11/floats-in-LaTeX-basic/

图片和表格有时会很大,在插入的位置不一定放得下,又不方便分页。因此需要浮动调整。LaTex预定义了tablefigure两种类型,但没有严格限制,你可以放任意内容,常见格式:

\begin{figure}[<位置>] % 例如 htbp
	<图片>
\end{figure}
  • 位置描述符,指定了浮动体摆放的编号。基本地,有以下几种:
    • h:表示 here,当前位置。
    • t:表示 top,顶部。
    • b:表示 bottom,底部。
    • p:表示 float page,浮动页(单独成页)。
  • 使用 htbp 时,LaTeX 会根据文档排版的需要,选择最合适的位置来放置图像或表格。如果不能完全满足指定的位置,LaTeX 会根据文档的排版规则进行调整。

LaTeX 交叉引用

Hint:交叉引用至少要编译两遍才能稳定显示,原理逻辑同目录章节注释相似,此处是写入读取.aux文件。

标签:用于标记你希望交叉引用的内容。相当于给一个内容命名,后续要引用时,就引用该标签。

它常与章节、公式、图片、表格等等一起使用。

为了避免标记冲突,通常使用 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/ 来挑选你喜欢的主题(行是颜色主题,列是字体主题)。

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 @ 2026-03-22 18:16  LinearYoung  阅读(113)  评论(0)    收藏  举报