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
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
|
%%% Copyright (C) 2015-2024 Vincent Goulet
%%%
%%% Ce fichier fait partie du projet
%%% «Rédaction avec LaTeX»
%%% https://gitlab.com/vigou3/formation-latex-ul
%%%
%%% Cette création est mise à disposition sous licence
%%% Attribution-Partage dans les mêmes conditions 4.0
%%% International de Creative Commons.
%%% https://creativecommons.org/licenses/by-sa/4.0/
\chapter{Principes de base}
\label{chap:bases}
Un système de mise en page tel que {\LaTeX} repose sur une logique de
séparation entre l'apparence d'un document et sa structure. Si vous
avez l'habitude d'utiliser un traitement de texte, vous devrez fort
probablement vous défaire d'une vilaine habitude: vous préoccuper sans
cesse, au moment de la rédaction, de la disposition du texte.
Ce principe accepté, il vous faudra néanmoins indiquer au logiciel la
structure du document. Avec {\LaTeX} cela s'effectue par le biais de
diverses instructions que l'on insère au fil du texte. À la base, les
logiciels de traitements de texte n'opèrent pas différemment, sauf
qu'ils cachent les codes aux utilisateurs\footnote{%
Le leader du traitement de texte jusqu'au milieu des années 1990,
Word~Perfect, offrait l'option d'afficher l'ensemble des codes de
mise en page. C'est malheureusement une caractéristique brillante
que Microsoft Word et les autres progiciels développés depuis ont
choisi d'omettre.}. %
Sous prétexte de simplicité d'utilisation, ils causent en fait bien
des mots de tête. Qui ne s'est pas déjà demandé, en utilisant un
traitement de texte moderne: «Pourquoi donc mon texte est-il
soudainement en gras?»
Ce chapitre explique comment aborder la rédaction d'un document avec
{\LaTeX} ainsi que la syntaxe de base des différents types
d'instructions que l'on peut insérer dans un texte pour en spécifier
la structure et la mise en forme.
\section{Séparation du contenu et de l'apparence}
\label{sec:bases:separation}
Lors de la rédaction avec un système de mise en page tel que {\LaTeX},
on se concentre sur le contenu et la \emph{structure} du document, et
non pas sur son \emph{apparence}. Par exemple:
\begin{itemize}
\item au lieu de prescrire qu'un titre de section doit être en gras
14~points, on indique simplement à {\LaTeX} que le texte doit être
traité comme un titre de section;
\begin{demo}
\begin{minipage}{0.45\linewidth}
\begin{lstlisting}
\textbf{\large Titre}
\end{lstlisting}
\end{minipage}
\hfill \faArrowRight \hfill
\begin{minipage}{0.45\linewidth}
\begin{lstlisting}
\section{Titre}
\end{lstlisting}
\end{minipage}
\end{demo}
\item au lieu de décider qu'un mot sur lequel l'on souhaite insister
sera en italique, on indique à {\LaTeX} de mettre de l'emphase sur
ce mot sans se soucier de la mise en forme.
\begin{demo}
\begin{minipage}{0.45\linewidth}
\begin{lstlisting}
\textit{texte}
\end{lstlisting}
\end{minipage}
\hfill \faArrowRight \hfill
\begin{minipage}{0.45\linewidth}
\begin{lstlisting}
\emph{texte}
\end{lstlisting}
\end{minipage}
\end{demo}
\end{itemize}
L'apparence du texte sera prise en charge par {\LaTeX}. Comme les
gabarits sont l'{\oe}uvre de spécialistes en typographie, il est
généralement préférable de ne pas les modifier. À titre d'exemple,
{\LaTeX} détermine automatiquement la largeur des marges en fonction
de la taille de la police de manière à ce que les lignes de texte
comptent approximativement 70~caractères. La raison: lorsqu'une ligne
de texte est trop longue, notre {\oe}il a de la difficulté à la suivre
sur toute sa longueur. Il a tendance à passer à la ligne inférieure,
ce qui rend la lecture plus difficile.
\section{Règles de saisie}
\label{sec:bases:saisie}
Une fois le principe de séparation du contenu et de l'apparence
compris et accepté, veillez à respecter les règles simples suivantes
lors de la saisie du texte.
\begin{enumerate}
\item On sépare les mots par une ou plusieurs \emph{espaces}. Qu'il y
en ait une ou un millier, seule la première compte et la mise en
page sera la même.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Les espaces délimitent les
mots. Leur nombre n'a pas
d'importance.
\end{lstlisting}
\producing
Les espaces délimitent les
mots. Leur nombre n'a pas
d'importance.
\end{texample}
\begin{texample}
\begin{lstlisting}[showstringspaces=true]
Les espaces délimitent
les mots.
Leur nombre n'a pas
d'importance.
\end{lstlisting}
\producing
Les espaces délimitent
les mots.
Leur nombre n'a pas
d'importance.
\end{texample}
\end{demo}
%
\item On sépare les paragraphes par une ou plusieurs lignes blanches.
Celles-ci n'apparaitront pas nécessairement dans le texte final; les
gabarits standards identifient les paragraphes par un retrait de
première ligne.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Les lignes blanches
délimitent les paragraphes.
Une ou plusieurs, ça ne fait
aucune différence!
\end{lstlisting}
\producing
Les lignes blanches
délimitent les
paragraphes.
Une ou plusieurs, ça ne fait aucune différence!
\end{texample}
\begin{texample}
\begin{lstlisting}
Les lignes blanches
délimitent les paragraphes.
Une ou plusieurs, ça ne fait
aucune différence!
\end{lstlisting}
\producing
Les lignes blanches délimitent
les paragraphes.
Une ou plusieurs, ça ne fait aucune différence!
\end{texample}
\end{demo}
%
\item On utilise des \emph{commandes} pour indiquer la structure du
texte dans le texte. Celles-ci débutent presque toujours par
le symbole «{\bs}». À la différence des logiciels de traitement de
texte, les instructions de mise en forme du document sont donc
toujours visibles et, par conséquent, modifiables facilement et sans
surprise (on ne se demande donc jamais où se termine le gras).
\begin{demo}
\begin{texample}
\begin{lstlisting}
Les commandes sont visibles
dans le \textbf{texte},
mais évidemment pas dans le
\emph{document} fini.
\end{lstlisting}
\producing
Les commandes sont visibles
dans le \textbf{texte},
mais évidemment pas dans le
\emph{document} fini.
\end{texample}
\end{demo}
\end{enumerate}
\section{Structure d'un fichier}
\label{sec:bases:structure}
Un fichier source {\LaTeX} --- dont vous trouverez un exemple simple à la
\autoref{fig:bases:parties} --- est toujours composé de deux parties:
le préambule et le corps du document.
\begin{figure}
\centering
\begin{minipage}{0.75\linewidth}
\begin{lstlisting}[numbers=left, numberstyle=\tiny]
\documentclass[11pt,french]{article} `\label{lst:bases:preambule_debut}'
\usepackage{babel}
\usepackage[autolanguage]{numprint}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} `\label{lst:bases:preambule_fin}'
\begin{document} `\label{lst:bases:corps_debut}'
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Donec quam nulla, bibendum
vitae ipsum vel, fermentum pellentesque
orci.
\end{document} `\label{lst:bases:corps_fin}'
\end{lstlisting}
\end{minipage}
\caption[Fichier source {\LaTeX} simple comportant les deux parties
obligatoires: le préambule et le corps du document]{%
Fichier source {\LaTeX} simple comportant les deux parties
obligatoires: le préambule (lignes
\ref*{lst:bases:preambule_debut}--\ref*{lst:bases:preambule_fin})
et le corps du document (lignes
\ref*{lst:bases:corps_debut}--\ref*{lst:bases:corps_fin}).}
\label{fig:bases:parties}
\end{figure}
\begin{description}
\item[Préambule] Suite de commandes spécifiant la mise en forme
globale du document (format du papier, marges, entête et pied de
page, etc.). Il contient au minimum la commande
\cmd{\documentclass}. Les commandes contenues dans le préambule ont
un effet global sur le document. Les lignes
\ref*{lst:bases:preambule_debut}--\ref*{lst:bases:preambule_fin}
forment le préambule dans l'exemple de la
\autoref{fig:bases:parties}.
\item[Corps du document] Contenu du document en tant que tel. Il
débute par \verb=\begin{document}= et se termine par
\verb=\end{document}=. Le corps du document peut aussi contenir
des commandes, mais l'effet de celles-ci demeure presque toujours
local. Les lignes
\ref*{lst:bases:corps_debut}--\ref*{lst:bases:corps_fin} du code de
la \autoref{fig:bases:parties} forment le corps du document.
\end{description}
\section{Classes et paquetages}
\label{sec:bases:classes}
La première commande du préambule est normalement la déclaration de la
\emph{classe} du document. La forme de la déclaration est la suivante:
\begin{lstlisting}
\documentclass`\oarg{options}\marg{classe}'
\end{lstlisting}
Les classes standards de {\LaTeX} sont \class{article},
\class{report}, \class{book}, \class{letter} et \class{slides}. La
\autoref{sec:organisation:classe} traite des différences entre les
diverses classes et des \meta{options} disponibles.
Les \emph{paquetages} permettent de modifier des commandes ou
d'ajouter des fonctionnalités à {\LaTeX}. On charge les paquetages
dans le préambule avec des commandes de la forme
\begin{lstlisting}
\usepackage`\marg{paquetage}'
\usepackage`\oarg{options}\marg{paquetage}'
\usepackage`\marg{paquetage1,paquetage2, ...}'
\end{lstlisting}
La première et la troisième forme permettent de charger un ou
plusieurs paquetages sans options. La seconde permet de spécifier des
\meta{options} au chargement du paquetage. Il n'est évidemment pas
possible de préciser des options avec la troisième forme puisque
{\LaTeX} ne saurait à quel paquetage celles-ci se rapportent.
Certains paquetages permettent que leurs options apparaissent parmi
les \meta{options} de la commande \cmdprint{\documentclass}. Elles
sont ainsi plus «visibles» pour d'autres paquetages. Par exemple,
l'option \code{french} que l'on retrouve dans la déclaration de la
classe à la \autoref{fig:bases:parties} est en fait une option du
paquetage \pkg{babel}.
\section{Commandes}
\label{sec:bases:commandes}
J'ai déjà fait référence à quelques reprises au concept de commande
{\LaTeX}. Cette section se penche sur leur syntaxe.
Les formes générales des commandes {\LaTeX} sont:
\begin{lstlisting}
\`\meta{nomcommande}\oarg{arg\_optionnel}\marg{arg\_obligatoire}'
\`\meta{nomcommande}'*`\oarg{arg\_optionnel}\marg{arg\_obligatoire}'
\end{lstlisting}
Ici, \meta{nomcommande} est le nom de la commande. Il débute par le
symbole «{\bs}» et il est exclusivement formé de lettres,
habituellement des minuscules ({\LaTeX} est sensible à la casse). La
forme étoilée d'une commande réalise généralement une action
légèrement différente de la version sans étoile. Par exemple, la
commande \cmd{\section} crée une nouvelle section numérotée, alors que
\cmd{\section*} n'insère aucune numérotation.
Lorsque la commande accepte des arguments, les arguments obligatoires
sont placés entre accolades \verb={ }= et les arguments optionnels
sont placés entre crochets \verb=[ ]=.
Certaines commandes n'ont aucun argument. Leur forme est alors
\begin{lstlisting}
\`\meta{nomcommande}
\end{lstlisting}
Dans ce cas, le nom de la commande se termine par tout symbole qui
n'est pas une lettre --- y compris l'espace! Cette règle fait en sorte
qu'une espace après le nom d'une commande est considérée comme un
marqueur de la fin du nom de la commande. Cette règle joue parfois de
vilains tours en «avalant» l'espace entre une commande et le mot qui
suit; voir l'\autoref{exemple:base:commandes} et
l'\autoref{ex:base:commandes}.
La portée d'une commande est limitée à la zone entre accolades
\verb={ }=, le cas échéant.
\begin{exemple}
\label{exemple:base:commandes}
\enlargethispage{5mm}
Voici trois exemples de commandes {\LaTeX}: une sans argument, une
avec un seul argument obligatoire et une commande avec deux
arguments obligatoires et un argument optionnel.
\begin{enumerate}
\item La commande \cmd{\LaTeX} permet de composer de logo {\LaTeX}.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Apprendre \LaTeX c'est
formidable!
\end{lstlisting}
\producing
Apprendre \LaTeX c'est
formidable!
\end{texample}
\end{demo}
Vous pouvez constater ici que l'espace suivant le nom de la
commande a été interprétée par {\LaTeX} comme un marqueur de la
fin de la commande et qu'elle a été supprimée du texte. Deux
possibilités pour contourner cette particularité du langage:
fournir un argument vide à la commande, ou placer celle-ci entre
accolades pour limiter sa portée à elle-même:
\begin{demo}
\begin{texample}
\begin{lstlisting}
Apprendre \LaTeX{} c'est
formidable!
\end{lstlisting}
\producing
Apprendre \LaTeX{} c'est
formidable!
\end{texample}
\begin{texample}
\begin{lstlisting}
Apprendre {\LaTeX} c'est
formidable!
\end{lstlisting}
\producing
Apprendre {\LaTeX} c'est
formidable!
\end{texample}
\end{demo}
%
\item La commande \cmd{\emph} met de l'emphase (en général sous
forme d'italique) sur le ou les mots en argument.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Il est \emph{essentiel} de
connaitre la syntaxe de
{\LaTeX}.
\end{lstlisting}
\producing
Il est \emph{essentiel} de
connaitre la syntaxe de
{\LaTeX}.
\end{texample}
\end{demo}
%
\item La commande \cmd{\rule} produit un rectangle plein. Elle a
deux arguments obligatoires: la longueur et la hauteur du
rectangle, dans l'ordre. Un argument optionnel permet de surélever
le rectangle au-dessus de la ligne de base (voir le
\autoref{chap:boites} pour plus de détails).
\begin{demo}
\begin{texample}
\begin{lstlisting}
Réglure de 1~cm de long et
3~mm d'épais surélevée de
2~points au-dessus de la
ligne de base:
\rule[2pt]{1cm}{3mm}.
\end{lstlisting}
\producing
Réglure de $1$~cm de long et
$3$~mm d'épais surélevée de
$2$~points au-dessus de la
ligne de base: \rule[2pt]{1cm}{3mm}.
\end{texample}
\end{demo}
\end{enumerate}
\qed
\end{exemple}
\begin{exemple}
La commande \cmd{\bfseries} sélectionne une police
grasse pour tout le texte qui suit.
\begin{demo}
\begin{texample}
\begin{lstlisting}
En typographie, la \bfseries
graisse est l'épaisseur d'un
trait ou d'un caractère.
\end{lstlisting}
\producing
En typographie, la \bfseries
graisse est l'épaisseur d'un
trait ou d'un caractère.
\end{texample}
\end{demo}
Pour limiter le changement à une zone de texte, il faut la délimiter
par des accolades.
\begin{demo}
\begin{texample}
\begin{lstlisting}
En typographie, la {\bfseries
graisse est l'épaisseur d'un
trait} ou d'un caractère.
\end{lstlisting}
\producing
En typographie, la {\bfseries
graisse est l'épaisseur d’un
trait} ou d’un caractère.
\end{texample}
\end{demo}
\qed
\end{exemple}
Vous pouvez définir des nouvelles commandes {\LaTeX} à loisir. Ceci
est expliqué au \autoref{chap:commandes}.
\section{Environnements}
\label{sec:bases:environnements}
Un environnement {\LaTeX} est une zone de texte délimitée par une
construction du type
\begin{lstlisting}
\begin`\marg{environnement}'
...
\end`\marg{environnement}'
\end{lstlisting}
Le contenu d'un environnement est traité différemment du reste du
texte en fonction des paramètres de l'environnement. Par exemple, le
texte à l'intérieur d'un environnement \Ie{center} est centré sur la
page.
Les changements induits par un environnement s'appliquent uniquement à
l'intérieur de celui-ci. Il en va de même des commandes utilisées à
l'intérieur d'un environnement.
\begin{exemple}
L'environnement \Ie{quote} sert à composer des citations. Le texte à
l'intérieur de l'environnement sera placé dans un bloc séparé du
texte principal et en retrait des marges gauche et droite.
\begin{demo}
\begin{texample}
\begin{lstlisting}
La phrase
\begin{quote}
Attention aux bogues dans
le code ci-dessus; je ne
l'ai pas testé, j'ai
seulement prouvé qu'il
était correct.
\end{quote}
est une citation célèbre du
créateur de {\TeX}, Donald
Knuth.
\end{lstlisting}
\producing
La phrase
\begin{quote}
Attention aux bogues dans le code ci-dessus; je ne l'ai pas testé,
j'ai seulement prouvé qu'il était correct.
\end{quote}
est une citation célèbre du créateur de {\TeX}, Donald Knuth.
\end{texample}
\end{demo}
Si la citation est dans la langue originale, il est préférable de la
composer en italique.
\begin{demo}
\begin{texample}
\begin{lstlisting}
La phrase
\begin{quote}
\itshape
Beware of bugs in the above
code; I have only proved it
correct, not tried it.
\end{quote}
est une citation célèbre du
créateur de {\TeX}, Donald
Knuth.
\end{lstlisting}
\producing
La phrase
\begin{quote}
\itshape
Beware of bugs in the above code; I have only proved it
correct, not tried it.
\end{quote}
est une citation célèbre du créateur de {\TeX}, Donald Knuth.
\end{texample}
\end{demo}
On remarque que l'effet de la commande \cmdprint{\itshape} s'est
limité à l'environnement. %
\qed
\end{exemple}
\section{Longueurs}
\label{sec:bases:longueurs}
Plusieurs commandes {\LaTeX} requièrent en argument une mesure de
largeur ou de hauteur. Dans la terminologie de {\LaTeX}, on parle plus
généralement de longueur\index{longueur} (\emph{length}).
Une longueur est un nombre positif, négatif ou nul
\emph{obligatoirement} et \emph{immédiatement} suivi d'un symbole
d'unité de mesure. Le \autoref{tab:bases:longueurs} présente les
principales unités de mesure utilisées par {\LaTeX} et le symbole
correspondant.
\begin{table}
\caption{Principales unités de mesure pour les longueurs dans
{\LaTeX}}
\label{tab:bases:longueurs}
\centering
\begin{tabular}{lcl}
\toprule
Nom ou description & Symbole & Longueur équivalente \\
\midrule
millimètre & \texttt{mm} \\
centimètre & \texttt{cm} & $10$~mm \\
pouce & \texttt{in} & $2,54$~cm \\
point & \texttt{pt} & $1/72,27$~pouce \\
point PostScript & \texttt{bp} & $1/72$~pouce \\
largeur de la lettre M & \texttt{em} & fonction de la police \\
hauteur de la lettre x & \texttt{ex} & fonction de la police \\
\bottomrule
\end{tabular}
\end{table}
Il existe un certain nombre de longueurs prédéfinies. Les plus utiles
sont \cmd{\linewidth}, qui contient la largeur de la ligne de texte
courante, et \cmd{\textwidth}, qui contient la largeur de la page
courante. Dans du texte normal, les deux mesures sont habituellement
égales.
\section{Commentaires}
\label{sec:bases:commentaires}
Le symbole «\verb=%=» indique un commentaire dans le code source: tout
le texte après le symbole jusqu'à la fin de la ligne est ignoré par
{\LaTeX}.
\begin{demo}
\begin{texample}
\begin{lstlisting}
texte % ignoré par LaTeX
\end{lstlisting}
\producing
texte % ignoré par LaTeX
\end{texample}
\end{demo}
\section{Caractères spéciaux}
\label{sec:bases:caracteres}
Les claviers d'ordinateur mettent à la disposition des auteurs toutes
les lettres de l'alphabet (en versions minuscule et majuscule), les
chiffres de 0 à 9, un certain nombre de symboles et, selon le clavier,
des versions accentuées de certaines lettres. L'entrée des lettres et
des chiffres ne pose pas de problème particulier pour {\LaTeX}, mais
certains symboles sont réservés. De plus, certains symboles d'usage
courant ne sont pas disponibles sur les claviers.
\subsection{Espaces et retours à la ligne}
\label{sec:bases:caracteres:espaces}
J'ai déjà abordé à la \autoref{sec:bases:saisie} le traitement spécial
réservé par {\LaTeX} aux espaces et aux retours à la ligne dans le
code source. Les précisions suivantes s'imposent:
\begin{itemize}
\item seule la première espace entre deux éléments compte;
\item les espaces en début de ligne sont ignorées;
\item un retour à la ligne simple est traité comme une espace;
\item il faut deux retours à la ligne consécutifs (ce qui résulte en
une ligne blanche dans le code source) pour identifier un changement
de paragraphe.
\end{itemize}
Pour forcer une espace à un endroit où {\LaTeX} la supprimerait
normalement, utiliser la commande \verb*=\ = (le symbole «\bs» suivi
d'une espace, représentée ici par le symbole \verb*| |.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Apprendre \LaTeX\ c'est
formidable!
\end{lstlisting}
\producing
Apprendre \LaTeX\ c'est
formidable!
\end{texample}
\end{demo}
Dans le même ordre d'idées, le symbole «\verb=~=» insère une espace
insécable entre deux mots, de telle sorte que {\LaTeX} ne pourra
placer les mots sur des lignes différentes. Vous devriez insérer ce
symbole dans les noms ou entre une quantité et son unité.
\begin{demo}
\begin{texample}
\begin{lstlisting}
M.~Tremblay me doit au
moins 200~\$.
\end{lstlisting}
\producing
M.~Tremblay me doit au moins 200~\$.
\end{texample}
\end{demo}
Il peut arriver que l'espace générée par un retour à la ligne
\emph{simple} s'avère indésirable. Dans de tels cas, placez un symbole
de commentaire «\verb=%=» à la fin de la ligne.
\begin{demo}
\begin{texample}
\begin{lstlisting}
Donald Knuth est un dieu
\textsuperscript{[citation]}
.
\end{lstlisting}
\producing
Donald Knuth est un dieu
\textsuperscript{[citation]}
.
\end{texample}
\begin{texample}
\begin{lstlisting}
Donald Knuth est un dieu%
\textsuperscript{[citation]}%
.
\end{lstlisting}
\producing
Donald Knuth est un dieu%
\textsuperscript{[citation]}%
.
\end{texample}
\end{demo}
\subsection{Caractères réservés}
\label{sec:bases:caracteres:reserves}
Comme à peu près tous les langages de programmation, {\TeX} réserve
certains caractères pour son usage interne. Les caractères suivants sont
interprétés comme des commandes:
\begin{center}
\verb=# $ & ~ _ ^ % { }=
\end{center}
Pour utiliser les symboles ci-dessus tels quels dans le texte, il faut
les précéder par le symbole «\bs»:
\index{#@\cs{}\texttt{\#}}
\index{$@\cs{}\texttt{\$}} %$
\index{&@\cs{}\texttt{\&}}
\index{_@\cs{}\texttt{\_}}
\index{%@\cs{}\texttt{\%}}
\begin{demo}
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\#
\end{lstlisting}
\producing\ \#
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\$
\end{lstlisting}
\producing\ \$
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\&
\end{lstlisting}
\producing\ \&
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\_
\end{lstlisting}
\producing\rule{0pt}{1em}\ \_
\end{texample}
\end{minipage}
\\
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}[commentstyle=\mdseries]
\%
\end{lstlisting}
\producing\ \%
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\{
\end{lstlisting}
\producing\ \{
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\begin{texample}
\begin{lstlisting}
\}
\end{lstlisting}
\producing\ \}
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.15\linewidth}
\mbox{}
\end{minipage}
\hfill
\end{demo}
(Les commandes \verb=\^= et \verb=\~= servent à créer des accents;
voir la \autoref{sec:bases:caracteres:accents}.)
\subsection{Guillemets}
\label{sec:bases:caracteres:guillemets}
L'usage des guillemets nécessite une attention particulière dans
{\LaTeX}. Vous ne devriez pas utiliser dans le code source les
guillemets doubles «\verb="=» qui se trouvent couramment sur les
claviers d'ordinateurs.
Pour obtenir les guillemets anglais, il faut utiliser deux symboles
d'accent grave côte à côte pour les guillemets ouvrants «``» et deux
apostrophes côte à côte pour les guillemets fermants «''».
\begin{demo}
\begin{texample}
\begin{lstlisting}[escapeinside={}]
``guillemets anglais''
\end{lstlisting}
\producing
``guillemets anglais''
\end{texample}
\end{demo}
En typographie française, il convient d'utiliser les chevrons («\ »)
comme guillemets. Avec la configuration appropriée de \pkg{babel}
(voir la \autoref{sec:bases:francais}), vous pourrez utiliser
directement dans le code source les symboles \,\verb=«=\, et
\,\verb=»=\, disponibles sur un clavier français. L'espacement requis
autour des symboles est géré automatiquement.
\begin{demo}
\begin{texample}
\begin{lstlisting}
«guillemets français»
\end{lstlisting}
\producing
«guillemets français»
\end{texample}
\begin{texample}
\begin{lstlisting}
« guillemets français »
\end{lstlisting}
\producing
« guillemets français »
\end{texample}
\end{demo}
En français, les guillemets anglais ne servent que pour les citations
incluses, c'est-à-dire pour les citations à l'intérieur d'une
citation.
\begin{demo}
\begin{texample}
\begin{lstlisting}[escapeinside={}]
Elle m'a dit: «Laurent fait
dire ``non merci''.»
\end{lstlisting}
\producing
Elle m'a dit: «Laurent fait
dire ``non merci''.»
\end{texample}
\end{demo}
Les bons éditeurs de texte adaptés pour {\LaTeX} redéfinissent
l'action de la touche %
%% simili touche de clavier faite main à partir; utilisation de
%% \ooalign tirée de comprehensive.pdf, section 10.3
\raisebox{-2pt}{%
\ooalign{\hfil\Large\faSquare[regular]\hfil\cr\hfil\ttfamily\textquotedbl\hfil}} %
du clavier pour insérer les symboles appropriés selon la langue du
document.
Le paquetage \pkg{csquotes} \citep{csquotes} propose une autre approche
pour la saisie des guillemets. Il fournit une commande
\cmdprint{\enquote} qui entoure son argument des guillemets appropriés
selon le contexte et la langue du texte. Cette solution peut s'avérer
intéressante pour les nouveaux venus à {\LaTeX} qui n'ont pas encore
pris l'habitude d'entrer directement les bons guillemets.
\subsection{Trait d'union et tirets}
\label{sec:bases:caracteres:tirets}
On trouve en typographie soignée trois sortes de tirets de longueurs
différentes:
\begin{enumerate}
\item le trait d'union «-» qui sert à relier des mots entre eux;
\item le tiret demi-cadratin «--» qui sert à joindre deux éléments qui
comportent déjà des traits d'union (\emph{Trois-Rivières--Québec});
\item le tiret cadratin «---» qui sert à identifier le changement
d'interlocuteur dans les dialogues ou qui remplacent parfois les
parenthèses dans du texte normal.
\end{enumerate}
S'il est simple d'entrer un trait d'union à l'ordinateur, il est rare
que les claviers comportent des touches pour entrer les tirets
demi-cadratin et cadratin (ou alors cela se fait via une obscure
combinaison de touches). {\LaTeX} permet de créer facilement tous les
tirets ci-dessus en répétant simplement le trait d'union deux ou trois
fois.
\begin{demo}
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
-
\end{lstlisting}
\producing\ -
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
--
\end{lstlisting}
\producing\ --
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
---
\end{lstlisting}
\producing\ ---
\end{texample}
\end{minipage}
\end{demo}
\subsection{Accents et ligatures}
\label{sec:bases:caracteres:accents}
À la base, {\LaTeX} ne reconnait pas les lettres accentuées ni les
ligatures comme {\ae} et {\oe} qui ne sont pas courantes en anglais.
Néanmoins, il est possible de créer ces symboles avec des commandes.
\begin{demo}
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
\'{o}
\end{lstlisting}
\producing\ \'{o}
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}[escapeinside={}]
\`{o}
\end{lstlisting}
\producing\ \`{o}
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
\^{o}
\end{lstlisting}
\producing\ \^{o}
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
\"{o}
\end{lstlisting}
\producing\ \"{o}
\end{texample}
\end{minipage} \\
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
{\ae}
\end{lstlisting}
\producing\ \ae
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
{\AE}
\end{lstlisting}
\producing\ \AE
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
{\oe}
\end{lstlisting}
\producing\ \oe
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.2\linewidth}
\begin{texample}
\begin{lstlisting}
{\OE}
\end{lstlisting}
\producing\ \OE
\end{texample}
\end{minipage}
\end{demo}
Évidemment, entrer tous les accents d'un texte en français avec les
commandes ci-dessus se révélerait un véritable cauchemar.
Heureusement, avec la configuration appropriée, il est possible
d'entrer directement les lettres accentuées que l'on trouve couramment
sur un clavier, voire même certaines ligatures si l'on utilise
l'encodage UTF-8. La \autoref{sec:bases:francais} fournit les détails.
Les commandes pour les accents demeurent utiles pour composer les
lettres accentuées des langues européennes autres que le français.
Vous trouverez la liste de ces commandes, ainsi que celles pour
composer une multitude d'autres symboles, à la section~2 de la très
utile %
\doc[\emph{Comprehensive {\LaTeX} Symbol
List}]{comprehensive}{https://texdoc.net/pkg/comprehensive} %
\citep{comprehensive}.
\section{{\LaTeX} en français}
\label{sec:bases:francais}
Historiquement, {\LaTeX} était prévu pour la rédaction de documents en
anglais. Fort heureusement, il est aujourd'hui beaucoup plus aisé de
rédiger des documents dans d'autres langues.
\subsection{Approche moderne recommandée}
\label{sec:bases:francais:xetex}
La manière de loin la plus simple, et celle que je recommande
vivement, pour rédiger des documents en français consiste à
enregistrer le code source dans le codage de caractères %
\link{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8} %
et à compiler avec {\XeLaTeX}. Vous pourrez ainsi entrer les lettres
accentuées directement au clavier («\code{é}») sans devoir passer par
les commandes {\TeX} de la section précédente («\code{{\bs}'e}»).
Vous devrez aussi charger le paquetage \pkg{fontspec} \citep{fontspec}
dans le préambule pour obtenir les lettres accentuées dans le fichier
PDF. Cela ne représente toutefois pas véritablement une étape de
configuration additionnelle puisque ce paquetage est fréquemment
employé avec {\XeLaTeX} pour contrôler le chargement des polices de
caractères (plus de détails à la \autoref{sec:trucs:polices}).
\subsection{Approche traditionnelle}
\label{sec:bases:francais:pdftex}
L'approche plus traditionnelle, basée sur pdf{\LaTeX}, de rédaction de
documents dans une langue autre que l'anglais nécessite le chargement
de divers paquetages.
Tout d'abord, il faut charger le paquetage \pkg{inputenc}
\citep{inputenc} pour faire en sorte que les lettres accentuées seront
reconnues par {\LaTeX}. Il faut spécifier le type de codage utilisé.
Tel que mentionné ci-dessus, vous devriez aujourd'hui utiliser
l'UTF-8.
\begin{lstlisting}
\usepackage[utf8]{inputenc}
\end{lstlisting}
Après avoir configuré l'entrée des caractères, il faut également
configurer la sortie. Pour que la coupure automatique des mots
contenant des lettres accentuées fonctionne correctement avec
pdf{\LaTeX}, il faut activer le codage de sortie des caractères nommé
«T1» à l'aide du paquetage \pkg{fontenc} \citep{fontenc}.
\begin{lstlisting}
\usepackage[T1]{fontenc}
\end{lstlisting}
\subsection{Typographie et mots clés français}
\label{sec:bases:francais:babel}
Entrer du texte en français dans le code source n'est pas tout. Il
faut adapter {\LaTeX} au français, qu'il s'agisse des mots clés (tels
«Table des matières» ou «Bibliographie»), de la typographie ou de la
coupure des mots. La solution standard provient du paquetage
\pkg{babel} \citep{babel}. Celui-ci permet de combiner plusieurs
langues dans un même document et de passer de l'une à l'autre
facilement. Consultez la %
\doc{frenchb}{https://texdoc.net/pkg/babel-french} %
du paquetage \pkg{babel-french} pour connaitre toutes les adaptations
au français offertes par ce paquetage incontournable.
\subsection{Guillemets français}
\label{sec:bases:francais:guillemets}
Une espace fine devrait séparer les guillemets du ou des mots qu'ils
entourent. Pour que l'espace autour des symboles soit géré
automatiquement par \pkg{babel}, il suffit d'ajouter dans le préambule
la commande
\begin{lstlisting}
\frenchbsetup{og=«, fg=»}
\end{lstlisting}
\subsection{Séparateur décimal}
\label{sec:bases:francais:virgule}
Le séparateur décimal en français est la virgule et non le point. Or,
en mode mathématique, {\LaTeX} ajoute automatiquement une espace fine
après une virgule comme s'il s'agissait d'une énumération.
Afin de pouvoir utiliser de manière conviviale la virgule comme
séparateur décimal en mode mathématique, chargez dans vos documents le
très pratique paquetage \pkg{icomma} \citep{icomma}. Avec ce
paquetage, la virgule agira comme séparateur décimal en mode
mathématique seulement lorsqu'elle est suivie d'un caractère autre que
l'espace.
\begin{demo}
\begin{minipage}{0.5\linewidth}
\begin{texample}[0.6\linewidth]
\begin{lstlisting}
% nombre décimal
$x = 1,2$
\end{lstlisting}
\producing
$x = 1,2$
\end{texample}
\end{minipage}
\hfill
\begin{minipage}{0.5\linewidth}
\begin{texample}[0.6\linewidth]
\begin{lstlisting}
% énumération
$x = 1, 2, 3$
\end{lstlisting}
\producing
$x = 1, 2, 3$
\end{texample}
\end{minipage}
\end{demo}
\importantbox{Le paquetage \pkg{icomma} peut entrer en conflit avec
certains autres. Aussi est-il préférable de le charger parmi les
derniers dans le préambule, et certainement après les paquetages
\pkg{fontspec} et \pkg{unicode-math} avec {\XeLaTeX}.}
\subsection{Séparateur des milliers}
\label{sec:bases:francais:milliers}
Le séparateur des milliers en français est l'espace. Lorsque le
paquetage \pkg{numprint} \citep{numprint} est chargé, \pkg{babel}
fournit la commande \cmd{\nombre} pour formater automatiquement les
nombres.
\begin{demo}
\begin{texample}
\begin{lstlisting}
\nombre{123456789}
\end{lstlisting}
\producing
\nombre{123456789}
\end{texample}
\end{demo}
Le \autoref{tab:bases:francais} résume les divers enjeux liés à la
rédaction en français avec {\LaTeX} et les paquetages qui offrent des
solutions.
\begin{table}
\centering
\caption{Principaux enjeux de rédaction en français et paquetages
offrant des solutions}
\label{tab:bases:francais}
\begin{tabularx}{1.0\linewidth}{Xl}
\toprule
Enjeu & Solution \\
\midrule
\addlinespace[0.5\normalbaselineskip]
Traduction des mots clés prédéfinis & \pkg{babel} \\
\addlinespace[0.5\normalbaselineskip]
Coupure de mots & \pkg{babel} \\
\addlinespace[0.5\normalbaselineskip]
Typographie française & \pkg{babel} \\
\addlinespace[0.5\normalbaselineskip]
Lettres accentuées dans source & source en UTF-8 (\XeLaTeX) \\
& \pkg{inputenc} (\LaTeX) \\
\addlinespace[0.5\normalbaselineskip]
Lettres accentuées dans sortie & \pkg{fontspec} (\XeLaTeX) \\
& \pkg{fontenc} (\LaTeX) \\
\addlinespace[0.5\normalbaselineskip]
Virgule comme séparateur décimal & \pkg{icomma} \\
\addlinespace[0.5\normalbaselineskip]
Espace comme séparateur des milliers & \pkg{numprint} et
\pkg{babel} \\
\bottomrule
\end{tabularx}
\end{table}
%%%
%%% Exercices
%%%
\section{Exercices}
\label{sec:bases:exercices}
\Opensolutionfile{solutions}[solutions-bases]
\begin{Filesave}{solutions}
\section*{Chapitre \ref*{chap:bases}}
\addcontentsline{toc}{section}{Chapitre \protect\ref*{chap:bases}}
\end{Filesave}
\begin{exercice}[nosol]
Utiliser le fichier \fichier{exercice-minimal.tex}.
\begin{enumerate}
\item Compiler le document avec la classe \class{article}, puis avec
la classe \class{book}. Observer le résultat.
\item Ajouter du texte en français (avec accents), puis compiler et
observer le résultat.
\end{enumerate}
\end{exercice}
\begin{exercice}
\label{ex:base:commandes}
Modifier le fichier \fichier{exercice-commandes.tex} afin
de produire le texte ci-dessous.
\begin{demo}
\fbox{\includegraphics[viewport=108 551 502 665,clip=true,width=0.98\linewidth]{auxdoc/exercice-commandes-solution}}
\end{demo}
\begin{sol}
Il y a trois modifications principales à apporter au fichier.
\begin{enumerate}[1.]
\item La commande {\LaTeX} qui imprime le logo de LaTeX n'ayant
pas d'argument, il faut l'écrire sous la forme
\verb={\LaTeX}= ou \verb=\LaTeX{}= pour éviter que l'espace
qui suit ne soit avalée par la commande.
\item Il faut délimiter par des accolades la zone à laquelle la
commande \cmdprint{\bfseries} doit s'appliquer:
\begin{lstlisting}
{\bfseries limitée}
\end{lstlisting}
\item Il faut utiliser l'environnement \Pe{enumerate} pour les
listes numérotées. L'environnement \Pe{itemize} sert pour les
listes à puces.
\end{enumerate}
\end{sol}
\end{exercice}
\begin{exercice}[nosol]
\begin{enumerate}
\item Compiler le fichier \fichier{exercice-classe+paquetages.tex}.
\item Changer la police du document pour 11~points, puis 12~points.
Observer l'effet sur les marges et sur la coupure automatique des
mots dans le document compilé.
\item Activer le paquetage \pkg{icomma} en supprimant le symbole
\% au début de la ligne dans le préambule. Compiler le document
et observer l'effet sur la formule mathématique.
\item Charger le paquetage \pkg{numprint} avec l'option
\verb=autolanguage= (\emph{après} le paquetage \pkg{babel}). Dans
le code source de la formule mathématique, changer
\begin{lstlisting}
10 000
\end{lstlisting}
pour
\begin{lstlisting}
\nombre{10000}
\end{lstlisting}
Compiler et observer le résultat.
\end{enumerate}
\end{exercice}
\Closesolutionfile{solutions}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "formation-latex-ul"
%%% TeX-engine: xetex
%%% coding: utf-8
%%% End:
|