<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<article lang="fr">
  <title>Docbook sous Windows et FreeBSD</title>

  <articleinfo>
    <author>
      <firstname>Sylvain</firstname>

      <surname>Tertois</surname>
    </author>

    <date>19 juillet 2003</date>

    <revhistory>
      <revision>
        <revnumber>1.0</revnumber>

        <date>31 octobre 2002</date>

        <revdescription>
          <para>Première version</para>
        </revdescription>
      </revision>

      <revision>
        <revnumber>1.1</revnumber>

        <date>19 juillet 2003</date>

        <revdescription>
          <para>compléments d&#39;information sur les problèmes mémoire (<xref
          linkend="sec.memoire" />), création d&#39;une nouvelle section sur
          les différents soucis rencontrés (<xref linkend="sec.soucis" />).</para>
        </revdescription>
      </revision>
    </revhistory>
  </articleinfo>

  <section>
    <title>Introduction</title>

    <para>Cet article présente comment avoir un environnement de travail
    confortable pour écrire des documents en DocBook, et comment les exporter
    en divers formats, surtout PDF et HTML. Cet article présente
    l&#39;installation et l&#39;utilisation des différents produits sous
    Windows, et à la fin je parle aussi de l&#39;installation sous FreeBSD. On
    peut parfaitement l&#39;utiliser avec un autre Unix, étant donné que tous
    les outils utilisés sont soit en java, soit open source avec des versions
    pour la plupart des Unix.</para>

    <para>Ce document est écrit en utilisant cet environnement, en format
    DocBook, et peut être récupéré dans les formats DocBook, PDF, et HTML sur
    le site <ulink url="http://www.becoz.org/these"></ulink>.</para>

    <para>Je tiens à préciser que ce document décrit ce qui est à mon avis un
    environnement simple, confortable et utilisable à la date d&#39;écriture.
    Bien sûr tout le monde ne sera pas de mon avis, donc les outils que je
    propose ici ne sont pas forcément ceux qui vous conviendront.</para>
  </section>

  <section>
    <title>Éditeur</title>

    <section>
      <title>Choix de l&#39;éditeur</title>

      <para>De nombreux éditeurs existent pour les documents XML, mais la
      plupart sont orientés structure. C&#39;est à dire qu&#39;ils présentent
      le fichier XML sous forme d&#39;arbre, auquel on peut ajouter des
      éléments, définir les attributs etc... Le texte est présenté et utilisé
      comme un élément, ce qui rend peu pratique l&#39;utilisation de tels
      outils pour éditer un document contenant essentiellement du texte, ce
      qui est le cas d&#39;un fichier DocBook. Ensuite certains éditeurs de
      texte, comme Emacs, proposent de gérer les balises XML en fonction de la
      DTD. Ceci permet d&#39;éditer facilement des fichiers DocBook, tout en
      étant sûr de générer un document XML bien formé, et en général valide.
      Par contre on édite forcément au niveau source XML.</para>

      <para>L&#39;outil que j&#39;ai finalement retenu ici est XXE (XMLMind
      XML Edit), qui a l&#39;avantage de fonctionner de la même manière
      qu&#39;un traitement de texte, c&#39;est à dire en pseudo-wysiwyg. Les
      balises XML sont cachées (mais quand même accessibles) ce qui est
      appréciable pour du DocBook qui a tendance à multiplier le nombre de
      balises. Enfin il comprend des dictionnaires anglais et français, et on
      peut ajouter de nombreux autres langages. Voici une copie d&#39;écran
      pour se faire une idée du logiciel:</para>

      <mediaobject>
        <imageobject>
          <imagedata fileref="ecran.png" format="PNG" width="10cm" />
        </imageobject>
      </mediaobject>
    </section>

    <section>
      <title>Installation de XXE</title>

      <para>XXE nécessite une machine virtuelle java pour fonctionner, et il
      est fortement conseillé de prendre celle de Sun, avec une version au
      moins égale à la 1.4_01. Effectivement chez moi ça ne marche pas avec la
      version 1.3. Donc si votre machine java n&#39;est pas à jour, ou si vous
      n&#39;en avez pas, commencez par la télécharger sur le site de Sun:
      allez sur <ulink url="http://java.sun.com"></ulink>, puis suivez les
      liens <quote>Downloads</quote>, <quote>J2SE 1.4 - All Platforms</quote>
      dans la partie <quote>Java™ 2 Platform, Standard Edition (J2SETM)</quote>,
      puis <quote>Windows - all languages - JRE</quote>. Une fois le fichier
      téléchargé, installez la machine Java.</para>

      <para>Ensuite il faut installer l&#39;éditeur, qu&#39;on peut trouver à
      <ulink url="http://www.xmlmind.com/xmleditor/download.shtml"></ulink>.
      Pour Windows, il existe une version auto-installable qui installe tous
      les fichiers et crée les raccourcis dans le menu démarrer. Ensuite vous
      pouvez lancer XXE et éditer vos documents DocBook. N&#39;oubliez pas de
      faire le <ulink url="http://www.xmlmind.com/xmleditor/tutorial.html">tutoriel
      sur le site de XMLMind</ulink>, il permet de se familiariser avec le
      logiciel et surtout de comprendre les différences avec un traitement de
      texte classique.</para>
    </section>
  </section>

  <section>
    <title>Transformations</title>

    <para>Les deux transformations qui seront sans doute le plus utilisés avec
    DocBook vont être abordées ici: on va regarder comment générer un document
    PDF et des pages HTML à partir d&#39;un fichier DocBook. Il va falloir
    tout d&#39;abord télécharger des fichiers de transformation XSLT et
    quelques outils.</para>

    <section>
      <title>Téléchargements</title>

      <para>De bons fichiers XSL pour DocBook sont disponibles sur le site
      <ulink url="http://sourceforge.net/project/showfiles.php?group_id=21935"></ulink>.
      Il faut prendre le fichier docbook-xsl, et la documentation est incluse
      dans l&#39;archive téléchargée. J&#39;utilise la version 1.54.1, et je
      conseille de prendre au moins celle-là, étant donné que certaines
      versions antérieures ont quelques problèmes avec PassiveTeX.</para>

      <para>Ensuite il faut un processeur XSLT. Un des processeurs conseillés
      par les auteurs des fichiers XSL, et qui fonctionne à la fois sous
      Windows et Unix, est xsltproc. Il fonctionne bien, est rapide et
      supporte quelques extensions exslt qui peuvent être utiles
      (exslt:document notamment). On peut le télécharger pour Windows ici:
      <ulink url="http://www.fh-frankfurt.de/~igor/projects/libxml/index.html"></ulink>.
      Il faut télécharger libxml, libxslt et xsltproc. Dézippez les trois
      archives dans le même dossier, et mettez le chemin de ce dossier dans le
      PATH pour que Windows puisse retrouver l&#39;exécutable et les
      bibliothèques nécessaires pour faire une transformation xsl. Pour
      vérifier que tout fonctionne bien, ouvrez une fenêtre DOS, dans un
      répertoire autre que celui dans lequel est installé xsltproc, et tapez
      <command>xsltproc</command>. Il ne devrait pas y avoir d&#39;erreur, et
      xsltproc devrait donner la liste des options disponibles.</para>

      <para>Pour éviter que xsltproc charge systématiquement la dtd sur
      internet, vous pouvez utiliser un fichier catalogue, qui contient la
      liste des identifieurs PUBLIC que vous utilisez dans les documents xml
      et un fichier dtd stocké en local sur votre machine. Vous pouvez par
      exemple vous inspirer du fichier catalogue de XXE (le fichier
      <filename>catalog.xml</filename> dans le répertoire
      <filename>config</filename>). Il faudra sans doute changer les chemins
      relatifs dans le catalogue, puisqu&#39;ils doivent être relatifs au
      répertoire de travail de xsltproc, donc celui de vos documents docbook.
      Une fois le fichier de catalogue créé, il faut créer une variable
      d&#39;environnement (panneau de configuration, système, environnement)
      qui s&#39;appelle XML_CATALOG_FILES et qui contient le chemin vers le
      fichier de catalogue.</para>
    </section>

    <section>
      <title>Utilisation des fichiers xsl</title>

      <para>Les fichiers xsl sont rangés dans différents dossiers suivant leur
      utilisation. On va surtout s&#39;intéresser aux dossiers html et fo.
      Dans le dossier html se trouvent les xsl qui vont générer des fichiers
      html. Les deux que l&#39;on va utiliser sont <filename>html/docbook.xsl</filename>
      et <filename>html/chunk.xsl</filename>. <filename>docbook.xsl</filename>
      crée un grand fichier html qui contient tout le document DocBook en une
      fois, tant dis que <filename>chunk.xsl</filename> va créer plusieurs
      petits fichiers, un par chapitre en général. <filename>chunk.xsl</filename>
      nécessite l&#39;utilisation d&#39;un processeur XSLT qui reconnaît
      l&#39;extension exslt:document, ce qui est le cas de xsltproc. Dans le
      dossier fo le fichier <filename>fo/docbook.xsl</filename> permet de
      générer un fichier au format xsl-fo, ce qui permettra de générer un
      fichier PDF.</para>

      <para>Ces fichiers XSL sont largement personnalisables, et sont
      contrôlés par une série de paramètres. On peut préciser la valeur des
      paramètres que l&#39;on veut redéfinir sur la ligne de commande du
      processeur xslt, mais à la longue c&#39;est beaucoup plus simple de les
      préciser dans son propre fichier xsl, en utilisant la fonctionnalité
      xsl:import. En effet on appliquera au fichier docbook son propre fichier
      xsl, qui fera appel aux fichiers xsl cités précédemment. Dans notre
      fichier xsl, on peut donner la valeur qu&#39;on veut aux différents
      paramètres. Voici par exemple un fichier xsl qui permet de produire un
      document xsl-fo avec les extensions pour PassiveTeX, les équations au
      format LateX, et une sortie avec indentation pour pouvoir lire soi-même
      le fichier fo:</para>

      <programlisting id="exemplexsl">&#60;?xml version=&#34;1.0&#34;?&#62;
