You are on page 1of 111

U P M C

Module de la licence math-info

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 --

Table des matires


Prambule

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 . . . . . . . . . . . .

Caractres et symboles particuliers


.. Caractres rservs . . . . .
.. Accents et symboles . . . .
.. Franchouillardises . . . . .
.. Interlude : documentation .
Changements de fonte . . . . . . . .
.. Modle thorique . . . . . .
.. Tout sauf la taille . . . . . .
.. La taille . . . . . . . . . . .
.. Le reste . . . . . . . . . . . .
Listes . . . . . . . . . . . . . . . . . .
Alignement du texte . . . . . . . . .
Espaces . . . . . . . . . . . . . . . .

Structure du document

.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

Classes de documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.. Notes marginales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

f-tables.tex r --

Table des matires

.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

Dcouvertes des modes mathmatiques . .


.. Les deux modes mathmatiques .
.. Outils de base . . . . . . . . . . . .
Points plus dlicats . . . . . . . . . . . . . .
.. Distinguer texte et mathmatiques
.. Styles mathmatiques . . . . . . .
.. Limites et grands oprateurs . . .
.. Espaces en mode mathmatique .
.. Dlimiteurs . . . . . . . . . . . . .
Constructions mathmatiques . . . . . . .
.. Petites constructions . . . . . . . .
.. Alignements . . . . . . . . . . . . .
Environnements numrots . . . . . . . . .
.. Formules numrotes . . . . . . .
.. Environnements de type thorme
Documentation . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

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

.
.
.
.
.
.
.
.
.
.

Rvisions et cration de commandes

.
.
.
.
.
.
.
.
.
.

Les modes mathmatiques

.. Notes de bas de page .


Titre et rsum . . . . . . . . .
.. Titre . . . . . . . . . .
.. Rsum . . . . . . . .
Structure globale . . . . . . . .
Rfrences et liens hypertexte
.. Rfrences croises . .
.. Bibliographie . . . . .
.. Liens hypertexte . . .
Structure de la page . . . . . .

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 . . . . . .

Rappels sur les dnitions . . . . . . . . . . . .


Compteurs . . . . . . . . . . . . . . . . . . . .
Longueurs . . . . . . . . . . . . . . . . . . . . .
Botes . . . . . . . . . . . . . . . . . . . . . . .
.. Concepts . . . . . . . . . . . . . . . . .
.. Botes horizontales . . . . . . . . . . .
.. Botes verticales . . . . . . . . . . . . .
.. Rglures . . . . . . . . . . . . . . . . .
.. Apart : espacement dans les tableaux
.. Remplissage de botes . . . . . . . . .

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 . . .

Table des matires

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

vii

Table des matires

r --

Personnalisation

.
.
.
.
.

Polices . . . . . . . . . . . . . .
En-ttes et pieds de page . . .
Titres de chapitres et sections .
Listes . . . . . . . . . . . . . . .
Flottants . . . . . . . . . . . . .

Prsentations vidoprojetes

viii

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

f-tables.tex r --

Listes des exemples, tables, sources et gures


Liste des exemples
.
.

Extrait de source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemple dexemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.

Quelques accents, cdilles et ligatures .


Famille, graisse et forme de fonte . . .
Changements de taille et interligne . .
Changements de couleurs . . . . . . . .
Quelques possibilits du module soul .
Les trois types de listes . . . . . . . . . .
Environnements dalignement du texte

.
.
.

Note de bas de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Bibliographie et citations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liens avec hyperref . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

Les deux modes mathmatiques . . . . . .


Indices, exposants, fractions et racines . .
Sommes et intgrales . . . . . . . . . . . .
Dclaration et usage dun nouvel oprateur
Styles mathmatiques . . . . . . . . . . . .
Oprateur et placement des bornes . . . .
Taille automatique des dlimiteurs . . . . .
Alignements mathmatiques moyens . . .
Environnements de type thorme . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.

Dnitions simples . . . . . . . . . . .
Utilisation de \xspace . . . . . . . .
Commandes avec arguments . . . . .
Commande avec argument optionnel
Dnitions denvironnements . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

Inclusion de graphiques avec rotation .


Recadrage et dcoupage dimage . . . .
Habillage dans le coin en haut droite
Image en fentre dans le texte . . . . .
Rotation et dilatation de texte . . . . .
Cadres plus sophistiqus . . . . . . . .
Botes colores . . . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

f-tables.tex r --

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

ix

Listes des exemples, tables, sources et gures

r --

Utilisation dune police de symboles . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

Types de colonnes simples . . . . . . . . . .


Tableaux avec des lets . . . . . . . . . . . .
Matriel inter-colonnes . . . . . . . . . . . .
Colonnes de type paragraphe et alignement
Mauvais espaces horizontaux avec array . .
Matriel automatique pr- et post-colonne .
Gestion des retours la ligne . . . . . . . . .
Fusion horizontale de cellules . . . . . . . .
Fusion verticale de cellules . . . . . . . . . .
Tableaux de largeur xe . . . . . . . . . . . .
Trop de couleurs dans un tableau . . . . . .
Une utilisation raisonnable de la couleur . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

Commande et environnement de base pour le verbatim


Usage simple de fancyvrb . . . . . . . . . . . . . . . . .
Verbatim : quand limitation vaut mieux que loriginal .
Reconnaissance de mots-cl du langage C . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.
.

Modication de la reprsentation dun compteur


Utilisation dun compteur personnel . . . . . . . .
Paramtrage de \fbox . . . . . . . . . . . . . . . .
Mesure de mots pour un texte trous . . . . . . .
Utilisation de botes de largeur nulle . . . . . . . .
Utilisation de \framebox et \raisebox . . . . . .
Une bote verticale dans une bote horizontale . .
Rglures . . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

. En-ttes et pieds de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


. Listes personnalises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Liste des tables


.
.
.
.
.
.
.
.

Fontes disponibles en mode mathmatiques . . . . . . . . . . . . . . . . . . . . . .


Commandes despace en mode mathmatique . . . . . . . . . . . . . . . . . . . . .
Petites constructions mathmatiques . . . . . . . . . . . . . . . . . . . . . . . . . .

Modes de compilation et formats graphiques . . . . . . . . . . . . . . . . . . . . . .

Commandes pour les caractres rservs . . .


Commandes fournies par french de babel .
Famille, graisse et forme de fonte. . . . . . . .
Tailles de fontes relatives . . . . . . . . . . . .
Environnements et commandes dalignement.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Espacement autour des signes de ponctuation . . . . . . . . . . . . . . . . . . . . .

f-tables.tex r --

r --

.
.

Listes des exemples, tables, sources et gures

A
Compteurs de base de LTEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Units de longueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. Exemples de polices avec leurs noms . . . . . . . . . . . . . . . . . . . . . . . . . .


. Polices fantaisistes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Liste des code sources


.
.
.

Source minimum compilable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Tout petit document en franais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Source dvelopp de lexemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Structure dun document en classe article . . . . . . . . . . . . . . . . . . . . . .

Fichier source de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. Cration et gestion des types de ottants dans ce poly . . . . . . . . . . . . . . . . .

Liste des gures


.

Centres de rotation possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

.
.

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$.

Des maths ici : = = + .

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 :

. une distribution TEX ;


. un diteur de texte.
Lditeur de texte peut tre extrmement basique (le notepad de Windows sut en thorie) mais il
A
est prfrable den utiliser un spcialement adapt LTEX, qui proposera par exemple une mise en
vidence des commandes, la possibilit de lancer la compilation et la visualisation du document
sans quitter lditeur, un ltrage des messages derreur, etc. On appelle parfois IDE un tel diteur.
Si lditeur est un programme relativement simple, la distribution est au contraire un ensemble
important de programmes, occupant beaucoup despace disque. Pour cette raison, elles existent
parfois en plusieurs versions de minimale complte. Une version prsente comme minimale
nest en aucun cas susante pour tout ce qui sera vu dans ce cours. Il est recommand de toujours
installer la version complte.
Il existe essentiellement deux ou trois distributions TEX, et un grand nombre dditeurs. Voyons
maintenant quelques choix possibles et comment les installer suivant les plateformes.
.. Windows

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}

S . Source minimum compilable


On voit ici que les mots prcds de \ sont des commandes qui napparaissent pas dans le docuA
ment mais sont interprtes par LTEX. Les mots entours daccolades qui suivent une commande
. http://tug.org/mactex/mactextras.html

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}

S . Tout petit document en franais


A
Prsentons maintenant un exemple un peu plus raliste de trs court document LTEX crit en
A
franais. Le source . illustre quelques lments de la syntaxe de LTEX. Vous navez pas besoin
de tout comprendre pour le moment, mais voici quelques points retenir.

. 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

Le groupe dutilisateurs de TEX.

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}

S . Source dvelopp de lexemple .


la classe de document) gre automatiquement pour vous les dtails comme la numrotation des
pages. Essayez de changer la classe minimal en article dans le ., vous verrez apparatre alors
le numro de page.

. 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.

. Les espaces suivant une commande-mot sont ignors.


. Les espaces au dbut dune ligne sont ignors.
. Plusieurs espaces successifs sont quivalents un seul espace.
. Un retour la ligne est quivalent un espace.
A
La premire rgle demande un peu dattention. Par exemple pour crire que LTEX cest bien ,
il faut saisir par exemple \LaTeX{} cest bien, car la version nave \LaTeX cest bien donne
A
le mauvais rsultat LTEXcest bien . Ici, les accolades vides ne produisent rien, mais assurent que
lespace qui les suit nest plus mang par la commande-mot qui prcde : je parlerai souvent
de protger lespace pour dsigner ce procd. Les trois autres rgles sont en fait tellement
commodes quon les oublie vite.

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

\%

T . Commandes pour les caractres rservs

c-texte.tex r --

Le mode texte

r --

. Ils nexistent pas dans lencodage dentre utilis.


