MathML

De EduTech Wiki
Aller à : navigation, rechercher

1 Définition

MathML est une bibliothèque XML qui permet de structurer des expressions mathématiques afin de les afficher, manipuler et partager sur le web. Développé par W3C, elle est devenue une bibliothèque standard en 2010. Associées à ces nouvelles balises, des feuilles de styles (CSS) standardisées ont été développées, afin que l'aspect visuel des formules mathématiques soit lui aussi standardisé.

Le balisage créé par la bibliothèque MathML n'est pas uniquement un balisage de mise en forme. Le "sens" des formules est aussi pris en compte.

2 Le language

Coder MathML à la main devient vite compliqué. Il y a 30 éléments de présentation MathML (par exemple les fractions), avec environ 50 attributs et autour de 100 éléments pour le balisage de contenu (par exemple les opérations telles que + et les fonctions). Ces éléments servent à coder les formules mathématiques. La plupart des éléments représentent des modèles pour la composition et de structuration des sous-expressions.

Étant donné que MathML est très verbeux, il est vivement recommandé d'utiliser un outil ou un logiciel de conversion pour construire des pages Web avec MathML (par exemple à partir de LaTeX) .

3 Intégration avec XHTML

Si votre navigateur prend en charge XHTML et MathML (par exemple Firefox) tout ce que vous avez à faire est de s'assurer que les éléments MathML sont préfixés par le nom de domaine XML (en.) correct.

3.1 MathML comme un vocabulaire extra de XHTML

<?xml version="1.0" encoding="iso-8859-1"?>
<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">
 <xhtml:body>
   <xhtml:h1>Un document composé</xhtml:h1>
   <xhtml:p>Une formule simple utilisant MathML dans XHTML.</xhtml:p>
   <mathml:math xmlns:mathml="http://www.w3.org/1998/Math/MathML">
     <mathml:mrow>
       <mathml:msqrt>
         <mathml:mn>49</mathml:mn>
       </mathml:msqrt>
       <mathml:mo>=</mathml:mo>
       <mathml:mn>7</mathml:mn>
     </mathml:mrow>
   </mathml:math>
 </xhtml:body>
</xhtml:html>

Résultat :

Xhtml mathml.jpg

Ou si vous préférez:

<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml">
 <body>
   <h1>Un document composé</h1>
   <p>Une formule simple utilisant MathML dans XHTML.</p>
   <math xmlns="http://www.w3.org/1998/Math/MathML">
     <mrow>
       <msqrt>
         <mn>49</mn>
       </msqrt>
       <mo>=</mo>
       <mn>7</mn>
     </mrow>
   </math>
 </body>
</html>

4 Éléments clés du langage

4.1 Identifiants <mi>

Un élément mi représente un identifiant mathématique. Si la balise contient un seul caractère, ce dernier apparaitra en italique. Sinon il sera affiché "normalement". Cette balise est utilisée pour les noms de variables par exemple.

4.2 Nombres <mn>

Un élément mn représente un numérique littéral ou tout autre type de donnée qui devrait être représenté comme un numérique littéral. La définition générale d'un numérique littéral est une chaine de caractère (chiffres) pouvant contenir un point de séparation pour les décimales, représentant un nombre réel ou entier signé.

4.3 Opérateur <mo>

la balise mo correspond à la représentation mathématique d'un opérateur. Cela inclut aussi les opérateurs non conventionnels, tel que les parenthèses, les accolades ou encore les séparateurs tels que les virgules ou les point-virgules.

4.4 Textes <mtext>

Les éléments compris dans les balises mtext sont utilisé pour représenter des commentaires.

4.5 Espace <mspace>

Un élément mspace permet de créer un espace blanc de la taille voulue. Ils peuvent aussi être utilisé pour créer des sauts de ligne afin d'obtenir un rendu spécifique. L'attribut width peut prendre les valeurs suivantes :

  • verythinmathspace soit 1/9em
  • thinmathspace soit 1/6em
  • mediummathspace soit 2/9em
  • thickmathspace soit 5/12em
  • verythickmathspace soit 1/3em

L'attribut linebreak peut prendre les valeurs suivantes :

  • auto, saut de ligne par défaut, (dépend de l'implémentation de l'algorithme)
  • newline, commencer une nouvelle ligne
  • goodbreak, si un saut de ligne est nécessaire sur la ligne, il sera placé au bon endroit

Si les deux attributs sont renseignés, l'attribut linebreak sera ignoré.

4.6 String <ms>

Le texte compris à l'intérieur des balises ms sera encadré par défaut par des guillemets.

4.7 Groupe de sous-expressions horizontales <mrow>

La balise mrow est utilisée pour grouper plusieurs sous-expressions. Par exemple un sous-calculs tel qu'une addition.

4.8 Fractions <mfrac>

Le texte contenu dans les balises mfrac sera représenté sous forme d'une fraction. Soit le numérateur au dessus d'une barre de fraction surplombant le dénominateur. La syntaxe est la suivante :

<mfrac> numérateur dénominateur </mfrac>

La balise peut comprendre trois attributs :

  • linethickness, permettant le paramétrage de l'épaisseur de la barre de fraction
  • numalign, permettant le contrôle de l'alignement du numérateur
  • denomalign, permettant le contrôle de l'alignement du dénominateur

4.9 Radicaux <msqrt> et <mroot>

Ces deux balises sont utilisées pour la création de racines. La balise msqrt n'affiche par l'index de la racine, qui sera donc 2 par défaut (racine carré). La balise mroot permet de créer des racines avec des index différents (racines cubiques par exemple). Cette balise accepte seulement deux argument. Les syntaxes respectives de ces deux balises sont les suivantes :

<msqrt> base </msqrt>
<mroot> base index </mroot>

4.10 Script

MathML permet plusieurs types d'écritures, appelé script. Ces balises sont utiliser pour écrire quelque chose en exposant d'une base ou en indice par exemple.

  • <msub> : pour écrire en indice
  • <msup> : pour écrire en exposant
  • <msubsup> : pour écrire en indice et en exposant
  • <munder> : pour écrire en dessous d'un texte de base
  • <mover> : pour écrire au dessus d'un texte de base
  • <munderover> : pour écrire en dessous et au dessus d'un texte de base

5 Liens

Les standards et les feuilles de styles développées sont disponible sur le site du w3C. La description complète de chaque balise et attribut est aussi disponible à ce lien.