latex-phytem.tex 182 KB
Newer Older
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
1
2
3
4
5
6
\documentclass[a4paper]{article}

%-----PACKAGES---------------------------

%encodages d'entrée et sortie, police vectorielle
\usepackage[utf8]{inputenc}
Enteocline's avatar
Enteocline committed
7
\usepackage[LGR,T1]{fontenc}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
8
\usepackage{lmodern}
9
\usepackage{microtype}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
10

11
12
13
14
% Bibliographie
%\usepackage{natbib}
% En attendant de faire fonctionner correctement la bibliographie générale (en parallèle de l'exemple), je commente les lignes clés

Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
15
%paquets linguistiques
Alexandre Morlet's avatar
Alexandre Morlet committed
16
\usepackage[frenchb]{babel}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
17
18
19
20

%aspect général des pages
\usepackage{geometry}
\usepackage{fancyhdr}
21
\usepackage{fancyvrb} % pour \verb dans les \footnote
22
\usepackage[bottom]{footmisc} % notes toujours en bas de la page 
23
\usepackage{parskip} % permet les espaces entre paragraphes sans vskip (peut se personaliser)
Aurelien Pascal's avatar
Aurelien Pascal committed
24
\usepackage{pdflscape} %orientation paysage
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
25

26
% Maths
27
\usepackage{amsmath}
28
\usepackage{amssymb}
29
%\usepackage{amsfonts} %amsfonts est chargé par amssymb
Aurelien Pascal's avatar
Aurelien Pascal committed
30
%\usepackage{braket}
Alexandre Morlet's avatar
Alexandre Morlet committed
31
\usepackage{siunitx}
32
\DeclareSIUnit\octet{o}
33

34
35
%inclure du code source
\usepackage{listings}
36
\usepackage{listingsutf8}
37
38
\usepackage{showexpl}
\usepackage[dvipsnames]{xcolor}
39

Aurelien Pascal's avatar
Aurelien Pascal committed
40
%figures, titres et autres environnements spéciaux
Aurelien Pascal's avatar
Aurelien Pascal committed
41
\usepackage{graphicx}
Aurelien Pascal's avatar
Aurelien Pascal committed
42
%\usepackage{caption} %n'a pas l'air utile finalement
Aurelien Pascal's avatar
Aurelien Pascal committed
43
\usepackage{threeparttable}
44
\usepackage{multirow}
Aurelien Pascal's avatar
Aurelien Pascal committed
45
\usepackage{enumitem}
Aurelien Pascal's avatar
subfig    
Aurelien Pascal committed
46
\usepackage[lofdepth,lotdepth]{subfig}
Aurelien Pascal's avatar
wrapfig    
Aurelien Pascal committed
47
\usepackage{wrapfig}
48
\usepackage{mdframed}
Aurelien Pascal's avatar
Aurelien Pascal committed
49

50
%liens internes et externes, annexes
51
\usepackage[colorlinks=true,linkcolor=black,urlcolor=cyan,citecolor=blue]{hyperref}
Aurelien Pascal's avatar
Aurelien Pascal committed
52
\usepackage[titletoc,title,toc,page]{appendix} %personnalise les titres des annexes
53

54
55
56
%commentaires
\usepackage{comment}

57
58
%caractères spéciaux et autres joyeusetés
\usepackage[safe]{tipa}
Aurelien Pascal's avatar
wrapfig    
Aurelien Pascal committed
59
\usepackage{lipsum}
Aurelien Pascal's avatar
Aurelien Pascal committed
60
\usepackage{coffee2}
Alexandre Morlet's avatar
Alexandre Morlet committed
61
\usepackage{epigraph} % épigraphes
Alexandre Morlet's avatar
Alexandre Morlet committed
62
\usepackage{xspace} % espaces
63
\usepackage{eurosym} % €€€
Aurelien Pascal's avatar
Aurelien Pascal committed
64

Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
65
66
67
68
%----------------------------------------------------------------
%-----MACRO INSTRUCTIONS ET COMMANDES----------------------------

%geometrie des pages
Aurelien Pascal's avatar
Aurelien Pascal committed
69
\geometry{hmargin=2cm,vmargin=1.5cm}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
70

71
%options pour la table de matières
Aurelien Pascal's avatar
Aurelien Pascal committed
72
\setcounter{tocdepth}{2}
73
74
\renewcommand{\appendixtocname}{Annexes}
\renewcommand{\appendixpagename}{Annexes}
Aurelien Pascal's avatar
Aurelien Pascal committed
75

Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
76
77
78
%mathématiques
\everymath{\displaystyle} %conserve une taille normale même inclus dans du texte

79
%configuration de listings
80
81
82
\lstdefinestyle{myLatexStyle}{
	language=[LaTeX]TeX,
    	basicstyle=\small\ttfamily,
83
    	backgroundcolor=\color{lightgray}, % J'ai changé, GreenYellow c'est pas très joli. J'aimerais un bleu-gris léger mais LightBlue ou LightSlateBlue fonctionnent pas, alors que GreenYellow ouais. C'est peut-être parce que j'essaie sous Windows.
Aurelien Pascal's avatar
Aurelien Pascal committed
84
    	numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt,
85
86
87
88
89
    	commentstyle=\color{red},
    	showstringspaces=false,
    	keywordstyle=\color{blue}\bfseries,
    	morekeywords={align,begin},
    	pos=l
90
}
91
92
93
94
95
96
97
\lstset{
	inputencoding=utf8/latin1,
	style=mylatexstyle,
	width=0.40\linewidth,
	extendedchars=true,
	literate={é}{{\'e}}1
}
98

99
100
101
% autorise l'utilisation de \verb dans \footnote
\AtBeginDocument{\VerbatimFootnotes}

Enteocline's avatar
Enteocline committed
102
103
104
% Du grec !
\newcommand\textgreek[1]{\begingroup\fontencoding{LGR}\selectfont#1\endgroup}

105
106
107
108
109
% showexpl pollue inutilement le log je trouve, ça m'agace... -- Entéocline
\makeatletter
\renewcommand\SX@Info{}
\makeatother

110
111
112
113
114
115
% Je suis tellement mégalo que je me crée une commande perso pour mes commentaires ! L'avantage
% que mes commentaires peuvent être désactivés en remplaçant \enteotrue par \enteofalse. Je peux
% créer des commandes pour vous aussi si vous voulez !
\newif\ifenteo\enteotrue
\def\startenteo{\ifenteo\begingroup\color{red}}
\def\closeenteo{ -- Entéocline \endgroup\fi}
116
\ifenteo\else \let\startenteo\iffalse \let\closeenteo\fi \fi
117

Aurelien Pascal's avatar
Aurelien Pascal committed
118
% ahah je connaissais pas ça, du coup je suis jaloux je m'en crée une aussi :)
119
   % En vrai j'ai inventé ça sur le tas ! ;) -- Ent.
Aurelien Pascal's avatar
Aurelien Pascal committed
120
121
\newif\ifaurel\aureltrue
\def\startaurel{\ifaurel\begingroup\color{Mulberry}}
122
123
124
\def\closeaurel{ -- Aurelien \endgroup\fi \iffalse \fi}
\ifaurel\else \let\startaurel\iffalse \let\closeaurel\fi \fi

125
126
127
128
\newif\iftouille\touilletrue
\def\starttouille{\iftouille\begingroup\color{blue}}
\def\closetouille{ -- Tatouille \endgroup\fi}
\iftouille\else \let\starttouille\iffalse \let\closetouille\fi \fi
129

130
131
132
133
%%% Vocabulaire
% header : préambule
% package : extension
% backslash : contre-oblique
Alexandre Morlet's avatar
Alexandre Morlet committed
134
135


136
137
138
139
140
141
142
143
144
145
146
147
  %****INSTRUCTIONS POUR SHOWEXPL*********

  %Ce paquet permet l'intégration d'exemple de code latex avec exemple a coté
  %Pour l'utiliser au choix :
  %l'environnement \begin{LTXexample} \end{LTXexample}
  %l'intégration dans un fichier à part : \LTXinputExample{monbeaufichier.tex}

  %l'option [width=0.5\linewidth] fournie lors de ces appels coorespond à la largeur du rendu. 
  %Jouez avec cette option pour obtenir le meilleur compromis
  %(il est plus intuitif de l'exprimer en pourcentage de la largeur totale comme ci-dessus)
  %La valeur par défault est fixée dans le lstset

Aurelien Pascal's avatar
Aurelien Pascal committed
148
149
  %l'option preset est un emsemble de commandes qui ne seront pas affichées dans le rendu,

150
  %L'orthotypograph[LIST] vaincra !
151
  % +1
152
  % +1
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
153
154
155
156
157
158
159
160
%-----------------------------------------------------------------
%-----------------------------------------------------------------
%-----------------------------------------------------------------
%-----------------------------------------------------------------
%-----------------------------------------------------------------

%-----METADATA-----

161
162
\title{\LaTeX{} : Le guide du scientifique débutant}
\author{William Babonnaud\footnote{\href{mailto:William Babonnaud <william.babonnaud@crans.org>}{\ttfamily william.babonnaud@crans.org}},
Alexandre Morlet's avatar
Alexandre Morlet committed
163
        Alexandre Morlet\footnote{\href{mailto:Alexandre Morlet <alexandre.morlet@crans.org>}{\ttfamily alexandre.morlet@crans.org}}\ \ \& 
164
        Aurélien Pascal\footnote{\href{mailto:Aurélien Pascal <aurelien.pascal@crans.org>}{\ttfamily aurelien.pascal@crans.org}}}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
165
166
\date{}

167
168
\lhead{ENS Cachan}
\rhead{2016}
Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
169
170
171
%-----DOCUMENT-----

\begin{document}
172
\pagenumbering{gobble}
173
174
\let\orilabel\label %sauvegarde la commande label dans orilabel pour la restaurer dans showexpl

Aurelien Pascal's avatar
Init  
Aurelien Pascal committed
175
\maketitle
Aurelien Pascal's avatar
Aurelien Pascal committed
176

Aurelien Pascal's avatar
Aurelien Pascal committed
177
178
\coffee{1}

179
180
\thispagestyle{fancy}

181

182
    % J'ai ouvert le gestionnaire de paquets de MiKTeX : 3023 entrées ^^
183
184
185
186
187
188
189

	%Petits truc que je n'ai compris que récemment :

    %Il y a deux solutions pour un retour à la ligne propre :
    % \\ sans ligne blanche après ça revient simplement au début de la ligne
    % une ligne blanche sans \\ avant ça te met un alinéa a ta prochaine ligne

190
    %Toute autre solution (\\ suivi d'une ligne blanche par exemple) produit une "underfull \hbox error"
191
    %Si tu veux un espace entre paragraphes il faut un \vspace ou mieux le paquet parskip
192
193

    % Autre solution que je viens de lire : \vspace{baselineskip} fait une ligne vide. Mais ça m'ennuie dans tous les cas : au collège on m'a appris à aérer mes textes et mettre des alinéas, donc si je fais \\ je veux juste un retour à la ligne, et sinon je veux un saut de ligne + un alinéa, mais ça doit pas être syntaxiquement correct si LaTeX le fait pas ...
194
195
196
    
    %Et dans tous les cas il n' y a pas d'espace entre paragraphes dans le résumé

197
198
    % Est-ce que toutes ces remarques syntaxiques ne devraient pas être mentionnées quelque part ? Dans "Formater le texte" par exmple.

199
200
    % Plutôt que d'utiliser \\, il est préférable de laisser une ligne vide et de commencer le paragraphe suivant par \noindent si on ne veut pas d'alinéa -- Ent.

201
202
203
204
205
\newpage
% Pour rendre plus agréable la présentation à l'impression, il faudrait en fait faire deux newpage ici. Faisons ça.
\null\newpage

\pagenumbering{Roman}
206
207
208
209

\hrulefill
\medskip
\begin{abstract}
210
    Souvent présenté comme incontournable pour rédiger rapports et articles, \LaTeX{} n'est cependant pas enseigné comme peut l'être la programmation.\\
211
212
    Bien qu'il existe certaines ressources en ligne, aucune d'elles n'a donné le sentiment d'être à la fois pratique et complète~:~souvent, une fois les bases posées, le lecteur est laissé à lui-même. 

213
Ce document a pour but de présenter de façon assez complète les bases du langage de mise en forme de texte formaté \LaTeX{}, ainsi que certaines de ses fonctionnalités plus avancées qui pourront vous servir dans votre vie de scientifique.
214
215
216
217
218
219
220
    
    %Mais ça fait un peu de répétition. En gros, dire `on va mettre les bases, puis faire de la mise en page, puis utiliser des paquets `compliqués'.
\end{abstract}
\hrulefill
\vspace{\fill} % Cette commande est magique

\section*{Version}
221
La dernière version de ce document ainsi que ses fichiers sources sont disponibles sur le Gitlab du projet, à l'adresse \url{adresse.adresse}. Les (sous-) sections actuellement vides sont en cours de rédaction.
222
223
224
225
226
227
228
229

Cette plateforme vous permet également de suggérer des modifications et corrections.

\section*{Licence}
\includegraphics[scale=0.3]{images/by-nc-sa} % On remarquera que je fais ce que j'ai dit qu'il fallait pas faire dans la partie includegraphics :-) Quoique l'image de base fait 12ko, pas 12Mo.

Ce document est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.\\
\url{http://creativecommons.org/licenses/by-nc-sa/4.0/}
230

Aurelien Pascal's avatar
Aurelien Pascal committed
231
232
\newpage

233
234
235
236
\tableofcontents

\newpage
\pagenumbering{arabic}
Aurelien Pascal's avatar
Aurelien Pascal committed
237
\part{Introduction}
238

239
Une petite introduction à ce qu'est \LaTeX{} et à comment il s'utilise.
Aurelien Pascal's avatar
Aurelien Pascal committed
240

Alexandre Morlet's avatar
Alexandre Morlet committed
241
\section{\LaTeX{} ?}
242

Alexandre Morlet's avatar
Alexandre Morlet committed
243
L'histoire commence aux alentours de 1977 auprès d'un certain Donald Ervin Knuth, professeur de mathématiques et d'informatique à l'université de Stanford. Dix ans auparavant, Knuth avait commencé la rédaction d'un ouvrage de référence pour la programmation intitulé \emph{The Art of Computer Programming}, et la première édition de son ouvrage avait été imprimée \og{}à l'ancienne\fg{}, avec une presse et des lettres de plomb ; le rendu avait alors beaucoup plus à son auteur. Cependant, les techniques d'impression étaient en pleine évolution et à l'époque qui nous intéresse, cette méthode d'impression n'était plus disponible pour la seconde édition du livre de Knuth. Elle avait été remplacée par la méthode de photocomposition, dont les résultats, surtout pour les formules mathématiques, irritèrent fortement l'auteur lorsqu'il reçut les premières épreuves de cette réédition.
Aurelien Pascal's avatar
Aurelien Pascal committed
244

Enteocline's avatar
Enteocline committed
245
Knuth s'intéressa alors de plus près à la typographie numérique, et décida de concevoir un programme capable de générer des mises en page propres et agréables, en particulier pour les formules mathématiques, et permettant d'obtenir le même rendu quel que soit l'ordinateur sur lequel on travaillait. Ainsi naquit le système de composition \TeX, dont le nom est issu de la première syllabe du mot grec \textgreek{t'eqnh} qui signifie art et science. Notez d'ailleurs que la prononciation de ce nom est précisément définie : dans son livre \emph{The \TeX book}, Knuth explique que l'on doit prononcer le `X' de \TeX{} comme un \textgreek{q} en grec, lequel se prononce [x] (comme le `j' en espagnol ou le `ch' en écossais (\textit{loch}) ou en allemand (\textit{ach})). Cependant, dans tous ses mots d'origine grecque le français a changé la prononciation originelle du \textgreek{q} en [k], aussi la bonne manière de prononcer le nom de ce système en français est [t\textipa{E}k]\footnote{Évitez donc en particulier l'horrible [t\textipa{E}ks] (comme dans \textit{texan}), qui ne vous attirera que railleries !}.
Enteocline's avatar
Enteocline committed
246

Enteocline's avatar
Enteocline committed
247
Dans sa forme pure, \TeX{} est un système d'utilisation difficile, extrêmement bas niveau et donc ésotérique pour le profane. Afin de faciliter son utilisation, un autre chercheur du nom de Leslie Lamport écrivit en 1983 une collection de macro-commandes autour de \TeX{} destinée à le rendre plus simple ; ce qui donna naissance à un système nommé \LaTeX{}\footnote{Abréviation de \textit{La}mport \textit{\TeX}, et qui se prononce donc [lat\textipa{E}k] en France et [lat\textipa{E}x] ailleurs ; mais surtout pas [lat\textipa{E}ks] !...}. Contrairement à des logiciels dits \og{}WYSIWYG\footnote{\emph{What You See Is What You Get}.}\fg{}, tels que \texttt{Word} ou \texttt{LibreOffice}, \TeX{} et \LaTeX{} séparent le contenu et le rendu, reposant sur des commandes (ou \emph{macros}) et nécessitant une étape de compilation. L'avantage apporté par cette approche par rapport aux autres est qu'elle permet à l'utilisateur de se concentrer sur le contenu de son document, les soucis de mise en page étant largement gérés par le système lui-même, tout en lui laissant suffisament de flexibilité pour pouvoir obtenir exactement ce qu'il veut.
Enteocline's avatar
Enteocline committed
248

Enteocline's avatar
Enteocline committed
249
Même s'il paraît \emph{a priori} plus compliqué à utiliser que les logiciels classiques, \LaTeX{} est très robuste : le rendu (via le format PDF) sera toujours le même (entre systèmes et entre générations), le compilateur est un logiciel libre et multi-plateforme, et un simple éditeur de texte suffit pour modifier la source d'un document (un fichier \verb|.tex|). À travers les commandes intégrées ou l'utilisation d'extensions, il est possible de produire tout type de document (article, mémoire, lettre) -- celui que vous avez devant les yeux compris\footnote{Il est même possible de faire un journal en \LaTeX{}, la preuve avec \emph{La Sauce}, le journal du campus de l'ENS Cachan.}. Par ailleurs, \LaTeX{} s'est peu à peu imposé comme un système incontournable dans le monde de la recherche scientifique, et la maîtrise de ce programme est une compétence très appréciée dans de nombreux domaines.
Enteocline's avatar
Enteocline committed
250

Enteocline's avatar
Enteocline committed
251
\vspace{\baselineskip}
Aurelien Pascal's avatar
Aurelien Pascal committed
252

Enteocline's avatar
Enteocline committed
253
\emph{Terminons cette introduction en signalant une dernière particularité à connaître quant aux noms} \TeX{} \emph{et} \LaTeX{} \emph{: lorsque l'on ne dispose pas des commandes} \verb|\TeX| \emph{et} \verb|\LaTeX| \emph{pour taper automatiquement les noms de ces systèmes, on écrit} \texttt{TeX} \emph{et} \texttt{LaTeX}\emph{, en prenant bien soin de mettre les lettres `a' et `e' en minuscule et le reste en majuscule. Ce petit détail typographique permet de distinguer ces systèmes d'autres logiciels avec des noms similaires, et aussi d'éviter de confondre ces noms avec le pseudonyme d'un humoriste, une matière séveuse naturelle ou un polymère servant à la fabrication de pneus et de combinaisons moulantes.}
Enteocline's avatar
Enteocline committed
254

255

256
\section{L'installation}
257
258
259

Parce que \LaTeX{} fait appel à des commandes, il faut compiler le fichier source pour obtenir le fichier de sortie. Deux possibilités se présentent alors à vous : 
\begin{itemize}
Alexandre Morlet's avatar
Alexandre Morlet committed
260
261
	\item utiliser un \emph{IDE}\footnote{Pour \textit{Integrated Development Environment}, ce qui en français donne \og environnement de développement intégré \fg{}.} tel que \verb=TeXmaker= ou \verb=TeXworks=, qui combine éditeur de texte et interface de compilation. Ils ont l'avantage d'automatiser la compilation, en gérant à votre place les appels au compilateur	;
	\item travailler de façon plus artisanale en utilisant votre éditeur de texte favori et en donnant les instructions de compilation dans un terminal (directement ou en utilisant l'outil \verb|latexmk|, voir au \ref{subsec:latexmk}).
262
263
264
265
266
267
\end{itemize}

Si vous n'êtes pas familier avec les environnements UNIX et/ou que les aspects techniques ne vous intéressent pas, nous vous conseillons d'utiliser un \emph{IDE}.

Peu importe la solution que vous choisissez, il faut installer séparément le compilateur. \verb|TeXlive| est la distribution la plus répandue, disponible pour tous les systèmes d'exploitation ; sous Windows, il existe également \verb=MikTex=.

268
Installer la totalité de la distribution est assez coûteux en mémoire (supérieur à \SI{1}{\giga\octet}), mais c'est le meilleur moyen d'être sûr de ne manquer de rien. Vous pouvez aussi ne télécharger que la distribution de base et ajouter les extensions au fur et à mesure de vos besoins.  \verb|MikTeX| propose également un système d'installation des extensions à la volée\footnote{C'est-à-dire au moment de la compilation, si vous en avez besoin.}, mais ce système nécessite une connexion internet.
269

Alexandre Morlet's avatar
Alexandre Morlet committed
270
271
Il existe également des interfaces en ligne, qui compilent automatiquement : \texttt{Overleaf} et \texttt{ShareLaTeX}. Bien qu'elles permettent de collaborer rapidement en ligne et sans installation, elles montrent rapidement leurs limites. Utiliser \texttt{Git} (logiciel de gestion de versions), en parallèle de son installation locale, résout ce problème.

Aurelien Pascal's avatar
Aurelien Pascal committed
272
\section{La compilation}
273

274
Si vous utilisez un \textit{IDE} et que le côté technique ne vous intéresse pas vous pouvez vous passer de lire cette section.
Aurelien Pascal's avatar
Aurelien Pascal committed
275
276
277

Mais si vous désirez compiler votre document à la main (sans \textit{IDE}), comprendre comment utiliser des options de compilation et des fichiers externes (\texttt{.bib} par exemple), ou que vous êtes tout simplement curieux de voir comment se déroule la compilation, alors vous êtes au bon endroit ! 

278
279
280
281
282
Il y a deux moyens de compiler un document \LaTeX{}, avec chacun leur compilateur associé :
\begin{itemize}
	\item la méthode \og historique \fg{} qui utilise le compilateur \verb|latex| pour créer un document \texttt{.dvi}, que l'on peut ensuite convertir en \texttt{.pdf}
	\item la compilation directe en \texttt{.pdf}, qui utilise le compilateur \verb|pdflatex|
\end{itemize}
Aurelien Pascal's avatar
Aurelien Pascal committed
283

Alexandre Morlet's avatar
Alexandre Morlet committed
284
%\startaurel En cherchant les différence entre les deux voies de compilation je suis tombé sur une extension qui ne fonctionne qu'avec pdflatex : \verb|microtype|, qui fait de la microtypographie, elle adapte le texte pour éviter quasiment toutes les césures de fin de ligne et fait de la micro-gestion des ponctuations, histoire de pousser l'OTL à l'extrême \verb|^^| On devrait carrément faire une section OTL en fait ;) \closeaurel
285

Alexandre Morlet's avatar
Alexandre Morlet committed
286
La méthode historique semble néanmoins tomber peu à peu en désuétude. Elle était très utilisée dans les débuts du langage, mais  \verb|pdflatex| est maintenant beaucoup plus performant et produit des documents de meilleure qualité. La seule raison pour laquelle vous pouvez donc être amené à utiliser la compilation en \texttt{.dvi} est si vous êtes un adepte de l'extension \verb|pstricks|\footnote{Qui permet de faire du dessin vectoriel, comme Ti$k$Z.}.
287
288
289

Pour ces raisons nous ne parlerons dans ce document que de \verb|pdflatex|, et c'est désormais ce compilateur qui sera sous-entendu à chaque fois que sera mentionné l'opération de compilation.\\
Si vous utilisez un \textit{IDE} assurez-vous donc que c'est bien \verb|pdflatex| qui est utilisé (mais c'est normalement le cas par défaut si vous créez un \texttt{.pdf})
290

Aurelien Pascal's avatar
Aurelien Pascal committed
291
292


293
294
\subsection{Le compilateur et ses options}

Aurelien Pascal's avatar
Aurelien Pascal committed
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
L'appel au compilateur se fait en terminal UNIX (ou en ligne de commande Windows), avec la syntaxe habituelle \verb|pdflatex -option1 -option2 monfichier.tex|

Les options les plus utiles sont résumées dans le tableau suivant. Et pour plus de détails comme toujours lisez le manuel.

\begin{tabular}{|c|c|c|}
	\hline
	Option & Utilité & Commentaire\\
	\hline
	\hline
	\verb|-interaction=nonstopmode| & compile d'une traite sans & les \textit{IDE} utilisent cette \\
	& demander l'avis utilisateur & option par défaut \\
	\hline
	 & crée un fichier de synchronisation & il faut que votre éditeur  \\
	\verb|-synctex=1|& source-sortie, afin de relier ce & supporte cet effet, les \textit{IDE}\\
	& qui est vu dans l'éditeur &  le font sans problème, les éditeurs\\
	& au document \texttt{.pdf} & comme \textit{vim} ont besoin d'un \textit{plugin} \\
	\hline
312
	\verb|-verbose| & pour plus de détails dans la sortie & $\emptyset$ \\
Aurelien Pascal's avatar
Aurelien Pascal committed
313
314
315
316
317
318
319
320
	\hline
	\verb|-output-directory=dossier| & place le résultat de la & pour plus de propreté\\
	& compilation dans ce dossier & dans vos dossiers\\
	\hline
	 & autorise \verb=pdflatex= a envoyer & utile pour l'externalisation \\
	\verb|-shell-escape|& des commandes au terminal & des graphes Ti$k$Z \\
	& (écriture sur la sortie $18$) & \\
	\hline
321
322
323
	\verb|-draftmode| & compile sans inclure les images & accélère la compilation \\
	& et sans créer de \texttt{.pdf} &  \\
	\hline
Aurelien Pascal's avatar
Aurelien Pascal committed
324
\end{tabular}
325

326
327
328
329
\subsection{Le déroulement de la compilation : incidents et fichiers auxiliaires}

\label{subsec:erreurs}

Alexandre Morlet's avatar
Alexandre Morlet committed
330
Lors de la compilation, des erreurs peuvent survenir si vous avez fait une erreur (syntaxique ou logique)\footnote{Une bonne syntaxe \LaTeX{} est assez exigeante, ne vous étonnez pas si vous avez beaucoup d'erreurs, une grande partie d'entre elles sont sûrement inoffensives}. 
331

Alexandre Morlet's avatar
Alexandre Morlet committed
332
Si vous n'êtes pas en \verb|nonstopmode|, la compilation se mettra en pause et on vous proposera de résoudre cette erreur avant de continuer.\\
333
334
335
336
Si vous êtes en \verb|nonstopmode|, regardez attentivement votre document de sortie car une erreur a pu avoir lieu sans que vous ne l'ayez vue.

Les erreurs se classent en deux catégories : 
\begin{itemize}
Alexandre Morlet's avatar
Alexandre Morlet committed
337
338
	\item les \textit{avertissements} sont pour la plupart inoffensifs, et vous pouvez les ignorer dans un premier temps (pour y revenir s'ils vous posent problème) ;
	\item les \textit{erreurs fatales} vont causer un arrêt soudain de la compilation et ne pas produire de document.
339
\end{itemize}
340

341
342
343
344
Dans tous les cas les erreurs sont écrites dans un fichier texte portant l'extension \texttt{.log}, que vous pouvez consulter en cas de problème. Un \textit{IDE} est en général capable de lire automatiquement les \texttt{.log} et de vous signaler un problème.

L'annexe \ref{app:errors} présente des erreurs courantes et la façon d'y remédier, n'hésitez pas à la consulter en cas de problèmes.

Alexandre Morlet's avatar
Alexandre Morlet committed
345
346
347
Un avertissement mérite néanmoins d'être présenté dans cette section : \\
\og \texttt{LaTeX Warning: There were undefined references} \fg{}\\
Cet avertissement apparaît si vous avez utilisé un \verb|\ref{}| auquel ne correspond aucune étiquette (voir au \ref{subsec:label}), mais la petite subtilité est qu'il apparaîtra également si c'est la première fois que vous compilez depuis que vous avez créé l'étiquette\ldots
348

Alexandre Morlet's avatar
Alexandre Morlet committed
349
En effet le compilateur lit le fichier source linéairement et est donc parfaitement incapable de gérer des références croisées ! Pour contourner ce problème, il écrit les étiquette dans un fichier texte portant l'extension \texttt{.aux} (pour auxiliaire), et lorsqu'il rencontre une référence il cherche si une étiquette correspondante existe dans le \texttt{.aux}. C'est pour cette raison qu'une référence croisée n'apparaît jamais lors de sa première compilation et que deux compilations sont nécessaires ! 
350

Alexandre Morlet's avatar
Alexandre Morlet committed
351
Pour finir, notez que le compilateur va créer des fichiers secondaires (le \texttt{.log}, le \texttt{.aux}, et d'autres) lors de la compilation. Vous les trouverez peut-être inutiles et aurez envie de vous en débarrasser, mais ils ont de l'importance pour \verb|pdflatex| et les supprimer revient à tout devoir recompiler.
Aurelien Pascal's avatar
Aurelien Pascal committed
352
353
354

\subsection{Compiler la bibliographie}

Alexandre Morlet's avatar
Alexandre Morlet committed
355
356
357
358
359
360
361
362
La bibliographie nécessite plusieurs étapes afin d'être rendue proprement. Une fois que celle-ci est rédigée (votre fichier \texttt{.bib} est prêt et appelé dans le corps du document, cf. la section~\ref{sec:biblio}), il faut dans l'ordre :
\begin{itemize}
\item Compiler le fichier \texttt{.tex} avec \texttt{pdflatex} une première fois ;
\item Compiler le fichier \texttt{.aux} avec \texttt{bibtex} pour créer les références bibliographiques ;
\item Compiler le fichier \texttt{.tex} avec \texttt{pdflatex} deux fois\footnote{Pour éviter les problèmes dus aux références croisées mentionnés plus haut}.
\end{itemize}

Si vous utilisez un \textit{IDE}, il existe toujours un bouton, menu déroulant ou entrée qui permet d'appeler \texttt{bibtex} plutôt que \texttt{pdflatex} (voir l'image ci-dessous pour l'exemple de \texttt{Texmaker}). Il faut donc appeler \texttt{pdflatex} et \texttt{bibtex} dans le même ordre que ci-dessus pour obtenir le résultat désiré.
Aurelien Pascal's avatar
latexmk    
Aurelien Pascal committed
363

Alexandre Morlet's avatar
Alexandre Morlet committed
364
365
366
367
368
\begin{figure}[h]
\centering
\includegraphics[scale=1]{./images/bibtex_ide.png}
\caption{Menu déroulant permettant de choisir le compilateur appelé par \texttt{Texmaker}. Ces choix se retrouvent aussi dans le menu \texttt{Outils}.}
\end{figure}
369

Aurelien Pascal's avatar
Aurelien Pascal committed
370
371
\subsection{L'outil latexmk}

372
373
\label{subsec:latexmk}

Aurelien Pascal's avatar
latexmk    
Aurelien Pascal committed
374
375
Si vous n'utilisez pas d'\textit{IDE} mais que vous ne voulez pas tout compiler à la main à chaque fois, \verb|latexmk| est une excellente solution pour vous !

Alexandre Morlet's avatar
Alexandre Morlet committed
376
En effet, il s'agit d'un programme agissant à la manière d'un \verb|makefile|\footnote{Pour ceux qui ne connaissent pas, c'est une sorte de \og recette de cuisine \fg{} pour compiler un programme, ils sont très utiles aux programmeurs pour s'assurer que tout le monde compile de la même façon.} (d'où son nom), qui automatise la compilation en appelant \verb|pdflatex| et \verb|bibtex| exactement le bon nombre de fois\footnote{Contrairement à certains programmes qui se contentent de compiler deux fois car \og dans le doute ça marchera \fg{}.} afin d'obtenir le résultat désiré.
Aurelien Pascal's avatar
latexmk    
Aurelien Pascal committed
377

Alexandre Morlet's avatar
Alexandre Morlet committed
378
379
Pour l'utiliser en terminal il faut taper 
\begin{center}\verb|latexmk -pdf (--autres-options-pour-pdflatex) monfichier.tex|\end{center}
Aurelien Pascal's avatar
latexmk    
Aurelien Pascal committed
380
381
382

Il est également utilisé comme base par d'autres programmes comme le \textit{plugin} \verb|vimtex| de \verb|vim| (voir \url{https://github.com/lervag/vimtex}).

Aurelien Pascal's avatar
Aurelien Pascal committed
383
384


385
386
\pagebreak

Aurelien Pascal's avatar
Aurelien Pascal committed
387
\part{\LaTeX~:~Guide de survie}
388

389
390
La principale difficulté de \LaTeX{} est qu'un certain temps d'apprentissage est nécessaire pour obtenir des résultats qui sont obtenus très rapidement et avec moins d'efforts en utilisant les logiciels de traitement de texte usuels. Mais ne vous découragez pas, car une fois cette première phase passée, vous vous sentirez bien plus libre que sous \verb=Word= ou \verb=LibreOffice=.\\
L'objectif de cette première partie est de vous guider dans cette phase d'apprentissage, vous rendant capable de réaliser n'importe quel document texte basique sans problème\footnote{Ici, \emph{basique} inclus entre autres la gestion des images et des tableaux, les références croisées, les expressions mathématiques\ldots qui sont mieux gérées que sur d'autres traitements de texte.}.
Enteocline's avatar
Enteocline committed
391

Aurelien Pascal's avatar
Aurelien Pascal committed
392
\section{Structure d'un fichier source : les bases}
393

394
Avant toute chose, commençons par cette bonne vieille tradition qu'est présenter un langage de programmation par un exemple de `Hello World' :
395
396

\begin{LTXexample}
Aurelien Pascal's avatar
Aurelien Pascal committed
397
\documentclass[11pt,a4paper]{article}
398
399
400
401
402
403
404

\begin{document}
	Hello World !
\end{document}

\end{LTXexample}

405
406
L'intérêt d'un tel exemple est qu'il permet de comprendre quel est le \emph{minimum légal} de code afin que votre document puisse compiler.\\
Ainsi, il y a deux éléments indispensables à un document \LaTeX{} : 
Aurelien Pascal's avatar
Aurelien Pascal committed
407
\begin{itemize}
408
409
	\item le premier est le \texttt{documentclass}, qui indique à votre compilateur sur quel type de document (article, livre, journal, présentation) vous êtes en train de travailler ;
	\item le second est l'environnement \texttt{document}, qui constitue le corps du document et contient tout ce qui sera écrit dans le document final\footnote{À l'exception de quelques métadonnées, comme l'auteur et le titre, qui seront contenues dans le préambule, mais nous y reviendrons.}.
Aurelien Pascal's avatar
Aurelien Pascal committed
410
\end{itemize}
411
412

L'autre chose que l'on observe sur cet exemple est la structure globale d'un document \LaTeX{} : avant l'environnement \texttt{document}, vous avez une partie non affichée (le préambule) dans laquelle vous allez placer les informations générales sur le document, telles que les extensions utilisées, les configurations globales ou les métadonnées (cf. section~\ref{sec:preambule}). Le corps du document est, quand à lui, entièrement contenu dans l'environnement \texttt{document} (cf. section~\ref{sec:document}).
Aurelien Pascal's avatar
Aurelien Pascal committed
413

414

Alexandre Morlet's avatar
Alexandre Morlet committed
415
\section{Quelques notions sur la syntaxe \LaTeX{}}
416

Alexandre Morlet's avatar
Alexandre Morlet committed
417
La première chose à voir avant de poursuivre est d'apprendre à reconnaître les éléments de syntaxe \LaTeX{}. En effet, tout comme les langages de programmation usuels, \LaTeX{} possède des caractères et instructions réservés, et une façon particulière d'utiliser ces éléments.
Aurelien Pascal's avatar
Aurelien Pascal committed
418

Aurelien Pascal's avatar
Aurelien Pascal committed
419
\subsection{Les caractères réservés}
Alexandre Morlet's avatar
Alexandre Morlet committed
420
Le tableau~\ref{tab:caracres} présente les caractères réservés\footnote{C'est à dire qu'ils sont interprétés par le compilateur et sont donc inutilisables tels quels dans du texte.} en \LaTeX{} ainsi que la façon dont il faut les écrire pour les afficher dans du texte.
Aurelien Pascal's avatar
Aurelien Pascal committed
421
422
423
424
425
426
427

\medbreak
\begin{center}
	\renewcommand{\arraystretch}{1.20}
\begin{threeparttable}
\begin{tabular}{|c|c|c|}
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
428
	Caractère réservé & Utilité en \LaTeX{} & Comment l'utiliser dans du texte\\
Aurelien Pascal's avatar
Aurelien Pascal committed
429
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
430
	\textbackslash & Introduit toutes les commandes\tnote{a}~~\LaTeX{} & \verb|\textbackslash| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
431
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
432
	\{ et \} & Délimitent les blocs & \verb|\{| et \verb|\}| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
433
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
434
	\% & Permet de commenter une ligne\tnote{b} & \verb|\%| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
435
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
436
	\# & Fait appel aux paramètres dans les macros\tnote{c} & \verb|\#| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
437
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
438
	\$ & Ouvre et ferme le mode mathématiques & \verb|\$| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
439
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
440
	\textasciicircum & Introduit un exposant en mode mathématique & \verb|\textasciicircum| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
441
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
442
	\_ & Introduit un indice en mode mathématique & \verb|\_| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
443
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
444
	\textasciitilde & Espace fine insécable & \verb|\textasciitilde| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
445
	\hline
Alexandre Morlet's avatar
Alexandre Morlet committed
446
	\& & Délimite les colonnes dans un tableau & \verb|\&| \\
Aurelien Pascal's avatar
Aurelien Pascal committed
447
448
449
450
451
	\hline
\end{tabular}
\caption{Caractères réservés}
\label{tab:caracres}
\begin{tablenotes}
Alexandre Morlet's avatar
Alexandre Morlet committed
452
453
454
\item[a] Aussi parfois appelées \emph{balises}. \starttouille Et macros ? Tout ça n'est pas équivalent ?\closetouille
	\item[b] Dans un langage de programmation, un commentaire n'est pas lu par le compilateur et ne sert donc qu'au confort du programmeur, afin de mieux organiser son document.
	\item[c] Une macro-commande est une fonction \LaTeX{} écrite par l'utilisateur afin de simplifier une tâche répétée de nombreuses fois (cf sec. \ref{sec:macro}).
Aurelien Pascal's avatar
Aurelien Pascal committed
455
456
457
458
459
\end{tablenotes}
\end{threeparttable}
\end{center}
\medbreak

Alexandre Morlet's avatar
Alexandre Morlet committed
460
461
Nous reviendrons à l'utilité de tous ces caractères ; pour l'instant, il est juste nécessaire de retenir qu'ils ont une signification particulière pour le compilateur et qu'on ne peut donc pas les utiliser dans du texte.\\
Tous les autres caractères des langues occidentales s'utilisent sans problème particulier\footnote{Enfin sous condition d'avoir bien configuré l'encodage (cf. section~\ref{sec:preambule}).}.
Aurelien Pascal's avatar
Aurelien Pascal committed
462

463
Voici un exemple qui résume l'utilisation des caractères réservés :
Aurelien Pascal's avatar
Aurelien Pascal committed
464
465
466
467
468
469
470
471
472
473
474
475
476

\lstset{commentstyle=\color{black}}
\begin{LTXexample}
\begin{document}
	\textbackslash \{ \} 

	\% \# \$ \textasciicircum 

	\_ \textasciitilde \&
\end{document}
\end{LTXexample}
\lstset{commentstyle=\color{red}}

Aurelien Pascal's avatar
Aurelien Pascal committed
477
\subsection{Les commandes et instructions~\LaTeX~}
Aurelien Pascal's avatar
Aurelien Pascal committed
478

Aurelien Pascal's avatar
Aurelien Pascal committed
479
\subsubsection{Les commandes et leurs options}
480
Les commandes \LaTeX{} sont des petites fonctions qui sont interprétées par le compilateur et ont des effets divers. Elles sont une composante indispensable de \LaTeX{} dans la mesure où toute la mise en forme du texte passe par elles. Comme précisé précédemment, les commandes sont toujours introduites par une contre-oblique (\verb|\|). Leur forme générale est la suivante :
481

Enteocline's avatar
Enteocline committed
482
{\centering\verb|\<nomdecommande>[<options>]{<argument_1>}{<argument_2>}...{<argument_n>}|\par}
483

Alexandre Morlet's avatar
Alexandre Morlet committed
484
Le nombre d'arguments et la présence d'options ou non dépend de la commande. Notons par ailleurs qu'il existe des commandes spéciales qui ne respectent pas ce schéma. Quoi qu'il en soit, les arguments doivent toujours être placés entre accolades \verb|{ }| et les options entre crochets \verb|[ ]|. Lorsque l'on veut passer plusieurs options à une commande, on utilise une seule paire de crochets dans laquelle les différentes options sont séparées par des virgules.
Aurelien Pascal's avatar
Aurelien Pascal committed
485

Aurelien Pascal's avatar
Aurelien Pascal committed
486
Voici quelques exemples :\\
487
\verb=\LaTeX= est une commande sans options ni argument.\\
488
\verb=\emph{text}= est une commande avec un argument.\\
489
\verb=\DeclareMathOperator{\Tr}{Tr}= est une commande avec deux arguments.\\% (on définit ici une commande pour la trace).\\
490
\verb+\usepackage[colorlinks=true,linkcolor=black,urlcolor=cyan]{hyperref}+ est une commande avec un argument et trois options.
Aurelien Pascal's avatar
Aurelien Pascal committed
491

492
493
Ces exemples ne sont pas exhaustifs, mais couvrent la majorité des cas que vous pourriez rencontrer. En cas de doute pour une commande, de la documentation (ce document, les références en bibliographie ou les manuels des extensions utilisées) et des forums d'aide (\href{tex.stackexchange.com}{LaTeX Stack Exchange}) existent.\\
Les commandes sont beaucoup trop variées pour pouvoir êtres listées ici ; elles peuvent s'appliquer sur tout le texte ou juste à leurs arguments, avoir un effet localisé ou modifier l'intégralité du document, travailler seules ou servir à d'autres commandes, ce que nous allons voir maintenant.
Aurelien Pascal's avatar
Aurelien Pascal committed
494

Aurelien Pascal's avatar
Aurelien Pascal committed
495
\subsubsection{Les notions de groupe et de portée}
Enteocline's avatar
Enteocline committed
496
Comme précisé dans le tableau \ref{tab:caracres}, les accolades sont pour \LaTeX{} des caractères spéciaux. On les utilise en fait pour former des \emph{groupes}, qui consistent tout simplement en des blocs de texte. L'intérêt majeur de ces groupes est qu'ils offrent des bornes pour l'application des commandes. En particulier, le fait que les arguments d'une commande doivent être encadrés par des accolades n'est pas dû au hasard : c'est une syntaxe nécessaire pour expliciter à quel bloc de texte la commande doit s'appliquer.
Aurelien Pascal's avatar
Aurelien Pascal committed
497

Enteocline's avatar
Enteocline committed
498
\LaTeX{} possède deux principaux styles d'application pour les commandes. La plus courante, comme suggéré ci-dessus, consiste à passer la cible de la commande comme un argument de cette dernière. De la sorte, la \emph{portée} d'une telle commande est l'argument qu'on lui donne, le texte autour n'est pas affecté. L'exemple ci-dessous l'illustre avec la commande \verb|\textit| :
Aurelien Pascal's avatar
Aurelien Pascal committed
499
500

\begin{LTXexample}
Enteocline's avatar
Enteocline committed
501
Ce texte est en police normale
502

Enteocline's avatar
Enteocline committed
503
\textit{et celui-ci est en italique}
Aurelien Pascal's avatar
Aurelien Pascal committed
504
505
\end{LTXexample}

Enteocline's avatar
Enteocline committed
506
Mais il existe aussi des commandes qui sont dites à \emph{portée infinie} : elles s'appliquent à tout le texte qui les suit, jusqu'à la fin du groupe. Et si elles sont appelées en-dehors d'un groupe, elles s'appliqueront à tout le texte jusqu'à la fin du document. Par exemple :
Aurelien Pascal's avatar
Aurelien Pascal committed
507
508

\begin{LTXexample}
Enteocline's avatar
Enteocline committed
509
510
511
On commence un bloc {\itshape et le
texte est en italique} puis il
redevient normal et devient \bfseries
512
gras jusqu'à la fin du document.
Aurelien Pascal's avatar
Aurelien Pascal committed
513
514
\end{LTXexample}

Enteocline's avatar
Enteocline committed
515
516
Notons qu'une commande peut prendre un paramètre en argument et être ensuite à portée infinie ; c'est le cas par exemple de \verb|\color| qui prend une couleur en argument et colorie le texte qui suit de cette couleur.

Enteocline's avatar
Enteocline committed
517
\subsubsection{Les environnements}
Enteocline's avatar
Enteocline committed
518

Alexandre Morlet's avatar
Alexandre Morlet committed
519
En plus des commandes usuelles, il existe des commandes un peu particulières dont le champ d'application est parfaitement borné : les \emph{environnements}. Ceux-ci sont délimités par les commandes \verb|\begin{<nom_env>}| et \verb|\end{<nom_env>}|, et affectent tout le texte compris entre ces deux commandes. Les environnements sont variés, et ont pour principal intérêt de permettre la mise en page automatique d'éléments complexes comme les tableaux, les listes, etc., en définissant parfois leurs propres règles\footnote{Rappelons aussi que le corps d'un document \LaTeX{} est un environnement particulier nommé \texttt{document}.}. Ces environnements spéciaux seront traités dans des chapitres ultérieurs. Voici un exemple simple d'utilisation d'un environnement :
Aurelien Pascal's avatar
Aurelien Pascal committed
520
521

\begin{LTXexample}
522
Texte normal\\
Enteocline's avatar
Enteocline committed
523
\begin{itshape}
524
Texte en italique\\
Enteocline's avatar
Enteocline committed
525
\end{itshape}
Aurelien Pascal's avatar
Aurelien Pascal committed
526
527
528
Texte normal
\end{LTXexample}

Enteocline's avatar
Enteocline committed
529
530
Certains environnements peuvent requérir des arguments et des options. Dans un tel cas, la syntaxe est la suivante :

Enteocline's avatar
Enteocline committed
531
{\centering\begin{minipage}{0.54\textwidth}\verb|\begin{<nom_env>}[<options>]{<arg_1>}...{<arg_n>}|\\\ldots\\\verb|\end{<nom_env>}|\end{minipage}\par}
Enteocline's avatar
Enteocline committed
532

Enteocline's avatar
Enteocline committed
533
Notons enfin qu'en règle générale, les limites d'un environnement définissent également un groupe ; on peut donc utiliser des commandes à portée infinie au sein d'un environnement sans que tout le document en soit affecté. Par ailleurs, certaines commandes peuvent se présenter sous différentes formes parmi les trois précédemment évoquées. Le choix de la méthode à utiliser est généralement laissé à la discrétion de l'auteur, mais retenons néanmoins qu'il est plus propre de recourir à une commande à argument ou à une commande à portée infinie au sein d'un groupe pour modifier de petites portions de texte, et de préférer les environnements pour modifier des paragraphes entiers. Des précisions à ce sujet seront aussi apportées plus loin.
Aurelien Pascal's avatar
Aurelien Pascal committed
534
535


Enteocline's avatar
Enteocline committed
536
537
\subsubsection{Le groupe vide}

Aurelien Pascal's avatar
Aurelien Pascal committed
538
539
\label{subsubsec:groupevide}

Enteocline's avatar
Enteocline committed
540
541
Lorsque l'on tape une commande \LaTeX, le compilateur a des moyens prédéfinis de déterminer où se termine la commande. Dans le cas d'une commande à arguments,
il compte le nombre de groupes successifs rencontrés jusqu'à en avoir autant que le nombre d'argument attendus, et tout ce qui suit est traité en-dehors comme il
Enteocline's avatar
Enteocline committed
542
devrait l'être. Lorsqu'on utilise une commande sans argument, qu'elle soit définie comme telle sans influence sur le texte alentour, à l'instar de \verb|\LaTeX|,
Enteocline's avatar
Enteocline committed
543
ou qu'il s'agisse d'une commande à portée infinie comme \verb|\itshape|, le compilateur cherche un caractère qui marque la fin du nom de la commande et le début de la suite
Enteocline's avatar
Enteocline committed
544
545
du texte. Ce caractère peut être n'importe quoi sauf une lettre, puisqu'on utilise les lettres dans les noms des commandes. En particulier, les signes de ponctuation ou
les espaces peuvent marquer la fin d'une telle commande.
Enteocline's avatar
Enteocline committed
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562

Cependant, on pourra remarquer pour les commandes sans argument qui insèrent du texte un effet un peu déconcertant : si elles sont suivies d'une ou plusieurs espaces,
ces dernières sont \og{}mangées\fg{} par la commande, et le texte qui suit se retrouve collé à celui qui vient d'être inséré. Une solution simple à connaître pour se
débarrasser de cet effet indésirable consiste à utiliser un groupe vide, c'est-à-dire une paire d'accolades \verb|{}| sans rien entre elles. Le groupe vide n'a absolument
aucun effet sur le document : on peut en insérer partout dans le texte --- mais notons, bien entendu, qu'en placer entre les arguments d'une commande risque de provoquer
des choses inattendues, puisqu'un groupe vide est compté comme un groupe, donc comme un argument. En insérant un groupe vide entre la fin de la commande incriminée et
l'espace qui suit, on retrouve le comportement désiré : le groupe vide marque la fin de la commande et l'espace redevient un séparateur de mots.

L'utilisation de ce groupe vide est illustrée ci-dessous. Dans le premier cas, il manque une espace, qui apparaît de nouveau dans le second.

\begin{LTXexample}
\LaTeX c'est trop bien !

\LaTeX{} c'est trop bien !
\end{LTXexample}


Aurelien Pascal's avatar
Aurelien Pascal committed
563
564
\section{Construire son préambule}
\label{sec:preambule}
Aurelien Pascal's avatar
Aurelien Pascal committed
565

Enteocline's avatar
Enteocline committed
566
Le préambule d'un document \LaTeX{} est l'ensemble des instructions situées avant le \verb|\begin{document}|. Cela comprend la déclaration de la classe de document, le chargement d'extensions, les configurations globales et les métadonnées. La construction du préambule est donc une étape cruciale dans l'écriture d'un document \LaTeX{}. Cette section vise à vous donner suffisamment d'éléments pour comprendre leur construction et vous présentera un préambule d'exemple que vous pourrez utiliser comme base dans vos documents.
Aurelien Pascal's avatar
Aurelien Pascal committed
567

Enteocline's avatar
Enteocline committed
568
\subsection{La classe de document}
Aurelien Pascal's avatar
Aurelien Pascal committed
569

Aurelien Pascal's avatar
wrapfig    
Aurelien Pascal committed
570
571
\label{subsec:documentclass}

572
L'instruction \verb=\documentclass[<options>]{<classe>}= doit toujours être la première ligne de votre document \LaTeX{} ; elle précise au compilateur quel type de document vous rédigez.
Aurelien Pascal's avatar
Aurelien Pascal committed
573

574
575
\subsubsection{Les classes} 
Les principales valeurs possibles pour l'argument de \verb=\documentclass= sont :
Aurelien Pascal's avatar
Aurelien Pascal committed
576
\begin{itemize}
577
578
579
580
581
	\item \texttt{article}, la classe la plus utile pour un document simple (c'est celle utilisée pour celui que vous êtes en train de lire). Cette classe n'a pas d'environnement \texttt{chapter}.
	\item \texttt{report}, destiné à des rapports, thèses, \ldots qui permet d'insérer des chapitres ; de plus, la page de garde (\texttt{titlepage}) et le résumé (\texttt{abstract}) occupent une page pleine chacun.
	\item \texttt{book}, pensé pour écrire des livres (romans, manuels), qui a les mêmes propriétés que \texttt{report}, en ajoutant une en-tête sur chaque page contenant le numéro de page et le nom de la section. De plus, l'option \texttt{twoside} est active par défaut. L'environnement \texttt{abstract} n'est pas disponible.
	\item \texttt{lettre}, permettant d'écrire un courrier au format français dans les règles de l'art (\texttt{letter} pour le format américain). Cette classe fait appel à des environnements et commandes spéciaux.
	\item \texttt{beamer}, utilisée pour faire des présentation (à l'aide de diapositives plutôt que de pages). Elle sera présentée en partie \ref{sec:beamer}.
Aurelien Pascal's avatar
Aurelien Pascal committed
582
583
\end{itemize}

584
585
\subsubsection{Les options} 

586
Il est possible de modifier une partie des comportements par défaut des différentes classes sans appel d'extensions. Ci-dessous se trouvent les options les plus utiles pour la commande \verb|\documentclass| avec les différentes valeurs possibles.\\
587
Remarquez qu'ici vous n'avez pas à écrire \verb|[option=valeur]| mais que la valeur seule suffit.
Aurelien Pascal's avatar
Aurelien Pascal committed
588
589
590
591
592
593
\begin{center}
\renewcommand{\arraystretch}{1.15}
\begin{tabular}{|c|c|}
	\hline
	Option & Valeurs possibles \\
	\hline
594
	Taille de police par défaut & \textbf{10pt} (défaut), \textbf{11pt} ou \textbf{12pt} \\
Aurelien Pascal's avatar
Aurelien Pascal committed
595
	\hline
596
	Format de papier & \textbf{a4paper} (défaut), \textbf{letterpaper} (défaut pour la classe \texttt{lettre}), \\
Aurelien Pascal's avatar
Aurelien Pascal committed
597
598
 & \textbf{a5paper}, \textbf{b5paper}, \textbf{executivepaper}, \textbf{legalpaper}\\
	\hline
Aurelien Pascal's avatar
Aurelien Pascal committed
599
600
	Mode brouillon (ne charge pas & \textbf{draft}  \\
	les images et autres inclusions) & (si aucune option n'est précisé le mode brouillon est inactif)\\
Aurelien Pascal's avatar
Aurelien Pascal committed
601
	\hline
602
	Colonnes multiples & \textbf{onecolumn} (défaut) et \textbf{twocolumn} \\
Aurelien Pascal's avatar
Aurelien Pascal committed
603
604
	& (le format classique d'un article scientifique) \\
	\hline
605
606
	Différence (ou pas) entre les marges & \textbf{oneside} (défaut pour \texttt{article} et \texttt{report}) \\
	intérieures et extérieures& et \textbf{twoside} (défaut pour \texttt{book})\\
Aurelien Pascal's avatar
Aurelien Pascal committed
607
	\hline
608
609
	Page réservée pour le titre & \textbf{notitlepage} (défaut pour \texttt{article}) \\
	& et \textbf{titlepage} (défaut pour \texttt{book} et \texttt{report})\\
Aurelien Pascal's avatar
Aurelien Pascal committed
610
611
612
613
	\hline
\end{tabular}
\renewcommand{\arraystretch}{1.0}
\end{center}
614
615

Pour une personnalisation plus importante (choisir une autre taille de police ou modifier les marges par exemple), cela nécessitera l'utilisation d'une extension.
Aurelien Pascal's avatar
Aurelien Pascal committed
616

Aurelien Pascal's avatar
Aurelien Pascal committed
617
\subsection{Le chargement d'extensions}
Aurelien Pascal's avatar
Aurelien Pascal committed
618

619
En \LaTeX{}, on désigne par \og extension \fg{} (de l'anglais \emph{package}) les fichiers qui ajoutent des fonctionnalités non disponibles nativement.\\
620
Toute la force de \LaTeX{} réside dans sa communauté très active et les innombrables extensions qui en découlent. De nombreuses commandes que nous présentons dans ce document requièrent le chargement de l'extension appropriée, signalée à chaque fois que nécessaire.
Aurelien Pascal's avatar
Aurelien Pascal committed
621

622
Une extension se charge avec la commande \verb=\usepackage[<options>]{<extension>}=. Il faut les charger dans le préambule -- il est d'usage de le faire juste après le \verb|\documentclass|, pour rédiger le reste du préambule avec la bonne version des différentes commandes. Là où certaines extensions créent de nouvelles commandes, d'autres en redéfinissent des existantes, ce qui peut mener à des conflits ; ainsi, l'ordre d'appel est important (le compilateur va vous demander de charger \texttt{natbib} avant \texttt{babel} par exemple, ou on chargera \texttt{href} en dernier car il impacte beaucoup de commandes déjà existantes).
Aurelien Pascal's avatar
Aurelien Pascal committed
623

624
Dans la suite, nous allons voir quelques extensions indispensables à la rédaction de tout document en français.
Aurelien Pascal's avatar
Aurelien Pascal committed
625

626
627
628
629
630
631
\subsubsection{L'encodage d'entrée} 
Pour saisir la notion d'encodage d'entrée, il est important de comprendre que le fichier source (le fichier \texttt{.tex}) est d'abord sauvegardé et encodé sur votre disque dur avant d'être envoyé au compilateur\footnote{Et ce peu importe que vous utilisiez un éditeur de texte non formaté et le compilateur séparément ou que vous utilisiez un \emph{IDE}.}.\\
L'encodage réel du fichier \texttt{.tex}, c'est la façon dont les caractères employés dans votre fichier source seront écrits sous forme d'octets sur votre disque dur ; c'est donc une caractéristique de votre éditeur de texte ! Vous devriez pouvoir le sélectionner dans ses options.\\
L'encodage d'entrée du compilateur, c'est la façon dont ce dernier va lire les octets présents dans votre fichier source pour les interpréter sous forme de commandes. Vous l'aurez donc deviné : il faut que cet encodage d'entrée corresponde à l'encodage réel du fichier.\\
Pour charger un encodage d'entrée il faut utiliser la commande \verb=\usepackage[<encodage>]{inputenc}=.\\
La langue française, avec ses accents, peut être encodée facilement en \texttt{latin1} ou en \texttt{utf8}. Ce dernier est néanmoins à préférer, car si le \texttt{latin1} est un bon encodage pour les langues occidentales, l'\texttt{utf8} a une portée internationale\footnote{C'est l'encodage le plus utilisé sur le Web.}.
Aurelien Pascal's avatar
Aurelien Pascal committed
632

Aurelien Pascal's avatar
Aurelien Pascal committed
633
634
\subsubsection{Encodage de sortie} 

635
Cet encodage correspond à celui qui va être utilisé pour écrire le document compilé (un \texttt{.pdf} le plus souvent). Pour écrire en langue française (toujours cette histoire d'accents) il est nécessaire de charger l'encodage \texttt{T1} avec \verb=\usepackage[T1]{fontenc}=.
Aurelien Pascal's avatar
Aurelien Pascal committed
636
637

\subsubsection{La typographie française} 
Aurelien Pascal's avatar
Aurelien Pascal committed
638

639
640
641
Il existe une extension linguistique appelée \texttt{babel} qui formate le texte de sorte à respecter les règles typographiques de la langue dans laquelle vous écrivez (par exemple, l'ajout d'espaces fines insécables avant certains éléments de ponctuation en français). Dans un document en langue française, il faut la charger avec l'option \texttt{french} :
\begin{center}\verb=\usepackage[french]{babel}=\footnote{L'option \texttt{francais} est obsolète depuis la version 3.6 de \texttt{babel}, \texttt{frenchb} depuis la version 3.9.}.
\end{center}
Aurelien Pascal's avatar
Aurelien Pascal committed
642

643
%\startenteo En fait, c'est inexact. Depuis la version 3.9 de babel et la version 3.2c de babel-french, l'option \texttt{frenchb} est elle aussi obsolète, on devrait utiliser \texttt{french} à la place. Source : \url{http://daniel.flipo.free.fr/frenchb/frenchb-doc.pdf}.\closeenteo
Enteocline's avatar
Enteocline committed
644

Aurelien Pascal's avatar
Aurelien Pascal committed
645
\subsection{Les métadonnées}
646

647
648
649
Le mot \textit{métadonnées} désigne \og les données concernant les données \fg{}. À propos d'un article ou un livre, il s'agit donc de son titre, son auteur et sa date de publication.\\
Dans un document \LaTeX{}, ces données doivent être précisées dans le préambule à l'aide des commandes \verb=title{}=, \verb=author{}= et \verb=\date{}=\footnote{À savoir que si vous n'utilisez pas \verb=\date=, le compilateur prendra par défaut la date de la compilation. Si vous ne souhaitez pas préciser la date sur le document final il faut appeler la commande \verb=\date{}= sans option}.\\
Pour écrire titre, auteur et date dans le corps du document, il suffit alors d'utiliser la commande \verb=\maketitle=
650

Aurelien Pascal's avatar
Aurelien Pascal committed
651
\subsection{Pour résumer : un modèle de préambule pour un article en français}
652
\begin{lstlisting}
653
% Première chose à faire : définir le type de document !
654
655
\documentclass[a4paper]{article}

656
% On charge ensuite les extensions pour la langue française
657
658
659
660
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}

661
% Puis on définit les metadonnées
662
\title{Mon premier document}
663
\author{Un débutant en \LaTeX{}}
664
665
\date{}

666
% Et on arrive enfin au corps du document
667
668
669
670
671
672
673
674
\begin{document}

\maketitle

Hello world !

\end{document}
\end{lstlisting}
Aurelien Pascal's avatar
Aurelien Pascal committed
675

Aurelien Pascal's avatar
Aurelien Pascal committed
676
677
\section{L'environnement document et sa structure}
\label{sec:document}
Aurelien Pascal's avatar
Aurelien Pascal committed
678

679
Comme \LaTeX{} réalise la mise en page de vos documents en vous permettant de vous concentrer sur leur contenu, il est nécessaire de lui indiquer comment structurer le texte en le découpant en plusieurs parties. 
680
681

\subsection{Les niveaux de titres}
682
\label{subsec:niveautitres}
683

684
Il existe 7 niveaux de titres utilisables pour structurer votre document. Le tableau suivant résume leur utilité et la commande associée.
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706

\begin{tabular}{|c|c|c|c|}
	\hline
	Niveau & Nom & Commande \\
	\hline
	-1 & Partie & \verb=\part{titre de la partie}= \\
	\hline
	0 & Chapitre (uniquement pour \textit{book} et \textit{report}) & \verb=\chapter{titre du chapitre}= \\
	\hline
	1 & Section & \verb=\section{nom de la section}=  \\
	\hline
	2 & Sous-section & \verb=\subsection{nom de la sous-section}= \\
	\hline
	3 & Sous-sous-section & \verb=\subsubsection{nom de la sous-sous-section}= \\
	\hline
	4 & Paragraphe & \verb=\paragraph{Titre du paragraphe}= \\
	\hline
	5 & Sous-paragraphe & \verb=\paragraph{Titre du sous-paragraphe}= \\
	\hline
\end{tabular}

Regardez la table des matières de ce document avec ce tableau sous les yeux, vous devriez facilement comprendre le découpage du document.
707

Aurelien Pascal's avatar
Aurelien Pascal committed
708
Voici un exemple simple :
709
%\begin{LTXexample} %% ok seulement si les compteurs sont réinitialisés
Aurelien Pascal's avatar
Aurelien Pascal committed
710
711
712
713
714
715
716
717
718
719
720
721
722
723
\begin{lstlisting}
\begin{document}
\part{Ma premiere partie}
	\section{Ma premiere section}
		\subsection{Une sous-section}
		...
		\subsection{Une autre}
		...
	\section{Et on change de section}
	...
\part{Ma seconde partie}
...
\end{document}
\end{lstlisting}
724
%\end{LTXexample}
Aurelien Pascal's avatar
Aurelien Pascal committed
725

Aurelien Pascal's avatar
Aurelien Pascal committed
726
\subsection{La numérotation et les compteurs}
Aurelien Pascal's avatar
Aurelien Pascal committed
727

Aurelien Pascal's avatar
Aurelien Pascal committed
728
729
\label{subsec:numcompteur}

730
Tous ces éléments sauf les paragraphes sont numérotés ; pour ne pas numéroter votre découpage, il suffit d'utiliser les commandes précédentes avec une astérisque (\verb=*=), comme par exemple \verb=\section*{nom de la section}=.
731

Alexandre Morlet's avatar
Alexandre Morlet committed
732
\LaTeX{} possède des compteurs internes qui pointent sur certaines structures (sections, environnements, \ldots) et s'incrémentent à chaque nouvel élément de ce type. Ils portent en général le nom de ce qu'ils concernent et on peut accéder à leur valeur avec par exemple \verb=\arabic= si on veut leur valeur en chiffre arabe, \verb=\Roman= (resp. \verb|\roman|) si on la veut en chiffres romains (resp. chiffres romains minuscules) et \verb=\Alph= (resp. \verb|\alph|) si on la veut en lettres (resp. en lettres minuscules). Par exemple, pour la section courante :
Aurelien Pascal's avatar
Aurelien Pascal committed
733
\begin{LTXexample}
Enteocline's avatar
Enteocline committed
734
735
\arabic{section}, \Roman{section}, \roman{section},
\Alph{section}, \alph{section}
Aurelien Pascal's avatar
Aurelien Pascal committed
736
\end{LTXexample}
Aurelien Pascal's avatar
Aurelien Pascal committed
737

738
Ces compteurs sont surtout utilisés pour générer des titres, nous y reviendrons plus tard (voir section \ref{subsec:titresections}). Sachez seulement qu'ils existent et travaillent en arrière plan.
739

740
La convention veut que les environnements et commandes appelées avec une astérisque n'incrémentent pas le compteur associé et n'affichent pas de numéro. Ce n'est cependant pas une règle générale et certains environnements comme les figures nécessitent une extension pour avoir accès à cette fonctionnalité.
741
742
743

\subsection{La table des matières}

744
Une fois votre document structuré,~\LaTeX{} est capable de générer automatiquement une table des matières, à l'aide de la commande \verb=\tableofcontents=.
745

746
747
748
Il est possible de modifier le nom de la table des matières en utilisant la commande
\begin{center}\verb=\renewcommand{\contentsname}{Mon nouveau titre}=\end{center}
Mais attention selon les extensions que vous utilisez il faudra placer cette commande dans le préambule ou juste après le \verb=\begin{document}=, essayez les deux solutions pour trouver celle qui fonctionnera !
749

750
751
752
Vous pouvez également modifier la profondeur de la table des matières (i.e. le niveau maximum des titres indiqués, référez-vous pour ceci au tableau de la sous-section \ref{subsec:niveautitres}) en plaçant la commande suivante dans le préambule :
\begin{center}\verb=\setcounter{tocdepth}{nouvelle profondeur}=\footnote{Les commandes modifiant la table des matières utilisent souvent l'acronyme \texttt{toc} de \textit{Table Of Contents}.}\footnote{Vous l'aurez surement deviné : \texttt{tocdepth} est un compteur, mais celui-ci ne s'incrémente en général pas.}\end{center}
où "nouvelle profondeur" est un entier entre 0 et 5. Dans ce document nous avons utilisé une profondeur de \arabic{tocdepth}.
753

Alexandre Morlet's avatar
Alexandre Morlet committed
754
\subsection{Le résumé ou \textit{abstract}}
755

756
Les articles scientifiques commencent en général par un résumé ou \textit{abstract}. L'environnement \texttt{abstract} est disponible dans les classes \textit{article} et \textit{report} :
Aurelien Pascal's avatar
Aurelien Pascal committed
757
758
759
760
761
762
763
764
\begin{LTXexample}
	\begin{abstract}
	Votre resume...

	...
	\end{abstract}
\end{LTXexample}

Alexandre Morlet's avatar
Alexandre Morlet committed
765
766
767
Le titre \og Résumé \fg{} est dû à l'utilisation de \texttt{babel} avec l'option \texttt{french} ; \textit{Abstract} est sinon affiché. Ce titre peut être modifié à l'aide de la commande :
\begin{center}\verb|\renewcommand{\abstractname}{Titre}|.\end{center}

Aurelien Pascal's avatar
Aurelien Pascal committed
768
\subsection{Les annexes}
769

770
\LaTeX{} possède nativement des fonctions pour gérer les annexes : il suffit d'utiliser la commande \verb=\appendix= (voir ci-dessous). Toutes les \verb=\section{}= qui suivront seront considérées comme des annexes, leur numérotation se faisant notamment par des lettres majuscules.
Aurelien Pascal's avatar
Aurelien Pascal committed
771
772
773
774
775
776
777
778
779
780
781
782
783
\begin{lstlisting}
...
\section{Ma derniere section}
...

\appendix
\section{Ma premiere annexe}
...
\section{Ma seconde annexe}
...
\end{lstlisting}


Alexandre Morlet's avatar
Alexandre Morlet committed
784
Cette façon de faire est très simple mais offre peu de possibilités de personnalisation\footnote{Ce n'est pas tout à fait vrai, avec~\LaTeX{} vous pouvez presque toujours vous en sortir en manipulant les paramètres des macros internes. Mais il est souvent bien plus facile (et moins risqué) d'utiliser une extension, elles ont été écrites pour ça.}. Ci-dessous se trouvent donc quelques fonctionnalités de l'extension \verb=appendix=.
Aurelien Pascal's avatar
Aurelien Pascal committed
785

786
En chargeant l'extension, il faut préciser les fonctionnalités désirées en option. Les possibilités utiles\footnote{C'est totalement subjectif, l'extension a bien d'autres options qui pourraient vous intéresser -- référez-vous à sa documentation pour en savoir plus.} sont :
Aurelien Pascal's avatar
Aurelien Pascal committed
787
\begin{itemize}
788
789
790
791
	\item \texttt{title} : ajoute \emph{Appendix} aux titres d'annexes (\og A Mon titre d'annexe \fg{} devient \og Appendix A Mon titre d'annexe \fg{}) ;
	\item \texttt{titletoc} : idem que \texttt{title}, mais dans la table des matières ;
	\item \texttt{page} : ajoute le titre \emph{Appendices} avant les annexes (là où se trouverait le \verb|\appendix|), dans le document ;
	\item \texttt{toc} : ajoute le titre \emph{Appendices} avant les annexes, dans la table des matières.
Aurelien Pascal's avatar
Aurelien Pascal committed
792
793
\end{itemize}
\medbreak
794
795
Voici donc la commande a écrire pour charger toutes ces fonctionnalités :
\begin{center}\verb=\usepackage[title,titletoc,page,toc]{appendix}=\end{center}
Alexandre Morlet's avatar
Alexandre Morlet committed
796
On peut ensuite changer le mot \emph{appendix} en \og annexes \fg{} si l'on écrit un document en français :
797
798
\begin{center}\verb=\renewcommand{\appendixtocname}{Annexes}=\\
\verb=\renewcommand{\appendixpagename}{Annexes}=\end{center}
Aurelien Pascal's avatar
Aurelien Pascal committed
799

800
Enfin, les annexes devront être comprises dans l'environnement \verb=appendices= :
Aurelien Pascal's avatar
Aurelien Pascal committed
801
802
803
804
805
806
807
808
809
810
\begin{lstlisting}
\begin{appendices}
	\section{Ma premiere annexe}
	...
	\section{Ma seconde annexe}
	...
\end{appendices}
\end{lstlisting}


811

Aurelien Pascal's avatar
Aurelien Pascal committed
812
\section{Formater le texte}
813

Alexandre Morlet's avatar
Alexandre Morlet committed
814
Maintenant que vous savez écrire un préambule et structurer un document, il est temps de passer à un peu de pratique ! Dans cette section nous verrons comment écrire et formater un texte.
Aurelien Pascal's avatar
Aurelien Pascal committed
815

Alexandre Morlet's avatar
Alexandre Morlet committed
816
\subsection{L'art de sauter des lignes ou comment \LaTeX{} \textit{parse} votre texte}
Aurelien Pascal's avatar
Aurelien Pascal committed
817

Alexandre Morlet's avatar
Alexandre Morlet committed
818
819
Certains ont déjà dû remarquer (que ce soit dans nos exemples ou avec leurs propres essais) quelque chose de très particulier dans la façon dont~\LaTeX{} gère les sauts de ligne.\\
Dans les sections précédentes, nous avons un peu triché et passé ce phénomène sous silence, afin d'éviter d'avoir à aborder le sujet trop tôt. Mais il est grand temps de vous dévoiler la vérité !
Aurelien Pascal's avatar
Aurelien Pascal committed
820

Alexandre Morlet's avatar
Alexandre Morlet committed
821
822
823
Lorsque~\LaTeX{} \textit{parse}\footnote{De l'anglais \textit{to parse} = analyser. Ce mot est souvent utilisé pour décrire l'action d'un programme qui lit un texte pour en interpréter des données et des commandes.} un texte, il ne considère pas les retours à la ligne que vous pouvez avoir placés ici et là tel qu'on pourrait s'y attendre.\\
%\startenteo Ce n'est pas tout à fait vrai : on remarquera que \LaTeX{} place une espace aux emplacements des retours à la ligne, et que cette espace disparaît si la ligne est terminée par un \verb|%|.\closeenteo\\
Il s'avère que le compilateur traite le document comme une seule grande ligne. Donc \textit{qu'est ce que~\LaTeX{} interprète comme un retour à la ligne ?}
Aurelien Pascal's avatar
Aurelien Pascal committed
824

Alexandre Morlet's avatar
Alexandre Morlet committed
825
Il existe deux situations (équivalentes par défaut) que \LaTeX{} interprète comme étant un retour à la ligne :
Aurelien Pascal's avatar
Aurelien Pascal committed
826
\begin{itemize}
Alexandre Morlet's avatar
Alexandre Morlet committed
827
828
	\item Une instruction \textit{line break}, parmi au choix \verb=\newline= ou \verb=\\= ;
	\item Une ou plusieurs ligne(s) vide(s) (peu importe leur nombre, ce ne sera qu'un seul retour à la ligne).
Aurelien Pascal's avatar
Aurelien Pascal committed
829
830
\end{itemize}
\medbreak
Alexandre Morlet's avatar
Alexandre Morlet committed
831
Mais \textbf{attention} ! Évitez d'utiliser deux de ces méthodes à la suite, ceci déclenchera un \textit{underfull hbox warning} dans la compilation. Pour augmenter l'espace entre les paragraphes référez vous plutôt au \ref{subsec:espace}. Évitez également de placer un \verb|\newline| ou un \verb|\\| isolé sur une ligne : ceci déclenchera une erreur \textit{there's no line here to end}\footnote{La commande \verb|\null| ou l'espace insécable (\verb|~|) sont deux façons de créer une nouvelle ligne invisible.}.
Aurelien Pascal's avatar
Aurelien Pascal committed
832
833
834
835
836
837

L'exemple suivant résume ces méthodes :

\parskip=0pt
\begin{LTXexample}
Voici un premier texte
Alexandre Morlet's avatar
Alexandre Morlet committed
838
sans retour à la ligne
Aurelien Pascal's avatar
Aurelien Pascal committed
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
\vskip0.3cm
Voici un texte\\ qui contient un \textit{line break}
\vskip0.3cm
Voici un texte avec

une ligne vide
\end{LTXexample}
\parskip=6pt

Notez bien qu'il n'y a alors aucun espace entre les lignes. Ici nous avons introduit un espace entre les différents exemples avec \verb=\vskip=.


\subsection{Gestion de l'espace}
\label{subsec:espace}

Aurelien Pascal's avatar
Aurelien Pascal committed
854
\subsubsection{Gérer l'espace entre les paragraphes}
Aurelien Pascal's avatar
Aurelien Pascal committed
855

Alexandre Morlet's avatar
Alexandre Morlet committed
856
Pour introduire un espace vertical entre les paragraphes, on peut utiliser la commande \verb=\vskip=, comme dans l'exemple précédent, ou bien \verb=\vspace{<longueur>}=. Ceux deux commandes font quasiment la même chose, la seule différence est que \verb=\vspace= insère l'espace après la ligne courante tandis que \verb=\vskip= l'insère immédiatement.
Aurelien Pascal's avatar
Aurelien Pascal committed
857
858
859

Il peut néanmoins être très lourd d'insérer des \verb=\vskip= après chaque paragraphe, ainsi l'extension \verb=parskip= vous permet d'automatiser le processus : lorsque vous chargez cette extension avec \verb=\usepackage{parskip}=, le comportement des retours à la ligne (voir partie précédente) est changé :
\begin{itemize}
Alexandre Morlet's avatar
Alexandre Morlet committed
860
861
	\item les instructions \textit{line break} (\verb=\\= et \verb|\newline|) provoquent un simple retour à la ligne ;
	\item les lignes vides provoquent un changement de paragraphe, avec un espace entre les deux paragraphes de taille personnalisable en changeant la valeur \verb|\parskip=<longueur>|.
Aurelien Pascal's avatar
Aurelien Pascal committed
862
863
\end{itemize}

Alexandre Morlet's avatar
Alexandre Morlet committed
864
Attention, \verb=\parskip= n'est pas une commande à arguments comme on a pu en voir jusqu'à présent mais se comporte bien comme une \textit{variable}, dont la valeur peut être changée par une instruction du type \verb%\parskip=1.5cm%
Aurelien Pascal's avatar
Aurelien Pascal committed
865
866

\subsubsection{Passer à la page suivante}
867

Alexandre Morlet's avatar
Alexandre Morlet committed
868
Les sauts de page sont normalement gérés automatiquement par \LaTeX{}, mais vous pouvez avoir envie d'introduire arbitrairement un saut de page ; pour se faire, il y a trois solutions :
Aurelien Pascal's avatar
Aurelien Pascal committed
869
\begin{itemize}
Alexandre Morlet's avatar
Alexandre Morlet committed
870
871
872
	\item \verb=\newpage= commence une nouvelle page en complétant la page actuelle avec du blanc ;
	\item \verb=\clearpage= fait la même chose que \verb=\newpage= mais en profite pour placer tous les flottants (voir section \ref{sec:float}) qui ne seraient pas encore apparus ;
	\item \verb=\pagebreak= commence une nouvelle page en jouant sur les paramètres de placement et d'espacement des paragraphes de la page actuelle afin de remplir l'espace vide.
Aurelien Pascal's avatar
Aurelien Pascal committed
873
874
\end{itemize}

Aurelien Pascal's avatar
Aurelien Pascal committed
875
\subsection{Les tailles de polices}
876

Enteocline's avatar
Enteocline committed
877
\LaTeX{} prévoit une série de dix commandes pour modifier la taille du texte. Ces commandes sont à portée infinie, mais il est alternativement possible de les utiliser comme des environnements. Par exemple, pour avoir un texte en petit, on pourra écrire \verb|\small| au sein d'un groupe ou \verb|\begin{small} ... \end{small}|. Le tableau ci-dessous résume les commandes disponibles.
Enteocline's avatar
Enteocline committed
878
879
880
881
882
883

\begin{center}
\begin{tabular}{|c|c||c|c|}
   \hline
   Commande & Taille associée & Commande & Taille associée \\
   \hline
Enteocline's avatar
Enteocline committed
884
   \hline
Enteocline's avatar
Enteocline committed
885
886
887
888
889
890
891
892
893
894
895
896
897
   \verb|\tiny| & Minuscule & \verb|\large| & Grand \\
   \hline
   \verb|\scriptsize| & Très petit & \verb|\Large| & Plus grand \\
   \hline
   \verb|\footnotesize| & Assez petit & \verb|\LARGE| & Très grand \\
   \hline
   \verb|\small| & Petit & \verb|\huge| & Énorme \\
   \hline
   \verb|\normalsize| & Normal & \verb|\Huge| & Gigantesque \\
   \hline
\end{tabular}
\end{center}

Enteocline's avatar
Enteocline committed
898
899
900
901
902
903
904
905
906
907
L'exemple suivant illustre l'application de ces différentes tailles de police.

\begin{LTXexample}
{\tiny minuscule} {\scriptsize très petit}
{\footnotesize assez petit} {\small petit}
{\normalsize normal}\\ {\large grand}
{\Large plus grand} {\LARGE très grand}\\
{\huge \'enorme} {\Huge gigantesque}
\end{LTXexample}

908
\subsection{Le changements de polices : fontes, formes et graisses}
909
\label{subsec:fontes}
910
\subsubsection{Les packs de police}
Aurelien Pascal's avatar
Aurelien Pascal committed
911
912
913

Rappelons l'idée qui est la base de l'invention de \LaTeX{} : permettre une mise en page cohérente et rigoureuse des publications scientifiques, en permettant aux chercheurs de se concentrer sur le contenu et de laisser le compilateur se charger de la mise en page.

Alexandre Morlet's avatar
Alexandre Morlet committed
914
Pour permettre de conserver la cohérence de la typographie, l'idée a été d'utiliser non pas des polices indépendantes mais des ensembles, qui sont composés de trois familles (ou \textit{fontes}) avec chacune différentes \textit{formes} et \textit{graisses}\footnote{L'ensemble fonte-taille-forme-graisse est une police d'écriture}.
915

Alexandre Morlet's avatar
Alexandre Morlet committed
916
917
Pour changer de jeu de police, il est nécessaire d'en charger un nouveau avec \verb=\usepackage{<jeu>}=. Le jeu utilisé par défaut par \LaTeX{} est Computer Modern, et ce document utilise Latin Modern\footnote{Ce dernier se veut être une \og amélioration typographique \fg{} de Computer Modern, et il est probable qu'il devienne le nouveau jeu par défaut dans un futur proche. Il est conseillé si vous compilez un document PDF.}, qui se charge avec \verb%\usepackage{lmodern}%.\\
Si vous désirez installer d'autres polices, vous pouvez vous intéresser à \texttt{Metafont}, qui est un langage de description des polices créé pour \TeX{} par Knuth.
918
919
920

\subsubsection{Les fontes}

Alexandre Morlet's avatar
Alexandre Morlet committed
921
Dans chaque jeu de police, il y a trois fontes\footnote{En réalité plus de trois car il y a les fontes spécifiques à l'environnement mathématique.}, qui sont sont toujours classées selon ces trois familles :
Aurelien Pascal's avatar
Aurelien Pascal committed
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
\begin{itemize}
	\item le texte avec empattements ou \og romain \fg{} (la police par défaut)
	\item \textsf{le texte sans empattements ou \og sans sérif \fg{}}
	\item \texttt{le texte type machine à écrire ou \og à chasse fixe \fg{}}
\end{itemize}

Pour passer d'une famille à une autre on peut utiliser les commandes suivantes : 
\begin{center}
\begin{tabular}{|c|c|c|}
   \hline
   Commande & Commande équivalente & Effet \\
   \hline 
   \verb|\textnormal{...}| & \verb|{\normalfont ...}| & Police par défaut \\
   \hline
   \verb|\textrm{...}| & \verb|{\rmfamily ...}| & \textrm{Romain}  \\
   \hline
   \verb|\textsf{...}| & \verb|{\sffamily ...}| & \textsf{Sans sérif}\\
   \hline
   \verb|\texttt{...}| & \verb|{\ttfamily ...}| & \texttt{Chasse fixe} \\
   \hline
\end{tabular}
\end{center}

Alexandre Morlet's avatar
Alexandre Morlet committed
945
946
947
948
La police par défaut est la police romaine, mais on peut la changer avec :
\begin{center}
\verb%\renewcommand{\familydefault}{\sfdefault}%\\ou bien\\\verb%\renewcommand{\familydefault}{\ttdefault}%
\end{center}
Aurelien Pascal's avatar
Aurelien Pascal committed
949

950
\subsubsection{Les formes et graisses : gras, italique et autres joyeusetés}
Aurelien Pascal's avatar
Aurelien Pascal committed
951

952
Le tableau suivant résume les commandes permettant les changements de formes et graisses :
953
954