summaryrefslogtreecommitdiff
path: root/info/guide-latex-fr/Chapitres/p3-texte.tex
blob: 13cb81a398b31a2ee5a2e85c0b6890e0d4ed8c62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
\chapter{Améliorer son texte et sa mise en forme}

\epigraph{La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.}{Antoine \textsc{de Saint-Exupéry}}

\label{chap-texte-details}\lettrine{S}{i} tu sais désormais écrire des paragraphes, faire une page de garde simple, afficher un sommaire ou utiliser des listes sous \LaTeX{}, il existe encore plein d'autres fonctionnalités sympathiques pour compléter ces éléments. Et je les recense justement dans ce chapitre !

\section{Changer la police d'écriture}

\subsection*{Introduction}

\label{chgt-police}Changer de police constitue un vaste débat sous \LaTeX{}. Tout d'abord, pourquoi vouloir changer ? La police proposée ne convient-elle pas ? Ou est-ce par habitude d'utiliser auparavant une autre police sous Word ? \`A moins que ton école impose une police spécifique pour ton rapport ?

Ensuite, quelle police préfères-tu utiliser ? Avec empattement\footnote{Mode de terminaison d'un caractère : \url{http://fr.wikipedia.org/wiki/Empattement_(typographie)}.}, sans empattement ? Mais surtout, si tu dois écrire des formules mathématiques, la nouvelle police possède-t-elle les caractères nécessaires sous un format équivalent ? Je pense notamment aux symboles courants $\sum$ ou $\int$, sans parler des lettres grecques. \\

Il existe de multiples façons de changer de police sous \LaTeX{} : de manière locale, pour pouvoir juste profiter d'un effet de style ; puis, de manière globale, donc sur tout le document. Et il faut au préalable connaître la police que tu aimerais utiliser.

Naturellement, si tu tiens à conserver la police native de \LaTeX{}, tu sais déjà ce que tu dois renseigner dans le préambule et tu peux lire la suite pour te cultiver, sans forcément devoir l'appliquer.

\subsection*{Empattement et machine à écrire}

Tout comme il est possible de mettre un bout de texte en gras grâce à la commande \verb?\textbf{<texte>}?, tu peux choisir d'enlever l'empattement (\textit{sans serif}) d'un bout de texte grâce à la commande \verb?\textsf{<texte>}?. Tu peux aussi choisir de le mettre en valeur différemment grâce à la mise en forme \og machine à écrire \fg{} (\textit{typewriter}) avec la commande \verb?\texttt{<texte>}?. \\

Si tu veux appliquer un tel changement sur plusieurs paragraphes, tout comme \verb?\textbf{<texte>}? a pour équivalent \verb?{\bfseries{}<texte>}?, nous avons donc à disposition le \verb?\sffamily? et le \verb?\ttfamily?. 

Là encore, il faut délimiter les paragraphes concernés avec des accolades \verb?{? et \verb?}? ou utiliser de telles commandes à l'intérieur d'un environnement, ou encore utiliser directement un environnement : \verb?\begin{sffamily}? fonctionne parfaitement ! 

Et si jamais tu veux annuler ces modifications (localement ou sur un paragraphe) et donc retrouver la traditionnelle police avec empattement, les commandes \verb?\textrm{<texte>}? et \verb?{\rmfamily{}<texte>}? sont disponibles. \\

Enfin, si tu veux faire de telles modifications sur tout le document, tu peux aussi renseigner une des commandes suivante dans le préambule :

\begin{code}{}
% Avec empattement (défaut)
\renewcommand{\familydefault}{\rmdefault}

% Sans empattement
\renewcommand{\familydefault}{\sfdefault}

% Machine à écrire
\renewcommand{\familydefault}{\ttdefault}
\end{code}

\begin{attention}{Ordre de priorité des commandes}
Les commandes globales sont exécutées en premier lors de la compilation. Elles sont donc supplantées par l'utilisation des environnements, eux-mêmes écrasés par les commandes locales comme \verb?\texsf{<texte>}?.

Il faut donc bien réfléchir au résultat souhaité, ainsi qu'à l'ordre d'utilisation des commandes précédemment décrites pour y parvenir.
\end{attention}

Voyons maintenant un exemple pour comprendre le fonctionnement de ces nouvelles commandes :

\begin{codedisplay}{L'empattement et la machine à écrire}
Texte \textsf{sans empattement} ou au format \texttt{machine à écrire}. \\[\baselineskip]

{\sffamily{}C'est amusant à faire surtout avec plusieurs paragraphes. \\

Il faut bien tout encadrer avec des \textrm{accolades !}} \\[\baselineskip]

\begin{bfseries}
\ttfamily{}Sinon, je peux aussi la jouer retro sur plusieurs paragraphes, à l'intérieur d'un environnement !
\end{bfseries}
\end{codedisplay}

Bien, maintenant que nous avons vu quelques spécificités quant à l'empattement du texte, passons au changement de police.

\subsection*{Les packages de police}

Depuis le début de ce guide, je préconise fortement d'utiliser le package \verb?lmodern? et de s'y tenir. Il existe toutefois d'autre packages qui peuvent le substituer et qui permettent donc d'utiliser de nouvelles polices sous \LaTeX{} : \verb?bookman?, \verb?chancery?, \verb?charter?, \verb?ebgaramond? \& \verb?ebgaramond-maths? (police Garamond), \verb?fourier?, \verb?mathpazo?, \verb?mathptmx? (police Times), \verb?newcent?, \verb?tgbonum?, etc. (liste non exhaustive).

Les packages \verb?times? et \verb?palatino? sont \textbf{obsolètes} et sont donc déconseillés à l'usage. D'autres peuvent être utilisés, comme \verb?helvet? ou \verb?courier?, mais sans résultat pour ma part (aucun changement de police). \\

L'utilisation d'un autre package de police que \verb?lmodern? est donc encore un sujet délicat, sur lequel il faut être méfiant et faire des essais au préalable. Tu peux parfois rencontrer des bizarreries, des erreurs insoupçonnées. 

Mais si tu veux faire des essais, je recommande particulièrement le site suivant : \url{http://www.tug.dk/FontCatalogue/}. En quelque sorte, il s'agit d'une bibliothèque qui recense les polices accessibles sous \LaTeX{}. Attention à bien lire l'aide et les indications affichées : certaines polices ne fonctionnent qu'avec le moteur de compilation \XeLaTeX{} ! \\

Enfin, il est possible d'appeler tous ces packages localement\footnote{L'appel peut se faire aussi globalement si la commande est appelée en tout début de document.} grâce à la commande suivante :

\begin{code}{}
\fontfamily{<code-police>}\selectfont
\end{code}

Quant au choix de \verb?<code-police>?, tu peux par exemple renseigner \verb?ptm?, ce qui est équivalent à utiliser le package \verb?mathptmx? (police Times). 

Une liste détaillée (mais non exhaustive) est disponible en annexes, page \pageref{annexes-code-police}. Et si tu veux plus d'explications, tu peux te rendre sur le site : \url{https://fr.overleaf.com/learn/latex/Font_typefaces}.

\begin{attention}{La petite subtilité}
Certaines polices ne font pas la pluie et le beau temps. Par exemple, tu peux être amené à cumuler les commandes, comme mettre du texte en gras et en italique. Jusque là, tout va bien, tu peux même le faire de deux façons : \begin{center} \verb?\textit{\textbf{test}}? \quad ou \quad  \verb?\textbf{\textit{test}}? \end{center}

As-tu déjà utilisé les petites majuscules ? C'est très propre et vraiment agréable à lire. Pour rappel, tu peux utiliser \verb?\textsc{Texte}? ou \verb?{\scshape{}Paragraphes}?. Toutefois, essaye maintenant : \begin{center} \verb?\textbf{\textsc{Texte}}? \quad et \quad \verb?\textsc{\textbf{Texte}}? \end{center}

Ben zut alors, aucune petites majuscules avec le package \verb?lmodern?. C'est parce que cette police ne gère pas une telle configuration. Changer de police est une solution possible : le package \verb?mathptmx?(police Times) est compatible, par exemple.

Fort heureusement, c'est un cas d'utilisation extrêmement rare. C'était surtout pour te faire toucher du doigt cette petite subtilité. Dans ce genre de situation, il faut mieux se résigner et faire avec le package \verb?lmodern?, pour limiter les problèmes et les complications.
\end{attention}

\subsection*{Utiliser une police externe à \LaTeX{}}

Il n'y a apparemment qu'un seul moyen de pouvoir utiliser une police d'écriture non disponible nativement (ou via des packages) sous \LaTeX{}. Loin de moi l'idée que la police par défaut me déplaise, bien au contraire.

Toutefois, quand il faut taper un rapport officiel et qu'une police spécifique de Word est imposée -- Calibri ou Cambria par exemple, Times reste disponible avec le package \verb?mathptmx? --, il n'y a pas d'autres solutions. \\

\textcolor{red!70!black}{\textbf{Cette solution fonctionne uniquement grâce à une compilation sous \XeLaTeX{}}} (ou \LuaLaTeX{}). Le résultat est à la hauteur de nos attentes : accents affichés et utilisation de toutes les autres commandes exactement de la même façon que sous \pdfLaTeX{} (mathématiques, images, tableaux\dots{}). 

Elle permet d'utiliser toutes les polices disponibles sur ton ordinateur, y compris des polices téléchargées et ajoutées manuellement par la suite.

Pour tout faire fonctionner correctement, il faut utiliser le préambule  suivant :

\begin{code}{Changer de police}
\documentclass[a4paper, 12pt]{report}

% XeLaTeX / LuaLaTeX
\usepackage{fontspec} % Pour le changement de police
\setmainfont{<nom-police>} % Appel de la police (#17)
% Par exemple, <nom-police> = Arial ou Cambria ou Calibri
\usepackage{polyglossia} % Equivalent de babel
\setdefaultlanguage{french} % Paramétrage français

% Autres packages


\begin{document}

Lorem ipsum dolor

\end{document}
\end{code}

\begin{attention}{\textit{Nota Bene}}
La modification de la police d'écriture n'est pas recommandée dans le cas d'un document qui contient des formules. Les symboles utilisés par \LaTeX{} peuvent ne pas être (ou ne sont généralement pas) définis dans cette nouvelle police.

Normalement, \LaTeX{} générera malgré tout les formules mathématiques avec la police par défaut soit Computer Modern.
\end{attention}

Dans le cas d'une \textcolor{orange}{\textbf{modification locale de la police}} d'écriture, il faut utiliser la commande \verb?\fontspec{<nom-police>}?, ce qui donne l'exemple suivant : 

\begin{code}{Changement local de police}
\documentclass[a4paper, 12pt]{report}

% XeLaTeX / LuaLaTeX
\usepackage{fontspec}
\setmainfont{Arial}
\usepackage{polyglossia}
\setdefaultlanguage{french}


\begin{document}

Lorem ipsum dolor {\fontspec{Cambria}nam dui ligula} nulla malesuada porttitor !

\end{document}
\end{code}

\begin{attention}{Quelques petits changements d'habitude\dots{}}
Il faut enfin savoir qu'utiliser ce nouveau préambule n'est pas sans de légères conséquences sur des commandes usuelles : \verb?\degres{}? et \verb?\og mot \fg{}? sont définies grâce au package \verb?babel?.

Tu peux décider de l'ajouter avant l'appel de \verb?polyglossia?, ce qui permet de conserver \verb?\degres{}?. Sinon, tu peux directement écrire le symbole au clavier (sous \Windows{}, \keys{\shift + $\degres{}~)_{~]}$}). Toutefois, les guillemets français sont mal définis avec ce nouveau package\dots{} \\

La seule solution consiste donc à utiliser les commandes suivantes plus génériques : 

\begin{code}{Guillemets français avec \verb?polyglossia?}
\guillemotleft{} % Guillemet français ouvrant
\guillemotright{} % Guillemet français fermant
\end{code}
\end{attention}

\subsection*{Bilan}

Nous avons donc vu :

\begin{itemize}[label = \ding{213}]
\item comment modifier l'empattement du texte ;

\item comment utiliser un package de police sous \LaTeX{} ;

\item comment utiliser une police externe à \LaTeX{}, en compilant sous \XeLaTeX{} et grâce au package \verb?fontspec?. \\
\end{itemize}

Changer la police peut se révéler amusant pour certaines réalisations personnelles mais il faut passer sous \XeLaTeX{} dans le pire des cas, ce qui peut augmenter le temps de compilation -- qui reste raisonnable malgré tout, je te rassure, tout au plus de l'ordre de quelques dizaines secondes. 

Le format par défaut proposé depuis le début de ce guide convient tout à fait et permet de te démarquer des autres réalisations. Après tout, ne s'agit-il pas d'une marque de fabrique signée \LaTeX{} ?

\section{Changer la taille de police}

Si tu es amené à changer de police, tu peux  aussi faire face à un autre problème : la taille du texte n'est pas automatiquement la même d'une police à une autre. Certes, il existe des commandes génériques comme \verb?\large?, \verb?\Large?, \verb?\LARGE?, \verb?\huge? ou \verb?\Huge? pour augmenter la taille du texte mais il peut arriver que ce soit totalement insuffisant. Heureusement, il y a une commande toute prête dans ce cas : 

\begin{code}{Changer la taille de police}
Lorem ipsum dolor {\fontsize{<taille1>}{<taille2>}\selectfont{}nam dui ligula} nulla malesuada porttitor !
% <taille1> : taille de la police (13mm, 215pt, etc.)
% <taille2> : espacement entre les lignes
\end{code}

\verb?<taille2>? remplace alors (localement) la valeur par défaut de la commande \verb?\baselineskip?. Naturellement, cette commande \verb?\fontsize? s'utilise surtout pour faire un gros titre, délimité par un environnement -- \verb?center? par exemple -- pour ne pas affecter le reste du document. 

Et si tu ne sais pas quelle valeur choisir pour \verb?<taille2>?, je ne réfléchis plus personnellement et prends toujours la moitié de \verb?<taille1>?, arrondie si besoin.

\section{Inclure des fichiers PDF}

\label{fusion-pdf}Tu es pauvre ? Tu ne veux pas payer Adobe et toutes les options inutiles qu'il propose, dont la fusion de fichiers PDF ? Peu importe : \LaTeX{} sait faire du très bon boulot, gratuitement. \\

Pour inclure des fichiers PDF, il faut utiliser le package \verb?pdfpages? et utiliser la commande : 

\begin{code}{Inclure un fichier PDF}
% Compilation sous pdfLaTeX / XeLaTeX / LuaLaTeX
\includepdf[pages = debut-fin]{<nom-PDF>}
\end{code}

La commande insère le document \verb?<nom-PDF>? à l'endroit où la commande est appelée. Le document doit se situer dans le même dossier que le fichier \verb?.tex?. Sinon, il faut préciser le chemin complet du document. Si tu écris \verb?[pages = -]?, le document entier sera inclus. 

Du coup, il ne te reste plus qu'à placer cette commande autant de fois que le nombre de fichiers à fusionner et le résultat \LaTeX{} contiendra donc tes différents fichiers les uns à la suite des autres. Et si jamais tu veux mélanger les pages, tu peux renseigner l'option \verb?pages? de la manière suivante par exemple : \verb?pages = {1,3,2,4,6,5}?.

Tu peux aussi te servir de cette commande pour insérer une page d'un rapport PDF dans ton propre rapport ou un tableau Excel exporté en PDF : c'est des fois plus simples que de tout recopier sous \LaTeX{}.

\begin{attention}{\textit{Nota Bene}}
Le paramètre \verb?<nom-PDF>? ne doit contenir ni espace ni accent. C'est le même principe que pour les images. \\

Pour rappel, la \textbf{compilation} doit se faire \textbf{uniquement} avec \pdfLaTeX{} ou \XeLaTeX{} (ou \LuaLaTeX{}).
\end{attention}

Il existe d'autres options, comme faire une rotation à la page (\verb?landscape?, \verb?angle = <rotation>?), ajuster automatiquement le format (\verb?fitpaper?), etc. Pour les connaître ou si tu en as besoin, je te laisse consulter la documentation du package : \url{https://www.ctan.org/pkg/pdfpages}. \\

Pour présenter un point plus technique, il est possible de réaliser des références sur un tel fichier (renvoi de pages) mais il existe une astuce pour faire en sorte que le renvoi et le numéro de page correspondent.

Pour ce faire, il faut créer un compteur\footnote{Si tu es curieux, tu peux commencer à approcher la notion de compteur ici : \url{http://fr.wikibooks.org/wiki/LaTeX/Programmer_avec_LaTeX\#Compteurs}} dans le préambule de la manière suivante : \verb?\newcounter{pdfpage}?, puis procéder ainsi (utilisation de l'option \verb?pagecommand? de \verb?\includepdf?) :

\begin{code}{Référence d'un fichier PDF inséré}
\documentclass[a4paper, 12pt]{report}

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

\usepackage{pdfpages} % Le package
\newcounter{pdfpage} % Le compteur

\usepackage{hyperref}


\begin{document}

J'ai beaucoup de texte à écrire \dots{}

% Enlever le % ci-après
%\includepdf[pages = -, pagecommand = {\refstepcounter{pdfpage}\label{reference}}]{<nom-PDF>}

% pagecommand : faire un peu ce qu'on veut
% refstepcounter : permet le bon renvoi
% label : création de la référence

Je viens d'intégrer un document très important. Pour le consulter, aller à la page \pageref{reference}.

\end{document}
\end{code}

Si cette solution fonctionne pour un document d'une page, il faut ruser pour l'appliquer sur un document plus long ou pour différents documents :

\begin{code}{Référence de plusieurs fichiers PDF insérés}
\documentclass[a4paper, 12pt]{report}

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

\usepackage{pdfpages} % Le package
\newcounter{pdfpage} % Le compteur

\usepackage{hyperref}


\begin{document}

%\includepdf[pages = -1, pagecommand = {\refstepcounter{pdfpage}\label{ref-debut}}]{<nom-PDF>} % Début document
%\includepdf[pages = 2-12]{<nom-PDF>} % Document
%\includepdf[pages = 13-, pagecommand = {\refstepcounter{pdfpage}\label{ref-fin}}]{<nom-PDF>} % Fin document

Le document inséré est disponible de la page \pageref{ref-debut} à \pageref{ref-fin}.

\end{document}
\end{code}

\begin{attention}{Numérotation des PDF insérés}
Par défaut, la numérotation des pages se poursuit lors de l'inclusion de fichiers PDF avec la commande \verb?\includepdf?. Il faut donc veiller à ce que ces derniers n'en aient pas (pour éviter les incohérences) ou supprimer l'insertion du numéro de page grâce à \verb?pagecommand?.
\end{attention}

Cette dernière idée tombe à pic : étudions désormais la gestion des en-têtes et pieds de page !

\section{En-têtes et pieds de page}

Par défaut, \LaTeX{} propose principalement trois styles pour les en-têtes et pieds de page. Ces derniers peuvent être appelés \textbf{n'importe où dans le document} grâce à la commande \verb?\pagestyle{<style>}? : \\

\begin{itemize}[label = \ding{213}]
\item le style \verb?empty? : aucune en-tête et aucun pied de page ne seront affichés. Pour utiliser ce style, il faut donc utiliser la commande \verb?\pagestyle{empty}? ;
	
\item le style \verb?plain? \textcolor{brown!70!black}{(\textit{style par défaut})} : seul le numéro de page est affiché, au centre du pied de page. Comme c'est le style par défaut, il n'y a aucune commande à indiquer. 

Toutefois, si jamais tu as utilisé un autre style et que tu veux revenir à celui-ci, son appel se fait donc grâce à la commande \verb?\pagestyle{plain}? ;
	
\item le style \verb?headings? : apparemment, les en-têtes et les pieds de page sont définis automatiquement selon la classe de document utilisée. Je ne l'ai encore jamais utilisé jusqu'à présent. \\
\end{itemize}

Bon, il faut reconnaître que nous n'allons pas aller bien loin avec ces maigres possibilités. For heureusement, il existe un package indispensable, spécialisé dans la personnalisation des en-têtes et pieds de page : le package \verb?fancyhdr?.

Ce package permet de définir son propre style pour pouvoir l'appeler encore plus facilement par la suite à l'intérieur de ton document. Tu peux le créer grâce à la commande \verb?\fancypagestyle? et en respectant la syntaxe générale suivante : 

\begin{code}{Création d'un style de page}
% Dans le préambule de ton fichier .tex

\usepackage{fancyhdr}
\fancyhf{} % Tout effacer
\fancypagestyle{<nom-style>}{
	% Définition du style
	<en-tête>
	<pied>
}
\pagestyle{<nom-style>}
\end{code}

Comme tu peux le constater, tu définis le style et tu lui associes un nom, ce qui te permet de l'appeler à ta guise par la suite, surtout si tu veux basculer avec un style natif de \LaTeX{} (\verb?empty? ou \verb?plain? par exemple).

Quant à la définition du style en elle-même, tu peux définir les en-têtes et pieds de page respectivement grâce aux commandes :

\begin{code}{}
\fancyhead[<zone>]{<contenu>} % Perso en-tête
\fancyfoot[<zone>]{<contenu>} % Perso pied
\end{code}

Si \verb?<contenu>? est totalement libre (choix de l'utilisateur), \verb?<zone>? est défini de la manière suivante :

\begin{table}[H]
\centering
\begin{tabular}{ll}
\verb?<zone>? & {Description} \\ \midrule
\verb?L? & champ gauche pour toutes les pages \\
\verb?LE? & champ gauche pour les pages paires \\
\verb?LO? & champ gauche pour les pages impaires \\
\verb?C? & champ central pour toutes les pages \\
\verb?CE? & champ central pour les pages paires \\
\verb?CO? & champ central pour les pages impaires \\
\verb?R? & champ droit pour toutes les pages \\
\verb?RE? & champ droit pour les pages paires \\
\verb?RO? & champ droit pour les pages impaires
\end{tabular}
\end{table}

Par ailleurs, il existe quelques commandes pratiques pour \verb?<contenu>? :

\begin{itemize}[label = \ding{118}]
\item \verb?\thepage? : affiche le numéro de la page courante ;
	
\item \verb?\thesection? : affiche le numéro de la section courante ;
	
\item \verb?\thechapter? avec un document de classe \verb?book? ou \verb?report? : affiche le numéro du chapitre courant ;
	
\item \verb?\leftmark? : avec un document de classe \verb?article?, affiche le nom de la section courante ; avec un document de classe \verb?book? ou \verb?report?, affiche le nom du chapitre courant ;
	
\item \verb?\rightmark? : avec un document de classe \verb?article?, affiche le nom de la sous-section courante ; avec un document de classe \verb?book? ou \verb?report?, affiche le nom de la section courante. \\
\end{itemize}

Enfin, tu peux définir les épaisseurs des traits de séparation grâce aux commandes : 

\begin{code}{}
\renewcommand{\headrulewidth}{épaisseur} % Séparateur en-tête
\renewcommand{\footrulewidth}{épaisseur} % Séparateur pied
\end{code}

Je pense t'avoir bien assommé avec toute cette théorie. Si tu veux connaître la personnalisation que j'utilise pour ce guide, la voici :

% Espace volontaire dans le code (\headrule) ou pas de césure par listing (commande trop longue)
\begin{code}{Configuration personnelle de \verb?fancyhdr?}
\usepackage{fancyhdr, fourier-orns} % En-têtes et pieds de pages
\fancyhf{} % Tout effacer
\fancypagestyle{main}{
	\renewcommand{\headrule}{\hrulefill\raisebox{-2.1pt} {\quad\decofourleft\decotwo\decofourright\quad}\hrulefill}
	\fancyhead[L]{\textsc{\nouppercase{\leftmark}}} % Mettre l'en-tête en small capitals
	\renewcommand{\footrulewidth}{0pt}
	\fancyfoot[C]{\thepage}
}
\end{code}

Pour info, sache que je n'ai rien inventé. J'ai trouvé le code dans la documentation du package \verb?fancyhdr? et je l'ai adapté. Comme quoi, tu peux faire de belles découvertes avec un peu de lecture technique ! Et comme un petit exemple ne fait jamais de mal, voici un autre exemple, illustré cette fois :

\begin{coderesult}{Utilisation concrète de \verb?fancyhdr?}
\documentclass[a4paper, 12pt]{report}

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

\usepackage{lipsum, fancyhdr, pifont}
\fancyhf{} % Tout effacer
% Autre personnalisation
\fancypagestyle{main}{
	\renewcommand{\headrule}{\hspace*{\fill} \ding{118} \quad \ding{118} \quad \ding{118} \hspace*{\fill}}
	\fancyfoot[LO]{\thepage\quad\hrulefill}
}


\begin{document}

\pagestyle{main}
\lipsum[1-3]

\newpage

\pagestyle{plain}
\lipsum[4-6]

\end{document}
\end{coderesult}

\begin{attention}{\LaTeX{} et les pages paires \& impaires}
\og Dis donc, je viens d'essayer ton exemple mais l'affichage sur les pages paires et impaires ne fonctionne pas ! M'aurais-tu menti ??? \fg{} \\

Et oui, cela ne fonctionne pas et je voulais que tu touches du doigt ce problème, au moins une fois, pour pouvoir en être conscient. 

Un document de classe \verb?report? est, par défaut, considéré pour être imprimé uniquement en recto, même si tu peux choisir recto-verso au moment de l'impression (via les options proposées par l'imprimante). \LaTeX{} ne fait donc pas la différence entre les pages paires et impaires. \\

Pour résoudre ce problème, il faut donc dire à \LaTeX{} que ton document est en recto-verso. C'est possible grâce à une \textbf{option} supplémentaire dans le \verb?documentclass? : \verb?twoside?.

Cette option entraîne alors des marges différentes selon les pages paires et impaires. \`A la lecture depuis ton écran, le résultat peut paraître déstabilisant\dots{} et pourtant, si tu y réfléchis 2 minutes 15, c'est parfaitement logique si tu veux faire relier ton rapport !

Toutefois, \emph{si tu tiens à avoir une feuille centrée,} avec des marges identiques à gauche et à droite, le package \verb?geometry? constitue alors la seule solution.
\end{attention}

Bon, que me reste-t-il à présenter ? Ah, je sais : une petite astuce, simple et courte, histoire de ce se reposer un peu.

\section{Centrer verticalement du texte}

\`A l'heure actuelle, la solution la plus simple et fonctionnelle pour centrer verticalement du texte -- comme un résumé par exemple -- repose sur la commande \verb?\vspace*{\fill}? : 

\begin{codedisplay}{Centrage vertical}
\vspace*{\fill}
Paragraphe à centrer

verticalement sur la page
\vspace*{\fill}
\end{codedisplay}

Concrètement, \verb?\fill? est une distance élastique propre à \LaTeX{}. Ici, il s'agit de l'espace blanc restant sur la page, interprété verticalement grâce à la commande \verb?\vspace*? (un \verb?\vspace? forcé, pour faire simple). Et comme la commande complète est utilisée 2 fois, \LaTeX{} centre verticalement le texte.\footnote{Il s'agit d'une explication ``imagée', pour comprendre le fonctionnement général de cette formule. Je pense que les notions en jeu sont plus complexes et je ne me suis pas encore penché sur le sujet.}

Tu peux toutefois avoir un résultat plus personnalisable grâce à la commande \verb?\stretch{i}? à la place de \verb?\fill?, avec \verb?i? un nombre strictement positif.

\begin{coderesult}[comment style = {raster columns = 3, drop lifted shadow}]{Centrage simple \& personnalisé}
\documentclass[a4paper, 12pt]{report}

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


\begin{document}

\vspace*{\fill}
\lipsum[1-2]
\vspace*{\fill}

\newpage

\vspace*{\fill}
\lipsum[3-4]
\vspace*{\stretch{4}}

\end{document}
\end{coderesult}

Techniquement, la commande \verb?\vfill? existe et reste bien plus simple à écrire\dots{} sauf que, pour ma part, elle fonctionne une fois sur deux, voire jamais ! Pourquoi ? Je n'ai pas encore trouvé d'explications satisfaisantes à ce sujet. \\

S'il faut aussi \textcolor{blue!75!green}{centrer le texte horizontalement, l'environnement \verb?center? convient parfaitement.} 

La commande \verb?\hfill? doit plutôt être utilisée pour équilibrer l'espacement entre des blocs, comme des \verb?minipage? ou l'intérieur d'un tableau par exemple.

En cas de problème ou si \verb?hfill? ne fournit pas le résulta escompté, tu peux aussi forcer le centrage horizontal avec les commandes \verb?\hspace*{\fill}? ou \verb?\hspace*{\stretch{i}}?.

\section{Générer une bibliographie}

\label{generer-bibliographie}Comme \LaTeX{} peut vraiment tout faire, en ce qui concerne le traitement de texte, pourquoi se priver et ne pas générer facilement de (magnifiques) bibliographies ? \\

Si je commence à avoir un peu d'expérience avec les bibliographies, je n'en réalise pas tous les jours pour en comprendre toutes les subtilités. Si mes explications te semblent un peu confuses, n'hésite pas à te référer aux sites suivants pour saisir les bases et compléter mes explications :

\begin{itemize}[label = \ding{213}]
\item \url{http://www.tuteurs.ens.fr/logiciels/latex/bibtex.html} ;

\item \url{http://www.xm1math.net/doculatex/bibtex.html}.
\end{itemize}

\subsection*{Création de la base de données bibliographiques}

Sous \LaTeX{}, la première étape est la création à proprement parler de ta bibliographie, sous la forme d'une ``base de données''. Pour cela, ouvrons notre éditeur \LaTeX{} (\Texmaker{}) puis créons un nouveau document. Là, renseignons les lignes suivantes qui nous serviront de test par la suite :

\begin{code}{Une première bibliographie}
@Article{Johnson,
	author = {Edgar G. Johnson and Alfred O. Nier},
	title = {Angular Aberrations in Sector Shaped Lenses},
	journal = {Physical Review},
	year = {1953},
	volume = {91},
	number = {1},
}

@Phdthesis{Zoran,
	author = {Zoran Racic},
	title = {\'Etude et essais du spectromètre à  plasma},
	publisher = {Université Pierre et Marie Curie},
	year = {1996}
}

@Misc{opensource,
	author = {{Open Source Initiative}},
	title = {The Open Source Definition},
	howpublished = {\url{http://opensource.org/osd}},
	note = {accès le 10/10/2017}
}
\end{code}

Ensuite, il faut enregistrer le fichier. Ce doit sûrement être un peu la même recette pour tous les éditeurs de texte en général. Sous \Texmaker{}, il faut procéder ainsi : \begin{enumerate}
\item Barre de menus.

\item \verb?Fichier? puis \verb?Enregistrer sous?.

\item Donner un nom au fichier, comme \verb?biblio_type.bib?. \\
\end{enumerate}

L'extension \verb?.bib? correspond au format employé sous \LaTeX{} pour gérer une base de données bibliographique. C'est très important car, lors de la compilation, \LaTeX{} va chercher un fichier \verb?.bib?, le lire et créer la bibliographie en conséquence.

\begin{conseil}{Le conseil personnel}
Je recommande de conserver le fichier \verb?biblio_type.bib? dans un dossier à part en tant que \textit{template}. Ainsi, tu n'auras pas à le créer à chaque fois mais juste à faire un copier-coller du fichier en question. \\

Ensuite, je ne vais pas m'étendre sur les diverses possibilités de renseigner une bibliographie (article, thèse, livre, site Internet\dots{}). Internet fournit suffisamment d'exemples et \Texmaker{} propose des commandes à trous : dans la barre de menus, choisir \verb?Bibliographie? puis \verb?Bibtex? puis sélectionner le type de document à renseigner pour la bibliographie. \\

Personnellement, je viens d'en apprendre un peu plus sur les bibliographies grâce à des explications développées dans l'ouvrage \textit{\LaTeX{} - How To}, disponible au format numérique ici même : \url{http://www.latex-howto.be/book/download_fr} (chapitre 10 pour les bibliographies). 
\end{conseil}

Si notre base de données bibliographiques est désormais créée, il peut être intéressant de comprendre son fonctionnement et la syntaxe employée dans les fichiers \verb?.bib? : \begin{itemize}[label = \ding{118}]
\item une entrée dans la base de données bibliographique commence \textbf{toujours} par un arobase \verb?@?, suivi du nom du document (parmi ceux disponibles), comme \verb?Article? ou \verb?Phdthesis? dans le cas présent ;

\item le premier élément qui arrange juste après -- hormis les accolades de séparation obligatoires -- est un mot, qui va servir de clef, de référence pour appeler cette entrée bibliographique par la suite.

Comme pour les étiquettes, il est donc \textbf{interdit} de mettre des espaces ou ces accents !

\item ensuite, il faut renseigner les différents champs de ton entrée bibliographique (auteur, éditeur, titre, année, etc.), avec les données de chaque champ entre accolades et une séparation des champs par une virgule.

Certains champs sont obligatoires, d'autres optionnels. Si tu ajoutes une entrée bibliographique par l'intermédiaire de \Texmaker{}\footnote{Pour rappel, dans la barre de menus, choisir \verb?Bibliographie? puis \verb?Bibtex? puis sélectionner le type de document à renseigner pour la bibliographie.}, ces derniers sont facilement repérables : ils commencent par \verb?OPT? ;

\item enfin, s'il y a plusieurs auteurs, il faut bien les séparer par un \verb?and?, et non une virgule ou un \verb?&? (esperluette). 

Et si jamais il y a un prénom ou un nom composé, il faut ``doubler les accolades'' pour bien séparer le prénom du nom ou le formatage final lors de la création te semblera bizarre ! Par exemple : \verb?author = {André {Mouche Baie}}?.
\end{itemize}

\subsection*{Génération de la bibliographie}

Bon, nous avons créé la bibliographie. Il faut maintenant indiquer à \LaTeX{} de la générer et de l'introduire dans le document. Pour ce faire, il faut utiliser les commandes suivantes, \textbf{dans cet ordre et à l'endroit où doit apparaître la bibliographie :} \begin{itemize}[label = \ding{213}]
\item \verb?\bibliographystyle{smfplain}? : pour générer la bibliographie avec des normes françaises. Sans le \verb?smf?, la bibliographie est générée selon des normes américaines.\footnote{Il existe d'autres formats français de bibliographie mais \verb?smfplain? constitue une bonne entrée en matière. SMF est l'acronyme de Société Mathématique de France.}

Par exemple, le \verb?and? dans le fichier \verb?.bib? pour séparer les auteurs reste tel quel avec le format américain \verb?plain?, alors qu'il est remplacé par un \verb?et? avec le format français \verb?smfplain? (entre autres modifications donc) ;

\item \verb?\?\verb?bibliography{<nom_fichier>}? : pour indiquer le fichier \verb?.bib? qui contient notre bibliographie. Ici, \verb?<nom_fichier>? = \verb?biblio_type?. \\
\end{itemize}

Puis vient la compilation. Il faut alors procéder de la manière suivante : \begin{enumerate}
\item Lancer la compilation sous \pdfLaTeX{}, pour la première compilation du document.

\item Lancer \BibTeX{}, pour la génération de la bibliographie dans des fichiers annexes (cf. les options \Texmaker{} pour connaître le raccourci clavier associé).

\item Relancer \pdfLaTeX{} deux fois, pour l'intégration de la bibliographie et la bonne implémentation des références et du sommaire.
\end{enumerate}

\begin{conseil}{Le conseil personnel}
Changer la \og compilation rapide \fg{} de \Texmaker{} avec un choix qui intègre le moteur \BibTeX{} simplifie aussi grandement la vie.
\end{conseil}

Maintenant, si tu as lancé la compilation, tu dois te dire que c'est nul car rien n'apparaît\dots{} et c'est normal ! \LaTeX{} ne va pas générer une bibliographie si tu n'y fais pas référence. 

Te souviens-tu de la clef/étiquette créée lors de la création de ta base de données \verb?.bib? ? C'est ici qu'elle entre en jeu avec la commande \verb?\cite{<clef>}?. Il te suffit donc de placer cette commande à l'endroit où tu souhaites faire une référence à ta bibliographie.

Et voilà, c'est tout. Il ne faut pas en savoir plus pour générer une bibliographie. Tu as donc désormais toutes les cartes en main pour t'y mettre et expérimenter.

\begin{conseil}{Faire fonctionner \verb?hyperref? avec la bibliographie}
Il peut être frustrant que les liens dans la bibliographie ne soient pas coupés, ou qu'un clic sur un élément cité ne renvoie pas à sa ligne dans la bibliographie. \\

Pour ce faire, il faut charger les packages ci-après, \textbf{dans l'ordre suivant} (ou il y aura des conflits entre les packages et des erreurs de compilation) :

\begin{code}{\verb?hyperref? et la bibliographie}
\usepackage[nottoc, notlof, notlot]{tocbibind} % Pour inclure la bibliographie dans le sommaire
\usepackage[hyphens]{url} % Pour couper les urls dans la bibliographie
\usepackage[breaklinks]{hyperref} % Inclure les autres options déjà abordées
\usepackage[hyphenbreaks]{breakurl} % Idem package url
\end{code}
\end{conseil}

Du coup, pour résumer tout ce qui a été vu durant cette partie, ton fichier \verb?.tex? doit ressembler à :

\begin{code}{Bibliographie : code complet}
\documentclass[a4paper, 12pt]{report}

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

\usepackage[nottoc, notlof, notlot]{tocbibind} % Pour inclure la bibliographie dans le sommaire
\usepackage[hyphens]{url} % % Pour des césures correctes dans les URLs, y compris dans la bibliographie
\usepackage[pdfauthor = {{Prénom Nom}}, pdftitle = {{Titre document}}, pdfstartview = Fit, pdfpagelayout = SinglePage, pdfnewwindow = true, bookmarksnumbered = true, breaklinks, colorlinks, linkcolor = red, urlcolor = black, citecolor = cyan, linktoc = all]{hyperref} % Renvois -- Options Adobe/lecteur PDF
\usepackage[hyphenbreaks]{breakurl} % Idem package url


\begin{document}

Mon document se réfère à \cite{Johnson, Zoran} mais des réponses sont aussi disponibles sur Internet \cite{opensource}.
% Possiblité de cumuler les \cite dans une même commande

\bibliographystyle{smfplain}
% Enlever le % ci-après
%\bibliography{biblio_type}

\end{document}
\end{code}

Tous ces éléments te semblent compliqués ? C'est bien normal au début. Là encore, il faut comprendre que tu sépares le fond de la forme : tu crées une base de données bibliographique, totalement désordonnée, puis \LaTeX{} affiche uniquement les éléments auxquels tu fais référence. 

En parallèle, \LaTeX{} gère automatiquement la mise en forme de la bibliographie et classe de lui-même les auteurs par ordre alphabétique ! Pas mal, non ? C'est donc un peu compliqué au début mais c'est extrêmement puissant.

\subsection*{Ajout manuel d'une bibliographie}

Toutefois, si jamais tu n'as que 2-3 références à faire, il existe une manière plus simple de générer une bibliographie. Tu peux la créer toi-même grâce à l'environnement \verb?thebibliography?. 

Il suffit alors de compiler seulement 2 fois avec \pdfLaTeX{} pour bien intégrer les références et c'est tout ! Nul besoin désormais de passer par \BibTeX{}. \\

Je te laisse reprendre le code ci-après et digérer les commentaires qui suivent :

\begin{code}{Ajout manuel d'une bibliographie}
\documentclass[a4paper, 12pt]{report}

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


\begin{document}

La bibliothèque propose trois livres \cite{latexpratique, texbook, latexcompanion} : les livres \cite{latexpratique, latexcompanion} traitent de \LaTeX{} ; le livre \cite{texbook} traite de \TeX{}.

\begin{thebibliography}{KNU90}
\bibitem{latexpratique} Christian \textsc{Rolland}. \emph{\LaTeX{} par la pratique}. O'Reilly, 1999.

\bibitem[KNU90]{texbook} Donald E. \textsc{Knuth}. \emph{The \TeX{}book}. Addison-Wesley, 1990.

\bibitem{latexcompanion} Frank \textsc{Mittelbach} et Michel \textsc{Goosens}. \emph{The \LaTeX{} Companion}. Addison-Wesley, 2004.
\end{thebibliography}

\end{document}
\end{code}

Pour comprendre ce qu'il se passe, voici quelques explications : \begin{itemize}[label = \ding{118}]
\item début de la création manuelle de la bibliographie avec l'appel suivant : \verb?\begin{thebibliography}{<affichage>}?.

\verb?<affichage>? est une notion assez particulière que je vais détailler ci-après. Elle reste toutefois \textbf{optionnelle} mais il faut laisser les doubles accolades \verb?{}? après l'appel de l'environnement \verb?thebibliography?, sous peine de rencontrer des erreurs lors de la compilation ;

\item création d'une entrée dans la bibliographie grâce à la commande suivante : \verb?\bibitem[<réf>]{<clef>}?, suivie de l'entrée en question (titre, auteur, etc.).

Ici, aucun formatage n'est appliquée (titre en italique, nom de l'auteur en majuscules ou en petites capitales\dots{}) donc tu dois le faire et respecter les règles en vigueur !

\verb?<réf>? est lui aussi optionnel. Il permet de mettre un nom comme référence à la place de la numérotation, utilisée par défaut. \\
\end{itemize}

Et c'est maintenant qu'il y a une subtilité à saisir ! Si tu choisis d'utiliser une \verb?<réf>? de ton cru, comme \verb?KNU90? dans l'exemple fourni, tu peux constater que l'alignement dans la bibliographie n'est pas des plus esthétiques.

Intervient alors \verb?<affichage>? : il faut renseigner la valeur la plus longue (en terme de nombre de caractères) parmi les \verb?<réf>? définies. \LaTeX{} procède alors au décalage de toutes les entrées dans ta bibliographie : tout est désormais bien aligné !

\subsection*{Bilan : de la bonne création d'une bibliographie}

Pourquoi se priver d'un tableau synthétique pour résumer toutes ces nouvelles notions ? Comparons donc l'usage d'un fichier \verb?.bib? à l'environnement \verb?thebibliography?.

\begin{longtable}{p{0.45\linewidth}p{0.45\linewidth}}
{\hspace*{\fill}\verb?.bib?\hspace*{\fill}} & {\hspace*{\fill}\verb?thebibliography?\hspace*{\fill}} \\ \midrule
\endhead
& \hfill\textit{(suite sur la page suivante)} \\
\endfoot
\multicolumn{2}{@{\hrulefill}c@{\hrulefill}}{\raisebox{-3pt}{~~\textsc{Fin du tableau}~~}}
\endlastfoot
Base de données \verb?.bib? & Dans le fichier \verb?.tex? \\
\textcolor{Red}{Fichier supplémentaire à gérer} & \textcolor{Green}{Dans le code} \\
\textcolor{Green}{Gestion automatique de la mise en forme} (remplissage de champs dans une ``base de données'') & \textcolor{Red}{Mise en forme par l'utilisateur} \\
\textcolor{Green}{Classement par ordre alphabétique des auteurs} (par nom) & \textcolor{Red}{Entrées bibliographiques affichées dans l'ordre de leur création} \\
\textcolor{Green}{Cohérence de la bibliographie} (affichage des références citées) & \textcolor{Red}{Affichage de toute la bibliographie créée} \\
Compilation sous \pdfLaTeX{} + inclure \BibTeX{} & Tous les modes de compilation tolérés, pas besoin de \BibTeX{}
\end{longtable}

Pour conclure, il n'y a pas de bonnes ou de mauvaises méthodes. Tout dépend uniquement de l'utilisation que tu dois en faire.

\textcolor{cyan!70!black}{\emph{Personnellement},} pour une courte bibliographie, je la ferai désormais à la main, quitte à la générer avec \BibTeX{} initialement pour voir la mise en forme, comme c'est conçu pour.

Sinon, à partir de 4-5 ouvrages à citer, je ne réfléchis plus et j'implémente tout dans un fichier \verb?.bib?. \\

Allez, passons à la cerise sur le gâteau : la génération d'un index. Ce serait dommage de s'en priver !

\section{Générer un index}

\label{generer-index}\begin{definition}{Définition d'un index}
{\noindent\huge\bfseries\color{gray!75}\og}

L'index est un outil du livre qui consiste en une liste organisée d'éléments appelés termes (mots, concepts, objets\dots{}) jugés pertinents pour le lecteur, accompagnés de leur adresse -- c'est-à-dire la place où ils sont évoqués dans l'ouvrage. Il permet au lecteur de localiser rapidement un élément dans l'ouvrage, sans être contraint de le lire intégralement. 

{\hfill\huge\bfseries\color{gray!75}\fg} \\

\begin{flushright}
Wikipédia -- Disponible sur :

\url{https://fr.wikipedia.org/wiki/Index_terminologique}
\end{flushright}
\end{definition}

Pour être un poil plus précis, l'organisation d'un index se fait dans l'ordre alphabétique. Tu conviendras que c'est quand même nettement plus pratique pour rechercher une information.

Et pour cette fois, je ne vais pas présenter le cas minimal qui fonctionne sous \LaTeX{} car le résultat est relativement moche à mon sens. C'est pourquoi je vais plutôt directement te décrire la solution finale, entièrement personnalisable. C'est parti !

\subsection*{Préambule et paramétrage}

Pour commencer, il faut charger le package \verb?imakeidx? qui permet de personnaliser l'index, et d'en gérer plusieurs si besoin, comme nous le verrons par la suite. 

Par défaut, le package lance la compilation intermédiaire avec le moteur \verb?MakeIndex?, pour créer l'index avant de l'intégrer au document. Il n'y a pas besoin de compiler une seconde fois le document pour une fois -- mais tu es toujours contraint de le faire si tu as des références ou un sommaire. \\

Juste après avoir chargé ce package, il faut indiquer à \LaTeX{} de préparer l'index, grâce à la commande \verb?\makeindex? et les options recommandées suivantes :

\begin{code}{}
\makeindex[title = {<titre_index>}, options = {-s index-style.ist}]
\end{code}

\verb?index-style.ist? est un fichier spécifique aux index sous \LaTeX{} et qui permet de le styliser grâce à une syntaxe spécifique\footnote{L'extension \verb?.ist? signifie probablement \og index style \fg{}.}. \LaTeX{} va donc utiliser ce fichier\dots{} à condition qu'il existe ! Il va donc falloir le créer. \\

Si l'environnement \verb?filecontents? est disponible par défaut sous \LaTeX{}, il est contraignant pour 2 raisons : il doit être placé avant le \verb?\documentclass? et il permet de créer un fichier mais ne le remplace pas s'il a été modifié entre temps. Il faut donc constamment supprimer le fichier manuellement si tu veux faire des tests pour personnaliser ton index à ta guise.

Fort heureusement, il existe le package éponyme qui permet d'éviter tous ces tracas et solutionne ces problèmes. Je recommande donc de charger les lignes suivantes dans le préambule pour commencer :

\begin{code}{Personnalisation de l'index : fichier de style}
\usepackage{filecontents}

\begin{filecontents*}{index-style.ist}
% Définition "en-tête"
headings_flag 1
heading_prefix "\\vspace{26pt}{\\bfseries\\huge{}"
heading_suffix "}\\vspace{13pt}"

% Cas particuliers
symhead_positive "Symboles"
symhead_negative "symboles"
numhead_positive "Nombres"
numhead_negative "nombres"

% Style entre une entrée et le numéro de page
delim_0 "\\hspace{6pt}\\dotfill\\hspace{6pt}"
delim_1 "\\hspace{5pt}\\dotfill\\hspace{5pt}"
delim_2 "\\hspace{4pt}\\dotfill\\hspace{4pt}"
\end{filecontents*}
\end{code}

Libre à toi de te contenter de ma feuille de style personnelle, ou d'en développer une qui sied plus à ton goût. Tu trouveras toutes les possibilités de personnalisation sur le site : \url{https://www.overleaf.com/learn/latex/Indices} (aller à la fin de l'article).

La syntaxe est très simple : renseigner l'élément à personnaliser (cf. le lien précédent avec la liste complète), délimiter le groupe de commande pour la personnalisation par des apostrophes (\verb?"<cmde(s)>"?) et enfin, le plus important, doubler les \textit{backslash} pour appeler une commande \LaTeX{}.

\begin{conseil}{Bonus personnalisation}
J'ai eu à développer une solution pour colorer le numéro de page de chaque entrée d'un index, pour le faire ressortir et faciliter la lecture. Après de nouveaux essais, je me suis rendu compte que cette personnalisation ne fonctionne pas sans le package \verb?hyperref?, et se révèle même inutile si l'option \verb?colorlinks? est utilisée -- mais reste utile avec l'option \verb?hidelinks?, même si je ne recommande pas son utilisation. 

De plus, les couleurs pour les références, définies par l'intermédiaire du package \verb?hyperref?, restent prioritaires sur cette personnalisation. \\

Je reporte donc ici le code initialement utilisé, en aparté. Peut-être qu'il fera gagner du temps à quelqu'un ou pourra servir dans un autre contexte :

\begin{code}{Personnalisation (inutile) des références de l'index}
% Mise en rouge du numéro de page
encap_prefix "{\\color{red}\\"
encap_infix "{"
encap_suffix "}}"
\end{code}
\end{conseil}

Pour terminer sur la personnalisation de l'index, je recommande de charger le package \verb?idxlayout? avec les options \verb?totoc? et \verb?unbalanced?, afin d'inclure par la suite l'index dans le sommaire et de garantir un affichage sur une colonne sur la dernière page de l'index. 

Tu penses peut-être que je suis tatillon mais tu verras avec le temps qu'un index sur 2 colonnes est le plus pratique et lisible. Malheureusement, sans ce package et cette option, la dernière page peut avoir un affichage curieux. 

Ce package propose d'autres options, comme le choix du nombre de colonnes, la distance entre chaque colonne ou encore l'ajout d'un séparateur (trait vertical d'épaisseur paramétrable) entre tes colonnes (\verb?columns?, \verb?columnsep? et \verb?rule?). Pour plus de détails, se référer à la documentation officielle du package : \url{https://ctan.org/pkg/idxlayout}.

\subsection*{Création d'entrées et de l'index}

Maintenant que nous nous sommes occupés de la personnalisation de l'index, voyons comment ajouter des entrées à celui-ci. \\

Pour ajouter une entrée à ton index, il suffit de la placer à l'endroit souhaité dans le document avec la commande \verb?\index{<entrée>}?. Toutefois, il faut savoir que le classement alphabétique du moteur \verb?MakeIndex? ne fonctionne pas avec les accents. Il faut donc ruser avec un \verb?@?, de la manière suivante :

\begin{code}{Création d'une entrée accentuée dans l'index}
\index{<entrée_sans_accent>@<entrée_avec_accent>}
\end{code}

Il est possible de créer une sous-liste dans l'index avec un \verb?!? : 

\begin{code}{Création d'une sous-liste dans l'index}
\index{<entrée_principale>!<entrée_secondaire>}
\end{code}

Il existe aussi d'autres possibilités de formatage d'une entrée :

\begin{code}{Autres options disponibles avec \texttt{\textbackslash{}index}}
% Indexage de pages multiples
\index{Mecanique quantique@Mécanique quantique!Histoire|(}
En 1901, Max Planck 
... \newpage
et c'est ainsi que se termine l'histoire !
\index{Mecanique quantique@Mécanique quantique!Histoire|)}

% Formatage du numéro de page
\index{Cochon|textbf}
% Cumul de commands imposibles en l'état
% Personnaliser le fichier .ist en conséquence si besoin

% Créer un "renvoi" à une autre entrée (manuel)
\index{Pierrot|see{Pierre}}

% Créer un "renvoi" à d'autres entrées (manuel)
\index{Pierre|see{Pierre, diminutif}}

% Autre possibilité de "renvoi"
\index{Jen|seealso{Jenny}}
\end{code}

Enfin, il faut dire à \LaTeX{} de générer l'index. Pour cela, il faut juste utiliser la commande \verb?\printindex{}? à l'endroit voulu, un peu comme pour le sommaire ou la bibliographie. Et voilà, c'est tout. Ok pour toi ? Voyons le résultat final sur un exemple concret dans ce cas.

\begin{coderesult}[run pdflatex]{Générer un index}
\documentclass[a4paper, 12pt]{report}

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

\usepackage{xcolor}

\usepackage{imakeidx} 
\makeindex[title = {Index test}, options = {-s index-style.ist}]
\usepackage[totoc, unbalanced]{idxlayout}
% Index par défaut sur 2 colonnes

\usepackage{filecontents} % Pour pouvoir réécrire directement sur le document + définition dans le préambule possible (et non avant documentclass)
\begin{filecontents*}{index-style.ist}
headings_flag 1
heading_prefix "\\vspace{26pt}{\\bfseries\\huge{}"
heading_suffix "}\\vspace{13pt}\\nopagebreak{}"

symhead_positive "Symboles"
symhead_negative "symboles"
numhead_positive "Nombres"
numhead_negative "nombres"

delim_0 "\\hspace{6pt}\\dotfill\\hspace{6pt}"
delim_1 "\\hspace{5pt}\\dotfill\\hspace{5pt}"
delim_2 "\\hspace{4pt}\\dotfill\\hspace{4pt}"
\end{filecontents*}

\usepackage[colorlinks]{hyperref}


\begin{document}

\tableofcontents{}
\vspace{2\baselineskip}

Texte\index{Texte} \\

Autre essai \index{Essai a confirmer@Essai à confirmer} et j'ajouterai aussi \index{Ajout!Ajout1} que les combinaisons sont possibles \index{Ajout!Ajout teste@Ajout testé} !

% Pour ajouter un petit texte au début de l'index
\setindexprenote{Ceci est mon index ! \\}
\printindex{}

\end{document}
\end{coderesult}

\begin{attention}{Texte au début de l'index}
Le package \verb?imakeidx? fournit la commande \verb?\indexprologue{<texte>}?, qui ne fonctionne plus suite à l'utilisation du package \verb?idxlayout?. C'est pourquoi il faut employer la commande associée à ce dernier package, soit \verb?\setindexprenote{<texte>}?.

Le package \verb?idxlayout? fournit alors l'option \verb?notesep? pour personnaliser l'espacement entre ce texte et le début de l'index le cas échéant. C'est en tout cas plus pratique et plus propre que d'indiquer un saut de ligne \verb?\\? manuellement à chaque fois.
\end{attention}

\begin{conseil}{Un autre moteur utile pour générer un index}
Si \verb?MakeIndex? est le moteur historique pour générer des index, d'autres solutions ont vu le jour, notamment pour prendre en compte les mots accentués lors du tri alphabétique de l'index.

Le moteur \verb?xindy? (ou \verb?texindy? pour la version adaptée à \LaTeX{}) en fait partie. Son utilisation devient apparemment indispensable si l'index est automatisé par l'intermédiaire de commandes, avec la présence d'entrées accentuées. \\

Le package \verb?imakeidx? propose justement l'option \verb?xindy?, pour générer l'index avec ce moteur \verb?texindy?. Malheureusement, rien ne fonctionne actuellement de mon côté\footnote{Moteur \verb?texindy? \og not found \fg{} apparemment, alors que \MiKTeX{} montre qu'il est bien installé selon toute vraisemblance.}\dots{} et \verb?MakeIndex? me convient très bien pour le moment !

Si jamais tu veux plus d'informations, j'ai découvert ce nouveau moteur par l'intermédiaire du site suivant : \url{https://geekographie.maieul.net/169}.
\end{conseil}

\subsection*{Générer plusieurs index}

Grâce au package \verb?imakeidx?, il est possible de générer plusieurs index. Il suffit juste de leur donner un nom (option \verb?name = <nom_index>?) lors de la mise en place de l'index dans le préambule avec la commande \verb?\makeindex?, puis d'indiquer ce même nom lors de l'ajout d'une entrée de la manière suivante : \verb?\index[<nom_index>]{<entrée>}?.

Dans le même esprit, l'appel de l'index se fait alors de la manière suivante : \verb?\printindex[<nom_index>{}?. \\

Sans refaire un exemple concret avec un aperçu du résultat, voici un cas simple d'utilisation :

\begin{code}{Générer plusieurs index}
\documentclass[a4paper, 12pt]{report}

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

\usepackage[makeindex]{imakeidx}
\makeindex[name = indexA, title = {Index A}]
\makeindex[name = indexB, title = {Index B}]
\usepackage[totoc, unbalanced]{idxlayout}


\begin{document}

Texte\index[indexA]{Texte} % Va dans l'index 1

\newpage

Autre essai \index[indexA]{Essai a confirmer@Essai à confirmer} et j'ajouterai aussi \index[indexB]{Ajout!Ajout 1} que les combinaisons sont possibles \index[indexB]{Ajout!Ajout teste@Ajout testé}

\setindexprenote{Ceci est mon index !}
\printindex[indexA]{}

% \setindexprenote à réinitialiser (contrairement à \indexprologue)
\setindexprenote{}
\printindex[indexB]{}

\end{document}
\end{code}

\subsection*{La petite filouterie}

Enfin, il est possible d'utiliser un index pour classer des données (liste de films, jeux, pistes musicales par nom d'auteur\dots{}). Au lieu de tenir un Excel (tri facilité), tu peux renseigner tous ces éléments grâce à une entrée d'un index et \LaTeX{} se charge de faire le tri. 

Il y a une toute petite astuce à connaître : supprimer le numéro de page. En effet, ici, toutes nos entrées doivent être affichées sur une page bidon. Dans le cas contraire, l'index ne sera pas généré (ou sera vide). Toutefois, nous n'avons pas besoin des numéros de page. Il faut donc procéder ainsi :

\begin{code}{Un index (bidon ?) sans les numéros de page}
\documentclass[a4paper, 12pt]{report}

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

\usepackage[makeindex]{imakeidx}
\makeindex[title = {Liste de films}]
\usepackage[totoc, unbalanced]{idxlayout}

\usepackage[colorlinks]{hyperref}


\begin{document}

Texte bidon\index{Film 1}\index{Film 2} \newpage

{
% Suppression du numéro de page dans l'index
\def\hyperpage#1{}
% Création de l'index
\printindex{}
}

\end{document}
\end{code}

Si tu essayes ce code, tu devrais te rendre compte qu'il fonctionne uniquement parce que le package \verb?hyperref? est appelé, comme la commande \verb?\hyperpage? est redéfini localement comme étant vide.

De plus, cette solution permet de supprimer seulement le numéro de page. Il reste encore la virgule de séparation, présente par défaut. Il faut donc reprendre le fichier de personnalisation en \verb?.ist? et l'adapter à ce nouveau besoin.