1. MathML介绍
MathML是什么就不解释了,请参考:
1. IBM:https://www.ibm.com/developerworks/cn/xml/x-mathml3/
2.Wiki百科:http://zh.wikipedia.org/zh/%E6%95%B0%E5%AD%A6%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80
2.需求
最近在翻译《High Performance Browser Networking》时,里面有很多的公式采用的是MathML编辑的,但是CSDN这个编辑器不支持MathML,因此复杂的公式无法在博客中展现,研究了一下,发现有一个开源工具jeuclid可以支持将mathML公式转换成各种格式的图片,且支持多种配置,使用起来比较方便。
比如下面这个公式(因为CSDN不支持MathML,只好采用截图)
其对应的MathML描述应该是:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mtable columnalign="right left right left right left right left right left right left" rowspacing=".5em" columnspacing="0.278em 2em 0.278em 2em 0.278em 2em 0.278em 2em 0.278em 2em 0.278em">
<mtr>
<mtd>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">T</mi>
<mi mathvariant="normal">i</mi>
<mi mathvariant="normal">m</mi>
<mi mathvariant="normal">e</mi>
</mrow>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">R</mi>
<mi mathvariant="normal">T</mi>
<mi mathvariant="normal">T</mi>
</mrow>
<mo>×<!-- × --></mo>
<mrow>
<mo>⌈</mo>
<mi>l</mi>
<mi>o</mi>
<msub>
<mi>g</mi>
<mn>2</mn>
</msub>
<mrow>
<mo>(</mo>
<mfrac>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">N</mi>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">i</mi>
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">i</mi>
<mi mathvariant="normal">t</mi>
<mi mathvariant="normal">i</mi>
<mi mathvariant="normal">a</mi>
<mi mathvariant="normal">l</mi>
<mtext> </mtext>
<mi mathvariant="normal">c</mi>
<mi mathvariant="normal">w</mi>
<mi mathvariant="normal">n</mi>
<mi mathvariant="normal">d</mi>
</mrow>
</mfrac>
<mo>)</mo>
</mrow>
<mo>⌉</mo>
</mrow>
</mtd>
</mtr>
</mtable>
</math>
3. jeuclid的使用方法
jeuclid是一个apache授权的工具包,里面包含了几个工具,包括渲染器,转换器等,我只使用了其转换器,其余的没有仔细研究,有兴趣或者有需求可以自己去研究。
在jeuclid的目录下有一个mml2xxx.bat脚本,需要转换就可以使用这个脚本。这个脚本的使用参数如下
usage: mml2xxx <source file(s)> <target file/directory> [options]
source is the path to the source file (MathML or ODF format)