Анализатор LaTeX на основе PHP - с чего начать? - PullRequest
6 голосов
/ 11 марта 2010

Проект: я хочу построить переводчик LaTeX-to-MathML на PHP. Зачем? Потому что я математик, и я хочу опубликовать математику на своем сайте Drupal. Он не должен переводить весь LaTeX, так как базовая работа на уровне документов умело обрабатывается CMS и не будет написана в LaTeX для начала; он просто должен перевести математику, написанную в LaTeX, в математику, написанную в MathML. Хотя я чувствую себя так, как будто сделал все возможное, это, кажется, уже не существует. Может быть, я ошибаюсь - если вы знаете что-то, что могло бы послужить этой цели, непременно сообщите мне об этом и заранее поблагодарить вас. Но если предположить, что его не существует, я думаю, мне нужно написать его самому.

Но вот в чем дело: я никогда не делал ничего такого амбициозного. Я действительно не знаю, с чего начать. Я использовал PHP в течение многих лет, но просто для того, чтобы сделать стандартный тип "создать CMS с PHP и MySQL". Я никогда не пытался сделать что-то настолько изощренное, как перевод с одного языка на другой.

Я просто достаточно глуп, чтобы подумать о том, чтобы сделать это с помощью регулярных выражений - в конце концов, LaTeX - гораздо более формальный язык, и он не учитывает почти все виды патологических крайностей, как, скажем, HTML. Но, с другой стороны, я достаточно умен, чтобы понять, что это, вероятно, ужасная идея: теперь у меня две проблемы, и я уверен, что не хочу в конечном итоге, как этот парень .

Так что, если это не тот путь, да? Как мне начать думать об этой проблеме? По сути, я пишу компилятор LaTeX на PHP, и если да, что мне нужно знать, чтобы сделать это (например, я должен просто сначала прочитать книгу Пурпурный дракон ?)?

Я очень взволнован и очень напуган перспективой этого проекта, но, эй, так мы все учимся быть программистами, верно? Если чего-то, в чем мы нуждаемся, не существует, мы идем и строим это, необходимость - мать ... вы понимаете. Огромное спасибо всем заранее за любые и все рекомендации, которые вы можете предложить.

Ответы [ 6 ]

4 голосов
/ 11 марта 2010
3 голосов
/ 11 марта 2010

Не пишите синтаксический анализатор самостоятельно, если вы не хотите делать это как учебный опыт.Просто вызовите существующие наборы инструментов LaTeX из PHP.

LaTeX2HTML примерно так же хорош, как вы собираетесь получить, и вот (старое) описание конвертера LaTeX в MathML от сопровождающегоlatex2html.

2 голосов
/ 07 мая 2010

Я на самом деле был в этом в прошлом году. У меня что-то получилось, хотя я бы не стал утверждать, что в нем есть какая-то элегантность или шарм, и при этом оно не было полностью функциональным.

Если вы хотите преобразовать уравнения в MathML, а не полное преобразование LaTeX, вы можете использовать itex2MML. Если вы можете загружать расширения в ваш PHP, можно скомпилировать itex2MML с PHP-привязками и использовать его изначально в скриптах. Makefile, возможно, потребуется немного взломать, чтобы правильно настроить все конфигурации.

Ссылки:

0 голосов
/ 14 марта 2010

Википедия использует переводчик LaTeX в HTML (или изображение), написанный на OCaml. Вы можете позаимствовать там некоторый код или просто использовать его как есть.

0 голосов
/ 11 марта 2010

Если у вас все в порядке с преобразованием формул в изображения, есть множество решений. Если вам нужен MathML, есть несколько из тех как ну . Однако вы можете рассмотреть jsMath , который использует javascript для рендеринга (подмножества) LaTeX в браузере. Он используется Sage и хорошо там работает.

0 голосов
/ 11 марта 2010

Хорошо, этот ответ был беспорядком.

Вот очищенная версия:

Поскольку регулярные выражения явно не подойдут для переводчика для такого типа вещей, у вас есть два варианта в зависимости от ваших целей:

  1. Вы просто хотите, чтобы LATEX отображался на вашем сайте так или иначе.
    • Если это то, что вам нужно, , есть простое решение где-то для вас, которое проще, чем поискать расширенную книгу по теории компиляторов. Либо какой-нибудь способ включить латекс на свой сайт, существующий переводчик или что-то еще.

  2. Вы увлекаетесь и хотите узнать о теории компиляторов.
    • Если это так, я не могу рекомендовать PDB достаточно высоко. Это увлекательная книга, и вы многому у нее научитесь; После первых двух глав вы узнаете достаточно о лексическом анализе, чтобы завершить этот проект. Лучшие деньги, которые я потратил на образовательный ресурс на сегодняшний день!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...