---
title: Éditer du MathML
slug: Web/MathML/Authoring
tags:
- Beginner
- MathML
- MathML Project
translation_of: Web/MathML/Authoring
---
Cette page explique comment écrire des formules mathématiques en utilisant le langage MathML. À l'instar du HTML, le MathML est décrit par des balises et des attributs. Le code source HTML devient lourd lorsque votre document contient des structures avancées telles que des listes ou tableaux mais heureusement il existe plusieurs générateurs de HTML à partir de notations simples, des éditeurs WYSIWYG ainsi que des systèmes de gestions de contenu (CMS) qui aide à l'écriture de page Web.
Les notations mathématiques sont encore plus complexes, avec des structures telles que les fractions, les racines carrées ou les matrices qui sont susceptibles de nécessiter leur propre balisage. Par conséquent, de bons outils d'édition MathML sont encore plus importants et nous en décrivons quelques-uns ci-dessous. En particulier, l'équipe MathML de Mozilla a développé [TeXZilla](https://github.com/fred-wang/TeXZilla/), un convertisseur Javascript de LaTeX vers MathML compatible avec Unicode, dont le but est d'être utilisé dans divers scénarios décrits ici. Bien sûr, la liste n'est pas exhaustive et vous êtes invité à jeter un œil à la [liste du W3C des logiciels MathML (en)](https://www.w3.org/Math/Software/) où vous pouvez trouver divers outils.
Notez que MathML est conçu pour être bien intégré au HTML5 et en particulier vous pouvez utiliser les concepts Web usuels tels que CSS, DOM, Javascript ou SVG. Cela ne rentre pas dans le cadre de ce document mais n'importe qui avec les connaissances de base des langages Web pourra facilement mélanger ceux-ci avec le MathML. Allez voir [nos démonstrations](/fr/docs/Mozilla/MathML_Project#sample_mathml_documents) et la [référence MathML](/fr/docs/Web/MathML) pour plus de détails.
## Utiliser MathML
#### MathML dans les pages HTML
Vous pouvez utiliser du MathML de présentation au sein des documents HTML5 :
```html
MathML en HTML5
MathML en HTML5
Racine carrée de deux :
```
Le MathML de contenu n'est pas supporté par les navigateurs. Il vous est alors recommandé de convertir votre arborescence de MathMLde contenu en du MathML de présentation avant de le publier, par exemple à l'aide de la feuille de style [ctop.xsl](https://code.google.com/p/web-xslt/source/browse/trunk/#trunk/ctop). Les outils mentionnés sur cette page génèrent du MathML de présentation.
#### Alternative pour les navigateurs sans support de MathML
Malheureusement, certains navigateurs sont incapables de rendre des équations avec MathML ou en ont seulement un support limité. Par conséquent, vous devrez utiliser un émulateur de MathML pour fournir un rendu alternatif. Si vous n'avez besoin que de constructions mathématiques basiques telles que celles utilisées dans cet article alors une simple feuille de style [mathml.css](https://github.com/fred-wang/mathml.css) devrait suffire. Pour l'utiliser, insérez cette ligne dans votre document HTML :
```html
```
Si vous avez besoin de constructions plus complexes, vous devrez alors envisager d'utiliser la bibliothèque [MathJax](https://www.mathjax.org) comme émulateur de MathML :
```html
```
Notez que ces deux scripts assurent la détection des fonctionnalités des éléments [mspace](/fr/docs/Web/MathML/Element/mspace) ou [mpadded](/fr/docs/Web/MathML/Element/mpadded) (renseignez-vous sur la table de compatibilité des navigateurs au pied de cet article). Il existe également un script similaire permettant d'afficher un avertissement en haut de la page pour les navigateurs ne prenant pas bien en charge MathML et de laisser les utilisateurs choisir entre l'une des solutions de repli ci-dessus :
```html
```
Si vous ne voulez pas utiliser ce lien vers GitHub mais plutôt intégrer ces polyfills ou d'autres dans votre propre projet, vous pourriez avoir besoin des scripts de détection pour vérifier le niveau de support MathML. Par exemple, la fonction suivante vérifie le support MathML en testant l'élément mspace (vous pouvez remplacer `mspace` par `mpadded`) :
```js
function supporteMathML () {
let div = document.createElement("div"), box;
div.innerHTML = "";
document.body.appendChild(div);
let box = div.firstChild.firstChild.getBoundingClientRect();
document.body.removeChild(div);
return Math.abs(box.height - 23) <= 1 && Math.abs(box.width - 77) <= 1;
}
```
Alternativement, la chaîne de caractères d'agent utilisateur suivante va permettre la détection des moteurs de rendu avec support natif de MathML (Gecko et WebKit) :
```js
var ag_ut = navigator.userAgent;
var isGecko = ag_ut.indexOf("Gecko") > -1 && ag_ut.indexOf("KHTML") === -1 && ag_ut.indexOf('Trident') === -1;
var isWebKit = ag_ut.indexOf('AppleWebKit') > -1 && ag_ut.indexOf('Chrome') === -1;
```
#### Les fontes mathématiques
Afin d'obtenir une bonne mise en page ou pour permettre différents mise en style, il est important d'avoir des fontes mathématiques disponibles. Vous pouvez ainsi fournir à vos visiteurs un lien vers les [Instructions sur les fontes de MDN](/fr/docs/Mozilla/MathML_Project/Fonts), de telle manière qu'ils puissent vérifier s'ils ont les fontes appropriées installées sur leur système ou non. Il est tout aussi bon de prévoir une alternative avec les fontes Web.
Avant Gecko 31.0, il était quelque peu fastidieux d'installer des fontes mathématiques, lisez à ce propos les [instructions pour Mozilla 2.0](/fr/docs/Mozilla/MathML_Project/FontsMozilla2.0#mathml_font_selection_with_css). Depuis Gecko 31.0, c'est beaucoup plus simple et compatible avec tout moteur de rendu Web ayant un support de MathML. Par exemple, voyez-ci une feuille de style minimale pour utiliser la fonte Latin Modern pour les textes et Latin Modern Math pour les expressions mathématiques :
```css
@namespace url('http://www.w3.org/1999/xhtml');
@namespace m url('http://www.w3.org/1998/Math/MathML');
body, m|mtext {
font-family: Latin Modern;
}
m|math {
font-family: Latin Modern Math;
}
```
En fin vous pouvez utiliser la règle [@font-face](/fr/docs/Web/CSS/@font-face) comme usuellement pour fournir une alternative WOFF pour les fontes Latin Modern et Latin Modern Math. Regardez ce [dépôt GitHub pour obtenir des fontes WOFF et des échantillons de feuilles de style CSS](https://github.com/fred-wang/MathFonts) à utiliser sur votre site ainsi que [sa page d'essai](http://fred-wang.github.io/MathFonts/).
#### MathML dans les documents XML (XHTML, EPUB, etc)
Si pour quelque raison vous avez besoin de MathML au sein de documents XML, soyez sûr de satisfaire aux exigences usuelles : document valide, usage d'un type MIME correct et espaces de noms MathML `"http://www.w3.org/1998/Math/MathML"` sur les racines `