数学公式
LaTeX 以其强大的数学公式排版能力著称,这是它成为学术写作首选工具的重要原因之一。本章将详细介绍如何在 LaTeX 中编写专业、美观的数学公式。
数学模式深入理解
LaTeX 的数学排版基于"数学模式"的概念。在数学模式下,LaTeX 使用特殊的字体、间距规则和排版逻辑来处理公式。
为什么需要数学模式?
普通文本模式和数学模式的排版规则完全不同:
| 排版规则 | 普通文本 | 数学模式 |
|---|---|---|
| 字体 | 斜体用于强调 | 变量斜体,运算符正体 |
| 间距 | 单词间有空格 | 根据运算符自动调整 |
| 连字 | 启用(如 fi, fl) | 禁用 |
| 断行 | 允许单词间断行 | 公式通常不换行 |
| 标点 | 文本标点 | 数学标点(如 $x, y$) |
行内公式与行间公式
行内公式嵌入在段落文本中,字体略小,适合短公式:
著名的质能方程 $E = mc^2$ 由爱因斯坦提出。
行内公式会压缩上下标以减少行距变化:
% 行内:上下标在右侧
$\sum_{i=1}^n x_i$
% 对比:行间公式上下标在上下
\[\sum_{i=1}^n x_i\]
行间公式独立成行,居中显示,使用完整尺寸:
重要的积分公式:
\[
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
\]
推荐与不推荐的语法
% 推荐方式
$E = mc^2$ % 简洁,兼容性好
\[E = mc^2\] % 标准,不会产生不良间距
% 不推荐方式
$$E = mc^2$$ % 已过时,可能产生错误间距
为什么不推荐 $$...$$?
$$ 是 TeX 的原始语法,在 LaTeX 中存在以下问题:
- 不与
fleqn文档选项正确配合 - 可能产生不正确的垂直间距
- 无法使用
amsmath提供的高级功能
数学模式中的文本
在数学模式中插入普通文本需要使用 \text 命令:
\[
f(x) = \begin{cases}
x^2, & \text{如果 } x \geq 0 \\
-x^2, & \text{如果 } x `<` 0
\end{cases}
\]
常见错误:直接在数学模式中写中文或英文单词
% 错误:中文和英文单词会变成斜体变量
\[ x 是正数 \] % "是"和"正数"会显示异常
% 正确:使用 \text 命令
\[ x \text{ 是正数} \]
amsmath 宏包配置
amsmath 是数学排版的必备宏包,提供了丰富的数学环境和命令。建议在所有包含数学公式的文档中加载它。
基本配置
\usepackage{amsmath} % 核心数学功能
\usepackage{amssymb} % 扩展数学符号
\usepackage{mathtools} % amsmath 的扩展(可选但推荐)
mathtools 的优势
mathtools 是 amsmath 的超集,修复了一些问题并添加了新功能:
\usepackage{mathtools}
% 改进的括号自动调整
\[
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\abs{x} % 不调整大小
\abs*{\frac{a}{b}} % 自动调整大小
\abs[\bigg]{x} % 手动指定大小
\]
% dcases 环境:自动使用 displaystyle
\[
f(x) = \begin{dcases}
\frac{x^2}{2}, & x \geq 0 \\
-\frac{x^2}{2}, & x `<` 0
\end{dcases}
\]
基本运算详解
四则运算与运算符
LaTeX 区分"运算符"和"普通符号":
% 运算符:自动处理间距
$a + b$ % 加号是运算符,前后有适当间距
% 普通符号:无特殊间距
$a \times b$ % 乘号也是运算符
$a \cdot b$ % 点乘
% 比较不同乘号的用法
$a \cdot b$ % 点乘,用于标量积
$a \times b$ % 叉乘,用于向量积
$a b$ % 省略乘号(变量并排)
上下标深入理解
上下标可以嵌套和组合,但要注意花括号的使用:
% 单字符上下标
$x^2$ % 上标
$x_1$ % 下标
% 多字符必须用花括号
$x^{10}$ % 正确:x 的 10 次方
$x^10$ % 错误:输出 x¹0
% 嵌套上下标
$x^{y^z}$ % x 的 y^z 次方
$x_{i_j}$ % x 的 i_j 下标
% 同时使用上下标
$x_1^2$ % 下标在前或后都可以
$x^2_1$ % 效果相同
% 复合结构
$^{235}_{92}U$ % 铀-235的核素表示
分数的正确使用
LaTeX 提供三种分数命令,适用于不同场景:
% \frac:标准分数
$\frac{a}{b}$ % 标准大小
% \dfrac:display分数,强制使用行间公式大小
$\dfrac{a}{b}$ % 较大,适合行内需要强调的分数
% \tfrac:text分数,强制使用行内公式大小
$\tfrac{a}{b}$ % 较小,适合行间公式中的小分数
% 连续分数
\[
\cfrac{1}{1+\cfrac{1}{1+\cfrac{1}{1+x}}}
\]
选择建议:
| 场景 | 推荐命令 |
|---|---|
| 行内普通分数 | \frac 或 \tfrac |
| 行间主公式分数 | \frac 或 \dfrac |
| 行间公式中的小分数 | \tfrac |
| 连分数 | \cfrac |
根号的细节
$\sqrt{x}$ % 平方根
$\sqrt[3]{x}$ % 立方根
$\sqrt[n]{x}$ % n 次根
% 嵌套根号
$\sqrt{\sqrt[3]{x}}$
% 根号内的分数会自动调整大小
$\sqrt{\frac{a}{b}}$
求和、积分与极限
求和符号
求和符号的位置根据公式环境自动调整:
% 行内:上下标在右侧
$\sum_{i=1}^{n} x_i$
% 行间:上下标在上下
\[\sum_{i=1}^{n} x_i\]
% 强制上下位置(使用 \limits)
$\sum\limits_{i=1}^{n} x_i$
% 取消上下位置(使用 \nolimits)
\[\sum\nolimits_{i=1}^{n} x_i\]
多条件求和:
% 使用 \substack 处理多行条件
\[
\sum_{\substack{0 \le i \le n \\ 0 \le j \le m}} a_{ij}
\]
% 或使用 aligned
\[
\sum_{\begin{aligned} &i=1,\ldots,n \\ &j=1,\ldots,m \end{aligned}} a_{ij}
\]
积分符号
% 基本积分
$\int_a^b f(x) dx$ % dx 前应有空格
% 推荐添加小空格
$\int_a^b f(x) \, dx$ % \, 提供小空格
% 多重积分
$\iint_D f(x,y) \, dx \, dy$
$\iiint_V f(x,y,z) \, dx \, dy \, dz$
% 围道积分
$\oint_C f(z) \, dz$
% 积分限的特殊位置
$\int\limits_a^b f(x) \, dx$
微分符号的最佳实践:
% 定义微分命令(推荐放在导言区)
\newcommand{\dif}{\mathrm{d}} % 直立的 d
% 使用
$\int_a^b f(x) \, \dif x$
% 或使用 physics 宏包
\usepackage{physics}
$\int_a^b f(x) \dd x$ % \dd 自动处理
极限
% 基本极限
$\lim_{x \to \infty} f(x)$
% 行间显示
\[\lim_{x \to \infty} f(x)\]
% 带方向的极限
\[\lim_{x \to 0^+} f(x)\] % 右极限
\[\lim_{x \to 0^-} f(x)\] % 左极限
% 多变量极限
\[\lim_{\substack{x \to 0 \\ y \to 0}} f(x,y)\]
矩阵排版
各种矩阵环境
amsmath 提供了多种矩阵环境:
| 环境 | 括号类型 | 示例 |
|---|---|---|
matrix | 无括号 | |
pmatrix | 圆括号 () | |
bmatrix | 方括号 [] | |
Bmatrix | 花括号 | |
vmatrix | 单竖线 || | |
Vmatrix | 双竖线 ||| |
% 基本矩阵
\[
\begin{pmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23}
\end{pmatrix}
\]
% 分块矩阵
\[
\begin{pmatrix}
A & B \\
C & D
\end{pmatrix}
\]
% 带省略号的大型矩阵
\[
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{pmatrix}
\]
行内小矩阵
对于行内公式中的小型矩阵,使用 smallmatrix 环境:
% 小矩阵(无括号)
$(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix})$
% 使用 mathtools 的 psmallmatrix(有括号)
$\begin{psmallmatrix} a & b \\ c & d \end{psmallmatrix}$
多行公式对齐
align 环境
align 是最常用的多行公式环境,使用 & 指定对齐位置:
% 多个等式对齐
\begin{align}
a &= b + c \\
&= d + e + f
\end{align}
% 多组对齐
\begin{align}
a &= b &\quad c &= d \\
e &= f &\quad g &= h
\end{align}
% 不编号的行(使用 \nonumber 或 \notag)
\begin{align}
a &= b + c \nonumber \\
&= d + e \label{eq:example}
\end{align}
% 整个环境不编号
\begin{align*}
a &= b + c \\
&= d + e
\end{align*}
gather 环境
当公式不需要对齐时使用 gather:
\begin{gather}
a = b + c \\
d = e + f + g
\end{gather}
multline 环境
对于超长公式,使用 multline 自动分段:
\begin{multline}
a + b + c + d + e + f + g + h + i \\
+ j + k + l + m + n + o + p
\end{multline}
split 环境
在 equation 环境内分行:
\begin{equation}
\begin{split}
(a + b)^2 &= a^2 + 2ab + b^2 \\
(a - b)^2 &= a^2 - 2ab + b^2
\end{split}
\end{equation}
环境选择指南
| 场景 | 推荐环境 |
|---|---|
| 多个等式,对齐等号 | align |
| 多个等式,无需对齐 | gather |
| 超长单公式 | multline |
| 单编号的分行公式 | equation + split |
| 条件定义(分段函数) | cases |
定界符与括号
自动调整大小
使用 \left 和 \right 自动匹配括号大小:
% 自动调整
\[
\left( \frac{a}{b} \right)
\]
% 支持多种括号
\left( ... \right) % 圆括号
\left[ ... \right] % 方括号
\left\{ ... \right\} % 花括号(需转义)
\left| ... \right| % 竖线
\left\| ... \right\| % 双竖线
\left\langle ... \right\rangle % 尖括号
注意事项
% \left 和 \right 必须成对出现
% 如果只需要一边的括号,用 . 表示空
\[
\left. \frac{\dif y}{\dif x} \right|_{x=0}
\]
% 有时自动调整不够精确,可以手动调整
\[
\bigl( \Bigr( \biggl( \Biggl(
\]
% 大小顺序:`\big` `<` `\Big` `<` `\bigg` `<` `\Bigg`
推荐的括号命令
使用 mathtools 的 \DeclarePairedDelimiter 创建语义化的括号命令:
% 在导言区定义
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\DeclarePairedDelimiter{\braket}{\langle}{\rangle}
\DeclarePairedDelimiter{\set}{\{}{\}}
% 使用
$\abs{x}$ % 固定大小
$\abs*{\frac{a}{b}}$ % 自动调整
$\abs[\bigg]{x}$ % 手动指定
$\norm{\mathbf{v}}$
$\braket{\psi|\phi}$
`$\set{x \in \mathbb{R} \mid x > 0}$`
数学字体
LaTeX 提供多种数学字体,用于表示不同的数学对象:
| 命令 | 字体 | 用途 |
|---|---|---|
\mathbb{R} | 黑板粗体 | 数集(, , ) |
\mathbf{x} | 粗体 | 向量、矩阵 |
\mathcal{L} | 花体 | 算子、变换(如拉格朗日量 ) |
$\mathscr{L}$ | 手写体 | 高级花体 |
\mathfrak{g} | 哥特体 | 李代数等 |
\mathsf{x} | 无衬线 | 特殊标识 |
\mathtt{x} | 等宽 | 代码、算法 |
% 常用数集符号
$\mathbb{R}$ - 实数集
$\mathbb{C}$ - 复数集
$\mathbb{N}$ - 自然数集
$\mathbb{Z}$ - 整数集
$\mathbb{Q}$ - 有理数集
% 向量表示
$\mathbf{v} = (v_1, v_2, v_3)$
% 算子
$\mathcal{L}[f] = \int_0^\infty f(t) e^{-st} dt$
% 哥特体(李代数)
$\mathfrak{sl}(n, \mathbb{C})$
黑体向量的最佳实践:
% 使用 bm 宏包获得更好的粗体效果
\usepackage{bm}
$\bm{x}$ % 粗斜体向量
$\mathbf{x}$ % 粗正体
% 希腊字母粗体
$\bm{\alpha}$ % 需要 bm 宏包
定理环境
定义定理环境
% 在导言区定义
\usepackage{amsthm}
\theoremstyle{plain} % 斜体正文
\newtheorem{theorem}{定理}[section]
\newtheorem{lemma}[theorem]{引理}
\newtheorem{corollary}[theorem]{推论}
\theoremstyle{definition} % 正体正文
\newtheorem{definition}{定义}[section]
\newtheorem{example}{例}[section]
\theoremstyle{remark} % 正体正文,无编号
\newtheorem*{remark}{注}
使用定理环境
\begin{theorem}[勾股定理]
直角三角形两条直角边的平方和等于斜边的平方。
\end{theorem}
\begin{proof}
设直角边为 $a$、$b$,斜边为 $c$。
通过面积法可以证明 $a^2 + b^2 = c^2$。
\end{proof}
\begin{definition}
设 $f: \mathbb{R} \to \mathbb{R}$,若对任意 $x, y$ 有
$f(x+y) = f(x) + f(y)$,则称 $f$ 为加性函数。
\end{definition}
自定义定理样式
\newtheoremstyle{mytheorem}
{10pt} % 上方间距
{10pt} % 下方间距
{\itshape} % 正文字体
{} % 缩进
{\bfseries} % 标题字体
{.} % 标题后标点
{ } % 标题后间距
{\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}
\theoremstyle{mytheorem}
\newtheorem{proposition}{命题}
常见问题与解决方案
问题1:公式编号不正确
% 问题:公式编号与引用不匹配
% 解决:多次编译
xelatex document.tex % 第一遍:生成标签
xelatex document.tex % 第二遍:更新引用
问题2:公式过长超出页边
% 方案1:使用 multline 环境
\begin{multline}
很长的公式...
\end{multline}
% 方案2:手动分行
\begin{align}
f(x) &= A + B + C \\
&\quad + D + E
\end{align}
% 方案3:使用 \resizebox(不推荐,仅作应急)
\resizebox{.9\linewidth}{!}{$很长的公式$}
问题3:行内公式破坏行距
% 问题:分数或大型公式使行距不均匀
% 解决:使用 \smash 或 \mathclap
% 使用 smash 隐藏高度
$\smash{\dfrac{a}{b}}$
% 使用 mathtools 的 \mathclap 处理宽公式
$\sum_{\mathclap{i=1,\ldots,n}} a_i$
问题4:矩阵中的点号位置不正确
% 水平点
$\cdots$ % 居中水平点(运算符之间)
$\ldots$ % 底部水平点(列表项之间)
$\vdots$ % 垂直点
$\ddots$ % 对角点
% 正确的矩阵点号使用
\[
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{pmatrix}
\]
问题5:中文数学字体问题
% 使用 ctex 宏包自动处理
\usepackage{ctex}
% 或使用 xeCJK 单独配置
\usepackage{xeCJK}
\setCJKmainfont{SimSun}
宏包推荐
| 宏包 | 用途 |
|---|---|
amsmath | 数学公式核心(必需) |
amssymb | 扩展数学符号 |
mathtools | amsmath 扩展(推荐) |
bm | 粗体数学符号 |
physics | 物理学常用符号和宏 |
unicode-math | Unicode 数学字体(XeLaTeX/LuaLaTeX) |
breqn | 自动断行公式 |
小结
本章详细介绍了 LaTeX 数学公式排版:
- 数学模式:理解行内与行间公式的区别和使用场景
- amsmath 配置:使用
amsmath和mathtools增强数学排版 - 基本运算:正确使用上下标、分数、根号
- 求和积分极限:理解
\limits和\nolimits的作用 - 矩阵排版:掌握各种矩阵环境和省略号使用
- 多行公式:根据需求选择
align、gather、multline等环境 - 定界符:正确使用
\left/\right和手动调整 - 数学字体:区分数集、向量、算子等的字体表示
- 定理环境:定义和使用专业的定理样式
LaTeX 的数学排版功能是其最强大的特性之一,熟练掌握这些技巧可以显著提升学术论文的专业性。