Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP-based LaTeX parser -- where to begin?

Tags:

php

parsing

latex

The project: I want to build a LaTeX-to-MathML translator in PHP. Why? Because I'm a mathematician, and I want to publish math on my Drupal site. It doesn't have to translate all of LaTeX, since the basic document-level stuff is ably handled by the CMS and wouldn't be written in LaTeX to begin with; it just has to translate math written in LaTeX into math written in MathML. Although I feel as though I've done my due diligence, this doesn't seem to exist already. Maybe I'm wrong---if you know of something that would serve this purpose, by all means let me know, and thank you in advance. But assuming it doesn't exist, I guess I have to go write it myself.

Here's the thing, though: I've never done anything this ambitious. I don't really know where to begin. I've used PHP for years, but just to do the standard "build a CMS with PHP and MySQL"-type of stuff. I've never attempted anything as seemingly sophisticated as translation from one language to another.

I'm just dumb enough to consider doing it with regex---after all, LaTeX is a much more formal language, and it doesn't allow for nearly the kinds of pathological edge-cases, as say, HTML. But on the other hand, I'm just smart enough to realize this is probably a terrible idea: now I have two problems, and I sure don't want to end up like this guy.

So if that's not the way to go (right?), what is? How should I start thinking about this problem? Am I essentially writing a LaTeX compiler in PHP, and if so, what do I need to know to do that (like, should I just go read the Purple Dragon book first?)?

I'm both really excited and pretty intimidated by the prospect of this project, but hey, this is how we all learn to be programmers, right? If something we need doesn't exist, we go and build it, necessity is the mother of... you get the point. Tremendous thanks to everyone in advance for any and all guidance you can offer.

like image 511
Alex Basson Avatar asked Mar 11 '10 00:03

Alex Basson


3 Answers

uh:

http://drupal.org/project/drutex

http://drupal.org/project/jsmath

http://www.forkosh.com/mimetex.html

http://www.codecogs.com/

what is wrong with any of these?

like image 106
Mica Avatar answered Nov 04 '22 17:11

Mica


Don't write the parser yourself unless you want to do that as a learning experience. Just call existing LaTeX toolchains from PHP.

LaTeX2HTML is about as good as you're going to get, and here's an (old) description of a LaTeX to MathML convertor from the maintainer of LaTeX2HTML.

like image 3
p00ya Avatar answered Nov 04 '22 19:11

p00ya


I actually had a go at this last year. I got something working, though I wouldn't claim it had any elegance or charm to it, nor was it fully functional.

If you want to convert equations to MathML, rather than full LaTeX conversion, then you could use itex2MML. If you can load extensions into your PHP, it's possible to compile itex2MML with PHP-bindings and use it natively in scripts. The Makefile might need a bit of hacking to get all the configurations right.

Links:

  • PHPLaTeX
  • itex2MML with PHP-bindings
like image 2
Andrew Stacey Avatar answered Nov 04 '22 19:11

Andrew Stacey