这篇文章距离上次更新已经过去了 739 天,其中的某些内容可能不再适用了,请谨慎阅读。
LaTeX 简介
LATEX(LaTeX,音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TEX 所提供的强大功能,能在几天、甚至几小时内生成很多具有书籍质量的印刷品。
它构筑在Plain TEX 的基础之上,并加进了很多的功能以使得使用者可以更为方便的利用TEX 的强大功能。使用LATEX 基本上不需要使用者自己设计命令和宏等,因为LATEX 已经替你做好了。
LATEX 是 TEX 中的一种格式(format),是建立在TEX 基础上的宏语言,也就是说,每一个TEX 命令实际上最后都会被转换解释成几个甚至上百个TEX 命令。
但是,普通用户可以无需知道这中间的复杂联系。就像编程的时候如果使用一些已经编译好的函数库和模板可以使我们仅仅用几个命令就实现很多功能一样,LATEX 根据人们排版文章的习惯,定义了许多命令和模板,通过这些命令和模板,我们可以很快的得到漂亮的排版结果。

LaTeX 速查手册
usepackage
\usepackage 是 LaTeX 的一个命令,用于调用宏包。宏包是一些预先定义好的命令和环境的集合,可以扩展 LaTeX 的功能。
1
| \usepackage[options]{package}
|
其中,options 是可选参数,package 是宏包的名称。
类似于 C 语言中的 #include,或者 Python 中的 import。
documentclass
\documentclass 是 LaTeX 的一个命令,用于指定文档的类型。
1
| \documentclass[options]{class}
|
其中,options 是可选参数,class 是文档的类型。
除了 LaTeX 本身提供的文档类型,还可以新建 .cls 文件,自定义文档类型。
上标 ^ 和 下标 _
- Abc:
A_b^c - Abcdef:
A_{bc}^{def}
如果上下标的字符不止一个,则需要加大括号。
- 组合数(kn):
\binom{n}{k} 或者 {n \choose k}
分数与开方
高度自适应的分数 (行内较矮,行间较高)ba: \frac{a}{b}
强制较高的分数ba: \dfrac{a}{b}
强制较低的分数ba: \tfrac{a}{b}
开方a: \sqrt{a},na: \sqrt[n]{a}
运算符
| 符号 | LaTeX 命令 |
|---|
| +、− | +、- |
| ±、∓ | \pm、\mp |
| ×、÷ | \times、\div |
| ⊙、⊕、⊗ | \odot、\oplus、\otimes |
| =、= | =、\neq |
| ∼、∽ | \sim、\backsim |
| ≈、≅ | \approx、\cong |
| ≡、≃ | \equiv、\simeq |
| <、> | <、> |
| ≤、≥ | \leq、\geq |
| ⩽、⩾ | \leqslant、\geqslant 需 amssymb 宏包 |
| ≪、≫ | \ll、\gg |
| ⊂、⊃ | \subset、\supset |
| ⊆、⊇ | \subseteq、\supseteq |
| ∈、∋ | \in、\ni |
| ∈/、∋ | \notin、\notni |
| ∩、∪ | \cap、\cup |
| ∧、∨ | \land、\lor |
| ∫、∬、∭ | \int、\iint、\iiint |
| ∮、∬、∭ | \oint、\oiint、\oiiint |
修改大于等于号、小于等于号样式可以使用 \renewcommand 命令:
1 2 3
| \usepackage{amssymb} \renewcommand{\leq}{\leqslant} \renewcommand{\geq}{\geqslant}
|
特殊符号(转义)显示
| 符号 | LaTeX 命令 |
|---|
| $、#、%、& | \$、\#、\%、\& |
| {、} | \{、\} |
| _ | \_ |
| ˆ | \^{} |
| ∼ | \~{} 或 \sim |
| \ | \backslash |
| @ | @ |
其他符号与图形
| 符号 | LaTeX 命令 |
|---|
| ∀、∃ | \forall、\exists |
| ∇、Δ | \nabla、\Delta |
| ⋅、∘、∙ | \cdot、\circ、\bullet |
| ⋯、⋮、⋱ | \cdots、\vdots、\ddots |
| ℏ | \hbar |
| ∂ | \partial |
| ∞ | \infty |
| ∠ | \angle |
| ∅ | \varnothing |
| ⊥、⊤ | \bot、\top |
| △、□ | \triangle、\square |
极限、连加、连乘、积分
- limx→∞:
\lim_{x \to \infty} - ∑i=1n:
\sum_{i=1}^{n} - ∏i=1n:
\prod_{i=1}^{n} - ∫0+∞:
\int_{0}^{+\infty}
以上代码在行内公式中效果如上,如果在行间公式中,效果如下:
x→∞limi=1∑ni=1∏n∫0+∞ 如果要在行内显示跟行间一样的效果,则需要加上 \limits 或 {\displaystyle},如下:
| 符号 | LaTeX 命令 |
|---|
| x→∞lim、x→∞lim | \lim\limits_{x \to \infty}、${\displaystyle \lim_{x \to \infty}}$ |
| i=1∑n、i=1∑n | \sum\limits_{i=1}^{n}、${\displaystyle \sum_{i=1}^{n}}$ |
| i=1∏n、i=1∏n | \prod\limits_{i=1}^{n}、${\displaystyle \prod_{i=1}^{n}}$ |
| 0∫+∞、∫0+∞ | \int\limits_{0}^{+\infty}、${\displaystyle \int_{0}^{+\infty}}$ |
多重极限
y→y0x→x0lim: \lim\limits_{x\to x_0 \atop y\to y_0}
w→w0x→x0y→y0z→z0lim: \lim\limits_{\substack{w\to w_0\\ x\to x_0\\ y\to y_0\\ z\to z_0}}
括号
- ():
\left( \right) - []:
\left[ \right] - {}:
\left\{ \right\} - ∣∣:
\left| \right|
直接使用 ()、[]、{},括号的高度不会随着括号中的内容高度变化,比如(43)2、[6π2]、{90π3}、∣1024π4∣。
使用 \left 和 \right,括号的高度会随着括号中的内容高度变化,比如(43)2、[6π2]、{90π3}、1024π4。
公式
行内公式
行内公式使用 $ $ 包裹,比如 $\frac{a}{b}$。
行间公式
行间公式使用 $$ $$ 或 \[ \] 包裹,比如 $$\frac{a}{b}$$ 或 \[ \frac{a}{b} \]。
这两种环境仅支持单行公式,换行符在其中无效。
公式环境
行间公式还可以用 \begin{环境名} \end{环境名} 来包裹,其中环境名可以是:
1 2
| align(*), alignat(*), flalign(*) equation(*), gather(*), ...
|
其中,带 * 的环境不会对公式进行编号,不带 * 的环境会对公式进行编号,使用 \notag 或 \nonumber 可以取消一行公式的编号。
equation(*) 也只能输入单行公式,换行符在其中无效,但在其中嵌入 split 环境后就能输入多行公式了,好处是多行公式只有一个编号。
1 2 3 4 5 6 7 8
| \begin{equation} \begin{split} &\ x^4+2x^3+11x^2+18x+18 \\ = &\ (x^2+2x+2)(x^2+9) \\ = &\ (x^2+x+3)^2+(2x+3)^2 \end{split} \label{eq:1} \end{equation}
|
== x4+2x3+11x2+18x+18 (x2+2x+2)(x2+9) (x2+x+3)2+(2x+3)2 使用 \label{eq:1} 给公式添加标签,使用 \ref{eq:1} 引用公式(的编号),使用 \pageref{eq:1} 引用公式所在的页码。
\usepackage{hyperref} 可以使这些引用变成可点击跳转的超链接。
alignat 和 align 环境区别如下,align 整体稍微宽一点(不明显):
1 2 3 4
| \begin{alignat*}{3} 2x+3 &= 5678y-8765z &+ 20 \\ 4x &= y+z &+ 11112222 \end{alignat*}
|
2x+34x=5678y−8765z=y+z+20+11112222 1 2 3 4
| \begin{align*} 2x+3 &= 5678y-8765z &+ 20 \\ 5x &= y+z &+ 33334444 \end{align*}
|
2x+35x=5678y−8765z=y+z+20+33334444 gather(*) 环境中不能出现对齐符号 &,否则报错。此环境下所有行的公式全部居中对齐。
1 2 3 4
| \begin{gather*} 2x+3 = 5678y-8765z + 20 \\ 6x = y+z + 55556666 \end{gather*}
|
2x+3=5678y−8765z+206x=y+z+55556666 cases 环境对于带左大括号的情形特别有用,比如分段函数、方程联立等。
1 2 3 4 5 6
| \begin{align*} \begin{cases} 2x+3y=7 \\ 3x+5y=8 \end{cases} \end{align*}
|
{2x+3y=73x+5y=8 虽然用:
1 2 3 4 5 6 7 8
| \begin{align*} \left\{ \begin{aligned} & 2x+3y=7 \\ & 3x+5y=8 \end{aligned} \right. \end{align*}
|
也能实现相同的效果,但是显然 cases 环境更简洁。
公式环境中要加汉字,则必须置于 \text{} 之内。
实现文本居中对齐使用 center 环境:
1 2 3
| \begin{center}
\end{center}
|
以上给公式外围加边框用的是:
章节序号
想让公式编号带上“章”序号或“节”序号,可使用:
1 2
| \numberwithin{equation}{chapter} \numberwithin{equation}{section}
|
不想让公式、表格、图片带上章号、节号,可使用:
1 2 3
| \usepackage{chngcntr} \counterwithout{equation}{chapter} \counterwithout{equation}{section}
|
其中的 equation 还可以换成 table 和 figure。
\usepackage{chngcntr} 不能与 \usepackage[leqno]{amsmath} 同时使用,否则会报错:Option clash for package amsmath.
但可以用 \usepackage{amsmath},加 [leqno] 的效果是让公式编号位于左侧,如果要实现这一效果,可以使用 \documentclass[a4paper,leqno]{article} 更改编号样式:
1 2
| \renewcommand{\thetable}{\Roman{table}} \renewcommand{\thefigure}{\Roman{figure}}
|
对齐方式
要让全文的行间公式居左 (默认是居中),使用:
1
| \usepackage[fleqn]{amsmath}
|
如果同时需要公式编号在左侧,那么使用:
1
| \usepackage[leqno ,fleqn]{amsmath}
|
如果只想要让单个公式居左,使用:
1 2 3
| \begin{flalign} E=mc^2 && \end{flalign}
|
特别注意最后的两个对齐符号 &&,如果漏掉,则没有居左的效果。
矩阵和行列式
(a11a21a12a22) 1 2 3 4
| \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix}
|
[a11a21a12a22] 用 bmatrix 环境,a11a21a12a22 用 vmatrix 环境,a11a21a12a22 用 matrix 环境,{a11a21a12a22} 用 Bmatrix 环境,a11a21a12a22 用 Vmatrix 环境。
三种省略号:⋯ \cdots,⋮ \vdots,⋱ \ddots。
函数
1 2 3 4
| \arg, \exp, \inf, \sup, \max, \min \sin, \sinh, \arcsin, \cos, \cosh, \arccos \tan, \tanh, \arctan \log, \ln, \lg, \deg, \det, \dim
|
这些函数只能在公式环境中使用,而且字体是正体,如果不在前面加 \,直接输入 sin、cos、log,字体就是斜体。
特殊字母
公式环境中,某些特殊含义的字母需要用正体而非斜体,比如自然对数底数e,虚数单位i 和微分符号d,使用 \mathrm{} 包裹即可,比如:
1 2 3 4 5 6
| \begin{align*} \mathrm{e}^{\mathrm{i}\theta}= \cos\theta+{\mathrm{i}}\sin\theta \\ \int_0^{+\infty}\frac{x}{\mathrm{e}^x -1}\mathrm{d}x=\frac{\pi^2}{6} \end{align*}
|
eiθ=cosθ+isinθ∫0+∞ex−1xdx=6π2 公式环境下e、i、d 都不用正体的效果是:e、i、d。
newcommand
\newcommand{}{} 是 LaTeX 的一个命令,用于定义新的命令。
1
| \newcommand{\commandname}{definition}
|
其中,commandname 是命令的名称,definition 是命令的定义。
类似于 C 语言中的 #define。
比如嫌 \quad 太麻烦,可以先:
然后就可以使用 \q 代替 \quad 了。
希腊字母
| 字母名 | 小写 | LaTeX 命令 | 大写 | LaTeX 命令 | 变量形式 | LaTeX 命令 |
|---|
| 阿尔法 | α | \alpha | A | \Alpha | | |
| 贝塔 | β | \beta | B | \Beta | | |
| 伽马 | γ | \gamma | Γ | \Gamma | | |
| 德尔塔 | δ | \delta | Δ | \Delta | | |
| 艾普西隆 | ϵ | \epsilon | E | \Epsilon | ε | \varepsilon |
| 泽塔 | ζ | \zeta | Z | \Zeta | | |
| 伊塔 | η | \eta | H | \Eta | | |
| 西塔 | θ | \theta | Θ | \Theta | ϑ | \vartheta |
| 约塔 | ι | \iota | I | \Iota | | |
| 卡帕 | κ | \kappa | K | \Kappa | | |
| 拉姆达 | λ | \lambda | Λ | \Lambda | | |
| 谬 | μ | \mu | M | \Mu | | |
| 纽 | ν | \nu | N | \Nu | | |
| 克西 | ξ | \xi | Ξ | \Xi | | |
| 奥密克戎 | ο | \omicron | O | \Omicron | | |
| 派 | π | \pi | Π | \Pi | ϖ | \varpi |
| 柔 | ρ | \rho | P | \Rho | ϱ | \varrho |
| 西格马 | σ | \sigma | Σ | \Sigma | ς | \varsigma |
| 陶 | τ | \tau | T | \Tau | | |
| 宇普西隆 | υ | \upsilon | Υ | \Upsilon | | |
| 斐 | ϕ | \phi | Φ | \Phi | φ | \varphi |
| 恺 | χ | \chi | X | \Chi | | |
| 普西 | ψ | \psi | Ψ | \Psi | | |
| 欧米伽 | ω | \omega | Ω | \Omega | | |
字母上下符号
| 符号 | LaTeX 命令 |
|---|
| a、a | \overline{a}、\underline{a} |
| a、a | \overbrace{a}、\underbrace{a} |
| a、a、a | \overleftarrow{a}、\overrightarrow{a}、\overleftrightarrow{a} |
| a、a、a | \underleftarrow{a}、\underrightarrow{a}、\underleftrightarrow{a} |
| ab、ab、ba | \stackrel{b}{a}、\overset{b}{a}、\underset{b}{a} |
| aˊ、aˋ | \acute{a}、\grave{a} |
| aˉ、a、a˘ | \bar{a}、\vec{a}、\breve{a} |
| a~、abc | \tilde{a}、\widetilde{abc} |
| a^、abc | \hat{a}、\widehat{abc} |
| aˇ、abc | \check{a}、\widecheck{abc} |
| a˙、a¨ | \dot{a}、\ddot{a} |
中文下划线与删除线
需要使用 ulem 宏包。
| 符号 | LaTeX 命令 |
|---|
| 单下划线 | \uline{单下划线} |
| 双下划线 | \uuline{双下划线} |
| 波浪线 | \uwave{波浪线} |
| 虚下划线 | \udash{虚下划线} |
| 点下划线 | \dotuline{点下划线} |
| 删除线 | \sout{删除线} |
箭头
| 符号 | LaTeX 命令 |
|---|
| →、← | \to、\gets |
| →、← | \rightarrow、\leftarrow |
| ⇒、⇐ | \Rightarrow、\Leftarrow |
| ⟶、⟵ | \longrightarrow、\longleftarrow |
| ⟹、⟸ | \Longrightarrow、\Longleftarrow |
| ↦ | \mapsto |
| ↪、↩ | \hookrightarrow、\hookleftarrow |
| ⇀、↼ | \rightharpoonup、\leftharpoonup |
| ⇁、↽ | \rightharpoondown、\leftharpoondown |
| ⇌ | \rightleftharpoons |
| ↑、↓ | \uparrow、\downarrow |
| ⇑、⇓ | \Uparrow、\Downarrow |
| ↕ | \updownarrow |
| ↗、↘ | \nearrow、\searrow |
| ↙、↖ | \swarrow、\nwarrow |
| ⇝ | \leadsto |
表格
三线表,需要使用 booktabs 宏包和 tabularx 宏包。
1 2 3 4 5 6 7
| \usepackage{booktabs} \usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X} \newcolumntype{R}{>{\raggedleft\arraybackslash}X} \newcolumntype{L}{>{\raggedright\arraybackslash}X}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| \begin{table}[htbp] \caption{表格标题} \centering \renewcommand{\arraystretch}{1} \begin{tabularx}{\textwidth}{CCC} \toprule \textbf{第一列} & \textbf{第二列} & \textbf{第三列} \\ \midrule A & 1 & 4 \\ B & 2 & 5 \\ C & 3 & 6 \\ \bottomrule \end{tabularx} \label{tab:1} \end{table}
|

图片
1 2 3 4 5 6
| \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{image.png} \caption{图片标题} \label{fig:1} \end{figure}
|
位置控制:
| 位置 | 说明 |
|---|
| h | here |
| t | top |
| b | bottom |
| H | Here,比 h 更强制,需要 \usepackage{float} |
| p | page containing only floats, such as figures and tables. |
| ! | allows to ignore certain parameters of LaTeX for float placement. |
宽度控制:
\linewidth:当前行的宽度\columnwidth:当前分栏的宽度\textwidth:整个页面版芯的宽度\paperwidth:整个页面纸张的宽度
页眉页脚
1 2 3 4 5 6 7
| \pagestyle{fancy} \lhead{ 左页眉 } \chead{ 中页眉 } \rhead{ 右页眉 } \lfoot{ 左页脚 } \cfoot{ 中页脚 } \rfoot{ 右页脚 }
|
水印
1 2 3 4 5 6 7
| \usepackage{draftwatermark} \usepackage{everypage} \SetWatermarkText{ 水印文本 } \SetWatermarkLightness{0} \SetWatermarkAngle{45} \SetWatermarkColor{gray} \SetWatermarkScale{0.5}
|
脚注
空白页
1 2 3
| \newpage \clearpage \cleardoublepage
|
目录
1 2 3
| \tableofcontents \setcounter{tocdepth}{3} \setcounter{secnumdepth}{3}
|
文本控制
字体大小
| 命令 | 说明 | 示例 |
|---|
\tiny | 最小 | 字体大小 |
\scriptsize | 极小 | 字体大小 |
\footnotesize | 很小 | 字体大小 |
\small | 较小 | 字体大小 |
\normalsize | 正常 | 字体大小 |
\large | 较大 | 字体大小 |
\Large | 很大 | 字体大小 |
\LARGE | 极大 | 字体大小 |
\huge | 巨大 | 字体大小 |
\Huge | 最大 | 字体大小 |
文本行间距
粗体与斜体
1 2
| \textbf{abc} \textit{abc}
|
同时使用粗体和斜体:
字体族
设置英文字体:
1
| \setmainfont{Microsoft YaHei}
|
设置 C(中文)、J(日文)、K(韩文) 字体:
1 2 3
| \setCJKmainfont{SimSun} \setCJKmainfont{SimHei} \setCJKmainfont{KaiTi}
|
局部修改
1 2 3
| \newfontfamily{\consolas}{Consolas}
{\consolas text}
|
字体颜色
章节
| 命令 | 说明 |
|---|
\part{} | 分卷 |
\chapter{} | 章 |
\section{} | 节/一级标题 |
\subsection{} | 小节/二级标题 |
\subsubsection{} | 小小节/三级标题 |
列表
无序列表
1 2 3 4 5 6
| \begin{itemize} \item \item \item \item \end{itemize}
|
有序列表
1 2 3 4 5 6 7
| \usepackage{enumerate} \begin{enumerate}[1.] \item \item \item \item \end{enumerate}
|
常用长度单位
pt:point,磅,1pt=0.351mmmm:millimeter,毫米cm:centimeter,厘米in:inch,英寸,1in=25.4mmex:当前字体中字母 x 的高度em:当前字体中字母 M 的宽度
英文字母变体
\mathcal{},只对大写字母有效:
ABCDEFGHIJKLMNOPQRSTUVWXYZ \mathscr{},只对大写字母有效,需 \usepackage{mathrsfs}:
ABCDEFGHIJKLMNOPQRSTUVWXYZ \mathbb{},只对大写字母有效,需 \usepackage{amssymb}:
ABCDEFGHIJKLMNOPQRSTUVWXYZ \mathfrak{},对大小写字母都有效,需 \usepackage{amssymb}:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 多栏
1 2 3 4 5 6 7
| \begin{multicols}{2} ...
\columnbreak
... \end{multicols}
|
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| \lstset { tabsize=4, captionpos=b, numbers=left, numbersep=1em, sensitive=true, showtabs=false, frame=shadowbox, breaklines=true, keepspaces=true, showspaces=false, showstringspaces=false, breakatwhitespace=false, basicstyle=\yaheiconsola, keywordstyle=\color{NavyBlue}, commentstyle=\color{codegreen}, numberstyle=\color{gray}, stringstyle=\color{PineGreen!90!black}, rulesepcolor=\color{red!20!green!20!blue!20} }
|
1
| \lstinputlisting[language=python]{code/main.py}
|
