Преобразование MathML в LaTeX

Я пытаюсь выяснить, как преобразовать представление MathML математического уравнения и преобразовать его в латексное представление этого математического уравнения. Так, например...

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

... является простой сложенной фракцией,и это представление LaTeX будет...

frac{x}{y}

Я гарантирую, что MathML не имеет презентационной разметки, потому что я строю строку MathML динамически, и я контролирую, как / где вставляются элементы MathML; MathML строка - это просто чистая структура математического уравнения.

Итак, мой вопрос: есть ли какие-либо библиотеки Java/JavaScript, которые могут принимать входную строку MathML, как указано выше, и генерировать соответствующую строку LaTeX? Я бы предпочел не писать этот парсер сам. Если не Java / JavaScript, есть ли какие-либо библиотеки, которые могут это сделать?

Если нет, любые предложения о том, как подойти к этой проблеме писать свой собственный парсер? С чего начать? рассмотрим, ресурсы и т. д...?

обновление

спасибо Оптимальный Циник, я смог использовать эта библиотека Java делать то, что я хочу. Однако он не идеален, но я могу легко изменить его и заставить работать хорошо. Тем не менее, я все равно хотел бы, чтобы это было сделано в JavaScript. Итак, есть ли такие инструменты, написанные на JavaScript? Если нет, я сам переведу.

Примечание: я использую MathJax для отображения MathML на странице, но MathJax в настоящее время не поддерживает способ перехода от MathML к LaTeX. Он может перейти только из LaTeX в MathML.

3 ответов


попробуйте http://www.tilman.de/programme/mathparser/anleitung_en.html - он написан на Java, и источник доступен.


Что случилось с XSLT, SAX parsers или DOM parsers?

привязки для синтаксических анализаторов SAX и DOM существуют для всех основных языков (и почти для всех других языков). Я бы рекомендовал DOM parsing использовать функциональный язык, но вкусы отличаются.

XSLT-это функциональный язык, предназначенный для обработки XML.


У меня была аналогичная проблема, и mathparser, предоставленный в url из вопроса, не работал для меня вообще.

я преобразовал MathML в LaTeX с помощью библиотека XSLT MathML С Саксон-он но поскольку библиотека XSLT MathML является чистой XSLT, любой инструмент преобразования XSLT должен ее обрабатывать. Выход не всегда идеален, но он дал мне лучшие результаты, чем web-xslt упоминается где-то в сети stackexchange.

использование командной строки с Саксон:

saxon -o output.tex input.mml xsltml_2.1.2/mmltex.xsl