核心用法
tex-render 通过 MathJax 将 LaTeX 公式编译为 SVG,再经 svg2img 转换为 PNG,实现「TeX → SVG → PNG」的完整渲染链路。用户只需执行单条命令即可生成公式图片:
node ~/.openclaw/workspace/skills/tex-render/scripts/render.js "\\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}" ./output脚本自动处理输入标准化(自动剥离 $$、$、 \[...\] 等定界符),输出包含 SVG 源文件和 PNG 最终文件,并通过 stdout 返回 JSON 格式的路径信息。支持 --inline 参数生成行内公式样式,满足文档排版多样性需求。
显著优点
1. 零配置开箱即用:仅依赖两个 npm 包(mathjax-node、svg2img),无系统级 TeX 发行版安装,避免了传统 LaTeX 环境的庞杂依赖。
2. 自动化工作流集成:特别设计了「回复包含 LaTeX」的标准流程——先渲染图片发送至用户,再以纯文本说明,杜绝了原始代码与视觉呈现的割裂。
3. 输入容错性强:自动识别多种 LaTeX 定界符写法,用户无需手动清理输入格式。
4. 输出路径灵活:默认输出至 ~/.openclaw/media/tex-render/,亦可指定任意基础路径,自动创建目录。
潜在缺点与局限性
- 渲染能力边界:基于 MathJax-node 实现,对复杂宏包、自定义命令、外部字体支持有限,不适用于包含 TikZ、PGFPlots 等高级绘图的 LaTeX 文档。
- 无实时预览机制:每次修改公式需重新执行完整渲染流程,交互效率低于在线编辑器。
- Node.js 生态锁定:依赖 npm 环境,对纯 Python 或其他技术栈用户引入额外运行时。
- 安全假设前置:文档明确「未执行安全扫描」,实际生产环境需警惕 LaTeX 注入攻击(如
\input{/etc/passwd}类恶意代码)。
适合人群
- 需要快速生成公式图片的技术文档作者、教育工作者
- 构建自动化报告/幻灯片生成流程的开发者
- 不愿配置完整 LaTeX 发行版、仅需轻量公式渲染的用户
常规风险
- 输入逃逸风险:LaTeX 引擎历史上存在命令执行漏洞(如
\write18),虽 MathJax 沙箱化程度较高,仍需对不可信输入进行白名单过滤。 - 路径遍历风险:输出路径参数若从用户输入直接拼接,可能导致文件写入预期外目录。
- 依赖供应链:mathjax-node 与 svg2img 若停止维护,长期可用性存疑。
- 资源消耗:批量渲染大量高复杂度公式时,Node.js 进程内存占用需监控。