Accueil

Traduction

Tutoriel HTML - sommaire

Tutoriel HTML - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Écrire des formules mathématiques dans un document HTML

Les navigateurs sont des programmes avec des super pouvoirs. Ils sont capables d'interpréter de nombreux langages : HTML, CSS, JavaScript, SVG mais aussi MathML.
Donc une page web (ou document HTML) peut contenir des instructions dans tous ces langages.

Des entités de caractères utiles

Mais avant d'aborder le langage mathML je vous montre que pour des formules mathématiques basiques, on peut se contenter de HTML à condition d'utiliser certaines entités de caractère (ou entités HTML).

Exemple

Moyenne simple = ∑ xi / n

3 = √ 9

33 = 9

Moyenne pondérée = ∑ nixi / ∑ ni

y = 4x +10 / 2

Le code correspondant

<p>Moyenne simple = &sum; x<sub>i</sub> / n <p>3 = &radic; 9 <p>3<sup>3</sup> = 9 <p>Moyenne pondérée = &sum; n<sub>i</sub>x<sub>i</sub> / &sum; n<sub>i</sub> <p>y = 4x +10 / 2

Pour mettre des nombres en indice et en exposant j'ai utilisé respectivement les balises SUB et SUP.

J'ai utilisé aussi certaines entités de caractère :

&radic; pour représenter le symbole racine &sum; pour représenter le symbole somme

Le langage MathML

Définition

Le Mathematical Markup Language ou MathML est un langage basé sur XML permettant l'affichage de symboles mathématiques, notamment sur Internet. Il s'agit d'une recommandation du W3C.

Exemple de formule mathématique complexe

x = 4 a c 2 a

Le code XML

Le code CSS

	math {display : block ; font-size : 20px; 
		width : 60% ; margin : 10px auto; 
		border : 1px solid red;
		padding : 20px;}

On peut bien sûr styliser les éléments du langage MathML avec le CSS.
Ici chaque formule sera dans une boite bordurée de rouge avec des marges conséquentes.

La syntaxe du langage MathML

Le code MathML doit être contenu à l'intérieur de la balise double math.

Autre exemple

Le rendu

y = a x 2 + b c

Le code

<math> <mrow> <mi>y</mi> <mo>=</mo> <mi>a</mi> <mo>&InvisibleTimes;</mo> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>b</mi> <mo>&InvisibleTimes;</mo> <mi>c</mi> </mrow>

Lorsque l'on écrit "ax" cela signifie que a est multiplié par b. le signe multiplié est implicite, ceci est rendu ici par une entité de caractère dont le radical est "InvisibleTimes" (multiplié invisible). Ceci illustre le fait que MathML décrit aussi le rôle des objets et pas uniquement la mise en forme.

Production du code

Comme vous constatez le langage MathML est assez verbeux.
Le W3C conseille d'utiliser un éditeur de MathML.
L'offre d'éditeurs est variée. Le plus souvent il s'agit de micro frameworks JS qui convertissent un expression en du code MathML. Je vous propose d'utiliser la librairie JavaScript ASCIIMathML.js.

Mise en oeuvre

Dans le document HTML il faut télécharger le fichier .js correspondant à cette librairie.
Tout "template string" contenu dans une instruction HTML sera converti en MathML.

Rappel : pour réaliser un "template string" il faut délimiter l'expression (qui peut être multilignes) par des accents graves (altgr +7).
Attenion : ces accents graves sont peu lisibles.

Le code correspondant

Dans la partie HEAD de cette page web

<script src="ASCIIMathML.js">Chargement de la librairie</script>

Dans la partie BODY

Je dois écrire les formules mathématiques selon une syntaxe simplifiée mais interprétable par le micro framework.

Ces quatre formules sont des 'template strings' (délimités par des accents graves).
Notez les symboles utilisés : sqrt, sum_, pi, ^, etc.
Les éventuelles légendes doivent être entre guillemets.

Le rendu

Quatre formules :
`x^2 + y^2 = r^2`
`x=(-b +- sqrt(b^2 – 4ac))/(2a)`
`sum_(i=1)^n i^3=((n(n+1))/2)^2`
` "Aire d'un quart de cercle" = ( pi R^2 ) / 4 `

Chaque formule est encadrée conformément à la règle de style interne pour l'élément math.