&#60;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34; version=&#34;1.0&#34;&#62;

&#60;!-- importation de la transformation docbook en fo--&#62;
&#60;xsl:import href=&#34;file://E:/docbook-xsl/fo/docbook.xsl&#34;/&#62;

&#60;!-- sortie indentée --&#62;
&#60;xsl:output method=&#34;xml&#34; indent=&#34;yes&#34; encoding=&#34;iso-8859-1&#34;/&#62;

&#60;!-- extensions PassiveTeX --&#62;
&#60;xsl:param name=&#34;tex.math.in.alt&#34; select=&#34;&#39;latex&#39;&#34;/&#62;
&#60;xsl:param name=&#34;passivetex.extensions&#34; select=&#34;1&#34;/&#62;

&#60;/xsl:stylesheet&#62;</programlisting>

      <para>J&#39;ai utilisé un chemin absolu pour le fichier xsl importé, ce
      qui me permet d&#39;utiliser ce fichier xsl n&#39;importe où sur mon
      disque.</para>

      <para>Avec les fichiers xsl il y a une documentation qui contient tous
      les paramètres avec une petite explication sur ce qu&#39;ils font et
      quelle valeur ils ont par défaut.</para>
    </section>

    <section>
      <title>Production de fichiers html</title>

      <para>Commencez par faire votre fichier xsl, comme <link
      linkend="exemplexsl">ci-dessus</link>, en important au choix le fichier
      <filename>html/docbook.xsl</filename> pour créer une grande page html,
      ou le fichier <filename>html/chunk.xsl</filename> pour créer plusieurs
      petites pages. Dans ce dernier cas, le paramètre chunk.section.depth
      permet de régler la profondeur de la découpe (le niveau
      d&#39;imbrication au bout duquel on place le contenu dans un nouveau
      fichier) et le paramètre chunk.first.sections permet de dire si l&#39;on
      veut que la première section soit sur la même page que le sommaire ou
      sur une page séparée. Voici par exemple le fichier xsl qui a servi à
      changer ce document en ensemble de pages html (vous aurez sans doute
      besoin de changer le chemin absolu vers le fichier xsl):</para>

      <programlisting>&#60;?xml version=&#34;1.0&#34; encoding=&#34;iso-8859-1&#34;?&#62;
