<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="build_tools" xml:lang="fr">

<info>
  <link type="guide" xref="index"/>

    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Sébastien Wilmet</mal:name>
      <mal:email>sebastien.wilmet@gmail.com</mal:email>
      <mal:years>2011</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Bruno Brouard</mal:name>
      <mal:email>annoa.b@gmail.com</mal:email>
      <mal:years>2011-12</mal:years>
    </mal:credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>Alain Lojewski</mal:name>
      <mal:email>allomervan@gmail.com</mal:email>
      <mal:years>2012</mal:years>
    </mal:credit>
  </info>

<title>Outils de construction</title>

<synopsis>
  <p>Le but des outils de construction est de générer un document au format PDF, DVI ou PS.</p>
</synopsis>

<links type="section"/>

<section id="overview">
  <title>Introduction</title>

  <p>Plusieurs outils différents peuvent être utilisés pour la compilation d'un document. Il y a des commandes de bas niveau et deux outils de haut niveau : Latexmk et Rubber.</p>

  <table rules="rowgroups">
    <title>Commandes de bas niveau</title>
    <thead>
      <tr>
        <td><p>Étiquette</p></td>
        <td><p>Commande</p></td>
      </tr>
    </thead>
    <tbody its:translate="no">
      <tr>
        <td><p>LaTeX → DVI</p></td>
        <td><p><cmd>latex</cmd></p></td>
      </tr>
      <tr>
        <td><p>LaTeX → PDF</p></td>
        <td><p><cmd>pdflatex</cmd></p></td>
      </tr>
    </tbody>
    <tbody its:translate="no">
      <tr>
        <td><p>DVI → PDF</p></td>
        <td><p><cmd>dvipdf</cmd></p></td>
      </tr>
      <tr>
        <td><p>DVI → PS</p></td>
        <td><p><cmd>dvips</cmd></p></td>
      </tr>
      <tr>
        <td><p>PS → PDF</p></td>
        <td><p><cmd>ps2pdf</cmd></p></td>
      </tr>
    </tbody>
    <tbody>
      <tr>
        <td><p>Bibliographie</p></td>
        <td its:translate="no"><p><cmd>bibtex</cmd></p></td>
      </tr>
      <tr>
        <td><p>Index</p></td>
        <td its:translate="no"><p><cmd>makeindex</cmd></p></td>
      </tr>
    </tbody>
  </table>

  <p>Compiler un document LaTeX implique parfois d'exécuter plusieurs commandes de bas niveau, dans un certain ordre et un certain nombre de fois. Par exemple :</p>
  <screen its:translate="no">
$ latex document.tex
$ bibtex document.aux
$ latex document.tex
$ dvips -t a4 document.dvi
$ ps2pdf document.ps</screen>

  <p>Utiliser un outil de plus haut niveau comme Latexmk ou Rubber simplifie beaucoup ce procédé, puisqu'une seule commande est nécessaire. En effet, ces outils détectent combien de fois la commande <cmd>latex</cmd> ou <cmd>pdflatex</cmd> doit être appelée, et si <cmd>bibtex</cmd> ou <cmd>makeindex</cmd> est requis. Par défaut, LaTeXila utilise Latexmk.</p>
</section>

