Rust · WASM · 原生
单一 Rust 排版核心,TeX 级别数学渲染
RaTeX 解析 LaTeX 数学,应用 TeX 排版规则,并输出扁平的显示列表,支持 CoreGraphics、Skia、Canvas 2D 或自定义向量后端——原生 FFI 与 WebAssembly 输出完全一致。
对齐性: RaTeX 致力于在关键方面与 KaTeX 保持一致:CI 针对参考图片运行大型基准测试集,在该语料库上的输出与 KaTeX 广泛可比。 支持表 以并排方式展示完整基准公式列表与 KaTeX 的对比。 适用场景: 对于普通网页中的数学公式,DOM 中的 KaTeX 仍是不错的默认选择。RaTeX 面向原生应用、服务器以及无 WebView 的嵌入场景——从移动端到 WASM 使用同一引擎。
立即体验
OUTPUT
包
随处集成
来自同一 Rust 核心的即用 SDK 与 WASM 构建:从 npm、Maven、pub.dev 或 SPM 安装,详见 快速上手。服务端 PNG 与 CLI 也在其中。
npm ratex-wasm / ratex-react-native · Maven io.github.erweixin:ratex-android · pub.dev ratex_flutter · iOS via SPM
何时选择 RaTeX
- 原生或服务器 — 在 iOS、Android、Flutter 或 Rust 服务(PNG/SVG 光栅化)上使用相同排版,无需打包浏览器。
- WASM 嵌入 — 在 WebAssembly 中运行核心并用 Canvas 绘制;在 实时演示中与 KaTeX 对比输出。
- 化学与单位
—
\ce/\pu在 mhchem 兼容路径上与普通数学并用(见下方图库)。
Rust 核心
单一排版引擎,热路径无 GC:为移动 UI、服务器和 CI 光栅测试提供可预期的计时。
随处部署
为 Swift、Kotlin、Dart 等提供 C ABI,为 Web 提供 WASM;tiny-skia 或自定义光栅化器——显示列表完全一致。
mhchem 化学支持
内置 \ce 和 \pu ,通过 mhchem 兼容路径——反应箭头和物理单位与普通数学在同一流水线中。
在浏览器中体验
基准测试套件图库
浏览 CI 使用的相同 LaTeX 行,以 RaTeX WASM 在页面上渲染: 数学, 化学, 物理. 与 KaTeX 并排对比,请打开 交互演示;完整基准测试套件在演示页面的 支持表 中。
为什么不用 WebView 方案?
在浏览器中,KaTeX 和 MathJax 通常以 JavaScript 操作 DOM 运行。对于通过 WebView 嵌入数学的应用外壳,这仍意味着打包浏览器栈。RaTeX 将排版和光栅化保留在 Rust 中,适用于希望避免此路径的宿主。
| RaTeX | KaTeX (web) | MathJax | |
|---|---|---|---|
| 运行时 | Pure Rust | JavaScript + DOM | JavaScript + DOM |
| 移动端 | Native / WASM | WebView | WebView |
| 离线 | Yes | Depends | Depends |
| JS 包体积(典型) | 0 kB JS (core is WASM) | ~280 kB | ~500 kB |
| 内存模型 | Predictable | GC / heap | GC / heap |
RaTeX 与原生数学 SDK 对比
没有 WebView 时,团队通常会使用 Swift、Objective-C 或 Flutter 库。以下是与常用开源渲染器的高层对比——swiftMath(Swift)、flutter_math_fork / flutter_math(Dart / Flutter)和 iosMath(iOS)——涵盖化学宏、可移植性和引擎架构。第三方 SDK 独立演进;集成时请对比版本。
| 能力 | RaTeX | swiftMath | flutter_math | iosMath |
|---|---|---|---|---|
| mhchem \ce (chemistry) | check_circle | cancel | cancel | cancel |
| \pu / siunitx-style units | check_circle | cancel | cancel | cancel |
| 相同引擎:原生 FFI + WASM(Web) | check_circle | cancel | cancel | cancel |
| 单一 Rust 核心支持移动端 + 桌面 | check_circle | cancel | cancel | cancel |
| Rust TeX 排版核心(可预期热路径) | check_circle | cancel | cancel | cancel |
*性能取决于工作负载。Swift 使用 ARC;Dart 使用追踪式 GC——对于"无浏览器"嵌入场景,两者都与 RaTeX 的 Rust 核心不同。