Table des matières

Module ptex2mathml

1. Introduction

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.

2. Inclusion d'une équation

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 :

y=x2+1

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}
y=x2+1(1)

L'environnement equation* est équivalent aux $$ (équation centrée sans numérotation).

3. Labels et références

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}
sinc(x)=sin(x)x(2)
L'équation <ptex type="ref">sinc</ptex> définit la fonction sinus cardinal.

L'équation (2) définit la fonction sinus cardinal.

4. Fractions

$$\frac{x^2+1}{x^2-1}$$
x2+1x2-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}$$
1iN1jMUi,j

5. Délimiteurs

Les parenthèses peuvent être utilisées directement si le contenant n'est pas trop haut :

$$P(x)=(x-1)(x+1)$$
P(x)=(x-1)(x+1)

De même pour les crochets où les accolades :

$$y=[x-1]=\{x-1\}$$
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)$$
(x2+1x2-1)

Autres exemples :

$$\left\|\frac{A}{B}\right\|$$
|AB|

6. Tableaux

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)$$
A=(a11a12a21a22)

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}$$
000a1a2a3a4

L'argument optionnel [c] permet de centrer le tableau. Les autres valeurs possibles sont b et t.

7. Équations multi-lignes

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}
dxdt=y(3)dydt=y-x(4)

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}
x=2y(5)y=a+b+c+d+e+f+g+h+i+j+ k+l+m+n+o+p(6)

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*}
dxdt=ydydt=y-x

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.

8. Accents

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}$$
a¯¯

9. Symboles de taille variable

Voici des exemples de symboles de taille variable :

$$\int_a^bf(x)\,dx$$
abf(x)dx
$$\sum_{n=1}^{\infty}u_n$$
n=1un

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}$$
AB

10. Intégrales multiples

Ces commandes font partie de AMS-LaTeX. Voici par exemple l'intégrale double :

$$\iint_a^bF(x,y)\,dxdy$$
F(x,y)dxdy

L'ajout de la commande \limits permet de placer les limites en dessous.

$$\iiint\limits_Vf(x,y,z)\,dxdydz$$
Vf(x,y,z)dxdydz

Avec Mozilla (firefox 2.0), les intégrales multiples ne sont pas extensibles (cause inconnue).

11. Points de suspension

le point unique, servant à exprimer par exemple un produit scalaire est obtenu par :

$$\vec u\cdot\vec v$$
uv

Les points de suspension sont obtenus avec deux commandes :

$$x_1,\ldots,x_n$$
x1,,xn
$$a+\cdots+z$$
a++z

12. Surlignement et soulignement

Pour placer une flèche horizontal sur une expression (AMS-LaTeX) :

$$\overrightarrow{a+b+c}$$
a+b+c

Une accolade horizontale :

$$\overbrace{a+b+c}$$
a+b+c

13. Définition de commandes

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)$$
(ex,ey,ez)

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$$
uv+wx+αβ

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.

14. Les espaces

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$$
abcdef

15. Inclusion de texte

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$$
y0si et seulement six>0

Remarque : contrairement à LaTeX, l'argument de \text n'accepte que des caractères (pas de commandes) et n'accepte pas le caractère {.

16. Changement de style

Pour obtenir des caractères gras :

$$\mathbf{E}=E_x\mathbf{e_x}$$ E=Exex

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}$$ ABCABC

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}$$ ABCABC

Les commandes \mathit et \mathtt sont également disponibles :

$$ABC\mathit{ABC}\mathtt{ABC}$$ ABCABCABC

La première est équivalente à \mathnormal puisque les symboles mathématiques sont typographiés en italique.

Autre commande de style :

$$\mathcal{ABC}$$ ABC
Références
[1]  L. Lamport,  LATEX, a document preparation system,  (Addison-Wesley, 1994)
[2]  M. Goossens, F. Mittelbach, A. Samarin,  The Latex companion,  (Addison-Wesley, 1994)
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.