Template complet pour manuscrit de thèse

Récemment, j’avais fait un billet sur une façon de faire sa page de garde personnelle à la mode manuscrit de thèse. Aujourd’hui, je vais aller encore plus loin en essayant de vous proposer un template « tout en un » pour des gros documents scientifiques, genre un manuscrit de thèse.

Vous vous en doutez, la réalisation de ce template m’a demandé pas mal de taf, et requis autant de principes déjà évoqués dans ce blog. Je n’irais pas jusqu’à dire qu’il représente l’aboutissement de mes travaux sur $latex \LaTeX$, mais il constitue en tout cas une excellente synthèse de mes diverses compétences en la matière. Ainsi, même si le rendu ne vous plaît pas, j’espère au moins que les astuces et indications, elles, vous plairont. Par ailleurs, si tel était le cas, vous êtes bien libres de faire ce que vous voulez des sources que je vous propose…

Objectifs

Outre une mise en forme répondant aux standards des thèses de doctorat (avec notamment une bibliographie « à la française »), le template que je propose permet :

  • une hiérarchie en chapitres
  • une bibliographie propre à chacun des chapitres
  • d’afficher au début du document :
    • Une table des matières générale (chapitres/sections)
    • Une liste des figures
    • Une liste des tableaux
  • d’afficher au début de chaque chapitre :
    • Une citation
    • Une table des matières locale détaillée (sections/sous-sections)
  • les références biblio à la fin de chaque chapitre
  • en annexe :
    • des annexes…
    • un glossaire
    • une liste des abréviations
    • une liste des symboles mathématiques

Le tout conçu de façon relativement robuste, c’est à dire respectant les règles inhérentes à la rédaction de gros documents sous $latex \LaTeX$ (voir mon billet à ce propos). Avec en primes, des fichiers distincts pour :

  • le préambule
  • chaque chapitre (ben oui !)
  • les commandes personnelles
  • la page de garde
  • les entrées pour les glossaire/abréviations/symboles

Exemple minimal

Si vous voulez voir un exemple complet, c’est-à-dire mon manuscrit intégral, vous pouvez bien sûr le trouver ici.


Source téléchargeable

Ça vous épate ? Merci bien ! Pour obtenir la dernière version du template, je vous pouvez :


Édition

Préambule et informations sur l’auteur

Dans le fichier Main.tex, qui sera bien sûr le fichier à compiler, vous n’avez qu’à modifier les entrées nécessaires à la page de garde (voir ici pour plus de détails), et éventuellement les noms des fichiers des chapitres, si ça ne vous convient pas.

Compte-tenu du nombre très important de packages, j’ai pris le soin de faire un fichier spécifique aux \usepackage (preambule.tex). J’ai essayé, autant que faire se peut, de classer les packages par catégories (biblio, figures, pagination etc.). Malheureusement, il faut parfois respecter une certaine hiérarchie dans les appels de packages (sujet à polémique…).

Chapitres

Rien de particulier, si ce n’est qu’il faut penser à mettre tous les fichiers enfants de chaque chapitre dans le dossier ad-hoc, sans pour autant se soucier de cette astuce lors des appels dans le chapitre concerné (merci \includefrom !). Ce qui évite de mélanger les figures du chapitre biblio avec celles des annexes…

Avant de compiler avec (pdf)latex, pensez à vérifier le \includeonly dans le fichier maître !

Bibliographies

Oui, j’ai bien mis un ‘s’ à bibliographies, puisqu’on va en générer autant qu’il y a de chapitres, avec la liste des références en fin de chacun d’entre eux, dans un \section{Références}, donc accessibles depuis la table des matières et les mini-tables des matières (minitoc, voir plus bas). Le tout grâce au package chapterbib. Au sein d’un chapitre, la définition des différentes entrées bibliographiques se fait comme à l’accoutumée (j’utilise ici natbib), il suffit de préciser à la fin de chaque chapitre le fichier contenant les entrées, et le style de biblio voulu (oui oui, vous pouvez vous amuser à changer de style de biblio entre les différents chapitres…).

Commandes et environnements personnels

Comme je l’ai dit plus haut, j’ai pris le soin de faire un fichier spécifique pour toutes les commandes personnelles (commandesPerso.tex), ce qui évite d’avoir à farfouiller dans le préambule…

Figures et tableaux

