核心用法
TeX Render 通过 MathJax 将 LaTeX 数学表达式编译为 SVG,再经 svg2img 转换为 PNG 图片。主要命令格式为:
node ~/.openclaw/workspace/skills/tex-render/scripts/render.js "<LaTeX表达式>" [输出路径]
支持 --inline 参数生成行内样式公式,输出 JSON 包含 svg 和 png 双路径。输入会自动规范化,自动剥离 $$、$、\[\]、\(\) 等包裹符号。
显著优点
1. 零配置即用:仅需一次 npm install 安装两个依赖(mathjax-node、svg2img),无复杂环境配置
2. 双格式输出:同时生成 SVG 矢量图和 PNG 位图,满足不同场景需求
3. 智能输入处理:自动识别并清理多种 LaTeX 包裹语法,降低用户输入负担
4. 标准化工作流:当回复包含 LaTeX 时,强制"渲染图片→发送图片→纯文本回复"的三步流程,避免原始代码与可视化内容混杂
潜在局限
- 依赖特定 Node.js 生态:mathjax-node 项目已归档,长期维护存在不确定性
- SVG 中间转换:PNG 经 svg2img 二次转换,复杂公式可能出现渲染细节损失
- 无实时预览:每次修改需重新执行命令,交互体验不如在线编辑器
- 安全边界:输入直接传递给 MathJax 解析,恶意构造的 TeX 可能触发 MathJax 的已知漏洞(尽管概率较低)
适合人群
- 技术写作者需要在 Markdown/文档中插入公式图片
- 教育场景制作含数学公式的幻灯片材料
- AI 助手需要将 LaTeX 回复转换为用户可直接查看的图片格式
- 任何偏好 PNG 嵌入而非 MathJax 在线渲染的出版工作流
常规风险
| 风险类型 | 说明 |
|---------|------|
| 输入注入 | LaTeX 宏包虽受限,仍需避免执行 ` ead`、`ile` 等文件操作指令 |
| 依赖安全 | mathjax-node 已停止更新,建议锁定版本并监控 CVE |
| 路径遍历 | 输出路径参数若从外部传入,需校验防止 `../` 越权写入 |
| 资源消耗 | 复杂公式(如大型矩阵)可能产生高分辨率 PNG,注意磁盘空间 |
验证与测试
内置 npm test 运行 scripts/validate.js,检查标准公式渲染、输出路径正确性及文件非空性,建议修改后必跑。