Le module ptex2mathml (écrit par l'auteur) effectue la conversion d'équations écrites au format LaTeX en MathML. Il est écrit en Python, et ne nécessite pas LaTeX pour fonctionner. ptex2mathml accepte une grande partie des constructions standard de LaTeX en mode mathématique, telles qu'elles sont définies dans [1]. Certains caractères spéciaux de AMS-LaTeX ([2]) sont aussi pris en compte. Les définitions de commande (analogue de newcommand) sont aussi acceptées.
Ce convertisseur est conçu pour produire des équations MathML (Presentation Markup). Le navigateur Firefox affiche les équations MathML. La bibliothèque javascript MathJax permet d'afficher les équations MathML sur tout navigateur et améliore l'affichage sur Firefox. MathJax permet aussi d'afficher des équations définies dans le fichier HTML sous forme LaTeX (au prix d'un chargement de la page plus long). MathJax n'existait pas au moment de la création de ce site web, c'est pourquoi les équations sont au format MathML. Grace à MathJax, il est possible de créer une page HTML avec des équations écrites en LaTex mais les équations du présent site sont toutes en MathML, ce qui permet un affichage très rapide des pages, qui peuvent contenir plusieurs centaines d'équations.
Mis à part les simulations en javascript, le seul code javascript qui tourne dans les pages de ce site est celui de MathJax.
Pour inclure une équation traîtée par ce module, il suffit d'utiliser l'élément ptex. Par exemple, le code suivant
<ptex>$$y=\sqrt{x^2+1}$$</ptex>
génère l'équation suivante :
On remarque l'utilisation de $$ pour délimiter une équation centrée. Pour une équation en ligne, utiliser le simple $.
L'environnement equation (qui ouvre le mode mathématique centré) permet d'obtenir une équation numérotée. Le numéro d'équation est placé à droite de l'équation avec une espace (2 em par défaut). Le numéro d'équation faisant partie de l'équation MathML, il n'est pas possible de le placer à droite ou à gauche de la page (comme le fait LaTeX).
\begin{equation}y=\sqrt{x^2+1}\end{equation}
L'environnement equation* est équivalent aux $$ (équation centrée sans numérotation).
Pour placer un label dans une équation, utiliser la commande \label{nom}, comme avec LaTeX. La référence à une équation avec label se fait au moyen d'un élément ptex dont l'attribut ref est égal à ref, le texte de l'élément étant le nom du label.
Exemple :
\begin{equation}sinc(x)=\frac{\sin(x)}{x}\label{sinc}\end{equation}
L'équation <ptex type="ref">sinc</ptex> définit la fonction sinus cardinal.
L'équation définit la fonction sinus cardinal.
$$\frac{x^2+1}{x^2-1}$$
L'argument optionnel permet de préciser l'épaisseur du trait. Cela permet de faire ce genre de construction :
$$\sum_{\frac[0]{1\le i\le N}{1\le j\le M}}U_{i,j}$$
Les parenthèses peuvent être utilisées directement si le contenant n'est pas trop haut :
$$P(x)=(x-1)(x+1)$$
De même pour les crochets où les accolades :
$$y=[x-1]=\{x-1\}$$
Ces délimiteurs vont obligatoirement par paire (cette condition n'est pas imposée par LaTeX) car en MathML le contenu délimité doit être inclu dans un élément mrow.
Pour encadrer une expression s'étendant en hauteur, il faut utiliser une paire \left\right :
$$\left\left(\frac{x^2+1}{x^2-1}\right)$$
Autres exemples :
$$\left\|\frac{A}{B}\right\|$$
Les tableaux sont obtenus avec l'environnement array. Voici par exemple un tableau à deux lignes et deux colonnes pour obtenir une matrice :
$$A=\left(\begin{array}{cc}a_{11}&a_{12}\\a_{21}&a_{22}\end{array}\right)$$
Un tableau peut contenir un autre tableau :
$$\begin{array}{cc}0&0\\0&\begin{array}[c]{cc}a_1&a_2\\a_3&a_4\end{array}\end{array}$$
L'argument optionnel [c] permet de centrer le tableau. Les autres valeurs possibles sont b et t.
L'environnement eqnarray permet d'obtenir une grande équation sur plusieurs lignes, ou bien plusieurs équations alignées. L'entrée dans l'environnement constitue une entrée en mode mathématique; il ne faut pas placer la construction entre $. Les esperluettes indiquent les alignements verticaux.
\begin{eqnarray}\frac{dx}{dt}&=&y\\\frac{dy}{dt}&=&y-x\end{eqnarray}
L'environnement eqnarray* est identique à eqnarray mais ne produit pas de numéro d'équation.
Pour ne pas numéroter une ligne, il faut ajouter \nonumber (ou notag) à la fin de cette ligne. Cela permet d'écrire une grande équation sur plusieurs lignes :
\begin{eqnarray}x&=&2y\\y&=&a+b+c+d+e+f+g+h+i+j+\nonumber\\ & & k+l+m+n+o+p\end{eqnarray}
L'environnement align (AMS-LaTeX) n'exige qu'une seule esperluette par équation :
\begin{align*}\frac{dx}{dt}&=y\\\frac{dy}{dt}&=y-x\end{align*}
La version PDF est meilleure avec align car les espaces de part et d'autre d'un signe égal sont de taille correct (trop grand avec eqnarray). En revanche, la version MathML présente une dissymétrie des espaces.
Voici les accents de LaTeX :
$$\vec\alpha\hat\alpha\check\alpha\breve\alpha\acute\alpha\grave \alpha\tilde\alpha\bar\alpha\dot\alpha\ddot\alpha$$
Il est possible de combiner les accents :
$$\bar{\bar a}$$
Voici des exemples de symboles de taille variable :
$$\int_a^bf(x)\,dx$$
$$\sum_{n=1}^{\infty}u_n$$
Pour la seconde, noter la signification particulière des arguments introduits par les symboles _ et ^.
Voici les autres symboles :
\coprod\oint\bigcap\bigcup\bigsqcup\bigvee\bigwedge\bigodot\bigotimes\bigoplus\biguplus
et un exemple de variation de la taille :
$$\bigcap\frac{A}{B}$$
Ces commandes font partie de AMS-LaTeX. Voici par exemple l'intégrale double :
$$\iint_a^bF(x,y)\,dxdy$$
L'ajout de la commande \limits permet de placer les limites en dessous.
$$\iiint\limits_Vf(x,y,z)\,dxdydz$$
Avec Mozilla (firefox 2.0), les intégrales multiples ne sont pas extensibles (cause inconnue).
le point unique, servant à exprimer par exemple un produit scalaire est obtenu par :
$$\vec u\cdot\vec v$$
Les points de suspension sont obtenus avec deux commandes :
$$x_1,\ldots,x_n$$
$$a+\cdots+z$$
Pour placer une flèche horizontal sur une expression (AMS-LaTeX) :
$$\overrightarrow{a+b+c}$$
Une accolade horizontale :
$$\overbrace{a+b+c}$$
Cette fonction est équivalente à la commande newcommand de LaTeX.
Une définition de commande se fait dans un élément ptex muni de l'attribut type='def'. Le nom de la commande est donné par l'attribut name et le nombre d'argument par l'attribut n.
Voici par exemple une définition de commande sans argument :
<ptex type="def" name="base" n="0">\vec e_x,\vec e_y,\vec e_z</ptex>
et son utilisation :
$$(\base)$$
Un exemple de commande à deux arguments :
<ptex type="def" name="prodscal" n="2">\vec #1\cdot\vec #2</ptex>
et son utilisation
$$\prodscal uv+\prodscal{w}{x}+\prodscal\alpha\beta$$
Les deux caractères (u et v) sont interpretés comme deux arguments. Un argument peut aussi être constitué d'une commande unique (sans accolades).
Remarques : une définition de commande peut faire appel à une commande défini auparavant.
Les espaces se placent automatiquement entre les différents symboles mathématiques. Dans certains cas, il peut être nécessaire d'ajouter des espaces :
$$ab\,c\:d\;e\ f$$
La commande \text permet d'inclure du texte. Seuls les espaces situées entre les mots sont pris en compte. Les espaces avant et après le texte doivent être ajoutées explicitement (en dehors de l'argument) :
$$y\ge 0\ \text{si et seulement si}\ x>0$$
Remarque : contrairement à LaTeX, l'argument de \text n'accepte que des caractères (pas de commandes) et n'accepte pas le caractère {.
Pour obtenir des caractères gras :
$$\mathbf{E}=E_x\mathbf{e_x}$$Les autres commandes de style donnent des résultats différents selon le navigateur utilisé (Firefox ou IE) et selon la police utilisée.
Lorsque la police définie par la feuille de style CSS est sans-serif, comme c'est le cas sur la présente page, il est possible d'obtenir des caractères normaux (avec empattements) :
$$ABC\mathnormal{ABC}$$En revanche, si la police utilisée est de type serif (avec empattements), la commande précédente est sans effet (désactiver le style de la page pour le voir). Dans ce cas, les caractères sans-serif sont obtenus explicitement par :
$$ABC\mathsf{ABC}$$Les commandes \mathit et \mathtt sont également disponibles :
$$ABC\mathit{ABC}\mathtt{ABC}$$La première est équivalente à \mathnormal puisque les symboles mathématiques sont typographiés en italique.
Autre commande de style :
$$\mathcal{ABC}$$