Преобразование MathML в LaTeX - PullRequest
10 голосов
/ 05 июля 2011

Я пытаюсь выяснить, как преобразовать 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, есть ли какие-либо библиотеки, которые могут это сделать?

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

UPDATE

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

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

Ответы [ 3 ]

5 голосов
/ 06 июля 2011

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

3 голосов
/ 06 июля 2011

Что не так с парсерами XSLT, SAX или DOM?

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

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

2 голосов
/ 14 января 2014

У меня была похожая проблема, и mathparser, предоставленный в URL из вопроса, вообще не работал для меня.

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

Использование командной строки с помощью saxon:

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