. Vous ne savez pas les saisir sur votre clavier.
Dans le premier cas, on trouve par exemple le symbole de leuro qui nexiste pas en latin1 . Dans
le deuxime cas. . . a dpend de vous et de votre clavier.
Dans les deux cas, la stratgie reste la mme : utiliser des commandes pour obtenir ces symboles.
Il y a tout dabord des commandes daccent, gnralistes, pour obtenir tous les caractres accentus. Ces commandes, ainsi que celles servant obtenir les ligatures orthographiques usuelles,
ont des noms assez faciles retenir (voire deviner). Lexemple . prsente les plus importantes
dentre elles.
\A, \A, \^A, \A, \dots\par
\E, \I, \i, \n, \dots\par
\c Ca me fend le c\oe ur !
Tch\u\ss!

, , , , . . .
, , , , . . .
a me fend le cur ! Tch!

E . Quelques accents, cdilles et ligatures


Quelques commentaires sur cet exemple : observez lutilisation de \par la n des deux premire lignes pour changer de paragraphe (et donc revenir la ligne) dans le document. Remarquez
aussi la commande \dots, qui produit un rsultat plus lgant que trois points la suite : . . .
est plus lisible que ... .
Enn, des dtails syntaxiques : dans \A, on a une commande \ et son argument A. Comme
largument est rduit une lettre, on nest pas oblig de lentourer daccolades, mais si on le dsire
on peut crire \{A}. Cest dailleurs sans doute plus clair pour \c{C}a. Ici, il faut faire attention
A
ne pas crire \cCa sans espace, car LTEX y verrait une commande nomme cCa. Cest dans
des exemples comme c\oe ur que la rgle disant que les espaces sont avals est, pour une fois,
pratique.
Dautres symboles ne drivent pas dune lettre. Ils sont alors obtenus par des commandes spciques. Par exemple, pour le symbole euro, le module textcomp fournit la commande \texteuro.
On peut obtenir un symbole euro dapparence dirente (celui fournit avec les polices par dfaut
A
de LTEX nest pas trs joli) avec la commande \EUR du module marvosym .
Dautres symboles sont disponibles, bien plus quil nest possible de prsenter ici. Le document
A
de rfrence pour tous les symboles disponibles sous LTEX est symbols-a4.pdf . Il est important en consultant ce document de faire attention aux modules charger pour disposer des commandes indiques. Nous verrons tout bientt (section ..) comment accder aux documents de
rfrence.
Enn, certains caractres particuliers sobtiennent sans mme faire appel une commande :
EX peut automatiquement mlanger deux ou plusieurs caractres pour en obtenir un autre.

A
LT

. Cest celui quon passe en paramtre inputenc.


. ceux qui seraient tents dutiliser la place loption utf8 pour viter ce problme (ce qui est au demeurant
une bonne ide), je rappelle quil ne sut pas de changer loption dinputenc, mais quil faut aussi changer le rglage
de son diteur de texte, et que ceci nest malheureusement pas possible sous TeXnicCenter.
. Il faut donc crire \usepackage{marvosym} dans le prambule pour avoir le droit dutiliser cette commande.
. http://ctan.org/pkg/marvosym
. http://mirror.ctan.org/info/symbols/comprehensive/symbols-a4.pdf
. Un tel mlange sappelle une ligature.

c-texte.tex r --

r --

. Caractres et symboles particuliers

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

T . Commandes fournies par french de babel


Par exemple, on obtient un tiret moyen avec deux tirets la suite -- et un long avec
trois (mais a ne va pas plus loin).
Une autre ligature utile est celle qui permet dobtenir des guillemets anglais : on saisit pour
cela anglais. Par contre, en Franais, on utilisera plutt des guillemets franais : ce qui
fournit une bonne transition vers la prochaine section.
.. Franchouillardises

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 --

commande lune des commandes suivantes :

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).

.. Tout sauf la taille

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

T . Famille, graisse et forme de fonte.


Les valeurs par dfaut de ces paramtres sont en gnral : famille romaine, forme droite et graisse
moyenne. On peut tout moment revenir ces valeurs par dfaut avec la commande \normalfont
qui naecte pas la taille.
Comme vous le constatez, chacune des commandes de changement de fonte prsente existe
sous deux formes : une commenant par \text, qui prend un argument et nagit que sur son
argument, et une forme dite dclarative, qui agit sur toute la suite du texte jusqu ordre contraire.
Pour tre plus prcis, la forme dclarative agit jusqu la n du groupe courant. Le moyen le plus
simple de dnir un groupe est dutiliser une paire daccolades, condition quelles en servent pas
dj autre chose, comme dlimiter largument dune commande. Il faut alors bien prendre de
garde de placer laccolade ouvrante avant la commande dclarative dont on veut limiter laction.
Les environnements dnissent naturellement des groupes. On pourra donc aussi les utiliser
comme dlimiteurs de la porte dune commande dclarative. On verra de tels exemples dans
le corrig de lexercice . Lexemple . montre la technique utilisant des accolades, et illustre
comment les paramtres peuvent se combiner. Comme on le constate, les certaines combinaisons
ne marchent pas , par exemple il ny a pas de petites capitales en style machine crire. Dans
A
ce cas, LTEX ignore une des commandes.
Un mot gras et italique aussi. Retour
la normale. Machine crire.
\textbf{ crire}.} \textsc{Petites capitales P ,
\textbf{grasses}, \texttt{chasse fixe} ?}
chasse fixe
Un {\bfseries mot gras \textit{et italique}

aussi}. Retour la normale. \texttt{Machine

E . Famille, graisse et forme de fonte


Dans lexemple ., il aurait t plus naturel dutiliser \textbf la place de \bfseries. Par
contre, il faut savoir que les commandes argument ne peuvent pas servir pour des changements
de fonte durant plus dun paragraphe. Cest une scurit cense vous aider dtecter les accolades
fermantes oublies : en cas doubli, vous obtenez le message derreur suivant.

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

T . Tailles de fontes relatives


! Paragraph ended before \text@command was complete.
<to be read again>
\par
l.18

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}

Un petit paragraphe de texte crit en tout petit avec


un interligne incorrect.
Un petit paragraphe de texte crit en tout petit avec
un interligne correct.

E . Changements de taille et interligne

.. Le reste

Le dernier paramtre dterminant lapparence dun texte, en plus de la famille, la graisse, la


A
forme et la taille de police, est sa couleur, au moins pour les documents lectroniques. LTEX ne
permet pas tout seul de grer la couleur, mais le module xcolor fournit les commandes ncessaires.

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

E . Quelques possibilits du module soul

. 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}

Les trois types de listes sont :


les listes tirets ;
les listes numrotes ;
les listes descriptives.
Les trois types de listes sont :

Les trois types de listes sont :

. les listes tirets ;

\begin{enumerate}

. les listes numrotes ;

\item les listes tirets ;


\item les listes numrotes ;

. les listes descriptives.

\end{enumerate}

Les trois environnement utiles


sont :

Les trois environnement utiles sont :

itemize pour les listes tirets ;

\begin{description}

enumerate pour les listes

\item les listes descriptives.

\item[itemize] pour les listes tirets ;


\item[enumerate] pour les listes numrotes ;
\item[description] pour les descriptives.

numrotes ;
description pour les

\end{description}

descriptives.

E . Les trois types de listes


Il est essentiel de penser utiliser ces environnements plutt que de mettre en forme le texte
la main , grand renfort de sauts de ligne forcs et autres. Cest particulirement vrai pour les
A
listes numrotes : LTEX soccupe pour vous de maintenir les numros dans lordre si vous ajoutez
ou retirez des lments de la liste.

. 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.

Du texte dexemple justifi droite et gauche.


\begin{center}
Un peu de texte dexemple centr sur la ligne.

Un peu de texte dexemple


centr sur la ligne.

\end{center}
\begin{flushleft}
Cette fois du texte dillustration en drapeau.

Cette fois du texte


dillustration en drapeau.

\end{flushleft}
\begin{flushright}
Et enfin une partie de texte au fer droite.
\end{flushright}

Et enn une partie de texte


au fer droite.
E . Environnements dalignement du texte

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

T . Environnements et commandes dalignement.


Si lon choisit dutiliser une commande et non un environnement, il faut prendre garde plusieurs points : par exemple, terminer le paragraphe avant que leet de la commande ait cess
(comme dans le deuxime cas de lexemple . prcdent) car sinon elle naura tout simplement
aucun eet. On peut aussi devoir ajouter un peu despace vertical avant et aprs. Pour ces raisons,
il est recommand de ne pas utiliser la forme commande et de prfrer les environnements, sauf
pour changer lalignement lintrieur dun autre environnement, ou bien dans la dnition dun
environnement.
Enn, signalons un point subtil : les environnements comme center se comportent diremment selon quils sont au milieu dun paragraphe ou pas (cest--dire selon quil sont ou non entours de lignes vides) : ceci aecte lespace vertical prcdent et suivant le texte centr, et lalignement
du texte qui suit (prsence ou absence du retrait dalina). Ceci est bien sr valable pour les deux
autres environnements ; des exemples seront vus en exercices.

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

o le numro la n de la premire ligne du message indique la n du \marginpar incrimin


dans le source, et le texte la n de la deuxime ligne (ici Ceci est un ) est le texte prsent
sur la ligne mal remplie. (Voir aussi la section ...)
A
Ce problme admet une solution simple : il sut de demander LTEX daligner gauche le
texte de la note, comme il a t fait dans le premier exemple de cette section. Pour cela, le plus
simple est dinsrer la commande \raggedright au dbut du texte de la note ; il sagit dun cas o
la commande est plus pratique que lenvironnement. Leet de la commande est automatiquement
limit la note et ne se propagera pas au reste du texte.
Par dfaut, les notes marginales se trouvent dans la marge de droite. On peut inverser le ct des
notes avec la commande \reversemarginpar ; cette commande agit comme un commutateur :
elle inverse le cot de toutes les notes qui suivent, jusquau prochain \reversemarginpar ou la
n du document sil ny en a plus dautre.
twoside
\marginpar[texte si gauche]{texte si droite}

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.}

