TD13 : Rédiger un Rapport en LaTeX

Dans ce TD, nous allons apprendre à utiliser l'environnement LaTeX (qui se prononce latèk) pour la rédaction d'un rapport. LaTeX est particulièrement utilisé dans les domaines techniques et scientifiques pour la production de documents typographiques de haute-qualité.

Pour réaliser ce TP sur une machine Linux (hors CREMI), il vous faudra probablement installer quelques paquets Debian :

sudo apt update
sudo apt install texlive-latex-base texlive-latex-extra texlive-lang-french
sudo apt install texlive-xetex texlive-extra-utils latexmk

Un solution alternative consiste à installer le meta-package texlive-full qui regroupe tous les packages LaTeX, mais cette installation est assez lourde !

Préambule

Une document LaTeX se présente sous forme d'un fichier source (fichier texte d'extension .tex), qu'il faut programmer en utilisant le langage LaTeX et compiler pour produire un document imprimable, typiquement au format PostScript ou PDF.

Voici quelques élements de syntaxe du langage LaTeX :

  • Variables et Commandes : Les variables et commandes LaTeX commencent toujours par le caractère \. Il existe de nombreuses variables et commandes prédéfinies. On peut définir (redéfinir) des variables et des commandes. De nombreuses variables définissent les caractéristiques des pages à produire comme \textheight, \textwidth, \topmargin, ...
  • Commentaires : Tout texte situé à droite du caractère % est considéré comme un commentaire.
  • Echappement : La plupart des caractères accentués et spéciaux peuvent être utilisés en les précédant du caractère d'échappement \, comme par exemple : \% pour %, \’e pour é, \‘a pour à, \^i pour î, \cc pour ç, etc. Quelques exceptions néanmoins pour le caractère ~ qui est obtenu grâce à \textasciitilde et le caractère \ obtenu grâce à \textbackslash.

Un peu de documentation :

Utilisation de LaTeX dans VS Code

Prérequis : Installez l'extension LaTeX Workshop dans votre VS Code.

Cette extension vous permettra d'activer la coloration, la complétion ansi que de compiler un fichier LaTeX et d'en visualiser le résultat (un fichier PDF). Son fonctionnement est assez simple, lorsqu'un fichier LaTeX est ouvert, une section TeX est ajoutée sur la barre des outils (barre verticale) de l'éditeur. Lorsque vous cliquerez sur ce nouveau bouton vous pourrez compiler, visualiser et faire plein d'autres actions.

Alternativement, il est possible d'utiliser l'éditeur en ligne overleaf qui est une éditeur LaTeX en ligne, collaboratif en temps réel.

👉 Pour autant, pour la suite du TD, il vous est demandé d'utiliser VS Code.

Un premier exemple

Dans un éditeur de texte, créez le fichier first.tex avec le contenu ci-dessous, et vérifiez qu'il est bien sauvegardé au format UTF-8.

% my first latex document
\documentclass[a4paper]{article}
\begin{document}
...
\end{document}

Nota Bene : Dans VS Code, il est possible de changer l'encodage du fichier texte utilisé via la barre d'état en bas à droite.

👉 Complétez le contenu du fichier first.tex et compilez ce fichier avec la commande :

pdflatex first.tex

Le processus de compilation est assez verbeux, et va produire le fichier first.pdf.

Visualisez le résultat avec un logiciel comme Evince ou Acrobat Reader.

evince first.pdf &

Recommencez de même avec le fichier second.tex, qui est une version française du premier fichier. La compilation rencontre des erreurs, tapez Enter pour continuer. (Il est également possible de taper x pour interrompre la compilation.)

Les erreurs de compilation sont liées à l'utilisation des caractères accentués et des guillemets français (« et »), que LaTeX ne comprend pas nativement ! Pour pouvoir utiliser directement des caractères Unicode et être dans un environnement adapté au français (espacement correct, date en français, césure correcte, ...), il faut utiliser les packages suivants, dans cet ordre. Décommentez ces lignes dans l'en-tête du fichier second.tex et recompilez.

\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}

Quelques précisions. La ligne avec le package inputenc indique que le fichier en entrée first.tex est encodé en utf8 (ceci est optionnel pour la plupart des compilateurs). Le package babel précise le langage choisi, qui est ici le français. La ligne avec le package fontenc permet de préciser que le fichier produit en sortie sera encodé avec le jeu de caractères PostScript T1 (limité à 256 caractères), qui supporte la plupart des caractères accentués (mais pas tous les caractères Unicode). Le package lmodern permet de remplacer la police par défaut (Computer Modern) par la police Latin Modern, ce qui revient à changer la représentation visuelle des caractères (ou glyphes) par une police vectorielle plus moderne.

Plus d'info sur les caractères spéciaux : https://en.m.wikibooks.org/wiki/LaTeX/Special_Characters

👉 Rajoutez ces quelques lignes après la ligne \documentclass et recompilez avec pdflatex. Vous pouvez remplacer le package lmodern par times pour changer la police.

