核心用法
tex-render 是一个基于 Node.js 的 LaTeX 公式渲染工具,核心流程为:MathJax 将 TeX 转换为 SVG,再通过 @svg-fns/svg2img 转为位图格式。用户通过 CLI 调用 scripts/render.js,支持 PNG(默认)、JPEG、WebP、AVIF 及 SVG 输出。
典型调用模式:
# 基础 PNG 渲染
node scripts/render.js 'E = mc^2'
# 含撇号的复杂公式(用 stdin 避免 shell 转义问题)
printf '%s' "y' = f(t,y)" | node scripts/render.js
# 指定格式与质量
node scripts/render.js --format webp --quality 85 '\frac{a}{b}'关键特性:
--inline模式生成紧凑行内公式--width/--height/--zoom控制分辨率--output dataurl输出 Base64 Data URL(需对话系统支持)- JSON 输出路径便于程序化解析(
{"svg":"...","png":"..."})
显著优点
1. 多格式覆盖:从矢量 SVG 到现代压缩格式 AVIF/WebP,满足论文、网页、移动端等多场景需求
2. MathJax 引擎:行业标准的 TeX→SVG 转换,支持 AMS 数学宏包与复杂排版
3. 工作流自动化:专为 AI Agent 设计,可嵌入 TOOLS.md 实现"检测到 LaTeX 即自动渲染"的响应模式
4. Shell 转义友好:提供 stdin 输入方案,彻底解决含 ' 公式的命令行注入风险
潜在局限
- 仅支持数学模式:无法渲染完整 LaTeX 文档(无
\documentclass、章节结构等) - Node 依赖链:需安装 MathJax + svg2img 及其原生依赖(如 librsvg),首次部署较重
- 无实时预览:CLI 批处理模式,不支持交互式 WYSIWYG 编辑
- 字体限制:依赖 MathJax 内置字体,非系统字体,特殊符号可能缺失
适合人群
- AI Agent 开发者:需让 LLM 自动输出公式图片而非原始代码
- 在线教育/技术博客作者:快速生成公式插图,避免 MathJax.js 前端加载
- 科研文档自动化:批量生成论文中的符号定义图、公式速查卡片
常规风险
- 命令注入:虽然
--参数分隔与 stdin 模式降低了风险,但直接拼接用户输入到 shell 仍有潜在注入可能 - 资源消耗:高分辨率(
--width 2000)+ AVIF 编码可能产生显著 CPU/内存占用 - 路径遍历:输出路径若直接取自用户输入,需校验防止
../写入系统目录 - 临时文件残留:默认输出到
~/.openclaw/media/tex-render/,长期运行需清理策略