Ce tutoriel n'est plus à jour. Je vous recommande d'utiliser MathJax.
Les webmasters de site Web le savent bien : dès que l'on souhaite dépasser le cap des équations mathématiques de base du type 12 x + 5, HTML montre rapidement ses limites.
Pourquoi ? Parce que HTML n'a pas été crée pour mettre en forme des articles mathématiques, mais pour présenter du contenu. Implicitement, il était considéré que les thèses mathématiques resteraient cantonnées aux fichiers PDF générés avec LaTeX. Mais avec la démocratisation des pages Web, ceci devint rapidement un manque ; le W3C tenta de réagir en proposant MathML en 2001, mais la formule ne convainquit pas : peu de support de la part des navigateurs, et impossible d'écrire « à la main » une formule : il faut très rapidement un logiciel spécialisé pour gérer la verbosité du langage.
Alors que faire ? Abandonner les mathématiques ? Attendre le support global de MathML ? Il y a une solution plus simple…
Ce tutoriel part du principe que vous maitrisez déjà PHP.
LaTeX
LaTeX est un système de composition de documents extrêmement utilisé dans le milieu scientifique, car il intègre des outils poussés de mise en page et une gestion des formules mathématiques.
Quel rapport avec les sites Web ? De nombreux débrouillards ont eu l'idée d'utiliser LaTeX pour générer des formules, puis d'enregistrer en image le résultat. C'est ce que nous allons utiliser pour la suite de cette partie.
Comment ça marche ?
L'internaute fait une requête vers un script CGI qui se charge de compiler la formule et de la rendre sous forme d'image. Le problème ? De nombreuses personnes n'ont pas la possibilité d'installer des applications CGI sur leurs serveurs – nous verrons plus tard comment y remédier. Une fois l'image générée, il suffit de l'envoyer au client avec la balise img habituelle.
Pour le webmaster, deux solutions :
écrire directement son code HTML avec un lien vers les images ;
développer un « mini langage » qui intègre les mathématiques : par exemple, les intégrer dans une balise virtuelle <math>, et avant d'envoyer la page au client, remplacer toutes ces balises par des images. Cette seconde solution est plus propre et plus agréable, d'autant plus qu'elle permet d'améliorer la sémantique de votre code.
Syntaxe
La syntaxe LaTeX n'est pas extrêmement compliquée, et vous pourrez l'apprendre en quelques lignes. Nous n'en parlerons pas sur cette page, jettez un coup d'œil sur cette page pour en savoir plus ; mais sachez que le peu que nous aborderons ici devrait suffire pour vos besoins. Et pour en voir plus, regardez cette aide mémoire Maple avec un bon assortiment de formules.
Que choisir ?
Deux parsers sont particulièrement connus.
Mimetex. cgi : la solution la plus répandue. Elle a l'avantage de gérer complétement le LaTeX (y compris les symboles spéciaux et les matrices). En contrepartie, elle est relativement lente… et son rendu n'est pas particulièrement agréable (voir le comparatif).
Mathtran : moins connue, cette solution ne gère que le TeX. Il est donc impossible (à moins de ruser – cf. Pour aller plus loin) d'avoir des « blackboard letter » (les lettres utilisées pour représenter les ensembles : par exemple), des matrices, ou des intégrales fermées. En revanche, cette solution a l'avantage de fournir des images beaucoup plus propres qui s'intégreront mieux dans vos pages.
Comparatif
Mimetex
Plus complet, moins beau.
Mathtran
Plus beau, moins complet.
Installation
Vous avez fait votre choix entre les deux parsers ? Parfait !
Si vous avez un serveur dédié, il ne vous reste plus qu'à installer le script. Je ne détaille pas ici ; partant du principe que si vous avez un serveur dédié vous savez l'utiliser !
Sinon, deux choix :
Mettre les liens de vos images vers un site externe que vous exploiterez pour générer vos images. D'accord, c'est faisable… mais ce n'est pas très sympa pour le site que vous « exploitez », surtout si vous avez plusieurs images par page et un site fréquemment visité ! Imaginez le pauvre webmaster qui voit ses ressources serveur disparaitre pour générer des images sur votre site…
Mettre les mains à la pâte.
La base
Dans l'exemple qui suit, j'ai choisi d'utiliser mathtran. Si cela ne vous plait pas, vous n'avez qu'à changer l'URL à la ligne CURLOPT_URL !
Vous l'imaginez bien, il n'y a pas de solutions miracle, et il va falloir exploiter au moins une fois quelqu'un.
Nous allons donc demander au serveur « exploité » de nous générer l'image. Puis nous la mettrons en cache « local », et à la prochaine demande nous pourrons la ressortir sans avoir à repasser par le site externe !