Skip to main content
 首页 » 编程设计

xml中如何在 SVG 文件中嵌入任意文本/数据

2024年11月01日60jyk

我使用 tikz 和 pdflatex 创建了一个图表,并使用 inkscape 将其转换为 SVG。我想将 latex 代码嵌入到 .svg 文件中,以便其他人能够重新生成/修改它。问题是 tikz 代码包含大量 -- (用于绘制线条),这使得无法将代码按原样作为 XML 注释添加到 SVG(请参阅 this other question )。

我正在考虑将其添加为 CDATA,但到目前为止失败了(即 http://validator.w3.org/ 未验证它)。

以下是 Carlo Cannas 建议的 MWE:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<svg 
   xmlns:svg="http://www.w3.org/2000/svg" 
   xmlns="http://www.w3.org/2000/svg" 
   id="svg2" 
   version="1.1"> 
    <metadata> 
        <annotation xmlns="http://www.w3.org/1998/Math/MathML" encoding="TeX"> 
            blah -- 
        </annotation> 
    </metadata> 
</svg> 

请您参考如下方法:

您可以将其包含在 metadata 中元素,作为普通文本或使用其他元素。

我建议将代码包含在 MathML annotation 中元素,具有适当的 encoding 属性。 MathML 命名空间 URI 为 http://www.w3.org/1998/Math/MathML,因此最后的代码将如下所示:

<svg xmlns="[...SVG namespace URI here...]"> 
    <metadata> 
        <annotation xmlns="http://www.w3.org/1998/Math/MathML" encoding="TeX"> 
            <!-- TeX code here (obviously not in this comment, remove this whole line and write it in a CDATA section or as character data, as you wish) --> 
        </annotation> 
    </metadata> 
</svg>