pour sassurer que le texte de la note soit toujours correctement align.


. Le texte du dbut dit que le remplissage de la ligne est mauvais et mme extrmement mauvais : 10000 est la
A
plus grande valeur de mauvaiset pour LTEX.
. Le texte du dbut indique de faon un peu cryptique la fonte en cours.
. Ralis avec la classe scrbook qui est une variante plus moderne de book.

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

Un paragraphe avec une note a de bas de page.

note\footnote{Oui, vraiment.}
a. Oui, vraiment.

de bas de page.

E . Note de bas de page


Il ny a essentiellement aucun pige avec \footnote, sauf que cest une commande qui ne peut
pas tre utilise dans toutes les circonstances : elle ne peut par exemple pas tre utilise dans les
titres de section. Nous verrons tout lheure (en .) comment grer cette limitation.

. 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.

. Cest--dire le petit numro, par exemple le aprs le mot note ici.


. Dans lexemple, la note est numrote a pour ne par interfrer avec la numrotation des notes du texte
principal. Ceci se fait automatiquemenr avec la technique utilise pour les exemples (environnement minipage, qui
sera vu en ..).
. Si lon ne prcise pas de date, cest celle du jour de compilation qui sera utilise.

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}

S . Structure dun document en classe article


\section[titre table des matires]{titre document}

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.

. Rfrences et liens hypertexte


.. Rfrences croises
A
Les dirents niveaux de sectionnement sont numrots automatiquement par LTEX. Une des
fonctions principales de ces numros est de pouvoir faire rfrence une partie du document
(par exemple en disant que vous avez compil votre premier document la section .). Vu que
les numros changent automatiquement chaque fois que vous insrez ou supprimez des sections,
ou changez leur ordre, il faut un moyen de mettre jour les rfrences automatiquement.

\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 --

. Rfrences et liens hypertexte

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.

qui disparaissent automatiquement aux compilations suivantes, et r-apparaissent chaque fois


que vous changez quelque chose aux rfrences croises. Si lavertissement de la deuxime ligne
ci-dessus persiste aprs deux compilations, il est probable que vous ayez eectivement oubli de
dnir un \label, ou fait une faute de frappe dans ltiquette. Dans le corps du document, une
rfrence une tiquette non dnie fait apparatre un double point dinterrogation qui signale
lerreur.
\tableofcontents

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}

Pour composer la liste des rfrences bibliographiques, on utilise {thebibliography} : cest un


environnement trs similaire {itemize}, sauf quon remplace \item par \bibitem pour introduire chaque entre. Il prend un argument obligatoire, qui est une texte libre dont la largeur
doit tre environ celle de la plus large cl de citation. Par exemple, quand des numros sont utiliss comme dans lexemple ., si on a entre et rfrences, on pourra indiquer 00 comme
exemple, pour donner le largeur de deux chires.
La commande \bibitem prend en argument obligatoire une tiquette prive, napparaissant
pas dans le document, mais seulement utilise comme argument obligatoire de \cite pour citer
le document en question. Le couple \bibitem et \cite est donc analogue au couple \label et
\ref de ce point de vue, et le rle de ltiquette identique. La commande \cite accepte de plus un
argument optionnel permettant de prciser un emplacement prcis dans la rfrence cite. Tout
ceci est illustr par lexemple ., dont les deux premire lignes peuvent se situer nimporte o
dans le document, et les autre sont par exemple la n.

c-struct.tex r --

Structure du document

r --

Pour en savoir plus, lire


\cite{ttb} ou \cite[chap.~12]{lcfr}.
% plus loin dans le document
\begin{thebibliography}{LC}
\bibitem{ttb} \emph{Tame the BeaST},

Pour en savoir plus, lire [] ou [, chap. ].

Bibliographie

\bsc{N. Markey}, CTAN.


\bibitem{lcfr} \emph{\LaTeX{}
Companion}, \bsc{Mittlebach}
\& \bsc{Goossens}, Pearson.

[] Tame the BeaST, N. M, CTAN.


A
[] LTEX Companion, M &
G, Pearson.

\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.

E . Liens avec hyperref


. La commande utilise pour cela a un nom familier pour ceux dentre vous qui connaissent un peu dHTML.

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

\marginparpush = 6pt (non affich)

\hoffset = 0pt

\voffset = 0pt

\paperwidth = 597pt

\paperheight = 845pt

Les modes mathmatiques


. Dcouvertes des modes mathmatiques
.. Les deux modes mathmatiques
A
Pour crire des maths en LTEX, il faut entrer dans un mode spcial appel mode mathmatique. Celui-ci existe en deux variantes : en ligne et hors texte, selon que les lments mathmatiques doivent tre intgrs au paragraphe en cours ou bien apparatre sur une ligne part. Sur

lexemple ., le premier est en mode en ligne, et sa dnition en mode hors-texte.

Le nombre \(\sqrt{2}\) est dfini par

Le nombre

\[ (\sqrt{2})^2 = 2 \]
et \(\sqrt{2} > 0\). Cest un nombre
rel irrationnel.

est dni par

( ) =

et > . Cest un nombre rel irrationnel.


E . Les deux modes mathmatiques

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 --

Les modes mathmatiques

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

= .

E . Indices, exposants, fractions et racines

\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 --

. Dcouvertes des modes mathmatiques

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

\( \iint f \neq \int\int f \).

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. ..).
.
.
.
.
.
.

Enn, avec amssymb, mais javais dj dit que je ne le rpterai plus.


http://people.math.jussieu.fr/~mpg/lm204/files/doc-symboles-math.pdf
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

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 --

Les modes mathmatiques

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}$

T . Fontes disponibles en mode mathmatiques

. Points plus dlicats


.. Distinguer texte et mathmatiques

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 --

. Points plus dlicats

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 .

E . Dclaration et usage dun nouvel oprateur

.. 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

.. Limites et grands oprateurs


\limits \nolimits

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}

La syntaxe de \DeclareMathOperator prsente prcdemment ntait pas tout fait complte :


il existe en fait une variante toile qui permet de dclarer des oprateurs dont les bornes pourront se placer en-dessous et au-dessus. Lexemple . illustre lusage de de cette version toile.

c-math.tex r --

Les modes mathmatiques

r --

\DeclareMathOperator*{\colim}{colim}
\[ \colim_{x\to\infty} f(x) =

colim f (x) = colimx f (x)


x

\colim\nolimits_{x_\to\infty} f(x) \]

E . Oprateur et placement des bornes


Commande
\qquad
\quad
\
\;
\:
\,
\!

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[]

T . Commandes despace en mode mathmatique

.. Espaces en mode mathmatique

On peut parfaitement utiliser \hspace pour retoucher lespacement en mode mathmatique,


mais cest rarement une bonne ide. On dispose en fait de commande prdnies, prsentes dans
la table ., qui sont bien plus commodes. Certaines de ces commandes sont mme disponibles
en mode texte, comme \quad qui est quivalent \hspace{1em}.
A
Ces commandes ne sont en fait pas souvent utiles, car LTEX se dbrouille en gnral bien pour
placer les choses comme il faut en mode mathmatique. Un cas cependant o il faut toujours
rajouter lespace la main est celui dun quanticateur sparer du reste dune formule hors-texte :
on crira donc souvent \quad\forall x. Lusage des commandes despacement prdnies (par
opposition \hspace) permet de rester cohrent entre les direntes formules. Dautres exemples
sont donns en exercices.

.. 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

\[\left( \frac{1}{2}\right)^2 \quad


\left. \frac{\partial f}{\partial x}


( )

\right|_{x=0} \quad \left\{


\frac{a}{b} \ \middle|\ b=10^n \right\}\]

x x=

a
{ b = n }
b

E . Taille automatique des dlimiteurs


Rsultat
f

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}$

$\sum_{\substack{i\in I \\j\in J}}$

${}^t\!M$

iI
jJ

x = xx
n

$x^n = \underbrace{x \cdots x}_n$

T . Petites constructions mathmatiques

. Constructions mathmatiques
.. Petites constructions
A
Diverses petites constructions sont disponibles avec LTEX et amsmath. Les plus courantes sont
prsentes dans la table ..

.. Alignements

Voyons maintenant comment raliser divers alignements en mode mathmatique : matrices,


systmes dquations, longs calculs. . . La syntaxe gnrale est la mme que celle des tableaux, qui
seront tudis en dtails au chapitre : les lignes sont spares entre elles par \\ et au sein de
chaque ligne, les cellules sont spares par le caractre rserv & (qui est illgal en dehors dun
tableau). Tout ceci est entour dun environnement qui dtermine lapparence gnrale de lalignement en fonction de sa nature.
{matrix} {pmatrix} {vmatrix} {Vmatrix} {bmatrix} {Bmatrix}

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 --

Les modes mathmatiques

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} \]

E . Alignements mathmatiques moyens


{align} {multline}

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 --

Les modes mathmatiques

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}

orme .. (de Fermat).


Cubum autem in dous cubos,. . .
Dmonstration. La marge est
trop troite.

Exercice ... La changer avec


\geometry.
Question de cours. Quest-ce qui
est trop troit ?

Quest-ce qui est trop troit ? \end{qc}

E . Environnements de type thorme


\theoremstyle{nom de style}

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 --

Rvisions et cration de commandes


. Rappels et complments
.. Source minimal et encodages
A
Rappelons lallure dun chier source LTEX pour les documents courants.

\documentclass[a4paper]{article}

% ou report ou book ou ...

\usepackage[latin1]{inputenc}

% ou utf8 ou macroman

\usepackage[T1]{fontenc}

% accents dans le pdf

% \usepackage{textcomp}

% symboles complmentaires (euro)

