RaTeX 是什么?

RaTeX 是一个用纯 Rust 实现的、与 KaTeX 兼容的 LaTeX 数学公式渲染引擎——不用 JavaScript、不用 WebView、不用 DOM。它把渲染做成一个可移植的 Rust 核心 + 显示列表(display list),同一份核心在 iOS、Android、Flutter、React Native、Web、服务端、SVG、PDF 等所有目标上原生渲染,且各平台输出像素一致。它宣称 KaTeX 数学语法覆盖 >99.5%,并支持化学式(mhchem 的 \ce/\pu)、物理单位与证明树(bussproofs)。通过 C ABI / WASM / 各平台原生模块对接,MIT 开源(仓库 LICENSE 为 MIT)、约 1,300 星。

⭐ 871 Stars 🍴 41 Forks Rust 作者: erweixin
来源:README 顶部简介/Why RaTeX/Platform targets、LICENSE(MIT)、GitHub meta(erweixin/RaTeX,Rust,homepage ratex.lites.dev) 查看 GitHub 仓库 →

为什么值得关注

目前主流的跨平台数学渲染几乎都把 LaTeX 跑在浏览器/JS 引擎里——iOS/Android/Flutter/服务端要么内嵌一个吃 50–150MB 内存的 WebView,要么调无头 Chrome,有启动延迟、无离线保证。RaTeX 切的正是这个痛点:把 KaTeX 兼容的引擎编译成可移植 Rust 核心,让同一渲染器在所有平台原生运行、输出字节级一致,无 JS 运行时、内存可预测、可离线。这种「KaTeX 的能力 + 处处原生」的定位对移动端与服务端渲染数学/化学公式很有价值,因此受到关注(约 1,300 星,迭代活跃)。

来源:README Why RaTeX 对比表、GitHub meta(stars 1282、created_at 2026-03-10)

核心功能

纯 Rust、KaTeX 兼容的数学渲染

无 JS/WebView/DOM,纯 Rust 实现,数学语法与 KaTeX 对齐(覆盖 >99.5%):分数、根号、积分、矩阵、环境、可伸缩定界符等;少量 DOM/trust 相关扩展(如 \includegraphics、\htmlClass)有差异并在文档列明。

来源:README 顶部/What it renders/KaTeX differences
一核多端、输出像素一致

同一 Rust 核心 + 显示列表,在 iOS(XCFramework/CoreGraphics)、Android(JNI/Canvas/AAR)、Flutter(Dart FFI/CustomPainter)、React Native、Web(WASM/Canvas, Web Component)、Compose Multiplatform 等原生渲染,且各目标输出像素一致。

来源:README Platform targets 表
服务端与多种输出后端

服务端/CI 用 ratex-render 经 tiny-skia 光栅成 PNG(单二进制、无 JS 运行时);ratex-svg 输出自包含矢量 SVG;ratex-pdf 输出内嵌 KaTeX 字体的矢量 PDF;Web 走 Canvas 2D。

来源:README Platform targets(Server/SVG/PDF)
化学、物理单位与证明树

支持 mhchem 的 \ce(化学反应/离子)与 \pu(按 IUPAC 的数值+单位)、物理单位表达,以及 bussproofs 风格的 prooftree 证明树(\AxiomC、各元推理命令、标签与连线控制等,少数命令尚未实现)。

来源:README What it renders(Chemistry/Physics/Proof trees)

技术架构

RaTeX 是一个 Rust 工作区(crates/),核心是「解析 LaTeX → 生成与平台无关的显示列表(display list)→ 各后端把显示列表绘制成具体输出」的设计,从而做到一核多端、像素一致。crates 提供核心引擎与各输出后端(如 ratex-render→tiny-skia PNG、ratex-svg→SVG、ratex-pdf→PDF);platforms/ 下是各平台胶水(iOS XCFramework、Android JNI/AAR、Flutter Dart FFI、RN 原生模块、Web WASM/Web Component),通过 C ABI 或 WASM 暴露核心。fonts/ 内嵌 KaTeX 字体保证度量一致,tests/ 用对照 PNG 做 golden 校验(含与 KaTeX/MathJax 的支持表对比)。仓库还含 demo/、website/、docs/、tools/、skills/ 等。整体把「数学排版逻辑」与「平台绘制」彻底解耦,是其跨平台一致性的关键。