&#60;xsl:stylesheet xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34;
                version=&#34;1.0&#34;&#62;

&#60;xsl:import href=&#34;../xsl/html/chunk.xsl&#34;/&#62;

&#60;!-- caractéristiques des pages html générées --&#62;
&#60;xsl:param name=&#34;chunker.output.indent&#34; select=&#34;&#39;yes&#39;&#34;/&#62;
&#60;xsl:param name=&#34;chunker.output.doctype-public&#34; select=&#34;&#39;-//W3C//DTD HTML 4.01 Transitional//EN&#39;&#34;/&#62;
&#60;xsl:param name=&#34;html.stylesheet&#34; select=&#34;&#39;style.css&#39;&#34;/&#62;

&#60;!-- extensions passivetex --&#62;
&#60;xsl:param name=&#34;tex.math.in.alt&#34; select=&#34;&#39;latex&#39;&#34;/&#62;
&#60;xsl:param name=&#34;passivetex.extensions&#34; select=&#34;1&#34;/&#62;

&#60;!-- pas de svg en sortie --&#62;
&#60;xsl:param name=&#34;use.svg&#34; select=&#34;0&#34;/&#62;

&#60;!-- numérotation des sections --&#62;
&#60;xsl:param name=&#34;section.autolabel&#34; select=&#34;1&#34;/&#62;

