[开源] RaTeX 用 Rust 原生解析、排版 LaTeX 公式,让 AI 应用快一点点。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
weixind
0.49D

[开源] RaTeX 用 Rust 原生解析、排版 LaTeX 公式,让 AI 应用快一点点。

  •  
  •   weixind
    erweixin 3 月 20 日 1025 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先解释下:LaTeX 就是用来写数学公式的语法。

    例如:

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

    渲染出来就是:

    LaTeX 渲染在之前其实是一个比较小众的学术场景,AI 火起来才带动起来的,toC 场景比较成熟的解决方式是 web 的 KaTeX 和 mathJax ,mathJax 太慢了。KaTeX 借用了浏览器的渲染,布局交给了 html + css ,而 native 端的布局相对来说更棘手一点。

    所以现在需要渲染 LaTeX 公式的应用分成了几个流派:

    1. 服务端渲染,node 跑 Katex ,应用直接渲染图片。
    2. 使用 iOSMath 衍生出来的几个库 swiftMath 以及 迁移到 kt 的那个库(有些公式不支持,例如 \middle )。
    3. 端跑 webView 来展示公式。
    4. 自研类似的数学引擎 豆包好像是的。

    看上去各自都有些问题。刚好自己有这方面的需求,所以搞一搞试试:用 纯 Rust 做数学公式解析与排版,输出统一的 DisplayList (可序列化的绘制指令),再交给各端原生画出来。

    搞了一段时间看着效果也还行。所以开源出来,加上最近也搞完各端的胶水层(解析和布局都放到 rust 层了。所以胶水层会非常轻),小小推广下。

    架构相对比较简单:

    跑了下各端的 demo ( iOS 原生、Flutter 、RN 、android 原生):

    后续会做的:一些布局 bug ,以及后续的 \pu 和 \ce ,物理和化学公式支持。

    如果你也在做 AI 、教育、笔记、科研类 App 有 TeX 渲染的需求,或者单纯对 Rust + TeX 排版 + 跨端渲染感兴趣,欢迎 star 、试用、提 issue 。

    顺便感谢一下知乎提供过的 KaTeX 的服务端渲染,解过我的燃眉之急。

    仓库地址: https://github.com/erweixin/RaTeX

    Demo: https://erweixin.github.io/RaTeX/demo/index.html

    support table: https://erweixin.github.io/RaTeX/demo/support_table.html

    2 条回复    2026-04-02 18:21:16 +08:00
    Cabana
        1
    Cabana  
       22 天前
    赞,最近正在做相关的技术调研,在阮一峰的 weekly 的 GitHub issue 上搜到你的项目~ 还说想看看你有没有在 v2 宣传过,让你来宣传宣传呢。
    weixind
        2
    weixind  
    OP
       22 天前
    @Cabana 感谢!

    这个方向太小众了。而且太杂了。不然也不会那么多年移动端只有 iosMath 以及相关衍生方案。其实 web 或者 server render 也能用。甚至很多 AI 应用压根不支持 Latex 渲染。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2716 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 15:16 PVG 23:16 LAX 08:16 JFK 11:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86