来源:README Why RaTeX/Platform targets/What it renders、仓库目录树(crates/platforms/fonts/tests/demo/website)

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) tiny-skia(服务端 PNG 光栅)tiny-skia(服务… WASM(Web)、C ABI/FFI(iOS/Android/Flutter/RN)WASM(Web)、C… 内嵌 KaTeX 字体(度量一致)内嵌 KaTeX 字体… mhchem / bussproofs 兼容(化学/证明树)mhchem / bussp… 纯 Rust、KaTeX 兼容的数学渲染纯 Rust、KaTeX 兼容… 一核多端、输出像素一致 服务端与多种输出后端 化学、物理单位与证明树 RaTeX 项目本体 核心功能 关键依赖

中心为项目本体,内环 = 核心功能模块,外环 = 关键技术依赖;按 deep.json 中的 core_features 与 tech_stack.key_deps 自动生成

技术栈

语言Rust(核心)框架自研排版引擎 + 显示列表 + 多后端绘制
tiny-skia(服务端 PNG 光栅)WASM(Web)、C ABI/FFI(iOS/Android/Flut…内嵌 KaTeX 字体(度量一致)mhchem / bussproofs 兼容(化学/证明树)
一份 Rust 核心 → iOS/Android/Flutter/RN/Web/服务端/SVG/PDF;无 JS 运行时、可离线、内存可预测
来源:README Why RaTeX/Platform targets、仓库 crates/fonts

快速上手

按目标平台取用:Web 用 WASM + Web Component;iOS 用 XCFramework(Swift/CoreGraphics);Android 用 AAR(JNI/Kotlin/Canvas);Flutter 用 Dart FFI + CustomPainter;React Native 用其原生模块(C ABI);Compose Multiplatform 用社区的 RaTeX-CMP。服务端/CI 用 ratex-render 把公式光栅成 PNG(单二进制、无需 JS);要矢量用 ratex-svg / ratex-pdf。可先在官方 Live Demo(输入 LaTeX 与 KaTeX 并排对比)与 support-table 查看覆盖与差异。给它喂 LaTeX 数学/化学(\ce)/单位(\pu)/证明树(prooftree) 即渲染。
来源:README Live Demo/Platform targets/What it renders

使用场景

适合需要在非 Web 平台或服务端渲染数学公式、又想避免内嵌 WebView/无头 Chrome 的开发者:iOS/Android/Flutter/RN 移动 App 原生显示公式、教育/科研/笔记类应用离线渲染、服务端把公式批量生成 PNG/SVG/PDF(如自动出题、文档导出、CI 截图对比),以及需要「多端输出像素一致」的场景。也适合要渲染化学式、物理单位或逻辑证明树的专业应用。Web-only 项目则仍可直接用成熟的 KaTeX。

来源:README Why RaTeX/Platform targets/What it renders

优势与局限

优势

  • 稀缺定位:唯一 KaTeX 兼容、且在所有非 Web 平台原生运行、输出像素一致的引擎,无需 WebView/无头浏览器。
  • 纯 Rust、无 JS 运行时:内存可预测、可离线、服务端单二进制,移动端原生集成,性能与可移植性好。
  • 覆盖广:数学语法对齐 KaTeX(>99.5%),外加 mhchem 化学、物理单位与 bussproofs 证明树,多种输出后端(PNG/SVG/PDF/Canvas)。
  • 工程严谨:显示列表解耦排版与绘制、内嵌字体保证度量、golden PNG 对照测试、文档清晰列出与 KaTeX 的差异。

局限

  • Web 端非其主场:KaTeX 有十年 V8 JIT 优化,纯 Web 项目仍以 KaTeX 为优先,RaTeX 的价值在「其它平台」。
  • 有命令级差异:\includegraphics 不支持、\htmlClass/\htmlData/\htmlId 等 trust/DOM 扩展不等价或部分支持,依赖这些的输入需注意。
  • 少数 bussproofs 命令尚未实现,部分公式因布局/度量/光栅差异在对照中未达满分(非语法缺失)。
  • 许可证 GitHub 识别为 NOASSERTION(仓库 LICENSE 实为 MIT),引用前可确认;项目较新(约 1,300 星),生态仍在成长。
来源:README Why RaTeX/KaTeX differences/What it renders、LICENSE、GitHub meta

最新版本

项目以 Rust 工作区持续迭代,多平台目标多为「开箱即用」,Compose Multiplatform 经社区 RaTeX-CMP 支持。提供 Live Demo、support-table 与 Web benchmark 对比 KaTeX。功能覆盖数学(>99.5% KaTeX)、mhchem 化学、物理单位、bussproofs 证明树与 PNG/SVG/PDF/Canvas 多后端。MIT 开源。仓库最近一次更新在 2026-05-18。

来源:README Platform targets/Demo、GitHub meta pushed_at 2026-05-18、created_at 2026-03-10

总结评价

RaTeX 解决了一个长期存在却少有人正面攻克的问题:在浏览器之外(iOS/Android/Flutter/服务端)渲染 KaTeX 级别的数学公式,而不必拖一个 WebView 或无头 Chrome。它用纯 Rust 核心 + 显示列表做到一核多端、输出像素一致,无 JS 运行时、可离线、内存可预测,还覆盖化学式、物理单位与证明树,工程严谨、对差异坦诚。对要在移动端或服务端渲染公式的开发者,它几乎是目前最对路的选择;纯 Web 项目则仍可用 KaTeX。要留意少量命令级差异、DOM/trust 扩展不等价,以及项目尚新。作为「处处原生、像素一致」的 LaTeX 数学引擎,它的定位与完成度都很有说服力。

来源:综合 README、Why RaTeX、平台与差异及 GitHub meta 的事实判断
透明度声明
本页内容由 AI(大语言模型)基于以下公开材料自动生成:GitHub README、代码目录结构、依赖文件、Release 信息。 分析时间: 2026-05-23 19:23. 质量评分: 100/100.

数据来源:README、GitHub API、依赖文件