Créer des formules mathématiques avec MathML au sein d'une page Xhtml 1.1

Publié le 23 février 2009 par Samuel Martin

MathML est un dialecte de XML destiné à la description de formules mathématiques. Son objectif principal est de permettre facilement l'inclusion de formule mathématiques au sein d'un document html/ Xhtml. Il existe déjà de très bons articles sur le sujet, néanmoins si vous suivez en détails les explications de l'article, vous vous rendrez compte qu'il est indispensable d'avoir la main sur son serveur Web ou du moins utiliser un langage de programmation annexe tel que PHP, Python .. Ici je vous propose en 10 min chrono, de créer votre document Xhtml + MathML sans manipulations lourdes.

Ubuntu Alert : Attention, l'ensemble des manipulations qui vont suivre peut rendre votre système d'exploitation Ubuntu instable. L'ajout de nouveaux paquets non supporté officiellement est un risque pour lequel je décline toute responsabilité.

Les éléments du langage MathML et ceux du langage XHTML sont différents et sans point commun, du moins dans leur utilité. Cependant l'appartenance des deux langages au méta langage XML, et la modularité de XHTML 1.1 permet de constituer un document XML bien formé et valide comprenant des expressions mathématiques ainsi que la structure courante d'un document HTML

Pourquoi MathML et non pas des images ?

Effectivement l'utilisation d'images produites par OpenOffice, Word , Latex ou tout autres logiciels spécialisés semble une solution alléchante et simple. Cette solution assure en apparence une compatibilité parfaite ainsi qu'une présentation uniforme du contenu, ce qui est loin d'être le cas avec MathML, alors :

  • L'utilisation d'image pour les formules posent un problème évident d'accessibilité. Que ce passe t'il lorsque l'internaute n'a pas la possibilité d'afficher ou de voir l'image ?
  • Tout comme une image, MathML apporte un rendu visuel mais également des informations sémantiques supplémentaires.
  • Une simple feuille de style Css permet de modifier à la volée le rendu des formules. Pour une image, c'est clairement impossible sans passer par l'étape de génération de cette dernière
  • Si une erreur est constatée dans une fomule, avec MathML il suffit d'éditer le fichier, dans le cas d'une image, le processus est plus lourd, il faut de nouveau regénérer la formule. ce qui implique également de gérer plusieurs type de données : la source et le résultat généré.

Logiciel d'édition MathML

Il en existe quelques uns, mais un seul à retenu mon attention : Amaya. Amaya est un éditeur Web, développé conjointement avec le W3C, pour éditer et publier très simplement des pages contenant du texte (en HTML ou XHTML

Installation par défaut pour Ubuntu

L'installation usuelle connue de tout utilisateur Ubuntu se fait tout simplement via synaptics ou la ligne de commande.

sudo apt-get install amaya

Si vous utilisez Ubuntu 8.04 Hardy Heron, je vous déconseille fortement cette solution, en effet, la version proposée (9.XXX) n'est pas vraiment au point à mon goût. Plantages successifs, caractères spéciaux ajoutés non visibles (UTF-8 ?). Bref suivez l'installation ci-dessous.

Installation manuelle de la version Amaya 11.xx pour Ubuntu

  1. Télécharger la version Ubuntu depuis le site d'Amaya
  2. Installer le paquet à l'aide de la commande sudo dpkg -i amaya_wx-11.1-ubuntu1_i386.deb. Ayant effectué cette opération depuis quelques temps , il y a peut être des paquets supplémentaires à installer. (des commentaires ?)
  3. Voilà vous disposez désormais de la version 11

Document MathML + Xhtml

Je vais être rapide, pour que les formules mathML puissent être correctement affichées dans votre navigateur, votre document doit être reconnu comme application/xml et non comme text/html dans la partie TYPE. Soit vous avez recours à une méthode simple, soit vous modifiez votre serveur ou vous utilisez PHP pour forcer le type.

Modifier l'extension

La méthode suivante, même si j'ignore si elle est autorisée revient à renommer son fichier pour non pas lui donner l'extension .html mais .xhtml. Pour firefox et opera ce subterfuge suffit. Note : Changer le content-type dans la balise méta n'a aucune influence

Utiliser un bon doctype

Enfin pour bénéficier de mathML au sein d'un document HTML je vous conseille le doctype suivant :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
      "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

Remarque : des solutions pour afficher des formules MathML (issues d'OpenOffice) dans un document Xhtml ?