资讯动态

Markdown中LaTeX数学公式全指南:语法、渲染与平台适配

发布时间:2026/10/17 9:54:07 来源:尧图企业网站定制
1. 写博客的人为什么都躲不开数学公式写技术博客、做项目文档、整理学习笔记早晚都会撞上一个问题文档里要写数学公式。不管是机器学习里那一堆损失函数、概率分布还是信号处理里的傅里叶变换、卷积定义又或者是论文笔记里的推导过程纯文本根本没法表达清楚。你总不能把公式截图贴进去那样排版丑、缩放糊、还不好修改。更别提交付给团队协作的文档平台一张张图片贴上去协作修改的时候只能干瞪眼。我自己的经历就很典型。早几年写技术分享遇到公式基本靠截图后来发现维护成本高到离谱公式改一个符号就得重新截一次图图多了连自己都分不清哪张是哪张。换到 Markdown 写文档之后这个问题终于有了正解——用 LaTeX 语法写数学公式让文档系统实时渲染。这篇文章我就把自己这几年在 Markdown 里写 LaTeX 公式的经验完整梳理一遍。从最基础的语法规则到常用的高级技巧再到实际编辑器和平台里的各种坑都会涉及。适合正在写技术博客、课程作业、毕业论文或者项目文档的人来读尤其是那些被公式排版折磨过的朋友。先说一个核心认知Markdown 本身不负责渲染数学公式它只是用一套标记语法把纯文本转成结构化文档。真正干活的是渲染引擎对 LaTeX 数学公式的支持。这个支持分两个层面一是语法层面的解析二是渲染层面的呈现。理解了这一点后面遇到为什么这个公式不显示之类的问题你就知道该往哪个方向排查了。2. 先搞懂 LaTeX 数学公式的两大模式LaTeX 数学公式在 Markdown 里的写法按显示位置和用途分为两大类。这两类之间的区别非常简单就是行内和独占一行的问题。2.1 行内公式夹在文字段落里行内公式用单个美元符号$包裹比如$Emc^2$。这种模式适合在正文叙述里顺带提一个公式让文字和公式处于同一行不打断阅读节奏。举个例子正常写出来是这样根据质能方程 $Emc^2$我们可以得出能量与质量成正比。渲染之后Emc^2就变成一个排版精致的公式静静地躺在文字中间。行内公式的核心使用场景是顺手提及。需要强调的是公式本身就是一句独立的话、或者推导过程比较长的时候就不适合用行内模式了那种情况应该用展示模式。2.2 展示公式块级公式独占一行居中显示展示模式用两个美元符号$$包裹公式独占一行居中显示。典型写法$$ f(x) \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$这就是正态分布的概率密度函数。渲染之后它会单独占一行上下留白视觉上很清晰地告诉读者这是一条完整的公式。展示模式适合三种场景一条独立的公式比如定理、定义、推导结论公式比较长占一行都不够需要换行对齐需要给公式编号引用的时候后面会细说有些平台还支持用\[ \]来写块级公式但这里统一推荐$$因为兼容性最好在不同渲染器之间切换不容易出问题。2.3 两种模式的细微差别很多人写久了会发现一个现象同一个公式在行内和展示模式下的渲染效果不一样。比如分式行内模式下 $\frac{1}{2}$ 会显示成比较紧凑的样子分子分母被压缩展示模式下则正常大小。这是因为渲染引擎会根据模式自动调整排版尺度。提示如果发现行内公式里的分数、求和符号显示太小不用慌这是正常的。有些平台支持在行内模式下强制用\displaystyle来恢复大尺寸排版但这个命令在部分渲染器里可能不生效属于平台差异后面排查问题的时候会专门讲。3. 高频语法全掌握从上下标到矩阵LaTeX 数学公式的语法体系非常庞大但日常写技术文档其实用不到全部。把最常用的那批语法练熟覆盖 80% 的场景绰绰有余。这一节我把高频语法按功能分类配上实际示例。3.1 上下标最基础的能力上标用^下标用_。如果上下标内容多过一个字符必须用花括号{}括起来。$a^2$ 渲染为 a² $a_{i1}$ 渲染为 a下标(i1) $e^{x^2}$ 渲染为 e 的 x² 次方嵌套上标注意$a^2$和$a^{2}$效果一样但$a^10$就出问题了它会被理解为 $a^1$ 然后跟一个 0变成 a¹0。这种细节是新手最容易踩的坑。3.2 分式与根式分式用\frac{分子}{分母}根式用\sqrt{}。$\frac{ab}{cd}$ — 分式 $\sqrt{x^21}$ — 平方根 $\sqrt[3]{x}$ — 三次方根 $\sqrt{\frac{a}{b}}$ — 分式套根式分式是可以无限嵌套的复杂公式往往就是多个基础语法嵌套组合的结果。3.3 求和、积分、极限这类大型运算符在展示模式下表现最好符号上下会带上限和下限。$\sum_{i1}^{n} i$ — 求和 $\int_{a}^{b} f(x) dx$ — 定积分 $\lim_{x \to 0} \frac{\sin x}{x}$ — 极限 $\prod_{i1}^{n} x_i$ — 连乘这里有一个小技巧如果想让上下限出现在运算符的正上方和正下方而不是旁边展示模式默认会这样做行内模式则会压缩到侧面这是排版规范不必强行修改。3.4 希腊字母与常用符号希腊字母太多不用刻意背。用到的时候查表就好核心是记规律英文名首字母大写得到大写希腊字母小写就是小写希腊字母。\alpha, \beta, \gamma, \delta, \epsilon, \theta, \lambda, \mu, \pi, \sigma, \omega \Gamma, \Delta, \Theta, \Lambda, \Pi, \Sigma, \Omega其他常用符号\pm 正负号、\times 乘号、\div 除号 \leq 小于等于、\geq 大于等于、\neq 不等于、\approx 约等于 \infty 无穷大、\partial 偏导数符号、\nabla 纳布拉算子 \to 箭头、\rightarrow 右箭头、\leftrightarrow 双箭头3.5 矩阵其实没那么可怕矩阵写法用\begin{matrix} ... \end{matrix}包裹行之间用\\分隔元素之间用分隔。$$ \begin{bmatrix} a_{11} a_{12} a_{13} \\ a_{21} a_{22} a_{23} \\ a_{31} a_{32} a_{33} \end{bmatrix} $$这里matrix换成bmatrix就是带方括号的矩阵换成pmatrix就是圆括号的vmatrix是竖线行列式Vmatrix是双竖线范数。类型不同语义也不同写的时候按需选择。3.6 多行公式对齐推导过程里经常需要多行公式按等号对齐。用\begin{aligned}配合和\\实现。$$ \begin{aligned} f(x) (x1)^2 \\ x^22x1 \end{aligned} $$关键在于等号前面加这告诉渲染引擎对齐点在哪里。每行结束用\\换行。3.7 括号自适应大小写公式经常遇到括号里的内容特别高比如分式套括号普通括号( )就会显得很小气。解决办法是用\left(和\right)渲染引擎会自动调整括号高度。$(\frac{a}{b})$ — 括号小不好看 $\left(\frac{a}{b}\right)$ — 括号自动变大好看注意\left和\right必须成对出现。如果只需要一边括号另一边可以用\left.或\right.点号表示空心、不可见。比如分段函数的大括号$$ f(x) \left\{ \begin{array}{ll} x x 0 \\ 0 x 0 \\ -x x 0 \end{array} \right. $$4. 编辑器与平台的适配实战语法掌握了下一步就是在哪写的问题。不同平台对 LaTeX 公式渲染的支持程度不一样甚至同一个语法在不同平台的表现都不一样。这一节我把常见场景逐个过一遍。4.1 本地编辑器最自由的选择如果你用 VS Code 写 Markdown推荐安装 Markdown All in One 插件配合 MathJax 渲染。写完公式预览窗口里直接显示渲染结果。VS Code 里的核心配置是在settings.json里启用数学公式渲染关键项大概是markdown.math: { engine: mathjax }具体配置路径可能随版本调整但方向就是这个方向——把数学引擎打开。默认不开的话公式在预览里就是一坨源码。Typora 这类所见即所得编辑器就更友好了写完公式立刻就在光标位置渲染出来写错了马上能发现。这类编辑器通常是内置了 MathJax 或 KaTeX 引擎不需要额外配置。4.2 在线文档与博客平台主流技术博客平台基本都支持$和$$语法。但有一个重要差异有的平台用 MathJax有的用 KaTeX两者的语法兼容程度有细微差别。KaTeX 渲染速度更快但对部分 LaTeX 命令支持不全MathJax 性能稍慢但几乎全兼容。遇到在 A 平台正常到 B 平台不显示了的情况大概率是语法用了 KaTeX 不支持的扩展命令。解决办法是先用保守语法写别用冷门宏包。4.3 Markdown 与 LaTeX 混排的转义陷阱这是实践中很隐蔽的一个坑Markdown 解析器会先处理 Markdown 语法再处理 LaTeX 语法。如果公式里出现了下划线_Markdown 会把它当成斜体标记。比如$x_i$ 在某些平台会被解析成 $xi$导致显示异常。解决办法是给行内公式两侧留空格或者在公式内部对特殊字符做处理。有些平台其实已经做了保护公式内容不会被二次解析但不是所有平台都这样。保险的做法是行内公式写成$x_i$时确保两端不要紧贴着普通文本。4.4 换行与空格的坑LaTeX 公式内部通常忽略多余空格因为排版引擎自己会处理间距。你可能写了十几个空格渲染出来还是那个样子。想要公式内强制加空格用\,或\;或\quad。换行方面公式内部用\\换行而不是普通回车。很多新手在$$...$$里直接按回车以为能换行结果渲染出来全挤在一起。记住展示模式内换行必须显式用\\。5. 公式编号与交叉引用文档进阶标配如果你的文档不只是给自己看而是正式的技术文档、论文、实验报告公式编号就绕不开。没有编号的时候文中只能写根据上面那个公式有编号就能写根据式 (3.2)。高下立判。5.1 手动编号方式最朴素的编号方式是自己往公式后面加编号文字$$ f(x) ax b \tag{3.1} $$\tag{}是 LaTeX 原生的命令渲染出来编号会出现在公式右侧。这个方式的优点是简单通用几乎所有渲染器都支持。5.2 自动编号与 label 引用一些完整支持 LaTeX 数学环境的渲染器支持\begin{equation}自动编号$$ \begin{equation} E mc^2 \end{equation} $$配合\label{eq:mass}可以交叉引用写\ref{eq:mass}就能自动显示公式编号。但这里必须说句公道话很多 Markdown 渲染器对equation环境的支持并不可靠自动编号功能经常掉链子。稳妥的做法是用\tag{}手动管理编号。虽然麻烦一点但至少在所有平台上的表现是一致的。5.3 多公式共用一个编号有时候一个编号对应一组公式比如联立方程组。这样写$$ \begin{aligned} a_1 x b_1 y c_1 \\ a_2 x b_2 y c_2 \end{aligned} \tag{2.1} $$这一组的每个公式都算整体渲染出来只显示一个编号居中或靠右看平台习惯。6. 让公式更漂亮的高级技巧把基础语法掌握之后你可能不满足于能显示而是想显示得好看。这一节分享几个我在长期实践中觉得最有用的排版技巧。6.1 用 \text{} 在公式里插入文字公式里需要写中文或者普通文字说明的时候直接写很可能渲染不正常。正确做法用\text{}包裹$$ S \int_{0}^{1} f(x) \, dx \quad \text{其中 } f(x) \text{ 为分布函数} $$注意\text{}里的中文需要渲染器支持中文字体个别平台可能不支持中文放在\text{}里这种情况只能把中文拿出来放到公式外面。6.2 间距微调公式的美学细节公式内部默认间距通常是合理的但嵌套复杂之后可能出现挤在一起的感觉。常用的间距命令\, 小间距1/6 em \: 中等间距2/9 em \; 大间距5/18 em \quad 大空格1 em \qquad 超大空格2 em实际经验积分号后面、微分符号前、以及不同数学对象之间适当加\,会让公式呼吸感强很多。6.3 分段函数的规范写法分段函数是文档高频需求推荐用\begin{cases}环境$$ |x| \begin{cases} x \text{if } x \ge 0 \\ -x \text{if } x 0 \end{cases} $$cases环境会自动在左侧生成大括号每一行默认是数学内容 条件的结构。这个环境兼容性很好大部分渲染器都支持。6.4 向量、粗体、黑板体向量的写法有几种流派带箭头\vec{a}粗体\mathbf{a}或者黑板体\mathbb{R}表示实数集。$\vec{v}$ — 向量箭头 $\mathbf{W}$ — 粗体矩阵 $\mathbb{R}^n$ — n 维实空间 $\mathcal{L}$ — 花体常用于损失函数、拉格朗日量不同字体有不同语义写论文、写书的人要特别留意。6.5 公式中的省略号与上下组合写长公式经常需要省略号和上/下划线\ldots 底部省略号..., \cdots 居中省略号⋯ \overline{x} 上横线均值 \underline{a} 下横线 \overbrace{ab}^{n} 上大括号 \underbrace{ab}_{n} 下大括号均值符号\bar{x}和\overline{x}的效果有细微差别前者是把单个字符标记出来后者是一整段上横线。做统计相关文档这个区别很常见。7. 公式渲染不了这里有一份实战排查手册写公式最难受的就是语法看着没问题渲染出来却不是预期效果。遇到这种情况先别急着怀疑人生按照下面的顺序排查。7.1 检查是否处于数学环境这是第一优先级。$...$和$$...$$必须严格成对出现。少了一个$整个文档的公式渲染可能都会乱掉。多了一个也不行。一个常见场景写金额的时候用了$符号比如价格是 $5渲染引擎会尝试把后面的内容当成公式结果莫名其妙。注意如果你的文档主题偏商业或金融经常要写货币符号建议把美元符号前面加反斜杠转义\$5。或者干脆换用5美元这种表述一劳永逸。7.2 检查花括号是否匹配复杂公式嵌套多层花括号数错一个层级就能让整个公式解析失败。验证方法是把公式内容复制到支持 LaTeX 的本地编辑器里肉眼逐个检查{}的配对。自己写代码的时候编译器会帮你查括号配对。但 Markdown 公式渲染通常不会给那么友好的错误提示经常只是不显示或者显示出一段源码。养成写完公式就数一遍括号的习惯能省很多时间。7.3 检查是否用了渲染器不支持的命令前面提过 MathJax 和 KaTeX 的兼容性差异。常见的不兼容命令列举几个\begin{align}环境在部分 KaTeX 版本里支持不佳用aligned替代部分冷门宏包如amsmath里的高阶命令在网页端可能不支持\mathbb类字体在个别主题里渲染异常一个可靠的策略是优先用基础 LaTeX 语法即 LaTeX 核心自带的命令和环境。那些需要额外引宏包的命令在纯 Markdown 环境里能不用就不用。7.4 检查是否与 Markdown 解析冲突前后有特殊字符时比如公式后面紧跟一个中文字符某些平台不识别需要在公式和文字之间加空格正确$ab$ 是公式 错误$ab$是公式这不是渲染引擎的 bug而是 Markdown 解析的边界判断问题。边界判断规则因平台而异统一加空格是最保险的做法。7.5 预览不刷新 / 缓存问题如果你用的是带实时预览的编辑器公式修改后不刷新是常见状况。VS Code 里可以强制关闭再打开预览窗口或者触发一次文件保存让插件重新解析。在线博客平台通常要等重新渲染改完公式保存后等几秒再看。7.6 排查速查表现象可能原因快速处理公式代码原样显示未启用数学渲染打开渲染引擎相关配置只显示部分公式$或$$数量不对检查配对公式显示但布局怪行内/展示模式误用长公式改用$$括号大小不匹配用了普通括号包围分式改用\left\right某平台显示异常语法太冷门换成基础语法公式内中文乱码\text{}字体不支持把中文移到公式外8. 从能写公式到高效产出公式的效率心法写数学公式也讲究效率。同样写一篇带二十个公式的博客有的人两小时搞定有的人搞一下午。差别不全在速度而在于有没有一套顺手的工作流。我的习惯是这样先手写草稿。没错复杂公式先在纸上或者草稿文件里把结构画出来搞清楚哪些是上下标、哪些是分式、有没有嵌套矩阵。直接进编辑器写容易写到一半发现结构错了推倒重来。然后从外层往内层写代码。先写最外层的$$和大的环境结构比如\begin{bmatrix}先写上再往里面填内容。这样做的好处是括号配对在大框架里更可控。最后再统一调整间距和排版细节。基础内容没问题了再处理\,、\quad这些美化的东西。别一开始就纠结空格绝对浪费时间。还有一个真心话不要背语法表要用会语法表。公式语法的规律性很强写多了自然就熟了。真正需要背的其实是少数几个特殊命令比如\left.这种不常用但关键时刻救命的冷门知识。9. 一些实用扩展不只是公式LaTeX 数学公式在 Markdown 里的能力边界比很多人想象的要大。除了标准公式还能做这几个扩展用途。9.1 化学方程式如果你写化学相关的内容可以用\ce{}语法结合mhchem宏包但多数 Markdown 渲染器不支持。退而求其次用基础语法手动拼$$ 2H_2 O_2 \xrightarrow{\text{点燃}} 2H_2O $$\xrightarrow{文字}能让文字标注在箭头上方这个命令在多数渲染器里都能用。9.2 算法伪代码有些 Markdown 平台支持用公式语法拼简单伪代码结构虽然不推荐这样做但在无其他选择时能应急。更多情况下还是建议用代码块配合markdown的代码高亮来呈现伪代码公式语法只用来写其中的数学式子。9.3 表格里的公式Markdown 表格单元格里同样可以放行内公式。对宽度比较敏感表格列宽有限长公式会被挤压换行这时可以把公式简化或者把表格拆开。| 名称 | 公式 | 说明 | | --- | --- | --- | | 均值 | $\bar{x}$ | 样本均值 | | 方差 | $s^2$ | 样本方差 |这种表格式呈现在对比不同公式的场景下非常直观。9.4 用 HTML 与 CSS 辅助公式排版部分平台允许在 Markdown 里混写 HTML 标签。如果你需要控制公式的对齐方式、字体大小或者颜色可以借助 HTML 包裹div styletext-align: center; font-size: 1.2em; $$ E mc^2 $$ /div但注意不是所有平台都渲染 HTML 内联样式GitHub 上是部分支持的。写之前先确认平台的 HTML 支持策略别写完才发现不生效。10. 自己搭建文档站时公式渲染方案怎么选如果你不满足于用现成平台而是自己搭博客、搭文档站公式渲染方案就需要提前设计了。技术选型决定了后面写公式的体验上限。10.1 核心选型MathJax vs KaTeXMathJax 和 KaTeX 是目前两个主流方案两者的取舍我在前面简单提过。这里展开说MathJax功能最全几乎支持所有 LaTeX 命令。缺点是渲染速度慢页面公式多时会有明显的延迟感。KaTeX由社区驱动的极速渲染方案体积小启动快移动端体验好。缺点是部分命令不支持有兼容性边界。如果是个人博客公式数量一般不多用哪套都好说。如果是教学平台、文档中心公式可能大量出现KaTeX 的性能优势就很明显。10.2 静态网站生成器的集成路径主流静态站生成器基本都有对应的 Markdown 数学插件。配置路径大致相同让 Markdown 处理器保留公式代码再挂载渲染引擎。以常见的生成器为例需要注意的点是默认的 Markdown 解析器可能会把$当成普通符号处理需要关闭或绕过 Markdown 对数学符号的干涉。这个坑在不同生成器里都有只是触发条件不一样。如果不想折腾可以自己在主题模板里引入 MathJax 的 CDN 脚本并用自定义 JavaScript 配置公式渲染范围。这个方案的灵活度最高但需要一定的前端基础。动手能力强的朋友可以试试。10.3 不需要后端渲染也可以还有一个思路本地把公式直接渲染成 SVG 或图片随文档一起发布。好处是目标读者打开页面就能看到公式完全不需要加载 JavaScript。缺点是公式失去可选中、可复制的文本属性后续维护也不方便。如果你交付的是打印版文档或者固定格式的 PDF这个思路反而更好用。我自己的经验是内部技术文档用实时渲染交付给用户的最终文档用静态渲染。两者并行效果最好。10.4 建议的最低配置清单如果你准备自己搭我建议至少具备这几个配置项设置$和$$为数学环境标记开启\tag{}命令支持用于公式编号保留\text{}命令支持公式内文字配置好中文支持确保中文公式注释不乱码关闭或调整 Markdown 对_的斜体解析避免公式干扰这几项弄好日常写公式的体验基本上就顺了。几点实在话写 Markdown 数学公式这件事难度曲线其实很低。最开始的语法学习只需要半小时难点在于遇到各种渲染差异时能快速定位问题。这只能靠多写、多踩坑、多总结没有捷径。我个人在实际操作中最深的体会是保持公式语法的可移植性比追求花哨效果重要得多。同一个文档发送到不同平台、生成不同格式基础语法始终稳稳当当的而那些冷门高级命令很可能今天就工作了明天换一个渲染器就崩了。这就像写代码一样可维护性高于炫技。最后再分享一个习惯写完一篇带数学公式的文档后我会花十分钟做一次跨平台验证——把 Markdown 源码分别丢进主流的预览环境里看一眼确认公式渲染正常。这套流程看起来慢但能避免很多发布后的尴尬。公式是你的文档专业性的直接体现值得多花这几分钟去确认。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