移动端做公式渲染,很多团队最后都会走到同一个老路上:塞一个 WebView,跑 KaTeX 或 MathJax。公式是出来了,但背后拖着一整套浏览器引擎和 JavaScript 运行时。RaTeX 想干的,就是把这层“隐形负担”直接砍掉。

在我看来,这个项目最有意思的地方,不只是“用 Rust 重写了一套公式渲染”,而是它抓得很准。因为公式渲染这件事,平时不显山不露水,一到教育、笔记、学术、AI 解题这些场景里,马上就变成性能黑洞。一个公式背后藏着 WebView,内存占用上来,首屏还慢,离线体验也别想太多。
RaTeX 在 README 里写得很直接:不要 JavaScript,不要 WebView,也不要 DOM。它走的是另一条路,解析、排版、绘制全在 Rust 里做完。

这件事听起来有点工程师自嗨,但对做产品的人其实很现实。RaTeX 现在是一套纯 Rust 核心,往外接 iOS、Android、Flutter、React Native、Web,还能直接出 PNG 和 SVG。也就是说,它不是“某个平台上的一个小优化”,而是想把公式渲染这件事,做成一套统一底层。你在不同端上看到的公式,终于不用一边靠浏览器,一边靠各自魔改了。
兼容性也没走那种“从零发明一门新语法”的弯路。RaTeX 选择兼容 KaTeX,官方给的说法是大约覆盖了 99% 的 KaTeX 语法,分数、根号、积分、矩阵、可伸缩括号这些常见写法都能处理。更妙的是,它还补了 \ce 和 \pu,也就是化学方程式、物理单位这种理工科常用表达。这个细节挺能说明问题:它不是只想把 demo 跑起来,而是真的盯着教育和科研场景在做。

我很喜欢它架构里的一个思路:先把 LaTeX 解析成统一的 display list,再交给各端原生去画。这个味道就对了。不是把网页塞进原生壳里冒充跨平台,而是先把“公式长什么样”描述清楚,再让 iOS、Android、Flutter、Web 各自原生渲染。你会感觉它在解决的不是“公式怎么显示”,而是“公式渲染是不是能像文本、图片、矢量图那样,成为一个真正的基础能力”。
当然,RaTeX 现在还远没到“以后大家都别用 WebView 了”的程度。KaTeX 这么多年下来,生态、稳定性、社区验证都很强,Web 侧也依然是默认答案。RaTeX 更像是那种你一眼就能看出方向很对的项目:它不一定立刻吃掉旧方案,但它把一个长期被默认接受的笨办法,认真重新做了一遍。
所以,如果你正在做教育类、学术类,或者任何需要高频显示公式的 App,我觉得这个项目确实值得留意。不是因为它已经完美了,而是因为它提醒了很多人一件事:数学公式渲染,未必非得绑着浏览器走。RaTeX 真正让人兴奋的,不是“又一个轮子”,而是它在试着把这件本来就该原生解决的事,重新拿回原生世界。
GitHub: erweixin/RaTeX
|