<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\chapter{Les moteurs de compilation sous \LaTeX{}}

\epigraph{L'aÃ©rodynamique, c'est pour les personnes qui ne savent pas construire de moteurs.}{Enzo \textsc{Ferrari}}

\label{compilation-details}\lettrine{G}{rÃ¢ce} Ã&nbsp; \LaTeX{}, l'utilisateur peut rÃ©diger ses documents tout en sÃ©parant le fond et la forme. Cette sÃ©paration requiert l'emploi d'un ``moteur de compilation'' pour transformer le code \LaTeX{} en un fichier PDF.

\section{PrÃ©sentation des diffÃ©rents moteurs}

Jusqu'Ã&nbsp; prÃ©sent, j'ai toujours recommandÃ© de compiler avec le moteur \pdfLaTeX{}. Toutefois, si tu es un peu curieux, tu as pu te rendre compte qu'il existe plein d'autres possibilitÃ©s pour la compilation rapide avec \Texmaker{}. Certaines d'entre elles contiennent justement de nouveaux moteurs de compilation \LaTeX{}. \\

Pour rappel, la rÃ©daction d'un document sous \LaTeX{} passe par 3 grandes Ã©tapes, que nous pouvons rÃ©sumer ainsi : la rÃ©daction du contenu (en \LaTeX{}), la compilation (via un moteur \LaTeX{}) et l'obtention du document final, au format PDF de prÃ©fÃ©rence.

\begin{figure}[H]
\centering
\resizebox{0.95\linewidth}{!}{\input{./Images/compilation_schema}}
\caption{Les 3 Ã©tapes pour rÃ©diger un document sous \LaTeX{}}
\end{figure}

