<?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="cs">

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

<title>Nástroje pro sestavení</title>

<synopsis>
  <p>Účelem nástrojů pro sestavení je vygenerovat dokument ve formátu PDF, DVI nebo PS.</p>
</synopsis>

<links type="section"/>

<section id="overview">
  <title>Úvod</title>

  <p>Pro sestavení dokumentu je možné použít různé nástroje. Zde je několik nízkoúrovňových příkazů a dva vysokoúrovňové nástroje: Latexmk a Rubber.</p>

  <table rules="rowgroups">
    <title>Nízkoúrovňové příkazy</title>
    <thead>
      <tr>
        <td><p>Popisek</p></td>
        <td><p>Příkaz</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>Bibliografie</p></td>
        <td its:translate="no"><p><cmd>bibtex</cmd></p></td>
      </tr>
      <tr>
        <td><p>Rejstřík</p></td>
        <td its:translate="no"><p><cmd>makeindex</cmd></p></td>
      </tr>
    </tbody>
  </table>

  <p>Sestavení dokumentu LaTeX může vyvolat spuštění několika nízkoúrovňových příkazů a to v určitém pořadí a i několikrát. Zde je příklad:</p>
  <screen its:translate="no">
$ latex document.tex
$ bibtex document.aux
$ latex document.tex
$ dvips -t a4 document.dvi
$ ps2pdf document.ps</screen>

  <p>Použití nástrojů vyšší úrovně, jako je Latexmk nebo Rubber zjednodušuje velkou část tohoto procesu, protože stačí jediný příkaz. Je samozřejmostí, že umí tyto nástroje zjistit, kolikrát se musí zavolat příkazy <cmd>latex</cmd> nebo <cmd>pdflatex</cmd> a zda je potřeba příkaz <cmd>bibtex</cmd> nebo <cmd>makeindex</cmd>. Jako výchozí používá aplikace LaTeXila nástroj Latexmk.</p>
</section>

<section id="latexmk-rubber">
  <title>Rozdíl mezi Latexmk a Rubber</title>
  <p><link href="http://www.phys.psu.edu/~collins/software/latexmk-jcc/">Latexmk</link> a <link href="https://launchpad.net/rubber/">Rubber</link> mají stejný účel: zpracovat dokument LaTeX. Latexmk je napsán v jazyce Perl, zatímco Rubber v jazyce Python.</p>

  <p>Výstup nástroje Latexmk obsahuje více informací: které příkazy jsou spouštěny, kolikrát, jejich výstup a důvod, proč Latexmk tyto příkazy spustil (či nespustil). Výstup nástroje Rubber naopak moc informací neobsahuje. Pokud pak dojde k nějaké chybě, může být obtížnější tuto chybu diagnostikovat.</p>

  <p>Navíc Rubber filtruje výstup příkazů <cmd>latex</cmd> nebo <cmd>pdflatex</cmd>. V důsledku toho, když Rubber vypíše nějakou chybu, je obtížnější zjistit, o jaký typ chyb jde. Když používáte Latexmk, jsou chyby rozděleny do tří typů: kritické chyby, pouhá varování a chybné oblasti (například když slovo přetéká přes okraj). U nástroje Rubber se nerozlišuje mezi kritickou chybou a pouhým varováním. Více informací viz <link xref="#post-processors"/>.</p>

  <p>Latexmk je více flexibilní. Každý z nízkoúrovňových příkazů si lze přizpůsobit, například přidáním parametru nebo použitím úplně jiného nástroje. Obojí se dělá z příkazového řádku a v souborech nastavení (viz přepínače <cmd>-e</cmd> a <cmd>-r</cmd>). Rubber je sice také možné nastavovat, ale méně než Latexmk.</p>

  <p>Poslední, ale nikoliv nepodstatná věc: Zdá se, že Rubber obsahuje více chyb a je vyvíjen méně aktivně než Latexmk.</p>
</section>

<section id="execute">
  <title>Spuštění nástroje pro sestavení</title>

  <p>Existuje několik způsobů, jak spustit nástroj pro sestavení:</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>Použijte klávesovou zkratku: <key>F2</key> → <key>F11</key>.</p></item>
  </list>

  <p>Nástroj pro sestavení je spuštěn na právě otevřeném souboru. Pokud soubor náleží do <link xref="projects">projektu</link>, je zpracování provedeno na hlavním souboru projektu.</p>

  <note style="important">
    <title>Skryté nástroje pro sestavení</title>
    <p>Ve výchozím stavuj je hodně nástrojů pro sestavení skrytých, takže je není možné spustit. Abyste viděli jejich úplný seznam, musíte je aktivovat nebo nastavit, viz oddíl <link xref="#general_configuration"/>.</p>
  </note>
</section>

<section id="general_configuration">
  <title>Obecné nastavení</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>Dvojitým kliknutím na nástroj pro sestavení se otevřou jeho vlastnosti.</p>
  </note>
</section>

<section id="jobs">
  <title>Úlohy nástroje pro sestavení</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>Příkaz, který může využívat zástupných proměnných.</p></item>
    <item><p>Dodatečné zpracování postprocesorem (viz <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>Dodatečné zpracování</title>
  <p>Účelem dodatečného zpracování je filtrovat výstup příkazu a získat z něj použitelné informace. K dispozici je pět postprocesorů:</p>

  <terms>
    <item>
      <title its:translate="no">no-output</title>
      <p>Výstup se prostě nezobrazí.</p>
    </item>
    <item>
      <title its:translate="no">all-output</title>
      <p>Veškerý výstup se bez omezení zobrazí.</p>
    </item>
    <item>
      <title its:translate="no">latex</title>
      <p>Filtruje výstup příkazů <cmd>latex</cmd> nebo <cmd>pdflatex</cmd>. Mohou se vyskytnout tři typy chyb: kritické chyby, varování nebo chybné oblasti. K dispozici jsou také některé užitečné informace: velikost dokumentu, počet stránek a počet chyb.</p>
    </item>
    <item>
      <title its:translate="no">latexmk</title>
      <p>Používá se pro příkaz <cmd>latexmk</cmd>. Interně tento postprocesor používá další: <em>latex</em> a <em>all-output</em>.</p>
    </item>
    <item>
      <title its:translate="no">rubber</title>
      <p>Jedná se o postprocesor používaný příkazem <cmd>rubber</cmd>. Chyby jsou rozděleny do dvou typů: chybné oblasti a ostatní. Na rozdíl od postprocesoru <em>latex</em> se nerozlišuje mezi kritickou chybou a pouhým varováním.</p>
    </item>
  </terms>
</section>
</page>
