Autre possibilité: le MathML
Avantages
Le
MathML présente de nombreux avantages par rapport à l'utilisation d'images, notemment:
- Une description sous forme de texte, permettant ainsi une utilisation à des fins de recherche et d'édition, et donnant un véritable sens sémantique aux formules
- Une meilleure accessibilité pour les personnes ayant des difficultés visuelles
- Un rendu non-fixe: l'apparence des formules peut être adaptée au reste de la page et au préférences de l'utilisateur
- Une économie pour les serveurs: moins de charge (génération plus simple et non-utilité de la mise en cache des formules générées) et d'utilisation de la bande passante (pour des sites fortement utilisés)
Aspects techniques
La mise en oeuvre du
MathML n'est pas une chose simple.
- Tout d'abord il faut permettre au navigateur de détecter la présence dans la page de MathML. Pour ce faire il faut envoyer le bon Content-type dans les entêtes, à savoir application/xhtml+xml. Cependant certains navigateurs risquent de ne pas le reconnaître et de proposer à l'utilisateur de télécharger le fichier plutôt que de l'afficher. Ceci implique donc qu'il faudra procéder, malheureusement, à une discrimination, avec les risques d'erreur que cela comporte...
- On verra à ce sujet la page Serve it Up! pour plus de détails
- Ensuite il faut générer le MathML. Clairement on ne peut pas demander à un non-initié d'écrire directement en MathML. Il existe pour ce faire certains logiciels/scripts permettant de le gérer de manière WYSYWYG, mais notre but dans le cas présent serait de transformer du code LaTeX, très connu des scientifiques, des étudiants et de certains professionnels, en MathML. Il existe déjà pour ce faire le logiciel-script qui est disponible sous license GPL ce qui nous convient parfaitement. Cependant il a un gros problème: ce script gère les équations de manière trop simpliste
- en considérant que les fonctions ont toutes le même nom en LaTeX qu'en MathML, ce qui n'est pas du tout le cas
- en ne vérifiant pas la validité des équations introduites, et dès lors rend la page inaffichable à la moindre erreur de l'utilisateur...
- Il serait donc possible de se baser sur ce script, mais mes premières tentatives se sont avérées peu fructueuses à cauuse de ces deux points...
Problèmes
- La page doit être "parfaitement" conforme aux standards XML du W3C, sous peine de ne pas être affichée du tout. Les tests effectués sous Mozilla/FireFox 1.0 et sous IE6/MathPlayer? 2.0 révèlent que les deux navigateurs refusent d'afficher la page à la moindre erreur... mais que certaines choses (notemment d'après mes souvenirs au niveau des \inf ou \infty: est-ce &inf; ou &infty; qui est correct ? sous LaTeX les deux existent, je ne connais pas la différence faute d'avoir testé...) passent sous Firefox et non sous IE, et vice versa... (d'où le "parfaitement"). Par ailleurs WikiNi ne garantit pas parfaitement la validité XML, pour plusieurs raisons:
- L'utilisateur peut inverser certaines balises de formattage, ou oublie d'en fermer
- L'utilisateur peut inclure du code XHTML arbitraire (et donc éventuellement non-valide) en utilisant les guillemets doubles.
--
LordFarquaad
voir aussi le plug in
TechExplorer
Il est de plus nécessaire d'installer les polices suivantes
http://www.mozilla.org/projects/mathml/fonts
Quelques pages pour tester son installation de
MathML
http://www.w3.org/Math/XSL/pmathml2.xml
http://www.w3.org/Math/XSL/csmall2.xml
L'inconvénient de la méthode avec
MathML c'est que c'est beaucoup plus lourd à taper que du
LaTeX...
en plus tant que l'installation des polices / plugin éventuel n'est pas généralisé cela me semble pas aussi approprié que la génération d'images
(qui comporte elle aussi des inconvénients : pas beau, long à charger...)
Tu parles toutefois de générer du
MathML à partir de code
LaTeX... cela peut être une bonne idée.
Mais je pense qu'un premier pas serait de modifier le formater pour avoir le support de $ et $$ dans Wikini
cela appelerait dans un premier temps mon
ActionLaTeX... ensuite on pourra toujours s'arranger pour que ce formatter appelle une autre solution (
MathML ou autre)
SebCls?