LaTeX 公式转 PNG / SVG:几种实用方案和使用场景对比

最近在整理技术文档时碰到一个比较常见的问题:

手里已经有 LaTeX 公式,但目标平台并不支持 LaTeX,怎么把公式稳定地转换成图片?

比如下面这个公式:

\int_0^\infty e^{-x^2}\,dx = \frac{\sqrt{\pi}}{2}

如果是在 Markdown、Jupyter Notebook、Overleaf 里,直接渲染就行。

但实际工作中经常需要把公式放到:

  • PowerPoint
  • Word
  • 技术方案文档
  • README
  • 博客后台
  • 图片素材
  • 不支持 MathJax 的 CMS
  • 聊天或协作文档

这个时候,把 LaTeX 转成 PNG 或 SVG 往往是最直接的方案。

这篇文章把我目前比较常用的几种方法整理一下,也顺便说说 PNG、SVG、MathJax、KaTeX 分别适合什么场景。


1. 先明确一个问题:真的需要转成图片吗?

很多时候,我们第一反应是:

LaTeX → 图片

但其实并不是所有场景都需要这么做。

如果目标平台支持 MathJax 或 KaTeX,那么最好直接保留 LaTeX。

例如:

$$
E = mc^2
$$

这样做的优点很多:

  • 放大不会模糊
  • 可以复制公式
  • 后期修改方便
  • 页面适配更自然
  • 对技术文档更友好

所以我一般会先判断目标环境。

目标平台支持 LaTeX
    ↓
直接渲染

目标平台不支持 LaTeX
    ↓
转 PNG / SVG

图片更多是一个兼容方案。


2. PNG 和 SVG 应该怎么选?

这是最常见的问题。

PNG

PNG 是位图。

简单理解就是,它由一个个像素组成。

优势:

  • 兼容性好
  • Word、PPT 基本都能直接使用
  • 支持透明背景
  • 上传到各种平台比较省心

缺点:

  • 放大之后可能变模糊
  • 分辨率需要提前考虑

适合:

Word
PowerPoint
聊天软件
普通文档
部分 CMS

SVG

SVG 是矢量图。

它保存的并不是固定像素,而是图形和路径信息。

最大的优势就是:

放大以后依然清晰。

适合:

网页
博客
技术文档
PPT
海报
需要后期缩放的场景

如果目标软件支持 SVG,我一般会优先 SVG。


3. 方法一:直接截图

最简单粗暴的方法当然还是截图。

例如在支持 LaTeX 的编辑器里先输入:

\frac{-b\pm\sqrt{b^2-4ac}}{2a}

等公式渲染出来以后直接截图。

优点

很明显:

不需要装环境,也不需要转换。

如果只是临时在聊天中发一个公式,截图完全够用。


缺点

问题主要有三个。

放大容易糊

假设截图宽度只有 300px,然后放到 PPT 里拉到 900px。

相当于直接放大三倍。

边缘自然会变虚。


背景不好处理

比如截图时是:

黑色公式
+
白色背景

放到深色 PPT 上就会出现一个明显的白色块。


尺寸不统一

如果一篇文档里有几十个公式,每个都手工截图,很难保证:

  • 边距一致
  • 大小一致
  • 清晰度一致

所以截图比较适合一次性的临时需求。


4. 方法二:直接导出 PNG

如果需要比较正式地使用公式,PNG 是比较稳妥的选择。

比如:

\sum_{i=1}^{n} i = \frac{n(n+1)}{2}

直接渲染成 PNG。

这时候需要注意的其实不是“能不能导出”,而是:

导出的尺寸够不够。

如果最终图片需要显示得比较大,最好一开始就生成较大的 PNG。

例如:

500 × 120

通常会比:

200 × 48

更适合后续排版。

因为:

大图缩小通常没问题,小图放大很容易糊。


5. 做 PPT 时建议使用透明背景

如果目标是 PPT,这一点很重要。

例如深色背景的幻灯片。

如果公式是白底图片:

┌─────────────────────┐
│     E = mc²         │
└─────────────────────┘

视觉上会很突兀。

更好的方式是:

白色公式
+
透明背景

对于 PNG 来说,需要导出带 Alpha 通道的透明图片。

比如公式:

\sqrt{x^2+y^2}

在深色 PPT 里可以设置成:

文字颜色:白色
背景:透明

这样放进去以后基本不需要再处理。


6. 方法三:使用 SVG

如果要解决“公式放大后模糊”的问题,SVG 是最省心的方案。

例如:

x^2 + y^2 = r^2

如果导出 PNG,它可能只有固定的:

400 × 80 px

而 SVG 并没有固定像素尺寸。

因此同一个 SVG:

显示 200px 宽

或者:

显示 2000px 宽

一般都能保持清晰。

这对于下面这些场景特别合适:

  • 高清 PPT
  • 技术博客
  • 大尺寸海报
  • 文档导出 PDF
  • Retina / 4K 屏幕

7. 方法四:在线转换

如果只是偶尔转换几个公式,我个人不太愿意为了这件事专门搭一套 LaTeX 环境。

这时候在线转换是最省事的。

通常流程就是:

输入 LaTeX
↓
实时渲染
↓
调整颜色 / 背景
↓
导出 PNG 或 SVG

例如:

\frac{1}{\sqrt{2\pi\sigma^2}}
e^{-\frac{(x-\mu)^2}{2\sigma^2}}