J’ai créé un environnement figureth . De fait, la commande :

\begin{figureth}
	%commande quelconque
\end{figureth}

est strictement identique à :

\begin{figure}[htbp]
\centering
	%commande quelconque
\end{figure}

Avantages : je suis certain que toutes mes figures sont placées suivant la même règle, et si je veux changer leur placement, je n’ai qu’à modifier ma commande perso. De plus, elle me fait économiser 12  caractères par figure ! De la même manière, j’ai défini l’environnement tableth en lieu et place de table.

Sous-figures

Suite à la remarque de Luneart, j’ai abandonné subfig pour subcaption. Et j’ai ainsi défini l’environnement subfigureth.

Glossaire, liste de symboles et liste des acronymes

On utilise ici le package glossaries, qui vient remplacer glossary. Comme son nom l’indique, il permet de -relativement- facilement générer plusieurs glossaires distincts (autant que voulu).

Pour le français, il vous est fortement conseillé d’avoir installé xindy sur votre ordinateur, ce qui va permettre une meilleure compatibilité avec les caractères accentués. Que vous l’ayez ou non, c’est la commandes makeglossaries que l’on va utiliser ici (voir partie « Compilation »).

Dans mon cas, j’ai décidé d’utiliser 3 types de glossaires :

  • le glossaire standard (qui permet de donner une définition d’un mot),
  • la liste des acronymes (rappelle la signification d’un acronyme),
  • la liste des symboles mathématiques (rappelle le nom donné à chaque symbole).

Pour les trois types, les entrées seront accompagnées des pages où chacune d’elle apparaît. Si vous souhaitez plus d’informations à propos de l’utilisation de glossaries, je vous invite à aller voir mon billet à ce propos.

Glossaire standard

Pour chaque entrée, il faut préciser le nom à afficher dans le document, et une description, qui apparaîtra dans le glossaire. Ex :

\newglossaryentry{ordi}{
	name=ordinateur,
	description={machine électronique qui fonctionne par la lecture séquentielle d'un ensemble d'instructions, organisées en programmes, qui lui font exécuter des opérations logiques et arithmétiques sur des chiffres binaires.}
}

Pour afficher le mot « ordinateur », il faudra alors utiliser la commande \gls{ordi}.

Acronymes

La signification d’un acronyme sera donné totalement à sa première occurrence, puis utilisée sous sa forme réduite ensuite. Ex :

\newacronym{ebsd}{EBSD}{\emph{Electron Backscatter Diffraction}}

Utiliser \gls{ebsd} pour afficher « EBSD » ou « Electron Backscatter Diffraction (EBSD) » (selon le cas).

Symboles mathématiques

Afin de gagner en souplesse d’utilisation, il convient de définir le symbole dans une commande \ensuremath, ce qui permettra par la suite d’utiliser le symbole indifféremment dans le texte ou dans un environnement mathématique. Ex :

\newglossaryentry{pi}{
	type=notation,
	name={\ensuremath{\pi}},
	description={Rapport constant de la circonférence d’un cercle à son diamètre dans un plan euclidien},
	sort=pi
}

Cette fois encore, pour afficher « π », il faut utiliser \gls{pi}. L’option « sort » permettra de définir un ordre alphabétique pour les symboles mathématiques. Pour plus d’infos sur le package glossaries, vous pouvez voir mon billet à ce propos.


Compilation

Génération du document

Comme je l’ai dit plus haut, en ce qui concerne la compilation avec (pdf)latex, c’est toujours le fichier maître qui vous intéresse (Main.tex).

Bibliographies

Comme on va en générer autant de bibliographies qu’il y a de chapitres, il faudra lancer bibtex pour chacun d’eux. Si vos chapitres s’appellent Chapitre1.tex, Chapitre2.tex etc., alors il faudra lancer :

bibtex Chapitre1
bibtex Chapitre2

etc.

Conseil sur Texmaker

Par défaut, une fois un document maître défini, toutes les commandes se font sur celui-ci (pdflatex, bibtex etc.). Dans les options de Texmaker, onglet « compilation », dans la ligne de commande correspondant à bib(la)tex, remplacez le « % » par « # », ce qui aura pour effet de compiler le fichier courant, et non le fichier maître.

Glossaires

