2010-03-11 2 views
6

Le projet: Je veux construire un traducteur LaTeX vers MathML en PHP. Pourquoi? Parce que je suis mathématicien et que je veux publier des maths sur mon site Drupal. Il n'a pas besoin de traduire tout LaTeX, puisque le contenu de base du document est géré par le CMS et ne sera pas écrit dans LaTeX pour commencer; il suffit de traduire des maths écrits en LaTeX en maths écrits en MathML. Même si j'ai l'impression d'avoir fait preuve de diligence raisonnable, cela ne semble pas exister déjà. Peut-être que je me trompe --- si vous connaissez quelque chose qui pourrait servir à cette fin, par tous les moyens faites le moi savoir, et je vous remercie d'avance. Mais en supposant qu'il n'existe pas, je suppose que je dois aller l'écrire moi-même.Analyseur LaTeX basé sur PHP - par où commencer?

Voici la chose, cependant: je n'ai jamais rien fait de si ambitieux. Je ne sais pas vraiment par où commencer. J'ai utilisé PHP pendant des années, mais juste pour faire le type standard "construire un CMS avec PHP et MySQL". Je n'ai jamais rien tenté d'aussi sophistiqué que la traduction d'une langue à l'autre. Je suis juste assez bête pour envisager de le faire avec regex --- après tout, LaTeX est un langage beaucoup plus formel, et il ne permet pas presque les types de bordures pathologiques, comme disons, HTML . Mais d'un autre côté, je suis assez intelligent pour réaliser que c'est probablement une idée terrible: maintenant j'ai deux problèmes, et je ne veux pas finir comme this guy.

Donc, si ce n'est pas le chemin à parcourir (n'est-ce pas?), Qu'est-ce que c'est? Comment devrais-je commencer à penser à ce problème? Est-ce que j'écris essentiellement un compilateur LaTeX en PHP, et si oui, que dois-je savoir pour le faire (comme, devrais-je simplement lire le Purple Dragon book d'abord?)?

Je suis à la fois très excité et assez intimidé par la perspective de ce projet, mais bon, c'est comme ça que nous apprenons tous à être programmeurs, non? Si quelque chose dont nous avons besoin n'existe pas, nous allons le construire, la nécessité est la mère de ... vous comprenez. Un grand merci à tous à l'avance pour tous les conseils que vous pouvez offrir.

+3

Vous ne l'avez pas compris la question regex. Il ne s'agit pas des cas limites, il s'agit des propriétés fondamentales de la langue à analyser. – Svante

Répondre

0

D'accord, cette réponse était un gâchis.

est ici une version nettoyée:

Depuis clairement de regex ne sera pas coupé pour un traducteur pour ce genre de chose, vous avez deux options, en fonction de vos objectifs:

  1. Vous voulez juste pour pouvoir afficher LATEX sur votre site d'une manière ou d'une autre.
    • Si c'est ce que vous voulez, il y a une solution simple quelque part là-bas pour vous qui est plus facile que de choisir un livre avancé sur la théorie du compilateur. Soit un moyen d'inclure du latex sur votre site, un traducteur existant, ou quelque chose.

  2. Vous êtes un plus vif, et que vous voulez en apprendre davantage sur la théorie du compilateur.
    • Si tel est le cas, je ne peux pas recommander suffisamment la carte PDB. C'est un livre fascinant, et vous en apprendrez beaucoup. Après les deux premiers chapitres, vous aurez suffisamment appris sur l'analyse lexicale pour compléter ce projet. Meilleur argent que j'ai dépensé pour une ressource éducative à ce jour!
2

Ne pas écrire vous-même analyseur à moins que vous voulez faire comme une expérience d'apprentissage. Appelez simplement les toolchains LaTeX existants de PHP.

LaTeX2HTML est à peu près aussi bon que vous l'obtiendrez, et voici un (ancien) description of a LaTeX to MathML convertor du mainteneur de LaTeX2HTML.

0

Si vous êtes d'accord avec la conversion de formules en images, il y a des tonnes de solutions. Si vous voulez spécifiquement MathML, il y a several de those comme well. Cependant, vous pourriez considérer jsMath qui utilise javascript pour rendre (un sous-ensemble de) LaTeX dans le navigateur. Il est utilisé par Sage et fonctionne bien là.

+0

Je préférerais éviter l'itinéraire des formules-comme-images si possible. Mais jsMath semble prometteur, du moins en tant que solution à court terme, d'autant plus que les moteurs Javascript sont devenus plus rapides. Merci! –

3
+0

Après avoir examiné ces derniers, mon problème avec la plupart d'entre eux (et merci, pour les mentionner, car je ne savais pas tout sauf DruTeX), c'est qu'ils finissent par convertir des formules mathématiques en gifs. Je trouve cela désagréable, car cela signifie que les maths ne sont pas sémantiquement balisés, ne sont pas consultables, ne sont pas stylables, et ont l'air généralement "enfoncés" plutôt que comme faisant partie du flux naturel du texte. Je peux comprendre l'attrait de ces solutions, mais en fin de compte je pense qu'elles ne sont pas idéales. –

+0

En fait, plus je le regarde, plus jsMath semble prometteur. Il ne convertit pas spécifiquement LaTeX en MathML, donc à long terme ce n'est peut-être pas ce que je cherche, mais il semble que cela puisse répondre à mes besoins immédiats. Merci encore! –

+0

Idéalement, je pense que vous voudriez MathML - mais le support pour cela dans tous les navigateurs est certainement absent. Je peux voir pourquoi vous ne le voudriez pas non plus comme un gif, cependant, vous pourriez essayer d'utiliser une légende ou un en-tête de section pour le rendre plus "recherche" – Mica

0

Wikipedia utilise un traducteur LaTeX en HTML (ou image) écrit en OCaml. Vous pouvez emprunter du code ou simplement l'utiliser tel quel.

2

En fait, je me suis essayé à cette dernière année. J'ai quelque chose qui fonctionne, bien que je ne prétende pas qu'elle ait de l'élégance ou du charme, ni qu'elle soit complètement fonctionnelle.

Si vous souhaitez convertir des équations en MathML plutôt que la conversion LaTeX complète, vous pouvez utiliser itex2MML. Si vous pouvez charger des extensions dans votre PHP, il est possible de compiler itex2MML avec PHP-bindings et de l'utiliser nativement dans les scripts. Le Makefile peut avoir besoin d'un peu de piratage pour obtenir toutes les configurations correctes.

Liens:

+0

Je voudrais utiliser votre code PHPLaTeX. Est-ce open source? – Wikunia

+0

@Wikunia En regardant le code (c'est un très vieux projet) je l'ai trouvé au bas de la documentation (http://www.math.ntnu.no/~stacey/PHPLaTeX/convert.php?file=PHPLaTeX.tex) J'avais déclaré qu'il était sorti sous licence GPL (bien que je ne précise pas quelle version).Est-ce suffisant pour vous? Si non, faites le moi savoir et je peux le rendre plus précis. –

Questions connexes