Проект: Я хочу построить переводчик LaTeX-to-MathML в PHP. Зачем? Потому что я математик, и я хочу опубликовать математику на моем сайте Drupal. Он не должен переводить все LaTeX, так как базовый материал на уровне документа умело обрабатывается CMS и не будет написан в LaTeX для начала; он просто должен перевести математику, написанную в LaTeX, в математику, написанную в MathML. Хотя мне кажется, что я проявил должную осмотрительность, похоже, это уже не существует. Может быть, я ошибаюсь – если вы знаете что-то, что будет служить этой цели, обязательно сообщите мне об этом и заблаговременно. Но, полагая, что этого не существует, я думаю, мне нужно написать его сам.
Вот что, однако: я никогда не делал ничего такого амбициозного. Я не знаю, с чего начать. Я использовал PHP в течение многих лет, но просто для того, чтобы сделать стандартную «сборку CMS с PHP и MySQL». Я никогда не пытался ничего похожего на сложность, как перевод с одного языка на другой.
Я достаточно глупый, чтобы рассмотреть возможность делать это с регулярным выражением. В конце концов, LaTeX – гораздо более формальный язык, и он не позволяет почти виды патологических краевых случаев, как говорят, HTML. Но, с другой стороны, я достаточно умен, чтобы понять, что это, наверное, ужасная идея: теперь у меня две проблемы, и я уверен, что не хочу в конечном итоге, как этот парень .
Так что, если это не путь (правда?), Что это такое? Как мне начать думать об этой проблеме? Я, по сути, пишу компилятор LaTeX в PHP, и если да, то что мне нужно знать, чтобы сделать это (например, нужно ли мне сначала прочитать книгу « Пурпурный дракон» ?)?
Я оба очень возбужден и довольно запуган перспективой этого проекта, но, эй, мы все учимся программистам, не так ли? Если что-то нам не нужно, мы идем и строим его, необходимость – это мать … вы понимаете. Огромное спасибо всем за все, что вы можете предложить.
э:
http://drupal.org/project/drutex
http://drupal.org/project/jsmath
http://www.forkosh.com/mimetex.html
что не так с этим?
Не пишите парсер самостоятельно, если вы не хотите делать это как опыт обучения. Просто позвоните существующим инструментальным средствам LaTeX из PHP.
LaTeX2HTML примерно так же хорош, как и вы, и вот (старое) описание конвертера LaTeX to MathML от сопровождающего LaTeX2HTML.
В прошлом году я действительно поехал. У меня есть что-то работающее, хотя я бы не утверждал, что у него была какая-то элегантность или обаяние, и он не был полностью функциональным.
Если вы хотите преобразовать уравнения в MathML, а не полное преобразование LaTeX, вы можете использовать itex2MML. Если вы можете загружать расширения в свой PHP, можно скомпилировать itex2MML с привязками PHP и использовать его изначально в скриптах. Для Makefile может потребоваться немного взлома, чтобы все конфигурации были правильными.
Ссылки:
Хорошо, этот ответ был беспорядок.
Вот очищенная версия:
Поскольку regex явно не сократит его для переводчика для такого типа вещей, у вас есть два варианта, основанные на ваших целях:
Если вы согласны с преобразованием формул в изображения, есть множество решений. Если вы хотите MathML специально, есть несколько из них . Однако вы можете рассмотреть jsMath, который использует javascript для визуализации (подмножество) LaTeX в браузере. Он используется Sage и хорошо работает там.
Википедия использует переводчик LaTeX в HTML (или изображение), написанный в OCaml. Вы можете взять там какой-то код или просто использовать его как есть.