Analizador LaTeX basado en PHP: ¿por dónde empezar?

El proyecto: quiero construir un traductor LaTeX-a-MathML en PHP. ¿Por qué? Porque soy matemático y quiero publicar matemática en mi sitio Drupal. No tiene que traducir todo LaTeX, ya que el material básico a nivel de documento es manejado hábilmente por el CMS y no estaría escrito en LaTeX para empezar; solo tiene que traducir las matemáticas escritas en LaTeX en matemáticas escritas en MathML. Aunque siento que hice mi debida diligencia, parece que ya no existe. Tal vez estoy equivocado — si sabes de algo que sirva para este propósito, de todos modos dímelo, y gracias de antemano. Pero suponiendo que no exista, creo que debo escribirlo yo mismo.

Aquí está la cosa, sin embargo: nunca he hecho algo tan ambicioso. Realmente no sé por dónde empezar. He usado PHP por años, pero solo para hacer el tipo estándar de “crear un CMS con PHP y MySQL”. Nunca intenté algo tan aparentemente sofisticado como la traducción de un idioma a otro.

Soy lo suficientemente tonto como para considerar hacerlo con expresiones regulares, después de todo, LaTeX es un lenguaje mucho más formal, y no permite casi el tipo de casos extremos patológicos, como por ejemplo, HTML. Pero, por otro lado, soy lo suficientemente inteligente como para darme cuenta de que esta es probablemente una idea terrible: ahora tengo dos problemas, y estoy seguro de que no quiero terminar como este tipo .

Entonces, si ese no es el camino a seguir (¿no?), ¿Qué es? ¿Cómo debería empezar a pensar sobre este problema? ¿Estoy básicamente escribiendo un comstackdor de LaTeX en PHP, y si es así, qué necesito saber para hacer eso (como, ¿debería ir primero a leer el libro de Purple Dragon ?)?

Estoy muy emocionado y bastante intimidado por la perspectiva de este proyecto, pero bueno, así es como todos aprendemos a ser progtwigdores, ¿verdad? Si algo que necesitamos no existe, lo construimos, la necesidad es la madre de … entiendes el punto. Muchísimas gracias a todos de antemano por cualquier orientación que puedan ofrecer.

No escriba el analizador usted mismo a menos que quiera hacerlo como una experiencia de aprendizaje. Simplemente llame a las cadenas de herramientas existentes de LaTeX desde PHP.

LaTeX2HTML es casi tan bueno como lo que obtendrás, y aquí hay una descripción (antigua) de un convertidor LaTeX a MathML del mantenedor de LaTeX2HTML.

De hecho, tuve un bash en este último año. Obtuve algo que funcionaba, aunque no pretendía que tuviera elegancia ni encanto, ni era completamente funcional.

Si desea convertir ecuaciones a MathML, en lugar de la conversión de LaTeX completa, puede usar itex2MML. Si puede cargar extensiones en su PHP, es posible comstackr itex2MML con enlaces PHP y usarlo de forma nativa en scripts. El Makefile puede necesitar un poco de pirateo para obtener todas las configuraciones correctas.

Campo de golf:

  • PHPLaTeX
  • itex2MML con enlaces PHP

Bien, esta respuesta fue un desastre.

Aquí hay una versión limpiada:

Dado que la expresión regular no es suficiente para un traductor para este tipo de cosas, tiene dos opciones, en función de sus objectives:

  1. Solo desea poder mostrar LATEX en su sitio de una forma u otra.
    • Si esto es lo que quiere, hay una solución simple en algún lugar para usted que es más fácil que elegir un libro avanzado sobre la teoría del comstackdor. O alguna forma de incluir látex en su sitio, un traductor existente o algo así.
  2. Eres más entusiasta y quieres aprender sobre la teoría del comstackdor.
    • Si este es el caso, no puedo recomendar el PDB lo suficiente. Es un libro fascinante, y aprenderá mucho de él; Después de los primeros dos capítulos, habrá aprendido lo suficiente sobre el análisis léxico para completar este proyecto. ¡El mejor dinero que gasté en un recurso educativo hasta la fecha!

Si está bien con la conversión de fórmulas a imágenes, hay toneladas de soluciones. Si desea MathML específicamente, también hay varios de ellos . Sin embargo, puede considerar jsMath que usa javascript para representar (un subconjunto de) LaTeX en el navegador. Es utilizado por Sage y funciona bien allí.

Wikipedia está utilizando un traductor LaTeX a HTML (o imagen) escrito en OCaml. Puede tomar prestado algún código allí, o simplemente usarlo tal como está.