跳到主要内容

在 Markdown 写数学公式 KaTeX

从行内公式到矩阵、积分与多行推导,这份示例把常见的 TeX 写法逐条渲染一遍,顺便验证 KaTeX 集成。

1531 字

写法遵循 Markdown 数学语法的通用约定,$...$ 是行内公式,$$...$$ 是独立公式。

行内公式

行内公式用一对 $ 包住,长度不受限制,也能和正文自然混排。勾股定理是 a2+b2=c2a^2 + b^2 = c^2,当 a=3a = 3、b=4b = 4 时 c=5c = 5。常见的极限写法是 lim⁡x→0sin⁡xx=1\lim_{x \to 0} \dfrac{\sin x}{x} = 1。

独立公式

独立公式用 $$ 包住,自己独占一行,上下各留一个空行。它会被居中显示,行内公式则跟着文字走:

∫−∞+∞e−x2 dx=π\int_{-\infty}^{+\infty} e^{-x^2}\,\mathrm{d}x = \sqrt{\pi}

上面这条高斯积分是概率论里最常见的结论之一,π\sqrt{\pi} 这个结果本身就说明了为什么正态分布的归一化系数里会出现 π\pi。

分式、根式与上下标

二次方程求根公式把分式、根式与下标凑在了一起:

x1,2=−b±b2−4ac2ax_{1,2} = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

分式默认按行内尺寸排版,需要更醒目时用 \dfrac;开 nn 次方用 \sqrt[n]{},例如 273=3\sqrt[3]{27} = 3。上下标会自动处理嵌套,e−x2e^{-x^2} 里的指数是整体而不是只有 −x-x。

求和、连乘与积分

上下限写在 \sum、\prod、\int 后面,块级公式里会自动排到符号的上下方:

∑k=1nk2=n(n+1)(2n+1)6,∏p 为素数11−p−s=ζ(s)\sum_{k=1}^{n} k^2 = \frac{n(n+1)(2n+1)}{6}, \qquad \prod_{p\ \text{为素数}} \frac{1}{1 - p^{-s}} = \zeta(s)

多重积分与偏导同理:

∂2u∂t2=c2∇2u\frac{\partial^2 u}{\partial t^2} = c^2 \nabla^2 u

矩阵与分段函数

pmatrix、bmatrix、vmatrix 分别给出圆括号、方括号和竖线,行与行用 \\ 分隔,列与列用 & 对齐:

A=(abcd),det⁡A=∣abcd∣=ad−bcA = \begin{pmatrix} a & b \\ c & d \end{pmatrix}, \qquad \det A = \begin{vmatrix} a & b \\ c & d \end{vmatrix} = ad - bc

分段函数用 cases,每行末尾加 \\:

f(x)={x2,x≥0,−x,x<0.f(x) = \begin{cases} x^2, & x \ge 0, \\ -x, & x < 0. \end{cases}

多行推导

需要逐行对齐的推导用 aligned,& 决定等号对齐的位置:

(x+y)2=(x+y)(x+y)=x2+2xy+y2\begin{aligned} (x + y)^2 &= (x + y)(x + y) \\ &= x^2 + 2xy + y^2 \end{aligned}

公式里的文字

数学环境默认把字母当作变量,因此会排成斜体。真要写中文或说明性文字时,用 \text{} 包起来:

准确率=预测正确的样本数样本总数×100%\text{准确率} = \frac{\text{预测正确的样本数}}{\text{样本总数}} \times 100\%

单位与微分符号通常用 \mathrm{} 正体,例如  dx\,\mathrm{d}x 和 5 ms5\,\mathrm{ms},这样不会和变量 dd、mm、ss 混淆。

化学方程式

化学式和反应式用 mhchem 的 \ce{} 写,离子、同位素、沉淀与气体符号都能识别,不必手写上下标:

2 HX2+OX2→2 HX2O\ce{2H2 + O2 -> 2H2O}

可逆反应用 <=>,条件写在箭头上方的方括号里:

NX2+3 HX2⇌催化剂高温高压2 NHX3\ce{N2 + 3H2 <=>[{\text{高温高压}}][{\text{催化剂}}] 2NH3}

沉淀、气体与电荷用 v、^、^2- 表示,mhchem 会把它们排到正确的位置:

SOX4X2−+BaX2+→BaSOX4↓,2 Na+2 HX2O→2 NaOH+HX2↑\ce{SO4^2- + Ba^2+ -> BaSO4 v}, \qquad \ce{2Na + 2H2O -> 2NaOH + H2 ^}

行内也能用,例如水的化学式是 HX2O\ce{H2O},碳酸钙分解写 CaCOX3→高温CaO+COX2↑\ce{CaCO3 ->[高温] CaO + CO2 ^}。物理量与单位交给 \pu{}:1.5 mol L−1\pu{1.5 mol L-1}、298 K\pu{298 K}、9.8 m s−2\pu{9.8 m s-2}。

常用符号速查

下面分两张表:先是最常打错的希腊字母,再是运算、关系与箭头。代码列可以原样抄进 $...$ 里。

希腊字母

小写用 \alpha 这样的命令,大写把首字母改大写(\Gamma);个别字母有变体(例如 \varphi)。

名称 代码 渲染结果
Alpha \alpha α\alpha
Beta \beta β\beta
Gamma \Gamma Γ\Gamma
gamma \gamma γ\gamma
Delta \Delta Δ\Delta
delta \delta δ\delta
Theta \theta θ\theta
Lambda \lambda λ\lambda
Mu \mu μ\mu
Pi \pi π\pi
Sigma \Sigma Σ\Sigma
sigma \sigma σ\sigma
Phi \varphi φ\varphi
Omega \Omega Ω\Omega
omega \omega ω\omega

运算、关系与箭头

含义 代码 渲染结果
无穷 \infty ∞\infty
右箭头 \rightarrow →\rightarrow
蕴含 \Rightarrow ⇒\Rightarrow
小于等于 \le ≤\le
不等于 \ne ≠\ne
正负 \pm ±\pm
乘号 \times ×\times
点乘 \cdot ⋅\cdot
极限 \lim_{n \to \infty} lim⁡n→∞\lim_{n \to \infty}
求和 \sum_{k=1}^{n} ∑k=1n\sum_{k=1}^{n}
积分 \int_a^b ∫ab\int_a^b
根号 \sqrt{x} x\sqrt{x}
偏导 \partial ∂\partial
梯度 \nabla f ∇f\nabla f
属于 x \in A x∈Ax \in A
任意 \forall x ∀x\forall x
存在 \exists x ∃x\exists x
约等于 a \approx b a≈ba \approx b
向量 \vec{v} v⃗\vec{v}
范数 \lVert x \rVert_2 ∥x∥2\lVert x \rVert_2
组合数 \binom{n}{k} (nk)\binom{n}{k}

更多 KaTeX 语法请参考 KaTeX Supported Functions。

几个容易踩的坑

  • 美元符号要转义:正文里的价格写成 \$5,否则两个 $ 之间的内容会被当成公式。若要彻底避免,可在 src/config/math.ts 里把 inline 设为 false,只保留 $$...$$。
  • 代码里不解析公式:行内代码 $HOME 和代码块里的 $ 都原样保留,写 shell 片段不用转义。
  • 反斜杠别丢:\frac、\sum 里的反斜杠在 Markdown 里不需要额外转义,但写进不支持公式的地方(例如某些代码示例)时要自己补齐。
  • 出错时会红字提示:无法解析的公式不会让构建失败,页面上会以红色显示原始片段,构建日志里同时给出一条警告,方便定位。
提示

独立公式的 $$ 一定要单独占一行,并且和上下文之间留空行;挤在段落里会退化成行内公式。

配置在 src/config/math.ts:可以关闭行内 $ 解析、调整公式相对正文的字号倍数(默认行内 1.15、块级 1.4)、允许 \href 之类的命令,也可以注册常用宏(例如 { "\\RR": "\\mathbb{R}" }),省去每篇文章重复写长公式。化学式与单位由 mhchem 扩展提供,\ce{}、\pu{} 直接可用,不需要额外配置。

版权声明

本文由 XiaYe 创作,采用 CC BY-NC-SA 4.0 许可协议;转载请注明出处。

作者
XiaYe
发布于
许可协议
CC BY-NC-SA 4.0

分享这篇文章:

相关文章

评论

留下你的想法,或看看别人说了什么。