&#60;!-- table des matières sur une page séparée --&#62;
&#60;xsl:param name=&#34;chunk.first.sections&#34; select=&#34;1&#34;/&#62;

&#60;/xsl:stylesheet&#62;</programlisting>

      <para>Ensuite utilisez xsltproc pour faire la transformation. Si vous
      créez plusieurs fichiers html (si vous passez par <filename>html/chunk.xsl</filename>,
      donc) vous n&#39;avez pas besoin de rediriger la sortie. Une commande
      comme ceci, dans une fenêtre DOS dans le répertoire du fichier docbook
      fonctionnera:</para>

      <programlisting>xslrproc mon_fichier_transform.xsl mon_fichier_docbook.xml</programlisting>

      <para>Et une série de fichiers html sera générée. Si vous créez un seul
      fichier html (donc en passant par <filename>html/docbook.xsl</filename>),
      vous devez rediriger la sortie vers le fichier de destination:</para>

      <programlisting>xsltproc mon_fichier_transform.xsl mon_fichier_docbook.xml &#62; ma_sortie.html</programlisting>
    </section>

    <section>
      <title>Production de fichiers pdf</title>

      <section>
        <title>Outils à télécharger</title>

        <para>Pour transformer un fichier fo en fichier pdf, un des moyens
        existants est PassiveTeX. Pour cela il faut tout d&#39;abord installer
        TeX, et je conseille sous Windows la distribution MikTeX, qu&#39;on
        peut trouver ici: <ulink url="http://www.miktex.org/setup.html"></ulink>.
        En plus de l&#39;installation de base, il faudra installer les
        packages <filename>xmltex</filename> et <filename>passivetex</filename>.
        Vérifiez ensuite la version de passivetex que vous avez, parce que
        chez moi les versions antérieures à la 32 de <filename>fotex.xmt</filename>
        avaient quelques problèmes. Pour connaître le numéro de version, allez
        voir le début du fichier <filename>C:\texmf\tex\xmltex\passivetex\fotex.xmt</filename>
        (en supposant que mixTeX soit installé dans <filename>C:\texmf</filename>).
        Vous devriez avoir quelque chose comme ça:</para>

        <programlisting>% $Id: docbook.xml,v 1.1.1.1 2003/06/19 12:53:31 daixiwen Exp $, $Date: 2003/06/19 12:53:31 $</programlisting>

        <para>Ce qui est important c&#39;est le numéro après le #. S&#39;il
        est inférieur à 32, il faudrait mettre passivetex à jour.
        Malheureusement MikTeX n&#39;évolue pas aussi rapidement que
        PassiveTeX, donc il faudra peut-être faire la mise à jour
        manuellement. Téléchargez la dernière version de PassiveTeX sur ce
        site: <ulink url="http://www.tei-c.org.uk/Software/passivetex/"></ulink>,
        et décomprimez l&#39;archive pour remplacer le contenu du répertoire
        passivetex (normalement <filename>C:\texmf\tex\xmltex\passivetex</filename>).</para>
      </section>

      <section>
        <title>Transformation</title>

        <para>Tout d&#39;abord il faut utiliser les fichiers xsl pour créer un
        fo à partir de votre document DocBook. Pour cela je conseille
        d&#39;utiliser votre propre xsl, comme dans l&#39;<link
        linkend="exemplexsl">exemple en début de chapitre</link>. Il est
        intéressent de mettre le paramètre passivetex.extensions à 1, pour
        avoir les signets et les liens hypertexte dans le pdf produit.
        Ensuite, appliquez la transformation avec xsltproc:</para>

        <programlisting>xsltproc mon_fichier_transform.xsl mon_fichier_docbook.xml &#62; ma_sortie.fo</programlisting>

        <para>Ensuite utilisez TeX pour produire le PDF:</para>

        <programlisting>pdfxmltex ma_sortie.fo</programlisting>

        <para>Il faudra exécuter deux fois cette commande pour que le PDF soit
        complet, avec les signets et les liens hypertexte correctement placés.
        Le résultat sera placé dans un fichier PDF qui a le même nom que le
        fichier fo d&#39;origine (donc ici <filename>ma_sortie.pdf</filename>).</para>
      </section>
    </section>
  </section>

  <section>
    <title>Équations</title>

    <para>Le sujet est tellement compliqué que je lui ai donné un chapitre
    entier!</para>

    <section>
      <title>LateX ou MathML?</title>

      <para>Deux moyens de décrire des équations peuvent être utilisés. LateX
      est le format <quote>historique</quote>, 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&#39;abord pour les documents HTML
      MathML n&#39;est reconnu que par les browsers Amaya et Mozilla, ce qui
      limite un peu l&#39;audience. Des plug-ins existent pour Internet
      Explorer mais sont soit expérimentaux soit payants. De plus il
      n&#39;existe pas d&#39;éditeurs MathML complets et peu chers. Éditer du
      MathML à la main est vraiment trop compliqué. C&#39;est pourquoi je
      pense que pour l&#39;instant il vaut mieux utiliser des équations au
      format LateX.</para>
    </section>

    <section>
      <title>Utilisation du format LateX</title>

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

      <equation>
        <title>Loi de la relativité générale</title>

        <alt role="tex">E=mc^2</alt>

        <graphic fileref="emc2.gif" />
      </equation>

      <programlisting>&#60;equation&#62;
  &#60;title&#62;Loi de la relativité générale&#60;/title&#62;
  &#60;alt role=&#34;tex&#34;&#62;E=mc^2&#60;/alt&#62;
  &#60;graphic fileref=&#34;emc2.gif&#34;/&#62;
