Skip to main content

Module katex

Module katex 

Source
Expand description

KaTeX 服务端数学公式渲染(server-only)。 KaTeX 服务端数学公式渲染。

用纯 Rust 的 katex crate 把 TeX 公式 渲染成 HTML span,供 pulldown-cmark 的 InlineMath / DisplayMath 事件调用。 仅在 feature = "server" 时编译——前端 WASM 不参与公式渲染(SSR 即终态)。

渲染策略:

  • OutputFormat::Html:只产出视觉层 <span class="katex">…</span>,不含 MathML 语义层(<math> 等)。这样 sanitizer 无需为 MathML 标签开白名单,XSS 面最小。 屏幕阅读器等无障碍场景的语义损失可接受(本站数学公式占比低)。
  • throw_on_error = false:坏公式渲染成红色错误 span 而非中断整篇文章。

配套资源:前端必须加载 public/katex/katex.min.css + fonts/(见 Makefile katex-css),否则只有裸 span、无数学字体排版。crate 本身不打包 CSS。

Constants§

DISPLAY_SETTINGS 🔒
INLINE_SETTINGS 🔒
每线程缓存的渲染配置,避免每次渲染都重建宏表 HashMap。 Settings 同样因 RefCell 宏表非 Sync
KATEX_CTX 🔒
KaTeX 上下文:含全部内置符号 / 宏表,应在多次渲染间复用(README 建议)。 用 thread_local 而非全局 static:KatexContext 内含 RefCell<HashMap> 宏表,非 Sync,不能放 LazyLock。tokio 多线程 runtime 下每线程各持一份。

Functions§

display_settings 🔒
块级公式($$...$$)渲染配置工厂:display_mode = true(居中独占一行),含物理宏表。
expand_chem 🔒
把公式中的 \ce{...} / \pu{...} 预转译为标准 LaTeX(mhchem)。
inject_physics_macros 🔒
把物理宏表注入到给定 Settings 的宏表(覆盖同名内置宏)。
inline_settings 🔒
内联公式($...$)渲染配置工厂:display_mode = false,含物理宏表。
physics_macros 🔒
物理学常用宏表(对齐 LaTeX physics 宏包 + 项目文档 8.13 节「项目物理宏表」)。
read_braced 🔒
open(指向 {)读取配对花括号内容,返回 (内容, 闭括号后位置)。 不闭合返回 None。嵌套 {} 正确计数。
render_display
渲染块级公式 $$...$$(定界符由 pulldown-cmark 剥除)→ HTML 字符串。
render_inline
渲染内联公式 $...$(定界符由 pulldown-cmark 剥除)→ HTML 字符串。