Remarquez qu’il n’y a pas d’espace après la date. Dans le texte source, le caractère espace qui suit le nom de la commande \today délimite la fin de la commande. Remplacez \today par \today{} ; recompilez et vérifiez le résultat obtenu.

Astuce : Une solution alternative pour éviter ces difficultés consiste à compiler le fichier second.tex (dans sa version initiale) avec des compilateurs plus modernes comme xelatex ou lualatex plutôt que pdflatex.

Styles

Le style article correspond à un ensemble de définitions de variables et de commandes adaptées à la rédaction d’un article. Il existe d’autres styles prédéfinis comme book, report. On peut aussi écrire de nouveaux styles pour des besoins spécifiques.

Polices de caractères

Par défaut, la taille de la police est de 10 points. Le point est l’unité de base pour l’impression. On peut indiquer une autre taille avec un paramètre optionnel, comme ceci :

\documentclass[a4paper,12pt]{article}

Nota Bene : La classe article ne supporte que les tailles 10, 11 et 12.

On peut localement à l’intérieur d’un document changer la taille de la police au moyen des commandes \tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large, \LARGE, \huge, \Huge. Ces commandes peuvent être appliquée sur une partie du texte :

{\Large Titre}

ou porter sur la suite du texte. On peut alors revenir à la taille par défaut avec \normalsize. Par exemple :

\Large
Un texte en grand.
\normalsize
Un texte normal.

Par défaut, la police de caractères utilisée est roman. Les principales commandes pour changer de police sont \textrm, \textsf, \texttt, \textmd, \textbf, \textup, \textit, \textsl, \textsc et prennent comme unique argument le texte sur lequel appliquer la police. Par exemple, la commande \textit{Ce texte est en italique} va donner : Ce texte est en italique.

La commande \emph permet de mettre du texte en valeur (i.e. en emphase) relativement au contexte. Plus précsisément, ce texte sera mis en italique si le contexte ne l’est pas, et inversement, le texte sera normal si le contexte est déjà en italique.

En outre, il est possible de combiner certaines de ces commandes. Essayez par exemple : \textbf{\emph{texte}}, \textsf{\emph{texte}}, \textsf{\textbf{texte}}).

👉 Expérimentez différentes tailles et polices.

Environnements

Un environnement est une portion de texte positionnée entre deux commandes de la forme :

\begin{env}
...
\end{env}

env est le nom de l’environnement. Essayez par exemple l’environnement verbatim qui permet taper du texte brut lequel ne sera pas interprété par LaTeX. Il existe de nombreux environnements pour faire des listes, des tableaux, ...

Exercice : écriture d'un rapport

Récupérer le fichier sample.zip, puis de le décompresser. Ouvrez le fichier sample.tex et compilez-le.

Découpage du texte

Remarquez le découpage du texte en sections, sous-sections, paragraphes et la numérotation automatique. Entraînez-vous en rajoutant des sections de chaque catégorie.

Listes

Remarquez l’environnement itemize. Testez les environnements similaires enumerate, description. Pour ce dernier chaque item doit commencer par une description :

\item[description de l’item] texte de l’item

Tableau

👉 A l'aide de l'environnement tabular, ajoutez un petit tableau dans votre document.

Vous pouvez vous inspirer de cet exemple : tableau.tex.

latex tabular

Notez les différents type d'alignement utilisés pour les colonnes de ce tableau : l (left), c (center) et r (right).

Références croisées

La plupart des entités de votre document (section, figure, page, ...) peuvent être référencés au moyen de références croisées. Pour pouvoir référencer une entité il faut lui donner un nom grâce à la commande \label dont l’argument correpond au nom qu’on donne à l’entité.

\section{Résultats}
\label{resultats}

On peut alors récupérer le numéro de la section au moyen de \ref{resultats} comme dans la phrase :

Les résultats sont présentés dans la section~\ref{resultats}.

Le caractère ~ permet d’insérer un petit espace insécable, c'est-à-dire qui évite que LaTeX ne revienne à la ligne entre le mot « section » et le numéro de la section.

On peut également utiliser \pageref{resultat} pour obtenir le numéro de la page où se trouve la définition de l’étiquette (label) resultat.

👉 Essayez. Notez que LaTeX doit être exécuté deux fois pour que les références soient correctes ; la première fois, il sauvegarde les références dans le fichier sample.aux, la deuxième il utilise ces informations pour remplacer les \ref{...} par la valeur correcte.

Table des matières

Rajoutez dans le fichier sample.tex la commande \tableofcontents. Celle-ci produit automatiquement une table des matières à l’endroit où la commande est positionnée. Deux passes de LaTeX sont nécessaires pour obtenir une table correcte. Lors de la première passe LaTeX crée un fichier sample.toc ; lors de la deuxième passe il utilise les informations contenues dans ce fichier pour produire la table.

👉 Testez.

