快速配齐 KaTeX 生态的 5 件装备:从自动渲染到化学公式
【免费下载链接】KaTeXFast math typesetting for the web.项目地址: https://gitcode.com/GitHub_Trending/ka/KaTeX
KaTeX 干的事情很专一:在网页上快速把 LaTeX 数学排版成 HTML 和 MathML。当你把核心 API 用熟之后,真正的效率提升来自仓库contrib/目录里这 5 个官方扩展——它们覆盖了自动注入页面、专业领域公式、交互与无障碍三类需求,全部由核心团队维护,一行 script 标签即可加载,不需要任何额外构建。
🎬 让内容自动生效:正文里的公式自己渲染
最常见的痛点是:页面上公式很多,你得手动遍历 DOM、逐个调用katex.render,动态内容一更新维护就崩溃。下面这两个工具,把"手动调用"变成"加载即生效"。
auto-render:3 行代码,不再逐条渲染公式
你不再需要自己写循环找公式、再逐条调用katex.render——它会遍历指定元素下的全部文本节点,按分隔符切分并在原位置替换渲染。
- 默认支持
$$、\(块级/行内 - ignoredTags 跳过脚本与代码块
- 解析报错走回调,不阻塞页面
renderMathInElement(document.body, { delimiters: [ {left: "$$", right: "$$", display: true}, {left: "$", right: "$", display: false} ], ignoredTags: ["script", "noscript"] });注意行内$...$默认是关闭的(源码里这一条被注释掉了),必须自己在delimiters里补上,否则行内公式会原样显示。全部选项见 docs/autorender.md,源码在 contrib/auto-render/。
mathtex-script-type:MathJax 式 script 标签零迁移
老页面里如果公式都写在<script type="math/tex">里(MathJax 的经典用法),没有它你得逐个改公式的写法;有了它,这些标签加载完直接被替换成渲染结果。
- 自动识别
type=math/tex的 script - 带
; mode=display输出块级 div - 解析失败时降级显示 TeX 原文
<script type="math/tex">x+\sqrt{1-x^2}</script> <script type="math/tex; mode=display">\int_a^b x\,dx</script> <script defer src="katex.min.js"></script> <script defer src="contrib/mathtex-script-type.min.js"></script>它不监听 DOM 就绪事件、加载时立即执行,所以公式标签必须已在 body 中,建议放在 body 末尾。源码仅 23 行,直接读 contrib/mathtex-script-type/mathtex-script-type.js 就能看全逻辑。
🧪 让输出更专业:领域公式各有一件专用工具
核心 KaTeX 到位后,常规数学表现是够看的:矩阵、分段大括号、嵌套分式的渲染质量,仓库自带的测试截图可以直接当参考标准。
但像化学方程式这种领域内容,核心并不认识\ce,这就是 mhchem 出场的位置。
mhchem:用 \ce 一条命令排化学方程式
你不用再手动拼同位素下标、电荷上标和反应箭头——按 mhchem 包的语法直接写,排版细节它全处理。
\ce写化学方程与同位素\pu处理 SI 单位- 与 LaTeX mhchem 包语法兼容
<script defer src="katex.min.js"></script> <script defer src="contrib/mhchem.min.js"></script> <script> katex.render("\\ce{2H2 + O2 -> 2H2O}", el); </script>仓库测试图里这种反应箭头(含可伸缩的双向箭头和上下标注)就是该生态的典型输出效果:
源码在 contrib/mhchem/mhchem.js,语法细节和\cf弃用说明看 contrib/mhchem/README.md。
🖱️ 让交互更顺滑:复制与朗读都有人管
copy-tex:复制公式自动得到 LaTeX 源码
默认情况下,从渲染结果里复制一段公式,拿到的是碎 HTML;加载这个扩展后,剪贴板里直接变成原始 TeX 源码,粘贴到任何支持 LaTeX 的地方都是完整公式。
- 全局接管 copy 事件,无需手动绑定
- 纯文本写 TeX,HTML 版本原样保留
- 选区落在公式内部时自动扩到整条公式
<script defer src="katex.min.js"></script> <script defer src="contrib/copy-tex.min.js"></script>没有任何可调 API,加载即生效,逻辑全部在 contrib/copy-tex/copy-tex.ts 这 40 多行里。
render-a11y-string:屏幕阅读器能听懂的公式描述
屏幕阅读器面对 KaTeX 渲染出来的一堆 span 时只能读出乱码;这个工具遍历解析树,生成语义完整的朗读文本,比如\frac{1}{2}变成 "start fraction, 1, divided by, 2, end fraction",你把它写进aria-label或朗读层即可。
- 基于解析树生成语义描述
- 逗号切分朗读节奏,利于断句
- 可传入自定义设置(如 throwOnError)
import {renderA11yString} from "katex/contrib/render-a11y-string"; const text = renderA11yString("\\frac{1}{2}"); // "start fraction, 1, divided by, 2, end fraction"700 多行的符号映射表就在 contrib/render-a11y-string/render-a11y-string.ts,想加自定义朗读词从这里改起。
🚀 三步跑通
- 克隆仓库并构建出 dist 产物(只读使用即可):
git clone https://gitcode.com/GitHub_Trending/ka/KaTeX && cd KaTeX && pnpm install && pnpm build- 在页面里按"核心 → mhchem → auto-render"的顺序引用
dist/katex.min.js和dist/contrib/下对应的扩展文件,或用 npm 的katex/contrib/xxx入口引入。 - 用自带命令行验证渲染链路是否通:
echo "\frac{1}{2}" | node cli.js踩坑速查
- 加载顺序:mhchem 必须放在 katex 之后、auto-render 之前,顺序反了
\ce不会被注册。 - 版本对齐:扩展与核心同版本号(当前 0.18.2),混用不同大版本的 dist 产物容易出隐性错位。
- 分隔符默认值:auto-render 默认不开行内
$...$,忘记配置时行内公式会"隐身"。 - 渲染范围:大页面务必用
ignoredTags/ignoredClasses圈定扫描范围,否则全文本节点遍历会拖慢首屏。
📚 资源索引
- docs/api.md:
render/renderToString等核心入口的参数参考 - docs/options.md:displayMode、macros 等全部渲染选项说明
- docs/supported.md:支持命令清单,用前查一眼再写
- docs/autorender.md:auto-render 的分隔符与完整选项
- contrib/:全部 5 个官方扩展的源码目录
日常写文章和文档,auto-render 加 copy-tex 两个组合就能覆盖 80% 的场景;内容偏化学、物理方向再把 mhchem 换进来。下一步就一件事:打开 docs/autorender.md,把delimiters改成你自己的标记习惯——这是融入 KaTeX 生态成本最低的一步。
【免费下载链接】KaTeXFast math typesetting for the web.项目地址: https://gitcode.com/GitHub_Trending/ka/KaTeX
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考