% \usepackage{amsmath, amssymb}

% minimum pour les maths

% \usepackage{xspace}

% protection de certains espaces

modules supplmentaires
\usepackage[frenchb]{babel}

% titres en franais, typo franaise

% \usepackage{hyperref}

% liens hypertexte

commandes pour rgler la mise en pages


dnitions de commandes, environnements, etc.
% \title{titre}

% \author{nom de lauteur}
% \date{date}

% \today pour la date du jour

\begin{document}
% \maketitle

reste du corps du document


\end{document}

S . Fichier source de base


Ce source de base est disponible dans une version prte lemploi que je vous recommande
de tlcharger et davoir toujours porte de main, pour lutiliser comme point de dpart de tous
vos documents.
Les lignes commentes dans ce source ne sont pas obligatoires, mais sont assez souvent utiles.
Vous navez qu les d-commenter (retirer le caractre % en dbut de ligne) et ventuellement les
modier pour les utiliser. Les autres lignes doivent gurer dans tous vos documents, ventuellement adaptes (vous pouvez changer les options de la classe ou de modules par exemple).
Une ligne que vous pouvez avoir besoin de modier est lappel inputenc : en eet, la bonne
option ici dpend du rglage de votre diteur. Rappelons les principales options disponibles.
. http://people.math.jussieu.fr/~mpg/lm204/files/doc-source-base.tex

c-rev-newc.tex r --

Rvisions et cration de commandes

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 --

Rvisions et cration de commandes

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

Une base est une famille libre et


gnratrice. Une famille est libre si. . . ;
elle est gnratrice si. . . On appelle
sous-espace vectoriel un sous-ensemble
qui est aussi un espace vectoriel. Un
sous-ensemble est un sous-espace
vectoriel si et seulement 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.

Soit F un sous-espace vectoriel


dun espace vectoriel. Une partie
stable par les oprations est un
sous-espace vectoriel.

E . Utilisation de \xspace

.. Commandes avec arguments


\newcommand*\nom[n]{dnition avec }
\newcommand\nom[n]{dnition avec }

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 ) !

Attention, $\vecmal{1}{42} \neq \vecbien{1}{42}$ !

E . Commandes avec arguments


Parfois, il faut prendre garde dans la dnition entourer chaque argument dune paire dacA
colades, sinon, LTEX le dcoupera impitoyablement en morceaux au moment du remplacement,
comme le montre la comparaison entre \vecmal et \vecbien dans lexemple ..
Vous aurez remarqu que pour dnir des commandes argument on dispose de deux variantes : \newcommand* et \newcommand. Cest la premire qui est recommande dans la plupart
des cas : elle dnira une commande arguments courts, cest--dire faisant moins dun paragraphe (comme cest le cas de la commande \textbf par exemple). Cest souvent utile pour dtecter des erreurs : si vous oubliez laccolade fermante dun argument court, lerreur sera dtecte
ds la n du paragraphe plutt qu la n du document.

c-rev-newc.tex r --

Rvisions et cration de commandes

r --

.. Commandes avec arguments optionnels


\newcommand\nom[n][valeur par dfaut]{dnition}

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

Un mot vraiment trs important.

\fort[red]{important}.

E . Commande avec argument optionnel


Vous pouvez obtenir le mme rsultat avec vos propres commandes. Pour rendre optionnel
le premier argument, il sut de lui indiquer une valeur par dfaut entre crochets juste avant la
dnition de la commande. Attention, largument optionnel est toujours #1, et le nombre darguments indiquer est le nombre total, en comptant largument optionnel. Ainsi, dans lexemple .,
la commande \fort est dclare comme ayant deux arguments, mme si on peut lutiliser avec
un seul argument.
Avec \newcommand, on ne peut avoir quun argument optionnel, qui doit toujours tre le premier. Si on veut dnir des commandes ayant plusieurs arguments optionnels, on peut utiliser le module xargs , dont la documentation est disponible en franais (texdoc xargs-fr,
mthelp xargs-fr ou en ligne ).
.. Environnements
\newenvironment{nom}{code de dbut}{code de n}

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}{}

Remarque. Une remarque qui


pourrait bien faire plusieurs
paragraphes.
Du texte petit sur une
plus petite largeur.

\begin{remarque} Une remarque qui pourrait


bien faire plusieurs paragraphes.\end{remarque}
\begin{petit} Du texte petit sur une
plus petite largeur. \end{petit}

Du texte nouveau normal ici


pour voir.

Du texte nouveau normal ici pour voir.

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}

\renewcommand\nom[n][valeur par dfaut]{dnition}


\renewenvironment{nom}{code dbut}{code n}

En dnissant une commande ou un environnement avec \newcommand ou \newenvironment,


A
LTEX vrie que le nom quon souhaite utiliser est bien disponible, et met un message derreur
sinon. La plupart du temps, cest une trs bonne chose, car cela vous empche de re-dnir par erA
reur une des commandes plus ou moins internes de LTEX, ce qui pourrait avoir des consquences
catastrophiques.
Il arrive parfois cependant quon veuille rednir une commande existante, par exemple parce
que la dnition normale ne nous convient pas. On peut alors prcder comme pour une dnition normale, en utilisant \renewcommand ou \renewenvironment selon quil sagit dune commande ou dun environnement. Ces commandes ont exactement la mme syntaxe que leurs analogues sans re. Elles ont le mme eet, sauf que cette fois elle mettent un message derreur si le
nom ntait pas dj dni.
Il faut tre prudent en rednissant des commandes ; par exemple il faudrait toujours que la
commande, une fois rednie, garde presque le mme sens quavant. Par exemple,
. Cest ce quon appelle souvent commenter ses ns de lignes .

c-rev-newc.tex r --

Rvisions et cration de commandes

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

Passage par PostScript

png, jpg
pdf

ps, eps

T . Modes de compilation et formats graphiques


Un mot sur les dirents modes de compilation : le mode que je recommande en gnral est
PDF direct ; les dirents exemples et exercices supposent que vous utilisez ce mode compilation.
Il fonctionne bien et est souvent le plus simple. Il peut cependant arriver que lusage de PostScript
. Notez que la rciproque de cette implication est fausse : certaines images vectorielles qui rendent bien limpression rendront moins bien lcran : en eet, celui-ci nest pas assez prcis pour rendre correctement les dtails qui
sont alors dforms de faon plus ou moins lgante.
. Les documents destins lcran peuvent se contenter dune rsolution infrieure : un cran actuel ore environ
ppp (points par pouces) de rsolution, contre au moins ppp pour une imprimante.

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}

pour insrer limage lion.jpg dans le polycopi.


Enn, on peut aussi indiquer le chemin complet du chier, commenant par exemple par C:\
sous Windows et par / partout ailleurs. Ceci nest souvent pas une bonne ide, car si jamais vous
dplacez votre document, lchangez avec un collgue , il faudra alors changer tous les chemins :
.
.
.
.

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

F . Centres de rotation possibles


dsigns par une suite de deux lettres. La premire lettre dsigne la hauteur de lorigine : b tout en
bas, B sur la ligne de base (voir ci-dessus), c au centre et t en haut : la deuxime son emplacement
horizontal : l gauche, c au centre et r droite, comme illustr sur la gure ..
On utilise toujours ensemble les options angle et origin, et on peut les combiner avec dautres
options comme sur lexemple ..
\usepackage{graphicx}
Bla \includegraphics[height=1cm,
angle=45, origin=bl] {mire-tele.jpg}
bla \includegraphics [height=1cm,

Bla

bla

bla.

angle=45, origin=br]{mire-tele.jpg} bla.

E . Inclusion de graphiques avec rotation


Enn, il est possible de recadrer une image. On utilise pour cela viewport=x y x y, qui
a le sens suivant : recadrer limage en utilisant de rectangle dont le coin infrieur droit a pour
coordonnes x,y et le coin suprieur gauche x,y. Lorigine des coordonnes est le coin
infrieur droit de limage ; lorientation positive est vers la droite et vers le haut ; on peut prciser
une unit pour chaque coordonne.
\usepackage{graphicx}
Du texte puis une image
\includegraphics[viewport=4cm 3cm 9cm 7cm,
width=0.5cm]{mire-tele} ici recadre sans
dcoupage. La mme image recadre
\includegraphics[viewport=4cm 3cm 9cm 7cm,
clip, width=0.5cm]{mire-tele} et cette fois

Du texte puis une image


ici recadre
sans dcoupage. La mme image
et cette fois correctement
recadre
re-dcoupe.

correctement re-dcoupe.

E . Recadrage et dcoupage dimage


A
Il faut de plus, dans la plupart des cas, utiliser loption clip qui dit LTEX de supprimer rellement la partie de limage qui dborde du cadre ainsi dni : dans le cas contraire, il najustera
que les dimensions logiques de limage sans couper le reste, et le rsultat sera le plus souvent
une superposition malencontreuse avec le texte autour, comme dans lexemple .. Notez, dans ce
mme exemple, que les coordonnes du nouveau cadre sont plus grandes (9cm par exemple) que
la taille nale (0.5cm) : elles sont calcules par rapport la taille de limage avant mise lchelle.

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).

.. Habill par le texte

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,

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, consectetuer
id, vulputate a, . . .

consectetuer id, vulputate a, \dots

E . Habillage dans le coin en haut droite


dans lexemple . : 2.4cm pour une image de 2cm, de faon viter que le texte soit coll sur
limage. La dimension verticale, en revanche, est calcule automatiquement. Vous pouvez cependant lajuster au besoin en indiquant le nombre de lignes qui doivent tre raccourcies comme
premier argument optionnel. Le dernier argument optionnel sert, lui, faire dborder limage
dans la marge dune longueur donne.
Il est seulement possible, avec wrapfig, de placer limage sur un des deux cts, en haut. Pour
la placer au milieu du texte, il faut recourir au module picinpar et son environnement window.
\begin{window}[lignes avant,lcr,{gure},titre]

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.