Astuce : Vous pouvez utiliser le package hyperref pour permettre de naviguer dans la table des matières avec des hyperliens.

Bibliographie

Afin d'ajouter des références bibliographiques dans son rapport, ainsi qu'une bibliographie à la fin de son rapport, nous allons utiliser le logiciel bibtex.

Ouvrez le fichier biblio.bib. Inspectez son contenu, qui contient plusieurs entrées bibliographiques au format bibtex. Rajoutez des références bibliographiques dans votre fichier sample.tex à l'aide de la commande \cite{...}, comme par exemple \cite{diday-1982}.

Ajoutez ensuite la bibliographie dans votre document en insérant les lignes suivantes à la fin (avant le \end{document}) :

\bibliographystyle{plain}
\bibliography{biblio} % fichier biblio.bib

Afin de compiler proprement un document LaTeX avec des références bibliographiques, il faut enchaîner les commandes suivantes :

$ pdflatex sample         # première passe
$ bibtex sample           # génération de la bibliographie
$ pdflatex sample         # deuxième passe

Lors de la première passe, les citations dans le document sample.pdf sont marquées comme manquantes [?] et la bibliograhie est encore vide. Pour générer la bibliographie, il faut explicitement appeler la commande bibtex, qui va générer le fichier sample.bbl à partir du fichier biblio.bib. Examinez le contenu du fichier sample.bbl. Lors de la deuxième passe de compilation, la bibliographie est ajoutée à l'endroit de la commande \bibliography{...} et les citations sont maintenant correctement référencées.

Remplacez la ligne \bibliographystyle{plain} par la ligne \bibliographystyle{alpha} pour obtenir un autre style de bibliographie. Recompilez et regardez le résultat final.

👉 Récupérez de nouvelles entrées bibliographiques au format bibtex en cherchant sur ArXiv ou Google Scolar et utilisez ces références dans votre document. Par exemple, recherchez le bibtex de cet article : Hydroxychloroquine and azithromycin as a treatment of COVID-19: results of an open-label non-randomized clinical trial.

Astuce: La chaîne de compilation de LaTeX en plusieurs passes est relativement complexe. Pour surmonter ce problème, il est possible d'utiliser un outil de plus haut-niveau comme latexmk Par exemple :

$ latexmk -pdf sample   # make sample.pdf
$ latexmk -C sample     # clean all

Notez que VS Code utilise latexmk en arrière-plan pour re-compiler automatiquement votre document à chaque modification.

Inclusion d'images

L’inclusion d’images dans un document LaTeX peut se faire de plusieurs façon. Dans cette section nous examinerons uniquement l’utilisation du package graphicx.

Récupérer la documentation de ce package sur le Comprehensive TEX Archive Network ou CTAN : http://ctan.org/tex-archive/macros/latex/required/graphics.

Dans la liste des packages inclus dans votre document vous rajouterez : \usepackage{graphicx}.

👉 Testez l'inclusion de l'image gnu.png dans votre document en ajoutant les instructions suivantes :

\includegraphics[height=1.5cm]{gnu.png}
\scalebox{-1}[1]{\includegraphics[height=1.5cm]{gnu.png}}

En consultant la documentation que vous avez récupérée, testez différentes options d’inclusion d’images (rotation, changement d’échelle entre l’axe des abscisses et des ordonnées, etc.).

Formules mathématiques

LaTeX est particulièrement adapté à la rédaction de textes mathématiques. Une expression mathématique insérée dans du texte est entourée de $ (ou placée dans un environnement math. Par exemple :

L’équation de la droite est $3x - 2y + 4 = 0$.

On obtient les exposants et les indices respectivement par $x^i$ et $x_i$.

Pour obtenir une formule centrée sur une ligne, on la place entre \[ et \].

👉 Au moyen des commandes \sqrt{x} (racine carrée de x), \frac{a}{b} (fraction de a sur b), \sum_{a}^{b} (somme de a à b), \int_{a}^{b} (intégrale de a à b), \overline{x} (barre au dessus) et \lambda (le caractère grec), écrivez les formules suivantes :

latex equation

Insertion de code source

👉 Utilisez le package listings pour ajouter un exemple de code source en C ou en Python, en utilisant l'environnement lstlisting, comme par exemple fib.tex.

latex listing

Plus d'info : https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings

A ce niveau, votre document sample doit compiler et produire un PDF illustrant votre compréhension des différentes possibilités de LaTeX.

Travail Demandé

Reprenez votre fichier sample.tex et modifiez-le pour écrire un rapport report.tex sur le thème de votre choix... Dans ce rapport, il vous est demandé d'illustrer, point par point, toute votre compréhension technique de l'outil LaTeX.

Il vous est demandé de rendre ce travail individuel sur Moodle. Plus précisément, il s'agit de rendre :

  • le fichier report.tex, ainsi que tous les fichiers utiles à sa compilation (images, biblio, etc.),
  • le fichier report.pdf correspondant.