Afin de générer la liste des entrées des glossaires (et de les ordonner), il faut lancer la commande makeglossaries, après une compilation avec (pdf)latex :

makeglossaries Main

Puis recompiler deux fois avec (pdf)latex pour mettre à jours les références croisées (même combat qu’avec bibtex).

Compilation générale !

Pour résumer, si vous voulez mettre à jours toutes les biblios, les glossaires et les références croisées, on a :

pdflatex Main.tex
bibtex Chapitre1
bibtex Chapitre2
bibtex Chapitre3
makeglossaries Main
pdflatex Main.tex
pdflatex Main.tex

Ouf ! Autant vous prévenir, entres les .bbl, les .aux, les fichiers des glossaires, les minitocs, ça va être la Foir’Fouille dans le dossier de compilation ! Et vous serez contents d’avoir des sous-dossiers pour les figures. A titre indicatif : à la fin de ma rédaction, une compilation complète me générait 167 fichiers de compilation…

Tout compiler en un clic

Au fur et à mesure de votre rédaction, les temps de chaque compilation va vite devenir plus que conséquent. Pour automatiser le tout, et aller boire un café en attendant, j’ai fait un script qui fait toutes les compilations nécessaires en un clic. Et dans sa grande mansuétude, votre serviteur a pris le soin de l’écrire en bash (pour Unix/Linux/Mac) et en batch (pour les Windowsiens mais néanmoins amis).
No content available in the db with the group name GROUP2. Please check the plugin page or in the admin to find more info.


Extras

Un trait d’esprit en début de chapitre

Le package epigraph nous permet de rajouter une citation au début de chaque chapitre. Cette fois encore, afin de gagner en répétabilité de mise en forme, j’ai défini la commande \citationChap, qui prend en premier argument ladite citation, et l’auteur en second.

Numéros des pages où apparaissent les citations biblio

Trop peu connue de hyperref, l’option backref permet d’ajouter à chaque référence les numéros des pages où celle-ci a été citée. Ça facilite la lecture (sur un fichier PDF, on peut ainsi retourner à la page qu’on était en train de lire) et montre que vous n’avez pas cheaté votre biblio, par exemple en utilisant un \nocite{*}

Caractères mathématiques dans les titres

A priori, rien ne vous empêche d’utiliser un caractère mathématique dans un titre de sectionnement. Sauf que le rendu de celui-ci ne sera pas exceptionnel dans le menu de navigation du lecteur PDF (les « bookmarks »), et vous aurez à la compilation le warning suivant :

Package hyperref Warning :
Token not allowed in a PDFDocEncoded string :

Il est donc possible de remplacer ce caractère par un autre lors de la génération dudit bookmark grâce à la commande \texorpdfstring. Celle-ci prend deux arguments : le premier correspond au contenu que vous voulez dans le document imprimable, le second étant le texte de remplacement dans l’éventuel bookmark.

Par exemple, si je veux créer une section nommée « ductilité de la phase α », alors, plutôt que de faire :

\section{Ductilité de la phase $\alpha$}

Je vais plutôt taper :

\section{Ductilité de la phase \texorpdfstring{$\alpha$}{alpha}}

Mais pour être certain de ne pas me planter, je vais même ouvrir mon fichier commandesPerso.tex, et y mettre :

\newcommand{\alphap}{
	\texorpdfstring{
		\ensuremath{\alpha}
	}{
		alpha
	}
	\xspace
}

Et comme ça je pourrai par la suite utiliser allègrement la commande \alphap (dans un environnement math ou non, grâce au \ensuremath) sans me soucier des menus du lecteur PDF. Pour rappel, \xspace permet de gérer automatiquement l’espacement après une commande perso.

Table des matières en début de chapitre

C’est le package minitoc qui nous fait gentiment ça. Si vous trouvez votre minitoc trop ou pas assez exhaustive, changez la valeur de sa profondeur :

\setcounter{minitocdepth}{2}

Pour conclure

Je ne vous avais pas menti : il y a du boulot derrière tout ça :-)
Comme je l’ai dit en introduction, libre à vous de perfectionner/customiser à votre convenance le contenu de ce template. Toute remarque étant la bienvenue !

Là, je peux vraiment le dire : bonnes compilations !

[EDIT]

Le template est maintenant hébergé sur GitHub. Vous pour donc voir l’historique des modifications en consultant le journal des commits.

[/EDIT]