[Tex/LaTex] Convert MathML to LaTeX

conversionmathml

Here is an example:

Input:

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mi mathcolor="#FF0000">y</mi>
  <mo mathcolor="#00FF00">&#x2212;</mo>
  <msub>
    <mi mathcolor="#0000FF">y</mi>
    <mn mathcolor="#FFFF00">0</mn>
  </msub>
  <mo mathcolor="#FF00FF">=</mo>
  <mo mathcolor="#00FFFF">&#xB1;</mo>
  <mfrac mathcolor="#800000">
    <mi mathcolor="#008000">a</mi>
    <mi mathcolor="#000080">b</mi>
  </mfrac>
  <mo mathcolor="#808000">(</mo>
  <mi mathcolor="#800080">x</mi>
  <mo mathcolor="#008080">&#x2212;</mo>
  <msub>
    <mi mathcolor="#808080">x</mi>
    <mn mathcolor="#400000">0</mn>
  </msub>
  <mo mathcolor="#004000">)</mo>
</math>

Output:

{\color[rgb]{1.0, 0.0, 0.0}y}
{\color[rgb]{0.0, 1.0, 0.0}-}
{\color[rgb]{0.0, 0.0, 1.0}y}_{\color[rgb]{1.0, 1.0, 0.0}0}
{\color[rgb]{1.0, 0.0, 1.0}=}
{\color[rgb]{0.0, 1.0, 1.0}\pm}
{\color[rgb]{0.5, 0.0, 0.0}\frac{\color[rgb]{0.0, 0.5, 0.0}a}{\color[rgb]{0.0, 0.0, 0.5}b}}
{\color[rgb]{0.5, 0.5, 0.0}(}
{\color[rgb]{0.5, 0.0, 0.5}x}
{\color[rgb]{0.0, 0.5, 0.5}-}
{\color[rgb]{0.5, 0.5, 0.5}x}_{\color[rgb]{0.25, 0.0, 0.0}0}
{\color[rgb]{0.0, 0.25, 0.0})}

As you can see, I need mathcolor attribute to be translated also. I have found online demo that does this (http://www.wiris.com/editor/demo/en/developers), but I need to run this on many, many examples. Any suggestions how I can do this? I need it to run on windows. Thanks.

Best Answer

In the end, this solved my problem: https://stackoverflow.com/questions/27196826/convert-mathml-to-latex

Most stylesheets that I found would ignore the mathcolorattribute. This one solved it for me https://sourceforge.net/projects/xsltml/.

And since I've never before worked with stylesheets, I am writing this in case someone needs help with usage. Most languages have some support for xsl. For instance, in C#, this is the usage:

XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load("mmltex.xsl"); //this is the stylesheet
myXslTrans.Transform("myMMLfile.mml", "outputTeXfile.tex");

And that is about it. It works great.