Ответ 1
Попробуйте http://www.tilman.de/programme/mathparser/anleitung_en.html - он написан на Java и доступен источник.
Я пытаюсь понять, как преобразовать представление MathML математического уравнения и преобразовать его в представление LaTeX этого математического уравнения. Так, например...
<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, это какие-то библиотеки, которые могут это сделать?
Если нет, какие-либо предложения о том, как подойти к этой проблеме написания моего собственного парсера? С чего начать, что нужно учитывать, ресурсы и т.д.?
Благодаря Optimal Cynic, я смог использовать эту библиотеку Java делать то, что я хочу. Однако это не идеально, но я могу легко изменить его и сделать его работоспособным. Тем не менее, мне все равно хотелось бы, чтобы это было сделано в JavaScript. Так есть ли такие инструменты, как это написано на JavaScript? Если нет, я прибегну к его переводу.
Примечание. Я использую MathJax, чтобы отобразить MathML на странице, но MathJax в настоящее время не поддерживает способ перехода от MathML в LaTeX. Это может быть только переход от LaTeX к MathML.
Попробуйте http://www.tilman.de/programme/mathparser/anleitung_en.html - он написан на Java и доступен источник.
Что не так с синтаксическими анализаторами XSLT, SAX или DOM?
Привязки для SAX и DOM-парсеров существуют для всех основных языков (и почти всех других языков). Я бы порекомендовал DOM-анализ с использованием функционального языка, но вкусы разные.
XSLT - это функциональный язык, предназначенный для обработки XML.
У меня была аналогичная проблема, и mathparser, предоставленный в url из вопроса, не работал у меня вообще.
Я преобразовал MathML в LaTeX, используя XSLT MathML Library с Saxon- HE, но так как библиотека XSLT MathML - это чистый XSLT, любой инструмент преобразования XSLT должен ее обработать. Выход не всегда идеален, но он дал мне лучшие результаты, чем web-xslt, упомянутый где-то в сети stackexchange.
Использование командной строки с саксоном:
saxon -o output.tex input.mml xsltml_2.1.2/mmltex.xsl