Le moteur de compilation \LaTeX{} utilisÃ© (\pdfLaTeX{} jusqu'Ã&nbsp; prÃ©sent) fonctionne un peu comme une boÃ®te noire. Personnellement, je ne sais pas comment elle fonctionne. Je sais qu'un fichier \verb?.tex? est insÃ©rÃ© en entrÃ©e, le moteur de compilation tourne et fournit en sortie le fichier \verb?.pdf? espÃ©rÃ©.

\begin{figure}[H]
\centering
\begin{tikzpicture}[every node/.style = {align = center}]
\node (rect) at (0,0) [draw, thick, text width = 2.5cm, minimum width = 3cm, minimum height = 1.5cm, orange] {Moteur de compilation};
\draw[&lt;-, &gt; = Stealth] (rect.west) --++ (-1,0) node[left, text width = 1.5cm, red] {Fichier \verb?.tex?};
\draw[-&gt;, &gt; = Stealth] (rect.east) --++ (1,0) node[right, text width = 1.5cm, Green] {Fichier \verb?.pdf?};
\end{tikzpicture}
\caption{SchÃ©matisation d'un moteur de compilation}
\end{figure}

Si nous devons lister les diffÃ©rents moteurs de compilation, nous pouvons en relever 3 principaux :

\begin{itemize}[label = \ding{213}]
\item le moteur \pdfLaTeX{}, utilisÃ© jusqu'Ã&nbsp; prÃ©sent ;

\item le moteur \LaTeX{}\footnote{Moteur Ã©ponyme au langage utilisÃ©, attention aux possibles confusions Ã&nbsp; venir.}, qui fournit un fichier \verb?.dvi? qu'il faut convertir par le choix \verb?Dvi -&gt; PS? puis \verb?PS -&gt; PDF? ;

\item le moteur \XeLaTeX{} ;
\end{itemize}

\noindent{}accompagnÃ©s d'autres moteurs annexes avec leur utilitÃ© et leur fonction : \begin{itemize}[label = \ding{213}]
\item le moteur \BibTeX{}, pour gÃ©nÃ©rer des bibliographies ;

\item le moteur MakeIndex, pour gÃ©nÃ©rer des index.
\end{itemize}

Il en existe d'autres comme \LuaLaTeX{}, voire des solutions plus exotiques avec \KaTeX{} pour inclure des formules \LaTeX{} dans du HTML par exemple.

\begin{attention}{Une question ?}
\og Je ne comprends pas Ã&nbsp; quoi peuvent bien servir ces nouveaux modes de compilation. AprÃ¨s tout, \pdfLaTeX{} fonctionne trÃ¨s bien jusqu'Ã&nbsp; prÃ©sent\dots{} \fg{} \\

En effet, tu as tout Ã&nbsp; fait raison. Et la conclusion de ce chapitre ira dans ce sens. Mais il existe aussi des classes (\verb?powerdot? par exemple) ou des packages (\verb?pstricks?) qui ne fonctionnent pas sous \pdfLaTeX{}. Il faut donc parfois recourir Ã&nbsp; un autre moteur de compilation.

\begin{figure}[H]
\centering
\begin{tikzpicture}[every node/.style = {align = center}]
\node (rect) at (0,0) [draw, thick, text width = 2.5cm, minimum width = 3cm, minimum height = 1.5cm, orange] {\LaTeX{} \linebreak ou \linebreak \XeLaTeX{}};
\draw[&lt;-, &gt; = Stealth] (rect.west) --++ (-1,0) node[left, text width = 1.5cm, red] {Fichier \verb?.tex?};
\draw[-&gt;, &gt; = Stealth] (rect.east) --++ (1,0) node[right, text width = 1.5cm, Green] {Fichier \verb?.pdf?};
\draw[&lt;-, &gt; = Stealth] (rect.north) --++ (0,1) node[above, cyan] {Contraintes};
\end{tikzpicture}
\caption{SchÃ©matisation de l'utilisation d'un autre moteur de compilation}
\end{figure}
\end{attention}

Bien, voyons un peu ces contraintes (classes, packages) qui nous obligent Ã&nbsp; utiliser un autre moteur de compilation que \pdfLaTeX{}.

\section{Utilisation des diffÃ©rents moteurs de compilation}

Selon ce que tu dÃ©sires comme document final, il te faut utiliser des classes et/ou des packages spÃ©cifiques parfois. Et il s'avÃ¨re que certains requiÃ¨rent l'emploi d'un moteur de compilation bien spÃ©cifique.

\`A l'heure actuelle, pour rÃ©diger un document sous \LaTeX{}, j'ai recensÃ© les cas d'utilisation suivants, avec le(s) moteur(s) associÃ©(s)  :

\begin{tableaubilan}{0.45\linewidth}{0.45\linewidth}{Cas d'utilisation}{Moteur Ã&nbsp; utiliser}
GÃ©nÃ©rer un PDF ``simple'' \par (rapport normal, avec des commandes ``basiques'' et des images) &amp; \pdfLaTeX{} ou \XeLaTeX{} $\Rightarrow$ images au format \verb?.png? ou \verb?.jpg? \par \LaTeX{} $\Rightarrow$ images au format \verb?.eps? (convertir les images si besoin) \\ \\

Changer la police d'Ã©criture &amp; Si package de police, \pdfLaTeX{} ou \LaTeX{} \par Sinon, \XeLaTeX{} \&amp; package \verb?fontspec? \par (cf. dÃ©tails p. \pageref{chgt-police}) \\ \\

Inclure et/ou fusionner des fichiers PDF dans le document (cf. p. \pageref{fusion-pdf}) &amp; Package \verb?pdfpages? \par \pdfLaTeX{} ou \XeLaTeX{} \\ \\

GÃ©nÃ©rer une bibliographie (cf. p. \pageref{generer-bibliographie}) &amp; \pdfLaTeX{} ou \LaTeX{} \par \BibTeX{} pour la biliographie \\ \\

GÃ©nÃ©rer un index (cf. p. \pageref{generer-index}) &amp; \pdfLaTeX{} ou XeLaTeX ou \LaTeX{} \par MakeIndex pour l'index \\ \\

GÃ©nÃ©rer un PDF avec des dessins (schÃ©mas, circuits Ã©lectriques, diagrammes, etc.) &amp; Package \verb?pstricks? : \LaTeX{} (le plus rapide) ou \XeLaTeX{} \par Package \verb?tikz? (cf. p. \pageref{chap-tikz}) : \pdfLaTeX{} (le plus rapide et simple) ou \LaTeX{} ou \XeLaTeX{} \\ \\

RÃ©aliser des prÃ©sentations (\textit{slides}) &amp; Classe \verb?beamer? (cf. p. \pageref{chap-beamer}) : \pdfLaTeX{} ou \LaTeX{} ou \XeLaTeX{} \par Classe \verb?powerdot? : \LaTeX{} ou \XeLaTeX{}
\end{tableaubilan}

\begin{attention}{Une question ?}
\og Pour le changement de police, tu mentionnes dans ton tableau des ``packages de police''. Qu'est-ce donc exactement ? \fg{} \\

Il est possible d'appeler un autre package que \verb?lmodern? dans le prÃ©ambule. Par exemple, un package disponible est \verb?times?, qui donne accÃ¨s Ã&nbsp; une police Ã©quivalente au \verb?Times New Roman?.

Cependant, il y a toujours un risque relatif Ã&nbsp; l'utilisation d'une autre police : comment se comporte la police de maniÃ¨re gÃ©nÃ©rale ? qu'en est-il des mathÃ©matiques ? etc. Tu peux avoir de mauvaises surprises. \\

\textbf{C'est pourquoi je recommande de toujours utiliser la police native de \LaTeX{}} (\verb?Computer Modern?, avec le package \verb?lmodern?). 

Si tu dois la changer, c'est vraiment parce que tu dois faire un rapport et qu'une police spÃ©cifique est imposÃ©e. \\

Pour tous les dÃ©tails supplÃ©mentaires, je te renvoie Ã&nbsp; la page \pageref{chgt-police}.
\end{attention}

\begin{conseil}{Insertion d'images au format \texttt{.eps}}
Le format \verb?.eps? n'est pas l'apanage du moteur \LaTeX{}. Tu peux trÃ¨s bien en insÃ©rer avec \pdfLaTeX{} (conversion automatique en PDF avant insertion) ou \XeLaTeX{}.

Il s'agit d'un format un peu obsolÃ¨te, utile pour insÃ©rer facilement des images vectorielles (format \verb?.svg?), par exemple.
\end{conseil}

\section{Bilan}

Toujours en vie ? Je veux bien croire cette partie un peu technique et indigeste. Elle demande un peu de pratique et il faut faire des essais, rencontrer des erreurs pour comprendre le fonctionnement et l'utilisation des moteurs de compilation.

\begin{regles}{En rÃ©sumÃ©}
Actuellement, tout est possible et envisageable avec le moteur \pdfLaTeX{}. Techniquement, les moteurs les plus modernes sont \XeLaTeX{} et \LuaLaTeX{}. Ils constituent un bon substitut Ã&nbsp; \pdfLaTeX{} le cas Ã©chÃ©ant. Mais le temps de compilation reste important, encore plus sur les gros documents (dÃ©veloppement et amÃ©liorations en cours). \\

\textbf{C'est bien pourquoi, depuis le dÃ©but de ce guide, je recommande d'utiliser le moteur \pdfLaTeX{}.} C'est le moteur le plus simple et pratique Ã&nbsp; utiliser. Il convertit directement ton fichier \verb?.tex? en un PDF.

Tu peux normalement tout faire avec : rapports, prÃ©sentations, schÃ©mas, bibliographie, index, glossaire, nomenclature, insÃ©rer des images et des PDF, etc. \\

Enfin, sous \Texmaker{}, le raccourci de \og compilation rapide \fg{} est plus dÃ©veloppÃ© pour le moteur \pdfLaTeX{} : automatisation de la bibliographie avec l'ajout de \BibTeX{}. 

Ce n'est par exemple pas le cas pour \XeLaTeX{}. Il faut donc lancer les diffÃ©rents moteurs Ã&nbsp; la main Ã&nbsp; chaque fois, ce qui se rÃ©vÃ©ler fastidieux et pÃ©nible sur le long terme !
\end{regles}

\begin{attention}{Ce qu'il faut bannir !}
Avec le recul, la compilation avec le moteur \LaTeX{} et la sÃ©rie de conversion inhÃ©rente est peu recommandÃ©e.

Cette sÃ©rie de conversions se rÃ©vÃ¨le efficace sur de petits documents mais le passage \verb?PS2PDF? devient plus long sur des documents plus importants. Le format \verb?.eps? est aussi obligatoire pour les images. Il faut donc aussi convertir toutes les images que tu souhaites insÃ©rer (images gÃ©nÃ©ralement obtenues sur Internet donc au format \verb?.jpg? ou \verb?.png?). \\

Ce moteur se rÃ©vÃ¨le donc long, laborieux et pas toujours pratique : Ã&nbsp; bannir autant que possible !
\end{attention}

%%% Diagramme %%%

Et pour finir, tu trouveras ci-aprÃ¨s (page \pageref{compilation-diagramme}) un diagramme rÃ©alisÃ© par mes soins qui rend un peu plus explicite l'usage des diffÃ©rents moteurs de compilation, agrÃ©mentÃ© de quelques prÃ©cisions.

\begin{table}[H]
\centering
\caption{DÃ©tails sur les fichiers annexes}
\begin{minipage}[t]{0.45\linewidth}
\subcaption{Principaux fichiers annexes}
\begin{tabular}{p{0.38\linewidth}p{0.62\linewidth}}
\verb?.aux? &amp; RÃ©fÃ©rences \LaTeX{} \\
\verb?.log? &amp; Rapport compilation \\
\verb?.out? &amp; Signets du PDF \par (package \verb?hyperref?) \\
\verb?.synctex.gz? &amp; Visionneuse \Texmaker{} \\
\verb?.toc? &amp; Table des matiÃ¨res \par (\verb?\tableofcontents?) \\
\verb?.lof? &amp; Table des figures \par (\verb?\listoffigures?) \\
\verb?.lot? &amp; Table des tableaux \par (\verb?\listoftables?)
\end{tabular}
\end{minipage}
\hfill
\begin{minipage}[t]{0.45\linewidth}
\subcaption{Autres fichiers annexes}
\begin{tabular}{p{0.38\linewidth}p{0.62\linewidth}}
\verb?.bbl? &amp; Bibliographie mise en forme \\
\verb?.blg? &amp; Rapport compilation bibliographie \\
\verb?.idx? &amp; Index brut \\
\verb?.ind? &amp; Index mis en forme \\
\verb?.ilg? &amp; Rapport compilation index
\end{tabular}
\end{minipage}
\end{table}

\newpage

\begin{landscape}
\thispagestyle{plain}
\label{compilation-diagramme}
\vspace*{\fill}

\resizebox{\linewidth}{!}{\input{./Images/compilation_diagramme}}

\vspace{2\baselineskip}

\begin{itemize}[label = \ding{118}, leftmargin = *]
\item Si gÃ©nÃ©ration d'un glossaire (package \verb?glossaries?), le fonctionnement serait similaire Ã&nbsp; celui d'un index.

\item Si gÃ©nÃ©ration d'une bibliographie et d'un index, \Texmaker{} se charge de lancer tous les moteurs (\pdfLaTeX{}, \BibTeX{} et MakeIndex) dans le bon ordre (compilation rapide).
\end{itemize}

\vspace*{\fill}
\end{landscape}

%%% FIN diagramme %%%</pre></body></html>