&#60;/equation&#62;</programlisting>

      <para>L&#39;attribut role=&#34;tex&#34; précise que l&#39;équation est
      au format LateX. On utilisera la même méthode pour les équations en
      ligne.</para>
    </section>

    <section>
      <title>Sortie en fichier PDF</title>

      <para>Vu que c&#39;est LateX qui va produire le fichier PDF, il n&#39;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 à
      &#34;latex&#34; dans votre fichier xsl. (Voir l&#39;<link
      linkend="exemplexsl">exemple du chapitre précédent</link>).</para>
    </section>

    <section>
      <title>Sortie en fichier HTML</title>

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

      <section>
        <title>Outils à télécharger</title>

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

        <programlisting>configure --without-kpathsea --disable-mktexpf --enable-maketexpk=makepk --enable-gif</programlisting>

        <para>puis</para>

        <programlisting>make</programlisting>

        <para>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):</para>

        <programlisting>export DVI2BITMAP_PK_PATH=&#34;/cygdrive/c/localtexmf/fonts/pk/ibmvga/public/cm</programlisting>

        <para>A condition que votre répertoire local pour tex soit
        <filename>C:\localtexmf</filename> bien sûr.</para>
      </section>

      <section>
        <title>Utilisation</title>

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

        <programlisting>latex tex-math-equations.tex
