是否有选项可以从渲染的SVG中恢复MathJax代码?

时间:2016-11-06 17:08:06

标签: mathjax

我正在寻找的是一种内置或黑客的方式,这使我能够从

<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="6.877ex" height="2.843ex" style="vertical-align: -0.838ex;" viewBox="0 -863.1 2960.9 1223.9" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg">
<defs>
    <path stroke-width="1" id="E1-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path>
    <path stroke-width="1" id="E1-MJMATHI-61" d="M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"></path>
    <path stroke-width="1" id="E1-MJMAIN-2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path>
    <path stroke-width="1" id="E1-MJMATHI-62" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path>
    <path stroke-width="1" id="E1-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path>
</defs>
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)">
     <use xlink:href="#E1-MJMAIN-28" x="0" y="0"></use>
     <use xlink:href="#E1-MJMATHI-61" x="389" y="0"></use>
     <use xlink:href="#E1-MJMAIN-2B" x="1141" y="0"></use>
     <use xlink:href="#E1-MJMATHI-62" x="2141" y="0"></use>
     <use xlink:href="#E1-MJMAIN-29" x="2571" y="0"></use>
</g>
</svg>

\left(a+b\right)

SVG是自生成的,所以我希望有一个地图,用每个SVG符号(或符号组)标识字符串中的一个字符。 我想到了类注释。

1 个答案:

答案 0 :(得分:0)

您的问题表明您正在寻找从MathJax输出重建TeX输入,在这种情况下答案是&#34; no&#34;。

一方面,MathJax将输入转换为(基本上)MathML的内部数据结构并呈现;比照http://docs.mathjax.org/en/latest/advanced/model.html#the-components-of-mathjax。虽然您可以在许多情况下重建MathML,但您无法从中重建原始TeX(对于SVG,默认配置使其更难)。

另一方面,即使是类似TeX的渲染工具(如MathJax的前任jsMath)也必须将宏解析为类似TeX的内部格式(基本上是TeX列表),在这种情况下你只能重新生成一些非常基本的布局指令(因为真正的TeX / LaTeX是一种用于打印布局的编程语言)。

当然,MathJax提供API来检索给定元素的原始输入,实际上,它在SVG之后立即将它存储在DOM中的自定义脚本标记中;所以,如果你之后的事情变得更加简单。

最后,如果你想知道的是某个SVG路径所代表的Unicode点,那么href元素的<use>就是你所追求的,例如{{1}匹配#E1-MJMAIN-28