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§
- control_
sequence_ 🔒end - 控制序列名的结束位置:
start指向\之后。字母串是控制词,否则是单字符控制符。 - display_
settings 🔒 - 块级公式(
$$...$$)渲染配置工厂:display_mode = true(居中独占一行),含物理宏表。 - expand_
chem 🔒 - 把公式中的
\ce{...}/\pu{...}预转译为标准 LaTeX(mhchem)。 - expand_
qty 🔒 - 把 physics 宏包的定界符形式
\qty(...)/\qty[...]预转译为\left(...\right)/\left[...\right]。 - find_
matching_ 🔒delimiter - 从
open(指向开括号)找同一花括号层级内配对的闭括号位置;先遇到外层}或到结尾返回None。 - inject_
macros 🔒 - 把物理宏表与 mhchem 辅助宏注入到给定
Settings的宏表(覆盖同名内置宏)。 - inline_
settings 🔒 - 内联公式(
$...$)渲染配置工厂:display_mode = false,含物理宏表。 - mhchem_
macros 🔒 - mhchem 键(
\bond{~}等)引用的宏,定义取自 KaTeXcontrib/mhchem。 - physics_
macros 🔒 - 物理学常用宏表(对齐 LaTeX
physics宏包 + 项目文档 8.13 节「项目物理宏表」)。 - read_
braced 🔒 - 从
open(指向{)读取配对花括号内容,返回(内容, 闭括号后位置)。 不闭合返回None。嵌套{}正确计数。 - render_
display - 渲染块级公式
$$...$$(定界符由 pulldown-cmark 剥除)→ HTML 字符串。 - render_
inline - 渲染内联公式
$...$(定界符由 pulldown-cmark 剥除)→ HTML 字符串。 - sort_
svg_ 🔒attributes - 把
<svg>/<path>开标签的属性按名称排序。