Преобразование 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