LaTeX 转 SVG
使用 KaTeX 0.19.1(广泛应用于网络的数学排版引擎),将 LaTeX 公式渲染为独立的 SVG 文件。可选择显示模式或行内模式,并设置以像素为单位的字号。文件尺寸根据 KaTeX 的字体度量确定,并嵌入 KaTeX 样式表以及公式所用的字体,因此在任何网页浏览器中显示的效果都一致。适用于在浏览器中构建的网页、文档、博客和幻灯片。
常见问题
不使用浏览器如何生成 SVG?
KaTeX 在服务器上将公式排版为 HTML,然后工具将该 HTML 与 KaTeX 样式表及公式所需的 woff2 字体文件一起封装进 SVG 的 foreignObject 中,并以数据 URL 的形式嵌入。宽度和高度根据 KaTeX 的字体度量以及这些字体中实际字形的宽度计算,因此画布能够贴合公式并留出少许边距。
SVG 可以在哪里正确显示?
无论是将它用作 img 元素、CSS 背景、内联 SVG 标记,还是直接打开文件,它都能在 Chrome、Edge、Firefox 和 Safari 中显示;基于浏览器引擎构建的应用也可以显示。Inkscape、Illustrator、Figma 的 SVG 导入器、librsvg 和 resvg 等矢量编辑器和转换器无法渲染 foreignObject 中的 HTML,因此公式在那里会显示为空白。
为什么不将公式转换为矢量路径?
此工具所用的技术栈中,没有采用宽松许可的库能将 KaTeX 的数学排版转换为字形轮廓,单独使用其他排版引擎也无法匹配 KaTeX 的输出。嵌入 KaTeX 自带的 HTML,可以保持精确的间距和字体。如果矢量编辑器需要轮廓,请在浏览器中打开 SVG 并打印为 PDF,这样公式会保留为编辑器可导入的矢量图形。
显示模式和行内模式有什么区别?
显示模式会将公式排版为独立方程:大型运算符的上下方会显示其上下限,分数保持完整大小,并允许使用 \tag 编号。行内模式采用适合句中公式的紧凑文本样式,分数较小,求和符号和积分符号的上下限会显示在旁边。
字号控制什么?
它设置数学字体的字号,单位为像素,取值范围为 8 到 200,须为整数,默认值为 24。SVG 的宽度和高度会随字号缩放,因此以 48 像素渲染的公式是以 24 像素渲染的两倍大。由于结果是矢量图,你仍可使用 CSS 对其缩放。
支持哪些 LaTeX 命令?
支持 KaTeX 0.19.1 支持的所有内容:分数、根式、求和与积分、矩阵,以及 aligned、cases、pmatrix 和 array 等环境,还有重音符号、箭头、\mathbb、\mathcal、\mathfrak、\text、\color 和 \tag。你可以在公式中使用 \def 或 \newcommand 定义自己的宏。不支持完整文档、\usepackage、TikZ 和 mhchem 的 \ce 命令。
公式出错时会怎样?
不会生成文件,工具会告知错误原因及出错字符的位置(从 1 开始计数)。工具会指出未知命令、不匹配的花括号、重复的上标,以及缺少参数的命令,方便你直接跳到相应位置并修复。
有哪些限制?
公式最多可包含 10,000 个字符,宏最多可展开 1,000 次,\rule、\kern 和 \hspace 等命令的尺寸上限为 100em。\href、\url 和 \includegraphics 等会加载或链接外部内容的命令已禁用,并会显示为红色的不支持文本。
SVG 使用什么颜色和背景?
背景是透明的。将 SVG 标记粘贴到 HTML 页面时,公式会采用周围元素的文本颜色;作为图像文件时,公式则以黑色绘制。可在公式中使用 \color 或 \textcolor 设置在任何地方都保持不变的颜色。
文件有多大?是否方便访问?
每个文件都包含约 24 KB 的 KaTeX 样式表,以及公式所用的所有字体字形文件(以 base64 woff2 格式嵌入),因此典型公式的文件大小为 75 到 150 KB。KaTeX 字体中缺少的字符(例如 \text 中的中文或日文)会使用查看器自身的字体。SVG 设有 img 角色,并将 LaTeX 源码用作标题和屏幕阅读器的 aria-label。