<section id="latexmk-rubber">
  <title>Différences entre Latexmk et Rubber</title>
  <p><link href="http://www.phys.psu.edu/~collins/software/latexmk-jcc/">Latexmk</link> et <link href="https://launchpad.net/rubber/">Rubber</link> ont le même objectif : simplifier le procédé de compilation d'un document LaTeX. Latexmk est écrit en Perl, tandis que Rubber est écrit en Python.</p>

  <p>La sortie de Latexmk contient plus d'informations : quelles commandes sont exécutées, combien de fois, leurs sorties, et les raisons pour lesquelles Latexmk exécute (ou pas) ces commandes. Par contre, la sortie de Rubber ne contient pas beaucoup d'informations. Quand une erreur se produit, cela peut être plus difficile à diagnostiquer.</p>

  <p>Rubber filtre également la sortie de la commande <cmd>latex</cmd> ou <cmd>pdflatex</cmd>. Par conséquent, quand Rubber écrit une erreur, il est plus difficile de savoir de quel type d'erreur il s'agit. Si vous utilisez Latexmk, les erreurs sont classées en trois types : les erreurs critiques, les simples avertissements et les « bad box » (par exemple lorsqu'un mot dépasse dans la marge). Avec Rubber, il n'y a pas de distinction entre les erreurs critiques et les simples avertissements. Consultez la section <link xref="#post-processors"/> pour plus d'informations.</p>

  <p>Latexmk est plus flexible. Chaque commande de bas niveau peut être configurée sur mesure, par exemple pour ajouter un paramètre, ou utiliser un outil complètement différent. Ceci peut être fait soit via la ligne de commande, soit dans des fichiers de configuration (consultez les options <cmd>-e</cmd> et <cmd>-r</cmd>). Rubber est aussi configurable, mais moins que Latexmk.</p>

  <p>Dernier point, mais pas des moindres : Rubber semble avoir plus de bogues et est moins activement maintenu que Latexmk.</p>
</section>

<section id="execute">
  <title>Lancement d'un outil de construction</title>

  <p>Il y a plusieurs façons de lancer un outil de construction :</p>
  <list>
    <item><p>Open the <gui style="menu">Build</gui> menu.</p></item>
    <item><p>Use the buttons in the main toolbar.</p></item>
    <item><p>Utiliser les raccourcis clavier : <key>F2</key> → <key>F11</key>.</p></item>
  </list>

  <p>L'outil de construction est lancé sur le fichier actuellement ouvert. Si le fichier fait partie d'un <link xref="projects">projet</link>, l'exécution se fait sur le fichier principal du projet.</p>

  <note style="important">
    <title>Outils de construction cachés</title>
    <p>Par défaut, beaucoup d'outils de construction sont cachés, donc ils ne peuvent pas être exécutés. Pour consulter la liste complète des outils de construction, les activer ou les configurer, lisez la section <link xref="#general_configuration"/>.</p>
  </note>
</section>

<section id="general_configuration">
  <title>Configuration générale</title>

  <p>
    To configure the build tools, go to:
    <guiseq>
      <gui style="menu">Build</gui>
      <gui style="menu">Manage Build Tools</gui>
    </guiseq>
  </p>

  <p>You will see the list of all the default build tools, and a second list
  with your personal build tools. There are check buttons to enable or disable
  them. When a build tool is disabled, it's not possible to execute it. You can
  perform some actions, like moving a tool up or down, open its properties,
  delete or copy it, create a new one, etc.</p>

  <note style="tip">
    <p>Un double clic sur un outil de construction permet d'ouvrir ses propriétés.</p>
  </note>
</section>

<section id="jobs">
  <title>Tâches d'un outil de construction</title>

  <p>In the properties of a build tool, the tricky part is to configure the jobs.
  A build tool can execute several jobs. Each job contains two pieces of
  information:</p>
  <list>
    <item><p>La commande, qui peut utiliser des variables.</p></item>
    <item><p>Le post-processeur (consultez la section <link xref="#post-processors"/>).</p></item>
  </list>

  <p>When an error occurs during a job's execution, the execution of the build
  tool is aborted, so the next jobs are not launched.</p>
</section>

<section id="post-processors">
  <title>Post-processeurs</title>
  <p>Le but d'un post-processeur est de filtrer la sortie de la commande et d'en extraire les informations utiles. Cinq post-processeurs sont disponibles :</p>

  <terms>
    <item>
      <title its:translate="no">no-output</title>
      <p>La sortie n'est simplement pas affichée.</p>
    </item>
    <item>
      <title its:translate="no">all-output</title>
      <p>Toutes les sorties sont affichées, sans aucun filtrage.</p>
    </item>
    <item>
      <title its:translate="no">latex</title>
      <p>Filtre la sortie des commandes <cmd>latex</cmd> et <cmd>pdflatex</cmd>. Il peut y avoir trois types d'erreurs : des erreurs critiques, des avertissements ou des « bad box ». Il y a aussi quelques autres informations utiles : la taille du document, le nombre de pages et le nombre d'erreurs.</p>
    </item>
    <item>
      <title its:translate="no">latexmk</title>
      <p>Utilisé pour la commande <cmd>latexmk</cmd>. En interne, ce post-processeur en utilise d'autres : <em>latex</em> et <em>all-output</em>.</p>
    </item>
    <item>
      <title its:translate="no">rubber</title>
      <p>C'est le post-processeur utilisé pour la commande <cmd>rubber</cmd>. Les erreurs sont classées en deux types : les « bad box » et les autres. Donc, contrairement au post-processeur <em>latex</em>, il n'y a pas de distinction entre les erreurs critiques et les simples avertissements.</p>
    </item>
  </terms>
</section>
</page>
