前段时间做了一个比较小的工具,主要解决一个自己经常遇到的问题:怎么快速把 LaTeX 公式转换成图片。
平时写 Markdown 或者论文的时候,LaTeX 公式当然很好用,但一旦要把公式放到 PPT 、图片、博客封面或者一些不支持 LaTeX 的编辑器里,就有点麻烦了。
最常见的做法可能是:
- 找一个在线 LaTeX 编辑器
- 输入公式
- 截图
- 再裁剪
- 如果背景或者清晰度不合适,再重新处理一次
偶尔用一次没什么问题,但如果一天需要处理很多公式,这个流程还是挺重复的。
所以之前就顺手做了一个 LaTeX 转图片的小工具。
最开始其实只有一个功能
第一版非常简单:
输入 LaTeX → 渲染公式 → 导出 PNG
后来自己用的过程中,又陆续加了一些功能,现在支持:
- LaTeX 转 PNG
- LaTeX 转 SVG
- LaTeX 转 JPG / JPEG
- 透明背景
- 自定义公式颜色和背景
- 调整图片缩放比例
- 1x / 2x / 3x / 4x 高清导出
- 直接复制 SVG
- 复制图片
- 复制 LaTeX
- 通过 URL 保存当前公式
最后整理成了这个网站:

目前整个公式渲染过程主要是在浏览器里完成的,不需要先把公式提交到服务器再生成图片。
做的时候发现,“LaTeX 转图片”其实没有想象中那么简单
一开始我以为就是:
LaTeX
↓
MathJax
↓
SVG
↓
PNG
但真正做起来还是碰到了一些小问题。
1. SVG 很适合公式,但不是所有地方都方便使用
MathJax 本身生成 SVG 很合适,公式放大之后也不会模糊。
所以如果是做网页、论文插图或者后续还要编辑,SVG 基本是最好的格式。
但实际使用时,很多场景还是更需要 PNG 。
比如:
- PowerPoint
- Notion
- 一些富文本编辑器
- 社交媒体图片
- 视频剪辑软件
所以最后还是需要把 SVG 再正确地转换成位图。
2. 普通 PNG 在 Retina 屏幕上很容易糊
这个问题之前没有特别注意。
同一个公式,在网页里看很清楚,但导出成 1x PNG 放进 PPT ,再稍微放大一点之后,就可能明显感觉到边缘发虚。
所以后面加了 2x 、3x 、4x 导出。
现在如果是 PPT 或者文章插图,我自己一般直接用 2x 或 3x 。
如果不在乎文件大小,4x 基本就比较稳。
3. 透明背景比我想象中实用
最开始其实没准备专门做透明背景。
但后来发现,如果公式要放进 PPT ,透明 PNG 反而是非常常见的需求。
尤其是:
E = mc^2
这种公式直接导出透明背景,然后拖到 PPT 里,比截图方便很多。
而且深色 PPT 、浅色 PPT 都能自己控制公式颜色。
4. JPG 和透明背景其实是冲突的
PNG 和 SVG 都可以支持透明背景,但 JPG 本身不支持透明。
所以如果用户选择 JPG ,就必须考虑透明区域最后应该填什么背景色。
这种细节单独看都很小,但在线工具真正做完整之后,会发现其实有不少这种边界情况。
为什么没有直接做成完整 LaTeX 编译器
目前这个工具的定位还是:
LaTeX Formula → Image
而不是:
.texDocument → Image
也就是说,更适合处理数学公式,而不是完整 LaTeX 文档。
比如下面这种就是它比较擅长的:
\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
或者:
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
但如果是复杂的 TikZ 、完整 LaTeX package 、自定义宏环境,目前并不是主要目标。
之前也考虑过直接在服务器跑完整 TeX Live ,但那样整个产品复杂度会高很多。
而我自己真正高频使用的,其实就是:
“我这里有一段公式,赶紧帮我变成一张能用的图片。”
所以最后还是保持了现在这种比较轻量的方式。
现在自己用得最多的是 SVG 和透明 PNG
如果是网页,我通常直接用 SVG 。
如果是 PPT ,则基本是:
Transparent PNG + 2x / 3x
这样基本不需要后续再处理。
做完之后才发现,这类非常小的工具其实挺适合解决一些重复性的工作流问题。
不一定需要很多复杂功能,只要能把原本:
打开编辑器
→ 输入公式
→ 截图
→ 裁剪
→ 调整背景
→ 保存
变成:
输入公式
→ Download
对我来说就已经够用了。
目前还在考虑后面要不要继续加一些功能,例如:
- 本地公式历史记录
- 常用公式收藏
- 更多预设尺寸
- Markdown 公式直接粘贴
- 批量 LaTeX 转图片
- 更完整的 LaTeX 语法支持
不知道 V2EX 上平时用 LaTeX 的人多不多。
如果是你们的话,LaTeX 转图片这个场景里,最希望补的功能是什么?
也欢迎帮忙看看目前还有哪些体验比较别扭的地方。