Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
A
Apprentissage et pratique de L TEX
Manuel P-G
semestre
Licence
Ce document est plac sous la licence libre GNU Free Documentation Licence . : vous tes libres de
lutiliser, le diuser et le modier, sous rserve de conserver une licence compatible. Pour plus de
dtails, voir le chier licence.txt dans les sources du document, disponibles ladresse
http://people.math.jussieu.fr/~mpg/lm204/files/sources.zip.
Prambule
A
LTEX est un systme de prparation de documents qui occupe une position dominante parmi
les mathmaticiens pour la ralisation de cours, feuilles dexercices, notes de travail, articles de
recherche. . . Les raisons de son omniprsence sont, outre sa capacit mettre convenablement
en forme les formules mathmatiques les plus compliques, la qualit professionnelle du rsultat
(tant pour le texte que les mathmatiques) permettant une publication directe, mais surtout sa
faon de concevoir un document structur, en sparant son fond (le sens du texte) de sa forme (la
mise en pages) et en dchargeant lauteur de tches fastidieuses, lui permettant ainsi datteindre
une grande productivit.
A
En dehors du milieu mathmatique universitaire, LTEX a aussi sa place. Il est utilis par des
scientiques de toutes disciplines et certains enseignants en mathmatiques du secondaire, pour
ses performances dans la composition des mathmatiques. Certains linguistes et littraires
lapprcient pour son excellente gestion de document complexes, munis par exemple de lourds
appareils de notes. Quelques diteurs gnralistes lutilisent de prfrence des outils de PAO
pour produire plus rapidement des documents structurs ; des banques et grandes compagnies
lexploitent pour mettre en forme automatiquement et avec une bonne qualit des documents
issus de bases de donnes.
A
Malgr ces nombreux succs, LTEX reste trop souvent peru comme un outil de spcialiste. Une
des raisons est sa dicult dapprentissage. Celle-ci est en partie relle : dune part, sa mthode de
prparation des documents, sparant code source et rsultat, nest pas intuitive pour qui na pas
une certaine culture informatique, et elle se prte peu un auto-apprentissage sans document de
A
rfrence. Enn, de part son histoire, LTEX ne forme pas un tout cohrent, et son univers peupl
de modules et de programmes auxiliaires, souvent encore trop loign des standards actuels, peut
drouter.
Mais une partie des dicults dapprentissage est plus environnementale quintrinsque. En
A
eet, on apprend souvent LTEX sur le tas, la va-vite, pour produire un mmoire, forcment
rendre pour hier, en recopiant des recettes trouves a et l, chez un collgue ou sur internet. Sur
A
ce point, LTEX ne se distingue pas des autres outils ou disciplines : on lapprend mieux et plus vite
en suivant un cours structur et en prenant le temps de progresser tape par tape, que tout seul
et dans lurgence.
A
Par ailleurs, LTEX a beaucoup volu au cours des dernires annes. Il est par exemple capable de
produire des documents PDF exploitant les diverses possibilits de ce format. De nombreux modules gnralistes ou spcialiss fournissent des solutions simples des problmes autrefois compliqus. Les (bonnes) pratiques voluent, tenant compte de lexprience accumule. Apprendre
A
LTEX sur le tas en recopiant des exemples droite gauche ne permet pas de proter de ces
progrs : on se contente souvent de la premire solution, fut-elle trs approximative, qui semble
marcher sur le moment, et qui deviendra vite une (mauvaise) habitude. On risque ainsi de rencontrer plus tard des problmes inattendus, ou tout simplement de ne pas atteindre le maximum
en termes decacit ou de qualit du rsultat.
f-preface.tex r --
iii
Prambule
r --
Pour toutes ces raisons, je suis extrmement heureux davoir loccasion cette anne, grce notamment au dynamisme et la disponibilit de certains collgues, de donner ce cours, que jespre
structur et bien inform, dans le cadre dun module la deuxime anne de licence. De telles initiatives sont ma connaissance rares en France, et pourtant me semblent trs utiles, tant la capacit
communiquer, notamment par le biais de documents lectroniques soigns, est importante aujourdhui dans le milieu scientique (mais pas seulement).
Loutil informatique, cens faciliter de nombreuses tches, est droutant ou rebutant pour certains. Dans le domaine de la typographie, il a longtemps t une source dappauvrissement et de
A
baisse de qualit. Au contraire, LTEX reprsente, dans son domaine, un exemple doutil ecace,
relevant le d de rendre plus simple et plus rapide la production de documents, en conservant
une qualit typographique la hauteur de la tradition des compositeurs au plomb. Jespre vous
en convaincre au long de ce cours.
A
Bien sr, lecacit de LTEX ne se comprend vraiment que par la pratique. Il est indispensable,
en lisant ce cours, de mettre en application les lments prsents. Pour cela, les exercices accompagnant le cours sont un bon point de dpart. Ils sont en gnral accompagns de corrigs
dtaills, et comportent parfois des complments de cours, qui ne seront pas toujours repris dans
ce polycopi.
A
Mais les exercices sont souvent assez rducteurs : la seule faon de vraiment pratiquer LTEX est
de mettre en forme de vrais documents. En eet, les techniques prsentes dans ce cours ne sont
que des outils, dont le but est de servir votre document, et quil faut savoir utiliser bon escient.
Je vous souhaite autant de plaisir lire ce cours que jen ai eu lcrire et lenseigner. Toutes
vos remarques ou questions sont les bienvenues ladresse mpg@math.jussieu.fr.
Remerciements
Trop brivement, jaimerais remercier les personnes suivantes.
Pour lorganisation du module : Omer A, Dominique L B, Laurent K,
A
Muriel T. Pour LTEX au CIES Jussieu : Cline C, Benjamin C, Ismal S,
Michel L. Du plateau C ou assimil : Jrme G, Julien C, Julien G et
bien dautres. Les contributeurs de fr.comp.text.tex, en particulier Jean-Cme C et
Denis B. Pour leur ractivit et leur intrt, je remercie tous les tudiants ayant suivi le
module. Et bien sr, pour avoir cr TEX et lavoir donn au monde, Donald K. Merci !
iv
f-preface.tex r --
iii
Prise de contact
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Le mode texte
.
.
.
Prsentation du module . . . . . . . . . . . . . . . .
.. Organisation . . . . . . . . . . . . . . . . .
.. Contenu . . . . . . . . . . . . . . . . . . . .
A
Prsentation de LTEX . . . . . . . . . . . . . . . . .
.. Possibilits . . . . . . . . . . . . . . . . . . .
.. Particularits . . . . . . . . . . . . . . . . .
Installation . . . . . . . . . . . . . . . . . . . . . . .
.. Windows . . . . . . . . . . . . . . . . . . . .
.. Mac OS X . . . . . . . . . . . . . . . . . . .
.. Linux . . . . . . . . . . . . . . . . . . . . . .
Premiers documents . . . . . . . . . . . . . . . . . .
Bases thoriques . . . . . . . . . . . . . . . . . . . .
.. Commandes, arguments, environnements
.. Espaces et ns de ligne . . . . . . . . . . . .
Exercices . . . . . . . . . . . . . . . . . . . . . . . .
.. Contenu des exercices . . . . . . . . . . . .
Structure du document
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Classes de documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.. Notes marginales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
f-tables.tex r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Rappels et complments . . . . . . . . . . . . . .
.. Source minimal et encodages . . . . . .
.. Messages derreur courants . . . . . . .
Dnitions . . . . . . . . . . . . . . . . . . . . .
.. Commandes simples . . . . . . . . . . .
.. Commandes avec arguments . . . . . .
.. Commandes avec arguments optionnels
.. Environnements . . . . . . . . . . . . .
.. Rednitions . . . . . . . . . . . . . . .
.. Couleurs . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Inclusion dimages . . . . . . . .
.. La question des formats
.. Inclusion simple . . . .
.. Options dinclusion . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Figures
vi
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
f-tables.tex r --
r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tableaux simples . . . . . . . . . . . .
.. Les bases . . . . . . . . . . . .
.. Colonnes de type paragraphe
.. Placement . . . . . . . . . . .
.. En mode mathmatique . . .
Techniques plus avances . . . . . . .
.. Matriel automatique . . . . .
.. Colonnes personnalises . . .
.. Fusion de cellules . . . . . . .
.. Ajustement de la largeur . . .
.. Couleurs . . . . . . . . . . . .
.. Aspects esthtiques . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Note technique . . . . . . . . . . . . . . . . . . . .
Code informatique . . . . . . . . . . . . . . . . . .
A
.. Outils de LTEX . . . . . . . . . . . . . . .
.. Avec le module fancyvrb . . . . . . . . . .
.. Apart : le verbatim dans des arguments .
.. Avec le module listings . . . . . . . . . . .
Concentr dorthotypographie . . . . . . . . . . .
.. Rfrences pour aller plus loin . . . . . .
f-tables.tex r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
lments de programmation
.
.
.
.
Complments divers
.
.
.
.
.
.
.
.
.
.
.
Tableaux
Placement . . . . . . . . . . . . . . . .
.. Simple . . . . . . . . . . . . .
.. Habill par le texte . . . . . .
.. Flottant . . . . . . . . . . . . .
.. Une astuce classique . . . . .
Autres oritures graphiques . . . . .
.. Rotations et mises lchelle .
.. Encadrement . . . . . . . . .
.. Une police de symboles . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
vii
r --
Personnalisation
.
.
.
.
.
Polices . . . . . . . . . . . . . .
En-ttes et pieds de page . . .
Titres de chapitres et sections .
Listes . . . . . . . . . . . . . . .
Flottants . . . . . . . . . . . . .
Prsentations vidoprojetes
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
f-tables.tex r --
Extrait de source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple dexemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Dnitions simples . . . . . . . . . . .
Utilisation de \xspace . . . . . . . .
Commandes avec arguments . . . . .
Commande avec argument optionnel
Dnitions denvironnements . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
f-tables.tex r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ix
r --
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
f-tables.tex r --
r --
.
.
A
Compteurs de base de LTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Units de longueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
A
Comment LTEX voit les caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les trois dimensions des botes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
f-tables.tex r --
xi
Prise de contact
. Prsentation du module
.. Organisation
Le module est organis en sances de cours-TP de deux heures. En moyenne, sur chaque
sance, une heure sera consacre au cours et lautre la pratique, sauf la dernire sance consacre
lexamen. Les exercices seront en gnral trop longs pour tre termins en une heure et sont
destins tre nis la maison. Ils contiennent parfois des questions volontairement diciles ou
demandant un travail de recherche personnelle ; ces questions sont gnralement signales et il
est conseill de les garder pour la n.
Le dcoupage en chapitres du prsent polycopi correspond en premire approximation au
dcoupage du cours en sances ; parfois, lordre sera lgrement modi pour clarier lexposition.
Lvaluation des connaissances consistera en deux parties obligatoires et une optionnelle.
. Un document libre (rapport) prparer la maison, individuellement ou par binme. Les
modalits prcises sont dcrites dans un document spar .
. Un examen pratique sur machine, en temps limit.
. Un devoir la maison optionnel.
Lexamen, comme le devoir la maison et la plupart des exercices, consiste en un document
reproduire aussi dlement que possible (hormis le ligrane reproduire lui-mme).
La dernire version de ce polycopi, ainsi que les exercices, leurs corrigs, les supports de prsentation utiliss en cours, et dirents documents daccompagnement (aide-mmoire, liste de
symboles mathmatiques, etc.) sont disponibles ladresse suivante :
http://people.math.jussieu.fr/~mpg/lm204/files/
Une page voisine comporte par ailleurs la progression du cours sance par sance, avec chaque
fois que cest possible lindication des parties correspondantes des dirents documents de rfrence. Une bibliographie spare t distribue.
.. Contenu
A
Le but du cours nest en aucun cas de tout vous apprendre sur LTEX : dune part parce que cest
impossible, dautre part parce que certaines de ses possibilits ne vous seront sans doute pas utiles
immdiatement. En revanche, les objectifs sont les suivants :
Vous fournir un socle solide de connaissances de bases, si possible exempt de mauvaises
A
habitudes. Ce cours se veut tour dhorizon relativement neutre des possibilits de LTEX.
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-eval-rapport.pdf
. http://people.math.jussieu.fr/~mpg/lm204/prog.html
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-biblio.pdf
c-intro.tex r --
Prise de contact
r --
Vous donner des pistes pour tre en mesure par la suite de continuer seul votre apprentissage.
Les cinq premiers chapitres du cours fournissent le minimum vital pour composer la plupart des documents scientiques ne comportant pas dautre lment complexe que des formules
mathmatiques. Les chapitres suivants prsentent soit des lments plus spciques (gures, tableaux, listings, prsentations) soit des lments gnralistes dusage moins courant, ou approfondissent certains points voqus prcdemment.
A
. Prsentation de LTEX
.. Possibilits
Mme sil est principalement connu pour ses possibilits mathmatiques, qui sont en eet praA
tiquement illimites, LTEX est adapt la plupart des types de documents. En particulier, il prend
soin de beaucoup de dtails concernant le texte : csure, justication, ligatures. . . Par ailleurs, il est
capable de produire directement des graphiques sophistiqus (possibilit qui ne sera pas tudie
en cours, faute de temps).
Pour quelques exemples, je renvoie aux transparents . Observez les eets de texte, la parfaite
intgration des mathmatiques au reste du texte, les possibilits darrangements complexes de
formules. . . Pour dautres exemples, ce cours lui-mme, ainsi que les trois livres et deux documents
A
lectroniques donns en rfrence sont bien sr raliss avec LTEX.
A
Par ailleurs, mme si nous naurons pas trop le temps dapprofondir cet aspect, LTEX est aussi
un langage de programmation complet. Cest ce qui lui confre une partie de sa puissance : dune
part parce que de nombreuses personnes ont ainsi crit (et publi) des modules tendant ses possibilits, que nous pouvons utiliser, mais aussi parce quil est possible de programmer soi-mme
certains aspects de ses documents pour les automatiser ou les rendre plus aisment modiables.
.. Particularits
A
Il est important de raliser que LTEX est un systme de prparation de documents qui na essentiellement rien voir avec un traitement de texte ( part la nalit commune : produire un
document mis en forme). Dans un traitement de texte de type Word ou OpenOce Writer, le
A
texte est mis en forme en direct pendant que vous le saisissez. En LTEX, le processus est asynchrone : vous saisissez dans un chier votre texte accompagn dinstructions de mise en forme
A
et vous demandez de temps en temps LTEX dexcuter ces instructions.
Un peu de vocabulaire : le chier dans lequel vous crivez votre texte et les instructions de
mise en forme, dont lextension est .tex, est appel le chier source ou, par lision, le source. Le
processus qui le transforme en un document visualisable ou imprimable (en gnral au format
PDF) est appel compilation, par analogie avec des langages informatiques comme le C.
Si vous navez pas une certaine habitude des langages informatiques compils, il est essentiel de
bien comprendre la distinction entre le source et le document nal. Ces deux chiers sont complmentaires : le PDF est la forme distribuable, le source est la forme modiable. La compilation,
A
qui transforme le source LTEX en document PDF, nest pas un processus rversible. Il est comparable limpression dun document Word : le document imprim est lisible sans ordinateur, mais
. http://people.math.jussieu.fr/~mpg/lm204/files/01-intro.pdf
A
. On dit que LTEX est un langage de balisage. Il est sur certains points comparables au couple HTML & CSS.
c-intro.tex r --
r --
A
. Prsentation de LTEX
nest plus modiable comme lest le chier .doc. Cette sparation est heureuse car elle permet de
bien distinguer les rles : pour lauteur, le .tex, pour les lecteurs, le .pdf.
Interrompons un moment cette prsentation un peu thorique pour regarder un extrait dun
A
source LTEX (on verra bientt quoi ressemble un source complet). On voit sur lexemple .
comment le texte est entreml dinstructions de mise en forme comme \textit pour mettre
en italique, ou $...$ pour dlimiter les fragments de formule, ^ pour mettre en exposant, de
commandes pour obtenir des symboles particuliers comme un point centr.
Des \textit{maths} ici :
$2^2 = 2 \cdot 2 = 2 + 2$.
E . Extrait de source
A
Un autre point sur lequel LTEX distingue plus les rles quun traitement de texte ordinaire est
que les tches de saisie des instructions, et dexcution de ces instructions, sont spares. Le programme nomm latex (ou plus prcisment, pdflatex) lit le chier .tex et produit le chier
.pdf, mais il faut un autre programme, appel diteur de texte, pour produire le source .tex. Sur
A
lexemple ., LTEX assure la transformation de la partie de gauche en la partie de droite, mais il
faut un logiciel distinct pour produire la partie de gauche.
Ainsi, contrairement un traitement de texte qui fait tout (saisie et excution des instructions),
A
un environnement de travail LTEX est divis en au moins deux programmes. En fait, cest encore
pire : le programme pdflatex lui-mme a besoin de nombreux chiers supplmentaires (classes
et modules, comme on le verra dans un instant) pour fonctionner, et parfois dautres programmes
auxiliaires (par exemple pour produire un index ou une bibliographie). Tous ces chiers et proA
grammes sont gnralement runis au sein dune distribution TEX. Pour travailler avec LTEX, il
A
vous faut donc installer une distribution TEX et un diteur adapt LTEX (voir section . pour
les dtails).
A
Une partie du dveloppement de LTEX, dont tmoigne la nombre impressionnant de modules
disponibles, est rendu possible par son statut de logiciel libre : chacun est libre dtudier son
fonctionnement en dtail, de lamliorer, de le redistribuer. Tous les logiciels recommands dans
ce cours sont des logiciels libres ; vous navez pas besoin de payer pour les utiliser le plus lgalement
du monde.
A
Enn, concluons cette section sur les particularits de LTEX en voquant quelques un de ses
dfauts.
A
LTEX est plus dicile apprendre seul quun traitement de texte, et il faut plus de temps pour
se sentir capable de faire ce que lon veut avec.
Il est parfois dicile installer, un peu htroclite, et lintgration entre les dirents modules
nest pas toujours parfaite.
Pendant la phase de compilation, si votre source comporte des erreurs de syntaxe, les messages derreurs sont parfois dlicats comprendre.
Pour certains types particuliers de documents, le manque de retour visuel immdiat peut
tre gnant.
. http://www.april.org/fr/articles/intro
c-intro.tex r --
Prise de contact
r --
Le dernier point est intrinsque, mais largement compens par le fait que pour la plupart des types
de documents, le mode de travail source & compilation est au contraire un avantage. Quant
aux trois premiers points, jespre que ce cours vous aidera les surmonter.
. Installation
A
Comme expliqu prcdemment, pour travailler avec LTEX, on a besoin de deux lments logiciels distincts :
On a le choix parmi les distributions TEX Live et MiKTEX . Pour les diteurs, le plus classique
est TeXnicCenter , mais TeXmaker est aussi un trs bon choix. (Deux autres bons diteurs sont
disponibles, mais ne sont pas libres : ils sagit de LeD et WinEDT.)
Un document spar dcrit en dtails linstallation dun environnement MiKTEX & TeXnicCenter sous windows. Ce choix nest pas forcment meilleur que les autres mais correspond la
conguration utilise en TP. Pour linstallation de cette conguration, il est essentiel de suivre le
document au moins jusqu la section . incluse.
.. Mac OS X
Bien quil y ait en principe plusieurs choix, lun se distingue ici trs clairement : il sagit de la
distribution MacTEX , drive de TEX Live et munie dun installateur spcique pour Mac OS. En
A
. LTEX est en fait lui-mme une extension dun autre systme, appel TEX. Une distribution contient en gnral
le programme TEX et tous ses drivs.
. Pour integrated development environment , soit environnement de dveloppement intgr.
. http://tug.org/texlive/
. http://ww.miktex.org/
. http://www.toolscenter.org/
. http://www.xm1math.net/texmaker/index_fr.html
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-install-miktex+txc.pdf
. http://tug.org/mactex/
c-intro.tex r --
r --
. Premiers documents
outre, elle intgre un diteur, TeXShop, et constitue donc elle seule un environnement complet
de travail.
Dautres bons diteurs, ainsi quun peu plus de documentation, sont fournis dans le paquet
supplmentaire MacTEXtras , qui mrite donc dtre install.
Signalons de suite un point technique mais facile rgler : il est conseill, ds la premire utilisation de TeXShop, daller dans le menu TeXShop, prfrences, onglet document, et dans la liste droulante encodage , de choisir latin (ou son synonyme iso--) ou ventuellement UTF-.
Si vous choisissez cette dernire option, il vous faudra changer loption passe inputenc, comme
expliqu dans la note (page ), par rapport certains exemples.
.. Linux
La distribution de rfrence est ici TEX Live (il faut mieux oublier teTEX qui se fait vraiment
vieille). Installez-la de prfrence depuis le gestionnaire de votre distribution Linux. Elle est souvent prsente sous la forme de plusieurs paquets : si un paquet nomm texlive-full existe,
installez-le. Sinon, installez au moins tous les paquets dont le nom contient latex ou recommended ; parfois certains paquets particuliers ne comportent pas le mot texlive dans leur nom
mme sils en font partie : cest par exemple le cas de latex-xcolor, latex-beamer, cm-super et
lmodern sous Debian et Ubuntu.
Concernant lditeur, le plus courant et sans doute un des meilleurs est Kile, mais vous pouvez
aussi utiliser TeXmaker, galement installer depuis le gestionnaire de paquets de votre distribution Linux.
Sous la plupart des distributions, lencodage par dfaut des diteurs sera lUTF-. Si vous conservez cet encodage, il vous faudra penser changer loption passe inputenc, comme expliqu
dans la note (page ), par rapport certains exemples. Sinon, vous pouvez slectionner latin
ou son synonyme iso-- comme encodage par dfaut, gnralement dans la partie diteur
du menu des prfrences de votre IDE. (Pour Kile . : menu conguration, congurer Kile, puis
dans la partie diteur, ouvrir/enregistrer et liste encodage. Pour TeXmaker . : menu options,
congurer TeXmaker, partie diteur, liste encodage.)
. Premiers documents
A
Voyons maintenant quoi ressemble un source LTEX complet. Le source . est insusant pour
un usage rel, mais juste assez complet pour compiler correctement. Il produit un document dune
page qui comporte le seul texte Hello, world! .
\documentclass{minimal}
\begin{document}
Hello, world!
\end{document}
c-intro.tex r --
Prise de contact
r --
sont les arguments de cette commande. La structure dun source comporte quelques contraintes :
. La premire ligne doit toujours tre une dclaration de classe de document, cest--dire
utiliser la commande \documentclass avec un argument.
. Tout le texte destin apparatre dans le document produit doit tre contenu entre les balises \begin{document} et \end{document}.
La partie prcdent le \begin{document}, ici rduite la premire ligne, est appele prambule
du document ; celle qui suit jusquau \end{document} constitue le corps du document ; enn tout
ce qui suit le \end{document} est ignor.
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amssymb}
\usepackage[french]{babel}
\newcommand\abs[1]{\lvert #1\rvert} % valeur absolue
\begin{document}
Un document plus raliste, avec du texte pour commencer.
Puis un deuxime paragraphe avec une quation $\abs{x} = r_0$
lintrieur.
Et un dernier paragraphe ?
\end{document}
. Il existe plusieurs classes de documents, dont la plus courante pour de courts document
est article : cest celle que nous utiliserons presque tout le temps pour les exemples et les
exercices.
. La classe de document peut prendre des options entre crochets, comme ici a4paper. On
utilisera systmatiquement cette option, la taille de papier par dfaut tant sinon le format
letter amricain.
. On peut, dans le prambule uniquement, charger des modules qui tendent les possibiA
lits de LTEX ou modient son comportement, avec la commande \usepackage.
. Pour pouvoir saisir des caractres accentus, on a besoin du module inputenc. Loption
lui passer dpend de lditeur utilis et de son rglage. Pour simplier, jcrirai toujours
latin1 : cest le seul rglage reconnu par TeXnicCenter, lditeur utilis en cours. Si on utilise TeXShop, on prendra soin de le rgler comme expliqu en section .. ; pour TeXmaker
ou Kile, voir la section ...
. Aussi appels extensions, paquets ou en anglais packages. Dans tout ce cours, jutiliserai module pour essayer
dcrire en franais correct, mais langlicisme package reste le terme le plus couramment utilis en gnral.
. Cependant, an de laisser le choix libre, je propose toutes les solutions des exercices en latin et en utf. Si vous
c-intro.tex r --
r --
. Premiers documents
. Pour que les caractres accentus utiliss en Franais apparaissent correctement dans le
A
PDF et que LTEX puisse calculer automatiquement les coupures de mots, il faut charger le
module fontenc avec loption T1.
. On peut charger dautres modules spciques, comme ici amsmath et amssymb qui tendent
A
les possibilits mathmatiques de LTEX.
. On utilise enn le module babel avec loption french pour annoncer que le document
A
produit est en Franais, ce qui permet LTEX de traduire certains titres produits automatiquement, de respecter certaines rgles typographiques franaises, etc.
. On peut en outre dnir des nouvelles commandes, comme ici \abs, que lon peut ensuite
A
utiliser dans le document comme toute autre commande standard de LTEX.
. Le caractre % introduit un commentaire : tout ce qui le suit jusqu la n de la ligne est
A
totalement ignor par LTEX. Il sert soit expliquer ce qui est fait dans le source, soit
masquer temporairement certains lments, sans pour autant les eacer du source.
. Enn, les coupures de ligne au sein du source ne correspondent pas aux coupures de ligne
A
dans le document nal : LTEX calcule celles-ci automatiquement pour bien remplir la zone
de texte.
Comme annonc, vous navez pas besoin de tout comprendre de ce document maintenant. Par
contre, retenez absolument que certaines options et certains modules sont obligatoires pour chaque
document. Un source de base est disponible en ligne (sinon, voir source .) et je vous conseille
fortement de vous en servir comme point de dpart pour tous les documents en franais que
vous produirez. (Ne pas utiliser loption a4paper et les trois modules chargs par cette base sera
considr comme une faute.)
\usepackage{hyperref}
Le \href{http://tug.org}{groupe
dutilisateurs de \TeX}.
E . Exemple dexemple
Par ailleurs, dans ce polycopi, tous les exemples supposeront que vous utilisez ce source de
base, et ne signaleront que les modules supplmentaires charger. De plus, pour conomiser la
place, le \begin{document} sera omis : tout est suppos tre dans le corps du document, sauf les
lignes prcdes dun let vertical, qui sont ajouter au prambule de base. Ainsi, lexemple .
reprsente en fait le source complet ..
Si vous voulez essayer les exemples du cours (ce qui est conseill), vous devrez donc chaque
fois faire cette substitution qui devrait vite devenir un rexe.
Il est maintenant recommand dessayer de compiler les sources . et .. Vous pouvez les
copier-coller depuis la version PDF de prsent polycopi.
Si vous observez attentivement le rsultat de la compilation de ces deux exemples, vous constaA
terez le numro en bas de page du . : cest le numro de page. LTEX (ou plus prcisment,
rglez votre diteur sur UTF- (ou que cest son rglage par dfaut), pensez remplacer latin1 par utf8 dans chaque
exemple ou corrig qui fera appel inputenc et utiliser les chiers de solution dont le nom contient utf8.
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-base.tex
. Pour tre exact, il faut ventuellement remplacer latin1 par utf8, selon le rglage de votre diteur.
c-intro.tex r --
Prise de contact
r --
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{hyperref}
\begin{document}
Le \href{http://tug.org}{groupe dutilisateurs de \TeX}.
\end{document}
. Bases thoriques
.. Commandes, arguments, environnements
A
Reprenons maintenant de faon un peu plus mthodique certains lments vus ci-dessus. LTEX
est un langage de balisage : dans le source sont entremls le texte rel de votre document et des
commandes pour le mettre en forme, sauf au tout dbut du document, dans le prambule, qui ne
comporte que des instructions, comme le chargement de modules.
A
Pour pouvoir donner des instructions LTEX, certains caractres ont une signication spciale.
En voici la liste complte :
\ { } $ & # ^ _ ~ %
Vous connaissez dj certains dentre eux, les autres seront prsents petit petit. Ce sont les
dix caractres qui napparatront pas tels quels dans le document si vous les saisissez simplement
dans le source mais provoqueront plutt des actions spciales. Nous verrons au prochain chapitre
comment les inclure dans un document.
A
Le caractre \ sert indiquer le dbut dune commande. Les noms de commandes en LTEX sont
de deux types :
. Les commandes-mot sont les plus courantes : leur nom est constitu dune ou plusieurs
lettres.
. Les commandes-caractre : leur nom est constitu dun unique caractre qui nest pas une
lettre.
Dans ce contexte, lettre signie lun des caractres non accentus de lalphabet, et la casse (majuscule ou minuscule) compte : \abc et \Abc sont deux commandes distinctes. Un exemple de
commande-caractre est la commande \% qui permet dobtenir le caractre .
Une commande peut prendre zro, un, ou plusieurs arguments, normalement dlimits par
des accolades {...}. Certains arguments, comme les options de la commande \documentclass,
sont optionnels : il peuvent tre omis. Dans ce cas, ils sont dlimits par des crochets carrs [...].
Dans tous les autres cas, le nombre dargument dune commande doit tre respect : ne pas passer
c-intro.tex r --
r --
. Bases thoriques
dargument une commande qui en attend provoquera des erreurs, parfois trs tranges. Il faut
aussi bien distinguer [...] et {...} qui ne sont pas interchangeables.
Dans tout ce cours, on prsentera ainsi les nouvelles commandes :
\documentclass[options]{classe}
Il est entendu que les arguments entre crochets peuvent tre omis. Les lments comme options
ne sont pas saisir tels que, mais remplacer par une valeur approprie.
Deux commandes sont particulires : \begin et \end. Utilises conjointement sous la forme
\begin{env}
contenu
\end{env}
elles dnissent un environnement dont le nom est env et le contenu contenu. Ainsi, on peut
dire que le corps du document est le contenu de lenvironnement {document}. chaque fois que
je ferai rfrence ainsi un nom entre accolades, il sagira du nom dun environnement .
A
Ceci constitue lessentiel de la syntaxe rgulire de LTEX. Il existe quelques autres lments
syntaxiques un peu moins cohrents, que nous aurons le temps de dcouvrir plus tard.
.. Espaces et ns de ligne
A
Des rgles particulires rgissent les espaces en LTEX. Parfois surprenantes au dbut, elles sont
en fait trs pratiques lusage (sauf peut-tre la premire). Les voici.
Comme on la vu, un retour la ligne seul est quivalent un espace. Deux retours la ligne
successifs (cest--dire une ligne vide dans le source) sont considrs comme dlimitant un paragraphe . Plusieurs lignes vides successives sont quivalentes une seule ligne vide.
. La rciproque est peut-tre fausse : il marrivera domettre les accolades quand le contexte indique assez clairement quil sagit dun environnement.
. Comme en exercice, jintroduis parfois en exemple des nouvelles commandes, comme ici celle servant comA
poser le logo LTEX. Quand elles sont susamment simples, elles sont alors considres comme connues pour la suite,
mme si elles ne sont jamais formellement prsentes ailleurs. Cest le cas ici.
. On peut aussi sparer les paragraphes par la commande \par ; je le ferais souvent dans les exemples pour gagner
de la place, mais dans la pratique une ligne vide est bien plus courante.
c-intro.tex r --
Prise de contact
r --
Vu quun retour la ligne dans le source est interprt comme un espace (ce qui est trs pratique
en fait), pour provoquer un retour la ligne dans le document, le plus simple est de changer de
paragraphe en laissant une ligne vide dans le source. Ceci insre aussi un retrait dalina au dbut
du paragraphe suivant.
On verra au prochain chapitre comment provoquer un retour la ligne qui ne soit pas un changement de paragraphe. On y apprendra aussi les commandes servant laisser des espaces vides
horizontalement ou verticalement : pour linstant, retenez quil est vain de chercher atteindre ce
rsultat en laissant plusieurs espaces ou plusieurs lignes vides dans le source.
. Exercices
Il ny a pas dexercice formel pour ce chapitre : votre travail pour cette semaine consiste instalA
ler LTEX sur votre ordinateur personnel si vous en possdez un, ou vous familiariser avec linsA
tallation LTEX disponible dans les salles libre-service de luniversit. Vous devez savoir compiler
et visualiser un document simple. Vous tes encourags partir du source . et le modier.
A
De faon gnrale, une attitude active, consistant essayer de jouer avec LTEX pour voir ce
que vous pouvez en faire, au-del de la simple rsolution des exercices proposs, ne pourra vous
tre que bnque.
.. Contenu des exercices
Les exercices sont fournis dans des archives nommes exos-nn.zip (ou exos+cor-nn.zip
si la correction est incluse), contenant tous les chiers utiles, o nn est le numro de la sance ou
le nom (dm, exam). Ils consistent en gnral en un document reproduire, qui contient parfois
des indications sur lexercice, ou des informations intressantes, mais parfois seulement du texte
de remplissage. Les types de chiers potentiellement prsents dans une archive sont :
exo-nn.pdf : le document reproduire, en pdf ;
brut-nn-enco.pdf : le texte brut de lexercice, prt tre copie-coll, fourni dans dirents encodages (choisir latin1 pour TeXnicCenter) ;
parfois des images utiles pour reproduire le document ;
sol-nn-enco.tex : le source complet du document reproduire, prt compiler (et
modier), mais sans commentaires ;
cor-nn.pdf : le source du document reproduire, accompagn de commentaires.
Les solutions et corrigs des exercices sont une source importante dinformation, car ils illustrent
et expliquent les notions vues en cours sur des documents complets : nhsitez pas vous en
inspirer lors de la rdaction de vos documents. Par ailleurs, le code des exemples est souvent mal
prsent pour conomiser la place : celui des solutions est un bien meilleur exemple sur ce point
( mon avis important). Enn, les corrigs comportent parfois des informations qui ne sont pas
reprises dans le cours.
c-intro.tex r --
Le mode texte
. Caractres et symboles particuliers
.. Caractres rservs
A
On a dj prsent (section ..) les dix caractres rservs par LTEX pour des usages particuliers, et promis dexpliquer comment les obtenir dans le document. Il est temps de tenir promesse :
voici donc les commandes, table ..
A
Comme on le constate, LTEX ne propose pas de commande pour obtenir certains caractres en
mode texte. On doit faire appel au module textcomp pour disposer des commandes de lavantdernire colonne, et tre en mode mathmatique pour utiliser celles de la dernire colonne (les
modes mathmatiques seront vus au chapitre ).
Je rappelle que faire appel au module textcomp signie placer la ligne
\usepackage{textcomp}
dans le prambule du document. Si vous oubliez de le faire et essayez dutiliser quand mme une
des commandes fournies par ce module, vous obtiendrez le message derreur undened control
sequence, qui signie en gros commande non dnie . En gnral, vous obtenez ce message
derreur soit quand vous avec oubli de charger un module, soit quand vous avez fait une faute de
frappe dans le nom dune commande.
.. Accents et symboles
part les caractres rservs que nous venons de voir, vous pouvez saisir tous les autres caractres directement dans le source. Tous ? Non ! Une poigne dirrductibles rsiste, essentiellement
pour deux types de raison :
Caractre
Usage
\
{
}
&
commandes
argument ou
groupe
mode math
alignements
dnitions
exposant
indice
espace inscable
commentaire
A
LTEX
textcomp
Math
\textbackslash
\backslash
\{
\textbraceleft
\{
\}
\textbraceright
\}
\$
\$
\&
\#
\^{}
\_
\~{}
\textasciitilde
\%
c-texte.tex r --
Le mode texte
r --
, , , , . . .
, , , , . . .
a me fend le cur ! Tch!
A
LT
c-texte.tex r --
r --
Exemple
\og guillemets \fg
M\up{me}, D\up{r}
1\ier, 1\iere, 1\ieres
2\ieme 4\iemes
\No 1, \no 2
20~\degres C, 45\degres
\bsc{M. Durand}
\today
Rsultat
guillemets
M, D
, ,
N , n
C,
M. D
septembre
En plus de traduire certains textes automatiques, dassurer une csure correcte des mots, et
daider au respect de quelques rgles orthotypographiques propres au Franais, loption french
de babel fournit aussi quelques commandes utiles, rsumes par la table ..
Comme on le sait, les commandes-mot comme \ier ont tendance avaler les espaces qui les
suivent, de sorte que le 1\ier jour donne le jour . Il faut penser protger lespace en
saisissant le 1\ier{} jour pour obtenir le rsultat correct le jour .
Les commandes fournies par french permettent dviter cet inconvnient et de restaurer automatiquement lespace lorsquil est ncessaire, condition de charger le module xspace auparavant. Pour cela, dcommentez la ligne du source minimal propos. (Ceci sera systmatiquement utilis dans les corrigs des exercices.)
.. Interlude : documentation
A
Je lai dj dit, vous ne saurez jamais tout de LTEX. Il est donc important de prendre lhabitude de
consulter des documents de rfrence, et jen citerai souvent. La plupart des documents que je cite
sont disponible en ligne, mais aussi prsents sur votre disque dur : ils font partie de la distribution
TEX.
Pour les localiser, chaque distribution fournit un outil. Sous MiKTEX, il sappelle mthelp, sous
TEX Live cest texdoc. Dans les deux cas, lutilisation est la mme : il sagit de taper, en ligne de
A
. Vous laurez remarqu, LTEX coupe automatiquement certains mots en n de ligne. Les rgles concernant la
csure (laction de couper les mots) dpendant fortement de la langue.
. Synonyme des options francais (sans cdille) et frenchb (pour french babel). Jutiliserai souvent frenchb par
habitude, car les trois nont pas toujours t synonymes.
. Cest--dire, retirez le signe % prsent en dbut de ligne.
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-minimal.tex
c-texte.tex r --
Le mode texte
r --
chier
texdoc chier
mthelp
module
texdoc module
mthelp
Vous pouvez ainsi rechercher soit un chier dont vous connaissez le nom, comme symbols-a4.
pdf, soit de la documentation sur un module dont vous connaissez le nom, comme babel. Par
exemple, pour rechercher la documentation de babel sous TEX Live, vous tapez texdoc babel
dans une ligne de commande. Pour rechercher le chier symbols-a4.pdf sous MiKTEX, tapez
mthelp symbols-a4.
Si pour une raison ou une autre vous narrivez pas localiser la documentation sur votre disque
A
dur, vous pouvez essayer en ligne. Le site de rfrence pour tous les modules LTEX et la plupart des
documents le concernant est le CTAN . Il dispose dune page de recherches . De plus, chaque
A
module LTEX est recens dans un catalogue : des informations (dont parfois un lien vers la documentation) sur chaque module sont disponibles ladresse http://ctan.org/pkg/nom.
Par ailleurs, dans la version PDF du prsent polycopi, le nom dun module est en gnral un lien
vers cette page de description, de mme que le nom dun chier que je prsente pour la premire
fois est souvent un lien vers sa version sur le CTAN.
titre dexercice, vous pouvez rechercher dans symbols-a4 comment produire le symbole du
Yen (). Faites-le vraiment, chercher des choses dans un document touu nest pas si facile au
dbut et il faut vous y habituer.
. Changements de fonte
.. Modle thorique
A
Pour LTEX, une police est dtermine par paramtres logiquement indpendants : la famille,
la graisse, le forme, et la taille. Ici, logiquement indpendant signie quon peut demander
A
LTEX de changer le taille sans quil change la graisse, mais cela ne signie pas que toutes les
combinaisons existent ncessairement dans une fonte donne.
Contrairement certains logiciels qui encouragent utiliser beaucoup de polices au sein dun
A
mme document, LTEX ne propose par dfaut que trois familles : une famille romaine (avec empattements) qui est en gnral la police principale, une famille sans empattements (dite aussi sans
srif) et une de type machine crire, gnralement chasse xe (cest--dire que tous les
caractres ont la mme largeur).
Parmi les quatre paramtres vus ci-dessus, la taille est un peu part. La table . montre comA
ment changer les trois autres. Les polices par dfaut de LTEX sont utilises pour les illustrations.
. Pour en ouvrir une sous Windows, enfoncez simultanment la touche Windows du clavier et la lettre R, puis
saisissez cmd dans la bote de dialogue. Sous Mac ou Linux, vous avez probablement une icne terminal quelque
part.
. http://ctan.org/
. http://ctan.org/search.html
. Cest un peu faux car il faudrait aussi considrer lencodage, mais cest une notion technique heureusement
inutile ici. On a dj bien assez faire avec lencodage dentre.
c-texte.tex r --
r --
. Changements de fonte
Famille
\textrm{}
\rmfamily
\textsf{}
\sffamily
\texttt{}
\ttfamily
romain
sans empattements
chasse fixe
Graisse
\textmd{}
\mdseries
\textbf{}
\bfseries
graisse normale
gras
Forme
\textup{}
\upshape
\textit{}
\itshape
\textsl{}
\slshape
\textsc{}
\scshape
droit
italique
pench
petites capitales
c-texte.tex r --
Le mode texte
r --
Taille
\tiny
taille
\scriptsize
taille
\footnotesize
taille
\small
taille
\normalsize
taille
\large
taille
\Large
taille
\LARGE
taille
taille
\huge
taille
\Huge
bla}
Lintrt dun tel message derreur est que le numro de ligne indiqu est proche du lieu o vous
avez probablement oubli une accolade.
Enn, il existe une commande particulire pour changer la forme de fonte courante : la commande \emph sert mettre du texte en valeur, en passant en italique si lon tait en droit et rciproquement. Il est conseill de lutiliser plutt quune commande de mise en forme directe, lorsque
quon voudra insister sur un mot comme ici.
De faon gnrale, ds quon saura comment dnir de nouvelles commandes et environnements (chapitre ), il faudra viter de faire apparatre les commandes de changement de fonte
directement dans le document, et ne les utiliser que dans la dnition dautres commandes smantiques. Nous y reviendrons en temps voulu.
.. La taille
A
Les commandes proposes par LTEX pour changer de taille nexistent contrairement aux autres
que sous forme dclarative. En eet, un changement de taille concerne rarement un mot isol,
mais plutt toute une portion de texte. Les commandes disponibles sont listes dans la table ..
La taille de texte normale est donne par \normalsize, qui est indpendant de \normalfont.
Cette taille est xe par une option de classe de document. Par dfaut, cette taille est de points
dans la classe article. Les options 11pt et 12pt sont disponibles. Par exemple, pour xer une
taille principale de points pour lensemble du document, on crira
\documenclass[a4paper, 11pt]{article}
comme premire ligne du prambule. Toutes es autres commandes sadapteront alors : \large
avec une taille de base de points est un peu plus grand que \large avec une taille de base de
points, etc.
c-texte.tex r --
r --
. Changements de fonte
Pour disposer de tailles de base plus varies (ce qui est rarement utile en fait), on devra remplacer la classe article par la classe extarticle. On dispose alors des nouvelles options 8pt, 9pt,
14pt, 17pt et 20pt pour la taille de base. Ainsi, pour un livret crit assez petit, on commencera
son source par
\documenclass[a5paper, 9pt]{extarticle}
si le livret est imprim sur du papier A. (crire si petit sur du papier A nest gure raisonnable.)
Ce modle de tailles de fonte (une taille de base, et des commandes de taille relatives cette
dernire) est trs pratique pour la plupart des documents, car il permet des changements faciles
et cohrents. Cependant, on a parfois besoin de spcier une taille absolue (par exemple pour
obtenir un titre en trs gros, ou raliser une achette).
\fontsize{corps}{interligne} \selectfont
La commande \fontsize permet dindiquer un corps (un taille) de fonte en points ; il faut alors
aussi prciser la taille de linterligne (lespace vertical entre la base de deux lettres de lignes conscutives). Une rgle approximative est de choisir un interligne de du corps : par exemple,
\fonsize{40}{48} \selectfont
pour crire en taille . Il ne faut pas oublier de faire suivre \fontsize de \selectfont pour que
les changements prennent eet.
Les commandes de changement de taille au sein du document, quelles soient relatives comme
\large ou absolue comme \fontsize, modient aussi lespace entre les lignes : pour \fontsize,
cest le rle du deuxime argument, pour les autres cest automatique. Un point auquel il faut prter
attention si lon veut que linterligne soit pris en compte est de bien terminer le paragraphe avant
de revenir la taille normale. Pour cela, on aura intrt terminer le paragraphe par un \par
plutt que par une ligne vide de faon placer celui-ci avant laccolade fermante qui dlimite la
n du changement de taille, comme illustr par lexemple ..
Si par contre on utilise des environnements comme center, flushleft et flushright (vus
plus loin, section .) pour dlimiter laction du changement de taille, on na aucune prcaution
particulire prendre, car ces environnements dlimitent aussi un paragraphe. Voir le corrig de
lexercice pour un exemple correct dutilisation de cette technique.
{\tiny Un petit paragraphe de texte crit en
tout petit avec un interligne incorrect.}\par
{\tiny Un petit paragraphe de texte crit en
tout petit avec un interligne correct.\par}
.. Le reste
c-texte.tex r --
Le mode texte
r --
\textcolor{couleur}{texte}
{\color{couleur}
texte long}
Comme pour les commandes de changement de fonte normales, on dispose des deux formes :
avec argument ou dclarative. Pour la forme dclarative, il faut penser utiliser des accolades
comme ci-dessus, ou proter dun environnement pour restreindre laction de la commande.
tout moment, on peut revenir la couleur normale avec la commande dclarative \normalcolor.
Il y a plusieurs noms de couleurs prdnis : pour en avoir une liste complte, consulter la
documentation dxcolor (voir sec. .. comment la trouver), puis aidez-vous des signets pdf
ou des liens cliquables de la table des matires pour arriver rapidement la section colors by
name . Par dfaut, seuls les noms de la section . sont dnis. Vous pouvez mlanger entre elles
des couleurs existantes de la faon suivante : blue!30!white donne un mlange de de bleu et
de blanc. Nous verrons la section .. comment dnir de nouveaux noms de couleur. Ces
possibilits sont prsentes sur lexemple . : l aussi, il serait plus naturel dutiliser \textcolor
les deux fois, \color na t choisie la deuxime fois que pour illustrer sa syntaxe une peu trange.
Du \textcolor{red}{rouge} flashy.\par
{\color{red!30!black} Moins} flashy.
Du rouge ashy.
Moins ashy.
E . Changements de couleurs
Sur certaines installations vieilles ou incompltes, xcolor nexiste pas. On peut alors utiliser color la place : les commandes cites ci-dessus restent les mmes, ainsi que les noms des couleurs
de base, mais certaines possibilits, comme le mlange de couleurs, ne sont pas disponibles.
Enn, outre les changements de fontes et de couleurs, il est galement possible dappliquer
quelques autres mises en forme au texte, comme le soulignement. Ce dernier est viter autant
que possible. Il est trs utilis dans les documents manuscrits ou dactylographis car cest un des
A
seuls moyen de mise en valeur qui existe dans ces cas. Avec LTEX (ou un traitement de texte
classique), on dispose de tellement dautres moyens dexpression typographiques quil faut mieux
se passer du soulignement, souvent peu lgant (problmes de lettres jambages, dinterligne, . . .)
Ceci dit, par souci de compltion, citons le module soul qui permet entre autres de souligner
des portions de texte. Il fournit aussi des commandes pour dautres eets, comme le texte barr
ou interlettr (cest--dire avec un espace supplmentaire entre chaque lettre : cette mise en forme
peut tre utile pour des titres par exemple), illustres par lexemple ..
\usepackage{soul}
\ul{Soulign} \par
\st{Barr} \par \so{Interlettr}
Soulign
Barr
Interlettr
. Listes
Nous connaissons dsormais les commandes pour mettre en forme des fragments de texte, souvent de lordre de quelques mots, et traduire ainsi sa structure petite chelle. Voyons maintenant
c-texte.tex r --
r --
. Alignement du texte
quelques lments de structure moyenne chelle. Le plus important est la structure de liste, qui
A
se dcline en LTEX (comme en HTML) en trois variantes : liste tirets, liste numrote, et liste
descriptive.
Dans les trois cas, la liste elle-mme est dlimite par un environnement : itemize pour une
liste tirets, enumerate pour une liste numrote, et description pour une liste descriptive.
Chaque lment, ou point, de la liste (y compris le premier) est prcd de la commande \item.
Cette commande ne prend en gnral pas dargument, mais on peut lui passer un argument optionnel entre crochets : dans le cas dune liste tirets ou numrot, largument remplace le symbole
de dbut ditem ou la numrotation ; dans le cas dune liste descriptive, il est dusage dutiliser cet
lment pour le nom du terme dcrire. Ces trois type de listes sont illustrs par lexemple . ;
on peut les emboter entre elles comme on le verra en exercices.
Les trois types de listes sont :
\begin{itemize}
\item les listes tirets ;
\item les listes numrotes ;
\item les listes descriptives.
\end{itemize}
\begin{enumerate}
\end{enumerate}
\begin{description}
numrotes ;
description pour les
\end{description}
descriptives.
. Alignement du texte
A
Par dfaut, LTEX fait en sorte que les bords gauche et droits du texte soient bien rectilignes :
on dit que le texte est justi, ou pour tre prcis, justi droite et gauche. On peut changer ce
comportement pour certaines parties du texte, soit par choix (page de titre ou autre mise en pages
personnalise, soit pour des raisons techniques : quand on crit du texte sur une faible largeur,
essayer de laligner des deux cts produit souvent un rsultat assez moche, et il vaut alors mieux
choisir un autre alignement.
c-texte.tex r --
Le mode texte
r --
On obtient du texte centr avec lenvironnement {center}, align seulement sur la marge de
gauche (on dit au fer gauche , ou encore en drapeau ) avec {flushleft} en enn align
droite avec {flushright}, comme le montre lexemple .. Par ailleurs, ces environnements
laissent comme on le voit un petit espace avant et aprs, ce qui est en gnral ncessaire pour que
le changement dalignement ne soit pas choquant.
Du texte dexemple justi
droite et gauche.
\end{center}
\begin{flushleft}
Cette fois du texte dillustration en drapeau.
\end{flushleft}
\begin{flushright}
Et enfin une partie de texte au fer droite.
\end{flushright}
De mme que les commandes de changement de fonte existent en deux formes (une commande
argument et une commande dclarative) on peut changer lalignement avec un environnement
comme on vient de le voir, mais aussi avec des commandes dclaratives. Tout ce qui a t dit
prcdemment sur les commandes dclaratives reste vrai, par exemple lutilisation de groupes
ou environnements pour limiter leur porte. La correspondance environnement-commande est
donne par la table . : on prendra bien garde linversion left/right : align gauche est en
eet quivalent dchir (ragged) droite.
Environnement
Commande
center
\centering
flushleft
\raggedright
flushright
\raggedleft
c-texte.tex r --
r --
. Espaces
Je prsente pour nir dans cette section, faute dun meilleur emplacement, deux environnements utiles : {quote} et {quotation} qui sont prvus pour faire des citations, et dont leet
le plus visible est daugmenter un peu la taille des marges de chaque ct, rduisant ainsi la largeur du texte. Les deux environnement sont quasiment identiques : le premier supprime le retrait
dalina au dbut de chaque paragraphe du texte cit, tandis que le deuxime le conserve.
. Espaces
A
Comme on la vu la section .., LTEX traite sa manire les espaces et retours la ligne
dans le source. En particulier, pour obtenir un espace blanc important, que ce soit horizontalement (entre deux mots) ou verticalement (entre deux lignes), il est vain dintroduire plusieurs
espaces ou retours la ligne dans le source. Ceci est une bonne chose, car cest une assez mauvaise
habitude (mme lorsquon utilise un traitement de texte classique) de procder ainsi pour rgler
lespacement. Il est bien plus naturel de spcier la longueur de lespace laisser blanc dans lunit
de son choix.
\hspace{longueur}
\vspace{longueur}
A
Pour cela, LTEX propose les commandes \hspace et \vspace qui ont exactement la mme syntaxe, et servent comme leur nom lindique insrer de lespace respectivement horizontalement et
verticalement. On utilise ainsi \hspace{3cm} pour laisser un blanc horizontal de centimtres,
plutt que dessayer de le reproduire avec plusieurs espaces successifs. Les deux peuvent sutiliser
nimporte quel endroit du texte, mais \vspace est surtout utile entre deux paragraphes : au sein
dun paragraphe, son eet est parfois trange.
A
En LTEX comme en physique, une longueur est un nombre suivi dune unit. Ici, nombre signie
nombre dcimal , et le sparateur dcimal (la virgule ) est le point : la moiti de scrit 2.5.
Les units disponibles sont nombreuses, citons seulement pour le moment les units mtriques
mm et cm, lunit anglo-saxonne in (pouce), les units (typo-)graphiques pt et bp (deux dnitions
direntes du point) et enn deux units relatives : ex et em. Ces dernires dpendent la fonte
courante (et en particulier de sa taille) : un ex est approximativement la hauteur dun x minuscule, et un em la largeur dun M majuscule. Elles sont commodes pour obtenir des espaces
proportionnelles la taille dun mot ou la hauteur dune ligne.
Les distances ngatives sont autorises et servent resserrer deux lments, voire crer des
eets de surimpression si lon resserre trop. . .
Normalement, les espaces introduits par \hspace et \vspace disparaissent sils se trouvent en
dbut ou n de page ou de ligne et cest la plupart du temps une bonne chose. Quand on veut
vraiment laisser un espace blanc un de ces endroits, il faut utiliser \hspace* ou \vspace* : par
exemple, \vspace*{10cm} juste aprs le dbut du document laisse un espace de centimtres
(en plus de la marge) en haut de la premire page.
A
On dcouvre sur cet exemple un nouvel lment de la syntaxe de LTEX : certaines commandes
peuvent tre suivies dune toile qui modie leur comportement. Dans ce cours, \commande
. La liste complte des units que connat TEX, avec leur valeur, est donne par la table . si vous y tenez.
A
. Le premier vaut /, pouces, le second / pouces. Le pt est lunit utilise par LTEX pour mesurer par
exemple les tailles de fontes ; le bp est la dnition du point utilise par la plupart des logiciels graphiques pour mesurer
les images.
c-texte.tex r --
Le mode texte
r --
dsignera toujours une commande qui peut tre suivie dune toile optionnelle. On dira que
\commande* est la version toile de \commande.
A
On ne contrle dhabitude pas les changements de ligne ni les changements de page : LTEX
soccupe de calculer leurs emplacements optimaux. Si on souhaite forcer un retour la ligne, on
pourra la faire avec la commande \newline ou \\. Dans certains contextes (texte centr), seul \\
fonctionnera. Ces deux commandes sont utiliser avec une grande parcimonie : on a tendance
les utiliser tort et travers quand on dbute, alors quelles sont en fait assez rarement utiles.
La plupart du temps, soit le retour la ligne est automatique (dbut de liste, de formule horstexte, etc.) soit on veut en fait changer de paragraphe (ce qui se fait en laissant une ligne vide dans
le source.) Un des cas o lusage de \\ se justie toutefois est dans un court texte centr si lon
souhaite dcider des coupures de ligne pour obtenir une forme de paragraphe quilibre.
Il est galement peu frquent de devoir imposer les coupures de pages la main. Pour les rares
cas o cela sera utile, il existe les commandes \newpage, \clearpage et \pagebreak. Les deux
premires laissent un espace blanc la n de la page, alors que la troisime tente de prserver
lalignement en bas. La dirence entre les deux premires est plus subtile ; en gnral, utilisez
\clearpage, ou encore nutilisez aucune des trois, car elles ne sont pas souvent utiles.
\stretch{force}
A
Il existe en LTEX des longueurs spciales, qui peuvent stirer en fonction de lespace disponible
sur la page. La faon la plus simple dy accder est dutiliser la commande \stretch, par exemple
dans largument de \vspace : lespace ainsi obtenu stirera alors autant que possible, poussant
vers le bas de la page tout ce qui le suit. Si plusieurs espaces lastiques sont prsents sur une mme
page, ils se partageront lespace disponible de faon proportionnelle leur force. Ceci est pratique
pour placer par exemple un texte au tiers de la page : on insre \vspace*{\stretch{1}} avant
et \vspace*{\stretch{2}} aprs. Pour des exemples, voir les exercices et notamment le .
A
. En fait, \clearpage force LTEX placer immdiatement tous les ottants en attente (voir section .. pour la
notion de ottant).
c-texte.tex r --
Structure du document
Mme si, une fois imprim sur du papier, un document a globalement une structure linaire
(dans le sens o on peut le lire dans lordre de la premire la dernires page), la structure logique
du document est souvent bien plus complexe : on a en gnral une structure arborescente en
chapitres, sections, sous-sections, etc., voire des morceaux de texte spars comme des annexes
ou des notes, auxquelles il est fait rfrence dans le corps du texte. Ce chapitre prsente les outils
A
proposs par LTEX pour grer ces structures : ils sont en gnral assez puissants dans le sens o on
obtient beaucoup avec peu de commandes, et sans avoir se soucier de dtails comme maintenir
jour la numrotation.
. Classes de documents
Une classe de document est quelque chose que lon peut passer comme argument principal de
A
la commande \documentclass prsent au dbut de chaque source LTEX. Nous connaissons pour
linstant la classe minimal (source .) que lon nutilise en pratique jamais, et la classe article
(source .) qui est la plus courante pour des documents pas trop longs. Les deux autres classes
standard sont report, prvue pour des documents un peu plus longs (quelques dizaines de pages),
et la classe book, qui convient pour raliser des livres complets.
La classe de document dtermine certains aspects de lapparence du document, comme la prsence ou non du numro de page (absent avec minimal, prsent avec toutes les autres) et sa place
(centr en bas de page, sur un ct en en-tte, etc.), la prsence ou non den-ttes de pages. . . Par
ailleurs, elle dtermine en partie les commandes de sectionnement disponibles.
Chaque classe de document accepte une ou plusieurs options, que lon met toutes entre crochets,
spares par des virgules, entre le \documentclass et le nom de la classe entre accolades. Vous
connaissez dj les options a4paper, 10pt, 11pt et 12pt.
Je nen dis pas plus pour linstant sur les particularits des classes et les options disponibles :
elles seront prsentes au fur et mesure tout au long de ce chapitre.
. Notes
.. Notes marginales
\marginpar{note}
La faon la plus simple de placer une note dans la marge est dutiliser la commande \marginpar,
qui prend en argument le texte placer dans la marge. On peut lutiliser dans le cours du texte
ou entre deux paragraphes. La note sera place peu prs la mme hauteur que la commande
A
dans le texte : LTEX a la possibilit de la dplacer un peu pour viter des problmes, par exemple
si plusieurs notes se suivent, ou quon est trop prs du bas de la page pour placer le texte en entier.
c-struct.tex r --
Ceci est un
exemple de note
marginale.
Structure du document
Ceci
est
un
exemple de note
marginale.
r --
Signalons de suite un problme courant avec les notes marginales : lalignement. En eet, par
dfaut le texte de la note est justi droite et gauche (voir .), ce qui pose souvent problme
vu la faible largeur de la marge : certains espaces sont dmesurment tirs comme dans lexemple
A
ci-contre, ce qui est assez moche, et fait dailleurs grincher LTEX, qui mettra des messages comme
Underfull \hbox (badness 10000) in paragraph at lines 35--35
[]\EU1/MinionPro(0)/m/n/10.95 Ceci est un
Jai lgrement menti ci-dessus en disant que les notes sont dans la marge de droite : ce nest
A
vrai que pour les documents que LTEX considre comme tant en recto simple. Cest le cas par
exemple de tous les documents en classe report ou book. En classe article, on peut forcer une
mise en page recto/verso avec loption de classe twoside. ( linverse, dans les classes qui sont par
dfaut en recto/verso, on peut imposer le recto simple avec loption oneside.)
Attention, cette notion de recto/verso est indpendante de la faon dont le document sera rellement imprim : vous pouvez parfaitement imprimer en recto/verso en classe article sans pour
A
autant avoir lobligation dutiliser loption twoside. En fait, ces options ont pour but de dire LTEX
si la mise en page des pages paires et impaires doit tre identique ou non : par exemple dans ce
polycopi les pages impaires portent en haut le nom de la section en cours et en bas le numro
de page droite, tandis que les pages paires portent le nom du chapitre et le numro de page
gauche. Dans un document de classe article, le numro de page est centr sur toutes les pages.
Revenons donc nos moutons notes marginales. La commande \marginpar accepte un argument optionnel qui, dans le cas o le document est en recto-verso et o la note tombe sur une
page paire (donc dans la marge de gauche), sera utilis la place de largument principal. Ceci est
principalement utilise pour rgler les problmes dalignement : on pourra par exemple crire
\marginpar[\raggedleft Texte de note.]{\raggedright Texte de note.}
c-struct.tex r --
r --
. Titre et rsum
Il faut bien tre conscient que \marginpar nest pas du tout adapt pour placer du matriel
dans la marge comme la main en face du dbut de ce paragraphe, pour au moins deux raisons :
on ne contrle pas prcisment lemplacement vertical de la note, ni le ct o elle apparat dans
un document recto/verso. Il est important de raliser que dans la plupart des cas ce manque de
A
contrle est une bonne chose : il signie en fait que LTEX soccupe dun nombre important de
questions techniques dont il nous dcharge. Une technique adapte pour placer du matriel dans
la marge de gauche un emplacement x sera vue plus tard (exemple .).
A
Enn, signalons que dans les documents en recto/verso, un bug de LTEX fait que les notes apparaissent parfois du mauvais ct prs des changements de pages : il sut pour corriger ce bug
de charger le module mparhack.
.. Notes de bas de page
\footnote{texte de la note}
Les notes de bas de page sont en fait bien plus faciles utiliser que les notes marginales : il sut
de placer la commande \footnote lendroit prcis o on veut que lappel de note ait lieu, en
lui passant en argument le texte de la note de bas de page. Ceci est illustr par lexemple ..
Un paragraphe avec une
note\footnote{Oui, vraiment.}
a. Oui, vraiment.
de bas de page.
. Titre et rsum
.. Titre
\title{titre} \author{auteur} \date{date}
\maketitle
A
On peut demander LTEX de grer automatiquement la mise en forme du titre. Pour cela, il
sut de lui donner les informations ncessaires, savoir le titre du document, le nom de lauteur, et si lon veut la date. Ces trois commandes (\title, \author et \date) ncrivent rien
dans le document (on peut mme les placer dans le prambule si on veut) : il faut ensuite utiliser
\maketitle (dans le corps du document, et gnralement au tout dbut) pour faire rellement
apparatre ces informations, mises en forme, dans le document.
c-struct.tex r --
Structure du document
r --
Par dfaut en classe article, le titre apparat centr, et le texte suit sur la mme page (voir par
exemple la mise en page des corrigs des exercices). On peut dcider que le titre occupe une page
lui tout seul (comme pour ce polycopi par exemple), avec loption de classe titlepage. Cest
ce qui se passe automatiquement avec les classes report et book ; pour ces classes, on peut forcer
le titre tre sur la mme page que la suite du texte avec loption notitlepage.
Les paragraphes ci-dessus dcrivent la faon la plus simple de faire un titre. Cependant, pour
A
des documents plus sophistiqus, la mise en page automatique de LTEX peut sembler un peu trop
sobre. Dans ces cas-l, on peut changer totalement de stratgie et faire la page de titre soi-mme
la main. On nutilisera alors pas du tout les commandes comme \title et \maketitle, et on
devra spcier soi-mme le texte, son ordre dapparition sur la page et sa mise en forme laide des
outils standard vus au chapitre prcdent. On doit par contre rserver une page non numrote
pour faire la page de titre : ceci se fait au moyen de lenvironnement {titlepage} ; voir lexercice
pour un exemple. Dans ce cas, on reprend totalement le contrle, et les options de classe comme
titlepage ou notitlepage nont donc plus aucun eet.
Il est dailleurs intressant de noter cette dualit des mthodes : la premire consistant laisser
EX soccuper de tout, la deuxime tout faire soi-mme. Lavantage de la premire mthode est
quon gagne beaucoup de temps lors de la prparation du document, en laissant de ct beaucoup
de dtails, et en obtenant quand mme au nal un rsultat visuellement correct. Dans un premier
A
temps, on sintressera principalement ce type de mthode (laisser faire LTEX), car cest un de
ses points forts de pouvoir procder ainsi pour rdiger plus vite. Il est nanmoins important de
savoir qu tout moment on peut regagner le contrle des dtails, si on est prt y passer le temps
ncessaire.
Une partie des techniques ncessaires pour contrler totalement les divers lments de mise en
page et raliser des constructions complexes seront prsentes aux chapitres et . En attendant,
A
laissez-vous guider par les mises en pages automatiques de LTEX.
A
LT
.. Rsum
On obtient une prsentation automatique du rsum (marges rduites, texte plus petit, titre rsum en gras au-dessus) en mettant le contenu du rsum dans un environnement {abstract}.
Je renvoie aux exercices pour un exemple.
. Structure globale
Les outils pour diviser son document en sections, sous-sections, etc. dpendent de la classe
utilise : il est clair que plus le document est important, plus ces outils seront nombreux. Les
direntes commandes de sectionnement proposes par la plus petite des trois classes standard,
article, sont prsentes sur le source ..
Quelques remarques sur les commandes de sectionnement prsentes ici. Le nom est en gnral
assez explicite pour quil ny ait pas besoin de prciser le sens. Elles partagent toutes ( lexception
de \appendix) la mme syntaxe ; celle prsente dans le source . est la version la plus simple.
Voici la syntaxe complte, prsente uniquement sur la commande \section pour simplier,
mais valable pour toutes les autres commandes de sectionnement.
A
. Attention, louvrage LTEX pour limpatient prsente abstract comme une commande : cest une erreur.
c-struct.tex r --
r --
. Structure globale
\part{titre de partie}
\section{titre de section}
\subsection{titre de sous-section}
\subsubsection{titre de sous-sous-section}
\paragraph{titre de paragraphe}
\subparagraph{titre de sous-paragraphe}
\appendix
\section{titre dappendice}
\section{titre dappendice}
Premirement, ltoile optionnelle permet dobtenir une section non numrote. Par dfaut,
toutes les commandes de sectionnement produisent une numrotation, sauf celles de niveau trop
faible (par exemple \paragraph). On peut nanmoins souhaiter supprimer la numrotation dune
section, par exemple pour une introduction : cest ce qui est souvent fait en exercices.
Il est important de distinguer une section non numrote dun texte juste crit en gros :
dune part, une section gre aussi beaucoup de dtails comme lespacement avant et aprs, quil
est fastidieux dessayer de reproduire la main. Dautre part, si plus tard vous changez la mise
en forme des titres, il sera plus facile de le faire uniformment en ayant utilis \section* bon
escient quen ayant essay de reproduire la mise en forme la main. linverse, il ne faut pas
utiliser systmatiquement \section* pour crire en gros, mais seulement quand il sagit dun
titre. Je renvoie aux corrigs des exercices pour des exemples dusage de lune ou lautre solution.
On a ensuite un argument optionnel permettant de spcier un titre alternatif qui napparatra
pas dans le corps du document, mais uniquement dans la table des matires. Ceci peut tre utile
pour les sections ayant un titre trs long, qui apparatrait sur plusieurs lignes dans la table des
matires : on peut donner une version courte du titre qui perturbera moins la mise en pages de la
table des matires.
Comme on la signal un peu plus haut, il nest pas possible dutiliser \footnote dans le titre
dune section : ceci est essentiellement d aux problmes qui surviennent en dplaant la note
jusqu la table des matires. La faon la plus raisonnable de contourner ce problme est dcrire
par exemple
\section[Section importante]{Section importante\footnote{Vraiment.}}
de faon ce que la note de bas de page apparaisse uniquement dans le document, mais pas dans
la table des matires : on vite ainsi le problme.
La commande spciale \appendix agit comme un commutateur, usage unique : il y a un avant
et un aprs. Avant, tout se passe normalement. Aprs, la commande \part devient illgale, et la
numrotation des sections change : elle passe en lettres, pour signier que les sections sont en fait
des appendices.
. Une autre faon est de placer \protect juste devant \footnote : de cette faon, la note apparatra correctement
dans le titre et dans la table des matires.
c-struct.tex r --
Structure du document
r --
voquons maintenant rapidement les caractristiques des autres classes. En classe report, une
nouvelle commande \chapter apparat : elle sinsre entre \part et \section. Elle provoque un
saut de page et le mot chapitre est crit ct du numro. Aprs \appendix, cest \chapter
quil faut continuer utiliser, et le nom devient alors annexe .
La classe book propose dautres commutateurs en plus de \appendix : il sagit de \frontmatter
utiliser au dbut du document pour, par exemple la table des matires, la prface, etc. On utilise
ensuite \mainmatter pour passer aux choses srieuses (par exemple, dans le prsent polycopi, on
a utilis \mainmatter juste avant de commencer le chapitre ), puis ventuellement \backmatter
une postface (non utilis dans ce poly). Observez leet sur la numrotation des pages.
\label{tiquette}
\ref{tiquette}
\pageref{tiquette}
Ce moyen est fournit par les commandes \label et \ref, qui sutilisent de la faon suivante :
on place la commande \label lendroit auquel on voudra faire rfrence plus tard, par exemple
juste aprs la commande \section et son argument. Largument de \label est une chane de
caractres libre, mais il est prudent de ny utiliser que des lettres non accentues et ventuellement
des traits dunion . Plus tard, quand on voudra faire rfrence au numro de cette section, on
utilisera \ref avec la mme tiquette comme argument. Si on veut faire rfrence la page (par
exemple, la section . page ), on utilisera \pageref toujours avec la mme tiquette.
Ltiquette est un nom priv qui ne se verra pas dans le document. Par exemple, ltiquette qui
me permet de faire rfrence au source . est src-struct-article. Observez que le nom fait
rfrence au contenu du source et non pas sa position, qui pourrait changer. Par ailleurs, le
prxe src- indique sa nature : vous ntes pas obligs dutiliser de tels prxes, mais cest souvent
une habitude utile.
Ainsi, la commande \label permet de marquer certains endroits du document, et les commandes \ref et \pageref de se rfrer au numro de cet endroit, ou sa page. Pour linstant, les
seuls endroit numrots que lon connat sont les sections, sous-sections, etc. ainsi que les notes
de bas de page (dans ce cas, il faut placer le label dans le texte de la note), mais lon verra plus tard
dautres objets numrots, auxquels on fera toujours rfrence par le mme mcanisme.
. Je suppose bien sr que vous utilisez loption french de babel, sinon ce sera chapter ou autre chose.
. Si on place le \label avant, il fera rfrence la section prcdente.
. On rencontre souvent des : dans les noms dtiquettes, mais cela peut (exceptionnellement) causer des problmes en franais, alors que le trait dunion est ma connaissance toujours inoensif.
c-struct.tex r --
r --
On peut aussi faire rfrence des objets situes plus loin dans le document : cest de l que vient
lexpression rfrences croises. Pour permettre ceci, le mcanisme de rfrence est asynchrone
et ncessite deux compilations successives pour fonctionner correctement. Lors de la premire
compilation, vous obtiendrez des avertissements comme
LaTeX Warning: Reference s-first-doc on page 28 undefined on input line 330.
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
tout endroit du document, la commande \tableofcontents fait apparatre la table des matires. Comme les commandes de rfrences, elle ncessite deux compilations pour fonctionner
correctement. La table des matires est surmonte du titre table des matires qui est crit
comme si on avait utilis la commande \section* : il ny a rien faire pour cela. (Bien sr le
titre nest en franais que si on utilise babel avec loption french, je ne le rpterai plus.)
.. Bibliographie
A
Paralllement au systme de rfrences croises, internes au document, LTEX propose un systme de citations pour faire rfrence des documents externes.
{thebibliography}{exemple}
\bibitem{tiquette}
\cite[endroit]{tiquette}
c-struct.tex r --
Structure du document
r --
Bibliographie
\end{thebibliography}
E . Bibliographie et citations
.. Liens hypertexte
Comme vous laurez constat, dans la version PDF de ce polycopi, toutes les rfrences, ainsi
que les titres dans la table des matires, sont des liens vers la destination. De plus, vous disposez de
signets PDF pour naviguer dans les sections. Ceci est obtenu automatiquement grce au module
hyperref.
\usepackage[option, option, ...]{hyperref}
Il sut de charger le module sans aucune option pour que tout ce qui peut raisonnablement
tre un lien en devienne un. Vous pouvez cependant personnaliser certains aspects laide des
nombreuses options. En voici quelques-unes ; pour les autres, je renvoie la documentation du
module.
colorlinks=true
linkscolor=nom de couleur, urlcolor=nom de couleur
pdfauthor=votre nom, pdftitle=titre
Loption colorlinks permet aux liens dtre en couleur, au lieu dtre entours dun cadre color ; la couleur peut tre choisie avec linkscolor, ou urlcolor selon le type de lien. Enn, vous
pouvez spcier certaines mta-informations qui napparatront pas dans le PDF lui-mme mais
seront visibles via le menu proprits du lecteur de PDF, ou de la commande pdfinfo.
En fait, hyperref permet aussi de crer des liens vers adresses externes. On peut au choix montrer le texte de ladresse avec la commande \url, ou transformer en lien un texte arbitraire,
comme le montre lexemple ..
Le CTAN : \url{http://ctan.org/}.
Ou \href{http://ctan.org/}{le CTAN}. Pour
\href{mailto:mpg@math.jussieu.fr}{mcrire}.
Le CTAN : http://ctan.org/. Ou le
CTAN. Pour mcrire.
c-struct.tex r --
r --
. Structure de la page
. Structure de la page
La classe de document prvoit un style de page, avec des dimensions prdnies en fonction
de certaines options : par exemple, en recto/verso, les marges de gauche et de droite ne font pas
la mme taille. Vous pouvez rgler votre guise ces dimensions avec le module geometry.
\usepackage[options]{geometry}
\geometry{options}
Les options peuvent tre au choix indiqus au chargement du module, ou plus tard dans le
prambule avec la commande \geometry : les deux sont rigoureusement quivalents. Les options
disponibles sont nombreuses et je renvoie la documentation pour une liste complte. Les plus
importantes connatre sont vmargin et hmargin qui rglent les marges du haut et du bas (resp.
de gauche et de droite) simultanment, rmargin, lmargin, tmargin et bmargin pour les spcier
sparment, et landscape pour changer lorientation du papier. Pour toutes les options acceptant
une longueur, la dnition de longueur est celle vue en section .. Par exemple, on peut dire
\usepackage[hmargin=3cm, landscape]{geometry}
Si on charge geometry sans options, il modiera quand mme les marges par rapport celles
prvues par la classe (il fait en gnral des marges un peu plus petites).
Un moyen commode de se familiariser avec les direntes dimensions dune page est dutiliser
la commande \layout du module layout : elle dessine la maquette de la page en cours, avec une
lgende portant les noms et les valeurs des direntes dimensions. Pour avoir cette lgende en
franais, il sut de passer loption french au chargement du module layout. Par exemple, les
dimensions utilises par le prsent document sont visibles sur la page suivante.
Toutes ces longueurs peuvent tre spcies comme options de geometry (en retirant le \ initial). Toutefois, il est conseill de ne pas modier hoffset ni voffset, rservs des usages bien
particuliers. Par ailleurs, on aura intrt ne pas rgler directement paperwidth et paperheight
si on utilise un format de papier standard et prfrer loption correspondante (par exemple,
a4paper).
On constate sur la gure que des espaces particuliers sont rservs pour un ventuel en-tte
ou pied de page. Pour linstant, on a en gnral juste un pied de page consistant en le numro de
page, centr ; en classe book on aurait aussi un en-tte de page. On verra en section . comment
personnaliser le contenu de ces zones.
c-struct.tex r --
i
?
i
?
6
i
Marge
Notes
? Entte
6
i
Corps
i
i
i
-
?
6
?
Pied de page
i
-
un pouce + \hoffset
un pouce + \voffset
\evensidemargin = 31pt
\topmargin = -32pt
\headheight = 17pt
\headsep = 20pt
\textheight = 623pt
\marginparsep = 12pt
10
11
\textwidth = 413pt
\marginparwidth = 77pt
\footskip = 47pt
\hoffset = 0pt
\voffset = 0pt
\paperwidth = 597pt
\paperheight = 845pt
Le nombre
\[ (\sqrt{2})^2 = 2 \]
et \(\sqrt{2} > 0\). Cest un nombre
rel irrationnel.
( ) =
Ici, on est all la ligne dans le source pour la formule hors-texte, mais cest juste pour rendre
le source plus clair : a ne change rien au rsultat ; le retour la ligne et le centrage de lquation
sont automatiques en passant en mode hors-texte. Les modes mathmatiques sont dlimits de la
faon suivante :
en ligne avec \(...\) ou $...$, ou lenvironnement {math} ;
hors-texte avec \[...\], ou lenvironnement {displaymath}.
Avec le module amsmath, on passe aussi en mode hors-texte avec lenvironnement {equation*}.
Une mauvaise faon de passer en mode hors-texte est dutiliser $$...$$ ; on la trouve mentionne
dans de nombreuses rfrences. Je recommande fortement de ne pas lutiliser, car elle prsente
dirents dfauts (espaces verticaux incohrents, non-respect de loption de classe fleqn, incompatibilits avec amsmath, . . .) et que \[...\] nest pas beaucoup plus long saisir.
En mode mathmatique, plusieurs choses dirent du mode texte :
une police dirente est utilise, les lettres sont par dfaut en italique ;
les espaces sont totalement ignors : $a b$ est quivalent $ab$ et donnera ab ;
les deux caractres spciaux ^ et _ deviennent autoriss ;
un certain nombre de commandes deviennent disponibles.
Jinsiste sur le fait que les espaces sont tous ignors : cest en gnral une bonne chose car lespace
en mode mathmatique est trs dlicat rgler, il faut souvent utiliser des demi-espaces, des tiers
A
despace, etc. Il vaut donc mieux que ce soit LTEX qui sen occupe plutt que de nous obliger
saisir des commandes compliques pour obtenir lespacement correct. Mais cest potentiellement
droutant au dbut.
. Lire : ne pas respecter cette recommandation comptera comme une faute.
c-math.tex r --
r --
A
Enn, mme si LTEX seul propose de nombreuses commandes pour les math, certains modules
tendent l aussi des possibilits. Deux dentre eux sont incontournables : il sagit de amsmath et
amssymb. Il est recommand de les charger dans le prambule de tout document utilisant des formules mathmatiques. Dans toute la suite de ce chapitre, tous les exemples avec des formules supposeront que ces deux modules sont chargs, sans le prciser chaque fois. Si le paquet mathtools
est disponible, il peut avantageusement remplacer amsmath : il fournit les mme fonctionnalits,
ainsi que quelques autres commandes pour simplier certaines constructions ou rgler des points
de dtail (comme lalignement des exposants un exemple est donn en exercices) et corrige de
lgers bugs.
.. Outils de base
^{exposant} ^symbole unique
_{exposant} _symbole unique
Les deux caractres rservs ^ et _ deviennent utilisables en mode math, o il servent mettre
respectivement en exposant ou en indice le symbole qui les suit. Attention, si on veut mettre
plusieurs symboles en indice ou en exposant, il faut les entourer par des accolades. On peut mettre
un indice et un exposant dans lordre quon veut sur le mme symbole, mais pas deux indices ou
deux exposants. On peut par ailleurs utiliser toutes les constructions voulues (en particulier, des
indices et exposants) dans un indice ou un exposant, comme le montre lexemple ..
$2^{2^2} = 2^4$ mais $u_n+1 \neq u_{n+1}$
et $\sqrt[3]{2} = 2^{\frac{1}{3}}$.
= mais u n + u n+ et
= .
\frac{numrateur}{dnominateur}
\sqrt[indice]{radicande}
Comme on le voit aussi sur lexemple ., on utilise \frac pour obtenir une fraction, et \sqrt
pour une racine. Par dfaut cest une racine carre, mais largument optionnel permet de prciser. Largument optionnel nest disponible quavec le module amsmath : je rappelle que tous les
exemples mathmatiques supposent que ce module est charge, ainsi que amssymb, je ne le rpterai plus.
Comme de nombreux autres lments, les fractions ont une apparence dirente selon quelles
sont en mode hors-texte simple, on mode en-ligne, ou imbriques dans dautres constructions :
A
LTEX rgle automatiquement le style (taille et espacement) sans que vous ayez vous soucier de
rien. Nous verrons en .. comment reprendre le contrle des styles pour les rares cas o cest
souhaitable.
\sum_{borne basse}^{borne haute} \prod_{borne basse}^{borne haute}
\int_{borne basse}^{borne haute} \iint \oint ...
On obtient respectivement des sommes, produits et intgrales avec \sum, \prod et \int. La
syntaxe pour les bornes est commune ces trois commandes : cest la mme que sil sagissait
c-math.tex r --
r --
dindices et exposants normaux. Cependant, ils obissent des rgles de placement spciales, qui
dpendent du mode : notamment les bornes seront bien places dessus et dessous en mode horstexte. Pour les intgrales, de nombreuses variantes sont disponibles et il convient de les utiliser :
\iint pour une intgrale double fournit par exemple un plus joli rsultat que \int\int. La liste
de ces commandes fait partie de la liste de symboles mathmatiques distribue.
Posons S = n u n . Ou bien
i=
Posons $S = \sum_{i=1}^n u_n$. Ou bien
\[ S = \sum_{i=1}^n u_n \] On a aussi
S = un
i=
On a aussi f f .
E . Sommes et intgrales
De nombreux symboles spciaux sont disponibles en mode mathmatique. Citons par exemple
toutes les lettres grecques, qui sobtiennent par leur nom : \alpha, \beta, . . ., mais aussi en majuscule quand elles existent : \Gamma, \Delta, ainsi que quelques lettres issues de lalphabet hbraque : \aleph, \beth. De nombreuses ches existent, avec des noms souvent assez descriptifs :
\leftarrow pour une che vers la gauche, \to et \mapsto pour les fonctions. Enn, une grande
quantit de symboles ensemblistes (\in, \subset, etc.) de relation (\leq pour Less or EQual, \neq
pour Not EQual, etc.), \cdot pour un point centr dsignant la multiplication, \cdots pour une
suite de points centrs.
Il serait vain de vouloir lister tous les symboles disponibles : je renvoie donc la liste de symboles
courants distribue, qui est extraite de flshort-3.20.pdf . Encore plus de symboles mathmatiques sont lists dans le document symbols-a4.pdf dj voqu propos des symboles en
mode texte.
Voyons, pour nir ce premier tour dhorizon, les direntes fontes disponibles en mode mathmatique. Elles sont listes et illustres par la table .. Attention, pour que la commande \mathscr
soit disponible, il faut charger le module mathrsfs. On peut par ailleurs obtenir une variante de
\mathcal en chargeant le module eucal. Enn, les deux fontes calligraphiques (\mathcal et
\mathscr) ne sont disponibles que pour les majuscules.
Par ailleurs, des commandes de changement de fontes similaires celle du mode texte sont
disponibles, mais seules \mathrm et \mathbf sont rellement utiles en pratique. On prendra garde
en tout cas ne pas utiliser les commandes ce changement de fontes du mode texte en mode
mathmatique, notamment les commandes de changement de taille. On verra plus loin comment
contrler la taille via le style (sec. ..) et comment passer en mode texte au milieu du mode
mathmatique (sec. ..).
.
.
.
.
.
.
Ou bien obtenir une variante de \mathscr en chargeant eucal avec loption mathscr au lieu de charger maIl ny a pas de moyen simple davoir ces trois polices calligraphiques simultanment disponibles.
thrsfs.
c-math.tex r --
r --
Police
Exemple
par dfaut
romaine
grasse droite
grasse
fraktur
calligraphique
anglaise
ajoure
abc
dx
CR
k
Pp
A
C
NZ
Code
$abc$
$\mathrm{d}x$
$\mathbf{C} \supset \mathbf{R}$
$\boldsymbol{k}$
$\mathfrak{P} \mid \mathfrak{p}$
$\mathcal{A}$
$\mathscr{C}$
$\mathbb{N} \subset \mathbb{Z}$
Pour obtenir des documents corrects, il faut prendre garde de bien distinguer le mode texte du
mode mathmatique : il est dangereux de passer en mode math lorsque ce nest pas justi (par
exemple, utiliser ^ pour mettre du texte en exposant alors que \up est fait pour a en mode texte),
et rciproquement il est incorrect de rester en mode texte pour des lments mathmatiques. Par
exemple, pour crire soit f une fonction , on passera en mode mathmatique pour le f , qui
reprsente un objet mathmatique.
En mode mathmatique, les lettres sont par dfaut considres comme des variables et composes en italique. Il arrive de devoir passer en police droite, pour direntes raisons.
Pour les lettres reprsentant des constantes, comme dans ex ($\mathrm{e}^x$) o le e est
une constante, la base des logarithmes npriens, alors que x est une variable et reste donc
en italique. On utilisera dans ce cas \mathrm.
Pour les noms doprateurs, comme lim, sin ou cos. De nombreux noms sont prdnis
(\lim, \sin, \cos), mais on peut en dnir soi-mme au besoin (voir ci-dessous comment
faire). Il faut toujours utiliser une commande prdnie, ou dnie comme ci-dessous, pour
les oprateurs.
Pour crire rellement du texte en mode maths. Ceci peut tre lexpression tel que au
milieu dune formule, ou encore une abrviation comme dans Peectif , que lon saisit comme
$P_{\text{effectif}}$. On utilisera \text lexclusion de tout autre moyen pour ce cas.
Il est important dapprendre bien distinguer ces trois cas. En particulier dans le dernier cas, on
passe vraiment en mode texte : dans largument de \text, les espaces sont de nouveaux respects
et les commandes spciques au mode mathmatique interdites.
\DeclareMathOperator{commande}{nom}
. lexclusion de tout autre procd, comme \textit : mme si lapparence est parfois la mme, ce nest pas
toujours le cas et de toutes faon la signication est dirente.
. On trouve dans la littrature de nombreuses astuces comme \textrm ou \mbox pour passer localement en mode
texte : elles sont toutes moins robustes que la commande \text pour des raisons diverses mme si elles donnent un
rsultat correct dans certaines circonstances. Elles seront systmatiquement considres comme incorrectes.
c-math.tex r --
r --
Pour dclarer un nouvel oprateur, on utilisera \DeclareMathOperator, qui est disponible uniquement dans le prambule. Le premier argument doit tre une commande qui nexiste pas encore,
et le deuxime est le nom tel quil doit apparatre dans le document. On nest pas oblig de prendre
le mme nom pour la commande, comme le montre lexemple ..
\DeclareMathOperator{\acos}{arccos}
On a toujours $\cos(\acos(x)) = x$.
On a toujours cos(arccos(x)) = x .
.. Styles mathmatiques
\displaystyle \textstyle \scriptstyle \scriptscriptstyle
A
Il existe en LTEX quatre styles mathmatiques auxquels on peut accder par les commandes cidessus. Il faut bien distinguer les notions de mode et de style mathmatique : par dfaut, quand
on entre en mode mathmatique hors-texte, on est en style \displaystyle, alors que quand on
A
entre en mode mathmatique en-ligne, on est en style \textstyle. Ensuite, LTEX va faire voluer
le style tout au long de la formule en fonction de lemplacement des lments : par exemple, lindice
dun lment en \textstyle sera en \scriptstyle, etc.
On peut quand on le souhaite forcer le passage dans un certain style avec lune des quatre commandes de style : celles-ci agissent jusqu la n de la formule (ou sous-formule) en cours, ou
jusqu ordre contraire. Le style contrle la taille des symboles, mais aussi lespace entre eux : observer par exemple lespace autour des dirents signes + dans lexemple ..
\[ \frac{1}{1-\frac{1}{2}} \neq
\frac{1}{\displaystyle 1-\frac{1}{2}}
\text{ et } 1+2 \neq 1^{1+2} \]
et + +
E . Styles mathmatiques
Comme on la vu, le placement des bornes autour doprateurs comme \sum et \prod est rgl
A
par LTEX. La rgle de base est la suivante : en mode \displaystyle, les bornes sont places
au-dessus et en dessous ; dans tous les autres modes elles sont places comme des exposants normaux. On peut forcer les bornes se placer dessus et dessous en utilisant la commande \limits
immdiatement aprs loprateur, comme dans lexemple .. Dans le sens inverse, on peut utiliser
\nolimits.
\DeclareMathOperator*{commande}{nom}
c-math.tex r --
r --
\DeclareMathOperator*{\colim}{colim}
\[ \colim_{x\to\infty} f(x) =
\colim\nolimits_{x_\to\infty} f(x) \]
Nom
double cadratin
cadratin
inter-mot
paisse
moyenne
ne
pas despace
ne ngative
Eet
x
x
x
x
x
x
x
x
y
[]
y []
y []
y []
y []
y []
y[]
y[]
.. Dlimiteurs
Certains dlimiteurs peuvent se saisir directement au clavier comme ( et [, dautres sont accessibles via des commandes comme \{ ou \langle et \rangle ({, , ). Tous les dlimiteurs
A
peuvent sadapter en taille leur contenu : pour que LTEX calcule automatiquement la taille
ncessaire, il sut de faire prcder le dlimiteur ouvrant par \left et le dlimiteur fermant
par \right. Si un symbole intermdiaire doit aussi tre adapt en taille, on le fera prcder de
\middle ; si un seul symbole est adapter, on utilisera en face le dlimiteur spcial . qui est
invisible, comme lillustre lexemple ..
A
Par ailleurs, si la taille calcule par LTEX ne convient pas, on est toujours libre dajuster soimme la taille des dlimiteurs en les faisant prcder dune des commandes \big, \Big, \bigg,
\Bigg. Il ny a alors plus aucun contrle dquilibrage contrairement ce qui se passe avec \left
et \right.
c-math.tex r --
r --
. Constructions mathmatiques
( )
x x=
a
{ b = n }
b
x y
L
Xn
n
b
d
a c
n<n
(n )
p
Code
$x \stackrel{f}{\longmapsto} y$
$X_n \xrightarrow[n\to\infty]{L_2} X$
$\sideset{_a^b}{_c^d}\prod$
$\underset{*}{n} < \overset{*}{n}$
$\binom{n}{p}$
${}^t\!M$
iI
jJ
x = xx
n
. Constructions mathmatiques
.. Petites constructions
A
Diverses petites constructions sont disponibles avec LTEX et amsmath. Les plus courantes sont
prsentes dans la table ..
.. Alignements
Par exemple, on obtient une matrice simple avec lenvironnement {matrix}. Les autres variantes de cet environnement ajoutent des dlimiteurs autour de la matrice : dans lordre ci-dessus,
c-math.tex r --
r --
on a des parenthses (exemple .), des barres verticales, des doubles barres verticales, des crochets, des accolades.
{aligned} {cases}
Pour aligner entre elles les quations dun systme, on utilise {aligned} : il sut de placer le
repre dalignement & juste devant le signe dgalit (ou dingalit), et de terminer chaque ligne
par \\. Pour faire une accolade devant le systme, on utilisera \left\{ dun ct et \right.
de lautre, comme illustr lexemple .. Une construction particulire revient souvent, pour
les disjonctions de cas, comme dans lexemple ., pour laquelle on dispose de lenvironnement
spcialis {cases}, qui nous dispense mme davoir prendre soin de laccolade.
\[ M = \begin{pmatrix}
a & b \\ c & d
\end{pmatrix}
\qquad
\delta_i^j = \begin{cases}
0 &\text{si } i \neq j \\
a b
M=(
)
c d
j
i
si i j
=
si i = j
1 &\text{si } i=j
\end{cases} \]
On peut enn prvoir des alignements au niveau de lensemble de la formule. Les environnements align et multline se distinguent des environnements prcdents dans le sens o ils ne
sutilisent pas en mode mathmatique, mais directement la place de \[...\] pour passer en
mode mathmatique. En fait, les deux constructions suivantes sont quivalentes :
\begin{align*}...\end{align*}
\[ \begin{aligned}...\end{aligned} \]
Lenvironnement multline* est particulier dans le sens o vous navez pas de repre dalignement
indiquer, mais seulement les coupures de lignes : il sert pour les formules trop longues pour tenir
sur une ligne, mais o aucun alignement sur un symbole particulier nest requis.
Ces deux derniers environnements existent en variante toile ou non toile : ceci sert contrler la prsence ou labsence de numrotation comme on va le voir la section suivante.
. Environnements numrots
.. Formules numrotes
Pour obtenir une formule numrote, il sut de remplacer \[...\] par un environnement
{equation}. En fait, tous les environnements qui permettent de passer en mode math horstexte (pour linstant on connat {equation}, {align} et {multline}), sauf {displaymath}, provoquent une numrotation automatique des quations. Ils admettent une version toile qui a
pour eet de supprimer cette numrotation.
c-math.tex r --
r --
. Environnements numrots
lintrieur dune formule numrote, on peut utiliser \label pour dnir une nouvelle tiquette laquelle on pourra faire rfrence avec \ref et \pageref comme on la vu la section ..
On peut mme remplacer \ref par \eqref, ce qui a pour eet dinsrer automatiquement les parenthses autour du numro dquation.
.. Environnements de type thorme
En plus des quations, il est souvent utile de numroter des thormes, dnitions, etc. pour
pouvoir y faire rfrence plus tard. Ces environnements munis dun titre (p. ex. thorme )
et dun numro sont traditionnellement appels environnements de type thorme, mme sils
peuvent en fait tre utiliss dans dautres contextes.
\usepackage{amsthm}
\newtheorem{nom env}[numrot avec]{titre}[numrot dans]
Aucun nest dni par dfaut : il faut donc les dnir soi-mme dans le prambule. Pour cela, le
plus simple est dutiliser la commande \newtheorem, avec le module amsthm qui tend ses possibilits. La syntaxe complte de cette commande est un peu complique, mais dans le cas le plus
simple elle se rsume aux deux argument obligatoires : nom env est le nom de lenvironnement
tel quil apparatra dans le source. Il ne doit pas correspondre au nom dun environnement ou
dune commande qui existe. titre est le nom de lenvironnement tel quil apparatra dans le
document : orme , Dnition , etc.
Par dfaut, ceci produit un environnement numrot. Les numros des dirents environnements sont indpendants, ce qui peut tre pnible pour le lecteur, sil y a dans le mme document
un lemme , une proposition , un thorme , une dnition , etc. et que le scholie arrive aprs
le corollaire se rapportant au thorme . Pour viter ceci, on peut demander que plusieurs environnements partagent la mme numrotation : pour le premier, on procde normalement, et
pour les suivants on utilise le nom du premier comme argument optionnel numrot avec.
Par ailleurs, pour un long document, on veut peut-tre viter darriver au thorme au bout
dun moment. On peut alors demander que les thormes soient numrots par exemple par section, en passant section comme deuxime argument optionnel numrot dans. Si lon veut une
numrotation par chapitre, on utilisera chapter, etc. Par exemple, dans ce polycopi, les exemples
sont numrots par chapitre. On ne peut pas utiliser simultanment le premier et le deuxime
argument optionnel de \newtheorem : on utilisera le second pour dnir un premier environnement, puis le premier pour les environnements partageant la mme numrotation, comme le
montre lexemple ..
Enn, on peut dnir des environnements nomms mais non numrots, comme lenvironnement qc de lexemple ., avec la variante toile de \newtheorem. Il nest alors bien sr pas
possible dutiliser les deux arguments optionnels qui nont plus de sens. Enn, un environnement
proof est disponible automatiquement : il sagit dun environnement avec titre et sans numrotation, muni dun symbole spcial de n denvironnement .
Les environnements dnis par \newtheorem, ainsi que lenvironnement proof, admettent toujours un argument optionnel, qui permet de prciser le titre du thorme, comme on le voit
lexemple . avec la mention de Fermat pour le premier thorme.
. En particulier, a ne peut pas tre def pour les dnitions.
c-math.tex r --
r --
\usepackage{amsthm}
\newtheorem{thm}{Thorme}[section]
\newtheorem{exo}[thm]{Exercice}
\newtheorem*{qc}{Question de cours}
\begin{thm}[de Fermat]
Cubum autem in dous cubos,\dots \end{thm}
\begin{proof}
La marge est trop troite. \end{proof}
\begin{exo}
La changer avec \verb+\geometry+. \end{exo}
\begin{qc}
On peut par ailleurs obtenir dirents styles denvironnements en utilisant \theoremstyle pour
changer le style des environnements de type thorme qui seront dnis ultrieurement. Les styles
disponibles sont plain, definition et remark. Je renvoie aux exercices et la documentation
damsthm pour plus de dtails.
. Documentation
A
Les possibilits mathmatiques de LTEX sont immenses, les mathmaticiens en tant les principaux utilisateurs. Pour ce chapitre comme les autres, il nest pas possible de tout prsenter. Je
A
rappelle donc ici les principales sources dinformation concernant les math en LTEX.
La liste de symboles courants distribue, extraite de flshort-3.20.pdf . Pour les symboles plus rares, les sections et de symbols-a4.pdf .
Les documentations damsmath et de mathtools pour plus de dtails sur les alignements
et certains points dlicats.
A
Le document prsentant (presque) tout ce qui est possible avec des math en LTEX : Mathmode.
pdf . De prfrence, ne pas trop sattarder sur la partie un, qui fait souvent de faon complique ce qui est prsent de faon plus simple dans les parties ultrieures en utilisant des
modules.
Certains de ces documents vous aideront rsoudre des problmes diciles que vous rencontrez
sans doute plus tard, mais vous tes dores et dj encourags garder toujours sous la main la liste
des symboles courants. En particulier, pour lexamen et les exercices, tous les symboles prsents
sur cette liste sont supposs connus mme sils nont pas t prsents indpendamment en cours.
.
.
.
.
.
.
http://people.math.jussieu.fr/~mpg/lm204/files/doc-symboles-math.pdf
http://mirror.ctan.org/info/lshort/french/flshort-3.20.pdf
http://mirror.ctan.org/info/symbols/comprehensive/symbols-a4.pdf
http://ctan.org/pkg/amsmath
http://ctan.org/pkg/mathtools
http://mirror.ctan.org/info/math/voss/mathmode/Mathmode.pdf
c-math.tex r --
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
% ou utf8 ou macroman
\usepackage[T1]{fontenc}
% \usepackage{textcomp}
% \usepackage{amsmath, amssymb}
% \usepackage{xspace}
modules supplmentaires
\usepackage[frenchb]{babel}
% \usepackage{hyperref}
% liens hypertexte
% \author{nom de lauteur}
% \date{date}
\begin{document}
% \maketitle
c-rev-newc.tex r --
r --
Avec TeXnicCenter (sous Windows, donc), aucun rglage nest possible. Lencodage utilis
par cet diteur est cp1252. Vous pouvez donc utiliser cp1252 comme option dinputenc. En
fait, il se trouve que cp1252 est une lgre extension de latin1, qui est un encodage beaucoup
plus standard. Je vous recommande donc dutiliser plutt latin1 : certains caractres ne
seront plus disponibles (par exemple, et ) mais en revanche votre source sera plus
facilement utilisable sous dautres plateformes que Windows.
Avec la plupart des autres diteurs, vous pouvez choisir lencodage utilis. Dans ce cas, tout ce
qui compte, cest que le rglage de votre diteur corresponde ce que vous indiquez en option
inputenc. Les deux encodages recommands sont latin1 (qui peut sappeler ISO--
dans le menu de votre diteur) ou ventuellement utf8 (plus universel, mais pas encore acA
cept par des modules LTEX).
Les questions dencodages sont techniques et peu intressantes pour les personnes nutilisant
que des langues dEurope de lOuest, comme le franais ou langlais. Je vous recommande dvacuer ce problme une fois pour toutes en choisissant un encodage commun tous vos documents
(par exemple latin1), en rglant votre diteur pour quil utilise tout le temps cet encodage, et en
utilisant toujours inputenc avec loption choisie.
Si vous travaillez en binme avec un camarade sur un document, ou que vous travaillez sur
un mme document depuis plusieurs ordinateurs dirents (par exemple, avec TeXnicCenter sur
les sessions Windows de lUTES, et chez vous avec TeXshop sous OS X), prenez soin dutiliser le
mme rglage dencodage partout. Dans le cas contraire, des problmes peuvent survenir, allant
jusqu rendre votre source totalement inutilisable. Donc, soyez prudents.
.. Messages derreur courants
Vous laurez constat, la compilation dun document ne se droule pas toujours sans accroc.
A
En LTEX comme avec tous les autres programmes informatiques, il est important de lire et savoir
interprter les messages derreur pour rsoudre les problmes. En ce qui concerne la lecture, je ne
peux rien faire dautre que vous exhorter les lire vraiment, voici en revanche quelques lments
pour les interprter.
A
La premire chose savoir, cest quen LTEX, une erreur peut en entraner bien dautres (et plus
rarement, en cacher une autre). Quand votre document produit plusieurs erreurs, je vous recommande fortement de procder ainsi : lisez seulement le premier message derreur, corrigez lerreur,
A
recompilez votre document et itrez. Une seuls erreur peut parfois tellement dsorienter LTEX
quil produira des centaines derreurs dans la suite du document : si vous tes dans ce cas, pas de
panique, traitez les problmes un par un dans lordre.
Le deuxime point important, surtout quand vos documents commencent tre longs, cest de
A
localiser lerreur. Le message derreur indique toujours la ligne o LTEX a dtect lerreur : comme
A
LTEX ne voit pas dans le futur, lerreur peut se trouver exactement cette ligne, parfois un peu
A
avant (le temps que LTEX sen rende compte), mais jamais aprs. Par ailleurs, le message derreur
comporte souvent une ligne de contexte, par exemple
l.16 Cest clair : \textcolour
{blue}{bleu} clair
. Si les messages derreur napparaissent pas clairement avec votre diteur (cest souvent un problme avec TeXmaker), je peux bien sr vous expliquer comment les lire.
c-rev-newc.tex r --
r --
. Dnitions
On voit ici que lerreur est survenue ligne , mais cette ligne pouvant tre trs longue, il est
A
important de lire la suite. LTEX montre le contexte de lerreur, et place un saut de ligne lendroit
prcis o il sest arrt : lerreur est en gnral juste avant. Ici, cest en eet une faute de frappe sur
\textcolour, dont lorthographe correcte est \textcolor.
Les deux points prcdents sont valables pour tous les types derreur : traiter les erreurs une par
A
une dans lordre, et utiliser les informations donnes par LTEX pour les localiser. Pour aller plus
loin, il faut utiliser le message derreur lui-mme. Ces messages sont en anglais , et sont parfois
trs prcis, dautres fois plus diciles interprter (typiquement, Missing \endcsname). Voici
quelques message courants quil faut absolument savoir reconnatre.
Undefined control sequence. : commande non dnie. En gnral ceci signie soit que
vous avec fait une faute de frappe dans le nom de la commande (ex. : \colour pour \color),
soit que le nom est correct mais que vous avez oubli de charger le module qui fournit cette
commande (ex. : \usepackage{xcolor} pour la commande \color).
! LaTeX Error: Environment centre undefined. : environnement non dni. Pareil
que le point prcdent, mais pour un environnement.
A
! Missing $ inserted. : $ manquant (rajout par LTEX). Soit vous avec oubli de passer
en mode mathmatique pour une construction autorise seulement en mode math, soit vous
avez oubli de sortir du mode mathmatique pour une construction autorise seulement en
mode texte. Variante courante : vous ne voulez pas faire des math, mais vous avec oubli que
^ et _ sont des caractres rservs (voir section ..).
Runaway argument? : argument sans n ? Probablement, vous avez oubli une accolade ferA
mante, et LTEX a donc limpression que largument de la commande correspondante ne se
termine jamais. Dans ce cas, il vous dit de quelle commande il sagit ; par exemple :
! File ended while scanning use of \textbf .
A
Pour une liste complte de toutes les erreurs produites par LTEX ainsi que les modules les plus
A
courants, expliques en franais, vous pouvez consulter lannexe B du LTEX Companion , qui na
pas t intgre ldition papier faute de place, mais est disponible gratuitement en ligne. Cest
un document quil est utile de garder porte de main (de prfrence en version PDF : il est ainsi
plus facile de trouver un message prcis grce la fonction rechercher de votre lecteur PDF).
A
Je rappelle que tous vos documents doivent compiler sans aucune erreur. LTEX produit parfois
aussi des avertissements (warning ) qui sont parfois importants, parfois pas. Pour simplier, nous
considrerons que tous les avertissements lis aux polices (font warning ) peuvent tre ignors ;
pour les autres, me consulter.
A
Enn, le dernier type de problme que LTEX peut rapporter concerne les dbordement (ou
dfauts de remplissage) de bote : overfull ou underfull \hbox ou \vbox. Ces problmes sont
galement traiter ; nous les aborderons en section ...
. Dnitions
Vous avez peut-tre remarqu une subtilit dans certains messages derreurs voqus ci-dessus :
EX dit quune commande nest pas dnie , et pas quelle nexiste pas . La raison est simple :
A
LT
A
. Pour tre prcis, en amricain, comme la plupart des commandes de LTEX. En anglais britannique, on aurait la
commande \colour, la couleur grey et non gray, lenvironnement centre, etc.
. http://www.latex-project.org/guides/lc2fr-apb.pdf
c-rev-newc.tex r --
r --
A
la liste des commandes LTEX existante nest pas ge, on peut ltendre en chargeant des modules,
mais surtout, on peut dnir soi-mme de nouvelles commandes.
Vous savez dj le faire dans certains cas particulier : par exemple, vous savez dclarer des nouvelles commandes pour oprateurs mathmatiques avec \DeclareMathOperator, ou des nouveaux environnements numrots avec \newtheorem. Nous allons ici voir les techniques gnrales de dnition de commandes et denvironnements.
A
Cette possibilit est une des plus intressantes de LTEX. Elle permet dautomatiser certaines
constructions fastidieuses, et dhomogniser le rendu du document en sparant son fond (la
structure) de sa forme (laspect visuel) : idalement, le corps du document ne doit contenir aucune commande relative la forme ; celles-ci ne devraient apparatre que dans la dnition de
commandes personnelles. Ceci est surtout valable pour les documents de taille importante.
.. Commandes simples
\newcommand\nom{dnition}
Les commandes les plus simples dnir sont celles qui ne prennent pas dargument. Elles se
comportent alors comme un raccourci, soit pour du texte plus long saisir, soit pour du texte ou
des commandes qui reviennent souvent et quon veut tre sr dcrire tout le temps de la mme
manire.
\newcommand\sev{sous-espace vectoriel}
\newcommand\defini{\textit}
Une \defini{base} est une famille libre et
gnratrice. Une famille est \defini{libre}
si\dots ; elle est \defini{gnratrice}
si\dots On appelle \defini{\sev} un
sous-ensemble qui est aussi un espace
vectoriel. Un sous-ensemble est un \sev{} si
et seulement si\dots
E . Dnitions simples
Par exemple, si chaque fois que vous dnissez un mot, vous voulez lcrire en italique, vous
pouvez dnir une commande \defini que vous utiliserez dans le texte plutt que \textit. Ceci
prsente (au moins) deux avantages :
homognit : vous tes certains en procdant ainsi que toues les dnitions auront la mme
apparence, vous ne risquez pas dutiliser une fois de litalique, une fois du gras, par erreur.
De faon gnrale,
abstraction : en sparant le fond (ce terme est dni ici) de la forme (ce mot doit tre en italique),
vous obtenez plus de souplesse pour changer cette dernire. Si par exemple vous dcidez que
litalique nest pas assez visible et que le gras est plus appropri, il vous sut de changer la
dnition de \defini, pas besoin de remplacer la moiti de vos \textit par des \textbf.
. Avantages qui devraient vous tre familiers si vous avez dj suivi des cours de programmation, o lon poursuit
les mme buts (entre autres).
c-rev-newc.tex r --
r --
. Dnitions
Pour les commandes utilises en mode texte qui remplacent une suite de mots, il faut faire
attention au fait que les espaces qui suivent sont avales. Observez par exemple les accolades aprs
la deuxime utilisation de \sev dans lexemple . qui a pour but de protger lespace suivant. On
a beau tre prvenu, il est trop facile doublier ceci, avec pour consquence des mots attachs dans
le document compil.
Heureusement, une solution existe : il sut, aprs avoir charg le module xspace, dajouter
la commande \xspace la n de la dnition de sa commande. Ainsi, lespace aval sera automatiquement rajout, sauf si la commande est suivie dune ponctuation, comme illustr par
lexemple ..
\usepackage{xspace}
\newcommand\sev{sous-espace vectoriel\xspace}
Soit $F$ un \sev dun espace vectoriel. Une
partie stable par les oprations est un \sev.
E . Utilisation de \xspace
A
LTEX permet galement de dnir des commandes acceptant entre un et neuf arguments. La
syntaxe est la mme que pour des commandes simples, sauf quentre le nom et la dnition, on
indique le nombre darguments entre crochets. On peut ensuite utiliser les arguments zro, une
ou plusieurs fois dans lordre quon veut dans la dnition, avec #1 pour le premier, #2 pour le
deuxime, etc.
\newcommand\guill[1]{\og #1 \fg}
\newcommand\boldcolor[2]{\textbf{\textcolor{#2}{#1}}}
\newcommand\vecmal[2]{(x_#1, \dots, x_#2)}
\newcommand\vecbien[2]{(x_{#1}, \dots, x_{#2})}
Le \guill{laser} pourrait tout \boldcolor{brler}{red}.
Le laser pourrait
tout brler. Attention,
(x , . . . , x )
(x , . . . , x ) !
c-rev-newc.tex r --
r --
Dans certains cas, un des arguments de la commande est presque tout le temps le mme. Il est
alors intressant de rendre cet argument optionnel : cest--dire quon aura pas besoin de lindiquer
quand il a sa valeur normale , mais quon peut si on veut le changer en lindiquant entre crochets.
Vous connaissez dj des exemples de commandes pr-dnies admettant un argument optionnel, comme \sqrt : on a la racine carre avec \sqrt{x} (cas le plus courant), mais on peut
aussi crire une racine cubique avec \sqrt[3]{x}.
\newcommand\fort[2][black]{%
\textbf{\textcolor{#1}{#2}}}
Un \fort{mot} vraiment trs
\fort[red]{important}.
Vous pouvez aussi dnir vos propres environnements. Rappelons que la partie entre le \begin
et le \end sappelle le corps de lenvironnement. La principale dirence dusage entre un environnement et une commande est que le corps de lenvironnement est gnralement plus long que
largument dune commande : ainsi, on utilise une commande pour mettre quelques mots en italique, mais un environnement sil sagit de mettre en exergue tout un bloc de texte.
Remarquez quil ny a pas de #1 dans la dnition : le corps de lenvironnement est plac automatiquement entre le code de dbut et le code de n. Une faon quivalente de voir les choses
est de dire que le \begin{nom} est remplac par code de dbut et \end{nom} par code de
n. Cest donc un peu comme si on avait dni deux commandes.
En fait, un environnement, cest un peu plus que deux commandes : en bonus, toutes les modications de police ou autre eectues par le code de dbut sont automatiquement oublies
. http://ctan.org/pkg/xargs
. http://tug.ctan.org/get/macros/latex/contrib/xargs/xargs-fr.pdf
c-rev-newc.tex r --
r --
. Dnitions
\newenvironment{petit}{%
\begin{quote}\small}{\end{quote}}
\newenvironment{remarque}{%
\noindent\textbf{Remarque.}\itshape}{}
E . Dnitions denvironnements
la n de lenvironnement. Il est conseill dutiliser cet eet : il nest ainsi pas rare davoir un code
de n vide, comme pour lenvironnement remarque de lexemple .. Il ny a pas besoin dutiliser
\upshape ni \normalfont la n pour annuler le \itshape du dbut.
Lexemple appelle par ailleurs une remarque : il est souvent commode, pour des raisons de lisibilit, dcrire les longues dnitions sur plusieurs lignes. Il faut alors faire attention au fait que
chaque saut de ligne quivaut un espace : on risque dintroduire des espaces dans la dnition
sans le vouloir. Pour viter cela, il sut de placer un % en n de ligne, sans espace devant, chaque
fois quon change de ligne uniquement pour des raisons de prsentation .
Par ailleurs, je rappelle que le code des exemples est souvent trs mal prsent, pour respecter
des contraintes de place dans le polycopi. Je vous encourage consulter plutt les corrigs des
exercices pour des exemples de code source prsent correctement.
.. Rednitions
\renewcommand\nom{dnition}
\renewcommand\nom[n]{dnition}
c-rev-newc.tex r --
r --
\renewcommand\le{\leqslant}
est une re-dnition acceptable car la nouvelle commande et lancienne dsignent deux variantes
dun mme symbole (infrieur ou gal). Elle vite ainsi de mlanger par mgarde et dans le
texte, ce qui ne serait pas trs joli.
.. Couleurs
\definecolor{nom}{modle}{valeur}
\colorlet{nom}{couleur existante}
On peut dnir des nouveaux noms de couleur (toujours avec xcolor) de deux faons direntes : soit en donnant la valeur numrique de la couleur dans un modle de couleurs (HTML,
RGB, etc.) soit par rapport une couleur existante, qui peut tre un mlange. Par exemple,
\definecolor{bleu1}{HTML}{000080}
\colorlet{bleu2}{blue!50!black}
sont deux faons de dnir un bleu fonc. La premire dit que bleu1 sera sera dni par des
niveaux rouge et de vert nuls (les premiers ) et un niveau de bleu de ( en hexadcimal)
sur . La deuxime dit que bleu2 sera un mlange de bleu et de noir .
Les noms ainsi dnis sont utilisables de la mme manire que les noms de couleurs pr-dnis.
Il est souvent de bon got de nutiliser quun nombre rduit de couleurs dans lensemble dun
document (par exemple, ce poly nutilise que trois couleurs, en dehors des exemples). On a alors
intrt les dnir dans le prambule, plutt que dcrire la valeur de chaque couleur chaque
fois, avec les risques derreur et la dicult de changement que cela implique.
. Qui utilise le modle de couleurs de lHTML, le langage utilis pour crire les pages web.
c-rev-newc.tex r --
Figures
. Inclusion dimages
.. La question des formats
Il existe dans le monde informatique plusieurs faons de stocker des images dans des chiers,
cest--dire plusieurs formats graphiques gnralement reprs pas lextension du chier : bmp, gif,
ti, jpg, png, ps, pdf, svg pour ne citer que les plus connus.
Dun point de vue technique, il se divisent en deux familles : les formats matriciels (bitmap) et
les formats vectoriels. Dans le premier cas, limage est reprsente par une grille de points ayant
chacun une valeur de couleur, cest--dire une matrice de nombres. Dans le deuxime, chaque
partie de limage est reprsente par les quations des courbes qui la dlimitent.
Les images stockes sous forme vectorielle seront in ne mises sous forme matricielles (rasterises) au moment de limpression ou de lachage lcran, avec une rsolution (la nesse de la
grille) adapte. Cette adaptation de la rsolution au mdia fait la supriorit des images vectorielles sur les images matricielles : une image vectorielle qui rend bien lcran rendra bien
limpression, ce nest pas le cas des images matricielles. Il est donc recommand dutiliser des formats vectoriels aussi souvent que possible, et le reste du temps de veiller choisir une rsolution
susante pour les documents destins tre imprims .
A
Assez de gnralits, passons la pratique avec LTEX. Ce dernier ne reconnat actuellement pas
tous les formats graphiques existants, il faut donc choisir le format des images inclure dans une
A
liste limite. De plus, LTEX ore plusieurs modes de compilation qui ne permettent pas dinclure
les mmes types de chiers. La table . liste les formats disponibles dans les deux modes de
compilation les plus courants.
PDF direct
Aperu TeXnicCenter
Formats matriciels
Formats vectoriels
png, jpg
pdf
ps, eps
c-graph.tex r --
Figures
r --
comme format intermdiaire soit indispensable, par exemple pour si vous incluez beaucoup de
graphiques provenant dune application (Maple, Mathematica, etc.) qui nexporte quen EPS et
A
pas en PDF, ou pour utiliser des outils de dessin avancs en LTEX comme PStricks, que nous
ntudierons pas dans ce cours.
A
Par ailleurs, mme si LTEX lui-mme ne peut pas utiliser tous les formats existants, il est toujours possible de convertir les images entre dirents formats en utilisant des logiciels spcialiss. Par exemple, les deux logiciels Gimp (formats matriciels) et Inkscape (formats vectoriels)
permettent deectuer des conversions facilement en ouvrant une image dans un format et en la
sauvegardant dans un autre. (Ils sont par ailleurs gratuits et fonctionnent sous Windows, Mac OS
X et Linux.)
.. Inclusion simple
\usepackage{graphicx}
\includegraphics[options]{chier}
A
Pour pouvoir inclure des images avec LTEX, il faut charger le module graphicx dans le prambule. Attention, un autre module du nom de graphics existe : il est plus ancien et fournit
exactement les mmes possibilits, mais avec une syntaxe moins agrable. Nous utiliserons donc
toujours graphicx.
La principale commande fournie par ce module est \includegraphics : comme son nom lindique, elle permet dinclure des chiers dimages, et elle ne fait que a (en particulier, il faut utiliser
dautres commandes pour dterminer le placement de limage, voir section .) mais elle le fait
bien : la prochaine section liste les options disponibles, mais parlons dj du nom du chier.
On peut au choix donner le nom complet du chier, comme image.png ou bien omettre lexA
tension du moment quelle est reconnue par LTEX et donne juste le nom de base, comme image.
Par ailleurs, les chiers dimages doivent en principe se trouver dans le mme rpertoire que le
A
chier .tex que vous compilez pour que LTEX les trouve.
En fait, on peut galement placer les images dans un autre rpertoire, ce qui est pratique pour
les gros documents utilisant de nombreuses images. On doit alors indiquer le chemin des images
de la faon suivante : si les images sont dans un sous-rpertoire nomm img de lendroit o se
trouve le chier .tex, on indiquera img/image.png comme argument de \includegraphics.
Attention : le sparateur de rpertoires est / et non \, mme sous Windows.
Par ailleurs, pour accder un rpertoire parent, on utilise .. : par exemple, si un rpertoire
lm204 contient un sous-rpertoire poly avec les sources dun polycopi et un sous-rpertoire
img avec toutes les images utilises dans les documents, on utilisera une commande comme
\includegraphics{../img/lion.jpg}
http://www.gimp.org/
http://www.inkscape.org/?lang=fr
Exemple purement ctif, bien sr. Toute ressemblance avec des personnes ou situations ayant rellement exist. . .
ou le montrez votre enseignant. . .
c-graph.tex r --
r --
. Inclusion dimages
prfrez donc des chemins relatifs comme ci-dessus. Dans la plupart des cas, laisser les images
A
dans le mme rpertoire que le source LTEX est la meilleure solution.
A
Trois mots davertissement pour nir : LTEX gre malheureusement assez mal les espaces dans
les noms de chiers, il faut donc mieux les viter. De plus, utiliser des caractres accentus dans
A
les noms de chiers est souvent source de problmes (pas seulement pour LTEX). Enn, il faut
prendre garde aux majuscules : sous Windows, on peut appeler fiChIeR un chier qui sappelle en ralit Fichier sans rencontrer de problmes, mais le document ne compilera alors
pas sur un autre systme (Mac OS X, Linux). Ma recommandation personnelle est de nutiliser
que des lettres minuscules (non accentues) et des traits dunion dans les noms de chier (p. ex.
mode-compil.jpg) pour viter tout problme de ce ct.
.. Options dinclusion
On peut inclure une image sans utiliser aucune option, comme indiqu ci-dessus, mais le plus
souvent ou voudra contrler au moins ses dimensions, et parfois tourner limage ou la recadrer.
Pour ceci, \includegraphics accepte plusieurs options sous la forme cl = valeur, que lon
peut regrouper en trois grandes familles.
Le premier groupe doptions concerne la taille : si lon nindique rien, limage sera insre sa
taille naturelle , expression qui ne veut en gnral pas dire grand chose. On peut spcier une
chelle, qui est un nombre dcimal, par rapport cette taille naturelle, avec loption scale : par
exemple scale=0.5 pour rduire limage de moiti.
Il est souvent plus utile de donner les dimensions nales que lon souhaite. Pour cela, on disA
pose des options height (hauteur) et width (largeur) ; on peut en fait nen spcier quune et LTEX
calculera automatiquement lautre de faon ne pas dformer limage. On peut utiliser des dimenA
sions absolue, p. ex. en centimtres, ou des dimensions prdnies par LTEX, comme \linewidth
qui reprsente la largeur dune ligne de texte.
Par ailleurs, signalons que selon limage et son format, elle peut comporter une ligne de base qui
ne sera pas forcment en bas de limage visuellement. Pensez par exemple une image reprsentant la lettre p : la ligne de base se situerait en bas de la boucle du p et pas en bas de la lettre,
pour assurer un bon alignement avec les autres lettres. Dans un tel cas, height ne reprsente que
la hauteur de limage au-dessus de la ligne de base (la partie merge de liceberg ) et il faut
utiliser totalheight si lon veut parler de la vraie hauteur de limage. En fait, il vaut mieux
toujours utiliser totalheight la place de height. Voici quelques exemples dinclusion dune
image avec mise lchelle. Notez que dans la troisime ligne, limage sera dforme si elle ntait
pas carre.
\includegraphics[scale=2]{truc.pdf}
\includegraphics[width=2cm]{truc.pdf}
\includegraphics[width=2cm, totalheight=2cm]{truc.pdf}
\includegraphics[width=\linewidth]{truc.pdf}
Le deuxime groupe doptions permet de tourner limage. Comme en math, une rotation est
dnie par son angle et son origine, correspondant aux options angle et origin. Langle est exprim en degr, et lorigine est choisie parmi un ensemble de points prdnis sur limage et
. Voir la gure . et plus gnralement la section ...
c-graph.tex r --
Figures
r --
t
.l
t
.c
t
.r
c
.l
B
.l.
c
.c
B
.c
c
.r
B
.r
b
.l
b
.c
b
.r
Bla
bla
bla.
correctement re-dcoupe.
c-graph.tex r --
r --
. Placement
. Placement
.. Simple
A
Par dfaut, LTEX napplique aucune rgle particulire pour placer les images : elles apparaissent
lendroit o la commande \includegraphics est place ; par exemple au milieu de deux mots
comme dans lexemple ., ce qui nest souvent pas leet dsir.
Le plus simple pour inclure des images en dehors dun paragraphe, cest dutiliser un environnement center qui contiendra uniquement limage : ceci la centrera horizontalement, mais aussi
placera un peu despace vertical avant et aprs. En fait, mme pour une image occupant tout la
largeur disponible (option width=\linewidth), il est souvent intressant dutiliser un environnement center, juste pour cet espacement vertical (et aussi pour supprimer le retrait de dbut de
paragraphe).
On peut au contraire ne pas vouloir sparer limage du texte qui lentoure, mais linclure au milieu dun paragraphe avec le texte qui coule autour. Cest ce quon appelle une image habille par
A
du texte. Il existe plusieurs modules en LTEX qui fournissent ce genre de possibilit. Malheureusement, il ny a pas un module unique proposant toutes les options possibles, et les syntaxes utilises
sont assez varies (et pas toujours trs intuitives). De plus, ils ne fonctionnent pas en toutes circonstances : par exemple, prs dun titre de section, dune liste, ou en mode deux colonnes, des
problmes peuvent survenir.
Voyons cependant ce quon peut faire dans des cas simples avec les deux principaux modules
existants : wrapfig et picinpar .
\begin{wrapfigure}[nb ligne]{lrio}{largeur}[dbordement]
gure
\end{wrapfigure}
texte
Il est facile avec wrapfig de placer un gure dans langle en haut gauche ou en haut droite
dun paragraphe, comme illustr par lexemple .. Il faut pour cela mettre limage dans un environnement wrapfigure et la texte qui doit couler autour aprs cet environnement. Dans sa forme
la plus simple, lenvironnement wrapfigure prend deux arguments (en plus de son contenu) : le
premier est une lettre indiquant de quel ct limage doit tre place : l (left) gauche, r (right)
droite, i (inside lintrieur ( droite sur les pages de gauche et rciproquement), o (outside)
lextrieur. Ces deux dernires options ne sont bien sr utiles que si le document est en recto/verso
(voir page ).
Le deuxime argument de wrapfigure est lespace horizontal rserver limage. Cest vous
de prendre soin dindiquer une dimension lgrement plus grande que la taille de limage, comme
. Par exemple, en rdigeant ce polycopi, jai du recourir une astuce pour lexemple . car wrapfigure ne
fonctionne pas dans mon environnement dexemple habituel, et jai mis longtemps trouver un rglage satisfaisant
pour lexemple . car window ne fonctionne plus ds que la largeur de colonne est trop petite.
. En fait, il y en a un troisime, picins, mais il nest pas inclus dans TEX Live pour des raisons de licence ; je nen
dirai donc pas plus son sujet.
. http://ctan.org/pkg/wrapfig
. http://ctan.org/pkg/picinpar
c-graph.tex r --
Figures
r --
\usepackage{graphicx, wrapfig}
\begin{wrapfigure}{l}{2.4cm}
\includegraphics[width=2cm]{lion.png}
\end{wrapfigure}
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing
vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget,
texte
\end{window}
Observez tout de suite la syntaxe trs dirente de celle de wrapfigure (et assez droutante, je
vous laccorde) : la gure est le troisime lment dune liste spare par des virgules, et le texte
qui lentoure est le contenu de lenvironnement. Deux piges subtils vous guettent : il ne faut pas
mettre despace aprs ni avant les virgules, et penser entourer daccolades la commande de la
A
gure (LTEX gre mal les imbrications de crochets [] carrs) comme dans lexemple ..
\begin{window}[1,c,%
{\includegraphics[width=2em]{lion}},%
\centering Lui]
Un paragraphe au milieu duquel
apparat ici la chre mascotte de
\LaTeX{} : un lion lunettes. Rappelons
que celle de \TeX{} (le programme sur
lequel est bas \LaTeX{}) est un lion
\emph{sans} lunettes mais en toge.
\end{window}
c-graph.tex r --
r --
. Placement
.. Flottant
Lhabillage par du texte convient bien aux gures de dimensions rduites. Les gures plus larges
gagneront tre places hors de tout paragraphe, dans un environnement center, comme expliqu prcdemment. Ds que la hauteur de la gure devient importante, un nouveau problme se
pose : les coupures de pages.
Imaginons en eet une page remplie environ au moment ou survient une gure qui fait
A
environ une demie-page de hauteur : il ny a donc pas la place dinsrer la gure ici, et LTEX est
oblig de changer de page, mais le rsultat sera moche car pour aligner le bas de page, il va falloir
tirer dmesurment les espaces verticaux prsents dans la page. Il surait pourtant de dplacer
un peu de texte avant la gure pour que tout rentre dans lordre.
A
Le problme, cest que cest LTEX et pas vous qui dcidez des coupures de pages. Il faut donc que
ce soit aussi lui qui dcide ou placer la gure (sur cette page ou la suivante, et ventuellement aprs
du texte qui la suit) en fonction des sauts de page. Ceci sappelle faire otter la gure, quon appelle
alors un ottant. Mais, maintenant que la gure peut se promener, il faut pouvoir sy rfrer : pour
cela on pensera la munir dun titre et la numroter.
\begin{figure}[htbp]
gure
\caption[lof]{titre} \label{cl}
\end{figure}
\listoffigures
Pour rendre une gure ottante, il sut de la placer dans un environnement figure. Attention,
cet environnement est trs mal nomm : il ne sert pas construire des gures ou les insrer,
uniquement les faire otter ! Il faut tre conscient, en lutilisant, que votre gure va trs probablement tre place ailleurs que l ou elle est dans le source ; surtout, tant que la page contenant la
gure, ainsi que la suivante, le placement peut tre incohrent : cest normal continuez et tout
rentrera dans lordre.
lintrieur de lenvironnement figure, une nouvelle commande, \caption, est disponible,
qui sert donner un titre et un numro la gure. Cette commande est similaire aux commandes
de sectionnement en ce quelle admet un argument optionnel lof qui permet de donner un titre
alternatif (par exemple, plus court) qui sera utilis pour la liste des gures. Celle-ci sobtient de
faon automatique avec la commande \listoffigures, similaire \tableofcontents.
Le titre sera plac en-dessous ou au-dessous de la gure, selon que dans le source la commande
\caption est place avant ou aprs la gure elle-mme. Ceci ne sera plus forcment le cas avec
certains modules que nous verrons la section .. Par ailleurs, on peut utiliser les mcanismes
A
standard de rfrences de LTEX (vu en section .) pour se rfrer au numro de la gure avec
\ref{cl-gure}. Pour cela, il sut comme dhabitude de dire \label{cl-gure}, mais il faut
prendre garde de placer cette commande aprs la commande \caption, et non pas au dbut de
lenvironnement figure : en eet cest \caption qui produit le numro, et \label ne peut pas
fonctionner correctement avant que le numro ne soit produit.
A
. Et provoquera une complainte du type Underfull \vbox de la part de LTEX.
. En fait, il est strictement quivalent lenvironnement table que nous verrons en section .., sauf que
\caption crira gure ou table , et que lobjet sera ajout la liste des gures ou des tables.
c-graph.tex r --
Figures
r --
A
Mme si cest LTEX qui dcide ou place la gure, on peut inuencer sa dcision au moyen de
largument optionnel de figure, qui contient une suite de lettre parmi h (here, ici), t (top, en
haut dune page, par exemple la suivante), b (bottom, en bas dune page) et p (page, sur une page
part, en comportant que des ottants). Les options par dfaut sont tbp. Il est souvent raisonnable
de rajouter loption h, ce qui donne htbp, mais cest en gnral une mauvaise ide denlever des
options pour essayer de forcer le ottant tre plac o vous voulez : rappelez-vous que lintrt
A
mme des ottants est que LTEX soccupe votre place de la lourde tche de leur trouver un endroit
convenable.
Parfois, on veut absolument placer une gure un endroit prcis, mais on aimerait bien quelle
soit numrote et ait un titre comme les autres. Dans ce cas, il faut charger le module caption ,
qui permet dutiliser la commande \caption en dehors de tout environnement gure, et placer
la gure la main (par exemple dans un environnement center).
Enn, il faut savoir que lenvironnement \figure ne rgle pas lui-mme lalignement horizonA
tal de limage : pour cela, on utilise les mcanismes standard de LTEX, vus la section .. Pour
une fois, on aura intrt utiliser une commande comme \centering plutt que lenvironnement center. En eet, ce dernier ajoute de lespace vertical, ce qui est inutile voire drangeant
car lenvironnement figure sen est dj charg. Nous verrons en section . dautres moyens de
grer lalignement des ottants.
La nature dun ottant tant de otter (sans blague), il ny aurait pas beaucoup dintrt vouloir
en faire rentrer un dans une petite case comme tous les exemples de ce polycopis. Je renvoie donc
aux exercices pour des exemples de gures ottantes.
.. Une astuce classique
Les ottants sont parfois un moyen un peu extrme de rsoudre le problme du placement
des gures. Une solution intermdiaire, qui nest pas spcique aux gures, est fournie par la
commande \afterpage du module afterpage .
\afterpage{matriel}
Sa syntaxe est simple : elle admet un seul argument obligatoire, qui est une liste de commandes
arbitraires (par exemple, \includegraphics, \caption, etc. mais pas figure qui na pas sa place
ici) qui seront excutes seulement au tout dbut de la page suivante. Ceci permet dattendre
tranquillement la prochaine coupure de page pour placer une gure dont on est pas sr quelle
A
tienne sur la page en cours, quand on ne veut pas laisser LTEX choisir sa place lui-mme.
Cest par exemple ce mcanisme que jai utilis pour placer le schma des dimensions du document, page . Jai ainsi insr la commande \afterpage{\layout} juste aprs les mots sur
la page suivante page et le schma sest automatiquement dplac la page suivante comme
annonc.
. http://ctan.org/pkg/caption
. Remarque technique : les exercices comme les transparents mentionnent floatrow, qui nest nalement trait
qu la section . dans ce polycopi.
. http://ctan.org/pkg/afterpage
. Je mens un peu : dune part, jai aussi insr des \label pour pouvoir y faire rfrence ici : dautre part, \layout
produit par dfaut deux pages de schma en mode recto/verso : jai donc utilis une commande modie pour obtenir
le rsultat voulu.
c-graph.tex r --
r --
Dans les sections prcdentes, on a tudi relativement en dtails la commande principale fournie par le module graphicx : \includegraphics. Cette commande permet en particulier dappliquer des rotations ou des anits orthogonales limage insre. On peut en fait faire subir
A
le mme traitement nimporte quel texte ou plus gnralement truc produit par LTEX.
\rotatebox[origin=lcrtcBb]{angle}{matriel}
\scalebox{chelle}{matriel}
Le sens de loption origin de \rotatebox est celui expliqu par la gure ., sauf quil ne se
A
rapporte plus limage, mais la bote forme par LTEX avec le matriel donn (voir section . pour la notion gnrale de bote). La syntaxe de \scalebox est un peu particulire (le
sens de largument obligatoire change selon que largument optionnel est utilis ou non, et largument optionnel est le deuxime) mais elle devrait tre claire aprs avoir tudi lexemple .. Le
lecteur fru de mathmatiques remarquera immdiatement quune chelle horizontale ngative
permet deectuer une symtrie orthogonale daxe vertical.
\usepackage{graphicx}
\rotatebox[origin=rb]{-10}{a sen va}
et \rotatebox[origin=lb]{10}{a
revient}, cest \scalebox{2}{fait}
de \scalebox{1.5}[.8]{touts petits}
a sen v
t
a et a revien , cest
touts petits
sneir, . . .
fait de
\scalebox{-1}[2]{riens}, \dots
;-)
Jespre quil est inutile dattirer votre attention sur le fait quil ne faut user de ces possibilits
quavec parcimonie et bon escient
.. Encadrement
\fbox{matriel}
Pour mettre une image (ou autre chose) en valeur, il peut tre intressant de lencadrer. Ceci
A
ce fait tout simplement avec la commande \fbox, fournie par LTEX, qui dessine un cadre simple
autour de son argument. Pour des cadres un peu plus sophistiqus, on pourra essayer les commandes fournies par fancybox , illustres par lexemple .. Comme on le constatera, les cadres
arrondis ne rendent pas toujours bien ( lcran en tout cas).
On peut aussi faire des cadres en couleur, ventuellement avec un fond color, ou mme mettre
du texte sur fond color sans cadre. Les commandes ncessaires sont fournies par xcolor et illustres par lexemple ..
. En clair, de changer lchelle suivant un axe.
. http://ctan.org/pkg/fancybox
c-graph.tex r --
Figures
r --
\usepackage{fancybox}
\shadowbox{Ombr} ou \doublebox{doubl}
ou \ovalbox{arrondi} mais cest limite.
E . Botes colores
.. Une police de symboles
Enn, pour insrer de petits dessins, de la taille dun caractres, on fait souvent appel une police
de symboles plutt qu des images. Au sein dune telle police, les caractres usuels sont remplacs
par des symboles, auxquels on se rfre par leur numro. Plusieurs polices de symboles existent
A
pour LTEX ; une des plus standard est fournie par le paquet pifont. Pour des raisons historiques,
sa documentation est dans psnfss2e.pdf . Vous y trouverez notamment la liste des symboles
avec leurs numros.
On peut obtenir un symbole isol au moyen de la commande \ding{numro}. Le module
fournit quelques autres commande utiles, comme lenvironnement dingautolist, qui fournit
une liste numrote par des symboles conscutifs : il sut dindiquer le premier, comme dans
lexemple ..
\usepackage{pifont}
Choses faire :
\begin{dingautolist}{192}
Choses faire :
nir le polycopi ;
le mettre en ligne ;
. http://mirror.ctan.org/macros/latex/required/psnfss/psnfss2e.pdf
c-graph.tex r --
Tableaux
. Tableaux simples
.. Les bases
Nous avons dj abord la structure de base des tableaux en section .. : des lignes spares
par \\, formes de cellules spars par le caractre rserv &, le tout plac dans un environnement
adapt. Lenvironnement de base pour les tableaux hors du mode mathmatique est tabular.
\begin{tabular}{motif}
\end{tabular}
La nouveaut par rapport aux alignements mathmatiques est quil faut spcier un motif,
dcrivant le nombre de colonnes du tableau et leur type. Un type de colonne est gnralement
dcrit par une lettre ; les trois types les plus simples sont l, c et r qui fournissent des cellules simple
respectivement alignes gauche, centres, et alignes droite, comme le montre lexemple ..
\begin{tabular}{lcr}
cellule & cellule & cellule \\
texte & texte & texte \\
x & x & x \\
cellule
texte
x
cellule
texte
x
cellule
texte
x
\end{tabular}
c-tab.tex r --
Tableaux
r --
\begin{tabular}{r|r|cl|} \hline
A 1 & Machin & Patin & Couffin\\
\hline\hline
Machin
Patin
Coun
B
C
Bidule
Fou
Chose
Barre
Chouette
Base
\cline{1-1} \cline{3-4}
C \vline{} 3 & Fou & Barre & Base\\\hline
\end{tabular}
Romo et Juliette
Jeanne et Serge
Tic et Tac
ans
ans
ans
\end{tabular}
E . Matriel inter-colonnes
Les colonnes simples vues jusqu prsent correspondent ces cellules ne pouvant comporter
quun seule ligne de texte. Il existe des colonnes de type paragraphe, dont les cellules peuvent
A
contenir plusieurs lignes de texte, coupes automatiquement par LTEX. Il faut par contre indiquer
A
la largeur de ces colonnes, pour que LTEX sache quelle longueur couper les lignes.
A
La seule colonne de type paragraphe qui soit pr-dnie en LTEX est p{largeur}. Le module
array fournit deux autres types : m{largeur} et b{largeur}. La dirence entre ces trois types
est la faon dont le paragraphe sera align verticalement par rapport aux autres cellules. Avec p,
cest par le haut, m par le milieu et b par le bas.
Comme on le constate sur lexemple ., quand un cellule est aligne par le haut, cela veut dire
que son contenu dborde en bas, et rciproquement. Il faut prendre garde de ne pas semmler.
Par ailleurs, les colonnes de type paragraphe sont souvent assez troites et posent donc de gros
A
problmes de coupure de ligne lorsque LTEX essaie (comme il le fait dhabitude) davoir des marges
. http://ctan.org/pkg/array
c-tab.tex r --
r --
. Tableaux simples
\begin{tabular}{rp{1cm}m{1cm}b{1cm}l}
Base & Par le haut & Par le centre
& Par le bas & Base \\
\end{tabular}
Base
Par le
haut
Par le
centre
Par le
bas
Base
tableau
\caption[lot]{titre} \label{cl}
\end{table}
\listoftables
Toutes les autres solutions de placement voqus pour les gures sont aussi disponibles pour
les tableaux, mme si certaines sont peu adapts esthtiquement (habillage). Celle qui sert le plus
souvent est de faire otter les tableaux de taille importante. Pour cela, on procde exactement
comme pour les gures, en remplaant lenvironnement figure par table. Je le rpte, table ne
sert pas construire une tableau, mais le faire otter. Relisez la section .. si vous ntes pas sr
de savoir ce que cela signie. Par ailleurs, \listoftables permet dobtenir la liste des tableaux,
de faon similaire \talbeofcontents pour la table des matires.
.. En mode mathmatique
Nous avons vu en section .. plusieurs faons de construire des alignements en mode mathmatique, adaptes tel ou tel cas dusage. Il existe un environnement de tableau mathmatique :
array, ne pas confondre avec le module du mme nom, vu prcdemment. Cet environnement
fonctionne exactement comme tabular sauf sur les deux points suivants :
il faut tre en mode mathmatique pour lutiliser ;
chaque cellule est automatiquement en mode mathmatique.
Il prend aussi un argument dcrivant les colonnes ; en gnral on nutilise que des colonnes de
type l, c ou r.
De faon gnrale, il faut viter le plus possible dutiliser array lorsquune solution alternative
est disponible : en eet, il est trs dicile dobtenir des espacements cohrents entres les colonnes
c-tab.tex r --
Tableaux
r --
avec array, comme le montre lexemple . : dans (.) et (.), les espaces autour du signe dgalit sont identiques et ils sont corrects. Dans (.) et (.), ils sont trop grands dun ct ou des
deux, et dans (.) trop petits. Dans ce cas, aligned est la bonne solution.
\usepackage{amsmath}
\begin{gather}
x =+
x = 2 + 2 \label{good1} \\
x =+
\begin{aligned} x &= 2 + 2 \\
(.)
(.)
x =+
=
\begin{array}{rcl} x &=& 2 + 2 \\
&=& 4 \end{array} \label{bad2} \\
\begin{array}{r@{}c@{}l} x &=& 2 + 2 \\
&=& 4 \end{array} \label{bad3}
\end{gather}
(.)
x= +
=
(.)
x = +
=
\begin{array}{rl} x &= 2 + 2 \\
(.)
Le module array est pratiquement indispensable ds que lon veut faire des choses un peu
srieuses avec les tableaux. En plus de fournir les types de colonnes m et b, il fournit surtout la
possibilit dindiquer dans le prambule du tableau du matriel qui sera insr automatiquement
au dbut ou la n de chaque cellule de la colonne. Lexemple . illustre lutilisation de ces fonctionnalits.
\usepackage{array}
\begin{tabular}{|>{\bfseries}l|
>{\(}c<{\)}|r<{~\texteuro}|}
du texte & 2^2 & 1 \\
du texte
en gras
c-tab.tex r --
r --
Revenons maintenant aux colonnes de type paragraphe : cest souvent une mauvaise ide de les
laisser justies, il faut donc les centrer ou les aligner droite ou gauche. Ceci se fait avec les
commandes standard, comme \centering, que lon peut insrer comme matriel automatique
en dbut de colonne. Le problme qui survient alors est que ces commandes re-dnissent \\,
qui est dj utilis pour sparer les lignes du tableau. Deux solutions sont alors disponibles :
utiliser \\ pour aller la ligne dans une cellule, et le remplacer par \tabularnewline entre
deux lignes du tableau ;
faire suivre \centering de la commande spciale \arraybackslash : la commande \\ retrouve alors son sens habituel de sparateur des lignes du tableau, mais on ne peut plus lutiliser pour aller la ligne au sein dune cellule.
Lexemple . montre deux tableaux utilisant chacun une des deux approches.
a
\usepackage{array}
\begin{tabular}{r>{\centering}p{3cm}}
a & blabla \\ bla \\ lala \tabularnewline
b & blibli \\ bli \\ lili \tabularnewline
\end{tabular}\par
\begin{tabular}{r
>{\centering\arraybackslash}p{3cm}}
a & blabla bla lala baba bla
blabla \\
blibli \\
\end{tabular}
blabla
bla
lala
blibli
bli
lili
blabla bla lala baba
bla blabla
blibli bli lili bibi bli
blibli
.. Colonnes personnalises
\newcolumntype{lettre}{motif}
Si lon utilise souvent le mme type de colonnes, avec le mme matriel automatique de dbut
et de n, il peut tre pratique de dnir un raccourci. Cest ce que fait \newcolumntype : associer
tout un morceau de prambule une seule lettre. Attention, une lettre, a reprsente assez peu de
A
choix possibles : il faut donc tre prudent pour viter de prendre une lettre dj utilise par LTEX
ou un module existant.
.. Fusion de cellules
\multicolumn{nombre}{motif}
Il est possible de fusionner horizontalement plusieurs cellules entre elles, par exemple pour
avoir un titre stalant sur toute la largeur du tableau. Pour cela, on utilise la commande standard
A
\multicolmun fournie par LTEX, dans la cellule la plus gauche de celles fusionner en indiquant
le nombre total de cellules participant la fusion. On doit ensuite indiquer un motif de colonnes
qui remplacera le motif habituel des cellules utilises. Il faut bien faire attention aux lets verticaux
en changeant ce motif, comme dans lexemple ..
c-tab.tex r --
Tableaux
r --
\begin{tabular}{|*{3}{l|}} \hline
\multicolumn{3}{|c|}{\textbf{Titre
gnral assez long}} \\ \hline
\multicolumn{1}{|c|}{\textit{T. 1}} &
\multicolumn{1}{c|}{\textit{T.
2}} &
\multicolumn{1}{c|}{\textit{T. 3}} \\
\hline machin 1 & machin 2 & machin 3 \\
Pour fusionner des cellules verticalement, on doit utiliser le module multirow pour disposer de
la commande ponyme. Celle-ci se place dans la cellule en haut de celles fusionner ; ces dernires
devront tre laisses vides dans les lignes suivantes. Le premier argument indique le nombre total
de cellules fusionnes. Par dfaut, la cellule ainsi cre est de type paragraphe : son contenu peut
staler sur plusieurs lignes, il faut alors prciser sa largeur comme deuxime argument. Si au
lieu dune largeur, on met une toile, alors la cellule ne peut plus contenir quune ligne de texte.
Dans tous les cas, son contenu est centr verticalement dans lespace disponible. Souvent, on peut
vouloir tourner le texte dans la cellule fusionne, comme dans lexemple ..
\usepackage{multirox, graphicx}
Premier & \multirow{3}*{\rotatebox
[origin=cc]{90}{Podium}}
& Or \\ Deuxime & & Argent \\
Premier
Deuxime
Troisime
Podium
\begin{tabular}{rcl}
Or
Argent
Bronze
c-tab.tex r --
r --
.. Ajustement de la largeur
\begin{tabular*}{largeur}{@{\extracolsep\fill}motif}
\begin{tabularx}{largeur}{motif avec X}
\begin{tabulary}{largeur}{motif avec L, C, R, J}
Pour linstant, tous nos tableaux sajustaient en largeur leur contenu. Pour faire un tableau dont
on choisit la largeur totale, il y a deux types de solutions : ajuster la largeur en ajoutant de lespace
entre les colonnes, on en changeant la taille des colonnes. La premire solution est fournie par
lenvironnement tabular*, condition de penser rajouter @{\extracolsep\fill} en dbut
de motif (ce nest pas trs intuitif, mais cest comme a).
Cette approche nest en gnral pas trs intressante, car il est dommage de laisser du vide entre
les colonnes alors quon pourrait souvent utiliser cet espace. On peut bien sr chercher ajuster
la largeur des colonnes la main, mais cest fastidieux : il faut mieux automatiser ceci avec les
modules tabularx ou tabulary et leurs environnements ponymes. Le premier fournit un
nouveau type de colonne : X, qui est lquivalent de p sauf quon a pas indiquer la largeur : elle est
dtermine par tabularx en fonction de la largeur des autres colonnes pour atteindre la largeur
totale voulue.
\usepackage{array, tabularx, tabulary}
\newcommand\tcourt{Un texte plutt court.}
\newcommand\tlong{Un texte nettement plus
long pour illustrer la diffrence entre
\texttt{tabularx} et \texttt{tabulary}.}
\newcommand\rr{\raggedright}
\begin{tabular*}{\linewidth}{
@{\extracolsep\fill}
|>{\rr}p{1.5cm}|>{\rr}p{3cm}|}
\tcourt & \tlong
\end{tabular*} \par
\begin{tabularx}{\linewidth}
{|>{\rr}X|>{\rr}X|} \tcourt & \tlong
\end{tabularx} \par
\begin{tabulary}{\linewidth}{|L|L|}
\tcourt & \tlong
\end{tabulary}
Un texte
plutt
court.
Un texte nettement
plus long pour
illustrer la
dirence entre
tabularx et
tabulary.
Un texte plutt
Un texte
court.
nettement plus
long pour
illustrer la
dirence entre
tabularx et
tabulary.
Un
Un texte nettement plus
texte
long pour illustrer la
plutt dirence entre
court. tabularx et tabulary.
E . Tableaux de largeur xe
Dans le cas o plusieurs colonnes de type X sont utilises, elles se partagent galit la largeur disponible. Ceci nest pas toujours lidal, par exemple si le contenu dune colonne est nettement plus long que celui de lautre, comme dans lexemple .. Dans ce cas, il faut mieux utiliser
tabulary, qui rpartit quitablement la largeur entre les colonnes en fonction de leurs besoins.
. http://ctan.org/pkg/tabularx
. http://ctan.org/pkg/tabulary
. Notez la dirence entre galit et quit.
c-tab.tex r --
Tableaux
r --
De plus, tabulary possde quatre types de colonne de largeur automatique, qui dirent par lalignement horizontal du texte : L align gauche, C centr, R align droite et J justi (comme
p). Ceci ore rend lcriture du prambule plus concise, puisquon a pas besoin de jouer avec
>{\raggedright}.
.. Couleurs
Il est possible dutiliser des couleurs dans les tableaux. Pour mettre le contenu dune cellule en
couleur, on utilise \color ou \textcolor comme dhabitude. Pour tout le reste, on dispose de
commandes spciales obtenues en chargeant xcolor avec loption table.
\cellcolor{couleur}
>{\columncolor{couleur}}
\rowcolor{couleur}
\arrayrulecolor{couleur}
Ces commandes ont des noms assez clairs (si lon sait que cell signie cellule, column colonne,
row ligne et rule let) et servent dterminer la couleur de dirents lments. La seule dicult
est de les placer au bon endroit : \cellcolor se place au tout dbut dune cellule, \columncolor
dans le prambule du tableau, comme matriel automatique de dbut de cellule, \rowcolor se
place au tout dbut de nimporte quelle cellule dune ligne et agit jusqu la n de la ligne. Enn,
\arrarulecolor sutilise entre deux lignes dun tableau. Lusage de toutes ces commandes est
illustr par lexemple ., qui est de trs mauvais got.
\usepackage[table]{xcolor}
\arrayrulecolor{red}
\begin{tabular}{l| >{\color{green}}c|
>{\color{blue}\columncolor{yellow}}r}
\rowcolor{pink} Titre 1 & Titre 2 & Titre 3 \\
\hline \cellcolor{cyan} Cellule 1a & Cell. 1b
& Cell. 1c \\ Cell. 2a & Cell. 2b & Cell. 2c
Titre
Cellule a
Cell. a
Cell. a
Titre
Cell. b
Cell. b
Cell. b
Titre
Cell. c
Cell. c
Cell. c
3c \\ \hline
\end{tabular}
Une utilisation bien plus raisonnable de la couleur consiste colorer une ligne sur deux. Dans
les tableaux longs, ceci aide le lecteur suivre les lignes, sans pour autant trop alourdir le tableau.
Loption table dxcolor fournit une commande automatisant ceci, placer avant le tableau. Les
deux derniers arguments de \rowcolors sont les couleurs appliquer successivement aux lignes,
tandis que le premier argument permet de commencer lalternance avec un peu de retard, par
exemple pour laisser la place aux lignes de titre. Cest que quon fait dans lexemple ., o lon
voit aussi que laisser vide un des deux derniers arguments revient laisser la ligne en blanc.
c-tab.tex r --
r --
\usepackage[table]{xcolor}
\begin{center} \rowcolors{3}{blue!10}{}
\begin{tabular}{lcr} \hline
\multicolumn{3}{c}{\textbf{Titre gnral}}\\
\textit{titre 1} & \textit{titre 2} &
\textit{titre 3} \\ \hline a & b & c \\
d & e & f \\ i & j & k \\ l & m & n \\
\dots & \dots & \dots \\ x & y & z \\ \hline
\end{tabular} \end{center}
Titre gnral
titre titre titre
a
b
c
d
e
f
i
j
k
l
m
n
...
...
...
x
y
z
Vous savez maintenant, en combinant les lments dj vus, faire des tableaux trs sophistiqus.
Les exemples donns sont souvent assez laids et servent juste illustrer rapidement lensemble des
techniques disponibles. Pour nir ce chapitre, je vous encourage, pour les tableaux encore plus
que pour le reste de votre mise en pages, rester simple et sobre. Un excs dinformation ou une
structure trop complexe dsorientent le lecteur plus quils ne laident.
En principe, un tableau na pas besoin de beaucoup de lets. Lalignement des lments entre
eux est susant pour guider lil du lecteur. Il est conseill dutiliser une structure commune
pour la plupart de ses tableaux, la fois par souci esthtique et pour ne pas dtourner lattention
du lecteur.
Le module booktabs fournit trois commandes : \toprule, \midrule et \bottomrule, qui
remplacent avantageusement \hline pour des lets horizontaux en haut, milieu et bas de tableau.
Elles ajustent lgrement lespace vertical de faon obtenir une disposition plus quilibre. Ces
commandes ont t utilises pour tous les tableaux du prsent polycopi, et aucun let vertical
na t insr. Ceci fournit, je lespre, des tableaux ars et lisibles.
Enn, il est parfois ncessaire dajuster manuellement certains espacements dans les tableaux,
notamment autour des lets horizontaux. Nous verrons quelques techniques pour cela en section ...
. http://ctan.org/pkg/booktabs
. Sauf bien sr ceux des exemples de ce chapitre. . .
c-tab.tex r --
Complments divers
. Note technique
Par rapport au cours donn en salle (et donc aux supports de prsentation utiliss, notamment
03-texte.pdf, 06-graph.pdf, 07-tab.pdf et bien sr 08-comp-divers.pdf), des lments ont
t placs plus tt dans ce poly. Il sagit des sections .. (bibliographie), .. (astuce pour les
gures), .. (tableaux en mode mathmatique) et .. (couleurs dans les tableaux). Les exercices suivront la progression du cours rel : les notions vues dans les sections cites ne seront donc
pas prsentes avant lexercice huit.
Par ailleurs, la dmonstration dutilisation de bibtex avec biblatex faite en cours tait propose titre purement culturel et ne correspond en aucun cas des connaissances exigibles
lexamen. Elle ne sera donc pas reproduite ici.
. Code informatique
A
.. Outils de LTEX
A
Le problme qui se pose lorsque lon veut saisir du code informatique avec LTEX est que de
nombreux symboles rservs sont utiliss frquemment dans la plupart de langages courants.
A
Pour contourner ce problme, LTEX dispose dun mode spcial, appel verbatim, o plus aucun
caractre nest rserv ou spcial.
\verbsymboletexte verbatimsymbole
\begin{verbatim}
contenu verbatim
Un peu comme pour les math, il y a deux moyens dcrire en verbatim : soit dans le cours du
texte, avec la commande \verb, soit hors-texte, ventuellement sur plusieurs lignes, avec lenvironnement verbatim. Dans les deux cas, le texte sera aussi compos en style machine crire,
comme avec \texttt, et si lon utilise ltoile optionnelle de la commande ou de lenvironnement,
les espaces seront matrialiss par le caractre , comme le montre lexemple ..
On constate aussi que plus aucun espace nest ignor : ni en dbut de ligne, ni aprs un autre
espace. La syntaxe de la commande \verb est particulire : son argument nest pas dlimit
par des accolades. Il se termine la premire apparition du symbole (autre quune toile) qui suit
immdiatement la commande \verb. Ainsi, dans largument, on peut utiliser tous les symboles
sauf un. En pratique ce nest pas un problme.
Lenvironnement verbatim a aussi une particularit syntaxique, qui est moins visible : la chane
\end{verbatim} doit imprativement tre seul sur une ligne. Par ailleurs, ni la commande ni
lenvironnement ne fonctionnent dans largument dune autre commande. Par exemple, le code
. Ce qui ne vous empche pas de mblouir par votre matrise de bibtex dans votre document libre si vous
matrisez dj bien le reste du cours et dsirez passer dune trs bonne note une trs, trs bonne note. Cette remarque
est valable pour la plupart des points hors-programme, bien sr.
c-comp-divers.tex r --
Complments divers
r --
\begin{verbatim}
#include <stdlib.h>
#include <stdlib.h>
int main(void) {
int main(void) {
exit 0;
exit 0;
}
}
\end{verbatim}
ne donnera pas \lipsum , mais provoquera en fait une erreur la compilation. Il faut tre prudent
A
car ce genre derreur est parfois dicile comprendre, elles sont parfois mal dtectes par LTEX
et le message derreur nest alors pas clair du tout. Ceci est d au fonctionnement trs particulier
du verbatim, et les commandes et environnements prsents dans les deux prochaines section
prsentent la mme limitation.
A
Les outils fournis pas LTEX rpondent plutt bien au problme de saisir des morceaux de texte
comportant beaucoup de caractres spciaux, mais norent aucune possibilit de mettre en forme
(police, couleur, encadrement, etc.) ces fragments. (Les commandes standard ne sont pas utilisables pour la raison voqu ci-dessus.) Comme dhabitude, de nombreux modules orent des
possibilits supplmentaire. Nous allons en tudier deux, qui sont sans doute les plus aboutis :
fancyvrb et listings .
Tout dabord, fancyvrb fournit une commande et un environnement (\Verb et Verbatim) qui
A
ont pour but de remplacer ceux fournis par LTEX et peuvent sutiliser avec la mme syntaxe. Leur
avantage est que lapparence du rsultat est rglable.
\fvset{option=valeur,
formatcom=commande
...}
Pour ceci, on dispose de la commande \fvset qui a une action globale. Cest la seul moyen de
rgler lapparence du rsultat de \Verb. Lenvironnement Verbatim, par contre, accepte un argument optionnel qui permet de spcier ses options valables uniquement pour lenvironnement en
cours.
Parmi les options, certaines ont une inuence la fois sur \Verb et \Verbatim. Cest le cas par
exemple de formatcom qui prend comme argument une commande ou une suite de commande
dterminant la police et la couleur du rsultat. Attention, il faut utiliser ici la forme dclarative
(ex. \bfseries) et non la forme avec argument (ex. \textbf), comme le montre lexemple ..
. http://ctan.org/pkg/fancyvrb
. http://ctan.org/pkg/listings
c-comp-divers.tex r --
r --
. Code informatique
Par ailleurs, on y voit que chaque utilisation de loption formatcom annule la prcdente, les commandes ne sajoutent pas entre elles.
numbers=none, left, right
stepnumber=nombre
Dautres options nont de sens que pour lenvironnement, comme number qui dtermine si
les lignes sont numrotes, et de quel ct sont placs les numros. On dispose dailleurs de
stepnumber pour viter de numroter toutes les lignes, galement illustr par lexemple ..
\usepackage{fancyvrb, xcolor}
\fvset{formatcom=\color{pink}\bfseries,
numbers=left, stepnumber=2}
\begin{Verbatim}[formatcom=\slshape]
#!/usr/bin/perl
use warnings;
print Hello, world!;
use warnings;
exit 0;
exit 0;
\end{Verbatim}
Ces options ont des noms assez explicites, du moins si lon connat un peu danglais, et il est facile
dexprimenter avec jusqu obtenir leet dsir. Jattire votre attention sur deux points dlicats : le
premier est que la valeur de framecolor doit tre une commande comme \color{blue} et pas un
simple nom de couleur comme blue. Par ailleurs, loption label na rien voir avec la commande
\label. En fait elle ressemble plus \caption : il sagit de donner un titre au morceau de code ;
par contre, aucune numrotation nest produite.
\begin{BVerbatim}[boxwidth=auto, dimension,
autres options]
Par dfaut, une ligne de texte verbatim prend toute la largeur, ce qui devient visible quand on
lencadre. Il existe en fait une variante de Verbatim nomme BVervatim (pour boxed verbatim) qui
peut crer des lignes plus petites. En plus des options habituelles, elle reconnat loption boxwidth
qui permet de spcier la dimension des lignes cres, ou de sadapter automatiquement la largeur ncessaire avec le mot-cl auto.
c-comp-divers.tex r --
Complments divers
r --
Enn, fancyvrb propose quelques moyens de simplier la saisie. Par exemple, si comme moi
vous aimez indenter le contenu des environnements avec deux espaces, vous serez vite gns par le
fait que ces deux espaces apparaissent dans la sortie (comme cest le cas dans lexemple .). Pour
les liminer, il sut dutiliser loption gobble=n, o n est le nombre de caractres supprimer
au dbut de chaque ligne. Attention, si une ligne de commence pas pas au moins n espaces,
vous perdrez des caractres !
Par ailleurs, si vous avez beaucoup de verbatim saisir au cours du texte, vous pouvez crer
un raccourci pour \Verb : placez \DefineShortVerb\| dans votre prambule, et partout dans le
document, | sera quivalent ) \Verb| : cest--dire que vous pouvez saisir seulement |\lipsum|
au lieu de \Verb|\lipsum|. Par contre, il devient bien sr impossible dutiliser le caractre |
normalement. Vous pouvez au besoin dsactiver ce raccourci avec \UndefineShortVerb\|. (Il
est bien sr possible de choisir nimporte quel autre caractre la place de |, mais les caractres
non-ASCII ne fonctionneront pas en utf.)
.. Apart : le verbatim dans des arguments
Comme je lai dit, le mode verbatim ne peut pas fonctionner dans largument dun autre commande. Comment faire pour contourner cette limitation ? Cette section prsente trois approches
possibles.
La premire consiste tout simplement ne pas utiliser de verbatim, mais le simuler. En effet, chacun des caractres rservs peut sobtenir avec une commande : il sut de lutiliser. Pour
simplier la saisie, on a intrt se dnir des commandes adaptes au contexte, comme dans
lexemple .. Cest la mthode que jutilise la plupart du temps : chaque fois que vous croyez
voir du verbatim dans le titre dun exemple ou dun tableau (cest-dire dans largument de la
commande \caption) par exemple, il sagit de faux verbatim.
\usepackage{fancyvrb, xcolor}
\newcommand\code{\ttfamily\color{magenta}}
\fvset{formatcom=\code}
\newcommand\macro[1]{{\code\textbackslash#1}}
\newcommand\argu[1]{{\code\textbraceleft
#1\textbraceright}}
Du vrai verbatim : \Verb+\textbf{gras}+. Mais
Du vrai verbatim :
\textbf{gras}. Mais pour
encadrer, il faut tricher :
\textbf{gras} . Une autre
mthode : \textbf{gras} .
c-comp-divers.tex r --
r --
. Code informatique
dune commande), puis de lutiliser ensuite dans nimporte quel contexte. Cest une mthode que
jutilise aussi dans ce polycopi, mais jamais directement, car je la trouve fastidieuse : je lenrobe
donc dans des macros ou environnements personnels qui rendent son usage plus facile.
Enn la dernire mthode est spcique la commande \footnote. Il est en fait possible de
modier cette commande particulire de faon ce quon puisse utiliser du verbatim dans son
argument sans prcaution particulire. Pour cela, il sut de charger fancyvrb et de placer la
commande \VerbatimFootnotes juste aprs le \begin{document}. Attention, il est possible que
cette commande ne fonctionne pas si vous utilisez dautres paquets qui modient la commande
\footnote.
.. Avec le module listings
Le module listings fournit beaucoup doptions similaires celles de fancyvrb, sur lesquelles
je ne mtendrai pas. Parlons plutt de ce quil ore de plus : il permet de reconnatre des mots-cl
selon le langage informatique utilis, et de leur appliquer automatiquement des mises en formes
particulires, comme le montre lexemple ., qui utilise dabord les rglages par dfaut, puis personnalise un peu lapparence.
\usepackage{listings}
\begin{lstlisting}[language=C]
#include <stdlib.h>
int main(int argc, char** argv) {
exit 0; /* ouf, fini ! */
}
\end{lstlisting}
\begin{lstlisting}[language=C,
i n c l u d e < s t d l i b . h>
i n t main ( i n t a r g c , c h a r * * a r g v ) {
e x i t ; / * ouf , f i n i ! * /
}
basicstyle=\ttfamily,
keywordstyle=\color{blue},
commentstyle=\color{black!30},
numbers=left]
#include <stdlib.h>
#include <stdlib.h>
int main(int argc, char** argv) {
c-comp-divers.tex r --
Complments divers
r --
les lignes une longueur xe, etc. Pour plus de dtails, je vous renvoie sa documentation,
assez complte, mme sil nest pas toujours facile de sy orienter. Dailleurs, je nai pas non plus
prsent toutes les fonctionnalits de fancyvrb, et vous invite consulter la documentation, riche
de nombreux exemples, pour apprendre le reste.
. Concentr dorthotypographie
Pour clore ce chapitre, une section assez dirente des autres. Dhabitude, nous parlons beaucoup des moyens dobtenir tel ou tel rsultat, mais peu du but, qui est de produire un document
A
beau regarder et agrable lire, ce pour quoi LTEX nest quun outil. Aprs tout, le TEXbook prA
sente TEX (sur lequel est bas LTEX) en ces termes :
Gentil lecteur, ceci est un manuel dcrivant TEX, un nouveau systme de composition
conu pour crer de beaux livres spcialement des livres traitants de mathmatiques.
Je nai ni la comptence ni le temps de vous apprendre comment faire de beaux documents,
mais parlons dj du premier pas, qui est de produire des documents orthotypographiquement
corrects, cest--dire respectant les rgles de base de la typographie de la langue dans laquelle ils
sont crits.
La premire rgle est la sobrit. Un texte bien compos est assez rgulier ; il ny a donc pas
besoin de beaucoup deets pour mettre des mots en valeur. Pour insister lgrement sur un mot,
A
litalique est le moyen prfr (avec la commande \emph en LTEX). Pour insister lourdement, on
peut utiliser le gras, qui est dj un moyen agressif : mme en regardant la page de loin, on repre
immdiatement la tache produite par ce mot au sein du bloc de texte (on dit quil rompt le gris
typographique).
Il convient dviter absolument les changements de taille au sein dun paragraphe, car ils ruinent
totalement son homognit. De mme, le soulign est gnralement proscrire : au sein dun
paragraphe, il trouble linterligne ou entre en collision avec les caractres ; en dehors dun paragraphe, il est parfaitement inutile car les mots sont susamment mis en valeur par leur position
sur la page, et ventuellement leur taille et leur graisse.
Par ailleurs, en franais, on nutilise les majuscules quavec parcimonie. Si aucune rgle de
grammaire ou dorthographe ne dit quune lettre particulire doit tre en majuscule, alors elle
est en minuscule. En particulier, on ne met pas de majuscule un mot juste pour souligner son
importance ; dans les titres, seul le premier mot prend une majuscule (cest en anglais que tous les
mots dun titre prennent une majuscule).
Par ailleurs, les majuscules conservent les accents et les cdilles : ceux-ci font partie de lorthographe du mot, qui na pas de raison de changer selon sa place dans la phrase ou dans un titre.
La fausse croyance, trs rpandue, en une rgle disant le contraire, provient en fait des limitations
A
techniques des machines crire. LTEX ne soure heureusement pas de ce genre de limitation.
Un autre point soumis des rgles prcises est lespacement autour des signes de ponctuation,
qui ne doit pas tre utilis de faon fantaisiste : plus encore que lesthtique, cest la lisibilit du
texte qui est en jeu. Ces rgles sont rsumes par la table ..
. Note pour les connaisseurs : jvite volontairement de distinguer majuscules et capitales, pour ne pas compliquer
lexpos.
. Plus gnralement, ce quon appelle les diacritiques, qui comprennent les accents, les cdilles, les trmas, etc.
c-comp-divers.tex r --
r --
. Concentr dorthotypographie
Avant
Signe
Aprs
rien
rien
ne
ne
ne
inscable
espace normale
espace normale
inscable
espace normale
rien
,
.
;
!
?
:
(
)
espace normale
espace normale
espace normale
espace normale
espace normale
espace normale
espace normale
inscable
espace normale
rien
espace normale
Pour une introduction un peu plus pousse aux rgles essentielles de la typographie franaise, notamment pour les documents scientiques, je recommande le Petit typographe rationnel
ddie S, un fascicule de pages rsumant lessentiel de ce quil faut savoir. En fait, mme
A
si vous dcidiez de ne plus utiliser LTEX aprs ce cours, je vous encourage quand mme lire (et
relire) ce fascicule, car il me semble important de savoir rdiger des documents relativement corrects dun point vue orthotypographique, quel que soit le moyen technique utilis.
Il existe de trs nombreuses rfrences concernant la typographie en gnral et ses rgles en
particulier. Pour un rsum des rgles, lImprimerie nationale publie un Lexique des rgles typographiques trs pratique. Pour une rfrence plus exhaustive, le Dictionnaire dorthotypographie
de L est disponible en ligne ou en librairies. Enn, pour souvrir aux aspects esthtiques
de la typographie, The elements of typographic style de Robert B est un classique incontournable (et lui-mme un trs beau livre).
. Dans son sens typographique, espace est fminin. Il fait partie de ces mots, qui comme amour, changent de genre
selon le contexte ou lusage.
. http://tex.loria.fr/typographie/saudrais-typo.pdf
. http://www.orthotypographie.fr/
c-comp-divers.tex r --
lments de programmation
. Rappels sur les dnitions
A
Vous savez dj crer et manipuler plusieurs sortes dobjets en LTEX : commandes et environnements avec \newcommand et \newenvironment, environnements numrots avec \newtheorem,
couleurs avec \definecolor et \colorlet, etc. Comme je lai dj dit, la possibilit de pouvoir
A
crer des objets pour adapter LTEX ses besoins est un des lments qui fait sa force.
A
Quand on connat susamment bien les mcanismes internes de LTEX, on peut aussi modier
son comportement pour ladapter ses besoins. Les (re-)dnitions de commandes ne susent
pas toujours pour parvenir ses ns. Dans ce chapitre, je prsente tous les types dobjets manipuls
A
par LTEX, qui vous permettront de crer et faire fonctionner des commandes complexes, ainsi que
A
de mieux comprendre de contrler LTEX.
Hormis les commandes (et environnements), il y a trois types dobjets qui intressent le bricoA
leur LTEXien : les compteurs, les longueurs et les botes.
. Compteurs
A
Il y a toutes sortes dlments numrots en LTEX : sections, sous-sections, thormes, quations, lments dun enumerate, pages, notes, etc. Derrire chacun dentre eux se cache un compteur, cest--dire une variable stockant la valeur dun nombre entier.
A
En LTEX, le nom dun compteur ne comporte que des lettres (sans \ au dbut, contrairement
un nom de commande). Souvent, un compteur porte le mme nom (sans la contre-oblique) que
la commande servant crer llment correspondant. La table . donne les noms des compteurs
A
pr-dnis en LTEX.
part
subsubsection
figure
enumi
chapter
paragraph
table
enumii
section
page
footnote
enumiii
subsection
subparagraph
equation
enumiv
A
T . Compteurs de base de LTEX
En principe, vous navez pas besoin de toucher ces compteurs, qui augmentent et se remettent
ventuellement zro aux bons moments. Par contre, certains compteurs sont spciquement
prvus pour rgler certains aspects du document.
\setcounter{nom}{valeur}
\addtocounter{nom}{valeur}
secnumdepth tocdepth
c-prog.tex r --
lments de programmation
r --
Vous avez peut-tre remarqu que les commandes de sectionnement ne produisent pas toutes
de numro ni dentre dans la table des matires : par exemple, en classe article, les sous-sections
(\subsubsection) sont numrotes, mais pas les \paragraph. En fait, vous pouvez choisir vous
mme quel niveau sarrte la numrotation, grce un code numrique : pour \section,
pour \subsection, etc. Cest la valeur du compteur secnumdepth qui contrle le dernier niveau
numrot. Par exemple, aprs \setcounter{secnumdepth}{1}, seules les sections seront numrotes, pas les sous-sections.
Par contre, les sous-sections apparatront toujours dans la table des matires. Si vous voulez
que la table des matires se limite aux sections, vous pouvez faire \setcounter{tocdepth}{1}.
Ceci est indpendant du rglage de secnumdepth. Par ailleurs, si vous navez pas envie de retenir
les codes numriques, vous pouvez juste dire \addtocounter{tocdepth}{-2} pour enlever deux
niveaux de la table des matires par rapport aux rglages par dfaut.
Plus gnralement, vous laurez compris, \setcounter sert rgler la valeur dun compteur,
et \addtocounter permet de lui ajouter une valeur. Par exemple, si vous voulez numroter vos
sections en partant de , il vous sut de dire \setcounter{section}{-1} avant la premire
section. En eet, le compteur est augment de par \section juste avant dtre ach.
En principe, vous devez donner un nombre entier comme valeur, pas une expression. Si vous
chargez le module calc par contre, vous avez le droit des expressions arithmtiques simples :
additions, soustractions, multiplications, parenthses. Pour utiliser la valeur dun compteur dans
une expression, on utilise \value{nom}. Attention, \value ne sert que dans une expression,
pas acher la valeur du compteur.
\thenom
chaque compteur est associ une commande spciale pour acher sa valeur, forme en ajoutant \the devant le nom du compteur. Par exemple, on ache la valeur du compteur page avec
la commande \thepage. Pour la plupart des compteurs, ceci ache la valeur du compteur en
chires arabes. En fait, la commande \thesection peut tre rednie, comme nimporte quelle
commande, pour modier lachage du compteur.
Dans sa dnition, nous allons avoir besoin de commande lmentaires pour acher les valeurs
de compteur. Celles-ci sont au nombre de six : \arabic pour les nombres arabes, \roman pour des
chires romains minuscules, \Roman pour des chires romains majuscules, \alph pour des lettres
minuscules, \Alph pour des lettres majuscules, et \fnsymbol pour des symboles, traditionnellement utiliss pour les notes de bas de page en typographie anglo-saxonne. Lexemple . montre
comment les utiliser pour changer la reprsentation des compteurs de section et sous-section.
Comme on le constate, modier \thesubsection change la reprsentation de subsection
partout, y compris dans les rfrences. Si on veut juste modier la faon dont le numro sache
dans le titre, il ne faut pas modier \thesubsection (voir section . pour une solution).
Par ailleurs, remarquez que dans la dnition de \thesubsection on a utilis \thesection
pour reprendre automatiquement la bonne reprsentation de section. Attention par contre ne
. Une table des matires courte au dbut du document peut tre par exemple complte par des tables dtailles
au dbut de chaque section ; le module minitoc permet dobtenir de telles tables des matires partielles. Si vous en avez
besoin un jour, sachez que la documentation est disponible en franais (minitoc-fr.pdf).
. http://ctan.org/pkg/calc
c-prog.tex r --
r --
. Compteurs
\renewcommand\thesection{\Roman{section}}
Une section
\renewcommand\thesubsection{%
\thesection-\roman{subsection}}
\section{Une section}
\subsection{Une sous-section}
\renewcommand\thepage{(\arabic{page})}
\newcounter{nom}
\refstepcounter{nom}
Vous pouvez crer vos propres compteurs, pour des objets numrots personnels. Pour dclarer un nouveau nom de compteur, on utilise \newcounter{nom} : ceci permet ensuite dutiliser
nom comme un compteur ; par ailleurs il est initialis avec la valeur . Lopration la plus courante faire avec un compteur est daugmenter sa valeur dun cran : plutt qu\addtocounter, il
faut utiliser \refstepcounter, qui soccupe de quelques dtails supplmentaires, comme de faire
fonctionner les rfrences. Lexemple . montre une utilisation basique dun nouveau compteur
pour des exercices numrots.
Bien sr, ou aurait pu utiliser \newtheorem pour crer cet environnement numrot. Lintrt
A
de savoir le faire la main partir des commandes de base de LTEX, est quon est beaucoup
plus libre de modier la mise en forme de lenvironnement comme on le souhaite.
\newcounter{nom}[parent]
\numberwithin{nom}{parent}
En fait, en dclarant un nouveau compteur, on peut aussi lui attribuer un parent , ce qui a
leet suivant : chaque fois que le parent est incrment (cest--dire quand sa valeur augmente),
notre compteur est remis zro. Par exemple, si dans lexemple ., on avait ajout [section] la
n de la premire ligne, la numrotation des exercices reprendrait au dbut de chaque section.
Bien sr, pour rester cohrent, il faudrait rednir \theex pour y faire apparatre le numro de
section.
Le module amsmath fournit une commande bien utile, \numberwithin, qui permet dattribuer
un parent un compteur existant, et de modier en mme temps sa reprsentation pour y ajouter
celle du parent. Par exemple,
c-prog.tex r --
lments de programmation
r --
\newcounter{ex}
\newenvironment{ex}{\refstepcounter{ex}%
\par\noindent\textbf{Exercice \theex.}\quad
\itshape}{\par}
Du texte de remplissage pour commencer.
\begin{ex} \label{facile}
Lire lnonc de cet exercice en entier.
\end{ex}
\begin{ex} \label{dur}
Dmontrer le thorme de \bsc{Fermat}.
\end{ex}
Lexercice~\ref{facile} tait facile, mais
le~\ref{dur} est trop difficile.
En millimtres
En points
, mm , pt
, mm
pt
, mm
, pt
, mm
, pt
, mm
, pt
, mm
pt
, mm
, pt
mm
, pt
mm
, pt
hauteur dx de la fonte
largeur dM de la fonte
T . Units de longueur
\numberwithin{equation}{subsection}
. Longueurs
Nous avons dj eu fournir des longueurs comme arguments de certaines commandes, et
vu quelles taient constitues dun nombre dcimal et dune unit ; nous connaissons dailleurs
quelques-une des units disponibles. Pour tre complet, la table . liste toutes les units reconA
nues par LTEX, avec leur valeur en millimtres et en points.
Rappelons que les units spciales ex et em dpendent de la police actuellement utilise (en
particulier de sa taille), et reprsentent peu prs la hauteur dun x et la largeur dun M
dans cette police. Elles sont utiles pour exprimer des longueurs qui doivent sadapter la taille du
texte environnant.
c-prog.tex r --
r --
. Longueurs
De mme quon peut dnir et manipuler des compteurs (variables de type nombre entier ),
on peut dnir et manipuler des longueurs (variables de type longueur ). Les noms utiliss par
les longueurs sont les mme que ceux des commandes, et commencent par une contre-oblique
contrairement aux compteurs.
A
Plusieurs variables de longueur sont prdnies par LTEX : vous connaissez dj \linewidth
qui reprsente la largeur dune ligne de texte lendroit o on se trouve. Cest une longueur dont
on va en gnral utiliser la valeur sans la modier . En revanche, certaines longueurs sont prvues
A
pour pouvoir tre rgles, et LTEX fournit des commandes pour cela, analogues celles prvues
pour les compteurs.
\setlength{nom}{longueur}
\addtolength{nom}{longueur}
\fboxsep \fboxrule
On rgle une longueur au moyen de la commande \setlength, et on peut lui ajouter une autre
longueur au moyen de \addtolength. Dans les deux cas, le deuxime argument longueur peut
tre :
une longueur constante : nombre et unit ;
le nom dune autre longueur, par exemple \linewidth ;
le nom dune autre longueur, prcd dun facteur multiplicatif (sans signe de multiplication),
par exemple 0.5\linewidth pour la moiti de la largeur dune ligne.
Comme pour les compteurs, avec le module calc, on a de plus droit des expressions utilisant
les oprations et des parenthses. Ce nest pas trs utile pour les compteurs, cest par contre extrmement pratique pour les longueurs, comme on le voit lexemple ..
Nous avons dj vu que la commande \fbox permet dencadrer des lments. Son comportement est paramtr par les deux longueurs \fboxsep qui reprsentent lespacement entre le
contenu et le cadre, et \fboxrule, lpaisseur du trait. On peut donc facilement modier lapparence du cadre en rglant ces longueurs, comme le montre lexemple ..
Par dfaut : \fbox{blabla}
\begin{flushright}
\setlength\fboxsep{2\fboxsep}
Deux fois moins serr : \fbox{blabla}\\
\setlength\fboxsep{0pt}
Totalement coll : \fbox{blabla}\\
\setlength\fboxrule{2pt}
Avec un trait pais : \fbox{blabla}\\
\end{flushright}
E . Paramtrage de \fbox
Par ailleurs, cet exemple illustre le fait que les rglages de longueurs sont soumis aux rgles de
A
LTEX sur la porte : toutes les modications faites lintrieur dun groupe (un environnement
. Modier \linewidth naurait pas dautre eet que crer des problmes : en fait, cest les dimensions des marges
A
quil faut modier pour changer la longueur de la ligne. \linewidth est maintenue jour par LTEX pour notre confort.
c-prog.tex r --
lments de programmation
r --
par exemple) sont oublies la n de groupe. En fait, les compteurs sont les seuls objets dont les
modications survivent la n dun groupe, ce qui est indispensable : imaginez que le compteur
equation soit remis zro la n de chaque environnement mathmatique. . . Pensez proter
de ce phnomne de porte pour les longueurs : si vous modiez une longueur dans la dnition
de dbut dun environnement, vous navez rien faire la n (comme pour les changements de
police).
\settowidth\nom{matriel}
\settoheight\nom{matriel}
\settodepth\nom{matriel}
Il existe trois faons supplmentaires de rgler une longueur, qui permettent en fait de mesurer
les dimensions dun lment. Le sens de ces trois dimensions est expliqu en section ... Ces
commandes sont utiles pour adapter une longueur la taille de certains lments de faon automatiques. Par exemple, on peut lutiliser pour fabriquer un texte trous dont les trous mesurent
exactement deux fois la taille des mots quils remplacent, comme dans lexemple ..
\newlength\lgtrou
\newcommand*\trou[1]{%
\settowidth\lgtrou{#1}%
On laisse un trou
\hspace*{2\lgtrou}}
parce quune
\setlength\baselineskip{1.5\baselineskip}
On laisse un trou \trou{plus} grand que
le mot parce quune \trou{criture}
prend plus de
. On augmente
linterligne.
c-prog.tex r --
r --
. Botes
. Botes
.. Concepts
A
Pour LTEX, tout est botes : il ne connat pas les formes des caractres, quil considre comme
A
des botes rectangulaires. Sur la gure ., LTEX ne voit que la premire ligne, nous ne voyons que
la dernire. De faon gnrale, une bote est un rectangle, qui peut contenir du matriel plus ou
moins compliqu, comme du vide, du noir, un caractre, ou dautres botes.
Paragraphes, feuille.
Paragraphes, feuille.
A
F . Comment LTEX voit les caractres
En fait, une bote est un tout petit peu plus quun rectangle, car elle possde en fait trois dimensions : une largeur, une profondeur et une hauteur, comme le montre la gure .. Sur une mme
ligne, les botes (par exemple des caractres) ont leurs points de base aligns horizontalement,
et non par la bas, de faon placer correctement les caractres qui dbordent par le bas. Cest
qui explique le besoin de trois dimensions pour mesurer une bote. Parfois, on appellera hauteur
totale la somme de la hauteur et de la profondeur.
l
.argeur
h
. auteur
p
. oint de base .
.
p
. rofondeur
\makebox[largeur][lcrs]{contenu}
c-prog.tex r --
lments de programmation
r --
La commande la plus simple pour produire une bote horizontale est \mbox. Elle na aucun eet
visible (pas de cadre autour de la bote, par exemple), mais rend par contre impossible de couper
en deux le contenu. Elle est donc seulement utile pour empcher un mot (un nom propre ou un
sigle) dtre coup.
Une commande un peu plus sophistique est \makebox qui permet de construire une bote de
largeur donne. On peut alors prciser comment le contenu doit tre rparti dans cette largeur :
l pour laligner gauche, r align droite, c centr, et s (stretch) tir. Loption s posera des
problmes si la dirence entre la dimension naturelle du contenu et la largeur demande est trop
grande, et que le contenu ne possde pas assez dlments susceptibles dtre tirs ou comprims.
A
La gure . montre un f qui dborde de sa bote. Plus gnralement, en LTEX, rien nimpose
au contenu dune bote dtre physiquement contenu dans le rectangle associ, mme si cest gnralement le cas. Un cas extrme est celui des botes de largeur nulle, qui permettent de placer du
matriel un endroit mais en faisant ensuite comme sil ntait pas l : on peut ainsi obtenir des
eets particuliers, comme ceux de lexemple ..
Du texte pour voir la marge.\\
\makebox[0pt][r]{Bouh }a fait
\texttt{\makebox[0pt][l]{xxxx}peur}
plaisir.\\ On samuse avec les botes.
\raisebox{dcalage}[hauteur][profondeur]{contenu}
Pour obtenir une bote encadre, on peut utiliser \fbox qui est analogue \mbox, ou bien
\framebox qui correspond \makebox dont il partage la syntaxe. Ceci permet dobtenir des cadres
\includegraphics[height=2cm]{lion}}
centre sur la ligne.
c-prog.tex r --
r --
. Botes
.. Botes verticales
\begin{minipage}[tcb][hauteur][tcbs]{largeur}
contenu
\end{minipage}
Ds quon veut pouvoir aller la ligne dans une bote, il faut que ce soit une bote verticale. La
faon la plus simple de les construire est dutiliser lenvironnement minipage. Largument obligaA
toire est la largeur de la bote : en eet, LTEX va couper automatiquement les lignes, il faut donc
savoir quelle largeur couper. Notons quon peut parfaitement mettre une bote verticale dans
une bote horizontale, comme le montre lexemple . (observez au passage le calcul de la largeur
de la minipage, pour laisser la place au cadre, en utilisant calc).
\usepackage{calc}
Un peu de texte dabord pour bien
voir la largeur disponible.\par\noindent
\fbox{\begin{minipage}{%
\linewidth-2\fboxsep-2\fboxrule}
Plusieurs lignes de texte encadres,
le cadre prenant toute la largeur
dune ligne.\end{minipage}}
Encore un peu de texte pour mieux
Les rglures sont les botes les plus simples : ce sont des rectangles noirs pleins. On les construit
avec la commande \rule en spciant leur hauteur et leur largeur. On peut, de plus, dcaler le
rectangle ainsi produit vers le haut ou vers le bas (dcalage ngatif) grce largument optionnel,
sans avoir besoin dutiliser \raisebox.
Un centimtre : \rule[.5ex]{1cm}{.4pt}\\
Du \hrulefill{} remplissage.
Un centimtre :
Du
remplissage.
E . Rglures
c-prog.tex r --
lments de programmation
r --
Placer des gros rectangles noirs sur la page nest pas trs intressant. Aussi, la plupart du temps,
on utilisera que des rglures dont une dimension est trs petite, et lautre plus grande : on obtient ainsi un trait . Dans lexemple ., on utilise une hauteur de 0.4pt, la valeur par dfaut
de \fboxrule, qui convient en gnral bien comme paisseur de trait. De telles lignes sont par
exemple utiles pour structurer une page de titre ou mettre en valeur des lments particuliers.
Pour obtenir un trait horizontal occupant toute la place restant disponible sur la ligne, on dispose de la commande \hrulefill qui construit une rglure tirable, de faon similaire aux espaces tirables obtenus avec \stretch.
Une autre utilisation courante des rglures consiste placer des rglures de largeur nulle (ou
dpaisseur nulle), donc invisibles, ces endroits bien choisis, pour rserver de la place. Nous en
parlerons dans la prochaine section.
.. Apart : espacement dans les tableaux
Dans le chapitre sur les tableaux, nous avions laiss de ct le rglage de dirents paramtres,
et le contrle de lespacement. Nous avons maintenant tous les outils pour y revenir.
\tabcolsep
\arraycolsep
\doublerulesep
\arrayrulewidth
Les quatre longueurs ci-dessous, rglables avec \setlength, contrlent divers aspects de lapparence des tableaux. La premire, \tabcolsep, reprsente la moiti de lespace sparant deux
colonnes. Autrement dit, cest lespace sparant le contenu dune case et le bord de la case : il est
tout fait semblable \fboxsep. Le longueur \arraycolsep joue le mme rle, mais pour les
tableaux mathmatiques construits avec lenvironnement array.
Quand deux lets (verticaux ou horizontaux) se succdent dans un tableau, leur espacement
est donne par \doublerulesep. Enn, lpaisseur des lets (simple ou doubles) eux-mme est
contrle par \arrayrulewidth. Attention, les noms ne sont pas cohrents : \arrayrulewidth
est utilis par tabular et par array, alors que pour la sparation des colonnes, on distingue
\tabcolsep de \arraycolsep.
\extrarowheight
\arraystretch
A
Il arrive que dans un tableau, les lignes soient trop proches les unes de autres. En eet, LTEX
possde des rgles assez sophistiques pour garantir un bon espacement entre les lignes dun paragraphe, mais elles ne sappliquent pas aux tableaux. Deux paramtres sont fournis pour augmenter globalement lespace entre toutes les lignes dun tableau.
Le premier, \extrarowheight, est une longueur (et se rgle donc avec \setlength). Si elle
est positive, un espace de cette dimension est ajout en haut de chaque ligne. Sil ny a pas de let
entre les lignes, on peut donc considrer quelle sont cartes de \extrarowheight. Sil y a un let,
lespace est ajout entre le haut du contenu de la ligne et le let suprieur : ceci rgle par exemple
. En fait, \extrarowheight nexiste pas en standard : il est fourni par le module array. Mais celui-ci est tellement
utile que je suppose que vous le chargez toujours quand votre document comporte des tableaux. . .
c-prog.tex r --
r --
. Botes
le problme des majuscules qui touchent le let suprieur, mais pas les problmes despacement
avec le let infrieur.
Le deuxime paramtre, \arraystretch nest pas une longueur, ni un compteur, mais une
commande, qui sert stocker un nombre dcimal (par dfaut ). Pour le rgler, on fait par exemple
\renewcommand\arraystretch{1.5}
Il contrle lespace vertical minimum rserv pour une ligne. Dhabitude, chaque ligne dun tableau dispose dau moins 0.7\baselineskip en hauteur et 0.3\baselineskip en profondeur
(rappelons que \baselineskip est le dplacement entre deux lignes de texte au sein dun paragraphe). \arraystretch est un facteur multiplicatif qui sapplique cet espace minimum rserv :
par exemple, sil vaut , la hauteur minimum passera 1.4\baselineskip et la profondeur minimum 0.6\baselineskip.
Les deux paramtres prcdents sont rgler avant le tableau, et sappliquent toutes les lignes.
(En fait, ils sappliqueront mme aux tableaux suivants, sauf si les modications sont faites au sein
dun environnement qui restreindra leur porte.) Pour rgler un problme despacement sur une
ligne prcise, le plus simple est souvent dinsrer une rglure invisible. En jouant sur la hauteur
totale et le dcalage, on rserve de la place en haut et en bas de la ligne. Par exemple, insrer
\rule[-20pt]{Opt}{50pt} dans nimporte quelle cellule dune ligne rserve une place de 20pt
en bas et 30pt en haut.
.. Remplissage de botes
Terminons ce tour dhorizon des botes par des explications sur quelques problmes que vous
avez peut-tre dj rencontrs : le mauvais remplissage de certaines boites, signal par des messages comme
Underfull \hbox (badness 10000) in paragraph at lines 35--35
[]\EU1/MinionPro(0)/m/n/10.95 Ceci est un