dvi2bitmap tex-math-equations.dvi</programlisting>

        <para>Et ceci va créer toutes vos équations sous forme d&#39;images
        pour vos pages html.</para>
      </section>

      <section>
        <title>Premier lancement de dvi2bitmap</title>

        <para>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&#39;utilisant pas la même convention pour nommer les fichiers de
        police, ce qui fait que dvi2bitmap n&#39;arrive pas à trouver les
        polices qu&#39;il a demandé de générer. Donc au premier lancement de
        dvi2bitmap, vous aurez un message d&#39;erreur disant qu&#39;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&#39;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 <filename>/cygdrive/c/localtexmf/fonts/pk/ibmvga/public/cm/100dpi/cmr10.pk</filename>
        sera pour dvi2bitmap <filename>/cygdrive/c/fonts/pk/ibmvga/public/cm/cmr10.110pk</filename>.
        La rustine temporaire que j&#39;ai trouvée pour mettre tout le monde
        d&#39;accord est de créer des liens symboliques entre les anciens et
        les nouveaux noms. Avec Cygwin placez-vous dans le répertoire
        <filename>/cygdrive/c/fonts/pk/ibmvga/public/cm</filename> et tapez
        les commandes suivantes:</para>

        <programlisting>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</programlisting>

        <para>Ensuite si vous relancez dvi2bitmap ça devrait marcher. S&#39;il
        a besoin d&#39;autres polices il faudra faire la même manipulation.</para>
      </section>
    </section>
  </section>

  <section>
    <title>Installation sous FreeBSD</title>

    <para>Tous les logiciels cités ci-dessus sont également disponibles pour
    FreeBSD. En voici la liste et quelques notes sur l&#39;installation et
    l&#39;utilisation.</para>

    <section>
      <title>Environnement d&#39;édition</title>

      <para>Il faudra tout d&#39;abord la machine java de Sun. Sun n&#39;a pas
      compilé sa machine java pour FreeBSD, mais on peut installer la version
      linux et utiliser la couche de compatibilité de FreeBSD. Pour cela, il
      faut d&#39;abord télécharger le kit Java 1.4 SDK pour linux, ici: <ulink
      url="http://java.sun.com"></ulink>, puis mettre le fichier téléchargé
      dans le répertoire /usr/ports/distfiles. Ensuite tapez dans un terminal
      en tant que root:</para>

      <programlisting>cd /usr/ports/java/linux-sun-jdk14
make
make install
make clean
ln -s /usr/local/bin/javavm /usr/local/bin/java</programlisting>

      <para>Je ne sais pas pourquoi le port java ne place pas directement un
      exécutable java, mais en créant le lien comme indiqué en dernière ligne
      ça marche.</para>

      <para>Ensuite il faut télécharger XXE ici: <ulink
      url="http://www.xmlmind.com/xmleditor/download.shtml"></ulink> et
      décomprimer l&#39;archive dans un répertoire, de préférence dans la
      hiérarchie <filename>/usr/local</filename>. (<filename>/usr/local/apps/xxe</filename>
      par exemple). On pourra lancer XXE en utilisant le script
      <filename>xxe</filename> présent dans le répertoire principal de
      l&#39;application.</para>
    </section>

    <section>
      <title>Processeur xslt</title>

      <para>On peut également installer xsltproc, toujours en exécutant en
      tant que root:</para>

      <programlisting>cd /usr/ports/textproc/libxslt
