2010-03-11 5 views
6

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.Analizador LaTeX basado en PHP: ¿por dónde empezar?

Aunque esta es la cosa: 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 this guy.

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

Estoy muy emocionado y muy intimidado por la perspectiva de este proyecto, pero bueno, así es como todos aprendemos a ser programadores, ¿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.

+3

no han entendido el tema de expresiones regulares. No se trata de casos extremos, se trata de las propiedades fundamentales del lenguaje que se analizará. – Svante

Respuesta

0

Bien, esta respuesta fue un desastre.

Aquí hay una limpiado versión:

Desde expresiones regulares de claridad no se corte por un traductor para este tipo de cosas, usted tiene dos opciones, en función de sus objetivos:

  1. Lo que desea para 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 de recoger un libro de avanzada en la teoría del compilador. O alguna forma de incluir látex en su sitio, un traductor existente o algo así.

  2. Usted es un más afilado, y quieren aprender acerca de la teoría del compilador.
    • 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!
2

No escriba el analizador a sí mismo a menos que quiera hacer eso 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 un (viejo) description of a LaTeX to MathML convertor del mantenedor de LaTeX2HTML.

0

Si está de acuerdo con la conversión de fórmulas a imágenes, hay toneladas de soluciones. Si desea MathML específicamente, hay several de those como well. 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í.

+0

Preferiría evitar la ruta de fórmulas como imágenes si es posible. Pero jsMath parece prometedor, al menos como una solución a corto plazo, especialmente porque los motores Javascript se han vuelto más rápidos. ¡Gracias! –

3
+0

Después de haber examinado esto, mi problema con la mayoría de ellos (y gracias, por cierto, por mencionarlos, ya que no estaba al tanto de todos, excepto DruTeX), es que terminan convirtiendo fórmulas matemáticas en gifs. Me parece poco atractivo, ya que significa que las matemáticas no están marcadas semánticamente, no se puede buscar, no es elocuente, y generalmente se ve "empujado", en lugar de como parte del flujo natural del texto. Puedo entender el atractivo de estas soluciones, pero al final creo que no alcanzan el ideal. –

+0

En realidad, cuanto más lo miro, más jsMath parece prometedor. No convierte LaTeX en MathML específicamente, por lo que a largo plazo podría no ser lo que estoy buscando, pero parece que podría satisfacer mis necesidades inmediatas. ¡Gracias de nuevo! –

+0

Idealmente creo que querrías MathML, sin embargo, falta soporte para todos los navegadores. Puedo ver por qué no lo quieres como un gif tampoco, sin embargo, podrías intentar usar un encabezado de título o sección para hacerlo más "buscable" – Mica

0

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á.

2

De hecho, tuve un intento 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 conversiones completas de LaTeX, puede usar itex2MML. Si puede cargar extensiones en su PHP, es posible compilar 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.

Enlaces:

+0

Me gustaría utilizar tu código PHPLaTeX. ¿Es de código abierto? – Wikunia

+0

@Wikunia Mirando el código (es un proyecto muy antiguo) encontré eso en la parte inferior de la documentación (http://www.math.ntnu.no/~stacey/PHPLaTeX/convert.php?file=PHPLaTeX.tex) Dije que fue lanzado bajo la GPL (aunque noto que no especifiqué qué versión).¿Eso es suficiente para ti? Si no, házmelo saber y puedo hacerlo más preciso. –

Cuestiones relacionadas