如果只是临时处理公式,可以用类似 LaTeX To Image 这样的网页工具直接生成 PNG 或 SVG。

这种方式的主要优势不是“功能更多”,而是:

省掉配置环境的时间。

比较适合偶发需求。


8. 方法五:使用 Overleaf + standalone

如果本身已经有 LaTeX 环境,也可以使用 standalone 文档类生成独立公式。

例如:

\documentclass{standalone}

\begin{document}

\[
E = mc^2
\]

\end{document}

编译以后可以得到一个尺寸比较紧凑的 PDF。

然后再把 PDF 转换成 SVG 或 PNG。

这种方式的好处是:

  • 使用完整 LaTeX 引擎
  • 复杂公式兼容性更好
  • 可以使用更多宏包
  • 输出效果稳定

9. 使用 ImageMagick 转 PNG

如果已经生成 PDF,也可以在命令行里继续转换。

例如使用 ImageMagick:

magick -density 300 formula.pdf formula.png

这里的:

-density 300

表示使用较高 DPI 渲染。

如果导出的 PNG 太模糊,可以适当提高 DPI。

例如:

magick -density 600 formula.pdf formula.png

但需要注意:

DPI 越高,最终图片体积通常也越大。


10. PDF 转 SVG

如果目标是网页或高清文档,也可以把 PDF 转 SVG。

例如使用 pdf2svg

pdf2svg formula.pdf formula.svg

流程就变成:

LaTeX
↓
PDF
↓
SVG

虽然步骤比在线转换多一点,但优点是整个流程可以自动化。

如果有几十个甚至几百个公式需要批量生成,就比较适合脚本处理。


11. 方法六:Web 项目里直接使用 MathJax

对于 Web 项目,其实最好不要先转成图片。

MathJax 就是很成熟的方案。

例如:

<script>
window.MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']]
  }
};
</script>

页面中:

<p>
  The formula is \( E = mc^2 \).
</p>

MathJax 会自动渲染公式。

这种方式更适合:

  • 博客系统
  • 文档网站
  • 在线教程
  • 数学网站
  • Wiki

12. KaTeX 也是一种选择

如果比较关注渲染速度,也可以考虑 KaTeX。

JavaScript 示例:

katex.render(
  "E = mc^2",
  document.getElementById("formula")
);

对应 HTML:

<div id="formula"></div>

KaTeX 的特点是:

  • 渲染速度快
  • 适合前端项目
  • API 比较简单

不过对于特别复杂的 LaTeX,MathJax 和完整 TeX 环境通常兼容性更好一些。


13. 为什么在线转换工具有时候无法识别 LaTeX?

这里有一个比较容易混淆的地方。

LaTeX 本身不仅仅是数学公式语言。

例如:

\frac{a}{b}

属于典型的数学公式。

大部分 MathJax、KaTeX 或在线转换器都能处理。

但是下面这种:

\usepackage{tikz}

或者:

\begin{tikzpicture}
...
\end{tikzpicture}

就不只是单纯的公式了。

它需要真正的 LaTeX 编译环境。

类似的还有:

  • 自定义宏
  • 特殊宏包
  • TikZ
  • PGFPlots
  • 完整论文模板

这类内容建议直接使用:

TeX Live
MiKTeX
Overleaf

而不是轻量级公式渲染器。


14. 为什么 PNG 公式会变模糊?

一般来说有三个原因。

原图分辨率太低

比如:

原图宽度:200 px

最后显示:

800 px

这相当于直接放大 4 倍。


平台进行了压缩

部分 CMS、聊天软件、内容平台会自动压缩上传图片。

所以本地看起来很清晰,上传以后可能会变糊。


反复处理图片

例如:

生成 PNG
↓
截图
↓
重新缩放
↓
再次截图

会不断损失质量。


15. 如果需要批量转换怎么办?

批量处理时,我更建议使用:

LaTeX
↓
PDF
↓
脚本转 PNG / SVG

例如目录里有:

formula-001.tex
formula-002.tex
formula-003.tex
...

可以通过 Shell、Python 等方式批量调用 LaTeX 编译器和图片转换程序。

相比手工打开网页逐个转换,这种方式更适合:

  • 题库系统
  • 教学平台
  • 数学内容网站
  • 自动生成报告
  • 批量文档生产

16. 不同场景下我的选择

最后简单整理一下。

场景 推荐方案
临时发一个公式 截图
Word PNG
普通 PPT PNG
深色 PPT 透明 PNG
高清 PPT SVG
技术博客 SVG / MathJax
Web 项目 MathJax / KaTeX
海报 SVG
复杂 LaTeX Overleaf / TeX Live
批量生成 LaTeX + 脚本
临时在线转换 在线 LaTeX 转图片工具

17. 最后

其实 LaTeX 转图片这件事并没有一个“唯一正确”的方案。

主要还是看用途。

如果只是偶尔用一次:

在线转换 / 截图

就已经够了。

如果比较在意清晰度:

SVG

通常更合适。

如果是网站:

MathJax / KaTeX

往往比图片更好。

而如果是复杂公式、TikZ 或者需要批量处理:

完整 LaTeX 环境 + 自动化脚本

会更加稳定。

简单总结就是:

能直接渲染就不要转图片;必须转图片时,普通场景选 PNG,需要缩放时优先 SVG。

这样基本可以覆盖大多数实际需求。

posted @ 2026-09-18 22:43  chillylight  阅读(10)  评论(0)    收藏  举报