Ma bien-aimée Nausicaa a soutenu aujourd’hui sa thèse d’histoire
médiévale.
Pendant les quatre ans qu’ont pris son travail, j’ai été à ses côtés pour
l’aider sur le plan technique de deux façons. D’abord en développant
pour elle les outils informatiques lui permettant d’effectuer
des études statistiques sur des affaires judiciaires médiévales.
Mais aussi en la convaincant de rédiger sa thèse avec LaTeX.
Ce logiciel, qu’on ne présente plus depuis des décennies dans les univers des
mathématiques, de la physique ou de l’informatique, est un choix beaucoup
plus atypique dans le milieu des sciences humaines. Néanmoins, le bilan est
positif car elle pense que LaTeX lui a fait gagner un an sur une phase de
rédaction qui lui a pris un an et demi.
Je vous propose donc un retour d’expérience de la rédaction de sa thèse, de
mon propre point de vue, que je scinde en deux billets. Dans ce billet, nous
verrons les motivations, le choix des outils. Dans un billet suivant, je
traiterai de quelques astuces que j’ai découvertes au fil de l’eau.
Ce qui l’a amenée à utiliser LaTeX
Le choix des outils est peut-être un des aspects les plus effrayants de ce
type de projet. Ces choix sont difficiles et il faut les assumer pour au
moins trois ou quatre ans, voire jusqu’à six ans en histoire. Plusieurs
facteurs ont fini par amener Nausicaa à adopter LaTeX pour sa thèse.
Les outils WYSIWYG sont inadaptés pour les documents de cette envergure
D’une part, les outils dits WYSIWYG (What You See Is What You Get)
qu’elle a connus jusque-là montraient clairement leurs limites pour un
projet comme le sien.
Beaucoup de ces logiciels, comme Microsoft Office ou Scrivener, sont
payants. Or elle n’était pas disposée à payer quoi que ce soit, surtout
qu’elle avait l’habitude de LibreOffice. Quant au modèle d’abonnement que
propose Office 365, c’était hors de question.
LibreOffice, ensuite, s’est disqualifié tout seul. Alors qu’elle n’en était
qu’à la moitié de la rédaction de son mémoire de stage, LibreOffice s’est mis
soudainement à planter systématiquement à l’ouverture de son document. Sueurs
froides garanties ! Il a fallu que j’ouvre son fichier sur ma machine, qui
avait une version différente de LibreOffice, et que je le sauvegarde à
nouveau pour qu’elle puisse y retrouver l’accès. Donc si LibreOffice avait eu
autant de mal à gérer un mémoire de 100 pages, impossible de prédire ce qui
allait se passer avec un document six fois plus long…
De manière plus générale, les logiciels WYSIWYG essayent tous d’être les plus
complets possibles, pour finir par être le seul logiciel utilisé du début à
la fin du processus rédactionnel. Ils ouvrent le document de travail en
lecture-écriture, ce qui introduit un risque de corruption des données, et
utilisent des formats obscurs et parfois horriblement complexes. Par exemple,
saviez-vous que la norme ISO/IEC 29500, qui codifie entre autres le format
.docx
, est composée de quatre volumes totalisant 6 766 pages ?
Le moindre problème avec l’outil, ou la moindre mise à jour, apporte donc
avec lui le risque de perdre l’accès à son texte. Même le découpage de son
document en autant de fichiers par chapitre n’éliminera pas entièrement ce
danger.
Ensuite, il faut y ajouter un bon outil de gestion de bibliographie, comme
Endnote, payant et propriétaire ou Zotero, gratuit et libre. Mais là
encore, le risque de perdre sa bibliographie est tout aussi inacceptable
que celui de perdre le reste de son travail. D’autant plus quand ladite
bibliographie se compte en centaines d’entrées, comme toute bonne thèse
d’histoire qui se respecte…
Elle connaissait déjà le principe d’un langage de « markup » comme HTML
En revanche, les outils qu’on oppose généralement aux WYSIWYG n’ont pas ce
problème car le workflow est différent. Le principe est en effet le
suivant : composer un fichier texte brut, structuré en suivant les règles
d’un langage informatique, dans un premier logiciel ; puis utiliser un
second programme qui interprète ce fichier, pour obtenir un rendu final
(généralement sous forme de PDF).
Même si on ne voit pas tout de suite le résultat final de son travail à
l’écran, l’avantage majeur est qu’un problème avec un logiciel comme LaTeX
ou biblatex ne font pas perdre son travail ; juste la faculté de
prévisualiser le résultat final. Et un problème avec un éditeur de texte,
en plus d’être extrêmement rare, n’est pas une fatalité non plus : dans les
cas les plus extrêmes, on peut changer d’éditeur.
Nausicaa avait déjà fait beaucoup de HTML et de CSS dans le passé. Ainsi, non
seulement elle connaît bien le principe de rédiger un texte dans un langage
source avec un autre outil que celui utilisé pour visualiser le résultat,
mais elle maîtrise également l’idée d’une stricte séparation du fond et de la
forme. Rédiger un document en LaTeX lui demandait donc juste de se
familiariser avec le langage.
Je lui ai beaucoup parlé de LaTeX
Je dois ensuite admettre que j’ai fait un peu de « lobbying » de mon côté
pour la convaincre d’utiliser LaTeX plutôt qu’un cliquodrome.
J’utilise en effet LaTeX depuis plus de douze ans. En prépa, je l’utilisais
pour préparer la quasi-totalité de mes devoirs maison, ce qui ne manquait
jamais de surprendre mes enseignants. En école d’ingénieurs, je m’en servais
pour mes rapports de projet et de stage mais aussi pour mes notes de cours.
Plus tard, j’ai composé mes CV et mes lettres de motivation, toujours avec
LaTeX. Et j’ai eu de multiples occasions, chez différents employeurs, de
faire de la rétro-ingénierie de chartes graphiques d’entreprise en Word pour
générer des documents respectant cette même charte mais en LaTeX. Maintenant,
je l’utilise encore, principalement pour mes courriers.
Ces douze ans d’expérience m’ont donc permis d’assurer le support technique
LaTeX pour Nausicaa et de l’aider pour les choses plus compliquées à faire
dans ce langage, comme une couverture personnalisée ou les aspects plus
délicats de la mise en forme.
Enfin, peu avant le début de sa thèse, je lui avais également offert le
livre LaTeX appliqué aux sciences humaines, de Maïeul Rouquette et que je
recommande vivement. L’ouvrage est complété par le blog de l’auteur, qui
sert aussi d’erratum sur certains sujets évoqués dans son ouvrage (comme
l’indexation).
Elle a pratiqué LaTeX à l’université
Mais c’est une formation LaTeX qui l’a vraiment séduite. Il s’agissait d’une
formation doctorale à la Sorbonne, dispensée par un maître de conférences en
musicologie. Non seulement parce qu’elle pratiquait directement le langage
LaTeX sur une machine, mais aussi parce que la formation était plutôt
exhaustive et, visant un public de chercheurs, traitait de biblatex.
Cette formation était plutôt bienvenue pour elle, parce que je n’aurais
jamais eu le temps de tout lui montrer moi-même (c’est aussi pour ça que je
lui avais acheté un livre, après tout). Et je pense que voir une
démonstration de LaTeX par quelqu’un d’autre que moi a été déterminant dans
son choix final.
LaTeX lui sert aussi pour ses présentations
Pour finir, LaTeX a aussi l’avantage de ne pas être qu’un concurrent à Word.
En 2016, pour une communication scientifique, Nausicaa avait préparé des
planches sur Microsoft PowerPoint. Le moment venu de la présentation, elle
ouvre le fichier sur le PC à sa disposition et patatras ! les couleurs
n’étaient pas bonnes, le rendu était horrible et la présentation défigurée.
Elle avait en effet préparé ses planches sur un PowerPoint plus récent que
celui du PC de la salle. Il va de soi qu’elle a mal vécu cet incident.
Depuis, elle a pris l’habitude de préparer ses présentations sur Overleaf,
en utilisant beamer. Avec le raisonnement que puisque le format de sortie
est un PDF, ça marchera partout. Et elle m’a dit avoir gagné beaucoup de
temps avec cette solution par rapport à PowerPoint, car elle peut se
concentrer davantage sur le contenu.
LaTeX lui a donc servi non seulement pour sa thèse, mais aussi pour les
« slides » de sa soutenance. Il ne manquerait plus que LaTeX fasse le café !
Choix d’outils
Choisir LaTeX plutôt que des traitements de texte traditionnels implique de
faire plusieurs choix tout aussi importants : la distribution et le moteur
TeX, l’éditeur dans lequel on prépare le texte source, le système de gestion
de versions, la « documentclass » et les autres aides à la préparation de
documents.
Installer ShareLaTeX sur mon serveur : un échec
À l’origine, puisqu’elle utilisait déjà ShareLaTeX (actuellement Overleaf)
pour ses présentations et que cet outil est open source, je m’étais mis en
tête de déployer localement ShareLaTeX sur mon serveur domestique.
Malheureusement, la seule méthode de déploiement prise en charge est
Docker. Or Docker sur FreeBSD, ça ne marche pas très bien. J’ai d’abord
essayé de déployer Overleaf dans une « jail » tout en me passant de Docker,
mais j’ai abandonné devant le nombre ahurissant de dépendances qu’il
fallait installer et gérer à la main. Je suis même allé jusqu’à installer
une Ubuntu Server sur une VM bhyve (dont j’ai déjà parlé dans ce billet),
pour installer cette image Docker dedans. Le tout sans succès non plus.
J’ai donc abandonné cette idée, et j’ai choisi de déployer une distribution
LaTeX et un éditeur adapté sur le PC de Nausicaa.
TeX Live comme distribution LaTeX, même sous Windows
Tout d’abord, plutôt que MiKTeX, qui semble être la distribution
recommandée sous Windows, j’ai préféré installer TeX Live pour qu’elle ait
la même chose que moi et mes PC sous Linux. TeX Live fonctionne en effet
très bien sous Windows et est déjà la distribution de choix pour les
dérivés d’UNIX.
Quant au moteur LaTeX, plutôt que le moteur TeX d’origine, nous avons
préféré partir sur XeTeX pour plusieurs raisons :
- c’est à la fois ma préférence personnelle et celle de Maïeul Rouquette ;
- ce moteur gère nativement l’Unicode et accepte par défaut des fichiers
source en UTF-8 ;
- et enfin, ce moteur gère les polices TrueType (TTF) et OpenType (OTF) et
leurs fonctions avancées nativement, comme les ligatures. Le moteur TeX, en
revanche, fonctionne avec les polices au format MetaFont, qui ne sont pas
aussi répandues.
Gnuplot, pour de jolis graphiques
La portée de son travail allait amener Nausicaa à générer des graphiques
tirées de séries statistiques. Je lui ai donc proposé d’utiliser Gnuplot,
parce que je connaissais déjà ce logiciel, parce que le résultat est joli
et surtout parce que les graphiques sont produits à l’aide de scripts. Ce
qui permet donc aux figures d’avoir une apparence cohérente, mais aussi
d’être gérées comme du code source.
Éditeur LaTeX : en privilégier un conçu pour la programmation
Avant le début de sa thèse, j’ai passé beaucoup de temps à essayer
plusieurs éditeurs de texte orientés LaTeX comme TeXmaker, TeXstudio ou
TeXworks. À l’époque où j’avais fait ces tests, c’est-à-dire en 2015, je
n’étais satisfait par aucun de ces outils car j’y percevais d’importantes
lacunes (ça a peut-être changé depuis).
Même si latexmk simplifie énormément la compilation de documents LaTeX, le
fait qu’elle utilise Gnuplot signifiait que j’allais tout de même avoir
besoin de personnaliser facilement l’ensemble des étapes nécessaires pour
compiler le document PDF à partir des fichiers source. Or, aucun de ces
éditeurs ne me permettait de paramétrer cette chaîne de compilation d’une
manière satisfaisante.
Je lui ai donc proposé d’utiliser l’éditeur Visual Studio Code de Microsoft.
À l’époque, c’était relativement nouveau, donc le choix était risqué. Mais il
m’a donné une très bonne première impression néanmoins. Après avoir installé
l’extension LaTeX Workshop (qui elle, était vraiment toute nouvelle à
l’époque), Code devient un éditeur LaTeX avec une ergonomie agréable. La
prévisualisation PDF a le bon goût de s’ouvrir dans une nouvelle fenêtre,
contrairement aux éditeurs LaTeX qui l’affichent généralement dans la même
fenêtre que le code. Étant donné qu’elle a muni son PC d’un second écran en
mode portrait, elle peut donc facilement afficher côte à côte le code et le
résultat, chacun ayant son moniteur dédié.
Le point faible de cette solution est que LaTeX Workshop était assez bugué à
l’époque. Si bien qu’il fallait, de temps en temps, redémarrer VS Code et
supprimer l’intégralité des fichiers auxiliaires générés par LaTeX pour
remettre les choses d’aplomb. Par ailleurs, Nausicaa était très réticente à
installer les mises à jour de VS Code ou de LaTeX Workshop, parce qu’une de
ces mises à jour lui avait causé des problèmes.
Les problèmes se manifestaient généralement par des fichiers .aux
tronqués
ou corrompus. Une fois, j’avais dû aller dans le Gestionnaire des tâches pour
arrêter des processus LaTeX qui traînaient. Mais je pense avoir
l’explication : je crois que sa version de LaTeX Workshop omettait de bloquer
la commande de compilation quand une tâche de génération est déjà en cours,
si bien qu’on peut lancer accidentellement plusieurs tâches concurrentes sur
le même projet. Et comme LaTeX est plus lent sous Windows que sous Linux et
qu’il fallait plusieurs minutes pour générer son document, cela pouvait
survenir plus d’une fois par jour.
En conclusion, privilégier un éditeur de code plus générique et plutôt
orienté vers le développement logiciel n’est pas une mauvaise solution quand
il s’agit de préparer une thèse en LaTeX, et je le recommande à quiconque
voulant se lancer dans pareil projet.
Pas de Git : une erreur ?
Le choix technique que je regrette toutefois est celui de ne pas avoir
utilisé Git.
Je n’ai pas insisté, parce que je pensais qu’elle allait de toute façon
écrire sa thèse seule et je ne voulais pas introduire trop d’outils
nouveaux en même temps.
Mais en raisonnant ainsi, j’ai oublié les personnes qui relisent le texte à
la recherche de fautes : son professeur, ses parents… Et vers la fin,
j’intervenais également sur la mise en forme, car c’était plus simple si je
m’en chargeais.
En somme, nous étions deux à toucher directement au code LaTeX. Même si
j’avais réussi à isoler toutes les commandes portant sur la mise en forme
dans un fichier .sty
qu’elle pouvait importer avec un simple
\usepackage
, certaines modifications nécessitaient tout de même des
modifications dans le corps du document. Par ailleurs, je trouvais parfois
des coquilles que personne n’avait relevé et que je voulais corriger
sur-le-champ. Dans ces cas-là, il est important de se synchroniser.
Toute thèse est donc, qu’on le veuille ou non, un travail à plusieurs et
c’est pourquoi il est important de traiter le texte de la thèse comme un
projet collaboratif.
Git apporte aussi la faculté d’avoir un historique de son travail. Ce qui
est très utile pour suivre son avancement, mais aussi pour pouvoir revenir
en arrière en cas de besoin. C’est un filet de sécurité que j’apprécie
beaucoup sur mes projets personnels de programmation.
Enfin, Git apporte une sauvegarde hors site « gratuite », car il est très
facile d’héberger son dépôt maître sur une machine distante.
De fait, pendant les dernières phases où j’intervenais sur la mise en forme,
j’avais mon dépôt Git local qui me servait de bac à sable. La branche
master
était celle dans laquelle j’importais son travail, et d’où partaient
mes branches qui représentaient mes contributions. Après une nouvelle
importation dans la branche master
, j’utilisais git rebase
sur toutes mes
autres branches pour actualiser mon travail avec le sien ; mais dans l’autre
sens, un simple git merge
de ma branche dans master
suffisait.
Tant pis, donc, si on n’a intégré Git que très tardivement dans ce travail.
Les quelques dernières retouches ont certes été source de crispation, mais
globalement, Git n’a été vraiment utile qu’à partir du moment où je modifiais
moi aussi le code LaTeX de sa thèse. Et Nausicaa n’aurait peut-être pas vu
l’intérêt de committer régulièrement son travail tant qu’elle travaillait
toute seule dessus.
Documentclass : memoir, largement supérieur à book
Un choix technique qui s’avérait être mauvais, c’était celui d’avoir commencé
à rédiger quasiment toute la thèse sous la \documentclass{book}
. C’est une
documentclass de base qui fait bien le travail, jusqu’à ce qu’on ait besoin
d’apporter des modifications importantes sur la mise en forme, comme :
- remplacer la page de garde par défaut par une autre, personnalisée, et
utilisant des champs de métadonnées personnalisées ;
- modifier l’apparence des titres des parties, chapitres et sections ;
- modifier l’apparence des parties, chapitres et sections dans le sommaire
et la table de matière ;
- prévoir en début de thèse un sommaire qui s’arrête aux chapitres, en plus
d’une table des matières détaillée en fin de thèse ;
- modifier les en-têtes et pieds de page…
Pour cela, la documentclass memoir est beaucoup plus adaptée : ses
possibilités de personnalisation sont à la fois puissantes et plus faciles
d’accès (comparé au fait de redéfinir des commandes LaTeX de base soi-même,
en tout cas) et on sent vraiment que la classe a été conçue pour des projets
de grande envergure comme… des thèses.
Une chose à laquelle il faut faire particulièrement attention, ce sont les
conflits avec les autres packages LaTeX, comme sectsty. Ces packages altèrent
la mise en forme du document en redéfinissant des commandes internes (comme
\part
, \section
, etc.), en supposant qu’on part d’une documentclass de
base, comme book. Il ne faut surtout pas les charger avec memoir, sinon
ça ne marchera pas ! À la place, il est indispensable de privilégier les
fonctions de personnalisation intégrées à memoir, même si elles sont parfois
un peu plus guindées. La plupart des astuces de mise en forme qu’on peut
trouver sur StackOverflow ne s’appliquent plus à partir du moment où on
substitue memoir à book, mais le manuel est plutôt complet.
La migration de book
vers memoir
n’a pas eu trop de répercussions, mais
c’est une décision que j’avais prise tardivement, alors que j’avais déjà mis
en place de nombreuses bidouilles intéressant la mise en forme de sa thèse.
C’est donc un travail que j’ai dû reprendre en partie.
Malgré tout, si c’était à refaire, je préconise d’utiliser la classe
« memoir » dès le début du projet, sans aucune hésitation.
La question de la correction orthographique
Il n’y a rien de plus désagréable que de publier un texte, de lire la forme
publiée papier et de trouver des coquilles qu’on a ratées.
La question du correcteur orthographique finit donc inévitablement par se
poser. Que ce soit pour un article de 12 pages ou une thèse de 600 pages,
c’est un allié indispensable qui permet de rattraper des coquilles que même
des relecteurs en chair et en os auraient pu rater.
Cependant, il n’existe à ma connaissance aucune solution commerciale (comme
Antidote) qui soit conçu pour fonctionner directement sur le code LaTeX.
On se retrouve donc avec deux possibilités :
- utiliser le correcteur orthographique intégré à son éditeur de texte,
pourvu que la fonction existe et qu’un dictionnaire français soit
disponible ;
- ou lancer la correction orthographique sur le PDF final, ce qui nécessite
cependant quelques bidouilles pour que ce soit efficace.
Dans notre cas, j’ai relu le code LaTeX sous Emacs avec flyspell-mode, ce
qui m’a permis de rattraper pas mal d’erreurs. Ce mode utilise ispell, ce
qui suffit à mon avis largement. Nous ne ressentions pas le besoin d’un
correcteur grammatical, même si un tel correcteur peut trouver encore plus
de coquilles (des fautes d’accord, par exemple).
La relecture est donc une affaire de machines et d’hommes : une machine ne
s’ennuie jamais et repèrera sans faillir la moindre petite inversion de
lettres noyée dans un océan de centaines de milliers de mots (comme
« cyclimse » au lieu de « cyclisme »), mais un relecteur en chair et en os
est capable d’identifier d’autres problèmes que juste ceux de pure forme.
Le moment du rendu
Le rendu de la thèse à la Sorbonne est électronique : il faut soumettre à la
fois un fichier PDF qui respecte un certain nombre de contraintes, mais
aussi les fichiers « source ».
Entre autres, le PDF doit utiliser une première et une quatrième de couverture
imposées par la faculté de lettres. Le gabarit est bien évidemment fourni…
sous format Word (sinon, ce ne serait pas drôle). Et tout le travail que
j’avais fait pour redéfinir la commande \maketitle
dans le code source de sa
thèse était bon pour la poubelle.
Heureusement, quelques coups de LibreOffice pour remplir le modèle, puis une
petite commande pdftk
plus tard (qu’elle a trouvée elle-même alors qu’elle
abhorre généralement la ligne de commande !) et le PDF de la thèse était
prêt.
En revanche, du côté du format source, il faut dire que la dame du bureau de
dépôt des thèses ne s’attendait pas du tout à un répertoire rempli d’images au
format PDF (ben oui, c’est un format de dessin vectoriel comme un autre après
tout). Et elle ne savait encore moins quoi faire de ces mystérieux fichiers
.tex
. Il est clair qu’il n’y a que peu d’informaticiens à la Sorbonne.
Conclusion : « La présentation du volume est soignée »
Parmi les rapports préliminaires qu’elle a reçues avant de soutenir sa thèse,
une des membres du jury a écrit que « la présentation du volume est
soignée ».
Et je dois dire que LaTeX permet, en effet, d’obtenir d’emblée un très bon
résultat du point de vue visuel. Un PDF généré par LaTeX dégage une aura bien
particulière, que Word ou LibreOffice seraient incapables d’égaler (ce que
décrit bien ce billet de blog). Les algorithmes de calcul de la meilleure mise
en page d’un paragraphe, de césure des mots, de placement d’éléments
« flottants » comme les tables et les figures et d’autres encore, utilisent
comme critère d’optimisation de nombreux petits détails subtils qui
participent à créer cette aura. En typographie tout particulièrement, le
diable est en effet dans les détails.
Chaque jour, quand je rentrais du travail et que je la voyais travailler sur
sa thèse, je prenais toujours un peu de temps pour admirer la prévisualisation
PDF et son apparence visuelle suffisait pour me donner envie de le lire, même
si c’était loin d’être fini. Sa thèse est comme une cathédrale qu’on admire
alors même qu’elle est loin d’être terminée.
Le seul bémol, c’est que personnaliser l’aspect visuel de son document pour
lui donner une touche personnelle demande beaucoup de travail. Pour cela, j’ai
lu enter autres le TeXbook de Donald Knuth, le mode d’emploi (et le code) du
documentclass « book » avec, en guise de référence, le code source annoté du
cœur de LaTeX. Heureusement, la documentclass memoir m’a épargné pas mal de
tracas.
Maintenant que la thèse a été soutenue, il ne reste plus qu’une chose à faire,
et pas des moindres : la publier.