【问题标题】:Render MathJax in an SVG file在 SVG 文件中渲染 MathJax
【发布时间】:2013-01-29 12:31:39
【问题描述】:

我在下面花了几天没有快乐。

我希望在 SVG 文件中呈现 Mathjax。我使用https://groups.google.com/forum/#!topic/mathjax-users/_UMt3C7TIpQ/discussion 示例中的foreignObject 将它包含在svg 元素的html 文件中没有问题,但我无法让它在svg 文件中工作。

我正在尝试的代码如下:-

<svg width="1960" height="1080" xmlns="http://www.w3.org/2000/svg">
<script type="text/javascript" src="MathJax-master/MathJax.js?config=TeX-AMS_HTML-SVG"></script>
<g>
<title>Layer 1</title>
<text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="50" id="svg_1" y="223" x="636" stroke-opacity="0.8" stroke-width="0" stroke="#007FFF" fill="#000000">Hello World</text>
<foreignObject x="100" y="100" width="100" height="100">
   <body xmlns="http://www.w3.org/2000/svg">
     <div>
       \(\displaystyle{x+1\over y-1}\)
     </div>
   </body>
 </foreignObject>
</g>
</svg>

任何帮助将不胜感激。我确实怀疑问题出在声明 body 元素的行上。

【问题讨论】:

    标签: svg mathjax


    【解决方案1】:

    &lt;div&gt; 标记是 html,因此 &lt;body&gt; 标记应位于 html 命名空间 xmlns="http://www.w3.org/1999/xhtml" 而不是 svg 命名空间。

    您的另一个错误是您对脚本标签使用了 html 语法。 SVG 脚本标签使用 xlink:href 而不是 src 属性。解决这个问题:

    <svg width="1960" height="1080" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <script xlink:href="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <g>
    <title>Layer 1</title>
    <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="50" id="svg_1" y="223" x="636" stroke-opacity="0.8" stroke-width="0" 
    
    stroke="#007FFF" fill="#000000">Hello World</text>
    <foreignObject x="100" y="100" width="100" height="100">
       <body xmlns="http://www.w3.org/1999/xhtml">
         <div>
           \(\displaystyle{x+1\over y-1}\)
         </div>
       </body>
     </foreignObject>
    </g>
    </svg>
    

    但是当我们这样做时,我们会在 mathjax 库中遇到错误。它似乎希望在文档中找到 html 节点(检查 Firefox 错误控制台)。您必须联系 mathjax 开发人员并让他们修复他们的错误以进一步发展。

    【讨论】:

    • 唉,它似乎没有任何区别,甚至省略了 div 和/或将 svg 更改为 xhtml。 hello world 仍然呈现,但 foreignObject 呈现的只是未格式化的文本。
    • 好的,感谢您的提示。我已经发布了一个关于 Mathjax github 的问题,一旦我有一些反馈,我会进一步评论。
    • 好吧,最终的结果是它不能像我想要的那样完成。它本身不是一个“错误”,但不是 MathJax 设计的操作方式。他们已将其标记为“调查”,因此也许今天会解决。归根结底,所有解决方法都涉及将 svg 文件包装在 html 文件中。
    • 只是一个更新.... MathJax 开发人员关闭了它的日志,所以似乎不会对此进行进一步的开发。
    • 来自未来的注意事项:cdn.mathjax.org 即将结束生命周期,请查看mathjax.org/cdn-shutting-down 以获取迁移提示(并可能为未来的读者更新您的帖子)。
    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 2013-02-11
    • 2013-11-08
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多