Un paragraphe au milieu duquel


apparat ici la
chre mascotte
A X : un
de LTE
lion lunettes.
Rappelons que
celle de TEX
Lui sur lequel est
(le programme
A
bas LTEX) est un lion sans lunettes
mais en toge.

\end{window}

E . Image en fentre dans le texte


Les arguments de window sont dabord le nombre de lignes compltes dans le paragraphe
avant le dbut de la gure, puis lemplacement de la fentre : l gauche, c au centre et r droite.
Viennent ensuite la gure elle-mme et un titre qui sera plac au-dessous.

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 --

. Autres oritures graphiques

. Autres oritures graphiques


.. Rotations et mises lchelle

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}

\scalebox{chelle h}[chelle v]{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

E . Rotation et dilatation de texte

;-)

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}

ou doubl ou arrondi mais


cest limite.
Ombr

\shadowbox{Ombr} ou \doublebox{doubl}
ou \ovalbox{arrondi} mais cest limite.

E . Cadres plus sophistiqus


\usepackage{xcolor}
Plus \colorbox{blue!30!white}{bleu} que le
\fcolorbox{blue!70!white}{white}{bleu} de
tes yeux, je ne vois rien de mieux, mme le

Plus bleu que le bleu de tes


yeux, je ne vois rien de mieux,
mme le bleu des cieux.

\fcolorbox{blue}{blue!30!white}{bleu} des cieux.

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 :

\item finir le polycopi ;

nir le polycopi ;

\item le mettre en ligne;

le mettre en ligne ;

\item tlphoner \ding{37}

tlphoner aux amis et faire la fte.

aux amis et faire la fte.


\end{dingautolist}

E . Utilisation dune police de symboles

. 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}

cellule & cellule & ... \\ ...

\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}

E . Types de colonnes simples


Comme on le constate sur cet exemple, un tableau sert juste aligner les cellules entre elles,
la sparation entre les cases nest pas matrialise par un quadrillage visible. Pour obtenir des
lets (ou rglures) entre les cellules, on procde diremment selon quil sagit dun let vertical
ou horizontal. Dans le premier cas, il sut dinsrer un ou plusieurs signes | entre les lettres
reprsentant les colonnes dans le motif. Dans le second, cest dans le corps mme du tableau quon
insre des lets, par la commande \hline place entre deux lignes. Lexemple . montre un
tableau avec quelques rglures.
Les lets verticaux indiqus dans le motif (on dit aussi le prambule du tableau) stendent sur
toute la hauteur. On peut obtenir un let au milieu dune cellule avec la commande \vline. Nous
verrons plus tard comment obtenir un let vertical seulement sur certaines cases, ou bien sur
toutes les cases sauf quelques-unes.
Les lets horizontaux sont plus faciles grer : pour obtenir un let partiel, il sut dutiliser
\cline{db-n} qui donne un let couvrant les colonnes db n incluses. Comme on
le constate sur lexemple ., on peut utiliser plusieurs fois cette commande pour crer un let
horizontal avec un trou .

c-tab.tex r --

Tableaux

r --

\begin{tabular}{r|r|cl|} \hline
A 1 & Machin & Patin & Couffin\\
\hline\hline

Machin

Patin

Coun

B 2 & Bidule & Chose & Chouette\\

B
C

Bidule
Fou

Chose
Barre

Chouette
Base

\cline{1-1} \cline{3-4}
C \vline{} 3 & Fou & Barre & Base\\\hline
\end{tabular}

E . Tableaux avec des lets


En fait, le prambule dun tableau peut contenir un peu plus que des spcications de colonnes. Dune part, on dispose de raccourcis pour les morceaux de motif se rptant : crire
*{3}{sous-motif} revient crire trois fois de suite sous-motif. a simplie la saisie et les modications, et a vite les erreurs de frappe. Par contre, il faut faire attention ne pas doubler les
lets verticaux par inadvertance.
Par ailleurs, on peut modier ce quil y a entre les colonnes elles-mme (par dfaut, juste un
blanc dun certaine dimension), en insrant @{matriel} entre les colonnes dans le motif : dans
ce cas, materiel remplace le blanc. En fait, ceci fonctionne aussi avant la premire et aprs la
dernire colonne, ou entre une colonne et un let vertical, comme le montre lexemple .. On
verra bientt comment ajouter du matriel au dbut ou la n de chaque cellule dune colonne,
ce qui est dirent.
\begin{tabular}{r@{ et }l|r@{ ans\ }|}
Romo & Juliette & 420 \\
Jeanne & Serge & 25 \\
Tic & Tac & 66 \\

Romo et Juliette
Jeanne et Serge
Tic et Tac

ans
ans
ans

\end{tabular}

E . Matriel inter-colonnes

.. Colonnes de type paragraphe

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

E . Colonnes de type paragraphe et alignement


gauches et droites bien rectilignes (texte justi). Nous verrons plus tard comme grer ce problme en changeant lalignement, ds que nous saurons introduire automatiquement du matriel
en dbut de cellule (section ..).
.. Placement

De faon similaire \includegraphics, lenvironnement tabular ne gre absolument pas le


placement du tableau : par dfaut, il tentera de lintgrer au paragraphe courant. Comme pour
les gures, la solution la plus simple et la plus courante consistera placer notre tableau dans
un environnement center (ou flushleft) pour ajuster lespace vertical autour du tableau et le
center (ou laligner gauche).
\begin{table}[htbp]

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 \\

&= 4 \end{aligned} \label{good2} \\

(.)
(.)

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= +
=

&= 4 \end{array} \label{bad1} \\

(.)

x = +
=

\begin{array}{rl} x &= 2 + 2 \\

(.)

E . Mauvais espaces horizontaux avec array


Ceci dit, array est utile pour des constructions spciques, comme des tableaux de variation.
Il faut seulement lviter pour aligner des quations sur le signe = (ou un autre signe de relation),
ce qui se fait avec align ou une de ses variantes vues en section ...

. Techniques plus avances


.. Matriel automatique
>{matriel avant}colonne<{matriel aprs}

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

en gras & \sqrt{2} & 3 \\


\end{tabular}

E . Matriel automatique pr- et post-colonne


Remarquez que pour mettre une texte en gras, on utilise la forme dclarative \bfseries : en
eet on ne peut pas mettre \textbf{ au dbut et } la n, car le dbut et la n doivent tre
quilibrs en accolades. Heureusement, une commande dclarative nagit qu lintrieur de la
cellule o elle a t utilise.

c-tab.tex r --

r --

. Techniques plus avances

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 \\

b & blibli bli lili bibi bli

blibli \\

\end{tabular}

blabla
bla
lala
blibli
bli
lili
blabla bla lala baba
bla blabla
blibli bli lili bibi bli
blibli

E . Gestion des retours la ligne

.. 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 \\

Titre gnral assez long


T.
T.
T.
machin machin machin
c
c
c

\hline c1 & c2 & c3 \\ \hline


\end{tabular}

E . Fusion horizontale de cellules


De plus, on voit sur cet exemple un usage particulier, mais assez courant, de \multicolumn :
fusionner une cellule avec elle-mme, juste pour pouvoir changer son motif (ici, il sagit de centrer
les titres alors que le texte est normalement align gauche comme sur la dernire ligne).
\multirow{nb lignes}{largeur}{paragraphe}
\multirow{nb lignes}*{texte court}

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

Troisime & & Bronze \\


\end{tabular}

E . Fusion verticale de cellules


Par ailleurs, dans lautre sens, on peut aussi diviser des cellules. Ceci est rarement utile, sauf pour
couper une cellule en deux en diagonale. Le module slasbox fournit la commande ponyme, qui
permet de faire cela. Je renvoie aux exercices pour un exemple. Attention, le rsultat est souvent
douteux dun point de vue esthtique : il vaut souvent mieux trouver une autre faon de disposer
son tableau.
. http://ctan.org/pkg/slasbox

c-tab.tex r --

r --

. Techniques plus avances

.. 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

\\ \arrayrulecolor{black} \color{cyan} Cell.


3a & Cell. 3b & Cell.

3c \\ \hline

\end{tabular}

E . Trop de couleurs dans un tableau


\rowcolors{dlai}{couleur}{couleur}

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 --

. Techniques plus avances

\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

E . Une utilisation raisonnable de la couleur


.. Aspects esthtiques

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 --

Du texte et des caractres rservs :


\verb+{ $ }+, ventuellement avec des
espace visibles : \verb*+{ $ }+.

Du texte et des caractres rservs : { $ },


ventuellement avec des espace visibles : {$}.

\begin{verbatim}
#include <stdlib.h>

#include <stdlib.h>

int main(void) {

int main(void) {
exit 0;

exit 0;
}

}
\end{verbatim}

E . Commande et environnement de base pour le verbatim


\fbox{\verb+\lipsum+}

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 .

.. Avec le module fancyvrb

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}