make
make install
make clean</programlisting>

      <para>Les mêmes commandes xsltproc que sous Windows peuvent être
      utilisées. Pour utiliser un catalogue, il faut comme sous Windows
      déclarer une variable globale XML_CATALOG_FILES.</para>
    </section>

    <section>
      <title>xmltex</title>

      <section>
        <title>installation automatique</title>

        <para>Les archives de passivetex et xmltex n&#39;ont pas de numéros de
        version, et les installations automatiques des ports correspondants
        sur les BSD ne marcheront que s&#39;ils correspondent exactement à la
        version disponible au moment de l&#39;installation sur le site de TEI.
        Donc vous pouvez tenter l&#39;installation automatique, et si ça ne
        marche pas, faire l&#39;installation manuelle décrite dans le
        paragraphe suivant. Pour installer teTeX, xmltex et passivetex,
        exécutez en tant que root:</para>

        <programlisting>cd /usr/ports/print/passivetex
make
make install
make clean</programlisting>
      </section>

      <section id="sec.install-manuelle">
        <title>installation manuelle</title>

        <para>Tout d&#39;abord on va installer teTeX. Exécutez en tant que
        root:</para>

        <programlisting>cd /usr/ports/print/teTeX
make
make install
make clean</programlisting>

        <para>Ensuite il faut télécharger les archives de xmltex et passivetex
        sur le site de TEI, ici: <ulink
        url="http://www.tei-c.org.uk/Software/passivetex/"></ulink>. Créer un
        dossier <filename>/usr/local/texmf/tex/xmltex</filename> et
        décomprimer les archives <filename>base</filename> (xmltex) et
        <filename>passivetex</filename> dedans. Ensuite il y a quelques
        actions a faire pour créer les fichiers de format et les exécutables
        correspondants:</para>

        <programlisting id="listing.creation-formats">cd /usr/local/share/texmf/web2c
texconfig rehash
tex -ini -progname=xmltex &#34;&#38;latex&#34; xmltex.ini
pdftex -ini -progname=pdfxmltex &#34;&#38;pdflatex&#34; pdfxmltex.ini
texconfig rehash
ln -s /usr/local/bin/tex /usr/local/bin/xmltex
ln -s /usr/local/bin/pdftex /usr/local/bin/pdfxmltex</programlisting>
      </section>

      <section id="sec.memoire">
        <title>Taille des buffers mémoire</title>

        <para>Il se peut que lors du traitement d&#39;un fichier fo TeX se
        plaigne de ne pas avoir assez de mémoire. Par exemple avec un message
        d&#39;erreur comme ceci:</para>

        <programlisting>! TeX capacity exceeded, sorry [save size=8000].
&#60;to be read again&#62;</programlisting>

        <para>Dans ce cas il faut augmenter le buffer correspondant dans le
        fichier /usr/local/share/texmf/web2c/texmf.cnf. Ici TeX dit que
        c&#39;est le buffer save qui est trop petit, il faut donc augmenter
        les variables save_size et save_size.context. Il y a aussi les
        variables hash_extra pour la table hash, etc... Voici la liste des
        variables que j&#39;ai modifiées et leur nouvelle valeur:</para>

        <programlisting>main_memory.context = 3000000
main_memory = 1500000

hash_extra.context = 25000
hash_extra = 25000

pool_size.context = 1500000
pool_size = 1000000

string_vacancies.context = 90000
string_vacancies = 50000

max_strings.context = 200000
max_strings = 60000

