4. Équations

Le sujet est tellement compliqué que je lui ai donné un chapitre entier!

4.1. LateX ou MathML?

Deux moyens de décrire des équations peuvent être utilisés. LateX est le format «historique», assez simple à utiliser et lisible, mais il est peut-être destiné à disparaître devant MathML, qui est le nouveau standard XML pour décrire les équations. Cependant MathML a encore quelques défauts. Tout d'abord pour les documents HTML MathML n'est reconnu que par les browsers Amaya et Mozilla, ce qui limite un peu l'audience. Des plug-ins existent pour Internet Explorer mais sont soit expérimentaux soit payants. De plus il n'existe pas d'éditeurs MathML complets et peu chers. Éditer du MathML à la main est vraiment trop compliqué. C'est pourquoi je pense que pour l'instant il vaut mieux utiliser des équations au format LateX.

4.2. Utilisation du format LateX

Pour utiliser des équations au format LateX, il faut préciser dans les balises inlinemediaobject ou mediaobject deux formes pour l'équation: un fichier image et un texte au format TeX. Par exemple voici le code pour mettre cette équation:

Équation 1. Loi de la relativité générale

<equation>
  <title>Loi de la relativité générale</title>
  <alt role="tex">E=mc^2</alt>
  <graphic fileref="emc2.gif"/>
</equation>

L'attribut role="tex" précise que l'équation est au format LateX. On utilisera la même méthode pour les équations en ligne.

4.3. Sortie en fichier PDF

Vu que c'est LateX qui va produire le fichier PDF, il n'y aura pas de problèmes avec les équations. Il faut juste penser à mettre les paramètres passivetex.extensions à 1 et tex.math.in.alt à "latex" dans votre fichier xsl. (Voir l'exemple du chapitre précédent).

4.4. Sortie en fichier HTML

Le seul moyen que j'ai trouvé pour faire une sortie HTML propre c'est l'utilitaire dvi2bitmap, mais sous Windows c'est très compliqué à utiliser parce qu'il ne fait pas partie du kit MikTeX et qu'il n'est pas du tout fait pour fonctionner sous Windows! Si quelqu'un à une méthode plus simple je suis preneur...

4.4.1. Outils à télécharger

Vous aurez besoin des sources de dvi2bitmap, qu'on peut trouver ici: http://www.astro.gla.ac.uk/users/norman/star/dvi2bitmap/. Pour le compiler, il faut installer le kit Cygwin (http://www.cygwin.com/) avec les modules make et gcc. Ensuite pour compiler dvi2bitmap ouvrez une fenêtre shell Cygwin, allez dans le répertoire des sources de dvi2bitmap, et tapez:

configure --without-kpathsea --disable-mktexpf --enable-maketexpk=makepk --enable-gif

puis

make

Ceci va créer un exécutable dvi2bitmap que vous pouvez déplacer dans le dossier /usr/bin de Cygwin. Enfin vous devez ajouter cette ligne dans votre profil Cygwin (le fichier .profile dans votre répertoire home):

export DVI2BITMAP_PK_PATH="/cygdrive/c/localtexmf/fonts/pk/ibmvga/public/cm

A condition que votre répertoire local pour tex soit C:\localtexmf bien sûr.

4.4.2. Utilisation

Vous devez obligatoirement passer par le fichier xsl chunk.xsl, et plus par docbook.xsl. Il faut préciser en plus dans votre fichier xsl les deux paramètres passivetex.extensions à 1 et tex.math.in.alt à "latex". Ensuite vous créez vos documents comme d'habitude avec xsltproc, et vous verrez un fichier supplémentaire qui a été créé, tex-math-equations.tex. Exécutez ces deux commandes, sous Cygwin:

latex tex-math-equations.tex
dvi2bitmap tex-math-equations.dvi

Et ceci va créer toutes vos équations sous forme d'images pour vos pages html.

4.4.3. Premier lancement de dvi2bitmap

Il y a encore un problème qui me gène beaucoup, et que je ne sais toujours pas comment résoudre: dvi2bitmap et MikTeX n'utilisant pas la même convention pour nommer les fichiers de police, ce qui fait que dvi2bitmap n'arrive pas à trouver les polices qu'il a demandé de générer. Donc au premier lancement de dvi2bitmap, vous aurez un message d'erreur disant qu'il ne trouve pas la police. Le problème vient en fait que MikTeX place les polices générées dans un répertoire pour chaque résolution, alors que dvi2bitmap s'attend à avoir toutes les résolutions au même endroit, avec la résolution dans le nom du fichier. Par exemple ce qui est pour MikTeX /cygdrive/c/localtexmf/fonts/pk/ibmvga/public/cm/100dpi/cmr10.pk sera pour dvi2bitmap /cygdrive/c/fonts/pk/ibmvga/public/cm/cmr10.110pk. La rustine temporaire que j'ai trouvée pour mettre tout le monde d'accord est de créer des liens symboliques entre les anciens et les nouveaux noms. Avec Cygwin placez-vous dans le répertoire /cygdrive/c/fonts/pk/ibmvga/public/cm et tapez les commandes suivantes:

ln -s /cygdrive/c/fonts/pk/ibmvga/public/cm/100dpi/cmr10.pk cmr10.110pk
ln -s /cygdrive/c/fonts/pk/ibmvga/public/cm/100dpi/cmmi10.pk cmmi10.110pk
ln -s /cygdrive/c/fonts/pk/ibmvga/public/cm/100dpi/cmr7.pk cmr7.110pk

Ensuite si vous relancez dvi2bitmap ça devrait marcher. S'il a besoin d'autres polices il faudra faire la même manipulation.