Dabord en ligne : {#}. Puis

Dabord en ligne : \Verb+{#}+. Puis


#!/usr/bin/perl

\begin{Verbatim}[formatcom=\slshape]

#!/usr/bin/perl

use warnings;
print Hello, world!;

use warnings;

print Hello, world!;

exit 0;

exit 0;
\end{Verbatim}

E . Usage simple de fancyvrb


Il existe bien dautres possibilits pour mettre en forme le contenu avec fancyvrb. Voyons par
exemple comment encadrer le code et lui donner un titre.
frame=none, leftline, topline, bottomline, lines, single,

framerule=dimension, framesep=dimension, framecolor=commande,

label=texte, labelposition=none, topline, bottomline, both

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} .

pour encadrer, il faut tricher : \fbox{%


\macro{textbf}\argu{gras}}. Une autre mthode :
\SaveVerb{bold}+\textbf{gras}+\fbox{\UseVerb{bold}}.

E . Verbatim : quand limitation vaut mieux que loriginal


La deuxime mthode, illustre dans ce mme exemple, consiste utiliser les commandes,
conues cet eet, \SaveVerb et \UseVerb, fournies par fancyvrb, qui permettent de sauvegarder un fragment verbatim sous un nom libre, dans un contexte sr (en dehors de largument
. Et pour citer G dformant H : Quand je dis vous, cest aussi de moi que je parle . Cest en eet une
erreur que vous mavez srement vu commettre dans une version de certains slides. . .
. Les caractres visibles ASCII sont, en plus des lettres des chires et de lespace, les caractres suivants :
!#$%&()*+,-./:;<=>?@[\]^_{|}~. Ces caractres sont les seuls avec lesquels vous naurez jamais de problme
dencodage.

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) {

exit 0; /* ouf, fini ! */


}

int main(int argc, char** argv) {


exit 0; /* ouf, fini ! */
}
\end{lstlisting}

E . Reconnaissance de mots-cl du langage C


Attention, les caractres non-ASCII (voir note , page ) sont susceptibles de poser problme
avec listings. Si on veut en utiliser dans le code prsent, il faut penser spcier loption
extendedchars=true. Malheureusement, ceci ne fonctionnera pas si lencodage utilis est utf8,
pour des raisons techniques et srieuses. (Cette limitation pourra tre leve long terme.)
Le module listings ore bien dautres possibilits, comme dajouter des mots-cls, de dnir
des nouveaux styles de commentaire, de sortir temporairement du mode verbatim, de couper
. Que jutilise aussi dans ce poly, dcidment. . .
. En fait, ce nest alors plus un argument, au sens TEXnique du terme, mais ce genre de considration dpasse
largement le cadre de ce cours.

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

T . Espacement autour des signes de ponctuation


Ces rgles peuvent vous faire peur premire vue, surtout celles impliquant des espaces nes
ou inscables. La bonne nouvelle, cest que lorsque vous utilisez babel avec loption french, ces
espaces sont gres automatiquement pour vous (avant les ponctuations hautes ;?!: et lintrieur des guillemets avec \og et \fg). Par contre, cest vous de grer les reste des espaces : en
mettre l o il doit y en avoir, et pas ailleurs.
Ce sont des habitudes de saisie au clavier que lon prend trs rapidement (que vous avez peuttre mme dj). Il faut y faire attention, au mme titre quon veille ne pas faire (trop) de fautes
dorthographes : en fait cest quand mme bien plus facile de lorthographe !
.. Rfrences pour aller plus loin

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

\arabic{nom} \roman{nom} \Roman{nom}


\alph{nom} \Alph{nom} \fnsymbol{nom}

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}

I-i Une sous-section


Un peu de texte ici.

\label{texte} Un peu de texte ici.


\subsection{Une autre sous-section}
Il y avait du texte en~\ref{texte}.

I-ii Une autre sous-section


Il y avait du texte en I-i.

E . Modication de la reprsentation dun compteur


pas utiliser une commande dans sa propre (re-)dnition. Par exemple si vous voulez ajouter des
parenthses la reprsentation du compteur page,
\renewcommand\thepage{(\thepage)}
A
ne fonctionnera pas, car LTEX appellera \thepage de faon rcursif, et nira par chouer avec
une erreur de dpassement de capacit. La bonne solution est bien sr

\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

Du texte de remplissage pour


commencer.
Exercice . Lire lnonc de cet
exercice en entier.
Exercice . Dmontrer le
thorme de Fermat.
Lexercice tait facile, mais le
est trop dicile.

\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.

E . Utilisation dun compteur personnel


Symbole
sp
pt
bp
dd
cc
pc
in
cm
mm
ex
em

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}

permet davoir des quations numrotes par sous-section.

. 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}

Par dfaut : blabla


Deux fois moins serr : blabla
Totalement coll : blabla
Avec un trait pais : blabla
Retour la normale : blabla

Retour la normale : \fbox{blabla}

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

grand que le mot


manuscrite

\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.

manuscrite prend plus de \trou{place}. On


augmente \trou{aussi} linterligne.

E . Mesure de mots pour un texte trous