save_size.context = 20000
save_size = 16000</programlisting>

        <para>Attention, après avoir modifié certaines valeurs (main_memory
        surtout), il faut regénérer les fichiers de format pour qu&#39;elles
        soient prises en compte. Pour les formats de base (LaTeX...) on peut
        faire:</para>

        <programlisting>fmtutil --all</programlisting>

        <para>Et pour les formats créés vous-même (xmltex et pdfmltex) il
        suffit de retaper les commandes de création (<xref
        linkend="sec.install-manuelle" />).</para>

        <para>Quand vous créez un fichier .pdf, TeX crée aussi un fichier .log
        avec des messages sur ce qu&#39;il a fait. A la fin de ce fichier, il
        indique la taille des différents buffers et quelle partie a été
        utilisée. Ceci peut permettre de vérifier que les changements ont bien
        été pris en compte, et de prévoir s&#39;il y aura un risque de
        saturation d&#39;un des tampons mémoire.</para>
      </section>
    </section>

    <section>
      <title>dvi2bitmap</title>

      <para>dvi2bitmap ne sera indispensable que si vous voulez insérer des
      équations au format TeX et que vous voulez une sortie HTML. Pour cela il
      faut d&#39;abord charger les sources sur le site <ulink
      url="http://www.astro.gla.ac.uk/users/norman/star/dvi2bitmap/"></ulink>.
      Ensuite en tant que root, on va décomprimer l&#39;archive et installer
      le programme. Allez dans le répertoire dans lequel l&#39;archive a été
      décomprimée, et tapez:</para>

      <programlisting>./configure
make --enable-gif --enable-png
make test
mv dvi2bitmap /usr/local/bin</programlisting>

      <para>La commande make test va vous donner entre autres le chemin vers
      les polices que dvi2bitmap utilise. Ensuite s&#39;il ne les trouve pas
      tout seul, il faudra mettre ce chemin dans la variable
      d&#39;environnement DVI2BITMAP_PK_PATH.</para>
    </section>
  </section>

  <section id="sec.soucis">
    <title>Soucis</title>

    <para>J&#39;ai rencontré quelques soucis en utilisant cette méthode, que
    je vais tenter de résumer ici.</para>

    <section>
      <title>Mémoire</title>

      <para>Comme indiqué en section <xref linkend="sec.memoire" />, j&#39;ai
      rencontré des problèmes de taille de tampons mémoire. L&#39;explication
      et la résolution se trouvent dans la section Unix parce que je n&#39;ai
      pas rencontré ce problème avec la version Windows et donc je ne peux pas
      la garantir pour Windows non plus.</para>
    </section>

    <section>
      <title>bugs et fonctionnalités absentes de PassiveTeX</title>

      <para>PassiveTeX souffre encore de quelques bugs, qui devraient être
      résolus dans les versions suivantes. La version de mars 2003 a encore
      quelques problèmes avec les entêtes et pieds de page générés par les xsl
      docbook. Je donnerai plus de détails ici quand ils seront résolus.</para>
    </section>

    <section>
      <title>Elements non gérés par les xsl</title>

      <para>Certains éléments DocBook ne sont pas ou mal gérés par les xsl
      (par exemple les bibliographies). Dans ce cas il faut tout simplement
      ajouter ses propres templates et donc faire un peu de xsl:fo. Après la
      publication de ma thèse je donnerai ici quelques templates que j&#39;ai
      créés afin de montrer comment faire.</para>
    </section>
  </section>

  <section>
    <title>Conclusion</title>

    <para>Voilà j&#39;espère que ceci vous aidera à faire du DocBook sur votre
    ordinateur. Certaines choses doivent encore être améliorées (je ne suis
    pas du tout satisfait du bricolage à la ficelle et au scotch pour
    <filename>dvi2bitmap</filename> sous Windows par exemple) mais ceci permet
    déjà d&#39;écrire de nombreux documents et de les exporter.</para>

    <para>Tout commentaire ou suggestion est bien sûr le bienvenu! Envoyez-les
    à <email>these@becoz.org</email>.</para>
  </section>
</article>