数学公式贴到 Word 总是变成图片不能改、公众号里公式打不出来只能截图、知乎答案的复杂公式排版总是错位——这些是写技术文章 / 论文 / 学习笔记时最常踩的坑。
LaTeX + KaTeX 的组合解决了 90% 的问题:浏览器里写源码实时预览、按目标平台选导出格式、保留源码可反复修改。这篇把从源码到各类平台的完整路径讲清楚。
KaTeX、MathJax、本地 TeX Live:三层方案
| 方案 | 包大小 | 渲染速度 | 语法覆盖 | 典型场景 |
|---|---|---|---|---|
| KaTeX | ~280 KB(含字体) | 毫秒级 | 99% 常用语法 | 公众号 / 笔记 / 简单数学题 / 90% 日常公式 |
| MathJax | 5 MB+ | 比 KaTeX 慢 5–10× | 接近完整 LaTeX | 自建博客大量公式、复杂学术内容 |
| 本地 TeX Live / Overleaf | 数 GB | 分钟级 | 完整 LaTeX + TikZ + 自定义包 | 整篇论文、TikZ 画图、复杂排版 |
本工具用 KaTeX——核心包 280 KB 已经很轻,覆盖:
- 分数、根号(含 n 次根)、上下标(多字符必须
{}包) - 求和
\sum、积分\int、极限\lim、连乘\prod - 希腊字母全集(
\alpha–\omega,大写首字母大写\Gamma) - 矩阵(
pmatrix/bmatrix/vmatrix/Vmatrix,括号 ()/[]//||/‖‖) - 分段函数(
cases)、方程组(aligned) - 数学字体(
\mathbb{R}、\mathcal{F}、\mathfrak{a}) - 大部分 AMS-LaTeX 符号(
\therefore、\because、\impliedby)
KaTeX 不覆盖的——\usepackage{tikz} 画图、chemfig 化学结构、\xymatrix 范畴论图表、自定义宏。这些需要 Overleaf 或本地 TeX。
两种模式:独占 vs 行内
| 模式 | LaTeX 写法 | 视觉效果 | 适用 |
|---|---|---|---|
| 独占(display) | $$ ... $$ 或 \[ ... \] | 居中独占一行,\sum / \int / 大分数正常大小 | 公式独立展示、论文公式块 |
| 行内(inline) | $ ... $ 或 \( ... \) | 压缩到字号高度,求和积分自动缩小 | 嵌入段落(如”已知 $x^2+y^2=1$”) |
示例对比:
% 独占模式
$$\sum_{i=1}^n i = \frac{n(n+1)}{2}$$
% 行内模式
已知 $\sum_{i=1}^n i = n(n+1)/2$,证明 ...
独占模式 \sum 上下限正常布局;行内模式 \sum 上下限压到右下角,整体高度跟字号齐平。
基本语法速查
% 分数
\frac{分子}{分母} % 普通分数
\dfrac{分子}{分母} % 行内强制显示样式(大分数)
\tfrac{分子}{分母} % 强制紧凑样式
% 根号
\sqrt{x} % 平方根
\sqrt[n]{x} % n 次根(注意 [] 是 n,{} 是 x)
% 上下标
x^2 % 单字符指数
x^{2n+1} % 多字符必须 {}
x_n % 下标
x_{i,j} % 多字符下标必须 {}
% 求和 / 积分 / 极限
\sum_{i=1}^n a_i % 求和
\int_0^{\infty} f(x) dx % 定积分
\iint % 二重积分(同理 \iiint / \oint)
\lim_{x \to 0} % 极限
\prod_{i=1}^n a_i % 连乘
% 希腊字母(小写)
\alpha \beta \gamma \delta \epsilon ... \omega
% 大写(首字母大写命令)
\Gamma \Delta \Theta \Lambda \Pi \Sigma \Phi \Psi \Omega
% 数学字体
\mathbb{R} ℝ % 黑板粗体(实数 / 整数 / 自然数)
\mathcal{F} 𝓕 % 花体(拓扑空间 / 范畴)
\mathfrak{g} 𝔤 % 哥特体(李代数)
\mathbf{v} % 加粗(向量)
% 内置宏(本工具)
\R \N \Z \Q \C % 简写:实数 / 自然数 / 整数 / 有理数 / 复数
三个常踩的 parse error
1. 花括号不配对(最高频)
\frac a b % ❌ KaTeX 严格要求 {}
\frac{a}{b} % ✓
x^2n+1 % ❌ 只把 2 当指数,n+1 变成正文
x^{2n+1} % ✓ 多字符指数必须 {}
\sqrt n+1 % ❌ 只把 n 放根号下,+1 在外
\sqrt{n+1} % ✓
记忆法:上下标、根号、分数、求和上下限——但凡内容超过一个字符,一律用 {} 包。
2. 命令拼错或大小写错
\alfa % ❌ 拼错(应该 \alpha)
\bata % ❌ 拼错(应该 \beta)
\thita % ❌ 拼错(应该 \theta)
\gamma % ✓ 小写 γ
\Gamma % ✓ 大写 Γ(两个是不同字符)
报错信息:Undefined control sequence: \alfa——直接告诉你哪个命令拼错了。
避免方法:用上方符号面板点选,希腊字母分类里点 α 自动插入 \alpha,不用手敲。
3. 中文标点混入半角公式
\frac{a}{b} % ❌ 中文花括号
\frac{a}{b} % ✓ 半角花括号
x,y \in \R % ❌ 中文逗号
x, y \in \R % ✓ 半角逗号
“变量" % ❌ 中文引号
"变量" % ✓ 半角引号
根因:从 Word / 微信 / 公众号复制公式过来时,常带入中文标点。复制完先检查标点。
番外:\\ 换行的陷阱
% ❌ 独立公式里 \\ 是错误
$$
a = b \\
c = d
$$
% ✓ 多行对齐用 aligned 环境
$$
\begin{aligned}
a &= b \\
c &= d
\end{aligned}
$$
\\ 只在 matrix / aligned / cases 等环境内有效。要换行写多行公式,必须包在 aligned(按 & 对齐等号)里。
矩阵、分段函数、方程组
矩阵
% pmatrix - 圆括号
\begin{pmatrix}
a & b \\
c & d
\end{pmatrix}
% bmatrix - 方括号 / vmatrix - 单竖线 / Vmatrix - 双竖线
\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}
% 大矩阵(行列式 / 对称展示)
\begin{vmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{vmatrix}
&列分隔\\换行\cdots/\vdots/\ddots中点 / 竖点 / 斜点(省略号)
分段函数
f(x) = \begin{cases}
x^2, & x \geq 0 \\
-x, & x < 0
\end{cases}
& 前是表达式,后是条件。
方程组
\begin{aligned}
2x + 3y &= 7 \\
4x - y &= 5
\end{aligned}
& 之前对齐——这里按 = 对齐。
五种导出格式:贴谁用哪个
| 导出 | 按钮 | 贴目标 | 优点 | 缺点 |
|---|---|---|---|---|
| LaTeX 源码 | ⎘ TeX | 知乎 / 飞书 / Notion / GitHub Markdown / 自建 KaTeX 博客 | 可反复编辑、矢量无损 | 目标必须支持渲染 |
| MathML | ⎘ MML | Word / WPS / Pages / LibreOffice | 变可编辑公式对象、跟字号缩放 | Word 渲染细节弱于 KaTeX |
| HTML | ⎘ HTML | 已集成 KaTeX 样式的页面(自建博客) | 不依赖 LaTeX 解析 | 不能贴 Word |
| PNG(3×) | ⤓ PNG | 公众号 / 小红书 / 微博 / 邮件 / PPT | 兼容性最广、视网膜屏不糊 | 死图、放大失真 |
| SVG | ⤓ SVG | 论文 / 海报 / 印刷品 / Illustrator 编辑 | 矢量无损、任意放大 | 部分聊天工具不识别 |
透明底(PNG / SVG):勾选 → 适合贴深色背景文档;不勾 → 用工具卡片色填充背景。贴白底文章建议不勾(避免锯齿)。
平台支持速查
| 平台 | 支持 LaTeX 源码? | 推荐导出 |
|---|---|---|
| 知乎答案 / 文章 | ✓($$...$$) | TeX 源码 |
| 知乎评论 | ✗ | PNG |
| 飞书文档 | ✓(/公式 或敲 $$) | TeX 源码 |
| Notion | ✓(公式块) | TeX 源码 |
| Obsidian / Typora | ✓ | TeX 源码 |
| GitHub Markdown(README / Issue / PR) | ✓(自 2022 起,基于 MathJax) | TeX 源码 |
| Word / WPS / Pages | ✗ | MathML(可编辑) |
| 微信公众号 | ✗ | PNG(3× 透明底可选) |
| 小红书 / 微博 / CSDN | ✗ | PNG |
| Outlook / Gmail 邮件 | ✗ | PNG |
| VSCode Markdown 预览 | ✓ | TeX 源码 |
| 论文 PDF / Beamer | 在 LaTeX 源文档直接写 | 复制 TeX 源码到 .tex 里 |
| 海报 / 印刷品 | 取决于排版工具 | SVG(矢量印刷品) |
分享链接:URL 里编公式的工作原理
工具的 🔗 链接 按钮把公式 LaTeX 源码 base64 编码后塞进 URL 的 hash 片段:
https://toolbox.../tools/latex-math/#tex=JHsXigBlIChhKzEpXFoeDl9PXgBYJl
# 后面是 hash 片段。按 HTTP 协议规范,hash 永远不会被浏览器发给服务器——服务器日志、CDN、代理都拿不到。对方点开链接时浏览器在本地解码渲染。
长度限制:
| 公式长度 | URL 长度 | 实用性 |
|---|---|---|
| 单行短公式(~50 字符) | ~150 字符 | ✓ 微信群、邮件都能完整传过去 |
| 多行 aligned(~300 字符) | ~600 字符 | ✓ 多数聊天工具不截断 |
| 麦克斯韦方程组(~600 字符) | ~1.2 KB | ⚠️ 部分聊天工具可能截断 |
| 长导数推导(~2000 字符) | ~4 KB | ⚠️ 微信会截断,改用 PNG |
经验:超过 2 KB 的公式直接发 PNG / SVG 文件,不要硬塞链接。
隐私边界:
- ✓ 中间网络节点(运营商、Wi-Fi、CDN)看不到公式内容(hash 不上服务器 + HTTPS 加密)
- ✓ 服务器日志拿不到公式
- ✗ 拿到链接的人能看到完整公式(这是 feature 不是 bug,相当于剪贴板分享)
何时退到 MathJax 或本地 TeX
KaTeX 覆盖 99% 日常公式,但下面这些场景必须升级:
| 场景 | 推荐方案 |
|---|---|
| 整篇论文排版 | Overleaf / 本地 TeX Live |
| TikZ 画几何图、流程图、电路图 | Overleaf(KaTeX 不支持 \usepackage{tikz}) |
| chemfig 画化学结构 | Overleaf |
范畴论交换图(\xymatrix / \tikzcd) | Overleaf |
大量自定义宏(\newcommand) | MathJax 或本地 TeX |
| 自建博客的公式服务端预渲染 | KaTeX 静态生成 / MathJax 服务端 |
实务:90% 的非论文场景 KaTeX 完全够;论文整篇切 Overleaf;偶尔要画一张化学结构 → Overleaf 出图,文章其它公式继续 KaTeX。
与相关工具配合
- 写技术文档配公式 + 流程图 → 公式用本工具、流程图用 [[mermaid]]
- 公式 + 思维导图大纲 → 公式用本工具,导图用 [[markmap]](导图节点不能渲染公式,放正文里)
- 整篇 Markdown 文章 → 在 [[md-editor]] 写完正文,公式部分用本工具单独出图或源码插入
- 公式数学符号查找 → 不常用符号可在 [[unicode]] 搜码点(KaTeX 不识别的特殊符号用
\text{ }包 Unicode 字符)
总结
LaTeX 公式编辑器的工作流核心是 3 个决策:
- 目标平台支不支持原生 LaTeX? → 支持就贴源码(最优)、不支持贴图
- 图片要不要后续修改? → 要 → 保留 LaTeX 源码或分享链接;不要 → PNG 直接走
- 目标是 Word? → 用 MathML 不用 PNG(可编辑公式对象远胜死图)
常见误区清单:
- ❌ 用 Word 自带公式编辑器手敲(慢、错、丑)
- ❌ 截屏数学公式放公众号(低分辨率糊)
- ❌ 在不支持 LaTeX 的富文本编辑器硬贴源码(变成
$$ ... $$字符) - ❌ KaTeX parse error 时盲改(应该按错误提示精确定位)
- ✅ 写一次源码、按目标导出对应格式、保留源码以备后改