On dcouvre aussi sur cet exemple la longueur \baselineskip qui reprsente lcart entre les
bases de deux lignes au sein dun paragraphe. Il est acceptable de le modier la main pour une
texte court, comme dans lexemple, mais en gnral il faut mieux passer par le module setspace ,
car sinon on perturbe aussi la mise en page des listes sans le vouloir.
Il existe dautres longueurs susceptibles dtre modies. Par exemple, \parindent est la largeur
du retrait en dbut de paragraphe : on peut la rgler 0pt pour toujours supprimer ce retrait. (Pour
le supprimer ponctuellement au dbut dun paragraphe donn, on utilise \noindent, qui a dj
t vue dans plusieurs exemples).
Par contre, il faut viter de modier manuellement (avec \setlength ou \addtolength les
longueurs qui reprsentent les dimensions de la page (voir la gure page ). En eet, ceci est
souvent source derreur car ces longueurs doivent satisfaire un certain nombre de contraintes. Il
faut mieux, pour modier la disposition des pages, utiliser les options du module geometry.
Nous verrons la section .. dautres longueurs qui contrlent la mise en page des tableaux
et quil peut tre utile de modier avec \setlength.
. http://ctan.org/pkg/setspace

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

F . Les trois dimensions des botes


Les trois prochaines sections examinent les botes et les commandes permettant de les manipuler en fonction de leur contenu : une boite horizontale contient dautres botes dont les points
de base sont aligns horizontalement, une bote verticale contient des botes alignes verticalement (par exemple des paragraphes, qui sont des empilements verticaux de botes horizontales
(les lignes) et les rglures sont des botes remplies en noir.
.. Botes horizontales
\mbox{contenu}

\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.

Du texte pour voir la marge.


Bouh a fait xxxx plaisir.
peur
On samuse avec les botes.

E . Utilisation de botes de largeur nulle


\makebox[largeur][lcrs]{contenu}

\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

de largeur donne, comme dans lexemple ..


\setlength\fboxrule{2pt}
Du texte dabord pour visualiser
la largeur des lignes de texte.\\
\framebox[\linewidth] [c]{%

Du texte dabord pour visualiser la largeur des


lignes de texte.
Coucou !

\bfseries Coucou !}\\


Puis une image \raisebox{-1cm}{%

Puis une image

centre sur la ligne.

\includegraphics[height=2cm]{lion}}
centre sur la ligne.

E . Utilisation de \framebox et \raisebox


La dernire commande de gestion des botes horizontales que nous verrons est \raisebox, qui
permet de dcaler une bote par rapport la ligne de base. Elle est utile pour rgler dalignement
avec des objets volumineux comme des images (exemple .), ou pour obtenir des eets spciaux.
On peut tricher sur la hauteur et la profondeur de la bote obtenue (typiquement, les rgler 0pt
pour ne pas en tenir compte) grce aux arguments optionnels.
. Si on utilise \bsc pour les noms de famille, il ny a pas besoin de rajouter \mbox, car \bsc empche dj les
coupures.

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

Un peu de texte dabord pour bien voir


la largeur disponible.
Plusieurs lignes de texte encadres, le
cadre prenant toute la largeur dune
ligne.
Encore un peu de texte pour mieux
voir la largeur disponible.

voir la largeur disponible.

E . Une bote verticale dans une bote horizontale


Le premier argument optionnel de lenvironnement minipage sert dterminer comment elle
sera aligne avec les autres lments de la ligne : t par le haut (top), c par le centre (center) et b par
le bas (bottom). Le deuxime permet dimposer une hauteur, et le troisime sert alors indiquer
comment le contenu sera rparti dans cette hauteur : t, c ou b pour le placer en haut, au centre
ou en bas, et s pour tenter de ltirer (comme pour \makebox, ceci peut causer des problmes).
.. Rglures
\rule[dcalage]{largeur}{hauteur}
\hrulefill

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

Les lments intressants dans ce message sont :


le type de problme, indiqu au dbut. Ici, cest une bote horizontale (\hbox) dans un paragraphe (une ligne de texte, donc), qui nest pas assez remplie (Underfull) ;
lemplacement dans le code source o le problme a t repr. En gnral, cest une indication
assez exacte ;
A
un extrait du texte que LTEX narrive pas disposer de faon bien remplir la ligne, avec les
points de coupure possibles matrialiss par des traits dunion.
Comme une bote peut tre horizontale ou verticale, et pas assez ou au contraire trop remplie,
il y a quatre cas que je vais prsenter avec leur cause probable et des approches possibles pour
trouver une solution.
. Underfull \hbox : la plupart du temps, caus par du texte justi sur une largeur trop
troite, par exemple dans une note marginale, une colonne dun tableau, une minipage, etc.
La solution est simple : ne pas justier le texte cet endroit, laligner seulement gauche
ou droite, ou le centrer (voir section .).
. Overfull \hbox : le problme le plus courant et le plus embtant. Souvent caus par un
lment long et inscable (morceau de verbatim, formule, texte rendu inscable) dans la
ligne de texte, mais survient parfois dans des paragraphe sans rien de bizarre. Lalgorithme

c-prog.tex r --

lments de programmation

r --

A
de LTEX est trs bon pour rsoudre ces problmes, et sil ny est pas arriv tout seul, cest
souvent le signe quil ny a pas de solution simple. Si vous tes lauteur du texte, le plus
simple est de changer un ou deux mots ou la tournure de phrase en esprant que a passe
mieux. Sinon, selon le passage concern, vous pouvez parfois jouer sur les marges ou ne
pas justier le texte cet endroit. Une astuce pour reprer le problme dans le document :
A
rgler la longueur \overfullrule , par exemple 5pt pour que LTEX mette le problme en
vidence par un rectangle noir ct.

. Underfull \vbox : un autre problme courant et parfois dlicat. Cause : un moment,


A
LTEX doit changer de page, pour placer un lment important et qui ne peut pas tre coup,
mais il ny a pas assez de texte sur la page en cours pour la remplir. Si cest possible, une
solution est de faire otter llment perturbateur. Sinon, on peut essayer de modier les
coupures des pages prcdents avec \pagebreak pour ramener un peu plus de matriel
sur la page en cours. Il est aussi parfois possible dallonger un paragraphe dune ligne en le
faisant prcder de \looseness=1, si sa dernire ligne tait dj bien remplie. Le reste du
temps, on est bien embt. Si on est lauteur du texte, on peut le modier lgrement.
. Overfull \vbox : un problme bien moins courant. Il survient par exemple en classe
beamer, o aucune coupure de page nest faite automatiquement, quand on essaie de placer
trop de choses sur une seule page. La solution est claire : mettre moins de choses ! ventuellement, on peut tasser un peu le matriel prsent avec des \vspace de longueur ngative
entre les dirents lments, mais ce nest pas trs propre.
Depuis le dbut du cours, je vous rpte que tout document doit compiler sans erreurs. Les
avertissements (warning ) par contre sont parfois anodins (cest en gnral le cas pour ceux lis
aux fontes), parfois pas : il faut les examiner un par un. Voici la troisime rgle : il ne doit rester
aucun problme de remplissage de bote dans la version nale de vos documents. la rigueur, on
peut accepter des problmes de petite ampleur, sil est certain quon ne les voit pas lil nu, mais
cest rare.
Souvent, il vaut mieux ne pas se proccuper des problmes de botes pendant la rdaction et la
mise au point du document : parfois, ils disparatront deux-mme avant la n, ou bien une solution apporte sur une premire version du document ne fonctionnera plus aprs. Gardez donc
ces problmes, souvent pineux, pour la n. (Les erreurs de compilations restent rgler immdiatement, bien sr.)

c-prog.tex r --

Personnalisation
. Polices
A
Nous avons vu en section . le modle de gestion des fontes de LTEX, et comment changer de
police au sein dun document en suivant ce modle. En particulier, trois familles sont disponibles :
avec empattements, sans empattements, et faon machine crire. Or, il existe de trs nombreuses
A
polices avec empattements, comme Times, Computer modern roman (la police par dfaut de LTEX),
Garamond (utilise dans la Pliade), Minion (utilise dans ce poly), etc. Comment choisir laquelle
sera utilise en tant que \rmfamily ?
En gnral, cela se fait en chargeant un module, qui soccupe de tous les dtails ncessaires (parfois nombreux). Certains modules modient les trois familles de police, dautres nen modient
quune. Par ailleurs, certains possdent des options permettant daccder des variantes. Comme
A
LTEX est souvent utilis pour des documents contenant des mathmatiques, il est aussi important
de prvoir une police contenant susamment de symboles mathmatiques.
Voici une liste de quelques modules classiques permettant de changer les polices de base.
lmodern change les trois familles, pour des variantes un peu retravailles (familles Latin MoA
dern) des polices par dfaut de LTEX (les familles Computer modern). Si les polices par dfaut
vous conviennent, il est conseill de toujours utiliser ce module : en eet il vaut mieux slectionner explicitement cette variante de police, plutt que de se reposer sur le choix de
A
LTEX, qui pourra varier dune installation lautre (surtout sur des installations vieilles ou
incompltes).
A
kpfonts est un autre triplet de polices spcialement dveloppes pour LTEX. Il sagit de familles extrmement compltes, comprenant beaucoup de symboles mathmatiques. Le module propose des options pour accder des variantes, trop nombreuses pour tre prsentes
ici : je renvoie donc sa documentation.
fourier modie la police romaine (\rmfamily) et les polices mathmatiques. Cest une version de la police souvent appele Utopia. Le module, dvelopp par un Franais, propose une
option (upright) pour adapter la composition des math aux traditions franaises, avec les
lettres grecques et les majuscules droites (et non en italique). (Des options similaires existent
par les nombrex rglages de kpfonts, en fait.)
mathpazo change la police romaine pour utiliser Palatino et inclus des polices mathmatiques
adaptes. Il propose des variantes, comme les chires minuscules avec loption osf.
mathptmx change la police romaine et les polices mathmatiques pour le (trop ?) clbre
Times.
helvet change la police sans empattements \sffamily pour Helvtica (dont une variante
est connue sous le nom dArial). Loption scaled est souvent utile pour ajuster la taille de la
police, qui a souvent lair plus grosse que la famille romaine.

. Vous pouvez dailleurs remarquer que cest le rglage qui a t retenu dans ce polycopi, avec loption frenchmath
du module MinionPro.

c-perso.tex r --

Personnalisation

Nom priv

r --

Nom courant

Version italique

jkp

Latin modern roman


Kepler roman

Latin modern roman


Kepler roman

futs

Fourier (Utopia)

Fourier (Utopia)

ppl

Palatino
Times

Palatino
Times

Latin modern sans


Kepler sans
Helvetica

Latin modern sans


Kepler sans
Helvetica

ul9

Latin modern typewriter


Kepler typewriter
Luximono

Latin modern typewriter


Kepler typewriter
Luximono

pzc

Zapf chancery

Zapf chancery

lmr

ptm
lmss
jkpss
phv
lmtt
jkptt

T . Exemples de polices avec leurs noms


Vous pouvez bien sr combiner ces paquets entre eux, par exemple charger mathptmx et helvet
pour utiliser le duo Times et Arial . Tous les paquets cits proposent des polices de bonne qualit,
raisonnablement riches, et couramment disponibles dans les distributions TEX. Je vous encourage
en essayer quelques-un pour varier un peu lapparence de vos documents.
A
Malheureusement, la gestion des polices sous LTEX est trs compliqu pour des raisons techniques et historiques. moins dtre un expert, il est en pratique impossible dutiliser une police
A
choisie au hasard avec LTEX : il faut que les nombreux chiers de support ncessaires aient t
crs auparavant.
A
Heureusement, un nombre relativement grand de polices avec le support ncessaire pour LTEX
A X, dans un cataexiste. Elles sont toues listes, avec des exemples et la faon de les utiliser en LTE
A
logue des polices pour LTEX disponible en ligne.

\fontfamily{nom cryptique}\selectfont

Il est possible dutiliser une autre famille que les trois polices principales du document, avec
\fontfamily. Cette commande prsente deux particularits : la premire est quelle doit imprativement tre suivie par \selectfont pour avoir un eet. La deuxime est quon ne peut
pas directement utiliser le nom humain de la police, mais quon doit utiliser son nom priv
A
LTEXien . Celui-ci est parfois donn dans le catalogue, ou se trouve en chargeant le module pour
cette fonte, et en regardant le contenu de \rmdefault pour une police romaine (\sfdefault ou
\ttdefault sinon).
A
. Ajoutez la commande \sloppy pour que LTEX remplisse les lignes nimporte comment, et votre document
commencera ressembler quelque chose fait avec Word ce nest videmment pas mon choix prfr.
. http://www.tug.dk/FontCatalogue/allfonts.html
. Par exemple, crez un document de test qui charge ce module, tapez \rmdefault dans le source et regardez le
rsultat dans le pdf. En fait, la faon ocielle de trouver les noms est de regarder dans le document fontname.pdf. En
pratique, ce document est dicile exploiter, et je trouve la mthode prcdente plus commode.

c-perso.tex r --

r --

. En-ttes et pieds de page

Module

Commande

calligra

\calligra

humanist

\hminfamily

yfonts

\gothfamily

foekfont

\foekfamily

Nom

Calligra

Humani
Gotic
FOEK

T . Polices fantaisistes
La table . montre quelques exemples de fontes, dont celles cites ci-dessus ; la table .
montre des fontes plus fantaisistes, choisies dans le catalogue, pour vous convaincre que les posA
sibilits de LTEX ne sont pas limites aux documents srieux (mme si cest principalement pour
a quil est fait).
Aprs cette dbauche de fontes diverse et varies, jaimerais lancer un appel lordre : dans vos
documents srieux, choisissez vos fontes une fois pour toutes dans le prambule, nen changez pas
tire-larigot, et nutilisez pas trop de polices direntes. Comme dhabitude, un document sobre
et cohrent est plus ecace quun fouillis baroque.

. En-ttes et pieds de page


En classe article, le numro de page est automatiquement insr en bas et au milieu de chaque
page. En classe book, le numro de page est en haut et lextrieur, tandis qu lintrieur gure
le nom du chapitre en page de gauche, et le nom de la section en page de droite (sauf pour les
premire page de chapitre qui nont rien en en-tte et le numro de page en pied au milieu). Ces
rglages par dfaut sont raisonnables, mais il est possible de les modier, indpendamment de la
classe, grce au module fancyhdr .
\pagestyle{fancy}
\lhead{contenu} \chead{contenu} \rhead{contenu}

\lfoot{contenu} \cfoot{contenu} \rfoot{contenu}


\renewcommand\headrulewidth{longueur}
\renewcommand\footrulewidth{longueur}

Pour proter des fonctionnalits de fancyhdr, il faut penser utiliser \pagestyle{fancy} : le


mieux est de le faire dans le prambule, juste aprs le chargement du module, pour tre sr de ne
pas oublier. On peut ensuite attribuer un contenu six zones : en-tte ou pied, gauche, centre ou
milieu, laide des commandes \l,c,rhead,foot. Certaines ont un contenu prdni : on peut
alors le supprimer en le remplaant par le contenu vide, comme le montre lexemple ..
Il est de plus possible de sparer len-tte et le pied du corps de la page, en dnissant lpaisseur
du trait utilis (0pt pour le supprimer). Attention, il ne sagit pas dune longueur, mais dune
commande utilise pour stocker une longueur : on nutilise donc pas \setlength. (Oui, a a lair
bizarre, en fait il y a de bonnes raisons techniques cette bizarrerie.)
. http://ctan.org/pkg/fancyhdr

c-perso.tex r --

Personnalisation

r --

Mon mmoire

\usepackage{fancyhdr} \pagestyle{fancy}
\usepackage{lipsum, xcolor, lastpage}
\rhead{} \chead{\itshape Mon mmoire}
\lfoot{compil le \today}
\rfoot{\thepage{} sur \pageref{LastPage}}
\renewcommand\headrulewidth{0pt}
\renewcommand\footrulewidth{.4pt}
\lipsum

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, consectetuer id, vulputate
a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi
tristique senectus et netus et malesuada fames ac turpis egestas. Mauris
ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna
fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget
sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla.
Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula
aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum
compil le juillet

sur

E . En-ttes et pieds de page


Pour les documents recto-verso, on peut avoir intrt utiliser plutt les commandes alternatives \fancyfoot et \fancyhead dont largument optionnel permet de spcier des listes de
position dpendant de la parit de la page. Ainsi,
\fancyfoot[LE,RO]{\thepage}

ache le numro de page dans le pied de page lextrieur : LE signiant gauche les pages paires
(left even) et RO droite les pages impaires (right odd).
Le module lastpage permet dinsrer le nombre total de pages, comme dans lexemple ..
Techniquement, il na pas de rapport avec les en-ttes et pied de pages, mais cest souvent dans ce
contexte quon lutilise, et cest pourquoi je le signale ici.
Par ailleurs, on peut, dans les en-ttes et pieds, accder au numro et titre de la section en cours
avec \rightmark et au chapitre avec \leftmark. Les noms retent le comportement par dfaut
de la classe book qui les place en eet dans ces positions.

. Titres de chapitres et sections


Pour modier lapparence des titres de chapitre et de sections, on dispose de plusieurs moyens.
Pour les chapitres uniquement, le module fncychap propose quelques thmes prdnis, et assez sophistiqus. La documentation du module contient des exemples de chacun de ces style : je
ne vois pas lintrt de reproduire ces exemples ici, et vous invite donc aller les consulter directement la source . Pour slectionner un thme, il sut de donner son nom comme option au
chargement du module.
\usepackage[options globales]{titlesec}
. http://ctan.org/pkg/fncychap
. Dautant plus que pour une fois il ny a mme pas besoin de comprendre langlais : il sagit juste de regarder
quoi ressemblent les thmes, et leurs noms.

c-perso.tex r --

r --

. Listes

Pour modier lapparence des titres tous les niveaux (chapitre, section, sous-section, etc.), le
module titlesec est le plus adapt. La faon la plus simple de lutiliser est de donner des options
globales qui sappliquent tous les niveaux de titre. Voici quelques exemples doptions, regroups
par famille :
bf, it, sc, sf, etc. Ces options permettent de slectionner la fonte utilise pour les titre. Ces
codes de deux lettres devraient vous tre familiers ; dans le cas contraire, rvisez la table . ;
big, medium, small et tiny permettent de rgler la taille des titres (taille de fonte et espaces
verticaux). La taille normale est medium ; big cest plus grand, small plus petit et tiny beaucoup plus petit ;
raggedright, center et raggedleft permettent de choisir la position des titres : center
au centre, raggedleft droite, etc.
\titleformat*{commande de section}{commandes de fonte}

\titlelabel{matriel}

Pour plus de nesse, on peut modier la police (ou la couleur utilise) pour chaque niveau de
sectionnement. Par exemple,
\titleformat*{\section}{\color{red}\schape}
\titleformat*{\subsection}{\itshape}

donnera des titres de section en petites capitales rouges, et des titres de sous-sections en italiques.
Dans la section . javais dit que pour modier lachage du numro de section dans le titre,
il ne fallait pas modier \thesection, car cela modier aussi son achage dans les rfrences.
Voici une bonne solution pour les cas simples : utiliser \titlelabel. Cette commande permet
de rednir comment sont achs les numros de sections, sous-sections, etc. dans les titres.
On lui donne en argument la faon dacher le numro, en utilisant \thetitle la place de
\thesection ou \thesubsection ou . . . Par exemple,
\titlelabel{\fbox{\thetitle}\quad}

encadrera le numro et laissera un espace dun em aprs, dans les titres de tous les niveaux.
Il est possible dobtenir des rglages plus ns, par niveau de titre, et de modier de fond en
comble leur prsentation, mais nous en resterons l. Comme dhabitude, si vous voulez connatre
tous les dtails, lisez la documentation de titlesec.

. Listes
A
LTEX fournit trois environnements de liste, chacun bnciant dune mise en page par dfaut
convenable. On peut toutefois vouloir modier ces mises en pages, ou bien crer ses propres environnements de liste comme variantes de types standard. Pour tout cela, le module le plus puissant
est enumitem . Pour modier seulement les listes numrotes, le module enumerate est parfois plus facile utiliser, mme sil est en gnral moins puissant ; je dcris seulement enumitem
ci-dessous.

.
.
.
.

http://ctan.org/pkg/titlesec

Si vous ne lisez pas encore trs bien langlais, cest loccasion de pratiquer !
http://ctan.org/pkg/enumitem
http://ctan.org/pkg/enumerate

c-perso.tex r --

Personnalisation

r --

\setitemize[niveau]{option=valeur,

...}
...}
\setenumerate[niveau]{option=valeur, ...}
\begin{enumerate}{option=valeur, ...}
\setdescritpion[niveau]{option=valeur, ...}
\begin{description}{option=valeur, ...}
\begin{itemize}{option=valeur,

Il y a deux faons de rgler les listes avec enumitem : la premire consiste grer globalement
lapparence de tous les itemize avec \setitemize (et ainsi de suite pour les autres environnements). Dans ce cas, on peut eectuer des rglages dirents selon le niveau de la liste (par
exemple, un itemize qui apparat dans une autre liste utilisera les rglages du niveau ). Sinon,
on peut modier un environnement donn, en lui passant directement la liste des options voulues
en argument optionnel, comme le montre lexemple ..
\usepackage{enumitem}
\setenumerate[1]{label=\Roman*}
\setenumerate[2]{label*=-\roman*}
\frenchbsetup{StandardLists=true}

I Dabord, pour commencer :

\begin{enumerate}
\item Dabord, pour commencer :
\begin{enumerate}
\item Le chef a toujours raison.
\item Jai dit toujours.

I-i Le chef a toujours raison.


I-ii Jai dit toujours.
II Ensuire, relire le premire rgle.

\end{enumerate}
\item Ensuire, relire le premire rgle.
\end{enumerate}
Un peu de texte, pour se reposer de toutes

Un peu de texte, pour se reposer de


toutes ces numrations, puis on reprend.
III Pour nir, vive le chef !

ces numrations, puis on reprend.


\begin{enumerate}[resume]
\item Pour finir, vive le chef !
\end{enumerate}

E . Listes personnalises
Cet exemple illustre quelques options, comme label pour choisir la faon dont ltiquette est
fabrique partir du numro. Dans ce cas, une toile aprs \Roman ou tout autre commande dafchage de compteur, est automatiquement remplace par le nom de compteur appropri (enumi,
enumii, etc. suivant le niveau). Par ailleurs, label* insre le le numro du niveau de liste prcdent devant celui du niveau courant. Enn, resume permet de reprendre la liste prcdente, en
conservant une numrotation continue.
Le module enumitem propose bien dautres possibilits, pour lesquelles je renvoie sa documentation.
Attention, ce module est incompatible avec loption french de babel, car les deux essaient de
A
modier les environnements de liste de LTEX (enumitem pour les rendre congurables, et babel
pour les adapter aux usages du franais). Pour pouvoir utiliser enumitem dans un document fran-

c-perso.tex r --

r --

. Flottants

ais, il faut malheureusement renoncer aux rglages des listes par babel en incluant la ligne
\frenchsetup{StandardLists=true}

dans son prambule aprs le chargement de babel avec loption french.

. Flottants
A
Par dfaut, LTEX dnit deux types de ottants : figure et table. Les environnements associs
ne prennent en charge que le placement du ottant et la production du titre. Il faut faire la mise
en page la main, par exemple en plaant un \centering dans chaque gure ou table pour les
centrer.

\floatsetup[type]{option=valeur,

...}

\DeclareNewFloatType{nom}{option=valeur,

...}

Il est trs fastidieux, et source derreurs, de recopier la main les commandes de mise en page
chaque gure. Heureusement, il est possible dautomatiser ceci grce au module floatrow et sa
commande \floatsetup. Cette dernire prend un certain nombre doptions, que je ne dtaillerai
pas ici : je renvoie la documentation, comme dhabitude dans ce chapitre.
Par ailleurs, il est possible de crer de nouveaux types de ottants, pour des exemples, des codes
source, etc. Pour la cration du prsent polycopi, floatrow a t utilis, ainsi que les commandes
listes au source ..
\DeclareNewFloat{fltexa}{name=\bsc{Exemple}}
\DeclareNewFloat{fltsrc}{name=\bsc{Source}}
\numberwithin{fltexa}{chapter}
\numberwithin{fltsrc}{chapter}
\floatsetup[fltexa]{precode=rule, midcode=rule}
\floatsetup[fltsrc]{precode=rule, midcode=rule}
\floatsetup[figure]{justification=centering}
\floatsetup[table]{justification=centering}

S . Cration et gestion des types de ottants dans ce poly

. Qui ne fonctionne quavec une version susamment rcente de babel.


. http://ctan.org/pkg/floatrow

c-perso.tex r --

Prsentations vidoprojetes
Le contenu de ce chapitre, ayant t trait seulement une semaine avant lexamen, ne gure pas
au programme, qui est dj bien assez charg comme a. En consquence, il ne sera pas dvelopp dans le prsent polycopi. Le lecteur intress est invit se reporter aux diapos utilises en
cours pour une introduction, et la documentation ocielle (chier beameruserguide.pdf) de
la classe beamer pour tous les dtails.

. http://ctan.org/pkg/beamer

c-beamer.tex r --

You might also like