转换为 SVG 时带有转义字符的元数据信息

转换为 SVG 时带有转义字符的元数据信息

我正在开发一个数学动画软件,它使用 将 LaTeX 字符串渲染为 svg 对象dvisvgm。我希望该库能够识别哪些 svg 形状属于某些标记(如“x”或“\sqrt”),同时考虑到某些标记会生成多个 SVG 形状。有没有办法将此信息添加到生成的 svg 中?

谢谢!

答案1

与大多数 DVI 驱动程序一样,您可以使用插入信息\specialdvisvgm手册详细说明了各种可能性。

这里我使用dvisvgm:raw将原始 svg 片段插入到生成的 SVG 中。

这些片段合并到结果 SVG 中时几乎不经过任何检查,因此很容易破坏输出,但只要小心谨慎,就可以解决问题。最安全的方法可能是插入 SVG(XML)注释,但从中提取信息会更困难。在这里,我将内容包装在svg 范围<g class="...">...</g>组中<g>,这在大多数地方或多或少都是安全的,并使用 css 类(此处未定义)注释表达式的术语。

所以

\documentclass{article}
\protected\def\m#1#2{%
\special{dvisvgm:raw <g class="#1">}%
#2%
\special{dvisvgm:raw </g>}%
}
\begin{document}
\pagestyle{empty}

\[
\m{lhs}{\m{sqrt}{\sqrt{\m{power}3^2+\m{power}{4^2}}}}
=
\m{rhs}{5}
\]
\end{document}

生成显示为以下内容的 SVG:

在此处输入图片描述

但具有显示幂和平方根等的内部结构:

在此处输入图片描述

生成的图像实际上有顶部规则,\sqrt我只是错误地剪辑了它,左手由于不相关的原因而丢失,使用最新的 texlive 2023 我得到了

在此处输入图片描述

\documentclass{article}

\begin{document}
\pagestyle{empty}
Sqrt?
\[
\sqrt{3^2+4^2}
\]
\end{document}

看上去像是某个地方有 bug。

相关内容