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 字符串。