Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MathML to LaTeX conversion

I'm trying to figure out how to convert a MathML representation of a math equation and convert it to the LaTeX representation of that math equation. So for example...

<math>
  <mrow>
    <mfrac>
      <mrow><mi>x</mi></mrow>
      <mrow><mi>y</mi></mrow>
    </mfrac>
  </mrow>
</math>

... is a simple stacked fraction and it's LaTeX representation would be...

\frac{x}{y}

I'm guaranteed that the MathML has no presentational markup because I am constructing the MathML string dynamically and I control how/where the MathML elements are inserted; the MathML string is just pure structure of the math equation.

So my question is, are there any Java/JavaScript libraries out there that can take a MathML input string, like the one above, and generate the corresponding LaTeX string? I would much rather not have to write this parser myself. If not Java/JavaScript, are any libraries at all that can do this?

If not, any suggestions on how to approach this problem of writing my own parser? Where to start, things to consider, resources, etc...?

UPDATE

Thanks to Optimal Cynic, I was able to use this Java library to do what I want. It is not perfect however, but I can easily modify it and make it work well. However, I would still like to see this done in JavaScript. So are there any tools like this written in JavaScript? If not, I'll resort to translating it myself.

Note: I am using MathJax to render the MathML on the page, but MathJax does not currently support a way to go from MathML to LaTeX. It can only go from LaTeX to MathML.

like image 408
Hristo Avatar asked Jul 05 '11 19:07

Hristo


People also ask

What is LaTeX or MathML?

LaTeX is a math markup language familiar to many in the science and math community, but unfortunately is not currently supported by screenreader technlogy. Fortunately, it is fairly simple to convert LaTeX to an image or MathML in most equation editors. In MathMagic and MathType, to import LaTeX.

Does MathJax use LaTeX?

MathJax allows page authors to write formulas using TeX and LaTeX notation, MathML (a World Wide Web Consortium standard for representing mathematics in XML format), or AsciiMath notation.

How do you make MathML?

Inserting an equation in MathTypeAfter inserting the equation you want to convert to MathML, click on the equation and open the MathType editor. Go to Preferences > Cut and Copy Preferences. Now select MathML or Tex radio button and from the dropdown select MathML 2.0 (namespace attr) and select OK.


3 Answers

Try http://www.tilman.de/programme/mathparser/anleitung_en.html - it's written in Java and the source is available.

like image 183
Optimal Cynic Avatar answered Oct 20 '22 01:10

Optimal Cynic


What's wrong with XSLT, SAX parsers, or DOM parsers?

Bindings for SAX and DOM parsers exist for all major languages (and pretty much every other language too). I would recommend DOM parsing using a functional language, but tastes differ.

XSLT is a functional language designed for processing XML.

like image 23
Marcin Avatar answered Oct 19 '22 23:10

Marcin


I had similar problem and mathparser provided in url from question wasn't working for me at all.

I converted MathML to LaTeX by using XSLT MathML Library with Saxon-HE but since XSLT MathML library is pure XSLT any XSLT transformation tool should handle it. Output is not always perfect but it gave me better results than web-xslt mentioned somewhere at stackexchange network.

Command line usage with saxon:

saxon -o output.tex input.mml xsltml_2.1.2/mmltex.xsl
like image 21
Zelo Avatar answered Oct 19 '22 23:10

Zelo