Sie sind auf Seite 1von 328

Tout

ce que vous avez


toujours voulu
savoir
sur LATEX
sans jamais os er
le demander
1.5
Ou comment utiliser LATEX
quand on ny connat goutte

Vincent Lozano

Framasoft a t cr en novembre 2001 par Alexis Kauffmann. En janvier


2004 une association ponyme a vu le jour pour soutenir le dveloppement du rseau. Pour plus dinformation sur Framasoft, consulter http://www.framasoft.
org.
Se dmarquant de ldition classique, les Framabooks sont dits livres
libres parce quils sont placs sous une licence qui permet au lecteur de disposer des mmes liberts quun utilisateur de logiciels libres. Les Framabooks
sinscrivent dans cette culture des biens communs qui, linstar de Wikipdia,
favorise la cration, le partage, la diffusion et lappropriation collective de la
connaissance.
Le projet Framabook est coordonn par Christophe Masutti. Pour plus dinformation, consultez http://framabook.org.

Copyright 2008 : Vincent Lozano, in Libro Veritas Copyright 2013 : Vincent


Lozano, Framasoft (coll. Framabook)
Tout. . . sur LATEX est plac sous licence Art libre.
ISBN : 979-10-92674-00-2
Dpt lgal : juin 2013, Framasoft
Pingouins : LL de Mars, Licence Art Libre
Couverture : cration par Nadge Dauvergne, Licence CC-By
lillustration de la couverture est base sur un dessin original
de Duane Bibby pour le comprehensive TEX archive network (CTAN).
Merci donc http://www.ctan.org.

Imprim en France, en partenariat avec Atramenta, chez un


imprimeur certi ImprimVert (http://atramenta.net).
Cette uvre est mise disposition selon les termes de la Licence Art libre.
http://creativecommons.org/licenses/by/2.0/fr

Enfin voil deux jeunes corps enlacs qui jouissent de leur jeunesse en
fleur ; dj ils pressentent les joies de la volupt et Vnus va ensemencer
le champ de la jeune femme. Les amants se pressent avidement, mlent
leur salive et confondent leur souffle en entrechoquant leurs dents. Vains
efforts, puisque aucun des deux ne peut rien dtacher du corps de
lautre, non plus quy pntrer et sy fondre tout entier. Car tel est
quelquefois le but de leur lutte, on le voit la passion quils mettent
serrer troitement les liens de Vnus, quand tout ltre se pme de
volupt. Enfin quand le dsir concentr dans les veines a fait irruption,
un court moment dapaisement succde lardeur violente ; puis cest un
nouvel accs de rage, une nouvelle frnsie. Car savent-ils ce quils
dsirent, ces insenss ? Ils ne peuvent trouver le remde capable de
vaincre leur mal, ils souffrent dune blessure secrte et inconnaissable.
Lucrce De natural rerum, Livre IV

Introduction
Mieux vaut la malice dun homme
que la bont dune femme 1 .
Lecclsiastique Si 42 14.

Il tait une fois...


Tout a commenc lorsquau tout dbut des annes 1990, jutilisais sur un ordinateur PC 286 une version du logiciel Word Perfect
pour minitier ce quon appelait alors le traitement de texte .
Ce logiciel qui existe toujours, dit par la socit Corel proposait lpoque sous le dsormais clbre MS-DOS, une interface
compose dun vague aperu du document, et surtout laissait lutilisateur la possibilit de voir les codes cest--dire de visualiser
le document avec une sorte de langage balises en permettant un
contrle trs souple.
1. Les pigraphes de ce document sont tires de lAncien et du Nouveau
testament. Ces citations sont insres par pure provocation de ma part, et ont
parfois un lien avec le titre du chapitre.

iii

iv
Un peu plus tard, avec la prolifration de Windows 3.1 et lengouement soudain et bien nautel pour les interfaces graphiques, je
me laissais convaincre faible que jtais dutiliser le logiciel de
traitement de texte devenu trs clbre aujourdhui dans sa version
dalors : la version 2.0 (avec une petite lettre derrire qui avait toute
son importance lpoque)... Cette version, je ne lappris quun peu
plus tard, avait la particularit intressante de comporter un bug
trs srieux qui empchait partir dun certain volume de donnes,
la sauvegarde ! Il ny a avait alors aucune solution pour sauvegarder ni rcuprer son document ; les plus teigneux dentre nous se
hasardaient supprimer quelques lignes et tentaient nouveau une
sauvegarde, mais en vain...
cette poque o les logiciels dits par la socit dont nous
tairons le nom ici, faisaient lobjet de railleries non dissimules 2 , la
plupart des utilisateurs qui mentouraient acceptait malgr tout la
situation : il tait normal dutiliser des logiciels qui se vautraient
lamentablement et notoirement sans crier gare. Cette particularit a
fait natre en moi une certitude : je naccepterai pas dutiliser de tels
logiciels. Jtais alors lve ingnieur et je pressentais quune partie
de mon travail serait consacre llaboration de documents et
lutilisation de systmes informatiques en gnral, il me fallait des
outils robustes pour y parvenir.
Cest au cours de mon DEA (quon appelle aujourdhui master
recherche) luniversit Jean Monnet et lcole des Mines de
Saint-tienne que jai dcouvert la fois Unix (dans sa version Solaris) puis Linux. Cest alors que le mot latque fut lch pas
loin de moi au dbut de ma thse (1993-94). Il tait apparemment
question dun logiciel indispensable pour produire des formules mathmatiques, et surtout il semblait vident que LATEX tait le choix
incontournable pour produire des documents scientiques. vrai
dire la question navait mme pas lair de se poser !
Jentrepris donc dinstaller cette chose qutait LATEX la
fois sur un systme Mac avec une distribution nomme OzTEX et
sur un systme Solaris, avec la distribution fournie par lassociation
Gutenberg. Il avait fallu pour cela soudoyer ladministrateur systme
pour quil accepte de crer un utilisateur privilgi texadm dont le
but tait dadministrer la distribution...
2. Parmi celles-ci, mme si elles napparurent que quelques annes aprs, on
pourra noter la clbre intervention du patron de General Motors en rponse
une provocation de Bill Gates et le non moins clbre Pige dans le cyberespace de Roberto Di Cosmo.

v
Dbut 1994, je commenais ma thse avec bien videmment la
ferme intention de la rdiger avec LATEX. Courant 1995, enthousiasm par ce que je dcouvrais, jentrepris de rdiger un guide dinitiation LATEX pour mes collgues de laboratoire, guide qui est
lorigine du prsent manuel. Cest au cours de lanne 1997, aprs
environ deux ans de pratique et dinitiation au monde de la typographie, que je me confortais dans lide que LATEX tait eectivement
le logiciel de choix pour la rdaction dun document srieux :
contrle global de la mise en page, gestion de la bibliographie, des
index (nom communs et auteurs), lgret des chiers manipuls et
surtout : la beaut du rsultat. Depuis, cest pour moi largument le
plus fort et le plus irrfutable pour utiliser LATEX.
Aujourdhui matre de confrence en informatique lcole nationale dingnieurs de Saint-tienne, jutilise LATEX pour la rdaction de documents scientiques et de supports pdagogiques. Aprs
maintenant plusieurs annes de pratique, je continue apprendre et
dcouvrir, tout en tant encore bloui par lensemble des extensions
proposes par les contributeurs du projet, ensemble dextensions qui
font de LATEX un joyeux bazar, mais aussi un outil extraordinaire
voluant dans le sens de la vritable ergonomie 3 , un outil unique
dont le souci permanent est la belle ouvrage .

Organisation du manuel
Ce manuel est une introduction au traitement de texte LATEX ;
il ne sagit pas dun manuel de rfrence, mais il a pour but de
donner les bases pour utiliser LATEX et si possible dy prendre got.
Ainsi trouvera-t-on les informations ncessaires pour commencer en
LATEX et quelques conseils sur la rdaction des documents. Pour
votre confort, nous avons eu lide lumineuse de diviser ce manuel
en chapitres et annexes. La premire partie prsente les bases de
LATEX :
Principes de base expose les concepts fondamentaux de LATEX
lire imprativement pour comprendre le reste ;
Ce quil faut savoir prsente les outils standard, ceux quil faut
connatre pour rdiger un document simple ;
Mathmatiques ou comment produire des quations ;
3. Pas celle qui consiste ajouter une entre dans un menu, ou un son
lapparition dune bote de dialogue.

vi
Un pas vers la sorcellerie pntre insensiblement dans les rouages de LATEX ; lire si vous voulez utiliser LATEX de manire
satisfaisante ;
Graphisme permet de comprendre comment insrer des graphiques dans vos documents ;
Documents scientifiques donne quelques conseils utiles pour rdiger des articles, des bibliographies, produire des index et
des prsentations ;
Documents en franais fournit quelques notions lmentaires de
typographie et prsente les principaux aspects du package
french ;
vous de jouer ! une conclusion sous forme de conseils pour chercher des informations sur TEX et LATEX.
La deuxime partie a pour but daborder les aspects plus complexes de LATEX en prenant comme prtexte dexpliquer comment ce manuel a t produit. Ne la lisez pas avant davoir lu la premire... Toute exposition mme non prolonge la deuxime
partie peut provoquer des troubles du comportement et des traumatismes irrversibles.

Viennent ensuite les annexes :


Gnrer des documents en PDF comme son nom lindique explique la mthode utilise pour gnrer la version pdf de ce
manuel ;
Mmento est un fourre-tout qui propose une liste non exhaustive
dextensions utiles, les raccourcis de AucTEX, et la conguration de aspell pour emacs ;
Symboles une liste des symboles mathmatiques disponibles en
standard et avec lextension amssymb.
Il est conseill de lire dans lordre les premiers chapitres jusquaux
mathmatiques. Les suivants peuvent se lire indpendamment les
uns des autres. Encore une fois, la deuxime partie du manuel nest
lire quaprs avoir matris les concepts de base. Un index en n de
document constitue un bon point dentre pour retrouver des informations. Enn, linstar des auteurs de la FAQ franaise de LATEX,
je nai pas fait deort particulier pour traduire systmatiquement
tous les termes du jargon de LATEX et de linformatique en gnral.

vii

Ce quil faudrait que vous sachiez


La lecture de ce manuel qui sadresse aux dbutants, ne demande
aucun pr-requis propos de LATEX. Le lecteur devra cependant possder une connaissance de base dun systme dexploitation en tant
quutilisateur, cest--dire savoir manipuler des chiers. tre capable
de crer un chier PostScript encapsul sur son systme, partir
dun logiciel de dessin ou de manipulation dimage, est galement
souhaitable.

Ce que vous ne saurez pas


Ce fabuleux manuel que vous avez entre les mains soure tout
de mme de quelques lacunes ; parmi celles-ci :
il manque une explication claire de la manire dont TEX et
LATEX grent les fontes. Vous ne trouverez dailleurs nulle part
le mot METAFONT;
vous napprendrez pas comment installer et administrer une
distribution LATEX sur un systme Unix ;
vous ne trouverez pas de catalogue ou dinventaire des
extensions existantes, utiles ou inutiles, compatibles ou incompatibles, etc. ;
la question de luf ou la poule est galement occulte, ainsi
que celle des liens entre Dieu et la science ;
...
Il est important de ne pas fonder de faux espoirs sur le contenu
de ce manuel : son titre est un mensonge hont.

TEX ?
Le mathmaticien Donald Ervin Knuth qui lon doit de
nombreux ouvrages de mathmatiques et dalgorithmique (notamment The Art of Computer Programing [8]) a conu dans les annes 70 un systme de traitement de texte nomm TEX aprs avoir
t du par la manire dont ses articles taient imprims par les
systmes du moment. TEX accessible au public depuis le dbut
des annes 80 est un environnement complexe de programmation compos dun processeur de macro (macro processsor ) et de

viii
quelques centaines de primitives. Un premier ensemble de macros
pr-compiles est apparu assez rapidement sous le nom de format
plain.
On pourra noter que TEX nest ni un traitement de texte (Knuth
le nomme typesetting system que lon pourrait traduire par systme de composition) ni un langage de programmation compil.
Voici quelques citations de Knuth propos de TEX 4 :

Des mots anglais comme technology sont drivs


de racines grecques commenant par les lettres ... ; ce
mme mot grec voulant dire la fois art et technologie.
Do le nom TEX, qui est la forme en majuscules de .

Au sujet de la prononciation du X de TEX :

[...] Cest le son ch en allemand comme dans ach ;


cest le j espagnol [...]. Lorsque vous le dites correctement votre ordinateur, lcran doit devenir lgrement
humide.

Votre humble serviteur se contente lui de le prononcer TeK pour


contrecarrer laspect caoutchouteux et viter davoir nettoyer son
cran rgulirement.
Enn pour ce qui est du logo lui-mme Knuth fait remarquer que
ce dplacement du E est l pour rappeler quil sagit de typographie,
et insiste sur le fait que dans une situation o lon veut parler de
TEX sans avoir les moyens dabaisser le E, il faudra crire TeX .
La version actuelle de TEX est 3.1415926 (les versions comme
vous lavez compris tendent vers ) ; dans la prface de son livre
TEX : the program Knuth estimait que le dernier bug avait t
trouv et corrig le 27 novembre 1985 et proposait une rcompense
de 20,48 $ qui en trouvait un nouveau. Aujourdhui la somme de
dollars hexadecimaux a t ge 327,68 $. Les amateurs de puissances de 2 apprcieront...
4. Tir du chapitre introductif The Name of the Game du TEXBook.

ix

LATEX ?
En 1985, quelques annes aprs la diusion publique de TEX, Leslie Lamport cre un format compos de macros permettant davoir
une vision de plus haut niveau dun document, appel LATEX et portant le numro de version 2.09. Aujourdhui, LATEX est un standard
de fait, et seuls quelques sorciers produisent encore des documents
uniquement avec TEX. Cependant, LATEX tant une surcouche de
TEX contenant donc des appels des macros de TEX il est
parfois utile de connatre quelques-uns des concepts de TEX pour se
tirer dun mauvais pas. Voici ce que dit Lamport ce propos dans
son livre [10] :
Imaginez LATEX comme une maison dont la charpente
et les clous seraient fournis par TEX. Vous nen avez pas
besoin pour vivre dans la maison, mais ils sont pratiques
pour y ajouter une nouvelle pice.

Un peu plus loin :


LATEX a t conu pour permettre un auteur de faire
abstraction des soucis de mise en page, et se concentrer sur
lcriture. Si vous passez beaucoup de temps sur la forme,
vous faites un mauvais usage de LATEX.

Aujourdhui et depuis 1994, une quipe mi-europenne mi-amricaine (autour de Frank Mittelbach) a pris en main le dveloppement de LATEX ; la version de LATEX parue en 1994 se nomme
LATEX 2 . Le but long terme est de concevoir un systme nomm
LATEX3.

Licence
On peut souligner que TEX et LATEX sont des logiciels faisant partie de la famille des logiciels libres et sont donc entre autres
gratuits. Ce qui caractrise les logiciels libres (free software) est galement laspect ouvert des logiciels. Il est donc possible davoir les

x
sources Web 5 de TEX. Les macros de LATEX sont quant elles distribues sous forme de code source TEX. Le fait de pouvoir obtenir les
sources dun logiciel peut sembler secondaire la plupart des utilisateurs ; il faut comprendre que cest parce que rien nest cach que
lamlioration de lexistant et la cration dextensions sont possibles.
Le fait quun logiciel soit libre ne veut pas dire quon puisse en
faire tout fait ce que lon veut. Il reste la proprit de son auteur et toute modication doit tre documente ; chacune de ces
modications doit galement donner lieu un nom de chier dirent de celui du chier initial avant modication. Ceci pour assurer cohrence et portabilit au systme (voir ce sujet ftp://ftp.
lip6.fr/pub/TeX/CTAN/macros/latex/base/lppl.txt pour la licence de LATEX 2 ).

Cinq bonnes raisons pour ne pas utiliser LATEX


Il existe plusieurs raisons pour lesquelles il est impratif de
ne pas utiliser LATEX :
1. vous utilisez un traitement de texte uniquement pour faire
vos cartes de vux, votre courrier, pour noter quelques ides,
etc. ;
2. vous adorez les souris (1 ou 3 boutons indiremment) et vous
pensez que la seule manire dcrire des quations est de les
utiliser (les souris) de manire intensive ;
3. vous pensez quUnix cest prise de tte et pas convivial
et/ou vous avez une aversion particulire pour tout langage
de programmation ;
4. vous trouvez normal : 1o que votre logiciel prfr ne puisse
pas lire le document que vous aviez produit avec la version
prcdente, et/ou 2o que la nouvelle version vous oblige
changer de systme dexploitation, et 3o que la nouvelle version dudit systme dexploitation vous oblige changer dordinateur, et 4o que votre nouvel ordinateur...
5. vous ne savez pas o se trouve la touche \ sur votre clavier ;
si vous vous reconnaissez dans une de ces catgories, mieux vaut
vous contenter de votre systme actuel.
5. Le langage Web conu par Knuth est qualifi de langage de
programmation littraire. partir dun document source Web, on peut produire le code Pascal ou C du programme ainsi quune documentation en TEX de
ce code.

xi

Quelques bonnes raisons dutiliser LATEX


Il nest pas question ici de convaincre le lecteur de la supriorit
de TEX et LATEX par rapport un autre systme, de toutes manires,
vous lisez ce manuel, donc vous tes inconsciemment convaincu. Laissons donc la parole au concepteur de TEX :
By preparing a manuscript in TEX format, you will
be telling a computer exactly how the manuscript is to be
transformed into pages whose typographic quality is comparable to that of the worlds nest printers.

D. E. Knuth in the TEXbook [9]

Les documents gnrs par TEX ou LATEX sont dune qualit typographique exceptionnelle (avec possibilit de rglage trs n 6 ), ceci
grce notamment :
un dessin de fontes trs soign ;
des dtails typographiques (tirets, ligatures,...) ;
avez-vous bien regard ces tirets (page 1923) ?
et le fi de n, le ffl de soue ou le fl de tre ?
un algorithme de csure trs performant ;
des formules mathmatiques particulirement russies ;
...
Dautre part, LATEX est un des rares logiciels de traitement de
texte orient vers la production de documents scientifiques. Car
outre les quations et autres formules, LATEX possde un nombre
important de fonctionnalits axes autour de la rdaction darticle
et la gnration de bibliographie et dindex.
Enn, LATEX est particulirement adapt la production de gros
documents. Pas seulement parce que la manipulation dun document
LATEX exige par essence peu de mmoire, mais parce que les mcanismes de macros et de rfrence croise (cross reference en anglais)
permettent de garder un contrle global et trs souple du document.
rfrence croise : LATEX permet de faire rfrence de manire
symbolique toute partie du document faisant lobjet dune
numrotation. Ainsi, le numro des titres, gures, tableaux,
6. titre indicatif lunit interne de mesure de TEX est le scaled point, not
sp dans le TEXbook, qui vaut 1/65536 points ; 1 point valant environ 1/72e de
pouce, 1 pouce valant 2.54 cm, lunit de base est approximativement 50 , ce
qui laisse de la marge vis vis de la rsolution des imprimantes actuelles.

xii
quations, pages, rfrences bibliographiques, items dnumration, thormes,... peut tre mentionn plusieurs endroits
dans un document de manire trs simple, sans se soucier du
numro lui-mme.
macros : sans doute laspect le plus puissant de LATEX. Il faut savoir que tout processus qui mne la gnration dun document est une squence de commandes ou macros. Chaque
utilisateur peut donc modier lallure dun document, en modiant lune des ces macros. On peut bien videmment dnir
ses propres macros pour mettre en page une partie spcique
dun document. Lide forte autour des macros est quon peut
a priori sparer le fond de la forme lors de la rdaction dun
document.

Les limites du Wysiwyg


LATEX est le contraire dun Wysiwyg 7 , puisquun source LATEX est
un document texte compos du texte lui-mme et des commandes de
mise en page. Lamport prsente ce type dapproche comme tant
une mise en page logique par opposition la mise en page visuelle 8 .
On pourrait cependant dire que LATEX est un Wywsiewyg (what
you will see is exactly what you get) puisquaprs compilation on
peut visualiser lcran une image exacte du document futur sur
papier.
Voici donc un exemple 9 parmi dautres qui met en vidence les
limites du Wysiwyg et les avantages de la mise en page logique :
supposons que dans un document apparaisse un certain nombre
de fois, une fonction quelconque ayant deux arguments. La notation tant un point dlicat dans llaboration de documents scientiques, on pourra dnir une macro \mafct permettant de produire une telle fonction. Ainsi les squences \mafct{1}{2.5} et
\mafct{x}{t} produiront respectivement F, (1, 2.5) et F, (x, t).
7. Pour what you see is what you get terme dsignant les logiciels permettant lutilisateur de voir lcran ce quil obtiendrait sur le papier. Le
premier traitement texte Wysiwyg serait Bravo mis au point sur la machine Alto
du Xerox Paolo Alto Research Center en 1974.
8. Pour faire un peu de mauvais esprit, les logiciels du type Wysiwyg ont
dailleurs t qualifis par Kernighan (dixit Lamport dans son livre sur LATEX)
de what you see is all what youve got !
9. Lamport propose un exemple analogue celui-ci dans son manuel.

xiii
Mais si lon a besoin de changer de notation, il sura de rednir la commande \mafct pour produire aux endroits ncessaires :
F [1, 2.5] et F [x, t]. Et le tour est jou !
Un autre exemple : imaginons que votre document comporte
beaucoup de mots techniques que vous voulez mettre en vidence
dune manire particulire. Vous crirez alors dans votre document
\jargon{implmentation} en ayant pralablement dni la macro
\jargon de manire ce quelle mette en italique le mot du vocabulaire technique. Les 235 mots de jargon auxquels vous fates rfrence
dans votre document pourront tre mis en vidence autrement quen
italique si vous changez davis, et cela sans avoir passer sur les 235
occurrences des mots du jargon, mais juste en changeant la dnition de la macro \jargon. Avec un peu dentranement vous arriverez
mme faire en sorte que cette macro insre automatiquement le
mot du jargon dans lindex de votre document...
Voici un exemple un peu plus tordu : dans le titre du paragraphe
intitul Cinq bonnes raisons de ne pas [...] un peu plus haut
dans ce chapitre, je nai pas crit Cinq 10 en toutes lettres dans
le document source. En ralit le titre du paragraphe est produit
par : \ref{nbraisons} bonnes raisons... qui ache en franais le nombre correspondant aux nombres de bonnes raisons de ne
pas utiliser LATEX. Si jamais javais rajouter dautres entres dans
cette liste de bonnes raisons, il ne sera pas ncessaire de refaire la
numrotation...
Vous trouverez le long de ce manuel, dautres exemples mettant
en vidence, les faiblesses du Wysiwyg. Ce nota , vous avertissant dun point important en est un autre exemple. Car au moment
o lauteur tape ces lignes, la prsence du panneau danger est un
dtail il sagit simplement dun nota. Et lauteur a crit :
\begin{nota}
Vous trouvez le long de ce manuel...
\end{nota}

Pour en nir avec les macros, on peut dire quil sagit dune gnralisation des styles du clbre logiciel Mot de la socit
Micrologiciel . La lecture de ce document et en particulier la
deuxime partie devrait vous convaincre que les macros permettent
daller bien au-del de ces fameux styles...
Pour les accros du Wysiwyg, une quipe de dveloppeur a mis en
uvre une version What you see is what you Mean (sic) de LATEX
10. L non plus dailleurs.

xiv
nomm LyX, dont je vous invite prendre connaissance http:
//www.lyx.org.

Comment imprimer ce manuel ?


Avec une imprimante 11 , en utilisant la version papier produite
partir de ce document, version prvue pour tre imprime sur du
papier au format A5.

Que pouvez-vous faire de ce manuel ?


Nom de lauteur : Vincent Lozano ;
Titre : Tout ce que vous avez toujours voulu savoir sur LATEX sans
jamais avoir os le demander ;
Date : 22 novembre 2013
Copyleft : ce manuel est libre selon les termes de la Licence Art
Libre (LAL) :
http://www.artlibre.org
La LAL stipule en rsum que vous pouvez copier ce manuel. Vous
pouvez galement le diuser condition :
dindiquer quil est sous la LAL ;
dindiquer le nom de lauteur de loriginal : Vincent Lozano
et de ceux qui auraient apport des modications ;
dindiquer que les sources peuvent tre tlchargs sur http:
//cours.enise.fr/info/latex.
Enn vous pouvez le modier condition :
de respecter les conditions de diusion nonces ci-dessus ;
dindiquer quil sagit dune version modie et si possible la
nature de la modication ;
de diuser vos modications sous la mme licence ou sous
une licence compatible.

11. Arf arf (comme disait Frank Zappa).

xv

En avant !
Comme beaucoup de logiciels puissants, LATEX nest pas toujours
simple utiliser. En fait lorsque lon va dans son sens, LATEX est toujours agrable et permet eectivement comme le souligne Lamport
de ne pas se soucier de problmes de mise en page. Lorsque lon veut
changer un comportement, et que la solution consiste choisir une
autre option dune commande, tout va encore trs bien. Cependant,
mme si les choix de LATEX rpondent des conventions en vigueur
chez tous les bons imprimeurs, il arrive un jour o lon dsire avoir
une mise en page particulire quapparemment LATEX est incapable
de fournir. ce stade, plusieurs solutions sorent vous :
inclure un package qui rpond votre problme (LATEX tant
un systme ouvert, une multitude de packages plus ou moins
standardiss sont disponibles pour raliser des oprations varies voire farfelues);
demander un TEXnicien 12 de vous dpanner ;
si les deux premires solutions sont inecaces, vous navez
plus qu faire le dtective et mettre le nez dans le code 13
pour trouver la commande qui vous fait du tort et la modier. Vous aurez besoin ce stade de connaissance de la
premire couche du systme, savoir TEX. On touche sans
doute ici un des dfauts de LATEX : si dautres logiciels sont
incapables de faire des choses compliques, il est parfois difcile de faire faire LATEX des choses simples (vous en serez
probablement convaincu aprs la lecture de la deuxime partie de ce manuel).

Conventions typographiques
Certaines conventions utilises dans ce manuel ncessitent dtre
quelque peu claircies. Les extraits de code LATEX qui parsment le
document peuvent apparatre comme ceci :
% attention les yeux
Ceci est \emph{dj} du code \LaTeX.
12. ou un TEXpert, mais cest assez rare.
13. Cest la solution la plus plaisante pour ceux qui ont certaines vellits pour
xxxxx
pisser du code...

xvi

% attention les yeux


Ceci est \emph{dj} du
code \LaTeX.

0.1

Le choix sest port sur la fonte machine crire de LATEX. Le


code est galement souvent prsent sous la forme suivante, avec un
petit numro sur la barre centrale auquel on se rfre parfois :

Ceci est dj du code LATEX.

Certaines parties sont prsentes sous forme de notes pour


claircir un point sans que la lecture soit indispensable au premier abord.
Si la lecture est indispensable, on aura recours au pictogramme
ci-contre pour attirer lattention du lecteur distrait...

Les logiciels et les packages de LATEX sont typographis comme indiqus ci-avant. Les mots en anglais sont produits like this. Pour
mettre en vidence les parties gnriques dune commande on utilisera hcette notationi. Par exemple :
Ceci est \emph{htexte mettre emphasei} du code \LaTeX.
Quelques rares fois sont insres des commandes Unix, comme ceci :
grep -wi bidule /tmp/truc.dat | sort -n
On trouve mme dans une des annexes, des commandes pour emacs :
M-x doctor

Et, comble de lhorreur, des extraits de Makefile :


bidule : bidule.o truc.o
7 gcc -o $@ $^

Ch. 3
p. 43

Dans la version papier apparaissent des renvois sur des chapitres ou


des paragraphes, comme celui-ci dirigeant le lecteur vers la production de formules mathmatiques avec LATEX.

xvii

Remerciements
La rdaction de cet ouvrage qui est initialement le guide local
du laboratoire dinformatique graphique et dingnierie de la vision
situ Saint-tienne, a dbut en 1995. Je tiens ici remercier
les membres de cette quipe de recherche qui mont fait part de
leurs remarques et encouragements. Les personnes participant au
forum fr.comp.text.tex mont indirectement apport normment
dinformations qui ont enrichi ce document, quelles en soient ici
remercies.
Je voudrais galement remercier Benjamin Bayart qui ma aid
crer certaines des extensions utilises dans ce manuel, en particulier la version initiale de la bote entourant les mini tables des
matires en tte de chapitre ; ainsi que Guillaume Connan pour ses
remarques sur lannexe concernant le format Pdf et pour ses encouragements.
Un merci particulier Denis Bitouz pour sa lecture attentive
ses conseils prcieux et les nombreuses corrections quil a apportes
la premire partie du manuel. Denis ma mis sur la voie de la
rdemption, jai fait une croix sur a4wide, eqnarray, et toutes ces
horreurs qui faisaient de moi un pauvre pcheur...
Je tiens remercier particulirement Didier Roche et Alexis
Kauffmann de FramaSoft de mavoir accord leur conance pour
crer un nouveau volume dans la collection FramaBook. Un grand
merci au groupe de relecture men par Vincent Vim . Ce groupe
et en particulier Papiray et Antoine Blanche non content de
dbusquer de nombreuses coquilles qui se tapissaient sournoisement
au fond des paragraphes, a galement corrig de vilaines rptitions.
Je tiens donc les remercier ici bien chaleureusement, dautant que
les changes ont t fructueux : laccentuation correcte de Gense,
le genre de nota, de longues discussion sur pr-requis et en-tte et
jen passe...
La lecture des grands classiques de la littrature autour de
TEX et LATEX ma inconsciemment inuenc dans la rdaction de ce
document. La lecture du TEXbook de Knuth [9] ma bien videmment donn lide de crer le panneau danger , la lecture quasi
compulsive du LATEX Companion de Goossens, Mittelbach et
Samarin [6] a trs certainement inuenc beaucoup de passages de
cet ouvrage aussi bien pour le fond que la forme. Enn la lecture
de plusieurs manuels en ligne a galement d orienter certains de

xviii
mes choix (Le Not So Short Introduction to LATEX possde par
exemple un chapitre que lon peut traduire par ce quil faut savoir )...
Avant de commencer je tiens signaler que mme si ce document a mis plusieurs annes mrir, il est dans un style tout fait
douteux. La preuve, sur ma machine, la commande :
grep -E -i on peut|permet *.tex | wc -l
donne 343 (plus dune occurrence par page) ce qui dnote un style
assez pauvre.

Bonne lecture et bon courage 14 !

14. Cette ligne est une illustration de la mise en page logique, elle est cense
tre au 2/3 du blanc restant sur la page, quelle que soit la taille de ce blanc bien
sr.

Sommaire
I

Tout sur LATEX

1 Principes de base
1.1 Installation . . . . . . . . . .
1.2 Cycle de production . . . . .
1.3 Structure type dun document
1.4 Cest parti ! . . . . . . . . . .
1.5 Premiers outils . . . . . . . .
1.6 Premires erreurs . . . . . . .

. . . .
. . . .
source
. . . .
. . . .
. . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

3
4
6
9
11
15
15

2 Ce
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

19
20
23
29
30
31
31
32
34
36

quil faut savoir


Mise en vidence . . .
Environnements . . . .
Notes de marge . . . .
Titres . . . . . . . . .
Notes de bas de page .
Entte et pied de page
Flottants . . . . . . .
Rfrences . . . . . . .
Fichiers auxiliaires . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

xix

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

xx
2.10 O il est question de csure . . . . . . . . . . . . . .

38

3 Mathmatiques
3.1 Les deux faons dcrire des maths
3.2 Commandes usuelles . . . . . . . .
3.3 Fonctions . . . . . . . . . . . . . .
3.4 Des symboles les uns sur les autres
3.5 Deux principes importants . . . . .
3.6 Array : simple et ecace . . . . . .
3.7 quations et environnements . . .
3.8 Styles en mode mathmatique . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

43
44
44
47
49
51
52
54
56

4 Un
4.1
4.2
4.3
4.4
4.5
4.6

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

59
60
63
68
70
79
83

pas vers la sorcellerie


Compteurs . . . . . . .
Longueurs . . . . . . . .
Espaces . . . . . . . . .
Botes . . . . . . . . . .
Dnitions . . . . . . . .
Mais encore ? . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5 Graphisme
5.1 Apritifs . . . . . . . . . . . . . .
5.2 Du format des chiers graphiques
5.3 Le package graphicx . . . . . . . .
5.4 Quelques extensions utiles . . . .
5.5 Utiliser make . . . . . . . . . . .
5.6 part a . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

85
86
86
87
90
95
97

6 Documents scientifiques
6.1 Article . . . . . . . . . .
6.2 Bibliographie . . . . . .
6.3 Index . . . . . . . . . .
6.4 Diviser votre document

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

99
100
100
106
109

documents en franais
Le problme des lettres accentues
Rdiger en franais avec LATEX . .
Le package babel et la typographie
Courrier et fax . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

111
112
112
113
118

7 Des
7.1
7.2
7.3
7.4

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

xxi
8 vous de jouer !
8.1 Livres et autres manuels . . . . . . . . . . . . . . . .
8.2 Local . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3 ETp, Oube et niouses . . . . . . . . . . . . . . .

II

Tout sur ( Tout sur LATEX)

9 Outillage ncessaire
9.1 Hercule Poirot . . . . . . . . . . .
9.2 Outils de bas niveaux . . . . . . .
9.3 Structures de contrle et tests . . .
9.4 Fontes . . . . . . . . . . . . . . . .
9.5 Listes et nouveaux environnements
9.6 Des environnements qui mettent en

. . . .
. . . .
. . . .
. . . .
. . . .
bote

123
124
124
125

127
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

133
134
136
139
145
151
159

10 Cosmtique
10.1 Allure de lindex . . . . . . . . . . . . .
10.2 Allures des titres . . . . . . . . . . . . .
10.3 Gomtrie . . . . . . . . . . . . . . . . .
10.4 En-tte et pied de page . . . . . . . . .
10.5 Environnements verbatim . . . . . .
10.6 About those so called french guillemets
10.7 Une bote pour le mini-sommaire . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

163
164
166
173
175
183
187
189

11 De nouveaux jouets
11.1 Quelques bricoles
11.2 Des nota . . . . .
11.3 Des citations . .
11.4 Des lettrines . . .
11.5 Un sommaire . .
11.6 Un glossaire . . .
11.7 Des onglets . . .
11.8 Exemples LATEX .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

197
198
204
209
213
218
220
224
231

III

Annexes

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

239

A Gnrer des pdf


241
A.1 Principe gnral . . . . . . . . . . . . . . . . . . . . 242
A.2 Ce qui change . . . . . . . . . . . . . . . . . . . . . . 242
A.3 Trucs et astuces . . . . . . . . . . . . . . . . . . . . . 243

xxii
A.4 Hyperliens . . . . . . . . . . . . . . . . . . . . . . . . 245
A.5 Interaction avec psfrag et pstricks . . . . . . . . . . . 246
B Mmento
B.1 Extensions . . . . . . .
B.2 Les chiers auxiliaires
B.3 AucTEX . . . . . . . .
B.4 Aspell . . . . . . . . .

.
.
.
.

251
252
253
254
256

C Symboles
C.1 Symboles standard . . . . . . . . . . . . . . . . . . .
C.2 Symboles de lAMS . . . . . . . . . . . . . . . . . . .
C.3 Symboles du package textcomp . . . . . . . . . . . .

257
258
261
264

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

D Notes de production
269
D.1 Distribution du moment . . . . . . . . . . . . . . . . 270
D.2 Les sources du manuel . . . . . . . . . . . . . . . . . 270
D.3 Compilation . . . . . . . . . . . . . . . . . . . . . . . 271
Bibliographie

273

Glossaire

277

Index

281

I
Tout ce que vous avez
toujours voulu savoir
sur LATEX sans jamais
oser le demander

Chapitre

Sommaire
1.1
1.2
1.3
1.4
1.5
1.6

Installation
Cycle de production
Structure type dun document source
Cest parti !
Premiers outils
Premires erreurs

Principes de base
Lorsquun homme a un coulement
sortant de son corps,
cet coulement est impur.
Le Lvitique Lv 15 2.

e chapitre expose les mcanismes de base de L TEX. Vous y


C
trouverez donc une courte introduction linstallation de L TEX,
une prsentation dune session L T X classique, la structure dun
A

E
document type, des remarques sur les accents, quelques outils
connatre, et enn, une prsentation de lattitude avoir devant
les messages derreurs de compilation.

Principes de base

1.1 Installation

Vous voulez utiliser LATEX ? Il vous faudra installer une distribution correspondant votre systme dexploitation 1 . Les distributions fournissent des programmes permettant dautomatiser la
conguration et linstallation de LATEX, TEX et tous les utilitaires
connexes.
Sous Unix : on trouve encore la distribution teTEX bien que son
dveloppement ait t stopp en 2006. Aujourdhui, sur un
systme Unix, on installe gnralement la TEXLive (http:
//www.tug.org/texlive) ;
Sous MacOS : la distribution de rfrence est MacTEX (http://
www.tug.org/mactex) ;
Sous Windows : le plus simple est sans doute de choisir proTEXt
(http://www.tug.org/protext) qui installe la distribution
MiKTEX (http://www.miktex.org) et quelques outils de dveloppement dont un programme de visualisation de chiers
au format PostScript (gsview).
Il faut parfois ajouter ces distributions (si elles nen contiennent
pas dj un) un diteur de texte puisque vous le dcouvrirez bien
assez tt, utiliser LATEX cest taper du texte et des commandes dans
des chiers :
emacs ou vi sous Unix sont deux diteurs de rfrence qui,
bien que le premier soit nettement suprieur au second, continuent de faire lobjet dune guerre strile entre utilisateurs la
plupart du temps de mauvaise foi ;
kile et texmaker sont des environnements de dveloppement
intgr grce auxquels les utilisateurs dbutants pourront se
sentir laise pour commencer : ils ont en eet la particularit
de centraliser dans une mme interface : dition, compilation
& visualisation. Ces environnements permettent galement
de dcouvrir les commandes de LATEX par lintermdiaire de
menus, botes de dialogue et autres onglets (voir la gure 1.1a
page ci-contre pour en avoir un aperu) ;
TEXnicCenter est lquivalent (aperu la gure 1.1b) sous la
marque la fentre ;
TEXshop et iTEXmax sont les quivalents sous la marque
la pomme
1. Si vous ne savez pas ce quest un systme dexploitation, le vtre est MacOS, si vous ne savez pas quel est exactement le systme de votre machine vous
avez Fentre, sinon vous avez un Unix...

1.1 Installation

1
(a) Kile

(b) TEXnicCenter

Figure 1.1: Deux exemples denvironnement de dveloppement intgr : Kile sous Linux et TEXnicCenter sous Windows. Ils permettent de centraliser dans une mme interface : dition, compilation
& visualisation.

Principes de base

Vous apprendrez galement bien assez vite que la production


dun document avec LATEX consiste traduire (on dit aussi compiler )
un source donc cr par un diteur de texte en un format
destin lachage ou limpression 2 . Il existe donc, plus ou moins
intgrs aux distributions, des outils clbres pour la visualisation
des dirents chiers rsultants de la compilation :
Format PDF : mis part le clbre acrobat reader, il existe sous
Unix des utilitaires permettant de visualiser le format Pdf :
xpdf, evince, ...
Format DVI : xdvi, kdvi sous Unix et yap sous Windows font partie
des programmes permettant de visualiser le rsultat de la
compilation dun chier LATEX ;
Format Postscript : la suite ghostscript disponible sous des noms
qui peuvent varier selon la plateforme, permet de visualiser
des chiers au format PostScript ;
Il faudra veiller ce que la distribution choisie comprenne le
module franais de LATEX assurant la csure (hyphenation
en anglais) correcte des mots. On vrifiera les logs (voir 1.6
page 15) au moment de la compilation dun document pour contrler
le chargement des motifs pour le franais :
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, [...]
dumylang, french , loaded.

1.2 Cycle de production


Mme si LATEX nest pas proprement parler un langage de programmation compil, on peut malgr tout faire une analogie entre
le cycle de production dun document LATEX et le cycle ditioncompilation-excution dun dveloppement de logiciel avec un langage de programmation classique.

1.2.1

dition

Un document source LATEX est un chier texte 3 . Ainsi la manipulation dun chier LATEX ne demande pas de logiciel particulier,
si ce nest un diteur de texte classique. Donc, pour manipuler un
document LATEX :
2. Ces formats sont prsents un peu plus loin dans ce chapitre.
3. Cest--dire un fichier ne contenant que le code des caractres qui le composent.

1.2 Cycle de production

emacs hnom de fichieri.tex &


ou :
vi hnom de fichieri.tex
devrait sure pour entrer dans ce monde sauvage et inconnu quest
la saisie dun document LATEX. Sous Windows, on squipera dun
diteur de texte de son choix 4 . Notez quil est recommand de donner lextension .tex aux sources LATEX.

1.2.2

Compilation

On lance la compilation grce la commande :


pdflatex hnom de fichieri.tex
La compilation gnre un jour ou lautre des erreurs. Il en sera question la section 1.6 page 15. En tout cas, aprs suppression des
erreurs de compilation, on obtient un chier portant lextension pdf
pour portable document format le clbre format cr par la socit
Adobe.
Historiquement, la compilation dun source LATEX crait un document dvi pour device independant. Un tel fichier contient
des informations indpendantes du priphrique de sortie (cran, imprimantes, ...). Il est de type binaire contenant une image du document portable sur tout systme TEX quel que soit le systme dexploitation. Il existe ensuite des programmes permettant soit :
de visualiser le document : dvi bitmap cran ;
de limprimer : dvi langage imprimante ;
de le convertir : dvi fichier PostScript.

La gure 1.2 page suivante illustre les divers programmes entrant


en jeu dans la production du document nal sur une machine Unix.
Il est galement possible de gnrer un document au format
PDF partir dautres compilateurs que pdflatex. Ces utilitaires, pour ne pas les citer, se nomment xelatex et lualatex et constituent aujourdhui deux alternatives permettant de traiter correctement
des fichiers source encods en UTF-8.

1.2.3

Visualisation

La visualisation seectue simplement aprs compilation sans


erreur grce au programme evince en tapant la commande :
4. Il existe une version dEmacs pour Micrologiciel Fentre, avis aux amateurs.

Principes de base

8
.pdf
pdflatex

.tex

evince

.dvi
xdvi

latex

.ps
dvips

1
Figure 1.2: Outils de production sur machines Unix
evince hnom de fichieri.pdf &
il sagit dun logiciel tournant sous linux, trs intuitif, qui donne un
aperu trs lisible du document.
On notera quil nest pas ncessaire de relancer evince aprs
chaque compilation. Il met en effet jour laffichage automatiquement.

1.2.4

Impression

Avec le format pdf, le problme de limpression est dport sur


votre systme dexploitation. Il ny a donc rien en dire de particulier, vous disposez dun chier que vous tes libre dimprimer o bon
vous semble en utilisant les fonctionnalits de limprimante votre
disposition.
En passant par la chane dvi ps il faudra faire appel le
programme dvips :
dvips hnom de chieri.dvi
qui gnrera un fichier au format PostScript. Ce format galement
cr par Adobe, qui peut tre considr comme lanctre du pdf, est
un langage dimpression que les imprimantes reconnaissent aujourdhui
nativement. On peut mme dire que lorsquun fichier est envoy
une imprimante, 9 fois sur 10, ce sont des donnes PostScript qui lui
sont transmises. Il existe de nombreux utilitaires autour du Postscript,
permettant de visualiser, modifier un fichier dans ce format.

1.3 Structure type dun document source

1.3 Structure type dun document source


Nous allons prsenter dans cette section un document type. Tous
les documents LATEX ont en eet une structure commune, de la forme
suivante :
\documentclass[hcOption1 i,hcOption2 i,...)]{hclassei}
\usepackage[hpOption1 i,hpOption2 i]{hpackagei}
...
hprambulei
...
\begin{document}
...
hle textei
...
\end{document}
Ainsi tout document LATEX peut se dcomposer comme suit :
spcication de la hclassei du document ;
prambule :
utilisation de hpackagesi particuliers ;
initialisations et dclarations diverses ;
corps du document : tout ce quon saisira avec ses petits doigs
entre \begin{document} et \end{document}.
Voici quelques dtails sur chacune de ces parties.

1.3.1

Classe du document

La classe est une indication donne LATEX qui va dterminer la


mise en page de certaines parties du document. Suivant la classe utilise, certaines commandes seront disponibles ou non (\chapter disponible pour la classe book mais indisponible pour la classe article,
par exemple). Dautre part, une commande donne aura une signication spcique selon la classe choisie (titres, tables des matires,...). En premire approche 5 , tout document LATEX commence
donc ncessairement par linstruction \documentclass avec entre
accolades une classe de document qui peut-tre :
article pour un article ;
proc pour un article dans le style IEEE proceedings ;
report pour un rapport de plusieurs dizaines de pages ;
5. En ralit on peut insrer dautres incantations magiques avant le
\documentclass...

Principes de base

10

book pour un livre ou une thse ;


letter pour une lettre ;
slides pour produire des transparents
On peut videmment dnir sa propre classe de document. Les options de la classe sont prcises entre crochets et peuvent tre parmi
les suivantes :
11pt,12pt pour changer la taille des caractres de manire
globale ;
twoside pour gnrer un document en recto verso ;
draft pour gnrer le document en mode brouillon ;
...
On pourra donc par exemple, entrer :
\documentclass{article}
pour avoir toutes les options par dfaut (10pt, une colonne, mode
recto,...).
\documentclass[12pt]{article}
pour un article en 12pt (par dfaut la taille est de 10pt), ou encore :
\documentclass[twoside,draft]{report}
pour un rapport en recto verso et mode brouillon.

1.3.2

Le prambule

Le prambule est la zone situe entre la clause \documentclass


et la clause \begin{document}. Cette zone est la zone o lon peut
spcier les extensions que lon veut inclure (voir le paragraphe suivant), linitialisation de variables globales (marges,...), la dnition
de styles (titres, numrotation,...), ou de macros particulires.

1.3.3

Ajout dextension

La commande \usepackage de LATEX pourrait tre compare


une directive #include du langage C. Elle permet de rajouter des
fonctionnalits LATEX sous forme de macros et/ou denvironnement 6 . ce stade, il faut juste noter que lon peut inclure plusieurs
packages en une seule ligne :
\usepackage{hmodule1 i, hmodule2 i, hmodule3 i,...}
6. Ce terme est expliqu au chapitre suivant.

1.4 Cest parti !

11

Si hmodule1 i, hmodule2 i et hmodule3 i ont en commun une option


opt1, on peut entrer :
\usepackage[hopt1i]{hmodule1 i,hmodule2 i, hmodule3 i}

Par contre si loption hopt1i ne concerne que lextension hmodule2i,


il sera ncessaire dentrer les deux lignes suivantes :
\usepackage{hmodule1 i, hmodule3 i}
\usepackage[hopt1i]{hmodule2 i}

Voici deux exemples :

% package graphicx avec option d r a f t et xdvi


\ usepackage [ xdvi , draft ]{ graphicx }
% packages array et s u b f i g
\ usepackage { array , subfig }
Toutes les options (de classe, de packages, ou de commandes)
sont par dfinition des arguments optionnels. On peut donc dj
retenir le fait que tout argument LATEX donn entre crochets [...] est
un argument facultatif.

1.4 Cest parti !


Nous allons tenter dans cette section, de prsenter, partir dun
document ne contenant que quelques commandes de mise en page,
les principes de base de LATEX.

Cette loi est lune des lois de


\emph{Murphy}.
\end{document}

1.1

\documentclass{article}
\begin{document}
Un outil qui vous tombe des
mains
tombe
toujours
dans
lendroit
le plus inaccessible, ou sur le composant
le plus fragile.

Un outil qui vous tombe des


mains tombe toujours dans lendroit le plus inaccessible, ou sur le
composant le plus fragile.
Cette loi est lune des lois de
Murphy.

Cet exemple illustre un certain nombre de principes parmi les plus


importants de LATEX, savoir :
Ligne vierge saut de paragraphe : une ligne vierge indique
LATEX la n dun paragraphe. Ainsi dans lexemple prcdent,

Principes de base

12

le premier paragraphe commence Un outil et nit avec


fragile. . La commande \par est quivalente la ligne
vierge et peut donc galement tre utilise pour commencer
ou nir un paragraphe.
LATEX ignore les sauts de lignes : ce ne sont pas les sauts de
lignes dans le document source qui dnissent les sauts de
lignes dans le document nal. LATEX coupe, indente et justifie automatiquement chaque paragraphe, sauf contre-ordre
de votre part.

\ est le caractre dchappement : il indique LATEX que lensemble de caractres qui suit est une squence de contrle,
cest--dire une commande (ou macro) dans le sens le plus
gnral du terme. Ici, il sagit de mettre en vidence le mot
Murphy. Ceci est eectu grce la commande \emph.
{ et } sont des dlimiteurs de groupe, notions expliques un peu
plus bas.

1.4.1

Quelques caractres sont spciaux

Comme le suggre lintervention du caractre \, il existe dautres


symboles ayant une signication spciale pour LATEX. Il sagit des
10 caractres suivants :
\ $ & % # ^_ { } ~
Voici un petit exemple, utilisant une partie de ces symboles :
% paragraphe sans intrt
\textbf{To be} a subscript : $x_{i+1}$,
or a superscript : $e^{i\pi}$ ?
thats question~1 ! % or question 2 ?

1.2

LATEX ignore les espaces multiples : taper un ou dix huit mille


sept cent quatre vingt quatre espaces est quivalent, comme le
montrent les espaces insrs avant tombe et avant lendroit.
Ceci est aussi vrai pour les sauts de paragraphes : entrer une
ligne vierge ou plusieurs revient au mme.

To be a subscript : xi+1 , or
a superscript : ei ? thats question 1 !

Pour linstant, il faut donc savoir que :


% indique LATEX dignorer le restant de la ligne. Cest donc
le symbole du commentaire (quivalent au // du C++) ;

1.4 Cest parti !

13

~ est lespace inscable 7 , il empche LATEX de faire une csure


cet endroit particulier. Il existe un nombre important de
situations o il est ncessaire dinsrer un caractre inscable
(tout ce qui est du style : figure~4). Cependant, il nexiste
pas de rgles systmatisant lusage dun tel caractre ;
$ est le symbole de dbut et n de formule. Lorsque LATEX
rencontre un $ il commute en mode mathmatique jusquau
symbole $ suivant ;
_ et ^ permettent respectivement de passer en indice et en
exposant. Attention, ces symboles ne sont autoriss quen
mode mathmatique ;
{ et } sont respectivement les caractres de dbut et n
de groupe. Deux types de groupement sont donns titre
dexemple : lun, en mode mathmatique, pour grouper la
sous-formule mettre en indice ou en exposant ; lautre
pour grouper les mots mettre en gras.
On peut produire une partie des caractres spciaux dans le texte
grce aux commandes suivantes :

ch. 3
p. 43

\$ \& \% \# \{ \} \_
qui donnent respectivement : $ & % # { } _. La section 2.2.5 page 28
explique comment produire les autres caractres spciaux (\ ~ ^).

1.4.2

Appel des commandes

Vous avez compris que pour appeler une commande ou macro,


il est ncessaire dinsrer le caractre dchappement escape char
en anglais et de le faire suivre par le nom de la macro que vous
voulez utiliser. Mais comment fait LATEX pour reprer la n du nom
de la macro ? Prenons comme exemple la macro \TeX qui produit le
logo TEX.

\TeX\

hackers.

has some powerful macros.

\LaTeX{} is a document preparation system

1.3

The \TeX book is for \TeX

The
TEXbook
is
for
TEXhackers.
TEX has some powerful macros.
LATEX is a document preparation system

On peut rsumer le mcanisme en deux rgles. Il y a deux types de


caractres qui indiquent LATEX la n du nom de la macro :
7. Voir aussi, le paragraphe 2.10 page 38 sur le contrle de la csure.

Principes de base

14

les espaces ; ils sont cependant ignors dans la production du


document ;
tout caractre autre que les caractres de la catgorie lettre
(alphabet majuscule et minuscule).
Le caractre \ (o est le caractre espace) est appel un
espace de contrle ; cet espace nest jamais ignor par LATEX.
Cest pourquoi : la squence et\\\hop! produira ; et hop ! .
En fait, il est bon de prendre lhabitude dappeler les macros sous la
forme \hfonctioni{hargumentsi} et donc dutiliser la troisime forme
de lexemple prcdent plutt que la deuxime.Cela vite de se poser
le problme de lespace ignor 8 . On crira donc the TEXbook avec
the \TeX{}book et LATEX is a ... avec \LaTeX{} is a ...

1.4.3

Accents

Les franais ont souvent une apprhension utiliser LATEX


cause des accents. Pas daolement ! vous naurez pas saisir les caractres accentus comme indiqu dans le tableau 1.1. Il est quand
mme bon de noter quil est possible daccentuer (et cdiller )
nimporte quel type de caractre, y compris les majuscules.
Table 1.1: Saisie des accents avec des caractres 7 bits
accent aigu
accent grave
accent circonexe
cdille
trma

ch 7

p. 111

\z
\z
\^z
\c{z}
\"{z}

`z
z
z
z

Attention ! Sil est possible de saisir des documents avec des caractres accentus il ne faut pas perdre de vue quil faut alors faire
appel un encodage qui est pour linstant local une rgion du
globe. On utilise en France le codage Iso8859 avec lextension latin1
qui permet de manipuler nos jolis accents. Avant de lire prcisment
le chapitre ddi aux documents rdigs en franais, nous vous suggrons de rajouter dans votre prambule :
% c o d a g e du f i c h i e r s o u r c e :
\ usepackage [ latin 1]{ inputenc }
% c o d a g e d e s f o n t e s TeX :
8. Mais pourquoi il nous en parle, alors !?

1.5 Premiers outils

15

\ usepackage [ T 1]{ fontenc }


% document en f r a n a i s :
\ usepackage [ francais ]{ babel }
pour attaquer un document en franais.

1.5 Premiers outils


Voici quelques macros et ligatures connatre car souvent utilises dans un document. Tout dabord, LATEX distingue trois types
de tirets :
- pour Saint-tienne ;
-- pour page 1224 ;
--- pour ouvrir une parenthse comme cela.
Les guillemets doivent tre entrs comme ceci :
et pour les textes en anglais ;
et si votre clavier le permet 9 , pour les textes en franais.
La partie franaise du package babel (cf. chapitre 7 page 111)
permet la saisie de caractres laide des commandes \og
et \fg, ainsi : \og franais\fg{}.
Voici pour nir quelques commandes utiles :
\today produit la date du jour (de la compilation) : 22 novembre 2013 ;
\S donne le signe paragraphe : ;
\ldots permet de saisir les points de suspension dans un document anglais. . . Ils doivent tre saisis avec trois points : ...
dans un document franais (voir le chapitre 7 pour quelques
notions de typographie franaise)...
Enn, souvenez-vous quen anglais, on ne saisit pas despace avant les
ponctuations doubles (: ; ! ?) contrairement au franais. Rappelezvous aussi que dans ce doux pays quest la France, on roule surtout
droite.

1.6 Premires erreurs


Dans ce qui suit nous vous proposons dexaminer les tats dme
de LATEX pendant quil compile votre document. Lorsquon lance
la compilation en ligne de commande, on voit directement cette sortie
9.

Alt Gr z et Alt Gr x sur un clavier sous Linux, par exemple.

Principes de base

16

dans le terminal. De manire utiliser LATEX de manire la plus enrichissante nous vous incitons trouver dans votre propre environnement
la manire dexaminer les logs de LATEX, qui vous indiqueront les
messages derreurs et autres avertissements survenant lors de la compilation.

1.6.1

Symptmes

Si vous utilisez LATEX en interactif vous serez amens un jour ou


lautre voir apparatre lcran, un message barbare de ce type :

1
2
3
4
5
6
7
8
9
10

This is TeX, Version 3.1415 (C version 6.1)


(erreur.tex
LaTeX2e <1995/12/01>
(/usr/local/lib/texmf/tex/cls/article.cls
Document Class: article 1995/11/30 v1.3p Standard LaTeX document class
(/usr/local/lib/texmf/tex/clo/size10.clo)) (erreur.aux)
! Undefined control sequence.
l.5 paragraphe de ce \empha
{document}
?

Ce message qui vous semble srement incomprhensible, est le rsultat produit sur le terminal aprs avoir excut LATEX sur le document
erreur.tex que voici :
\documentclass{article}
\begin{document}
Il me semble bien quil y ait une erreur dans le
premier paragraphe de ce \empha{document} somme
toute assez court.
\end{document}

1.6.2

Diagnostic

On peut donc expliquer de manire simple le message derreur :


ligne 1 vous utilisez TEX version 104 prs ;
ligne 2 vous compilez le chier erreur.tex ;
ligne 3 vous utilisez LATEX 2 version de dcembre 95 ;
ligne 45 vous utilisez la classe de document standard article ;
ligne 6 par dfaut, la taille 10pt est utilise ;
ligne 7 le message derreur proprement dit ;

1.6 Premires erreurs

17

ligne 89 la ligne o sest produite lerreur ainsi que son numro


dans le document source erreur.tex ;
ligne 10 le prompt ? particulirement angoissant de TEX
La coupure forme par les lignes 8 et 9, indique prcisment lendroit o LATEX a perdu les pdales. Le message :
! Undefined control sequence.
vous indique que la commande que vous avez entre nest pas connue
par LATEX. Et eectivement, la commande \empha nexiste pas.

1.6.3

Soins

Mais que rpondre LATEX, lorsquil nous ache son fameux


prompt ? ? Voici, trois solutions, les plus couramment utilises
pour communiquer un peu avec LATEX :
appuyer sur <Entre> pour ignorer lerreur ;
taper x permet de quitter la compilation ;
taper r pour demander LATEX de continuer en ignorant tous
les autres messages derreur ;
taper i pour insrer une correction et continuer la compilation. Sachant que cette correction ne sera pas insre dans le
document source ;
taper h pour demander un peu plus dinformation quant
lerreur ; voici ce que vous dit TEX concernant le message
Undefined control sequence :
The control sequence at the end of the top line
of your error message was never \defed. If you have
misspelled it (e.g., \hobx), type I and the
correct spelling (e.g., I\hbox). Otherwise just
continue, and Ill forget about whatever was
undefined.

1.6.4

Une collection de message

TEX et LATEX disposent dun nombre important de messages derreur qui correspondent diverses situations. Ces messages ne sont
pas toujours comprhensibles au premier abord. Cependant on peut
dire que la plupart des erreurs viennent le plus souvent :
dune erreur de syntaxe sur les mots rservs de LATEX ;
de paires daccolades mal construites ;
dune commande mathmatique utilise en mode texte ;
dun mode mathmatique non referm ;

Principes de base

18

dun package que vous avez oubli dinclure ;


dune n de journe dicile ;
...

Y a plus qu !

Vous avez maintenant compris comment on pouvait crer un document imprimable partir dun source LATEX. Ce chapitre vous
a galement permis de comprendre le principe de lappel des commandes. Il ne vous reste qu entamer le chapitre suivant pour si vous
voulez connatre les direntes fonctionnalits que vous propose le
langage LATEX.

Chapitre

Sommaire
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10

Mise en vidence
Environnements
Notes de marge
Titres
Notes de bas de page
Entte et pied de page
Flottants
Rfrences
Fichiers auxiliaires
O il est question de csure

Ce quil faut savoir


Quand on chtie le railleur, le simple sassagit ;
quand on instruit le sage, celui-ci gagne en savoir.
Les proverbes Pr 21 11.

l sera question dans ce chapitre, des commandes de mise en


INous
page de base connatre pour gnrer un document avec L TEX.
traiterons en vrac des mises en vidence, des environnements
A

standard LATEX, des titres, des notes de bas de page, des entte et
pied de page et des environnements ottants. Nous terminerons le
chapitre par un expos du systme de rfrences suivi dune prsentation des chiers auxiliaires gnrs par LATEX. Enn, ceux qui
auront tenu jusque l, auront la chance de pouvoir lire quelques
considrations sur la csure.
Toutes ces commandes seront utiliser avec leur comportement
par dfaut, cest--dire que nous ne prsenterons pas ici la manire
de les rednir. Vous serez par contre en mesure de produire un document classique avec les mises en page traditionnelles. Pour taper
un article plus volu, vous aurez besoin dinformations sur la manire de produire des formules mathmatiques (chapitre 3), quelques
infos sur les documents scientiques (chapitre 6), et ventuellement
sur linclusion de graphiques (chapitre 5).

19

Ce quil faut savoir

20

Table 2.1: Dclarations de changement de fontes

Commande

Dclarations

Output

\textrm{...}

{\rmfamily ...}

roman

\textsf{...}

{\sffamily ...}

sans srif

\texttt{...}

{\ttfamily ...}

machine crire

\textup{...}

{\upshape ...}

droit

\textit{...}

{\itshape ...}

italique

\textsl{...}

{\slshape ...}

pench

\textsc{...}

{\scshape ...}

Petites Capitales

\textmd{...}

{\mdseries ...}

medium

\textbf{...}

{\bfseries ...}

gras

2.1 Mise en vidence


Pour comprendre un tant soit peu le mcanisme de slection
de fontes de LATEX, il faut savoir quon distingue au moins quatre
paramtres dans une fonte :
famille : cest la forme globale de la fonte. LATEX utilise par dfaut
3 types de familles : roman, sans srif et machine crire.
Le mot anglais utilis par LATEX est family
style : cest lallure (en anglais shape) de la fonte : italique pench
et Petites Capitales.
graisse : cest lpaisseur (serie pour LATEX) des traits. Par dfaut
2 paisseurs : mdium et gras ;
taille : taille des caractres.

2.1.1

Family-shape-series

On distingue deux types de macros pour changer les trois premiers paramtres (cf. tableau 2.1) : les commandes et les dclarations. Les commandes agissent sur leur argument donn entre accolades. Les dclarations agissent comme des interrupteurs en changeant la valeur dun de ces paramtres jusqu nouvel ordre. En

2.1 Mise en vidence

21

une \emph{variable} de type \texttt{char}


est \textsc{Toujours} code sur
\textbf{8 bits}.

2.1

rgle gnrale, on utilisera les commandes pour mettre en vidence


un mot ou un groupe de mots :
une variable de type char est
Toujours code sur 8 bits.

{\em The music of \bfseries Magma


\mdseries is like a mirror where
everyone can see a reflection of
who he is.}

2.2

Notez lutilisation dans lexemple prcdent, de la commande \emph


(dont la dclaration quivalente est \em qui permet de mettre en
vidence de manire lgante un groupe de mots. Il est fortement
conseill dutiliser les commandes plutt que les dclarations. Cependant lorsquune longue portion de texte est changer, il sera
parfois plus judicieux dutiliser les commandes 1 :
The music of Magma is like a
mirror where everyone can see a
reflection of who he is.

\sffamily Le jazz est une musique o le


{\slshape silence\/} a toujours raison ;
cest pour cela quil na pas dautre
issue que limpossible.

2.1.2

2.3

Lexemple suivant illustre lutilisation de groupes. La dclaration


\slshape se situe dans un groupe, elle est donc locale ce groupe.
Dautre part, un groupe hrite les paramtres du groupe qui lenglobe. Ainsi, silence est crit en fonte sans srif (groupe englobant) et pench (dclaration locale).
Le jazz est une musique o le silence a toujours raison ; cest pour
cela quil na pas dautre issue que
limpossible.

Correction italique

Une autre raison pour laquelle il est recommand dutiliser les


commandes plutt que les dclarations, est que les commandes effectuent la correction italique contrairement aux dclarations. La
correction italique est un espace quil est ncessaire de rajouter
la n dun groupe de mots en italique, pour viter que celui-ci ne
touche le mot suivant. Cet espacement est fonction du caractre
mis en jeu :
1. Ainsi que lors de la dfinition de commandes.

Ce quil faut savoir

le {\em chef} a toujours raison.\par


le {\em chef\/} a toujours raison.\par
le \emph{chef} a toujours raison.\par

2.4

22

le chef a toujours raison.


le chef a toujours raison.
le chef a toujours raison.

On voit donc clairement que la commande \emph eectue la correction, alors quil est ncessaire de la faire explicitement laide de la
macro \/, quand on utilise la forme dclaration.

2.1.3

Tailles

On dispose des macros donnes au tableau 2.2 pour changer la


taille de la fonte en cours. Ces macros sont des dclarations et il
existe pour chacune dentre elles un environnement portant le mme
nom.
Table 2.2: Changement de taille
\Huge

immense

\huge

norme

\LARGE

trs trs gros

\Large

trs gros

\large

gros

2.1.4

\normalsize
\small
\footnotesize
\scriptsize
\tiny

normal
petit
plus petit
rikiki
minuscule

Quelques recommandations

Lusage veut que dans la mesure du possible, on utilise avec parcimonie les changements de fontes. Il est en eet de mauvais got
deectuer des mises en vidence intempestives et inutiles ; le plus
gnralement elles surchargent le document au lieu de le rendre plus
lisible. Voici trois suggestions (toujours dusage !) sur lutilisation des
changements de fontes :
prfrer la commande \emph (par dfaut italique) que tout
autre commande pour mettre en vidence ;
rserver le gras pour une remarque particulirement importante ;
utiliser les petites capitales ne sont utiliser quasiment exclusivement que pour les noms dans un document en franais :

2.2 Environnements

23

Donald Knuth ;
la famille machine crire est souvent utilise pour produire du texte en langage de programmation ou quivalent.
bon entendeur...
Dautre part nous vous donnons ci-dessous deux considrations
quant lutilisation du changement de taille et du soulign (commande \underline) :
Perhaps poets who wish to speak in a still small voice will
cause future books to make use of frequent font variations,
but nowadays its only an occasional font freak (like the author
of this manual) who likes such experiments.

Donald Knuth in the TEXbook [9]

Note that underlining for emphasis is considered bad


practice in the publishing world. Underlining is only used
when the output device cant do highlighting in another
way for example, when using a typewriter.

Michel Goossens et al. in the LATEX Companion [6]

2.2 Environnements
LATEX propose une srie doutils sous la forme denvironnements.
Il sagit dune structure de bloc dont la syntaxe est la suivante :
\begin{hnom envi}
...
\end{hnom envi}
o hnom envi est le nom dun environnement. Le premier environnement rencontr jusquici est lenvironnement document. Entre le
\begin et le \end on insre une portion de texte qui va subir une
mise en page particulire.
Notons tout de suite que toute dclaration est locale un environnement ; et quil est bien sr possible de dfinir ses propres
environnements ventuellement partir dautres existants.

Le reste de cette section sera consacr la description des environnements normaliss de LATEX.

Ce quil faut savoir

24

2.2.1

Centrage et alignement

Pour centrer quelques lignes, on utilise lenvironnement center :

quelques lignes
parfaitement centres
entre les marges
et le paragraphe continue...

De mme on peut aisment aligner un paragraphe droite grce


lenvironnement flushright :
... fin de phrase.
\begin{flushright}
deux lignes\\
alignes droite
\end{flushright}
et le paragraphe continue...

... n de phrase.
2.6

... n de phrase.

2.5

... fin de phrase.


\begin{center}
quelques lignes \\
parfaitement centres \\
entre les marges
\end{center}
et le paragraphe continue...

deux lignes
alignes droite
et le paragraphe continue...

Noter lemploi dans les deux prcdents exemples de la commande


\\ pour passer la ligne. En dehors de cas particuliers (tableaux,
titre et auteur dun document, centrage et alignements notamment),
cette commande est proscrire : pour passer la ligne, il faut laisser
une ligne vierge ou utiliser la commande \par.
En gnral, on emploie lenvironnement flushleft avec des
commandes \\. Mais on peut lutiliser pour produire un
paragraphe comme celui-ci, non justi droite, en laissant
LATEX le soin dinsrer les sauts de lignes.
La grande majorit des environnements passent la ligne pour
insrer leur contenu. Cependant, il est important de comprendre
quun environnement interrompt le paragraphe dans lequel il est insr, mais ne le termine pas vous pourrez dailleurs remarquer que
la phrase et le paragraphe continue nest pas indente. En outre,
LATEX insre gracieusement autour de chaque environnement un espace
vertical.

On peut noter quaux trois environnements prcdents correspondent respectivement les trois dclarations :
\centering
\raggedleft

2.2 Environnements

25

\raggedright.
On peut par exemple crire :

{\centering Emacs\\Makes\\
A\\Computer\\Slow\\}

2.7

Emacs stands for :

Emacs stands for :


Emacs
Makes
A
Computer
Slow

2
2.2.2

Listes

LATEX ore la possibilit dutiliser trois principaux types de listes


sous forme denvironnement : itemize, enumerate et description.
Il est possible de dnir ses propres listes, si celles de LATEX ne vous 9.5
p. 151
conviennent pas. Mais voici les listes standard :

... toujours la fin dune phrase.


\begin{itemize}
\item dans un calcul complexe, un facteur
du numrateur passe toujours au
dnominateur
\item une virgule est toujours mal place
\end{itemize}
et le truc continue, imperturbablement...

2.8

Tout dabord itemize qui est une liste d items non numrots dont le premier niveau est marqu par un tiret () en version
franaise et par un point () par dfaut :

... toujours la n dune phrase.


dans un calcul complexe,
un facteur du numrateur
passe toujours au dnominateur
une virgule est toujours
mal place
et le truc continue, imperturbablement...

Vient ensuite lenvironnement enumerate, sur le mme principe


que le prcdent mais o les items sont numrots. tant donn
que ces environnements peuvent tre inclus les uns dans les autres,
nous vous prsenterons enumerate et description dans un mme
exemple :

Ce quil faut savoir

26

1. LATEX : A Document
preparation System
2. The LATEX Companion
et le paragraphe continue, once
again...

Les listes de description, qui nont pas dquivalent dans les traitements de texte habituels, sont malheureusement au mieux mal
employes, au pire ignores des dbutants sous LATEX.

2.2.3

Tabulations

Lenvironnement tabbing permet dutiliser les bonnes vieilles


tabulations de la machine crire. On pose les taquets de tabulations
grce la commande \= et on se dplace de taquet en taquet avec
la commande \>. En outre, la commande \\ permet de passer la
ligne.
\begin{tabbing}
gauche \= au centre \= droite \\
\> modr \\
\> \> conservateur \\
xxxxxxxxxxx \= \kill
\> sans opinion
\end{tabbing}

2.10

... encore la n dune phrase.


TEX The TEXbook
LATEX deux livres importants :

2.9

... encore la fin dune phrase.


\begin{description}
\item[\TeX] The \TeX{}book
\item[\LaTeX] deux livres importants :
\begin{enumerate}
\item \LaTeX{} : A Document preparation
System
\item The \LaTeX{} Companion
\end{enumerate}
\end{description}
et le paragraphe continue, once again...

gauche au centre droite


modr
conservateur
sans opinion

Cet exemple illustre deux autres principes :


on peut positionner une tabulation avec un modle et ne
pas acher la ligne correspondante avec la commande \kill ;
une nouvelle commande \= enlve le taquet qui suit logiquement, sil existe.

2.2.4

Tableaux

Lenvironnement pour produire les tableaux en LATEX se nomme


tabular. Le systme de bordures nest pas trs sophistiqu, mais,

2.2 Environnements

27

Hop :
\begin{tabular}{|r|c|}
\hline
deux & trois \\
cinq & six \\ \hline
\end{tabular}

2.11

pour des tableaux bordures simples les rsultats sont acceptables 2 :

deux
cinq

Hop :

trois
six

on peut donc comprendre grce cet exemple, les choses suivantes :


lenvironnement tabular attend un paramtre qui donne une
indication sur le format du tableau. chaque colonne doit
correspondre un caractre de positionnement :
r : alignement droite ;
c : centrage ;
l : alignement gauche ;
le caractre & est le sparateur des colonnes ;
la commande \\ permet de passer la ligne ;
les bordures verticales sinsrent dans la chane de mise en
page grce au caractre | ;
les bordures horizontales laide de la commande \hline.
On peut donc jouer sur le nombre de \hline et de | pour changer
lallure des bordures. Le package array permet quelques fantaisies
avec les tableaux.
Si la plupart des environnements commencent une nouvelle
ligne, ce nest pas le cas de lenvironnement tabular. Il cre
juste une bote dans le texte courant.

un :
\begin{tabular}[b]{|c|} a\\b\end{tabular}
et deux :
\begin{tabular}[t]{|r|} c\\d\end{tabular}

2.12

On peut en outre prciser le positionnement vertical du tableau


grce un argument optionnel :

un :

a
b

et deux :

c
d

Vous avez donc compris que largument b (resp. t) pose (resp.


accroche ) le tableau sur (resp. ) la ligne. Sans cet argument le
tableau est centr verticalement, comme dans le premier exemple de
la section.
2. Lannexe B donne quelques pistes pour trouver des packages permettant
de crer des tableaux plus complexes.

Ce quil faut savoir

28

Les tableaux peuvent videmment ne pas tre insrs dans des


phrases et constituer des paragraphes eux seuls, par exemple
en gurant centrs au moyen dun environnement center.

2.2.5

Simulation de terminal

class pixel{
int x,y;
public:
pixel(int i=0, int j=0);};

On peut tout crire dans un environnement verbatim sauf la


squence de caractres : \end{verbatim} !

Il existe deux commandes permettant de produire une portion de


texte comme le fait lenvironnement verbatim : il sagit de \verb et
\verb*. La forme toile remplace le caractre par .
Largument de ces commandes nest pas donn entre accolades
({ }) mais par tout autre caractre : 1o autre que les caractres
spciaux et 2o ntant pas contenu dans largument.
\verb+#include<stdlib.h>+
permet dinclure les prototypes de la
librairie standard du~C.

2.14

\begin{verbatim}
class pixel{
int x,y;
public:
pixel(int i=0, int j=0);};
\end{verbatim}

2.13

Lenvironnement verbatim insre son contenu mot pour mot. Il


ore donc la possibilit de rentrer nimporte quel caractre mme
spcial, et donc, par exemple dcrire une portion de code C++ 3 :

#include<stdlib.h> permet
dinclure les prototypes de la
librairie standard du C.

La commande \verb ne peut en aucun cas se trouver dans


largument dune commande, quelle quelle soit.

2.2.6

Citations

Les environnements quote et quotation permettent dinsrer


une citation dans le texte. Voici dabord quote :
3. Notez que le package listings est bien mieux adapt ce genre de problme.

2.3 Notes de marge

29

... encore la fin dune phrase.


\begin{quote}
Tout est relatif.\hfill\textbf{Einstein}.

... encore la n dune phrase.


Tout est relatif. Einstein.
Il nest pas certain
que tout soit certain.
Pascal.

2.15

Il nest pas certain que tout soit certain.


\hfill\textbf{Pascal}.
\end{quote}
et le paragraphe
et le paragraphe interrompu, continue...
continue...

interrompu,

La commande \hfill insre un espace qui stend horizontalement


de manire innie. Lenvironnement quotation dire quelque peu 4.2.4
p. 66
de quote :
... encore la n dune phrase.
Lhomme
est
plein dimperfections
mais on ne peut que
se montrer indulgent si lon songe
lpoque o il fut
cr.
Alphonse Allais.

2.16

... encore la fin dune phrase.


\begin{quotation}
Lhomme est plein dimperfections mais on
ne peut que se montrer indulgent si lon
songe lpoque o il fut cr.\par
\raggedleft Alphonse \textsc{Allais}.
\end{quotation}
et ce brave paragraphe qui continue...

et ce brave paragraphe qui continue...

En fait ces deux environnements sont prsents par Leslie Lamport, lun (quote) pour une ou plusieurs citations courtes, et lautre
(quotation) pour une citation longue.

2.3 Notes de marge


La commande \marginpar cre un mini-paragraphe dans la marge, la syntaxe est la suivante :
\marginpar{htextei}
Pour distinguer la page droite de la page gauche en mode recto-verso,
on pourra utiliser :
\marginpar[htextegauchei][htextedroitei]
o htextgauchei et htextdroitei seront respectivement les textes qui
apparatront en marge selon la parit du numro de la page. Ainsi :

Ce quil faut savoir

30

Table 2.3: Sectioning commands


\part{...}

\chapter{...}

\section{...}

\subsection{...}

\paragraph{...}

\subparagraph{...}

\subsubsection{...}

\marginpar[L !][Hop !]
L !

donne ce que vous pouvez constatez dans la marge.

2.4 Titres
Le tableau 2.3 montre les commandes de section disponibles dans
LATEX. La commande \chapter nest pas disponible pour la classe
de document article ; et aucune commande de titres ne peut tre
utilise dans la classe letter. Pour linstant, il faut savoir les deux
choses suivantes :
chaque titre rsultant dune commande de section est automatiquement numrot et mis dans la table des matires le
cas chant ;
la commande \tableofcontents produit une table des matires lendroit o est insre cette commande.
Dautre part toutes les commandes de titres ont un style associ
que lon peut ventuellement redfinir. Enfin, ces commandes
effectuent automatiquement les espacements verticaux avant et aprs
le titre ; ainsi toute ligne vierge insre avant ou aprs la commande
est ignore.

... tiens cest la n dune phrase.


2.17

... tiens cest la fin dune phrase.


\section{Conclusion}
En dfinitive...

3.2 Conclusion
En dnitive...

Il existe une forme toile (par exemple : \section*) de chaque


commande de titres permettant dinsrer un titre non numrot.
2.9.2 Mais attention, ce titre napparatra pas dans la table des matires.
p. 37
Les commandes de section prennent galement un argument option-

2.5 Notes de bas de page

31

nel permettant de prciser une entre de table matires dirente du


titre de la section. Par exemple :
\section[Paulette]{Ctait bien, ctait chouetteuuuu}
insre Paulette dans la table des matires en lieu et place du titre
insr dans le document.

2.5 Notes de bas de page

Contre toute attente, cest la commande


\verb+footnote+\footnote{Comme son
nom lindique...} qui insre une note
de bas de page.

2.18

Linsertion dune note de bas de page seectue de manire simple


par la commande \footnote{htextei}. La numrotation est automatique, et par dfaut, les notes sont numrotes lintrieur dun
chapitre. Voici ce que donne LATEX :
Contre toute attente, cest la
commande footnote a qui insre
une note de bas de page.
a. Comme son nom lindique...

Il arrive lorsquon travaille en milieu particulirement hostile que


la commande \footnote ne produise pas leet dsir. Il est alors
ncessaire de procder en deux temps :
1. poser une marque de note, commande \footnotemark ;
2. entrer le texte de la note de base de page commande
\footnotetext lorsque les conditions sont plus favorables.
Par exemple, il semble dlicat de mettre une note de bas de page
dans un tableau, on crira donc :
un
trois
2.19

\begin{tabular}{cc}
un & deux\footnotemark \\
trois & quatre
\end{tabular}\footnotetext{Une note.}

deux a
quatre

a. Une note.

2.6 Entte et pied de page


Les commandes standard de LATEX permettant de personnaliser
les enttes et pied de page sont assez rudimentaires mais mritent
dtre mentionnes ici, puisquelles peuvent sure dans certains cas.

32

Ce quil faut savoir

Nous ne nous attarderons pas plus sur ces commandes, car


il nous semble que le package fancyhdr document dans
fancyhdr.dvi est beaucoup plus confortable utiliser et offre
des fonctionnalits bien plus intressantes que les options standard
de LATEX. Lutilisation de ce package pour produire les entte et pied
de page du manuel que vous avez sous les yeux est explique la
section 10.4.

Sans faire appel un package particulier, on peut spcier le style


dentte et pied de page laide de la commande \pagestyle :
\pagestyle{hstylei}

dans le prambule du document ; le paramtre style pouvant prendre


les valeurs suivantes :
empty ni entte, ni pied de page ;
plain cest le style par dfaut, le pied de page contient les
numros de pages centrs ;
headings suivant le style de document, un certain nombre
dinformations est insr dans lentte et le pied de page (par
exemple dans le style report en recto-verso, est insr en
entte : soit le titre du chapitre en cours, soit le titre de la
section en cours) ;
myheadings un style qui permet de personnaliser les informations insrer.
Il existe dautre part une commande \thispagestyle, qui permet de changer ou de spcier le style de la page courante.

2.7 Flottants
LATEX ore ses valeureux utilisateurs la possibilit dutiliser des
environnements flottants. Ces environnements ont la particularit
de rendre ottants leur contenu. Cest--dire que LATEX choisit
partir dun algorithme qui tient compte dun certain nombre de
paramtres, la position de lenvironnement dans le document.
Contrairement ce que leur nom laisse croire, les environnements de LATEX figure et table ne sont pas spcialement
conus pour insrer des figures et des tables ! En fait ils sont conus
uniquement pour faire flotter leur contenu et laisser la possibilit dinsrer une lgende. Le contenu proprement parler peut tre constitu
de ce que bon vous semble, pas ncessairement du graphique.

2.7 Flottants

2.7.1

33

Figure et table

Lenvironnement figure est gnralement utilis pour les graphiques, et lenvironnement table, pour les tableaux. Chacun de
ces environnements possde une lgende. La syntaxe dutilisation
est la suivante :

Ce paragraphe contient un
environnement ottant de
type gure . Le contenu

2.20

Ce paragraphe contient un environnement


flottant de type figure . Le
contenu est donc susceptible de se
dplacer dans la page.
\begin{figure}
\begin{center}
0 + 0 \\
=
\end{center}
\caption{La tte toto}
\end{figure}

0+0
=
Figure 1: La tte toto
est donc susceptible de se dplacer dans la page.

Vous noterez que cest la commande \caption qui produit la lgende. Le texte Figure 1: est insr automatiquement avec le
numro correspondant la gure. Le style de la lgende est bien
entendu personnalisable.

2.7.2

Placement

LATEX tente de placer le contenu ottant en fonction des paramtres quon indique entre crochets aprs le \begin du ottant :
h : l o il apparat dans le source ;
t : en haut de la page ;
b : en bas de la page ;
p : seul sur une page
Notons quil arrive parfois que lon sarrache les cheveux, pour
placer les environnements ottants. Pour ne pas snerver, il faut
comprendre et accepter que LATEX utilise plusieurs paramtres
pour placer les figure et table. Notons parmi ces paramtres :
le nombre maximum denvironnements ottants en haut et
en bas de page ;
le pourcentage maximum de la surface de la page quoccupe
un ottant en haut et en bas de la page ;
les espacements avant et aprs le ottant.

Ce quil faut savoir

34

Si vous avez des problmes 4 pour placer vos gures, nous vous
conseillons de suivre ces quelques recommandations :
si vous tenez crire comme le montre la figure : en attendant la gure la suite, nutilisez pas lenvironnement
figure !
utilisez plutt le systme de rfrence et crivez comme le
montre la gure 3 ;
on a toujours tendance faire des gures normes : rtrcissezles !
si vous avez des tableaux rallonge, mettez-les en annexe,
puisque de toutes faons ils gneront le lecteur ;
les paramtres de LATEX sont tudis pour quilibrer le texte
et les gures dans le document. Donc, si votre document est
une bande dessine, attendez vous au pire...
ne vous souciez du placement des gures quau moment dimprimer votre document final.

2.7.3

Liste des figures

La commande \listoffigures (resp. \listoftables) insre


une liste des gures (resp. des tableaux) de votre document. La
liste est imprime l o apparat la commande. Ces commandes produisent un chier portant lextension .lof (resp. .lot). En outre,
de manire analogue aux commandes de sections qui alimentent la
table des matires, la commande \caption prend un argument optionnel permettant de dnir lentre dans la table des gures. Par
dfaut cette commande utilise la lgende comme entre :
\caption[Hop]{Ici on peut raconter sa vie puisque a
mettra pas le foin dans la liste des figures
avec un titre rallonge vu quon a mis Hop
la place de cette lgende qui nen finit pas...}

2.8 Rfrences
Le systme de rfrence de LATEX permet de manipuler le numro
de toute partie dun document faisant lobjet dune numrotation,
de manire symbolique. Donc sans se soucier de savoir sil sagit par
exemple, de la gure 4 ou de la gure 5. Cest un des aspects de
4. Et vous en aurez srement...

2.8 Rfrences

35

LATEX qui vous vitera beaucoup de travail. Et qui sexplique en


quelques lignes.

2.8.1

Principe

Pour utiliser une rfrence, on a deux tches eectuer : 1o poser


une tiquette symbolique dans le texte, 2o appeler cette tiquette
pour faire rfrence, soit au numro de lobjet rfrenc, soit au numro de la page o se trouve lobjet rfrenc. Cest dune simplicit
enfantine :
1. On pose une tiquette avec la commande \label :
\label{htiquettei}
o htiquettei est une chane de caractres ne comprenant pas
de caractres spciaux.
2. On fait rfrence au numro de lobjet rfrenc avec la commande \ref :
\ref{htiquettei}
On fait ensuite rfrence la page avec \pageref :
\pageref{htiquettei}

2.8.2

Que rfrencer ?

Les objets que lon peut rfrencer sont les suivants :


les titres ;
les ottants (figure, table, ...) ;
les quations (cf. chapitre 3) ;
les items de liste numre (enumerate par exemple) ;
etc.
Voici un exemple synthtisant les trois commandes de rfrencement :

3.5 Second degr


Ce sont les quations du type :
ax2 + bx + c = 0
2.21

\section{Second degr}\label{sec-2dg}
Ce sont les quations du type :
\begin{equation}
ax^2 + bx + c = 0 \label{equ}
\end{equation}
Lquation \ref{equ} de la section
\ref{sec-2dg} page \pageref{sec-2dg}
patati patala...

(2.12)

Lquation 2.12 de la section 3.5


page 13 patati patala...

Ce quil faut savoir

36

Dans cet exemple on fait rfrence un objet \section et un


objet de type \equation (cf. chapitre 3). En outre, on fait rfrence
la page o apparat la section en question.
Lorsque vous placez un \label dans un environnement flottant, placez le toujours aprs la commande \caption. Sinon,
la rfrence pointera sur la section et non sur la figure.

2.9 Fichiers auxiliaires

Pour bien comprendre le mcanisme de rfrencement, il nous


reste examiner ce que LATEX crit sur votre disque lorsquil compile
un chier source. Pour linstant, voici les chiers que vous pourrez
rencontrer :
dvi limage de votre document ;

toc

cest le bavardage de LATEX lors de la dernire compilation.


En gnral, il correspond peu ou prou ce que vous avez
sur votre terminal au moment de la compilation ;
le chier auxiliaire, il stocke les informations concernant les
rfrences, les numros de pages, les titres, ... ;
le chier contenant la table des matires ;

lof

le chier contenant la liste des gures.

log

aux

2.9.1

Interaction avec les rfrences

LATEX gre les rfrences de la manire suivante : lors dune


premire compilation, il stocke les rfrences dans le chier hnomdoci.aux o hnom-doci est le nom de votre document. laide dun
exemple o lon aurait plac une tiquette truc pour la section 3
la page 35 dun document, voyons le principe du mcanisme de
rsolution des rfrences.
1. la premire compilation avec LATEX stocke dans le chier auxiliaire .aux le numro de ltiquette (le numro de la section
dans notre exemple) et le numro de la page o cette tiquette
apparat :
doc.tex
\label{truc}
...

\ref{truc}

doc.aux

LATEX

ref{truc)
=
3/35

Undefined reference truc

2.9 Fichiers auxiliaires

37

LATEX envoie donc lors de cette compilation un avertissement


prcisant que ltiquette truc est indnie ;
2. on eectue donc une deuxime compilation qui va cette fois
exploiter le contenu du chier auxiliaire :
doc.tex

men

\label{truc}
...

doc.aux
ref{truc)
=
3/35

LATEX

\ref{truc}

Les rfrences peuvent tre incorrectement dnies dans les situations suivantes :
1. vous avez insr une nouvelle tiquette, et cest la premire
compilation que vous eectuez (les rfrences sont indfinies) ; et vous aurez pour cette nouvelle tiquette un message :

Reference vlunch on page 2 undefined on input line 17.


2. les changements que vous avez apports votre document
ont sans doute chang la numrotation des pages ou le placement des objets (gures, quations,...), les rfrences sont
alors mal dfinies, et vous serez averti par un message en n
de compilation :
Label(s) may have changed.
Rerun to get cross-references right.
3. vous faites rfrence une tiquette qui nexiste pas. Dans ce
cas, 18 compilations ne changeront rien votre problme.

2.9.2

Interaction avec la table des matires

On retrouve un peu le mme principe avec la table des matires.


Lorsque vous insrez la commande \tableofcontents dans votre
document, la table des matires va tre cre en deux tapes, comme
suit :
1. un premier parcours pour rcuprer les informations lies aux
titres de tout le document et stockage dans le chier hnomdu-documenti.toc :
doc.toc
doc.tex

doc.aux

LATEX

Ce quil faut savoir

38

2. un deuxime passage pour inclure hnom-du-documenti.toc


donc la table des matires dans le document nal :
doc.tex

men

doc.toc

doc.aux

LATEX

Vous serez alors confronts au phnomne suivant : lorsquau cours


de la rdaction dun document contenant dj la commande incluant
la table des matires (\tableofcontents), vous insrez une commande de section, elle napparatra dans celle-ci quaprs deux compilations.

2.9.3

B.2

p. 253

Petits conseils

Prenez lhabitude de crer un rpertoire pour chaque document


que vous rdigez. LATEX cre en eet plusieurs chiers autour de votre
.tex 5 . Dautre part, ne vous souciez pas trop, lors de la rdaction de
votre document, de savoir si les rfrences ou la table des matires
sont jour : elles le seront bien un jour ou lautre ! En fait, il faut
sassurer que les rfrences sont correctes avant dimprimer.
Enn, de mme quon eectue de temps en temps un make clean
lorsquon nest plus sr de ses chiers objets, il est bon quand il
vous semble que tout va mal, deacer les chiers auxiliaires et de
reprendre la compilation.

2.10

O il est question de csure

LATEX sappuie sur TEX pour eectuer la csure des mots en fonction dune langue dtermine. Cet algorithme dcrit lannexe H du
TEXbook constitue un des aspects les plus russis de TEX. Une manire de reconnatre un document gnr par LATEX est dexaminer
la manire dont sont coups les paragraphes ; beaucoup dautres logiciels se contentent dinsrer des blancs entre les mots. Il existe
cependant des situations o LATEX ne peut eectuer une csure correcte. Dans ce cas, LATEX vous avertira par lun des deux messages
terriants :
Underfull \hbox (badness 1810) detected at line 33
5. Et encore il na pas encore t question de bibliographie, ni dindex et de
glossaires...

2.10 O il est question de csure

39

ou bien :
Overfull \hbox (14.24376pt too wide) detected at line 41

un trs bas niveau, TEX produit votre document en assemblant


des botes. Chaque caractre est contenu dans une bote qui lui est
propre ; les mots sont forms par assemblage de ces botes. Et ainsi
de suite, pour les lignes qui forment des paragraphes puis des pages.
Pour rsumer et prsenter les choses de manire simple, disons
que TEX est en mode horizontal pour assembler les mots et manipule alors des \hbox ; il est en mode vertical et manipule des \vbox
lorsquil cre les pages. Aussi, lors de lassemblage de ces botes, si
TEX juge que le rsultat ne sera pas esthtique, il vous avertira par
les deux types de messages prsents plus haut. Ces messages ont la
signication suivante :
Underfull \hbox les botes sont assembles de manire un
peu lche ; TEX vous donne la laideur de la ligne (badness)
sachant quune ligne parfaite a une laideur de 0, et que la pire
des lignes, une laideur de 10000 ;
Overfull \hbox les botes sont un peu trop serres ; TEX
vous indique en pt le dpassement dans la marge.
Si une page est trop lche, LATEX parlera de \vbox dans ses messages.
Le tableau 2.4 illustre le phnomne sur une phrase.
rage ! dsespoir ! vieillesse ennemie !

underfull

rage ! dsespoir ! vieillesse ennemie !

underfull

rage ! dsespoir ! vieillesse ennemie !

underfull

rage ! dsespoir ! vieillesse ennemie !

ok

rage ! dsespoir ! vieillesse ennemie !

overfull

rage ! dsespoir ! vieillesse ennemie !

overfull

rage ! dsespoir ! vieillesse ennemie !

overfull

Table 2.4: Under et overfull hbox

Il est possible en utilisant loption de document draft de faire apparatre


dans la marge une barre noire comme en marge de ce paragraphe, indiquant les Overfull \hbox. Cette option permet de localiser rapidement la ligne en cause.

40

Ce quil faut savoir

2.10.1 Contrler la csure


LATEX peut avoir des dicults couper une phrase pour les
raisons suivantes :
il ne reconnat pas le mot couper : ce cas est exceptionnel ;
lendroit o la csure devrait avoir lieu est un objet qui ne
peut tre coup, par exemple un objet du type \verb|...|,
une quation,...
Nous vous donnons ci-dessous quelques mthodes pour contrler la
csure.

Lorsquaucune de ces mthodes ne vous donne satisfaction


ceci peut se produire si votre phrase contient trop dobjets que
TEX ne peut couper il ny a pas dautre solution que de tourner sa
phrase diffremment pour contourner le problme.

Guider la csure
On peut aider LATEX couper un mot en lui indiquant les endroits
o la csure peut tre eectue, en insrant aux endroits ncessaires,
la commande \-. Par exemple, si LATEX a du mal couper le mot
nonmaiavapamieu , vous pouvez entrer :
non\-mai\-a\-va\-pa\-mieu
Si vous utilisez ce mot frquemment, vous pouvez, pour vous pargner dindiquer les csures comme ci-dessus, entrer dans le prambule la commande \hyphenation :
\hyphenation{non-mai-a-va-pa-mieu}
qui indique LATEX comment couper ce mot trange.
Forcer la csure
Vous
pouvez
forcer
la
csure,
en
insrant
la commande \linebreak[hnombrei], mais cela peut avoir des rsultats catastrophiques. Si vous voyez ce que je veux dire. Le paramtre hnombrei permet de moduler la commande \linebreak. Vous
avez la possibilit de formuler un souhait timide : \linebreak[0]
ou un ordre ne pas discuter : \linebreak[4].
La commande \pagebreak[hnombrei] est la commande correspondant aux coupures de pages. Dautre part, deux commandes sont
disponibles pour eectuer un saut de page :
\clearpage nit la page actuelle ;

2.10 O il est question de csure

41

\cleardoublepage nit la page actuelle, et assure de commencer sur une page impaire, en mode recto verso.
Ces deux commandes forcent LATEX insrer toutes les gures ottantes en cours de placement.
Une autre intervention manuelle pratique dans certaines situations, consiste agrandir la hauteur de la page actuelle en faisant appel la commande :
\enlargethispage
suivie dune dimension puis dinsrer un saut de ligne :
\enlargethispage{10cm}

au niveau de la page trop


courte

[...le texte un peu trop long...]


\clearpage
fin explicite de la page allonge
de 10cm

Empcher la csure
Il existe trois moyens de forcer LATEX ne pas couper le texte :
1. insrer lespace inscable ~ ;
2. mettre un mot dans une bote 6 avec la \mbox{hmoti} ;
3. utiliser lordre \nolinebreak :
\nolinebreak[hnombrei]
pour empcher les sauts de lignes, et \nopagebreak :
\nopagebreak[hnombrei]
o hnombrei a la mme signication que pour les commandes
\linebreak et \pagebreak.

Conclusion
Ce chapitre a prsent les fonctionnalits standard de LATEX. Si
vous avez lu attentivement jusquici, vous devriez pouvoir produire
nimporte quel document simple (sans formule ni graphique, pour
linstant). Si vous ntes pas encore en mesure de personnaliser vos
documents, ils seront tout de mme dune trs bonne qualit typographique en vous vitant de vous poser des questions mtaphysiques
sur la bonne largeur dune marge ou le bon cart entre un titre
6. Car TEX ne coupe jamais une bote.

4.2
p. 63

42

Ce quil faut savoir

et le texte,... En eet, les comportements par dfaut de LATEX rpondent, pour la plupart, des rgles en usage dans le monde de
limprimerie.

Chapitre

Sommaire
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8

Les deux faons dcrire des maths


Commandes usuelles
Fonctions
Des symboles les uns sur les autres
Deux principes importants
Array : simple et efficace
quations et environnements
Styles en mode mathmatique

Mathmatiques
Voici les noms des douze aptres :
en tte Simon que lon appelle Pierre [...]
Lvangile selon Saint Matthieu Mt 10 2.

n des aspects pratique et rigolo 1 de LATEX est bien sr la gnration de formules mathmatiques ; elles seront naturellement
belles, sans que vous nayez faire quoique ce soit 2 . De plus, si vous
avez un mauvais souvenir dun certain diteur dquations, rjouissez vous : vous navez pas besoin de souris pour crire des quations !
La gnration dquations avec LATEX est un domaine particulirement vaste. Nous prsenterons ici les bases requises pour produire
les formules usuelles . Ce chapitre ne constitue donc quune petite
introduction la manipulation des formules avec LATEX.

Les commandes standard de LATEX permettent de produire la


plupart des quations mathmatiques usuelles. Il est cependant
conseill dutiliser les extensions de lAmerican Mathematical Society
nommes amsmath et amssymb simplifiant la mise en forme dans beaucoup de situations.

1. Si, si ! Il y a mme des gens qui font des formules juste pour le plaisir !
2. Ou alors juste deux ou trois petites choses...

43

Mathmatiques

44

3.1 Les deux faons dcrire des maths


LATEX distingue deux manires dcrire des mathmatiques. La
premire consiste insrer une formule dans le texte, comme ceci :
ax + b = c, la seconde crire une ou plusieurs formules dans un
environnement, par exemple :
dU = W + Q
sachant que chacun de ces deux modes respectent un certain nombre
de principes quant la taille et la position des dirents symboles.
Voici un exemple avec les deux modes :

3.1

Dterminer la fonction drive


de $f(x)$ :
\begin{displaymath}
f(x)=\sqrt{\frac{x-1}{x+1}}
\end{displaymath}
si elle existe.

Dterminer la fonction drive


de f (x) :
r
x1
f (x) =
x+1
si elle existe.

Cet exemple nous montre donc que lon entre en mode mathmatique
interne grce au symbole $, et que le mme symbole $ permet
den sortir. Dautre part, on utilise ici lenvironnement displaymath
qui est le plus simple pour produire des quations. Ce dernier peut
tre saisi grce aux commandes \[ et \] (cf. 3.7.1 page 54).
Nous vous prsenterons au 3.7 les dirents environnements de
LATEX.

3.2 Commandes usuelles


3.2.1

Indice et exposant

Comme mentionn au 1.4.1 page 12, _ et ^ sont les commandes


permettant de produire respectivement indice et exposant. Il est ncessaire de grouper les arguments entre accolades pour que ces
commandes agissent sur plusieurs symboles.
x_2

x2

x_{2y}

x2y

x_{t_0}

x t0

x^2

x2

x^{2y}

x2y

x_{t^0}

x t0

x^{2y}_{t_0}

x2y
t0

x_{t^1}^{2y}

x2y
t1

3.2 Commandes usuelles

3.2.2

45

Fraction et racine

\begin{displaymath}
\sqrt{\frac{1+\sqrt[3]{3x+1}}
{3x+\frac{1-x}{1+x}}}
\end{displaymath}

3.2.3

3.2

Voici comment produire racines et fractions :


la commande \frac{hnumi}{hdenomi} produit une fraction
forme par le numrateur hnumi et le dnominateur hdenomi ;
la commande \sqrt[hni]{expr} ache la racine hnie de son
argument hargi.
Notons que ces deux commandes ne produisent pas le mme achage
selon le mode mathmatique : interne
ou quation. Ainsi voici une

fraction : sin 1x+1 et une racine : 3x2 1 et leur quivalent en mode


quation :
p
1
3x2 1
sin x + 1
Pour en nir avec ces deux commandes, voyons comment elles
peuvent tre imbriques et leet que cela produit :
s

1 + 3 3x + 1
3x + 1x
1+x

Symboles

Symboles usuels
Le tableau 3.1 donne les macros produisant une partie des symboles dont vous pourriez avoir besoin.
Table 3.1: Symboles
\pm
\otimes
\mp
\oslash
\div

\odot

\ast

\leq

\times

\geq

\bullets
\equiv
\circ

\ll

\star

\gg

\setminus \
\sim

\oplus
\simeq
\ominus
\approx

mathmatiques usuels

\cong
\imath
=
\subset

\jmath
\supset

\ell
\subseteq
\aleph
\supseteq
\nabla
\in

\|
\ni

\partial
\emptyset
\wedge
\forall

\vee
\infty

\cup
\exists

\cap

Mathmatiques

46
ch. C

p. 257

Nous avons recens prs de 450 symboles disponibles avec


les packages latexsym et amssymb. Notre but nest donc pas
de les prsenter ici ! Le tableau 3.1 page prcdente est une slection
parmi les symboles standard. Nous avons jug quils faisaient partie des
symboles les plus utiles ce qui, malgr la prsence tout fait fortuite
de laleph dans ce tableau, dmontre que le niveau en mathmatiques
de lauteur de ce document avoisine le ras des pquerettes.

Points de suspension

$C=\{\vec{c}_0,\vec{c}_1,\dots,
\vec{c}_N\}$
est lensemble des $N$ couleurs.

C = {~c0 , ~c1 , . . . , ~cN } est lensemble des N couleurs.

La commande \cdots produit des points centrs verticalement sur


le signe gal :
$\vec{\mu}=\frac{1}{N}
(\vec{c}_0+\vec{c}_1+\cdots+\vec{c}_N)$
est la moyenne des $N$ couleurs.

3.4

3.3

On utilise couramment pour conomiser de lencre des points de


suspension dans des formules. Il en existe de trois types. La commande \dots produit des points poss sur la ligne :

~ = N1 (~c0 + ~c1 + + ~cN ) est la


moyenne des N couleurs.

Enn les commandes \vdots et \ddots sont utiliser essentiellement dans les matrices (cf. 3.6 et lexemple 3.15). Ces deux com.
.
mandes produisent respectivement : .. et . . .
Flches
Voici un moyen simple pour mmoriser les commandes permettant de gnrer des ches :
toutes les commandes nissent par arrow ;
le prxe obligatoire left ou right indique la direction ;
le prxe facultatif long donne une version longue ;
la premire lettre de la commande mise en majuscule rend la
che double ;
on peut mettre des ches aux deux extrmits en collant les
deux mots left et right.
ainsi :
\rightarrow
\Leftarrow

donne
donne

\Longleftarrow
\Longleftrightarrow

donne
donne

3.3 Fonctions

47

Lettres grecques
Les lettres grecques sutilisent de la manire la plus simple qui
soit : en les appelant par leur nom. Ainsi : \alpha donne et \pi,
. Mettre une majuscule la premire lettre de la commande,
donne la majuscule correspondante : \Gamma donne . Attention,
toutes les majuscules ne sont pas disponibles dans lalphabet grec, on
mettra par exemple en majuscule, avec la lettre A (la commande
\Alpha nexiste pas).
Lensemble des rels
Une question cruciale que se posent les rdacteurs potentiels
de documents scientiques est : Comment peut/doit-on crire le
R de lensemble des rels ? . Les avis sont partags ce sujet.
Historiquement il semble quinitialement, dans les ouvrages de mathmatiques, le symbole des rels tait typographi en gras ( Soit
x R ) et que les professeurs pour reprendre ces notations sur un
tableau avec une craie avaient recours lartice de repasser plusieurs fois sur la lettre R ; cette pratique pnible aurait volue
vers lcriture bien connue : Soit x . Il y a donc les adeptes
du R, du R, etc. Pour choisir par soi-mme, voir les packages :
bbm qui propose la commande \mathbbm{R} produisant ,
la commande \mathbbmss{R} produisant , etc.
bbold qui propose la commande \mathbbm{R} produisant ,
etc.
amssymb qui propose les commandes \mathbb{R} produisant
R ainsi que \mathbf{R} produisant R

3.3 Fonctions
3.3.1

Fonctions standards

3.5

$\sin^2x + \cos^2 x=1$

sin2 x + cos2 x = 1

3.6

Lorsquon veut produire des fonctions mathmatiques classiques


(logarithmes, trigonomtrie,...), il faut utiliser les fonctions de LATEX
prvues cet eet. Voici un exemple pour vous en convaincre.

sin2 x + cos2 x = 1

Et sans les fonctions LATEX :


$sin^2x + cos^2x=1$

Mathmatiques

48

3.7

\begin{displaymath}
T=\arg \max_{t<0} f(t)
\end{displaymath}

T = arg max f (t)


t<0

Notez lutilisation de loprateur indice _ et le placement rsultant


avec la commande \max.

3.3.2

Intgrales, sommes et autres limites

LATEX utilise une syntaxe simple permettant de produire intgrales, sommes, etc. La syntaxe est la suivante :
\hopi_{hinfi}^{hsupi}
o hopi est lun des oprateurs sum, prod, int ou lim et hinfi
et hsupi sont les bornes infrieure et suprieure de la somme ou de
lintgrale. Ainsi on peut donc crire :
Somme des termes dune suite
gomtrique :
\begin{displaymath}
\sum_{i=0}^{n}q^i=
\frac{1-q^{n+1}}{1-q}
\end{displaymath}

Somme des termes dune suite


gomtrique :
3.8

La dirence rside dans le fait que LATEX traite la chane cos


comme une suite de variable (donc produites en italiques) alors que
la fonction \cos produit cos en roman. Une autre dirence importante est le placement dventuels indices (cf. lexemple de la
fonction \max ci-dessous). Parmi les fonctions mathmatiques standard de LATEX, on trouvera :
toutes les fonctions trigonomtriques : \sin, \cos et \tan. En
rajoutant arc devant, vous aurez les rciproques, et h derrire
vous obtiendrez les versions hyperboliques.
les logarithmes nprien et dcimal dnis respectivement par
les fonctions \ln et \log.
les fonctions \sup, \inf, \max, \min, et \arg qui vous permettront de gnrer des formules de ce genre :

n
X
i=0

qi =

1 q n+1
1q

Q
Le produit sutilise de manire analogue avec la commande \prod.
Un exemple avec une intgrale, en veux-tu en voil :

On dfinit le logarithme
nprien de $x>0$ comme suit :
\begin{displaymath}
\ln(x)=\int_{1}^{x}\frac{1}{t}
\,\mathrm{dt}
\end{displaymath}

3.9

3.4 Des symboles les uns sur les autres

49

On dnit le logarithme nprien de x > 0 comme suit :


Z x
1
dt
ln(x) =
1 t

La commande \, insre un lger blanc avant le dt (cf. 3.5.1). Si


Hvous tes plutt curviligne, vous pouvez utiliser \oint qui donne :
. Bon, je vous donne juste un exemple avec une limite mais cest
bien parce que cest vous :
f (x) admet une limite en x0 :
3.10

$f(x)$ admet une limite $\ell$ en $x_0$ :


\begin{displaymath}
\lim_{x\rightarrow x_0}f(x)=\ell
\end{displaymath}

lim f (x) =

xx0

Jespre que vous avez apprci le beau ; pour se xer les ides
sur les deux modes mathmatiques, voici les mmes formules
Pn mais
incrustes dans le texte. Donc dabord la sommation : i=0 q i =
Rx
1q n+1
, ensuite lintgrale : 1 1t dt = ln(x), et enn la limite :
1q
limxx0 f (x) = .

3.4 Des symboles les uns sur les autres


3.4.1

Loprateur not

Soit $x \not\in I$ un rel...

3.11

Loprateur \not permet de produire la ngation dune relation :


Soit x 6 I un rel...

le rsultat est donc un slash sur le symbole suivant. Attention,


cet oprateur nest pas trs performant : $\not\longrightarrow$
donne : 6, mais est satisfaisant pour les symboles dune largeur
raisonnable.

Mathmatiques

50

3.4.2

Accents

Il est souvent utile 3 daccentuer les symboles en guise de notation


particulire. Voici les accents disponibles :
\hat{x}
\acute{x}
\bar{x}

3.4.3

\check{x}
\grave{x}
\dot{x}

x
`
x

\breve{x}
\tilde{x}
\ddot{x}

Vecteurs

Il existe deux 4 faons dobtenir un vecteur :


\vec pour les petits symboles car \vec est une commande
daccentuation ;
\overrightarrow dans les autres cas.
Soit $\overrightarrow{A\!B}$ dfini
dans la base
$(\vec{\imath},\vec{\jmath})$.

3.12

Soit AB dni dans la base


(~, ~).

~ (voir aussi le paraNotez que $\vec{A\!B}$ aurait donn : AB


graphe 3.5.1 pour la signication de la commande \!). Remarquez
galement les commandes \imath et \jmath produisant les lettres
i et j sans point : et .

3.4.4

Commande stackrel

La commande \stackrel permet de poser deux symboles lun


sur lautre :
\stackrel{hsymb1 i}{hsymb2 i}
met le hsymb1 i sur hsymb2 i. Par exemple :
x\stackrel{f}{\longmapsto}y
f

donne : x 7 y.
3. En ralit les mathmaticiens dignes de ce nom raffolent de ce genre de
petits chapeaux au dessus des symboles ; certains en superposent mme deux,
voire trois...
4. Le package esvect dEddie Saudrais permet de produire des vecteurs avec
des flches mieux dessines que celles proposes ici.

3.5 Deux principes importants

51

Table 3.2: Espacement en mode mathmatique


\!



(rien)



\,



\;





\quad

\:



\qquad

3.5 Deux principes importants


Pour bien comprendre la manire dont LATEX gnre les formules,
il faut saisir les deux principes suivants :
Espaces : LATEX ignore les espaces entre les symboles mathmatiques ; ainsi : $x+1$ produira la mme formule que $x + 1$.
Cest LATEX qui insre les espaces lendroit quil juge le plus
judicieux ;
Texte 5 : tout groupe de symboles est considr comme un groupe
de variables ou fonctions ; ainsi $x=t avec t>0$ produira
x = tavect > 0 et non ce que vous espriez : x = t avec
t > 0.
Une fois ces deux principes acquis, voyons comment on peut faire
avec.

3.5.1

Espaces en mode mathmatique

Tout dabord, sachez que LATEX fait un choix despacement qui


est en gnral correct. Cependant le jour o vous aurez jouer
lXXXXX
///////
enculeur de mouche, les commandes du tableau 3.2 vous permettront dinsrer un ou des espaces dans des formules. Dans ce tableau,
on montre leet des commandes despacement entre deux symboles
.
Pour ce qui concerne les mouches, sachez que lauteur de ce manuel a sournoisement insr un certain nombre despacements au
numrateur du calcul de la somme des termes de la suite gomtrique ( 3.3.2 page 48), pour aligner les deux q de la fraction. Voici
5. Linsertion de texte dans une formule ne devient un problme que dans un
environnement de la famille displaymath, puisque vous pouvez toujours crire
$x=t$ avec $t>0$ , bien sr !

Mathmatiques

52
ce que donnait la formule par dfaut :
n
X
i=0

qi =

1 q n+1
1q

et voyons si les histoires de q vous donnent le sens de lobservation.

3.5.2

Texte en mode mathmatique

Le moyen le plus simple dinsrer du texte dans une formule est


de de le mettre en bote et dinsrer quelques espaces :

Soient les suites (un ) et (vn ) :


3.13

Soient les suites $(u_n)$ et $(v_n)$ :


\begin{displaymath}
u_n=\ln n\quad
\mbox{et}\quad v_n=(1+\frac{1}{n})^n
\label{ex-maths-suite}
\end{displaymath}

un = ln n

et

vn = (1 +

Vous trouverez des dtails sur la commande \mbox la section 4.4.1


page 72. Si vous avez pens mettre en route le package amsmath
vous serez en mesure dutiliser la commande \text en lieu et place
de \mbox.

3.6 Array : simple et efficace


Lenvironnement array est un environnement qui vous permettra de produire la grande majorit de vos formules. Comme son
nom lindique il range des objets en ligne et colonne. En fait cest
le pendant de lenvironnement tabular du mode texte. Et comme
tabular, array ne passe pas la ligne.

3.6.1

Comment a marche

La syntaxe rappelle celle de tabular :


\begin{array}[hvposi]{hformati} ... \end{array}
o hformati prcise pour chaque colonne lalignement : c pour centr, l pour align gauche et r pour align droite ; largument
optionnel hvposi spcie quant lui le positionnement vertical du
2.2.4 tableau. Comme dans les tableaux, on notera lutilisation des comp. 26
mandes :

1 n
)
n

3.6 Array : simple et efficace

53

& comme sparateur de colonne ;


\\ pour passer la ligne.

3.14

Soit $A=\begin{array}{rc}
-1 & 1 \\
3 & 4
\end{array}$ la matrice ...

1
3

Soit A =
...

1
4

la matrice

Voici un exemple utilisant les points de suspensions :

3.15

\begin{displaymath} A=\left[\begin{array}{ccc}

a_{00} & \dots & a_{0n}\\


a00
.
\vdots & \ddots & \vdots\\
A = ..
a_{n0} & \dots & a_{nn}
an0
\end{array}\right]\end{displaymath}

3.6.2

a0n
..
.
ann

...
..
.
...

Array et les dlimiteurs

On utilise couramment lenvironnement array pour produire des


matrices. Il faut alors avoir recours des dlimiteurs. Ces dlimiteurs
sont de la famille des parenthses et permettent denglober un objet mathmatique entre crochets, accolades, etc. La syntaxe est la
suivante :
\lefthdelim1 i hmobjeti \righthdelim2 i

o hdelim1 i et hdelim2 i sont deux dlimiteurs et hmobjeti un objet


mathmatique.
Parmi les dlimiteurs, voici les plus usits :
( et )

()

[ et ]

[]

\{ et \}

{}

\lfloor et \rfloor

||

\|

\lceil et \rceil
|

\langle et \rangle

hi

kk

soit $I=
\left[\begin{array}{cc}
1&0 \\ 0&1
\end{array}\right]$
la matrice identit.

3.16

Lintrt des dlimiteurs est quils sadaptent automatiquement la


taille des objets quils entourent :

soit I =
identit.

1
0

0
1

la matrice

Mathmatiques

54

Soient les suites $(u_n)$ et $(v_n)$ :


\begin{displaymath}
u_n=\ln n\quad\mbox{et}
\quad v_n=\left(1+\frac{1}{n}\right)^n
\end{displaymath}

3.17

On peut galement reprendre lexemple 3.13 page 52 avec des dlimiteurs pour ajuster la taille des parenthses :
Soient les suites (un ) et (vn ) :
n

1
un = ln n et vn = 1 +
n

Il doit toujours y avoir une commande \right pour une commande \left. Cependant, il nest pas ncessaire davoir les
mmes symboles droite et gauche.

3.6.3

3.18

soit $ S_i=\left\{\begin{array}{rl}
-1 & \mbox{si $i$ est pair}
\\
1 & \mbox{sinon.}
\end{array}\right.$

soit Si =

1
1

si i est pair
sinon.

Pour vous simplifier la vie...

Le package amsmath permet de saisir plus simplement les matrices avec notamment deux environnements : pmatrix (p pour parenthse) et bmatrix (b pour bracket).
\begin{displaymath}
\bar{\bar{\sigma}}=\begin{bmatrix}
\sigma_{11} & \sigma_{12} \\
\sigma_{21} & \sigma_{22} \\
\end{bmatrix}
\end{displaymath}

3.19

Voici un exemple o on utilise la commande \right. pour spcier


que lon nutilise pas de symbole droite :


= 11

21

12
22

3.7 quations et environnements


Nous prsenterons dans ce paragraphe trois environnements standard de LATEX permettant de produire des formules.

3.7.1

Lenvironnement displaymath

Vous lavez compris, si vous avez lu jusquici, displaymath afche une formule centre, interrompant le paragraphe. Un raccourci

3.7 quations et environnements

55

agrable de :
\begin{displaymath}...\end{displaymath}

Distance colorimtrique :\[


\Delta E=\sqrt{
\Delta L^{*2}+ \Delta a^{*2}
+\Delta b^{*2}} \]

3.7.2

3.20

est : \[...\]. Ainsi :


Distance colorimtrique :
p
E = L2 + a2 + b2

Lenvironnement equation

Lenvironnement equation est lquivalent du prcdent, sauf


quil numrote la formule.

ln(ab) = ln(a) + ln(b)

Loption de classe de document leqno met le numro des quations gauche. Et loption fleqn aligne les quations gauche,
au lieu de les centrer.

3.7.3

Formules multi-lignes

Dans une prcdente dition, nous finissions la prsentation


des environnements standard par lenvironnement eqnarray qui
permet de produire des formules de plusieurs lignes. Sachez que cest
mal. Il existe dailleurs des crits ce sujet (lire par exemple [12] ou
[14]), vous expliquant comment produire des documents propres .
Prenez bien conscience quutiliser eqnarray (et bien dautres choses)
est un pch, et que si vous cdez malgr tout la tentation, linquisition vous retrouvera un jour ou lautre par lintermdiaire dun moteur
de recherche. Aucune confession ou indulgence ne pourra vous sortir
de ce mauvais pas, vous tes prvenus.

Nous vous prsentons donc ici lenvironnement align du package


amsmath :
\\ passe la ligne ;
chaque ligne est numrote sauf si la commande \nonumber
est prsente dans la ligne ;
on procde lalignement avec deux 6 oprateurs &.
6. Puisquil y a trois colonnes.

retenir : si a > 0 et b > 0,


3.21

retenir : si $a>0$ et $b>0$,


\begin{equation}
\ln(ab)=\ln(a)+\ln(b)
\end{equation}

(3.1)

Mathmatiques

\begin{align}
(a+b)^2 & =
& =
\end{align}

(a+b)(a+b)\nonumber\\
a^2+b^2+2ab

3.22

56

(a + b)2 = (a + b)(a + b)
= a2 + b2 + 2ab

(3.2)

Il existe une forme toile de lenvironnement : align* o


aucune des lignes nest numrote. Si vous voulez faire rfrence
certaines lignes dun align, il vous faudra poser autant de \label
ncessaires sur chaque ligne correspondante.

Pour faire numroter une quation stalant sur plusieurs lignes on


peut utiliser lenvironnement split (lui aussi fourni avec amsmath) :
\begin{equation}
\begin{split}
(a+b)^2 & = (a+b)(a+b)\\
& = a^2+b^2+2ab
\end{split}
\end{equation}

(a + b)2 = (a + b)(a + b)
3.23

= a2 + b2 + 2ab

3.8 Styles en mode mathmatique


3.8.1

Fontes

LATEX fournit plusieurs commandes permettant de changer de


fontes dans les modes mathmatiques. Par dfaut tout symbole ou
suite de caractres (autre quune fonction) est produit en italique
dans le document nal. Or dans certains cas, il est utile de pouvoir
forcer le style de fonte. Voici comment raliser un tel exploit :
Soit
Soit
Soit
Soit
Soit
Soit

$\mathit{A\in\Phi}$
$\mathrm{A\in\Phi}$
$\mathbf{A\in\Phi}$
$\mathsf{A\in\Phi}$
$\mathtt{A\in\Phi}$
$\mathcal{A}\in\Phi$

Soit A
Soit A
Soit A
Soit A
Soit A
Soit A

La commande \mathcal doit prendre exclusivement des lettres


majuscules latines comme argument. Dans le cas contraire, les
rsultats seront farfelus. Par exemple, la squence :
\mathcal{abcd\Gamma}
donne .

(3.3)

3.8 Styles en mode mathmatique

3.8.2

57

Taille des symboles

LATEX distingue quatre styles dcriture des formules. Ces modes


sont utiliss suivant la situation dans laquelle se trouve LATEX
lorsquil produit une partie dune formule :
texte pour une formule insre dans le texte courant ;
equation pour une formule sous forme dquation ;
indice pour lcriture des indices ;
sous-indice pour les indices dindices
chacun de ces modes peut tre enclench explicitement par lutilisateur grce aux dclarations suivantes :
\textstyle pour le mode texte ;
\displaystyle pour le mode quation ;
\scriptstyle pour le mode indice ;
\scriptscriptstyle pour le mode indice dindice
Voici deux exemples illustrant comment forcer le mode texte en
mode quation et inversement :
deux produits : $\prod_{1}^{n}f_i$
et $\displaystyle\prod_{1}^{n}f_i$

3.8.3

et inversement :
3.24

et inversement :
\[ \prod_{1}^{n}f_i
\mbox{ et }\textstyle\prod_{1}^{n}f_i \]

deux produits :

n
Y

fi et

Qn

fi et

Qn

fi

n
Y
1

Crer de nouveaux oprateurs

3.25

Imaginez que vous ayez besoin de crer un oprateur spcial


nomm burps . Il sura de procder comme suit :
\newcommand{\burps}{%
\mathop{\textrm{burps}}}
$x=\burps_i f(i)$

x = burpsi f (i)

3.26

Un autre exemple, pour franciser la fonction arcsinus (produisant


par dfault arcsin), on pourra crire :
$\theta = \arcsin x$
\renewcommand{\arcsin}{%
\mathop{\textrm{Arcsin}}\nolimits}
$\theta = \arcsin x$

= arcsin x = Arcsin x

fi

Mathmatiques

58

La commande \nolimits indique que loprateur concern ne fera


pas usage darguments en indice ou exposant comme le font les oprateurs \lim, \int, etc. En outre les deux exemples prcdents utilisent les commandes \newcommand et \renewcommand dont il est
question au paragraphe 4.5 page 79.
Enn une autre voie possible si vous avez pris soin de charger le
package amsmath est de dclarer dans le prambule :

\[x=\vlunch_i f(\theta)\]
o $\theta = \zirgl y$

3.27

\DeclareMathOperator*{\vlunch}{vlunch}
\DeclareMathOperator{\zirgl}{Zirgl}

x = vlunch f ()
i

o = Zirgl y

Conclusion
Ce chapitre prsente les fonctions de base pour produire des
formules. Ces commandes susent pour la plupart des documents
scientiques. Si vous tes amens rdiger des documents trus de
formules complexes, il est possible que les seules macros de LATEX
ne susent plus. Cest pourquoi la clbre American Mathematical Society a conu pour vous un package nomm AMSTEX (mise
en route : \usepackage{amsmath}) capable de gnrer des formules
particulirement tordues.

Chapitre

Sommaire
4.1
4.2
4.3
4.4
4.5
4.6

Compteurs
Longueurs
Espaces
Botes
Dfinitions
Mais encore ?

Un pas vers la sorcellerie


Et lorsque lAgneau ouvrit le septime sceau
il se fit un silence dans le ciel,
environ une demi-heure...
LApocalypse Ap 8 1.

vant de continuer lexploration de ce systme monstrueux

A
et magnique quest L TEX, il est ncessaire de faire une pause
et de prendre connaissance de quelques concepts importants. Il nous
A

semble en eet fondamental dassimiler ces notions pour pouvoir


jouer les Hercule Poirot dans les nombreux chiers qui forment
le systme. Nous prsenterons dans ce chapitre les compteurs, les
longueurs, les espaces et les botes. Ces quatre notions vous seront
utiles pour utiliser LATEX autrement quen acceptant docilement ce
quil vous propose.
Ce chapitre traite de concepts assez subtils saisir 1 ; nous
vous conseillons donc vivement dexprimenter car les outils
prsents ici sont ceux qui offrent le plus de satisfaction mais qui entranent aussi les plus grandes pertes de cheveux (essentiellement par
arrachage).

1. Lauteur nest lui-mme pas sr davoir tout compris...

59

Un pas vers la sorcellerie

60

4.1 Compteurs
Toute partie dun document faisant lobjet dune numrotation
est gre par un compteur. Ces compteurs peuvent tre incrments
ou dcrments, remis zro, etc. On peut aussi en crer pour un
usage personnel.

4.1.1

Compteurs disponibles

Les compteurs sont principalement lis aux titres, aux numros


de pages, aux environnements ottants (environnements figure et
table), aux quations (environnement equation), aux notes de bas
de page et aux items dnumration (environnement enumerate).

Table 4.1: Les compteurs de LATEX


part
chapter
section
subsection
subsubsection

paragraph
subparagraph
page
equation

figure
table
footnote
mpfootnote

enumi
enumii
enumiii
enumiv

Le tableau 4.1 vous donne le nom des principaux compteurs de


LATEX. Vous remarquerez quils portent gnralement le nom des objets auxquels ils sont associs. Les compteurs enumi, ..., enumiv sont
associs aux items de niveaux 1 4 de lenvironnement enumerate.
Le compteur mpfootnote est le compteur de note de bas de page de
lenvironnement minipage dont il est question au paragraphe 4.4.3
.

4.1.2

Manipulation

Nous vous donnons, dans les paragraphes qui suivent, les outils
de base pour manipuler les compteurs. Il est important de noter que
les compteurs sont des variables globales. Ainsi les trois commandes
dcrites plus bas ont une porte globale. Il est galement utile de
noter que ces variables sont des entiers.
Cration
On peut crer un nouveau compteur grce la commande :

4.1 Compteurs

61

\newcounter{hcpteuri}[hcpt_maitrei]
qui cre un nouveau compteur hcpteuri. Si largument optionnel
hcpt_maitrei est prsent, le compteur hcpteuri est remis zro
chaque fois que le compteur matre hcpt_maitrei est incrment.
Affectation
On aecte une valeur un compteur de la manire suivante :
\setcounter{hcompteuri}{hvaleuri}
o hcompteuri est le compteur que lon veut modier, et hvaleuri la
valeur que lon veut lui aecter.
Incrmentation
On peut incrmenter ou dcrmenter un compteur grce la
commande :
\addtocounter{hcompteuri}{hvaleuri}
o hvaleuri est un nombre positif (resp. ngatif) pour raliser une incrmentation (resp. dcrmentation). Illustrons lutilisation de cette
commande en entrant la ligne suivante dans notre document :
\addtocounter{footnote}{357}
pour changer 359 la numrotation des notes de bas de page. Pour
que tout rentre dans lordre, avec les notes de bas de page suivantes,
nous avons prfr entrer dans notre source, la commande :
\addtocounter{footnote}{-357}
et normalement 3 , nous devrions avoir une numrotation correcte.

4.1.3

Affichage

Pour acher un compteur on utilise la commande :


\thehnom-du-compteuri
En fait, toute commande ou environnement qui donne lieu lachage dun compteur fait appel ce type de commande. Ainsi, on a
par exemple :
359. Mme si ce changement est un peu ridicule...
3. On croise les doigts !

62

Un pas vers la sorcellerie

\thepage produit : 61 et est appele notamment chaque


saut de page,
\thefootnote produit : 3 et est appele par \footnote,
\thesubsection produit : 4.1.3 et est appele par la commande \subsection,
...
Les commandes de la famille \the sont gnralement dnies
partir des commandes de formatage suivantes :
\arabic{hcompteuri},
\roman{hcompteuri} et \Roman{hcompteuri},
\alph{hcompteuri} et \Alph{hcompteuri}
en voici quelques exemples :
\arabic{page} produit : 62 ;
\alph{footnote} produit : c et \Alph{section} produit : A ;
\Roman{subsection} produit : III et \roman{page} produit : lxii ;
...
Il est courant de rednir les commandes de la famille \the pour
personnaliser un document. Par exemple, dans la classe de document
utilise pour ce manuel, la commande \thefigure est dnie comme
suit :
\arabic{chapter}.\arabic{figure}
ce qui produit dans les lgendes des gures une numrotation forme
par : 1) le numro du chapitre en chire arabe, 2) un point, et
3) le numro de la gure en chire arabe. Il est possible de rednir
cet achage en dnissant la commande \thefigure par exemple
comme suit :
(\Roman{chapter}):\arabic{section}.\arabic{figure}
Ce qui permet dobtenir un
numro de gure relativement
immonde dans les lgendes
quelque peu dirent du style
prdni. Ici, on a donc redni
la commande \thefigure pour
produire une numrotation forFigure (IV):1.1: La lgende
me par le numro du chapitre
entre parenthses et en chires
romains, suivi du numro de section et du numro de la gure en
chire arabe, spars par un point. Le Fig. ainsi que le tiret qui

4.2 Longueurs

63

suit le numro de la gure sont quant eux dnis au niveau de la


commande \caption...

4.2 Longueurs
Si les compteurs sont ddis la numrotation des objets dun
document, les longueurs dnissent lencombrement dune entit. Il
sagit en quelque sorte, dun type de donne de LATEX destin
exprimer les dimensions dun objet.

4.2.1

Units

Toutes les dimensions doivent avoir une unit ; une dimension de


type rigide 4 a la forme suivante :
hnombreihuniti
o hnombrei est un nombre positif ou ngatif avec ventuellement
une partie dcimale, et huniti une unit de mesure reconnue par
LATEX. Voici une liste non exhaustive des units lgales :
cm pour centimtre ;
mm pour millimtre ;
in pour les allerginch au systme mtrique (environ 2.54cm) ;
pt pour point : couramment utilis en typographie :

1
72.27

inch ;

em : la largeur de la lettre M de la fonte courante ;


ex : la hauteur de la lettre x de la fonte courante
Notez que les units em (resp. ex) sont gnralement utilises pour
des dimensions horizontales (resp. verticales) et permettent de manipuler des dimensions dpendantes de la taille de la fonte courante.
Voici quelques exemples de dimensions :
1cm
1in
3mm
2em
10pt

:
:
:
:
:

4. On verra plus loin quil existe des dimensions lastiques.

Un pas vers la sorcellerie

64

4.2.2

Quelques longueurs de LATEX

Il existe dans LATEX et dans chaque extension des longueurs prdnies. Ces longueurs dterminent en gnral, les dimensions de
certaines parties du document. Ainsi :
\parindent est la dimension de lindentation en dbut de
paragraphe. Cette dimension est prdnie 15pt ;
\textwidth et \textheight dnissent la largeur (resp. la
hauteur) du texte ;
\baselineskip reprsente la distance entre la base de la ligne
et la base de la ligne suivante (10pt dans ce document) ;
\parskip la distance sparant deux paragraphes ; cette distance est initialise 0pt plus 1pt 5 ;
...
Il est important de comprendre quil est possible dexprimer une
dimension en fonction dune de ces dimensions internes . Ainsi :
0.5\textwidth
reprsente la moiti de largeur de la page, et :
3\parindent
quivaut trois fois lindentation des paragraphes. Notez aussi que
lon peut crire -\baselineskip pour : -1\baselineskip

4.2.3

Manipulation des longueurs

Comme pour les compteurs, il existe quelques commandes permettant de manipuler les dimensions.
Cration
La commande suivante cre une nouvelle longueur :
\newlength{hdimi}
o hdimi est le nom de la nouvelle dimension initialise 0pt (cf.
exemple page 66).
Attention, quel que soit lendroit o intervient la commande
\newlength, la longueur dfinie est toujours globale. De plus,
dclarer deux fois la mme longueur provoque une erreur. Par contre,
la modification dune longueur est locale au groupe ({...}) o elle
survient.
5. Cf. les dimensions lastiques pour avoir la signification du plus.

4.2 Longueurs

65

Affectation
On peut aecter une valeur une longueur avec la commande :
\setlength{hdimi}{hvali}
qui aecte la valeur hvali la longueur hdimi.
Incrmentation
On incrmente une longueur comme suit :
\addtolength{hdimi}{hvali}
qui a pour eet daugmenter la longueur hdimi de la valeur hvali.
Alors que vous lisez fbrilement ce paragraphe, nous nous
sommes permis daugmenter la longueur \parindent de 30 points
avec :
\addtolength{\parindent}{30pt} Alors que vous
lisez fbrilement ce paragraphe...

pour illustrer lutilisation de lincrmentation des longueurs. Aprs


ce paragraphe, on a crit :
\addtolength{\parindent}{-30pt}
pour que tout rentre dans lordre.
Obtenir les dimensions dun objet
Comme il en a t vaguement question prcdemment, au niveau de TEX, les dirents objets qui composent le document sont
assembls dans des botes. Ces botes sont positionnes les unes par
rapport aux autres en alignant leur point de rfrence. Ces points
aligns forment une ligne imaginaire confondue avec la base de la
ligne. Toute bote est caractrise par trois dimensions :
sa largeur ;
sa hauteur : du point de rfrence au haut de la bote ;
sa profondeur : du point de rfrence jusquau bas de la bote.
Voici par exemple comment sont assembles les botes du mot
Ingnierie :

Ingnierie

les symboles reprsentent les points de rfrence. On voit ici que


toutes les botes ont une profondeur nulle sauf celle de la lettre g.

2.10
p. 38

Un pas vers la sorcellerie

66

Mais fermons la parenthse concernant les botes !


Il est donc possible dextraire les caractristiques dun objet (une
lettre, un mot, une bote, etc.) laide des commandes suivantes :
\settowidth{hdimi}{hobji}
\settoheight{hdimi}{hobji}
\settodepth{hdimi}{hobji}

\newlength{\malongueur}
\settowidth{\malongueur}{Machin chose}
\begin{itemize}
\item Machin chose bidule
\item \hspace{\malongueur} truc
\end{itemize}

4
4.3

4.1

trois commandes qui aectent la dimension hdimi respectivement


la largeur, la hauteur et la profondeur de lobjet hobji. Par exemple :

Machin chose bidule

truc

La longueur \malongueur contient alors la largeur du texte Machin


chose et est utilise pour insrer un blanc (voir le paragraphe sur
les espaces).

p. 68

4.2.4

Longueurs lastiques

Les dimensions prsentes jusquici sont des dimensions rigides 6 ,


il existe cependant des longueurs lastiques ou ressort. Au niveau de
TEX, un grand nombre de dimensions sont dnies comme suit :
hvali plus hp_vali minus hm_vali

cette syntaxe permet de dnir une longueur ayant la dimension


hvali, mais pouvant selon les circonstances sagrandir ou se rtracter.
Et ainsi, si on appelle hdimi la dimension cre, on a :
val m_val 6 dim 6 val + p_val
Par exemple, la longueur \parskip qui spare deux paragraphes
conscutifs, est xe :
0pt plus 1pt
ce qui signie quau cas o la page est un peu lche, LATEX insrera entre les paragraphes un blanc vertical de 1 point. Ce type de
6. Sauf \parskip.

4.2 Longueurs

67

dimension prend tout son intrt pour mettre en place un rglage


trs n des espaces verticales ou horizontales. Enn, les utilisateurs
de LATEX auront la chance inoue de pouvoir manipuler une autre
famille de longueurs lastiques tout aussi intressante. Cette famille
possde les deux particularits suivantes :
1. une longueur nulle ;
2. la capacit de stirer indfiniment avec une certaine force.
LATEX 2 dispose dune commande permettant de spcier une longueur lastique en prcisant son degr dlasticit :
\stretch{hnbrei}

zro\hspace{\stretch{1}}%
tiers\hspace{\stretch{2}}un

4.2

o hnbrei est la force du ressort. Ce nombre peut tre sign et avoir


une partie dcimale. Voici un exemple :
zro

tiers

un

Ce code LATEX introduit des espaces 7 de longueurs lastiques entre


les mots zro tiers un . Le deuxime ressort a une raideur deux
fois plus importante que le premier. Lespacement est donc double.
Vous noterez aussi que ces ressorts ont une lasticit relative mais
infinie ; cest pourquoi les mots zro et un sont pousss
contre les marges. Enn, sachez que \fill est un raccourci agrable
de \stretch{1}.

4.2.5

Affichage

Il est parfois utile dacher la valeur dune longueur. Pour ce


faire on peut avoir recours la commande \showthe qui interrompt
la compilation pour acher la valeur de la longueur passe en paramtre. Ainsi :
\showthe\linewidth
acher la valeur de la longueur \linewidth en interrompant la
compilation. On aura sur le terminal quelque chose du genre :

1.6
p. 15

[ ... ]
Le laus initial
Document Class: book 2001/04/21 v1.4 Standard LaTeX document
(/usr/share/texmf/tex/latex/base/bk12.clo)) (./test.aux)
7. Cest la commande \hspace qui produit une espace horizontale de longueur
dfinie par son argument.

Un pas vers la sorcellerie

68
> 17.62482pt.
l.10 \showthe\parindent

la valeur de la longueur
la longueur afficher

?
Lorsque la compilation est lance dans un terminal de commande,
une pression sur la touche <Entre> fait reprendre la compilation.
Comme indiqu la page 15, votre environnement de dveloppement ne vous permet peut tre pas directement davoir
accs aux messages de LATEX. vous de chercher o se trouvent ces
informations...

4.3 Espaces

4.3.1

Commandes de base

Pour insrer une espace 8 entre les objets, on dispose de commandes de la forme suivante :
\hdirispace{hdimi}
o hdimi est une longueur rigide ou lastique, et hdiri vaut :
v pour une espace verticale ;
h pour une espace horizontale.
Ainsi :
un saut\hspace{1cm}de \texttt{1cm}
\vspace{2\baselineskip}
et deux lignes vierges.

un saut

de 1cm

4.3

On appelle espaces les blancs que lon insre divers endroits


dans un document. Il existe des commandes permettant dinsrer
des blancs de longueur prdnie ou choisie par lutilisateur. Il sagit
bien sr de longueur au sens de LATEX.

et deux lignes vierges.

Dans certaines situations, TEX supprime les espaces. Il est alors


ncessaire dutiliser la forme toile des commandes despacement, savoir \hspace* et \vspace*. Les situations en question
sont :
8. Nous utilisons ici le genre fminin du mot espace qui dsigne alors les
petites tiges mtalliques utilises autrefois en imprimerie pour sparer les mots
et les lettres. Aujourdhui, le genre fminin est encore utilis dans le monde de
la typographie et de limprimerie.

4.3 Espaces

69

le dbut et la fin de page ;


le dbut et la fin dune ligne sil ne sagit pas de la premire ou de
la dernire ligne du paragraphe.

4.3.2

Quelques espaces prdfinies

On dispose de plusieurs commandes despacement, regroupes en


deux catgories selon le mode horizontal ou vertical.
Espaces horizontales
Voici quelques espaces rigides :
\enspace :
\quad
:
\qquad
:

soit 0.5\quad
soit 1em
soit 2\quad

et quelques espaces lastiques :


\hfill
: soit \hspace{\fill}
\hrulefill : comme \hfill mais trace une ligne
\dotfill
: comme \hfill mais trace des points

zro\hspace{1cm}un\par
zro \hspace{1cm}un\par
zro \hspace{1cm} un\par

4.4

Voici quelques exemples montrant lutilisation des espaces horizontales. Tout dabord, notez que les espaces entourant la commande
\hspace ne sont pas ignores :
zro
zro
zro

un
un
un

zro \hfill{} un\par


zro \hrulefill{} un\par
zro \dotfill{} un\par

4.5

Voici ensuite, les espaces lastiques de LATEX :


zro
un
zro
un
zro . . . . . . . . . . . . . . . . . . . . . . un

zro \dotfill{} demi \hfill{} un\par


zro \hrulefill{} tiers
\hspace{\stretch{2}} un\par

4.6

Et pour nir, la force relative des ressorts :


zro . . . . . . . . demi
tiers
zro

Vous aurez donc compris que les ressorts prdnis de LATEX (


savoir \hfill, \hrulefill, et \dotfill) ont une raideur de 1.

un
un

Un pas vers la sorcellerie

70
Espaces verticales

Voici trois grands classiques de la famille des espaces verticales :


\smallskip pour un petit saut vertical ;
\medskip pour un saut vertical moyen ;
\bigskip pour un grand saut vertical.
Ces espaces sutilisent comme la commande \vspace, avec pour effet :
dfaut :
suivant...

petite :

moyenne :

suivant...

suivant...

grande :
suivant...

Il existe une espace verticale lastique prdnie : \vfill quivalent :


\par\vspace{\fill}

cest--dire, un saut de paragraphe, suivi dune espace verticale de


dimension \fill.
\hrulefill{}

haut

haut
\vfill

fragile

\hfill{}fragile\hfill{}
\vspace{\stretch{2}}
\hfill{}bas

bas

\hrulefill{}
Il est important dutiliser la commande \vspace entre deux
paragraphes au risque davoir des rsultats surprenants. Il vaut
donc mieux prendre lhabitude dinsrer un saut de paragraphe une
ligne vierge ou une commande \par avant et/ou aprs \vspace.

4.4 Botes
La dernire section de ce chapitre sera ddie aux botes, et
vous verrez que le titre du prsent chapitre sera amplement justi !
Comme nous lavons aperu prcdemment, les botes sont des entits qui contiennent dautres lments (une bote pouvant en contenir

4.4 Botes

71

une autre). Ces entits peuvent dautre part tre positionnes selon
la fantaisie 9 de lutilisateur.
Il existe deux principaux types de botes (au niveau de TEX cest
un peu plus subtil) chacun deux ayant un comportement spcique.
Nous qualierons ces deux catgories comme suit :
bote simple
bote paragraphe
Nous verrons quune manipulation habile de ces botes permet de
produire des mises en page sophistiques particulirement utiles notamment lors de la conception de transparents.
Voici un premier exemple avec des botes simples qui, jen suis
sr, vous a saut aux yeux, cest le logo de TeX : TEX. Il sagit en
fait des trois lettres, T, E et X mises en bote et assembles avec
des dcalages horizontaux et verticaux :

TEX

ul
na
re

ul
na

ul

re

c
tr itro
o
n n

ul

renault
na

ci

na

et pour viter les querelles culturelles :

re

n n
o o
tr citr

ci

re

notez que la bote du E est dcale vers le bas et que les trois botes
se superposent. Un autre exemple :

Ceci est une bote paragraphe de 4cm de large.


Une telle bote est capable
le texte continue, et,
de contenir peu prs tout
ce quon trouve dans un
document LATEX.

p
un laf
m e !
b ati form
o que u
le
bo
te da m
n
ax
s ath
+
un b=
e
c

ici chaque mot est dans une bote. Chaque bote est ensuite place
par rapport aux autres avec moult dcalages et rotations. Pour en
nir avec les exemples prliminaires, nous vous donnons ici deux
exemples utilisant les botes paragraphes :

9. Humm... ainsi quavec patience et bonne humeur...

Un pas vers la sorcellerie

72

Voici une image en couleur, avec ses 3 composantes :


RRRR
RRRR
GGGG
RRRR
GGGG
BBBB
RRRR
GGGG
BBBB
GGGG
BBBB
BBBB

4.4.1

La premire catgorie les botes simples se comporte comme


des mots dans un paragraphe. Voici leurs caractristiques :
on peut imposer sa largeur,
sa hauteur est donne par ce quelle contient,
Elle ne doit pas contenir de saut de paragraphe
Sans bordure La commande \makebox permet de construire une
bote simple.
\makebox[hlargi][hposi]{hcontenui}

et \makebox[2cm][c]{hop !} une bote\par


et \makebox[3cm][r]{rehop !} une autre

4.8

o hlargi est la largeur dsire, hposi la position (c=centr, l=align


gauche ou r= droite) de hcontenui dans la bote. Voici quelques
exemples :
et
et
autre

hop !

une bote
rehop ! une

Les deux arguments hlargi et hposi sont optionnels et sils sont omis,
la largeur de la bote est celle du texte. Le cas chant on saisit :
\mbox{htextei}
au lieu de \makebox[][]{htextei}. On notera galement que loption s de la commande \makebox permet dtirer le contenu pour
quil fasse exactement la dimension impose :
\makebox[4cm][s]{Ouaaah quelle fatigue !}

4.9

Botes simples

Ouaaah

quelle

fatigue !

4.4 Botes

73

Avec bordure On construit une bote entoure par une bordure


grce la commande \framebox qui suit la mme syntaxe que
\makebox :
\framebox[hlargi][hposi]{htextei}
le raccourci \fbox{htextei} existe comme pour les botes sans bordure. Ce qui donne :
bon
4.10

bon \framebox[1.5cm][c]{alors} voil\par


et \framebox[2.8cm][r]{ah oui} daccord
\par ou \fbox{alors}

alors

voil
ah oui daccord

et
ou alors

Deux longueurs permettent de changer lallure des \framebox :


\fboxsep la distance entre la bordure et le texte,
\fboxrule lpaisseur du trait.
rouge
4.11

\setlength{\fboxrule}{5pt}
rouge \framebox[2cm]{vert} bleu\par
\setlength{\fboxrule}{0.4pt}
\setlength{\fboxsep}{8pt}
cyan \framebox[2cm]{magenta} jaune

cyan

vert
magenta

bleu
jaune

Un particularit des botes simples contrairement aux botes paragraphes que lon rencontrera un peu plus loin dans ce chapitre,
est quelles neffectuent pas de csure, ainsi :
=== \framebox[3cm]{a ne risque pas dtre coup, a} ===
donnera :
===
===
a ne risque pas dtre coup,
a
On peut dailleurs exploiter cette fonctionnalit pour superposer du
texte (cf. paragraphe sur les botes de largeur nulle page 75).

4.4.2

Manipulation de botes simples

On peut avec un peu dhabitude faire subir aux botes des dplacements dans toutes les directions.
Translation verticale
La translation est permise grce la commande :
\raisebox{htransi}[hprofi][hhauti]{htextei}

74

Un pas vers la sorcellerie

Cest haut \raisebox{8pt}{New York,}


New York \raisebox{-1ex}{USA.}

4.12

o htransi est le dplacement que vous voulez iniger htextei. Par


exemple :
Cest haut
York USA.

New York,

Les deux arguments optionnels hprofi et hhauti permettent de faire


croire LATEX que la bote rsultant de la translation a une hauteur de hhauti et une profondeur de hprofi. Lexemple suivant illustre
lutilisation de la commande \raisebox avec ses arguments optionnels.

ligne 1 : XXXXX\\
ligne 2 :
XX\raisebox{0.8\baselineskip}{O}XX\\
ligne 3 : XXXXX\\
ligne 4 : XXXXX\\
ligne 5 :
XX%
\raisebox{0.8\baselineskip}[1ex][2ex]{O}XX\\
ligne 6 : XXXXX\\
\end{flushleft}
Donnera :
ligne 1 : XXXXX
O
ligne 2 : XX XX
ligne 3 : XXXXX
ligne 4 : XXXXX
O
ligne 5 : XX XX
ligne 6 : XXXXX
On soulve un O au milieu de la ligne 2. La bordure met en
vidence la place occupe par la bote souleve 10 . Au milieu de la
ligne 5, on soulve le mme O mais cette fois en imposant les dimensions (montres par la bordure). LATEX considre donc que la bote
rsultant de la translation fait 1ex de haut et 2ex de profondeur, il
eectue les sauts de lignes en consquence.
10. Cette bordure est insre ici pour la comprhension du mcanisme.

New

4.4 Botes

75

Translation horizontale

Non la \makebox[1.5cm]{censure}%
\hspace{-1.5cm}\makebox[1.5cm]{///////}
sur Internet.

4.13

Les translations horizontales ne sont pas proprement parler


des caractristiques des botes, puisquon les obtient en insrant des
espaces appropries. Voici un exemple :
Non la
net.

///////
censure

4.3
p. 68

sur Inter-

Notez que ce nest pas forcment la meilleure faon de hachurer


un mot, mais cela illustre la manire de dplacer un bote horizontalement, laide dun \hspace ngatif.
Bote simple de largeur nulle
Il est parfois utile de manipuler les botes de largeur nulle, par
exemple dans le cas o lon souhaite superposer des lments. En imposant une dimension nulle en guise de premier argument optionnel
de la commande \makebox :
\newcommand{\grogra}{\huge\bfseries}
avant\makebox[0cm][c]{\grogra C}aprs

avant\makebox[0cm][r]{\grogra D}aprs

4.14

avant\makebox[0cm][l]{\grogra G}aprs

C
avanta
G
prs
avant
Daprs
avantaprs

on produit bien une superposition mais lalignement nest pas exactement celui auquel on sattendait ; en eet largument l met le
contenu droite du point dinsertion de la bote, et gauche pour
largument r.
Rotation
Il existe plusieurs extensions de LATEX pour faire subir des rotations des lments de texte ; nous avons choisi de prsenter ici la
commande \rotatebox de lextension graphicx prsente au chapitre
5. La syntaxe en est la suivante :
\rotatebox{hanglei}{htextei}
o hanglei est langle dans le sens trigonomtrique, et htextei llment de texte faire tourner :

Attention \rotatebox{30}{virage}
dangereux.

4.15

Un pas vers la sorcellerie

76

ag

Attention vir

dangereux.

La version actuelle de xdvi nest pas en mesure dafficher les


objets qui ont subi une rotation 11 . Cette lacune (avec quelques
petites autres) sera peut-tre corrige dans les prochaines versions. La
parade est de visualiser la sortie PostScript avec ghostview ou gv, ou
la sortie Pdf.

p. 241

4.4.3

Botes paragraphe

Les botes dites botes paragraphe ont la particularit de pouvoir


contenir des sauts de ligne et des sauts de paragraphe (contrairement
aux botes dites simples). Il existe deux manires de crer des botes
paragraphe ; la premire avec la commande \parbox :

\parbox[hbposi][hhauteuri][htposi]{hlargeuri}{hcontenui}

o hcontenui est llment de texte mettre en bote, hlargeuri la


largeur de la bote crer, hbposi un argument optionnel prcisant
le point de rfrence. Cet argument optionnel est rapprocher de
2.2.4 celui de lenvironnement tabular. Par exemple :
p. 26

Voici --- \parbox{2cm}{une bote\\paragraphe}


--- une --- \parbox[t]{2cm}{autre bote\\paragraphe}
--- et --- \parbox[b]{2cm}{une bote\\paragraphe}
qui donne (avec des bordures pour mettre en vidence les dimensions
des botes) :
une bote
une bote
une autre bote et paragraphe
Voici
paragraphe
paragraphe
Pour construire une bote paragraphe en imposant sa hauteur, on
utilise largument optionnel hhauteuri. On peut alors ventuellement
prciser la position verticale htposi du texte dans la bote. Par dfaut
htposi vaut hbposi, et il peut prendre les valeurs habituelles c pour
centr, t et b pour haut et bas ; plus une valeur : s pour spcier que
le texte peut stirer (stretch) sur toute la hauteur de la bote
dans ce cas cest lutilisateur de positionner le texte. Par exemple :
---\parbox[b][2cm]{2cm}{haut\par milieu\par bas}}
\parbox[b][2cm][t]{2cm}{haut\parmilieu\par bas}}
11. Lobjet est affich mais sans la rotation.

4.4 Botes

77

\parbox[b][2cm][c]{2cm}{haut\par milieu\par bas}}


\parbox[b][2cm][s]{2cm}{haut\par
\vspace{\stretch{2}} milieu\par\vfill bas}}--donne avec les \fbox pour y voir un peu plus clair :

haut
milieu
bas

haut
milieu
bas

haut
haut
milieu
bas

milieu
bas

Pour crer une bote paragraphe, il peut tre utile dutiliser


lenvironnement minipage, qui simule la cration dune page avec
dventuelles notes de bas de page, tableaux, listes, etc 12 . La syntaxe est analogue \parbox sauf quil sagit dun environnement :
\begin{minipage}[hbposi][hhauteuri][htposi]{hlargeuri}
... \marg{texte} ...
\end{minipage}
Voici un exemple :

Pour une raison x, y ou


z, on peut vouloir raconter
sa vie avec une minipage.
Comme dans cet exemple
l

Ce que jai dire a nest pas franchement parler :


ni trs intressant ;
ni particulirement indispensable
mais bon, jen parle quand mme.
Javais autre chose raconter mais a
mest sorti de la tte...
a. Cest un bien grand mot.

Dans cet exemple on a cr une minipage faisant la moiti (55%)


de la largeur du texte, et contenant un environnement itemize et
une \footnote. La bote ainsi cre est centre par rapport au paragraphe Pour une raison... car largument optionnel hposi est
absent :
\parbox{0.40\textwidth}{...
Comme dans cet exemple l $\longrightarrow$}\hfill
\begin{minipage}{0.55\textwidth}
Ce que jai dire\footnote{Cest un bien grand mot.}
nest pas franchement parler :
\begin{itemize}
12. Cet environnement ne peut toutefois pas contenir de flottants.

Un pas vers la sorcellerie

78

\item ni trs intressant ;


\item ni particulirement indispensable
\end{itemize}
mais bon, jen parle quand mme.
Javais autre chose raconter mais a mest sorti de
la tte...
\end{minipage}
Dans les botes paragraphe la longueur \parindent est mise
zro. Ce qui explique que Javais autre chose ... dans
lexemple prcdent nest pas indent. Enfin, contrairement aux cas des
\parboxs, lorsquon fait rfrence dans une minipage la dimension
\textwidth, il sagit de celle de la bote et non de celle du texte.

Petites astuces

Toutes les fonctions concernant les botes peuvent prendre en


paramtre de longueur les dimensions suivantes :
\width
: la largeur du texte contenu,
\height
: la hauteur du texte contenu,
\depth
: la profondeur du texte contenu,
\totalheight : (hauteur + profondeur) du texte.
Il est alors possible de prciser les dimensions de la bote relativement au texte quelle contient. Ce qui peut tre utile dans certaines
situations :
une \framebox[.7\width]{bote} ltroit.

unebote ltroit.
une

bote

au large.

une \framebox[1.8\width]{bote} au large.


une \fbox{%
\parbox[c][3\height]{1cm}{%
bote\\vide.}}

4.4.5

4.16

4.4.4

une

bote
vide.

Sauvegarde et rutilisation

Il est possible de stocker un extrait de code LATEX dans une bote


pour le rutiliser ceci par exemple lorsque ce code exige de LATEX
des ressources importantes ; dans ce cas on procde en 3 tapes :
1. dclaration dune bote avec la commande \newsavebox,
2. stockage avec \sbox ou \savebox,

4.5 Dfinitions

79

3. rutilisation avec \usebox.


Par exemple voici une texture de Gnu :

Gnu Gnu Gnu


Gnu Gnu Gnu
4.17

\newsavebox{\gnu}
\sbox{\gnu}{\fbox{\textsc{Gnu}}}
\begin{center}
\usebox{\gnu}\usebox{\gnu}\usebox{\gnu}\\
\usebox{\gnu}\usebox{\gnu}\usebox{\gnu}\\
\usebox{\gnu}\usebox{\gnu}\usebox{\gnu}
\end{center}

Gnu Gnu Gnu

On peut faire une analogie entre le couple de commande \sbox et


\savebox et le couple \mbox et \makebox (cf. 4.4.1).

4.5 Dfinitions
Une nouvelle fois, laissons parler le matre :
. . . they have come to be known as macros because they
are so powerful; one little macro can represent an enormous
amount of material, so it has a sort of macroscopic eect.

D. E. Knuth in the TEXbook

Lorsque dans un document, on peut dnir une entit indpendante et que cette entit apparat plus dun certain nombre de
fois il est ncessaire de se poser la question de savoir sil nest pas
judicieux den faire une macro. Voil une phrase vague ! Pour rsumer, les macros sont l pour vous viter de refaire x fois les mmes
choses. Avec un peu dexprience, on peut dnir des commandes
trs pratiques et avec le temps de plus en plus complexes.

4.5.1

Commandes

La commande \newcommand permet de dnir une macro, son


utilisation est trs simple :
\newcommand{hnomcomi}[hnargsi]{hcode LATEXi}
o hnargsi est le nombre darguments au sens arguments dune
fonction dun langage de programmation et hcode LATEXi le code
dnissant votre commande. Voici un exemple de macro, dnissant
le symbole dun espace de reprsentation utilis en colorimtrie :

\newcommand{\lab}{$L^*a^*b^*$}
Soit \lab{} lespace...

Un pas vers la sorcellerie


4.18

80

Soit L a b lespace...

\newcommand{\Lab}{%
\ensuremath{L^*a^*b^*}}
Lespace \Lab{} et $\vec{c}\in\Lab$.

4.19

Notez que cette commande ne prend pas dargument, il nest donc


pas ncessaire ici dutiliser largument optionnel hnargsi. Pour amliorer un peu lutilisation de cette commande, on peut la dnir
comme suit :
Lespace L a b et ~c L a b .

La commande \ensuremath permet de sassurer que la commande


sera utilise dans un environnement mathmatique, quel que soit le
contexte, comme dans lexemple ci-dessous.
Les macros ou commandes de LATEX ne sont pas tout fait des
fonctions au sens dun langage de programmation, elles sapparentent plutt au #define du C. Et en ce sens, elles suivent le mcanisme dexpansion. Ainsi, dans le premier exemple de la fonction \Lab,
\Lab se dploie en $L^* a^* b^*$. On comprend donc pourquoi,
$...\Lab$ aurait gnr une erreur de compilation.

Voici une commande utilisant un argument : elle permet de dessiner une touche de clavier 13 :

4.20

\newcommand{\Touche}[1]{\Ovalbox{#1}}
Appuyer sur \Touche{Tab}
puis sur \Touche{Entre}

Appuyer sur Tab puis sur

Entre

On voit donc que cette commande attend un argument (cest le sens


de [1] ) et quon fait rfrence cet argument dans la dnition
de la commande avec #1.
Si lon souhaite dnir une fonction avec plusieurs arguments (9
au maximum), no problemo :
\newcommand{\fraction}[2]{%
\raisebox{0.5ex}{#1}%
\slash\raisebox{-0.5ex}{#2}}
\fraction{1}{2} et \fraction{3}{4} font
\fraction{5}{4}

4.21

1/2 et 3/4 font 5/4

On remarquera donc que :


13. Cette commande fait appel la commande \Ovalbox dfinie dans le package fancybox.

4.5 Dfinitions

81

la macro \fraction prend 2 arguments,


on fait rfrence au ne argument avec #n,
les caractres % sil vous paraissent saugrenus, permettent
dinsrer des sauts de ligne dans le code sans insrer despace
dans le document (voir aussi le paragraphe 9.2.1 page 136
ce sujet).
Il est galement possible de dnir une commande dont le premier
argument est optionnel. La syntaxe est alors la suivante :
\newcommand{hnomcomi}[hnargi][harg defauti]{hcode LATEXi}

\newcommand{\Key}[1][Enter]{\Ovalbox{#1}}
Appuyer sur \Key[Tab]{} puis sur \Key{}

4.22

o hnargi est le nombre darguments, sachant que #1 sera largument


par dfaut, harg defauti est la valeur que prend #1 par dfaut, et
hcode LATEXi le code de la commande. Voici par exemple une autre
approche de la commande vue prcdemment, qui dessine une touche
de clavier :

Appuyer sur Tab puis sur

Enter

On voit donc que largument 1 est facultatif et sa valeur par dfaut


est : Entre . On notera galement que lutilisation de largument
optionnel requiert des crochets et non des accolades.
On peut trs bien imaginer que lon ait dfinir une commande
ayant un argument optionnel et un ou plusieurs arguments obligatoires. Dans ce cas le premier argument obligatoire sera #2. Dautre
part, notez quon ne peut rendre optionnel que le premier argument
dune commande.

4.5.2

Environnement

Il est possible de dnir ses propres environnements de la manire


suivante :
\newenvironment{hnom envi}[hnargi]{hclause begini}{hclause endi}
o hnom envi est le nom de lenvironnement ainsi dni, hnargi le
nombre darguments, et hclause begini et hclause endi les pr et
post traitements de lenvironnement. Il est pratique de dnir des
environnements partir dautres, par exemple les environnements de
LATEX :

\newenvironment{bonmot}%
{\small\slshape\begin{flushright}}%
{\end{flushright}\normalsize\upshape}
\begin{bonmot}
Lhomme a reu de la nature\\
une clef\\
avec laquelle il remonte la femme\\
toutes les vingt-quatre heures.
\end{bonmot}

4.23

Un pas vers la sorcellerie

82

Lhomme a reu de la nature


une clef
avec laquelle il remonte la femme
toutes les vingt-quatre heures.

Il est vrai que ce bon mot serait un peu douteux si lon ne citait
son auteur. On peut y remdier en ajoutant notre environnement
un argument. Les arguments sont accessibles par # mais ne sont
visibles que dans la clause begin. On contourne ceci en sauvant
4.4.5 largument dans une bote que lon rutilise dans la clause end :
\newsavebox{\auteurbm}
\newenvironment{Bonmot}[1]%
{\small\slshape%
\savebox{\auteurbm}{%
\upshape\sffamily#1}%
\begin{flushright}}
{\\[4pt]\usebox{\auteurbm}
\end{flushright}\normalsize\upshape}
\begin{Bonmot}{Victor Hugo}
Lhomme a reu de la nature\\
une clef\\
avec laquelle il remonte la femme\\
toutes les vingt-quatre heures.
\end{Bonmot}

Lhomme a reu de la nature


une clef
avec laquelle il remonte la femme
toutes les vingt-quatre heures.
4.24

p. 78

Victor Hugo

La citation nen reste certes pas moins douteuse...

4.5.3

Redfinitions

Il est possible de redfinir commandes et environnements avec :


\renewcommand{hnomcomi}[hnargsi]{hcodeTEXi}
pour les commandes et :
\renewenvironment{hnom_envi}[hnargi]
{hclause_begini}{hclause_endi}

4.6 Mais encore ?

83

pour les environnements. On rednit les commandes essentiellement


pour personnaliser le comportement factieux de LATEX. On procde
alors de la manire la plus naturelle qui soit, par exemple :
\renewcommand{\thepage}{\Roman{page}}
numrote les pages en chire romain majuscule.
La modification du comportement par dfaut de LATEX est un
sujet trs vaste qui dpasse le cadre de cette partie. Mais sachez
que si vous modifiez une commande ou un environnement dont vous ne
matrisez pas toutes les fonctionnalits, attendez vous des rsultats
bizarres ! La lecture de la deuxime partie prsente le moyen de redfinir
certaines commandes de LATEX.

4.6 Mais encore ?


Si vous avez lintention de crer des chiers contenant des commandes de votre cr, vous devez ajouter la ligne :
export TEXINPUTS=$HOME/LaTeX/mesmacros//:
dans votre .bash_profile si vous utilisez bash, pour que LATEX
cherche aussi les chiers dans le rpertoire $HOME/LaTeX/mesmacros
(cest un exemple) et ses sous-rpertoires. Une ligne avec la directive \usepackage{moncru} vous permettra alors dutiliser votre ensemble de commandes. LATEX cherchera alors le chier moncru.sty.
Une autre solution est dutiliser la commande \input{moncru.sty}.
Dans la plupart des distributions de LATEX, un chier nomm
texmf.cnf dnit un certain nombre de paramtres permettant de
conguer le moteur LATEX et notamment les chemins de recherche
des chiers. Vous pouvez savoir o se trouve ce chier grce la
commande :
kpsewhich texmf.cnf
Dautre part, il existe un mcanisme autorisant lutiliseur lambda
stocker ses propres commandes en dehors de larborescence de la
distribution de LATEX. Pour connatre ce dossier :
kpsewhich -var-value=TEXMFHOME
Sur mon systme (TEXLive Ubuntu) cette commande renvoie :
/home/lozano/texmf

84

9.3

p. 139

9.5

p. 151

Un pas vers la sorcellerie

indiquant que le systme cherchera les chiers inclure dans le rpertoire texmf de mon rpertoire priv. Il est alors possible placer
ses extensions maison dans le rpertoire ~/texmf/tex/latex.
Un dernier conseil : pour pouvoir dnir vos commandes ou environnements de manire plus confortable, nous vous recommandons
de jeter un petit coup dil sur :
lextension ifthen qui propose des structures de contrle de
type si-alors-sinon et faire-tant-que ,
le package calc qui permet deectuer des oprations arithmtiques sur les compteurs et les longueurs.
enn lenvironnement list qui peut tre un bon point de
dpart pour se dnir un environnement de type liste.
Ces extensions et leur utilisation sont prsentes en dtail dans la
deuxime partie de ce manuel.

Chapitre

Sommaire
5.1
5.2
5.3
5.4
5.5
5.6

Apritifs
Du format des fichiers graphiques
Le package graphicx
Quelques extensions utiles
Utiliser make
part a

Graphisme
Tu ne te feras aucune image sculpte de rien
qui ressemble ce qui est dans les cieux l-haut [...]
Tu ne te prosterneras pas devant ces images ni ne les serviras.
Le Deutronome Dt 5 8.

ujourdhui il est tout fait naturel dinsrer des dessins, A


gures et autres images dans un document. Ceci est d aux
imprimantes de plus en plus performantes et bon march. Il faut
cependant se replacer dans le contexte des annes 80 lessor de
TEX. Cest lpoque de lapparition des imprimantes et le matriel
de qualit professionnelle ntait pas accessible au particulier. Cependant beaucoup de solutions dimpression mergeront sappuyant
la plupart sur le langage PostScript devenu ipso facto un standard.

85

Graphisme

86

Il existe plusieurs solutions autour de LATEX pour insrer des


graphiques dans un document. Parmi elles on notera lutilisation de
metafont (lutilitaire qui gre les fontes de LATEX), la programmation dun environnement picture ou la mise en uvre dun code
PICTEX. Ces solutions ne seront pas dcrites ici car nous considrons quelles sont dune utilisation un peu droutante au premier
abord ; il est tout de mme bon de connatre leur existence. Lapproche adopte dans ce manuel pour manipuler des graphiques est
dinsrer dans le source LATEX un chier au format PostScript encapsul contenant le graphique en question, ce dernier ayant t cr
par un logiciel de dessin tel que xfig, gnuplot, gimp, etc.

5.1 Apritifs

\rule[hhposi]{hlargeuri}{hhauteuri}
o hhposi impose une ventuelle translation verticale du trait, les
deux autres arguments ont un nom susamment explicite :
Voici quelques \og traits \fg{} :
\begin{center}
\rule[1ex]{1mm}{5mm}
\quad\rule{1in}{0.4pt}
\quad\rule[-0.5em]{1em}{1em}
\end{center}

Voici quelques traits :


5.1

Il nest pas inutile de connatre la commande \rule qui permet


de faire des traits :

5.2 Du format des fichiers graphiques


Pour inclure des dessins ou des images dans vos documents, il
faut insrer un fichier. La conguration de LATEX permet dincorporer des chiers de type PS pour PostScript et EPS pour Encapsuled PostScript. Ce chier peut tre gnr par nimporte quel programme. Si le format PostScript vous semble contraignant, sachez
que :
tout bon logiciel de dessin vectoriel vous permet dexporter
vos schmas au format EPS. Ce format est devenu la rfrence
en matire dimpression.
toute image peut tre convertie au format EPS. Sur un systme Unix, le programme convert permet deectuer cette

5.3 Le package graphicx

87

opration 1 . On pourra aussi recourir au logiciel gimp (logiciel


libre de retouche et de cration dimage numrique), prsent
galement sur dautres systmes dexploitation.

5.3 Le package graphicx


LATEX, ou plutt TEX, na pas t initialement conu pour manipuler des graphiques (images, dessins,...). De ce fait, une multitude
dextensions ont t proposes, aucune nayant vraiment russi
simposer ou tre vraiment indpendante des systmes dexploitation.

5.3.1

Un standard

Aujourdhui, les concepteurs de LATEX semblent stre mis daccord pour standardiser une extension graphique. Deux extensions ont
donc vu le jour n de lanne 1994 :
graphics lextension standard ;
graphicx lextension plus plus .
Nous avons choisi de vous prsenter graphicx. Il faut bien comprendre
que si linterface de cette extension est indpendante du systme
dexploitation, la partie du code grant les dirent types de chiers
graphiques est dpendante du systme sous-jacent. Aussi, est-il ncessaire de prciser un driver de package. Les drivers existants correspondent aux implantations connues de TEX sur des plate-formes
diverses 2 . Sous Unix, le driver utilis est gnralement dvips, il est
choisi par dfaut dans la distribution teTEX, si bien que la ligne :
\usepackage{graphicx}
sut pour mettre en route lextension graphicx. La commande pour
inclure un dessin ou une gure est la suivante :
\includegraphics[hoptioni]{hfichieri}
o hfichieri est un chier contenant votre gure, et hoptioni est une
liste doptions spares par des virgules. \includegraphics ne cre
pas de mise en page particulire, elle insre juste une bote contant
le graphique dans le texte. Ainsi :
1. Cherchez du ct de la suite ImageMagick pour obtenir ce programme
sil nest pas prsent sur votre systme.
2. On notera entre autres : xdvi et dvips pour le monde Unix, texture et
OzTEX pour le Mac, emTEX et dviwin pour windows.

Graphisme

88

Figure 5.1: Robert (aprs quelques bires).

avant
\includegraphics{punch}
et aprs.

5.2

5
avant

et aprs.

Pour assurer la portabilit de vos sources et ainsi pouvoir insrer des fichiers graphiques dans des formats diffrents, il est
impratif de ne pas prciser lextension du fichier dans la commande
\includegraphics.
2.7

p. 32

En gnral, on combine \includegraphics avec un environnement figure. Par exemple, la gure 5.1 a t produite grce au
code suivant :
\begin{figure}
\centering\includegraphics[width=5cm]{punch}
\caption{Robert (aprs quelques bires).}
\label{fig-exemple}
\end{figure}
Notez bien que lenvironnement figure assure que le graphisme
flotte dans la page et non la commande \includegraphics.
Au cas o a aurait chapp certains :

5.3 Le package graphicx

89

Lenvironnement figure
assure que le graphisme flotte dans la page ;
a nest pas la commande \includegraphics
qui assure ce rle.

5.3.2

Options

Le package graphicx possde plusieurs options permettant de


contrler linsertion des graphiques. Parmi les options disponibles
voici les plus utilises :
Changement dchelle

\begin{center}
\includegraphics[scale=0.2]{magma}\\
\includegraphics[width=8.5mm]{magma}\\
\includegraphics[width=2cm,
height=3mm]{magma}
\end{center}

5.3

Il existe trois manires dagir sur la taille dun graphique.


scale=hratioi, o hratioi est un nombre positif ou ngatif,
permet de changer la taille globale de la gure ;
width=hdimeni permet dimposer la largeur du graphique ;
height=hdimeni permet dimposer la hauteur du graphique.

Rotation
Vous pouvez si vous le dsirez, faire eectuer une rotation votre
gure en utilisant loption angle, dont la syntaxe est la suivante :
angle=hndegrei

\includegraphics[angle=45,
scale=0.2]{magma}

5.4

o hndegrei est un angle prcis en degrs dans le sens trigonomtrique.

Graphisme

90

On trouvera dans le chier grfguide.pdf 3 une description dtaille


de cette extension. On pourra galement consulter une documentation nomme fepslatex.pdf 4 .
Mode brouillon
Loption draft permet de produire les gures en mode brouillon :
seul un cadre avec le nom du chier inclus est produit dans le document nal.

pngs/punch.png

5.5

avant
\includegraphics[draft,scale=.2]{punch}
et aprs.

avant

et aprs.

Le mode draft est enclench par dfaut lorsque loption de document draft est spcie. Si vous voulez contrer leet de loption
de document 5 , il est possible dutiliser loption final de la commande \includegraphics ou au moment dinclure lextension avec
\usepackage.

5.4 Quelques extensions utiles


Voici dans les paragraphes qui suivent trois extensions utiles pour
la production de documents contenant des graphiques.

5.4.1 subfig
Cette extension permet de grer des gures comportant plusieurs
sous-gures, avec numrotation automatique et possibilit de faire
rfrence aux sous-gures elles-mmes. Par exemple :
\begin{figure}[htbp]
\begin{center}
\leavevmode
\subfloat[Magma]{%
\label{fig-uniweria-magma}
\includegraphics[width=2cm]{magma}}
3. Utiliser locate ou find pour le trouver sur votre systme.
4. http://tug.ctan.org/tex-archive/info/epslatex/french/fepslatex.
pdf
5. Par exemple, si vous voulez voir vos figures mais aussi les
OverfullBoxMark.

5.4 Quelques extensions utiles

(a) Magma

91

(b) UZMK

Figure 5.2: Uniweria Zkt

\hspace{2cm}
\subfloat[UZMK]{%
\label{fig-uniweria-uzmk}
\includegraphics[height=2cm]{uzmk}}
\caption{Uniweria Zkt}
\label{fig-uniweria}
\end{center}
\end{figure}

Pour ce qui concerne les rfrences, on peut soit rfrencer la gure globale par \ref{fig-uniweria} qui donne : 5.2, soit les sousgures par leur label respectif : \ref{fig-uniweria-magma} dune
part et \ref{fig-uniweria-uzmk} dautre part, qui donnent : 5.2a
et 5.2b.
Une manire lgante de grer les \subfigures est dencapsuler chacune delles dans un environnement minipage. Le fichier subfig.pdf accompagnant la distribution, montre comment personnaliser lenvironnement subfigure, notamment les espaces interlgendes.

5.4.2

Le package wrapfig

Le package wrapfig propose lenvironnement wrapfigure permettant de faire otter une gure dans un paragraphe. Il ne sagit pas
dun environnement ottant au sens de lenvironnement figure de
LATEX puisquon spcie la position de la gure dans le paragraphe.
La syntaxe est la suivante :
\begin{wrapfigure}{hpositioni}{hlargeuri}
...
\end{wrapfigure}

Graphisme

92

o hpositioni est la position de la gure (l ou r) et hlargeuri la


largeur de la gure insrer. Voici un exemple :
\begin{wrapfigure}{r}{1.5cm}
\includegraphics[width=1cm]{polygons}
\end{wrapfigure}
Le package \ltxcom{wrapfig} nest ---~ ma connaissance~--- pas
document sous la forme dun fichier \texttt{dvi} ; par contre
il est possible...

Le package \wrapfig nest ma connaissance


pas document sous la forme dun chier dvi ; par contre
il est possible de trouver des informations trs dtailles
dans le chier .sty lui-mme qui se trouve dans larborescence TEX dans : [...]/misc/wrapfig.sty. On
notera au passage car il faut parler pour faire un paragraphe un peu long que la rgle veut que tout package soit
auto-document grce une extension connue sous le nom de
docstrip. Ainsi toute extension package en anglais contient
aussi bien le code que la documentation. Une procdure dinstallation permet dextraire lun et lautre. Lauteur de wrapfig na vraisemblablement pas suivi cette rgle, tant pis...

5.4.3

Le package psfrag

Une autre extension intressante est lextension psfrag. Elle a


pour but de pouvoir runir la puissance dun chier PostScript et
la beaut des quations de LATEX. Un problme se pose en eet
lorsque lon veut intgrer des formules un dessin, car la gnration
dquations nest pas prvue dans la plupart de ces logiciels. La
solution adopte par les auteurs de psfrag est dutiliser la commande
\psfrag pour insrer les formules la place de chanes de caractres
prsentes dans le dessin. Ainsi, pour avoir la gure 5.3b au lieu de
la gure 5.3a, on a procd comme suit :
1. ajout avant le \includegraphics{courbe} la ligne :
\psfrag{exp(-x)*sin(10*x)}[r][r]{$e^{-x}\sin(10x)$}
qui permet de remplacer la chane de caractres faisant oce
de lgende par une belle quation ;
2. le rsultat nest pas visible dans le chier .dvi, par contre
dvips se charge dexploiter les instructions prcdentes pour
modier le chier PostScript gnr.

5.4 Quelques extensions utiles

93

ex sin(10x)

exp(-x)*sin(10*x)

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

-0.2

-0.2

-0.4

-0.4
-0.6

-0.6

-0.8

-0.8
0

(a) avant

(b) aprs

Figure 5.3: Utilisation de psfrag, gauche la gure originale,


droite la gure avec un remplacement par une quation LATEX.

Le positionnement de la formule se fait en faisant correspondre


deux points de rfrence, lun appartenant lquation, lautre
la chane de caractres remplacer. Cest lutilisateur dindiquer
o se trouve ces points de rfrence, par lintermdiaire de deux
arguments optionnels la commande \psfrag. Supposons quon dnisse ces points de rfrence comme suit :

\psfrag{chane}[l][c]{hequationi}
On aura alors lassemblage suivant :
chane

et

hquationi

donne

chane

hquationi

De mme en crivant :
\psfrag{chane}[r][l]{hequationi}
on aura :
chane

et

donne

hquationi

chane

hquationi

Dans lexemple de la gure 5.3b, on a fait correspondre le ct droit


de lquation (1er argument optionnel r) avec le ct droit de la
chane (2e argument optionnel r). La documentation du package est
trs instructive ce sujet...
Attention, si on gnre un document pdf partir du source
LATEX, on ne peut utiliser le package psfrag quau prix de manipulations un peu tordues.

ch. A
p. 241

Graphisme

94

5.4.4

Le package xcolor

Lextension xcolor est mise au point par lquipe qui a dvelopp


le package graphicx. Il peut tre intressant par exemple pour
produire des transparents de gnrer du texte en couleur. Le
package xcolor permet les constructions suivantes :
Du texte {en \color{red}rouge} et
\textcolor{cyan}{en cyan}.
5.6

Une bote \colorbox{green}{Verte}.

Du texte en rouge et en cyan.


Une bote Verte .
Une autre bote .

Une \fcolorbox{blue}{yellow}{autre bote}.

On aura compris quon dispose pour le texte :


de la dclaration :
et de la commande :
\textcolor{hcouleuri}{htextei}
et pour les botes :
sans bordure :
\colorbox{hcouleur du fondi}{hcontenui}
avec bordure :
\fcolorbox{hcouleur bordurei}{hcouleur fondi}{hcontenui}

Voici un
{\color[rgb]{.2,.4,.5}\bfseries
bleu gris}...

5.7

Les deux commandes pour les botes en couleur sont sensibles la


longueur \fboxsep. Quid des couleurs qui nont pas de nom ?
vous entends-je marmonner in petto... Ce quoi je rponds sur le
champ :
Voici un bleu gris...

Il est aussi possible de donner un petit nom cette dernire


couleur :
\definecolor{bleugris}{rgb}{.2,.4,.5}
Voici un
{\color{bleugris}\bfseries bleu gris}...

5.8

\color{hcouleuri}

Voici un bleu gris...

5.5 Utiliser make

Makefile

95

maitre.tex

f.fig

Figs

i.png

Imgs

j.png

k.jpg

Epss

f.eps

i.eps

j.eps

k.eps

Figure 5.4: Proposition darborescence pour stocker les chiers graphiques : un rpertoire pour les images et un rpertoire pour les graphiques vectoriels. Les chiers au format Eps sont enregistrs dans
un rpertoire part.
Vous noterez quen lieu et place du modle de couleur rgb
il est possible dutiliser le modle gray de manire dfinir
des nuances de gris. De mme, en utilisant le modle html, on pourra
utiliser la syntaxe du langage Html pour spcifier les couleurs.

5.5 Utiliser make


Ce paragraphe est destin aux utilisateurs dun systme dexploitation disposant de lutilitaire Gnu make (pour de plus amples
informations sur cet utilitaire, nhsitez pas lire lincontournable [11]).
Les autres peuvent passer leur chemin...

Voici donc une ide de makele qui vous permettra dautomatiser la


gnration :
des chiers au format Eps partir des images bitmaps ;
des chiers au format Eps partir de chiers stocks dans le
format dun logiciel de dessin vectoriel.
On souhaite pour ce faire, laborer une cible que lon prcisera en
ligne de commande :
make figs
On suppose que les images et les chiers de dessins sont respectivement stocks dans les sous-rpertoire Imgs et Figs du rpertoire
contenant le document matre et que les chiers Eps fabriqus seront
galement stocks dans un sous-rpertoire Epss (voir la gure 5.4).
On commencera donc par dnir un ensemble de variables prcisant
les dirents rpertoires utiliser :
FIGSDIR=Figs
EPSSDIR=Epss

Graphisme

96
IMGSDIR=Imgs

5.5.1

Convertir les images

Tout dabord on fait la liste des chiers au format Jpeg et Png


(cest un exemple) en stockant cette liste dans deux variables comme
suit :
PNGS=$(notdir $(wildcard $(IMGSDIR)/*.png))
JPGS=$(notdir $(wildcard $(IMGSDIR)/*.jpg))
La fonction wildcard permet dobtenir la liste des chiers contenu
dans le dossier $(IMGSDIR) tandis que la fonction notdir supprime
la partie rpertoire de chacun des chiers. Finalement la variable
PNGS contiendra :

i.png j.png
et JPGS :
k.jpg
On peut ensuite partir de ces deux variables crer la liste des
chiers Eps fabriquer (rappelez-vous quils doivent rsider dans un
rpertoire part) :
IMGS2EPSS=$(patsubst %,$(EPSSDIR)/%,\
$(PNGS:.png=.eps) $(JPGS:.jpg=.eps))
Lexpression droite de laectation permet de changer lextension
en eps dans les deux listes prcdentes et de prxer chaque nom
par le rpertoire de stockage des chiers Eps. IMG2EPSS contiendra
donc :
Epss/i.eps Epss/j.eps Epss/k.eps
Cette liste constitue les prrequis (au sens de make) pour fabriquer les images. On dnit donc la cible figs comme suit :
figs : $(IMGS2EPSS)
Il faudra galement expliquer make comment on peut fabriquer
un chier au format postscript encapsul partir dune image. Ceci
pourra scrire laide de la rgle suivante :

5.6 part a

97

$(EPSSDIR)/%.eps : $(IMGSDIR)/%.png
7 convert $< EPS:$@
$(EPSSDIR)/%.eps : $(IMGSDIR)/%.jpg
7 convert $< EPS:$@
qui prcise quon utilisera lutilitaire convert 6 pour convertir un chier Png ou Jpeg en Eps.

5.5.2

Convertir les fichiers de dessin

La conversion des chiers de dessins suit exactement le mme


principe. Supposons quon dispose de sources au format Fig provenant de xfig et au format Svg provenant de Inkscape. On aura alors
dans le makefile :
FIGS=$(notdir $(wildcard $(FIGSDIR)/*.fig))
SVGS=$(notdir $(wildcard $(FIGSDIR)/*.svg))
FIGS2EPSS=$(patsubst %,$(EPSSDIR)/%,\
$(FIGS:.fig=.eps) $(SVGS:.svg=.eps))
Les rgles de conversion sont bien sr direntes puisquelles font
appel lune fig2dev (utilitaire connexe xfig) et Inkscape luimme pour lautre :
$(EPSSDIR)/%.eps :
7 fig2dev -L eps
$(EPSSDIR)/%.eps :
7 inkscape -E $@

$(FIGSDIR)/%.fig
$< > $@
$(FIGSDIR)/%.svg
$<

La cible permettant de fabriquer les chiers de dessins et les images


devient nalement :
figs : $(IMGS2EPSS) $(FIGS2EPSS)

5.6 part a
On peut trouver un grand nombre dextensions permettant de
produire des graphiques correspondant un besoin particulier (circuits lectroniques, histogrammes, arbres...). Vous pouvez en eet
6. Du package ImageMagick disponible http://www.imagemagick.org, qui
convertit peu prs tout format dimages

98

Graphisme

avoir besoin, un jour, de gnrer des graphiques de manire automatique partir dune commande. Jetez alors un coup doeil sur
les direntes extensions disponibles (pstricks, METAPOST,...) ainsi
que sur lenvironnement picture et ses extensions epic et eepic. Bon
courage !
Un package ayant aujourdhui le vent en poupe est le package
TikZ. Il offre ses valeureux utilisateurs la possibilit de crer
des dessins dans un langage sappuyant sur LATEX. Cest une solution
trs intressante lorsque dans un document, des schmas reviennent
sous des formes quivalentes plusieurs reprises. Ce package sera prsent dans la prochaine dition de ce manuel.

Chapitre

Sommaire
6.1
6.2
6.3
6.4

Article
Bibliographie
Index
Diviser votre document

Documents scientifiques
Les sages thsaurisent la science
mais la bouche du fou
est un danger permanent.
Les proverbes Pr 10 14.

venu le moment de vous parler des quelques caractristiques


Voici
des documents dits scientifiques. Si le problme des formules et

autres quations a t abord avec brio au chapitre 3, il reste tout


de mme un gros morceau avaler : la bibliographie. Sachez quand
mme que si lingurgitation peut tre dicile, la suite vous permettra
de vous simplier grandement le travail. Nous proterons galement
de ce chapitre pour expliquer le principe de la gnration dindex.
Nous vous parlerons donc des quelques particularits de la rdaction darticle, ensuite viendra un expos sur la gnration dune bibliographie, la gnration dindex, enn la mthode utile connatre
pour diviser un gros document en petites parties.

99

100

Documents scientifiques

6.1 Article
Pour rdiger un article, rien de bien nouveau, tout ce qui a t vu
jusquici sapplique. On notera juste lutilisation dans le prambule,
des commandes :
\title pour dnir le titre,
\date pour dnir la date,
\author pour dnir les auteurs,
\thanks pour spcier laliation des auteurs.
Pour insrer le titre partir de ces dnitions, il est ncessaire
dajouter la commande \maketitle aprs le \begin{document} :
\documentclass{article}
\title{Le seuillage 128 : une rvolution !}
\author{M. C. Orlanrien\\
Institut du Pixel\\
42007 Saint-Etienne---FRANCE}
\date{2 Avril 1927}

\begin{document}
\maketitle% cest ici quest insr le titre
...
\end{document}

Nous rptons 1 : cest la commande \maketitle qui gnre et insre


le titre et non les dnitions du prambule.
En rgle gnrale, les confrences ou revues qui fournissent un
chier de style, proposent quelques variantes, par exemple une commande \address pour sparer les auteurs et leur adresse respective,
etc. Mais lide de base reste la mme.

6.2 Bibliographie
Il existe deux manires de rdiger une bibliographie avec LATEX :
lune que lon peut qualier de manuelle consiste insrer un environnement thebibliography dans le document, lautre que nous
allons dcrire ici, utilise le programme BibTEX. Voici le principe :
1. on cre un ou plusieurs chiers de donnes contenant une
description de chaque entre de bibliographie (article, confrence,...) au format BibTEX. Cest linvitable tche de saisie,
1. Parce quil parat quenseigner cest rpter

6.2 Bibliographie

101

2. dans le document, on fait rfrence aux entres par la commande \cite,


3. la bibliographie sera mise en page automatiquement selon un
style particulier que vous choisirez.
Lavantage de cette mthode est que vous saisissez une fois pour
toute les entres de votre bibliographie. De plus, vous navez pas
vous soucier de sa mise en page, dans la mesure o vous utilisez
des fichiers de style ; il en existe plusieurs dizaines correspondant
toutes sortes de standards, revues et autres confrences. On trouve
aussi sur internet beaucoup de bases de donnes bibliographiques
au format BibTEX que lon peut utiliser directement dans ses documents.
Nous rptons quil existe des standards en matire de bibliographie, mais que malheureusement certaines revues prennent un malin
plaisir pondre leur propre style de bibliographie. Le jour o vous
publierez dans ce genre de revue, vous aurez crer ou adapter un
chier de style. Pour ce faire, cherchez du cot de lutilitaire makebst.

6.2.1

Fichier .bib

La premire opration est de constituer 2 le chier de bibliographie qui doit de prfrence porter lextension .bib. Ce chier
doit suivre une syntaxe particulire. Tout dabord, il faut savoir que
BibTEX distingue chaque entre par son type. Ainsi, chaque entre
correspond un type de document : livre, article, confrence, rapport technique,... En tout plus dune douzaine de types de document
dirents.
Accompagnant les distributions LATEX, on trouve normalement
un fichier nomm BibTEXing (sous le nom btxdoc.pdf) crit
par Oran Patashnik il y a une vingtaine dannes et contenant une
source importante dinformation sur la manire de constuire un fichier
au format BibTEX.

Chaque type dentre contient son tour un certain nombre de


champs dcrivant lentre. La structure dune entre de bibliographie est la suivante :
@hentreei{hclefi,
hchamp1 i = {...},
hchamp2 i = {...},
...
2. Le module AucTEX dEmacs possde un mode BibTEX trs pratique.

Documents scientifiques

102

hchampn i = {...}
}
o hentreei est le type de document (article, inproceedings,...)
et hchamp1 i, hchamp2 i, ..., hchampn i sont les dirents champs de
lentre de bibliographie. Ces dirents mots rservs de BibTEX
peuvent tre saisis en majuscules ou en minuscules.
Le symbole hclefi doit identier le document de manire univoque. Ce symbole est rapprocher du symbole identiant une tiquette avec \label. Pour vous permettre de commencer utiliser
rapidement BibTEX nous vous donnons, ici, un exemple pour les
trois principales entres que vous serez amen utiliser :
Article dans une revue
Un article dans une revue doit tre saisi comme suit :

@article{qtz:UchArb,
author ={Uchiyama, Toshio and Arbib, Michael A.},
title = {Color Image Segmentation
Using Competitive Learning},
journal=pami,
volume =16, number=2, pages={1197--1206},
month=dec, year=1994}

Notez que :
1. les champs author, title, journal, year sont obligatoires ;
2. pour les auteurs 3 il est impratif de suivre lordre hnomi,
hprnomi et de sparer tous les auteurs par and ;
3. pour les auteurs ayant un nom compos ou particule, on
saisira :
author="de la Motte Beuvron, Alain"
donc en respectant lordre hparticulei, hnomi, hprenomi et
en utilisant la virgule en guise de sparateur comme indiqu
ci-dessus ;
4. tous les mois de lanne peuvent tre produits grce aux
chanes : jan, feb, mar, etc.
Nous avons cr par commodit labrviation pami qui est dnie au
dbut de notre chier .bib par :
@string{pami="IEEE transactions on Pattern Analysis and
Machine Intelligence"}
3. Ces remarques concernant les auteurs sont valables pour les autres entres
(confrences, livres, etc.)

6.2 Bibliographie

103

Article dans une confrence


Eh oui, BibTEX distingue un article dans une revue, et un article
dans une confrence. La structure est sensiblement la mme, si ce
nest quon utilise le champ booktitle pour le titre de la confrence,
la place du titre de la revue :
@Inproceedings{qtz:BouOrch,
author={Bouman, Charles A. and Orchard, Michael T.}
title={Color Image Display with a Limited Palette Size},
booktitle={SPIE Conference on Visual Communications
and Image Processing},
volume=1199,pages={522--533},
year=1989}

Ici les champs author, title, booktitle, year sont obligatoires, et


lon doit choisir entre volume et number.
Un extrait de livre
On cite souvent un extraitchapitre(s), ou page(s)dun livre
plutt que le livre lui-mme :
@inBook{col:McA,
author =
{MacAdam, David L.},
title =
{Color Measurement},
chapter =
4,
pages
= {48--49},
publisher = {Springer-Verlag},
year =
1985}

Sont obligatoires : author, title, chapter ou pages, publisher


(lditeur) et year.
Encore une fois nous ne saurons trop vous conseiller dexploiter
le mode BibTEX du module AucTEX dEmacs. Ce mode vous
propose notamment un menu contenant tous les types dentre. La
slection dun item de ce menu insre un squelette dentre dans
votre fichier .bib. Ce module est tlchargeable ftp://ftp.lip6.
fr/pub/TeX/CTAN/support/auctex et galement disponible sous la
forme dun paquet Debian.

6.2.2

Citation

Une fois le (ou les) chier(s) de bibliographie constitu(s), on


peut faire rfrence aux entres par lintermdiaire des clefs, avec la
commande \cite :

104

Documents scientifiques

\cite{hclefi}
La commande \cite a pour eet :
1. dinsrer un renvoi dont la forme dpend du style choisi ([2],
[Loz95],...),
2. dajouter larticle cit dans la bibliographie de votre document.
Un articleau sens large du termenapparat dans la bibliographie que sil fait lobjet dune commande \cite. Pour quun
article apparaisse sans pour autant tre cit, il faut utiliser la commande \nocite{hclefi}. Larticle rfrenc par hclefi sera alors insr
dans la bibliographie. Par ailleurs, la commande \nocite{*} insre
toutes les entres de votre fichier de biblio.

Avant de passer ltape de gnration proprement dite, il est


ncessaire dinsrer la n du document LATEX un appel la commande :
\bibliographystyle

pour stipuler un style de bibliographie, puis un appel la commande :


\bibliography
pour insrer eectivement la bibliographie. Pour le style :
\bibliographystyle{hstylei}
Les trois hstyleis prdnis 4 de LATEX sont :
plain les citations sont sous la forme [2], et la bibliographie
est classe par auteur,
unsrt idem mais pas de tri, les documents apparaissent dans
lordre o ils sont cits ; trs utilis pour les actes de confrences.
alpha les citations sont sous la forme auteurs abrgs +
anne .
Il faut ensuite spcier quels sont les chiers contenant les informations bibliographiques sur lesquelles pointent les commandes
\cite de votre document :
\bibliography{hfichier1,fichier2,...i}
indiquera BibTEX dinclure fichier1.bib, fichier2.bib,... lors
de son traitement.
4. Cherchez sur les sites CTAN, dans le rpertoire biblio/bibtex/contrib
il y a plusieurs dizaines dautres styles disponibles.

6.2 Bibliographie

6.2.3

105

Gnration

Pour gnrer la bibliographie :


1. eectuer une premire compilation avec LATEX pour que le
chier auxiliaire doc.aux contienne les informations de citations :
doc.tex

doc.aux
LATEX

2. lancer BibTEX pour gnrer la bibliographie dans le chier


doc.bbl :
bibtex doc

fichier1.bib

doc.bbl

doc.aux

BibTEX

3. eectuer une deuxime compilation avec LATEX pour insrer


la bibliographie :
doc.tex

doc.bbl

doc.aux

LATEX

4. rsoudre les rfrences croises par une troisime compilation.


Si vous tes curieux, vous verrez que le chier doc.bbl contient
un environnement thebibliography prt lemploi 5 et que le chier doc.blg est lquivalent du .log : un chier log contenant les ventuelles erreurs ou warnings de la dernire utilisation de
BibTEX.
Le programme BibTEX est sensible la variable denvironnment BIBINPUTS. Il peut donc parfois tre ncessaire dajouter
la ligne :
5. Cest--dire celui que vous auriez d vous palucher si vous nutilisiez pas
BibTEX.

Documents scientifiques

106

export BIBINPUTS=$HOME/LaTeX/biblio//:
dans votre .bash_profile pour que BibTEX cherche vos fichiers
de bibliographie dans le rpertoire $HOME/LaTeX/biblio (cest un
exemple).

6.3 Index
La gnration dindex sappuie sur deux concepts :
1. lajout de commandes \index dans le document LATEX pour
ajouter des entres dans lindex ;
2. lutilisation du programme makeindex qui va trier et mettre
en page lindex proprement dit.
Cest la commande \printindex qui insre lindex dans le document. Cette commande est analogue \tableofcontents.

6.3.1

Ce quil faut faire

Voici un petit mmo pour faire un index.


1. rajouter deux commandes dans le document matre :
\makeindex
\begin{document}
... le document ...
\printindex
\end{document}

pour dire LATEX de gnrer


les index
Pour rellement
dans le document

linsrer

2. ajouter une entre dans lindex :


\index{bidule}

insre bidule dans lindex

3. pour gnrer lindex pour le document doc.tex, on lancera


successivement les trois commandes suivantes :
latex doc
makeindex doc
latex doc

6.3 Index

6.3.2

107

Dtail du fonctionnement

La premire compilation du document doc.tex ( la condition


que la squence de contrle \makeindex soit prsente dans son prambule) gnre un chier doc.idx contenant les entres de lindex
en vrac :
doc.tex

doc.idx
LATEX

On utilise ensuite makeindex pour classer et supprimer les doublons


dans ce chier doc.idx, le rsultat est mis dans doc.ind ; une trace
de lexcution est stocke dans doc.ilg :
doc.idx

doc.ind

doc.ilg

makeindex

makeindex est bavard sur le terminal ; voici ce quil dit pour gnrer
lindex de ce document :
This is makeindex, version 2.13 [07-Mar-1997] (using kpathsea).
Scanning input file guide.idx....done (982 entries accepted, 0 rejected).
Sorting entries...........done (11254 comparisons).
Generating output file guide.ind....done (745 lines written, 0 warnings).
Output written in guide.ind.
Transcript written in guide.ilg.

Il faut donc veiller aux ventuels rejets ou avertissements (warnings)


et se reporter au chier log doc.ilg le cas chant. La deuxime
compilation avec LATEX permet dinsrer lindex format (chier
doc.ind) lendroit spci par la commande \printindex dans
doc.tex :

doc.tex

doc.ind
LATEX

Documents scientifiques

108

Lutilitaire makeindex reconnat loption -s qui permet de spcifier un style pour lindex. Ces stylesdfinis dans des fichiers
portant lextension .istchangent la mise en page de lindex. On
utilise un fichier style de la manire suivante :
makeindex -s hchier-stylei hdocument-maitrei
Cherchez sur votre distribution quels sont les fichiers de styles et testezles.

6.3.3

Diffrents types dentre dindex

On peut utiliser des entres un peu plus sophistiques que la


forme vue jusqu maintenant (<mot> et <page>). Il existe au
moins trois autres entres :
1. les entres hirarchiques :
\index{bidule!chouette}

insre une sous-entre chouette bidule


2. les entres cheval sur plusieurs pages :
\index{bidule|(}
\index{bidule|)}

la page i
la page j

gnre une entre de type : bidule ij


3. les entres symboliques :
\index{alpha@\alpha}
ajoute la lettre grecque et la classe lentre alpha. De
mme :
\index{eplucher@plucher}
ajoute le mot plucher et le classe parmi les mots commenant par e
Cette dernire forme peut galement tre utilise pour mettre dans
lindex une entre avec une mise en forme particulire, par exemple :
\index{bonjour@\textbf{bonjour}}
ajoute bonjour (bonjour en gras) dans lindex, et classe cette entre
bonjour. Enn on peut vouloir acher les numros de pages avec
une mise en vidence particulire. On utilisera alors la forme :
\index{hentrei|hcommande de mise en formei}

6.4 Diviser votre document

109

Par exemple :
\index{bidule|textbf}
achera le numro de la page o apparat bidule en gras (notez
quil ny a pas de caractre \ pour la commande de mise en forme).

6.3.4

Glossaire

On a parfois besoin de prciser la signication de certains termes


dun document ; la partie dun manuel qui regroupe lexplication de
ces termes sappelle un glossaire. Pour en gnrer, il faut procder
de manire analogue un index avec quelques petites variations 6.3.1
p. 106
prsentes au paragraphe 11.6 page 220.

6.4 Diviser votre document


Lorsquon manipule un gros document, on peut le diviser naturellement en chapitres ou parties. Il est alors conseill de crer
un document matre charg dinclure ces chapitres ou parties. Le
document matre a lallure suivante :
\documentclass{book}
\begin{document}
\frontmatter % tout ce qui est introductif
\include{preface}
\tableofcontents
\mainmatter % le corps du document
\include{chapitre1}
\include{chapitre2}
\backmatter % tout ce qui vient en fin de document
\bibliographstyle{plain}
\bibliography{machin,bidule,truc}
\end{document}
Lintrt des commandes \include rside dans le fait quelles vous
permettent de travailler sur un nombre rduit de chapitres la fois,
tout en gardant lintgrit du document. On utilise pour cela la
commande \includeonly :
\includeonly{preface,savoir}

110

Documents scientifiques

dans le prambule. Ceci permet de compiler uniquement la prface


(contenue dans le chier preface.tex) et le chapitre saisi dans le
document savoir.tex.
Chaque commande \include commence une nouvelle page. Et
il ny a apparemment pas moyen de passer outre. Vous aurez
donc compris que \include est utiliser avec les commandes de section qui sautent une page (\chapter et cie). Pour insrer un fichier
sans saut de page, utilisez la commande \input. Par contre, vous ne
bnficierez pas du mcanisme de document matre.

Enn, il est utile de noter que les trois commandes \frontmatter,


\mainmatter et \backmatter, ne sont pas indispensables, mais permettent automatiquement dadopter une numrotation en roman
pour les pages introductives et dautres petites choses (elles ne sont
cependant accessibles que dans la classe book).

Chapitre

Sommaire
7.1
7.2
7.3
7.4

Le problme des lettres accentues


Rdiger en franais avec LATEX
Le package babel et la typographie
Courrier et fax

Des documents en
franais
Lhomme rpondit : cest la femme
que tu as mise auprs de moi
qui ma donn de larbre, et jai mang !
La Gense Gn 3 12.

dun document en franais suit des rgles quil


Laestcomposition
bon de connatre. Ces rgles ne sont pas proprement parler

des directives dont on ne peut se soustraire, il sagit la plupart du


temps de rgles dusage, quil est conseill de suivre pour rendre un
document lisible ne perturbant pas le lecteur. Ces conseils dusage
donnent gnralement un aspect srieux voire professionnel un
document. Il existe plusieurs ouvrages traitant de la typographie
franaise, je citerais ici le lexique de limprimerie nationale [7] et le
manuel dYves Peyrousseaux [13].
Ce chapitre contient des informations sommaires sur la manire
dont sont codes les fontes dans LATEX pour obtenir les accents de
la langue franaise. Suivent quelques rgles de typographie et une
prsentation du package babel permettant de simplier la saisie de
documents en franais. Ce chapitre se termine sur une prsentation
dune classe de document lettre ayant pour but de composer des
lettres et des fax.
111

112

Des documents en franais

7.1 Le problme des lettres accentues


Il y a quelques annes, lorsque TEX a t conu, les fontes utilises ne comportaient pas de lettres accentues. Chacune de ces
fontes tait code laide de 7 bits par caractre, et donc contenait
quelques 128 caractres codables. Provenant des tats-Unis, ces 128
caractres ne comportaient videmment pas les caractres accentus
de la langue franaise. Cest la raison pour laquelle, pendant un long
moment de valeureux utilisateurs francophones de TEX et de LATEX
taient contraints de saisir leur document en fran\c{c}ais avec des
caract{\e}res assez p{\e}nibles {\a} taper.
Aujourdhui, ces petits dsagrments ne sont plus quun mauvais
souvenir. Depuis 1990 un codage des fontes tenant compte de caractres accentus de plusieurs langues a t adopt et porte le nom de
Cork encoding ou de codage T1. Il existe bien sr une correspondance
entre ce codage propre TEX et les standards actuels de codage des
caractres. Les packages LATEX contiennent donc une opration de
traduction du codage des caractres (par ex. iso-latin1) en codage
des fontes (par ex: codage T1).

Le standard qui a merg la fin des annes 1990 est le codage


ISO8859 avec une extension propre aux langues europennes
dite latin1. Cest ce codage qui est le plus souvent utilis aujourdhui.
Cependant depuis quelques temps, la table universelle de caractres
Unicode et son encodage UTF-8 sont devenus des standards bien supports par la plupart des systmes. Malheureusement les moteurs de
LATEX nont pas t conus initiallement pour traiter des fichiers dans
lesquels les caractres accentus sont stocks sur plusieurs octets 1 . De
nouveaux moteurs ont donc vu le jour : pdftex, xeTEX et luaTEX. Aucun pour linstant na t adopt comme standard par la communaut,
la compilation dun fichier encod en UTF-8 impose donc de choisir
lun de ces moteurs. Dans ldition courante de ce manuel, le choix a
t fait de rester sur lencodage ISO88559 et le moteur pdftex.

7.2 Rdiger en franais avec LATEX


Il existe deux packages LATEX permettant de franciser un document : le package french et le package babel. Pour des raisons tout
fait partisanes, nous nous intresserons au deuxime. On active le
package babel comme suit :
\usepackage[francais]{babel}
1. Ce qui est le cas de UTF-8

7.3 Le package babel et la typographie

113

Cet ordre dans le prambule met en route cinq fonctionnalits qui


sont :
Csure : babel gre la csure des paragraphes en tenant compte de
la langue franaise 2 et plus particulirement des mots accentus du franais ;
Typographie : les rgles de typographie franaise sont appliques
notamment en ce qui concerne les guillemets et les signes de
ponctuation ;
Mise en page : il sagit essentiellement de rintroduire lindentation du dbut de paragraphe qui suit un titre de section 3 ,
changement du symbole et despacement pour les environnements de types listes, ...
Traduction : tous les mots susceptibles dtre traduits ( Chapitre , Table des matires , etc.) sont traduits en franais ;
Macros : un ensemble de macros sont disponibles avec le package
babel, ces macros permettent de saisir correctement certaines
constructions courantes en franais, telles que no , 1er, 2o ,
37 C, ...

7.3 Le package babel et la typographie


Lensemble des rgles lies la typographie franaise dpasse
largement le cadre de ce chapitre. Heureusement le package babel
permet pratiquement de les utiliser sans les connatre. Il sut simplement de respecter quelques rgles de saisie du document LATEX
pour que la composition respecte les rgles de typographie les plus
courantes. Ainsi, titre dexemple, babel insrera un quart de cadratin inscable avant le point virgule ; ce qui est une pratique courante
en typographie franaise.
Si cette insertion automatique ne vous convenait pas, il est possible dappeler la commande \NoAutoSpaceBeforeFDP. Vous
serez alors responsable de linsertion ou non de lespace avant les signes
de ponctuations.

7.3.1

Ponctuation

Les rgles connatre pour la ponctuation peuvent se rsumer


aux deux propositions suivantes :
2. On ne coupe pas de la mme manire les mots anglais et les mots franais.
3. Ce qui nest pas le cas en typographie anglaise.

Des documents en franais

114

fouilla ! et \selectlanguage{english}
fouilla !\selectlanguage{french}

7.3.2

7.1

1. un espace doit apparatre avant et aprs tous les signes de


ponctuation doubles, cest--dire les signes ; : ! ? et
2. on saisit un espace aprs (et pas avant) les signes de ponctuation simples, cest--dire les signes . , ( et )
Le respect de cette saisie permet babel dinsrer les espaces ncessaires avant et aprs les signes de ponctuation. ce sujet, il est
intressant de remarquer que les espaces avant les points dinterrogation et dexclamation sont des espaces nes :
fouilla ! et fouilla !

L-a, e dans la, t-i, t-i, a !

L\ae titia va au Sacr-C\oe ur.

7.2

Je cite Serge Gainsbourg en guise de titre de ce paragraphe


sur les deux jolies ligatures de la langue franaise : et . Au
sujet de la saisie de ces ligatures, on peut au choix : saisir \oe et
\ae (\AE et \OE en majuscules) :
Ltitia va au Sacr-Cur.

Ou saisir directement sur le clavier sil le permet. titre indicatif,


AltGr+a donne le dans la sur un systme Linux digne de ce nom.
Et pour une histoire complique le dans lo ne se trouvant pas dans
la norme iso-latin1, mon clavier nest pas en mesure de fournir la
ligature .

7.3.3

Outils du package babel

Un grand nombre de petites choses restent toujours trs oues


quant la manire correcte de les typographier . Je pense toutes
ces abrviations courantes telles que : Monsieur, Madame, premier,
deuxime, primo, etc. Heureusement le package babel rpond certaines de nos interrogations.
1\ier
3\ieme
37\degres{} C
\primo, \secundo, \tertio, \quarto
\no 4
\No 4

1er
3e
37 C
1o , 2o , 3o , 4o
no 4
No 4

7.3 Le package babel et la typographie

115

Lettrine
trouve dans certains documents des lettrines comme celle en
Ondbut
de ce paragraphe. Le package french de Bernard Gaulle

et le package lettrine dnissent une telle commande. Nous vous proposons dans la deuxime partie de ce document un exemple de code
LATEX permettant de gnrer une telle commande.

Sommaire
Dans un document franais, on insre gnralement la table des
matires en n de document et le sommaire, qui est une table des
matires rsume, en dbut de document. Le package french propose
la commande \sommaire qui permet comme son nom lindique
un sommaire dans le document. Encore une fois, nous vous proposons
dans la deuxime partie de ce document dtudier une manire de
gnrer un tel sommaire.

7
7.3.4

Recommandations dusage

Les recommandations qui suivent ne sont pas proprement parler


des fonctionnalits du package babel ; ces recommandations sont des
conseils que vous pourrez retrouver dans des ouvrages ayant trait
la typographie :

Quon devra dans ce cas saisir


\og ainsi\fg{}.

7.3

les guillemets la franaise se saisissent soit avec et


si votre clavier permet de les gnrer, soit avec les signes
infrieurs et suprieurs : << et >>, soit avec les commandes \og
et \fg :
Quon devra dans ce cas saisir ainsi .

Les guillemets langlaise se saisissent avec les quote et


backquote : et ; dans tous les cas, utiliser " pour les
guillemets nest pas recommand ;
les locutions latines se saisissent a priori en italique ;
on abrge :

Des documents en franais

116

\nombre{12345678,23434}

7.4

et ctera
avec etc.
etc. et non pas etc...
Monsieur
avec M. 4
M. Machin
Messieurs
avec MM.
MM. Machin et Bidule
Madame
avec M\up{me}
Mme Machin
Mademoiselle
avec M\up{lle} Mlle Machin
kilomtre(s)
avec km
25 km (pas de s)
kilogramme(s) avec kg
25 kg
le sparateur de partie dcimale et partie entire est la virgule
en franais, et le point en anglais. On doit donc crire :
123, 54.
on insre un quart de cadratin tous les milliers, et millimes :

12 345 678,234 34

il est dusage dcrire les noms propres en petites capitales,


comme ceci : John Coltrane. Ici on a utilis la commande
\textsc{Coltrane} ; le package babel contient une macro
\bsc permettant de ne pas se soucier des majuscules : ainsi
\bsc{COLTRANE}, \bsc{Coltrane} et \bsc{coltrane} produisent le rsultat escompt ;
on crit les sigles sans point et en lettre capitales (RATP,
SNCF, ENISE). Certains sigles qui se prononcent bien
peuvent mme scrire en minuscules : Assedic, Inserm, etc.

7.3.5

Le cas de leuro

Le symbole de leuro peut tre produit laide de la commande


\texteuro du package textcomp. On obtient alors le caractre :
ou en utilisant la fonte sans srif. Une autre approche consiste
utiliser le package eurosym fournissant les commandes :
\euro{} : e
\EUR{35} : 35 e

7.3.6

Au sujet des majuscules

En dehors des cas bien connus o lon doit mettre ou ne pas


mettre de majuscule (il faut en mettre en dbut de phrase, ne pas
en mettre pour commencer une parenthse, selon le contexte aprs
4. Et non pas Mr qui est labrviation anglaise de mister.

7.3 Le package babel et la typographie

117

les deux points, etc.), voici trois points importants au sujet des majuscules (capitales comme disent les typographes).
Tout dabord les majuscules doivent tre accentues (je ne
mnerve pas, jexplique) lire ce sujet ce quen dit dans son manuel,
Yves Perrousseaux. Il y est expliqu que les accents prsents sur
les majuscules depuis le xvie sicle ont disparu avec larrive des
machines crire et de composition typographique dorigine anglosaxonne. On peut galement trouver dans tous les bons ouvrages de
typographie des exemples de phrases ambigus lorsque les accents
ne sont pas mis.
Ensuite, dans un titre, on ne mettra une majuscule qu la premire lettre (contrairement langlais o on met une majuscule
chaque mot). Enn, il faut insister sur le fait que lusage des majuscules est un domaine dont les nuances sont assez subtiles saisir.
Notons ici quelques points pour apprhender ces rgles :
on crit matre de confrences (donc sans majuscule) ;
luniversit Jean Monnet (pas de majuscule universit) ;
mais lUniversit lorsquon parle de la structure en tant quentit propre ;
le ministre de lIntrieur ;
lacadmie de Lyon ;
lAssemble nationale et le Snat parce quil sagit dorganismes uniques ;
les Espagnols (pour le peuple) et le franais (pour la langue)
Je ne rsiste pas lenvie de citer Jacques Andr :
[...] Voici typiquement le genre de phrase que lon
trouve dans notre rapport dactivit :
Jean Transent, Matre de Confrence en Analyse de Donnes lUniversit de Nancy(Bien
connue de la Communaut Scientique Internationale) a donn, lors du sminaire de Biologie Informatique de Mardi 23 Juin, une confrence sur les Applications de lIntelligence Articielle lemploi de la Tlvision Haute Dnition en Robotique Avance.
Dans cette phrase, il y a 23 majuscules. Il ne devrait y en
avoir que trois (Jean, Transent et Nancy). si si...

Jacques Andr [2]

Des documents en franais

118
et Yves Perrouseaux :

Les dnominations dune dignit, dune charge, dun


grade ou dune fonction sont des noms communs :
...
le
prsident
du
conseil
gnral,
etc.

Cest un nom commun, au mme


titre que le concierge ou les
femmes de mnage du conseil
gnral.

Yves Perrouseaux [13]

7.4 Courrier et fax

Le noyau de LATEX comprend une classe de document pour rdiger des lettres. Cependant cette classe nest pas trs souple et mal
adapte au franais 5 , Pour les lettres franaises, nous conseillons
lutilisation de la classe lettre de Denis Megvand de lobservatoire de Genve. La classe et sa documentation peuvent se trouver : ftp://obsftp.unige.ch/pub/tex/macros/lettre et dans
le paquet tetex-frogg de la distribution Debian Sarge.

7.4.1

Commandes disponibles

Voici quelques unes des entits que lon peut dnir dans la classe
lettre :
Adresse de lexpditeur en utilisant la commande \address ;
Ville originaire \lieu permet dcrire en haut droite, lendroit
do lon crit la lettre ;
Tlphone et fax sont prciss avec les commandes \telephone
et \fax respectivement ;
Signature laide de la commande \signature ;
Objet de la lettre avec la commande \conc (pour concernant) ;
Pices jointes grce la commande \encl (de langlais enclosed )
5. Apprciation personnelle sur la version 1.2z de la classe letter du 9 fvrier
1999.

7.4 Courrier et fax

7.4.2

119

Document bas sur la classe lettre

Nous donnons la gure 7.1 page 121 l ossature dun document LATEX bas sur la classe lettre. Les commandes \opening et
\closing sont obligatoires et ont respectivement pour objet dintroduire les formules de politesse de dbut et de n de lettre.

7.4.3

Fichiers instituts

La classe lettre est livre avec un chier default.ins qui dnit par dfaut ladresse de lobservatoire de Genve. Ladministrateur du systme LATEX que vous utilisez devra donc adapter ce chier
votre organisation.
On peut cependant dnir son propre chier institut et linclure dans ses lettres. Lorsquon veut envoyer des lettres titre personnel 6 , il est en eet plus logique dutiliser ses propres coordonnes ; on pourra alors dnir un chier nomm moi.ins contenant
par exemple :
\address{%
M. Expditeur\\
27, rue du cube parfait\\
19683 Huit}
\lieu{Huit sur Loire}
\telephone{1234567890}
\fax{0987654321}
\signature{Tar \textsc{Tempion}}
Il sut alors de faire apppel dans le prambule du document,
la commande \institut qui cherche un chier portant lextension .ins :
\institut{moi}

7.4.4

Fax

La classe lettre contient galement un environnement pour prparer un fax avec un en-tte correspondant votre organisation. Le
6. Ce qui na pas vritablement lieu dtre puisque vous tes tout de mme
au boulot pour bosser et non pas pour envoyer du courrier personnel.

120

Des documents en franais

principe gnral et les mots cls sont les mmes condition dutiliser lenvironnement telefax en lieu et place de lenvironnement
letter.
Notez quon peut ici aussi utiliser les chiers instituts . Enn
la commande \addpages permet de grer le cas o vous joignez un
document dj imprim votre fax. Par exemple si vous avez
envoyer n pages votre fax initial, il faudra ajouter la commande
\addpages{hni}. La gure 7.2 page 122 montre le document minimal
pour crer un fax.

\closing{Veuillez agrer, madame,


lexpression de mes salutations
distingues}
\encl{Deux ou trois choses.}
\end{letter}
\end{document}

... Le corps de la lettre ...

\opening{Madame,}

\conc{au sujet du bidule}

\lieu{Huit sur Loire}


\telephone{1234567890}
\fax{0987654321}
\signature{Tar \textsc{Tempion}}

\begin{letter}{%
M\up{me} \textsc{Destinataire}\\
4, rue de Square\\
65536 Carr
}
\address{%
M. Expditeur\\
27, rue du cube parfait\\
19683 Huit}

\begin{document}

\documentclass[12pt]{lettre}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

P.j.

Mme Destinataire
4, rue de Square
65536 Carr

Huit sur Loire, le 22 novembre 2013

Deux ou trois choses.

Tar Tempion

Veuillez agrer, madame, lexpression de mes salutations distingues

... Le corps de la lettre ...

Madame,

Objet : au sujet du bidule

Tl. 1234567890
Fax : 0987654321

M. Expditeur
27, rue du cube parfait
19683 Huit

7.4 Courrier et fax


121

Figure 7.1: Ossature dun document bas sur la classe lettre.

Figure 7.2: Ossature dun document fax

\end{telefax}
\end{document}

\closing{ bientt.}

... patila patala

\opening{Cher Monsieur,}

\conc{la bazar}

\name{Ren Kspditeur}

\address{\centering
Institut du pixel\\
128 rue du niveau de gris\\
65535 rode sur Loire}

\begin{telefax}{01234567}{% numro de fax


M. le destinataire\\
33 rue du fax\\
98000 CCIT groupe 3}

\begin{document}

\documentclass[12pt]{lettre}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}

Ren Kspditeur

De :

TLFAX

Nombre de pages :

Tlcopie : 01234567

TLFAX : 987.75.31

bientt.

... patila patala

Cher Monsieur,

Objet : la bazar

Ren Kspditeur

Sassonne-le-Creux, le 22 novembre 2013

En cas de mauvaise transmission, appelez s.v.p. loprateur tlfax

M. le destinataire
33 rue du fax
98000 CCIT groupe 3

TLPHONE : 987.64.20

Institut du pixel
128 rue du niveau de gris
65535 rode sur Loire

122
Des documents en franais

Chapitre

Sommaire
8.1 Livres et autres manuels
8.2 Local
8.3 EffTp, Oube et niouses

vous de jouer !
Tu ne coucheras pas avec un homme
comme on couche avec une femme.
Cest une abomination.
Le Lvitique Lv 18 22.

il est vrai que LATEX permet de faire peu prs tout ce que lon
veut, il est souvent dicile de savoir comment le lui demander.
Nous tenterons ici de vous donner quelques points dentre pour
chercher plus de documentation sur le monstre.

123

vous de jouer !

124

8.1 Livres et autres manuels

La documentation standard concernant TEX et LATEX est constitue des ouvrages suivants :
LATEX: A Document Preparation System de L. Lamport [10] ;
The LATEX Companion [6] de M. Goossens, F. Mittelbach
et A. Samarin
The LATEX Graphics Companion [5] des mmes auteurs ;
The TEXbook [9] de Knuth ;
La (vieillissante) FAQ franaise de LATEX disponible lurl
suivante :
http://www.grappa.univ-lille3.fr/FAQ-LaTeX.
On y trouve aujourdhui environ 70 questions rpondant essentiellement des problmes classiques de mise en page.
Deux ouvrages dinitiation en franais sont parus rcemment:
LATEX de D. Bitouz et J.C. Charpentier [4] ;
LATEX pour limpatient de C. Chevalier et al. [3].
Voici une liste douvrage traitant de LATEX 2 en franais :
Apprends LaTeX ! de M. Baudoin ;
Joli manuel pour LATEX 2 de B. Bayart
Aide mmoire pour LATEX de C. Willems et F. Geraerds ;
Guide dintroduction franais au traitement de texte LATEX
crit par F. Geraerds ;
Une courte (?) introduction a LATEX 2 de T. Oetiker, H.
Partl, I. Hyna, E. Schlegl, traduit de lallemand.
Ces documents sont gnralement disponibles au format pdf.

8.2 Local
Avant de vous jeter sur ce pauvre rseau international, sachez que
si vous avez la chance dutiliser la distribution TEXLive, vous aurez
accs un utilitaire vous permettant deectuer une rercherche dans
lensemble de la documentation, par exemple :
texdoc graphicx
trouve automatiquement pour vous le manuel de lextension graphicx. Lurl suivante :
file:///usr/local/texlive/2013/doc.html

8.3 EffTp, Oube et niouses

125

vous fournit une page avec lindex des packages installs sur votre
distribution TEXLive ( condition de lavoir installe dans le dossier
/usr/local/ bien sr).
Enn, nhsitez pas utiliser les commandes de recherche de
chiers disponibles sur votre systme pour essayer de trouver des
informations sur un package ou une fonte partir de son nom. Par
exemple, sur un systme Unix :
locate babel.pdf

8.3 EffTp, Oube et niouses


Comme pour la plupart des logiciels open source, on trouve une
foultitude dinformations sur internet.

8.3.1

CTAN

Il a t cr une archive standard pour TEX et Cie portant le


doux nom de CTAN pour Comprehensive TeX Archive Network.
Cette archive est copie sur plusieurs sites miroir dont des franais.
Lurl de rfrence :
http://www.ctan.org
Ce site fournit de lensemble de la quasi-majorit des packages de
LATEX avec leur documentation et leur source si vous vouliez les installer sur votre systme. Si ncessaire il existe galement des miroirs
ftp, par exemple :
ftp://ftp.lip6.fr/pub/TeX/CTAN

8.3.2

Sites Web

Le site ociel prsentant les projets centraux autour de LATEX


est :
http://www.latex-project.org
On y trouve des infos sur les modications du format LATEX 2 et
de lavancement du projet LATEX3. Notez toutefois que ce site est
en langue anglaise. Autre site en langue anglaise, la trs instructive
TEX FAQ :
http://www.tex.ac.uk/cgi-bin/texfaq2html

vous de jouer !

126

Enn, sur le modle du site Stack Overow , une plateforme alimente par les utilisateurs eux-mmes :
http://tex.stackexchange.com

8.3.3

Les newsgroups

Il existent deux groupes de discussion sur TEX et LATEX :


fr.comp.text.tex la version franaise ;
comp.text.tex la mme chose en anglais, avec plus de trac.
Ces groupes de discussion constituent une source dinformation extraordinaire si on veut bien faire leort de trier un peu les messages
parfois un peu trop nombreux. Vous pouvez en dernier recours c.-d., aprs vous tre document poser une question sur le groupe.
Si vous tes clair et concis, la rponse ne se fait en gnral gure attendre.

vous de jouer !

II
Tout ce que vous avez
toujours voulu savoir
sur (Tout ce que vous
avez toujours voulu
savoir sur LATEX sans
jamais oser le
demander) sans jamais
oser le demander

Introduction
Que tes pieds sont beaux dans ta chaussure, fille de prince!
Les contours de ta hanche sont comme des colliers, uvre des mains dun
artiste.
Ton sein est une coupe arrondie, O le vin parfum ne manque pas
Ton corps est un tas de froment, Entour de lis 1 .
Le Cantique des cantiques Ct 7 2.

partie sintitule Tout ce que vous avez toujours voulu


Cette
savoir sur (Tout ce que vous avez toujours voulu savoir sur L TEX
A

sans jamais oser le demander) sans jamais oser le demander . Elle a


pour but dexpliquer comment les chapitres prcdents ont t produits, et donc prsente les direntes commandes et environnements
qui ont t dnis pour gnrer le manuel que vous avez sous les
yeux. Mais son objectif est plus large puisque nous esprons fournir ici au courageux lecteur, une base solide pour la cration de ses
propres styles...
1. Les pigraphes de cette partie sont toutes tires du Cantique des cantiques
et nont jamais de lien avec le titre du chapitre.

129

130
Lide a germ dans mon esprit dcrire les chapitres suivants
aprs avoir eu plusieurs questions de lecteurs me demandant sils
pouvaient rutiliser tel ou tel aspect du style de ce document. Le
chantier que reprsente la rdaction des pages qui suivent a t
pour moi titanesque dans la mesure o jai d prsenter des aspects de LATEX qui ne font plus partie des connaissances de base et
qui sont donc ce titre plus diciles expliquer 2 . Enn et non
des moindres ce qui reste gnralement de lordre du bazar priv
a d ici tre rationnalis pour tre prsentable. Ce qui na pas
t une mince aaire.
Jai voulu dans cette partie prsenter la dmarche que jai adopte pour gnrer ce document. Je ne prtends pas quil sagit du seul
moyen possible pour obtenir la mise en page que vous avez sous les
yeux. Par exemple, certaines parties de ce document auraient pu tre
produites laide de paquets existants fournissant des fonctionnalits analogues ou mme meilleures que celles des outils dvelopps
ici.

Lide sous-jacente cette partie est donc bien de guider lutilisateur curieux vers des pistes dexploration de LATEX, de montrer
comment on peut laide de quelques outils, mettre au point des
commandes originales correspondant exactement ses propres besoins. Ces pistes sont susament gnrales pour tre suivies telles
quelles ou adaptes pour des cas similaires ou non. Il sagit donc
de dcouvrir les grands classiques des fonctionnalits internes de
LATEX et davoir la satisfaction sans pour autant prner la
r-invention de la roue de crer ses propres outils
Jai tent, autant que possible, de prsenter des commandes nutilisant que LATEX. Il a cependant parfois t ncessaire dutiliser certaines des fonctionnalits de TEX ce qui a donn loccasion de les
prsenter ici. Cette partie se compose donc de trois chapitres :
Outillage ncessaire qui prsente les commandes connatre permettant de squiper pour la suite. On y trouve par exemple
quelques pistes sur la structure des chiers dune distribution
LATEX, des ides pour changer les fontes dun document, et
une prsentation dtaille de la cration de nouveaux environnements bass sur les listes ;
Cosmtique qui prsente les outils qui ont t mis en uvre pour
changer lallure des titres, des en-ttes et pieds de page, des
2. Dautant plus, je lcris en petit, que je ne les matrise pas du tout.

131
marges, et quelques autres petites choses ;
De nouveaux jouets qui est loccasion dexpliquer la cration des
onglets de ce manuel, du glossaire, des exemples, du sommaire, des lettrines, des notas, et de quelques autres bricoles.
Certaines explications donnes dans les chapitres qui suivent
sont tellement fumeuses que mme lauteur ne les comprend
pas. Certaines solutions apportes aux problmes ne sont que partielles.
Enfin, certaines choses restent mystrieuses pour votre serviteur ; dans
ces situations, un panneau dos dne est insr dans le paragraphe.

Chapitre

Sommaire
9.1
9.2
9.3
9.4
9.5
9.6

Hercule Poirot
Outils de bas niveaux
Structures de contrle et tests
Fontes
Listes et nouveaux environnements
Des environnements qui mettent
en bote

Outillage ncessaire
Que tu es belle, que tu es agrable,
mon amour, au milieu des dlices !
Ta taille ressemble au palmier,
Et tes seins des grappes.
Le Cantique des cantiques Ct 7 7.

ans ce chapitre nous prsentons les outils pr requis permetD


tant de crer des commandes et des environnements plus complexes que ceux exposs au chapitre 4. Nous protons dailleurs de
cette introduction pour dire que le chapitre 4 auquel nous faisons
rfrence ici doit tre correctement digr pour commencer la lecture de cette partie. Quelques mcanismes autour des fontes sont
galement prsents ainsi que quelques pistes pour fouiller dans les
sources de LATEX.

133

Outillage ncessaire

134

9.1 Hercule Poirot


9.1.1

Fouiller dans les fichiers

Tout dabord, pour personnaliser un document crit avec LATEX,


il est ncessaire de connatre la manire dont sont organiss les chiers qui composent la distribution du systme TEX/LATEX que vous
utilisez. Votre serviteur utilise la distribution TEXLive pour Unix
(http://www.tug.org/texlive). Dans cette distribution on pourra
dans un premier temps compulser les documentations des packages
se trouvant dans le rpertoire :
/usr/share/texmf-texlive/doc/latex/
Ce rpertoire contient dautres sous-rpertoires, gnralement un par
package, dont la documentation est sous la forme dun chier dvi ou
PostScript. Dans certaines situations, il est ncessaire daller scruter
le source des packages. Dans la distribution teTEX ces sources se
trouvent dans :
/usr/share/texmf-texlive/tex/latex

et l aussi, on trouvera gnralement un rpertoire par package,


contenant les sources dans un chier au format texte, portant lextension .sty et ventuellement des chiers connexes. Enn, pour
comprendre le comportement par dfaut de LATEX, indpendamment
des packages que lon peut inclure, on pourra avoir recours au source
de LATEX dans :
/usr/share/texmf-texlive/tex/latex/base/latex.ltx
et aux sources des classes de documents dans :
/usr/share/texmf-texlive/tex/latex/base/book.cls
pour la classe book.

9.1.2

Examiner les macros

Un moyen pratique de trouver la dnition dune commande


consiste le demander LATEX lors dune session interactive. On
lance directement dans un terminal de commande du systme dexploitation :
latex

9.1 Hercule Poirot

135

Mon systme me rpond froidement :


This is e-TeXk, Version 3.14159-2.1 (Web2C 7.4.5)
%&-line parsing enabled.
**
linvite de ce prompt spartiate (**) qui est le cri du TEX tout
nu , je rponds bravement &latex pour demander charger le format LATEX. La rponse ne tarde pas :
**&latex
entering extended mode
LaTeX2e <2001/06/01>
Babel <v3.7h> and hyphenation patterns for american,
french loaded.
*
Notez que le prompt a perdu une toile. partir de maintenant on
peut crire un document LATEX interactivement. Ce qui a certes peu
dintrt dans labsolu, mais peut savrer trs utile pour obtenir la
dnition dune commande avec la syntaxe. On pourra par exemple
taper :
*\showhcommandei
pour avoir la dnition de hcommandei. Par exemple :
*\show\mbox
> \mbox=\long macro:
#1->\leavevmode \hbox {#1}. cest la dfinition
<*> \show\mbox
nous montre la dnition de la commande \mbox. On remarque que
cette commande lorsquelle est appele, se transforme en un appel
\leavevmode et \hbox. Notre esprit de curiosit nous pousse donc
crire :
*\show\hbox
> \hbox=\hbox.
cest une primitive
<*> \show\hbox
On constate ici que \hbox nest pas dnie partir dune autre
commande. Il sagit donc de ce que TEX appelle une primitive. Lexploration peut tre poursuivie :
*\show\leavevmode
> \leavevmode=macro:
->\unhbox \voidb@x .
<*> \show\leavevmode
et ainsi de suite...

dfinition de \leavevmode

Outillage ncessaire

136

9.2 Outils de bas niveaux


9.2.1

Pour qui sont ces pourcents ?

Vous avez peut-tre dj remarqu que le code LATEX contient


parfois le caractre % en n de ligne. La prsence de ce % sexplique
par le fait quun saut de ligne dans le code insre un espace dans le
texte. Ainsi la commande :
\newcommand{\beurk}{bidule}
peut scrire pour des raisons de lisibilit :

==( bidule )==

9.1

\newcommand{\beurk}{
bidule
}
==(\beurk)==

On constate donc quil y a deux espaces non dsirs autour du mot


bidule . On peut viter cela en crivant :

Il existe une autre situation o les espaces peuvent simmiscer


pernicieusement dans le texte. Dnissons un environnement :
\newenvironment{hyperimportant}{%
\bfseries\itshape}{%
\upshape\mdseries}
Il est impratif
\begin{hyperimportant}
de multiplier les sauvegardes
\end{hyperimportant}
de vos documents personnels

9.3

==(bidule)==

9.2

\newcommand{\ahhh}{%
bidule%
}
==(\ahhh)==

Il est impratif de multiplier


les sauvegardes de vos documents personnels

Si vous regardez attentivement le texte produit, vous noterez quil y


a deux espaces de chaque ct de la squence mise en italique gras
de ... sauvegardes :
deux espaces avant de introduits par le saut de ligne
la n de est impratif et celui la n de la clause de
dbut \begin{hyperimportant} ;

9.2 Outils de bas niveaux

137

Il est impratif\begin{hyperimportant} de
multiplier les
sauvegardes\end{hyperimportant} de vos
documents personnels

9.4

deux espaces aprs sauvegardes induits par le saut de


ligne la n de sauvegardes et par celui la n de
\end{hyperimportant}.
La preuve, si on supprime ces sauts de ligne :
Il est impratif de multiplier
les sauvegardes de vos documents personnels

Pour viter davoir se soucier de ce genre de problme on a gnralement recours deux commandes permettant de supprimer ces
espaces doubles. On fait appel, pour liminer ceux situs avant la
squence \ignorespaces et pour ceux situs aprs, la commande
\unskip.
La commande \ignorespaces
Cette commande procde lexpansion des commandes qui la
suivent en ignorant tous les espaces qui la suivent :

a\truc\bidule b\par
a\ignorespaces\truc\bidule b

9.5

\newcommand{\truc}{ }
\newcommand{\bidule}{ }

a b
ab

Dans lexemple ci-dessus, les commandes \truc et \bidule ont pour


seul but de produire un espace lorsquelles seront appeles. Par
consquent, la ligne :
a\truc\bidule b
produira a{}b cest--dire les deux lettres a et b spares par
deux espaces. Lappel avec la commande \ignorespaces ignore
comme son nom lindique les deux espaces produits par les commandes \truc et \bidule. On peut donc utiliser cette commande
dans notre exemple prcdent :
\newenvironment{hyperimportant}{%
\bfseries\itshape\ignorespaces}{\upshape\mdseries}
qui devrait supprimer un espace :

Outillage ncessaire

Il est impratif
\begin{hyperimportant}
de multiplier les sauvegardes
\end{hyperimportant}
de vos documents personnels.

9.6

138

Il est impratif de multiplier


les sauvegardes de vos documents personnels.

La commande \unskip
Si vous tes attentif, vous noterez que deux espaces entre sauvegardes et de rsistent nos assauts. Cest l quintervient la
primitive TEX \unskip qui enlve le dernier espace insr :

a\truc\bidule b\par
a\truc\bidule\unskip b

9.7

\newcommand{\truc}{ }
\newcommand{\bidule}{ }

a b
ab

Finalement la dnition correcte de notre environnement est la


suivante :
\newenvironment{hyperimportant}{%
\bfseries\itshape\ignorespaces}{\unskip\upshape\mdseries}

Il est impratif
\begin{hyperimportant}
de multiplier les sauvegardes
\end{hyperimportant}
de vos documents personnels.

9.2.2

9.8

qui devrait supprimer tous les espaces indsirables :


Il est impratif de multiplier
les sauvegardes de vos documents personnels.

Le caractre @

Lorsque vous vous lancerez dans lexploration des sources des


packages vous remarquerez que le nom dune grande partie des commandes qui y sont dnies contient le caractre @. Or dans un document .tex, il nest pas autoris dexcuter une commande dont
le nom contient ce dernier. Ceci permet de protger ou de limiter
la porte des commandes des packages. Par exemple la commande
\cb@defpoint, dnie dans le package changebar, ne peut pas tre
appele par un utilisateur du package. Pour rednir ces commandes
internes, il est ncessaire deectuer la petite manipulation suivante :

9.3 Structures de contrle et tests

139

\makeatletter
% ici on peut bidouiller
\renewcommand{\@ttention}{oulala...}
\makeatother
% ici on ne peut plus
La commande hypothtique \@ttention peut uniquement tre manipule si le caractre @ est une lettre. Cest le rle de \makeatletter
qui transforme le caractre @ en une lettre comme les autres, tandis
que la commande \makeatother lui raecte sa fonction spciale.
Cette manipulation nest pas ncessaire dans les fichiers de
styles inclus avec la commande \usepackage pour lesquels la
lettre @ peut tre utilise comme un caractre.

La manire dont TEX peut changer la catgorie des caractres est


explique au chapitre suivant au paragraphe 10.5.1 page 183.

9.2.3

Le \let de TEX

Il est parfois utile de modier une commande interne de LATEX


pour ajouter une fonctionnalit son comportement par dfaut. Par
exemple pour modier la commande interne \bidule 1 , on peut procder comme suit :
1. sauvegarder la commande grce linstruction \let de TEX :
\let\biduleORIG\bidule
2. rednir la commande \bidule en se basant sur la dnition
intiale :
\renewcommand{\bidule}{%
quelque chose en plus\biduleORIG}
3. si ncessaire, revenir la dnition initiale grce :
\let\bidule\biduleORIG

9.3 Structures de contrle et tests


Les structures introduites par le package ifthen suivent la syntaxe :
1. Oui oui a nest pas une commande interne, mais un exemple idiot de nom
de commande qui nexiste pas...

Outillage ncessaire

140
\ifthenelse{ hexpression boolennei }
{ ... code LaTeX si vrai ... }
{ ... code LaTeX si faux ... }
et :

\whiledo{ hexpression boolennei }


{ ... code LaTeX tant que cest vrai ... }
Lhexpression boolennei peut tre constitue selon le contexte de
direntes commandes du package ifthen, et parmi elles :
les expressions hnombre1 i>hnombre2 i, hnombre1 i<hnombre2 i
ainsi que lexpression hnombre1 i=hnombre2 i permettant chacune delles de comparer la valeur hnombre1 i et la valeur
hnombre2 i ;
\equal{hC1 i}{hC2 i} qui renvoie vrai ou faux selon que la
chane de caractre hC1 i est gale la chane hC2 i ;
\isodd{hnombrei} qui renvoie vrai si le hnombrei est impair,
faux sinon ;
\value{hcompteuri} qui renvoie la valeur dun hcompteuri
sous la forme dun nombre exploitable dans les conditions
boolennes ;
\lengthtest{htest longueuri} qui renvoie le rsultat de lexpression htest longueuri, test contenant les oprateurs <, > ou
= et des longueurs LATEX comme oprandes.
On notera galement quon pourra utiliser les connecteurs logiques
\OR, \AND et \NOT qui jouent le rle quon attend deux dans une
expression boolenne. On peut grouper des expressions avec les oprateurs \( et \).

9.3.1

Boolens et oprateurs associs

Le package ifthen propose ses vaillants utilisateurs la possibilit


de manipuler des boolens. On peut en dclarer un avec la commande
\newboolean :
\newboolean{hid booleni}
qui dnit une variable boolenne identie par hid booleni. On
pourra ensuite lui aecter la valeur true ou false avec la commande
\setboolean :
\setboolean{hid booleni}{hvaleuri}
9.3

p. 139

Et bien sr on pourra utiliser le boolen ainsi cr avec les structures


de contrle, par exemple comme ceci :

9.3 Structures de contrle et tests

141

\ifthenelse{\boolean{hid booleni}}
{ code LaTeX si hid booleni vaut vrai }
{ code LaTeX sil vaut faux

Il est bon de connatre la version TEX de ce qui prcde. On trouve en


eet dans les packages LATEX du code crit en TEX, et en particulier
lutilisation de la structure de contrle Si Alors Sinon . Voici un
exemple pour dnir un nouveau boolen avec monsieur TEX :
\newif\ifimprimantecouleur
On le positionne faux avec :
\imprimantecouleurfalse
et vrai avec :
\imprimantecouleurtrue
On peut ensuite exploiter ce boolen dans une structure Si
Alors Sinon la mode TEX comme suit :
\ifimprimantecouleur
... % code si on a une imprimante couleur
\else
... % code si c est une imprimante noir et blanc
\fi

9.3.2

Exemples

On souhaite crire une commande pour produire le dveloppement de la fonction factorielle 2 de manire pouvoir crire :
On peut exprimer la factorielle
de 9 comme suit :
9.9

On peut exprimer la factorielle de 9


comme suit :
\begin{displaymath}
9!=\itfactorielle{9}
\end{displaymath}

9! = 9 8 7 6 5 4 3 2 1

Une faon de rsoudre le problme est dcrire une commande contenant une boucle \whiledo :
\newcommand{\itfactorielle}[1]{%
\setcounter{cptfact}{#1}% on stocke larg. dans un compteur
\whiledo{\value{cptfact}>1}{% tant quil est > 1
2. Y en a qui nont pas grand chose faire de leur journe...

Outillage ncessaire

142

\thecptfact\times% on laffiche avec un


\addtocounter{cptfact}{-1}}% on dcrmente le compteur
1}% on affiche 1 la fin
Il faudra bien sr dclarer le compteur :
\newcounter{cptfact}
On notera que dans la condition boolenne de la boucle TantQue ,
on fait appel la commande \value pour comparer la valeur du
compteur avec la valeur 1. Un peu plus tordu : on peut implmenter
cette commande de manire rcursive :
\newcommand{\recfactorielle}[1]{% version rcursive :
\setcounter{cptfact}{#1}% on affecte largument au compteur
\ifthenelse{#1>1}{% si cette valeur est suprieure 1
\thecptfact\times% on laffiche suivie de
\addtocounter{cptfact}{-1}% on dcrmente le compteur
\recfactorielle{\thecptfact}}% on fait un appel rcursif
{1}}% sinon (valeur=1) on affiche 1
Cette commande produit videmment le mme rsultat que la prcdente. On notera que dans la condition du \ifthenelse on compare
un nombre (#1) avec un autre (1). Enn on pourra remarquer que
la prsence de la commande \times impose le mode mathmatique
pour excuter ces commandes. On peut contourner le problme, si
4.5.1 ncessaire, avec la commande \ensuremath.
p. 79
Le \whiledo et le \ifthenelse ont t utiliss dans le document
que vous avez sous les yeux pour gnrer les tableaux de symboles
la page 266 et 267, ainsi que les tableaux sur le codage la page ??
du chapitre sur les documents en franais. Nous avons tout dabord
cr une commande permettant dacher un symbole :
\affsymb{pzd}{249} \affsymb{pzd}{75}
\affsymb{pzd}{221} \affsymb{pzd}{88}

9.10

249

75

221

88

Cette commande est la suivante :


\newcommand{\affsymb}[2]{%
\framebox{% un cadre
\parbox[][16pt][b]{1em}{% autour dune bote paragraphe
\centering% de 16 pt de hauteur, 1em de large,
\Pisymbol{#1}{#2}\\% dont le contenu centr
\tiny#2}}}% est compos du symbole et de son numro

9.3 Structures de contrle et tests

143

Largument #1 est le nom de la police (pzd ou psy), et largument #2


est le numro de symbole. Sinon, rien de particulier dans cette
C
commande, si vous avez suivi jusquici (notamment en lisant le cha- p. 257
pitre 4 et plus particulirement le paragraphe 4.4 page 70)... Nous
avons ensuite dni une commande permettant dacher un srie de
symboles :

9.11

Voici les symboles Zapf Dingbats,


partir du \No 40, sur 3 lignes et
6 colonnes :
\begin{center}
\symboles[40]{pzd}{3}{6}
\end{center}

Voici les symboles Zapf Dingbats, partir du No 40, sur 3


lignes et 6 colonnes :

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

Voici le code de la commande \symboles :


\newcommand{\symboles}[4][0]{%
\setcounter{clig}{0}% Mise zro des compteurs de ligne
\setcounter{ccol}{0}% et de colonne
\setcounter{cligmax}{#3}% arguments 3 et 4 pour fixer
\setcounter{ccolmax}{#4}% le nbre max de colonnes et de lignes
% Pour chaque ligne :
\whiledo{\value{clig}<\value{cligmax}}{%
\setcounter{ccol}{0}% remise zro du compteur de colonne
% et pour chaque colonne :
\whiledo{\value{ccol}<\value{ccolmax}}{%
% on calcule le numro du symbole
\setcounter{csym}{%
\value{clig}*\value{ccolmax}+\value{ccol}+#1}
% si sa valeur est infrieure 256
\ifthenelse{\value{csym}<256}{%
\affsymb{#2}{\thecsym}}{% on laffiche
\mbox{}}% sinon on cr un bote vide
\stepcounter{ccol}}% on passe la colonne suivante
\stepcounter{clig}% on passe la ligne suivante
% on saute une ligne , sauf la fin
\ifthenelse{\value{clig}<\value{cligmax}}{\\}{}}}
Il faudra bien sr dclarer les cinq compteurs avec la commande
\newcounter.

Outillage ncessaire

144

240
9.12

Et je sais que vous tes tout


particulirement curieux de voir ce
que fait cette commande lorsque le
compteur dpasse les bornes :
\begin{center}
\symboles[240]{psy}{3}{6}
\end{center}

Et je sais que vous tes tout


particulirement curieux de voir
ce que fait cette commande
lorsque le compteur dpasse les
bornes :

246

241

247

252

9.3.3

242

248

253

243

249

254

244

250

245

255

Tester la parit des pages

Cest une pratique courante on le verra par la suite de crer


des commandes ayant un comportement dirent selon la parit de
la page. lentre Finding if youre on an odd or an even page
de la Faq anglaise [1] est expliqu que le naf :
\ifthenelse{\isodd{\value{page}}}
{ ... la page est impaire ... }
{ ... la page est paire ... }

peut ne pas donner le rsultat escompt. Le compteur de page lorsquil est examin la frontire entre deux pages peut ne pas tre
jour : le compteur de page sil est interrog au dbut dune page
renverra le numro de la page prcdente... Ceci est d la manire
dont TEX procde pour eectuer les sauts de page. Pour contourner
ce problme plusieurs solutions sont possibles. Celle adopte dans
ce document consiste utiliser le package chngpage qui insre articiellement un \label lendroit o lon veut tester la parit de la
page.
Par consquent dans le cas o le test de parit raliser peut
tre valu la frontire entre deux pages, il faudra crire :
\checkoddpage%
\ifcpoddpage
... la page est impaire ...
\else
... la page est paire...
\fi

251

9.4 Fontes

145

9.4 Fontes
9.4.1

Le jeu des trois familles

Pour conserver une homognit dans lallure des caractres dans


un document LATEX, sont dnies trois familles :
1. la famille roman celle que vous tes en train de lire ;
2. la famille sans srif que vous tes galement en train de lire
linstant mme ;
3. et la famille machine crire, galement appelle typewriter
lorsquon est anglophone, que cela ne vous aura sans doute
pas chapp vous tes en train de lire.
Il est important de noter que ces trois familles de fontes sont par dfaut trois familles de la police baptise par son auteur (Knuth luimme) Computer Modern . Elles sont conues pour sharmoniser
au sein dun mme document. Dans cet ordre dide, il faudra toujours veiller ce que ces trois familles (roman, sans srif, et machine
crire) soient visuellement compatibles entre elles. Les distributions de LATEX proposent gnralement des packages permettant
dutiliser les fontes PostScript dans un document, avec notamment
le clbre 3 package times utilisant :
1. Times pour la famille roman celle que vous tes en train de lire ;
2. Helvetica pour la famille sans srif que vous tes galement
en train de lire linstant mme ;
3. Courrier pour la famille machine crire.
De mme le package newcent utilise :
1. NewCentury pour la famille roman celle que vous tes en
train de lire ;
2. AvantGarde pour la famille sans srif que vous tes, si
si, en train de lire linstant mme ;
3. Courrier pour la famille machine crire.

9.4.2

Dsignation des fontes et de leurs attributs

Une fonte 4 ou police de caractres est dnie dans LATEX par


plusieurs caractristiques dont il a t question au paragraphe 2.1
page 20. De manire dsigner la fonte laide des commandes que
nous allons dcouvrir dans ce paragraphe, on utilisera :
3. Mais obsolte. Aujourdhui il est conseill dutiliser le package mathptmx
4. Terme faisant rfrence au plomb de limprimerie...

Outillage ncessaire

146

un codage qui sera quelques exceptions prs le codage T1 ;


une srie de caractres identiant la famille : cmr pour computer modern roman, ptm pour PostScript times, etc.
une srie de caractres pour la graisse de la fonte : m pour
mdium , b pour bold (gras), bx pour bold extended
(gras tendu, cest--dire gras avec des caractres plus larges),
etc.
une srie de caractres dnissant lallure (shape en anglais)
de la fonte : n pour normal , it pour italique , sl pour
slanted (pench), etc.
Fontes computer modern

Il sagit dun ensemble de fontes dessines par Donald Knuth


et utilises par dfaut dans LATEX. Les commandes \emph, \textbf,
etc. slectionnent donc automatiquement ces polices.
Computer Modern roman (cmr)
Codage T1
machin Bidule Chouette chose
m n
normal
machin Bidule Chouette chose
m it
italique
machin Bidule Chouette chose
m sl
pench
machin Bidule Chouette chose m sc
petites capitales
machin Bidule Chouette chose
bx n gras tendu normal
machin Bidule Chouette chose
bx it gras tendu italique
machin Bidule Chouette chose
bx sl gras tendu pench
machin Bidule Chouette chose
b
n
gras normal
Computer Modern sans srif (cmss)
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose

m
m
bx
sbc

Computer Modern typewriter (cmtt)


machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose

n
sl
n
n

Codage T1
normal
pench
gras tendu normal
semi gras condens normal

m
m
m
m

Computer Modern bonacci (cmb)


machin Bidule Chouette chose

n
it
sl
sc

Codage T1
normal
italique
pench
petites capitales

Codage T1
m n normal

9.4 Fontes

147

Computer Modern funny roman (cmfr)


machin Bidule Chouette chose
machin Bidule Chouette chose
Computer Modern dunhil (cmdh)
machin Bidule Chouette chose

m
m
m

Codage T1
n normal
it italique

Codage T1
n normal

Fontes en bton
Elles ont t dessines par Knuth pour son ouvrage intitul
Mathmatiques concrtes . Le package beton 5 permet de les charger dans un document.
Concrete fonts (ccr)
Codage T1
machin Bidule Chouette chose
m n
normal
machin Bidule Chouette chose m sc petites capitales
machin Bidule Chouette chose
m sl
pench
machin Bidule Chouette chose
m it
italique
Fontes gothiques
Les fontes ci-deous sont dites de la famille gothique et ne sont `a utiliser que
dans un contexte bien precis faute de rendre le texte parfaitement illisible, comme
celui que vous etes en train de lire actuellement, dailleurs vous avez probablement
dej`a arrete, donc je peux dire des gros mots : caca...
Gothique (ygoth)
Codage U
main Bidule Cuette ose m n
Fraktur (yfrak)
main Bidule Chouette ose
Schwabacher (yswab)
main Bidule Chouette ose

Codage U
m n
Codage U
m n

Fontes PostScript
Les fontes ci-dessous sont gnralement disponibles gratuitement
et rsident la plupart du temps dans les imprimantes.

5. Notez ici le jeu de mots dsopilant, concrete veut aussi dire bton en
langue anglaise.

Outillage ncessaire

148
Times (ptm)
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose
Palatino (ppl)
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose
charter (bch)
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose

New century (pnc)


machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose
Bookman (pbk)
machin Bidule Chouette chose
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose

m
m
m
m
b
m
m
m
m
b

n
it
sl
sc
n

Codage T1
normal
italique
pench
petites capitales
gras

n
it
sl
sc
n

Codage T1
normal
italique
pench
petites capitales
gras

Codage T1
n
normal
it
italique
sl
pench
sc petites capitales
n
gras

m
m
m
m
b
m
m
m
m
b

Codage T1
n
normal
it
italique
sl
pench
sc petites capitales
n
gras

m
m
m
m
b

Codage T1
n
normal
it
italique
sl
pench
sc petites capitales
n
gras

9.4 Fontes

149

Helvetica (phv)
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose
machin Bidule Chouette chose
Avantgarde (pag)
machin Bidule Chouette chose
machin Bidule Chouette chose
MACHIN B IDULE C HOUETTE CHOSE
machin Bidule Chouette chose

machin
machin
MACHIN

machin

Courier (pcr)
Bidule Chouette
Bidule Chouette
BI D U L E CH O U E T T E
Bidule Chouette

m
m
m
b

CHOSE

chose

n
sl
sc
n
n

Codage T1
normal
pench
petites capitales
gras
gras condens

Codage T1
n
normal
sl
pench
sc petites capitales
n
gras

m
m
m
b

chose
chose

Zapf Chancery (pzc)


machin Bidule Chouette chose

9.4.3

m
m
m
b
bc

Codage T1
n
normal
sl
pench
sc petites capitales
n
gras

Codage T1
n normal

Changer de fontes

Globalement
On peut changer de police de caractres en utilisant des packages
plus ou moins standard de la distribution LATEX :
N mathptmx

: pour utiliser le vilain Times New Roman ;

N newcent

: pour le New Century ;

N mathpazo

: pour le Palatino ;

N ...

: et dautres, navez qu fouiller votre distribution...

Si lon examine le contenu du chier newcent.sty on trouve simplement :


\renewcommand{\rmdefault}{pnc}
\renewcommand{\sfdefault}{pag}
\renewcommand{\ttdefault}{pcr}

Outillage ncessaire

150

ce qui signie que comme expliqu au 9.4.1 page 145 on a redni les trois familles roman , sans srif et machine crire
en les nommant par leur nom LATEX standardis : pcn pour PostScript NewCentruy, pag pour PostScript AvantGarde etc. Les noms
standardiss sont donns dans les tableaux de la section prcdente.
Localement

{\fontfamily{cmfr}\selectfont On passe
en Funny Roman et mme quon peut
faire de l\emph{italique}... cest
dingue !} Et hop nous voila de nouveau
en \verb+\rmdefault+

On passe en Funny Roman et mme


quon peut faire de litalique... cest
dingue ! Et hop nous voila de nouveau en \rmdefault

Les appels quil est possible de faire avant \selectfont sont :


\fontencoding pour le codage ;
\fontfamily avec comme argument la famille (cmr pour Computer Modern, ptm pour PostScript Times, etc.) ;
\fontseries pour prciser la graisse (argument b pour gras,
m pour la graisse moyenne, etc. ) ;
\fontshape pour lallure de la fonte (argument n pour normal, sl pour pench, etc.) ;
\fontsize avec deux arguments : la taille des caractres et
lespace entre deux lignes conscutives.
Voici un autre exemple :
{\fontfamily{ppl}\fontseries{b}%
\fontsize{1.8cm}{2cm}\selectfont
Big!}
Et nous voila de nouveau en
\verb+\rmdefault+

9.14

9.13

Il est toujours possible de changer localement de fonte dans un


texte en spciant les paramtres ncessaires :

Big!

Et nous voila de nouveau en


\rmdefault

Finalement, sil on veut faire appel de manire rpte une fonte


dont tous les attributs sont xes, on pourra avoir recours la commande \DeclareFixedFont prenant six arguments (nom, codage,
famille, graisse, allure, taille) et permettant dtre ensuite utilise
comme une dclaration :

9.5 Listes et nouveaux environnements

Avant
aprs.

bon b l moins davoir une bonne loupe vous ne serez pas capable

9.15

\DeclareFixedFont{\toupiti}
{T1}{pag}{m}{n}{3pt}
Avant {\toupiti bon b l moins davoir
une bonne loupe vous ne serez pas capable
de lire ce texte} aprs.

151

de lire ce texte

9.5 Listes et nouveaux environnements


plusieurs reprises dans ce document, nous avons eu recours
lenvironnement list permettant de crer des environnements bass sur le principe des listes (numrotes, de descriptions, etc.). Nous
donnons ici les bases ncessaires pour pouvoir utiliser cet environnement en sappuyant sur des exemples.

9.5.1

Principe

Pour dnir un environnement bas sur les listes, on utilisera la


syntaxe suivante :
\newenvironment{maliste}%
{\begin{list}%
{ ... code pour litem par dfaut ... }
{ ... caractristiques de la liste ... }
}%
{\end{list}}
Lenvironnement list prend donc deux arguments. Le premier permet de dnir lallure de ltiquette (ou item) par dfaut. Le second
permet de dnir la liste elle-mme et en particulier :
Sa gomtrie : les marges, les espaces entre les paragraphes composant la liste, les espaces entre la liste et lenvironnement
dans lequel elle est insre, etc.
la production de ltiquette : cest--dire la manire dont on va
eectivement produire le titre de chaque entre de la liste.
La liste suivante tente dillustrer les direntes dimensions que lon
peut modier pour dnir sa propre liste :
Horizontales:
(3)

la dimension \itemindent (1) permet


dintroduire une indentation pour le premier paragraphe dune entre de liste.
(1)

Outillage ncessaire

152
(4)

tiquette:
(3)

\leftmargin (4) dnie la marge de


gauche et la dimension \rightmargin celle
de droite ;
la dimension \labelsep (2) dtermine
la dimension sparant ltiquette du dbut du paragraphe. \labelwidth (3) dnit quant elle la largeur de la bote contenant ltiquette.
(5)
Si on commence un autre paragraphe
dans une entre de liste, ce paragraphe sera
alors indent de \listparindent (5) qui
vaut 0 point par dfaut.

(2)

Remarque assez importante: (2) si la largeur de ltiquette est infrieure \labelwidth alors ce
texte est insr dans une bote de largeur
\labelwidth. Dans le cas contraire, comme cest le cas ici, le texte de ltiquette
sera insr dans une bote de la largeur ncessaire et le paragraphe sera indent en
consquence.
\makelabel qui attend un argument, permet de produire ltiquette. Ainsi lorsquon entre \item[htexte tiquettei], il est
fait appel la commande \makelabel{htexte tiquettei}.

9.5.2

Rglage de ltiquette

Pour comprendre le fonctionnement de lenvironnement list et


plus particulirement le principe du positionnement relatif de ltiquette et du paragraphe adjacent, on peut imaginer que les lments
sont positionns dans lordre suivant :
1. le paragraphe est dabord positionn par rapport la marge
de gauche laide de la longueur \leftmargin ;
2. la premire ligne du paragraphe est ensuite indent laide
de la longueur \itemindent ;
3. puis ltiquette est positionne relativement au dbut du paragraphe ainsi indent laide de la longueur \labelsep.
Il dcoule de ceci que lentre de liste (ou tiquette) peut tre produite dans la marge de gauche... La gure 9.1 page ci-contre illustre
le positionnement de lentre de liste par rapport au paragraphe dans
les deux situations suivantes :

9.5 Listes et nouveaux environnements

labelwidth

labelsep

labelwidth
2

153

labelsep

itemindent
itemindent

leftmargin

Paragraphe
rightmargin

(a) Cas standard

leftmargin

Paragraphe
rightmargin

(b) Largeur suprieure \labelwidth

Figure 9.1: Positionnement de lentre de liste


cas de la gure 9.1a o la largeur de lentre de liste est infrieure la dimension \labelwidth. Dans ce cas lentre
de liste est positionne une distance de \labelsep du paragraphe, lui mme tant indent de \itemindent et positionn
par rapport la marge gauche laide de \leftmargin ;
cas de la gure 9.1b : la largeur de lentre de liste est suprieure la dimension \labelwidth. Dans ce cas lentre
de liste est toujours positionne la distance \labelsep du
paragraphe, mais celui-ci est indent dune valeur suprieure
\itemindent.

9.5.3

Rglages verticaux

On peut galement rgler les blancs verticaux dans lenvironnement list. Ces paramtres permettent notamment de dnir les
espaces entre les paragraphes constituant les entres de liste, mais
galement les blancs que lon veut insrer avant ou aprs la liste. Il
sagit de :
\itemsep : lespace entre chaque entre de liste ;
\parsep : lespace entre deux paragraphes lintrieur dune
entre de liste ;
\topsep : le blanc insr avant et aprs lenvironnement cr,
auquel est ajout \partopsep si celui-ci commence un nouveau paragraphe.

9.5.4

Valeurs par dfaut

Tous les paramtres de lenvironnement list ont des valeurs par


dfaut. Les longueurs pour les rglages horizontaux sont par dfaut

Outillage ncessaire

154

les suivantes sur le systme de votre serviteur :


dimension
\itemindent
\listparindent
\rightmargin
\leftmargin
\labelwidth
\labelsep

valeur par dfaut


0pt
0pt
0pt
25pt
20pt
5pt

Et pour les rglages verticaux :


dimension
\itemsep
\parsep
\topsep
\partopsep

4.0pt
4.0pt
8.0pt
2.0pt

valeur par dfaut


plus 2.0pt minus 1.0pt
plus 2.0pt minus 1.0pt
plus 2.0pt minus 4.0pt
plus 1.0pt minus 1.0pt

La commande \makelabel est quant elle dnie par :


\hfil #1
par consquent, dans la bote de largeur \labelwidth, le contenu
de ltiquette est pouss droite. Ainsi si on dnit une liste simple
avec :
\newenvironment{listebasique}
{\begin{list}{}{}}
{\end{list}}
On aura :
Avant avant avant avant avant avant avant
avant avant
\begin{listebasique}
\item[X] o o o o o o o o o o o o o o
o o o o o o o o o o o o o o o o o o
u u u u u u u u u u u u u u u u u u
\item[Machin] v v v v v v v v v v v v
\end{listebasique}
Aprs aprs aprs aprs aprs aprs aprs
aprs aprs aprs

avec des tiquettes, et sans tiquette :

Avant avant avant avant avant


avant avant avant avant

9.16

X ooooooooooooooo
ooooooooooooooo
oo
uuuuuuuuuuuuuu
uuuu
Machin v v v v v v v v v v v v
Aprs aprs aprs aprs aprs
aprs aprs aprs aprs aprs

9.5 Listes et nouveaux environnements

9.5.5

avant avant avant


avant avant avant

Avant avant avant avant avant


avant avant avant avant avant
avant avant avant avant

e e e e e e e e e
e e e e e e e e e

eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eee

aprs aprs aprs


aprs aprs aprs

9.17

Avant avant avant avant


avant avant avant avant
\begin{listebasique}
\item[] e e e e e e e
e e e e e e e e e e
\end{listebasique}
Aprs aprs aprs aprs
aprs aprs aprs aprs

155

Aprs aprs aprs aprs aprs


aprs aprs aprs aprs aprs
aprs aprs aprs aprs

Exemples

\begin{ficaux}
\item[tex] fichier source \LaTeX{} ; bla
blabla blabla blabla blabla blabla bla
blabla blabla blabla blabla
\item[aux] fichier auxiliaire ...
\item[log] le fichier de trace ...
\item[dvi] fichier \emph{device
independant},...
\end{ficaux}

9.18

La liste dcrivant les chiers auxiliaires de LATEX situe la


page 253 a t produite avec le code suivant :
tex

chier source LATEX ; bla


blabla blabla blabla blabla blabla bla blabla blabla blabla blabla

aux

chier auxiliaire ...

log

le chier de trace ...

dvi

chier device independant,...

Lenvironnement ficaux a lui t conu comme suit :


\newenvironment{ficaux}{%
\begin{list}{}{%
% largeur de la bote englobant le label :
\setlength{\labelwidth}{1cm}
% espace entre paragraphe et l tiquette :
\setlength{\labelsep}{8pt}
% marge de gauche :
\setlength{\leftmargin}{\labelwidth+\labelsep}
\renewcommand{\makelabel}[1]{% production de ltiquette :
\framebox[\labelwidth]{\texttt{##1}}}}}{\end{list}}
Dans cet exemple la relation :
\leftmargin=\labelwidth+\labelsep
permet de positionner lentre de liste comme indiqu la gure 9.2a
page suivante.

Outillage ncessaire

156

labelwidth

labelwidth
2

labelsep
Paragraphe

leftmargin

leftmargin

labelsep
itemindent

Paragraphe
rightmargin

rightmargin

(a) Liste fichiers auxiliaires

3
2

(b) Liste questions

Figure 9.2: Positionnement des tiquettes dans les listes exemples.


Un autre exemple : la cration dun environnement de liste numrote pour produire des questions dans un nonc de travaux
pratiques ou autre devoir surveill...

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

o
o
o
o
o
o
o

ooooooooooooo
oooooooooooooo
ooooooo

ooooooooooooo
oooooooooooooo
oooooooooooooo
ooooooooooo

ooooooooooooo
oooooooooooooo
ooooooo

9.19

\begin{question}
\item o o o o o o
o o o o o o o o
\item o o o o o o
o o o o o o o o
o o o o o o o o
\item o o o o o o
o o o o o o o o
\end{question}

Cet environnement a t produit par le code suivant :


\newenvironment{question}{\begin{list}{}{%
\usecounter{cptquestion}%
\setlength{\labelwidth}{2em}%
\setlength{\labelsep}{1em}
\setlength{\itemindent}{15pt}%
\setlength{\leftmargin}{.8cm}
\setlength{\rightmargin}{10pt}
\renewcommand{\makelabel}[1]{%
\etiquettequestion{##1}}}}
{\end{list}}

9.5 Listes et nouveaux environnements

157

Le positionnement correspondant est montr la gure 9.2b page


ci-contre. On notera que dans la dnition de la liste est fait usage de
la commande \usecounter permettant de crer une liste numrote
et de prciser quel compteur est utilis. On devra donc dclarer le
compteur en question :
\newcounter{cptquestion}
Enn, chaque entre de liste compose du numro de la question et
dun joli crayon est produite par la commande :
\newcommand{\etiquettequestion}[1]{%
\makebox[\labelwidth]{%
\Pisymbol{pzd}{47}$_\thecptquestion$}}
Finalement la commande :
\renewcommand{\makelabel}[1]{\etiquettequestion{##1}}}}
rednit la commande \makelabel comme faisant appel notre
joli crayon. Le premier et unique argument est pass la commande \etiquettequestion laide de lexpression ##1. #1 dsignerait en eet, dans le contexte de la dnition de environnement
question, le premier argument de celui-ci.
Dans ce manuel, on trouve dans le mmento une liste de packages
(page 252) produite par le code suivant :
\newenvironment{packages}{\begin{list}{}{%
\setlength{\labelwidth}{2.5cm}%
\setlength{\itemindent}{0pt}%
\setlength{\leftmargin}{\labelwidth+\labelsep}%
\renewcommand{\makelabel}[1]{%
$\blacktriangle$ \ltxpack{##1} \hfil:}}}
{\end{list}}
La commande \ltxpack est dnie au paragraphe 11.1.2 page 199.
Pour information, lenvironnement ci-dessus donne :

\begin{packages}
\item[bidule] cette extension permet
dinsrer des bidules dans son
document sans avoir savoir sil
sagit de machin ou de truc.
\end{packages}

9.20

N bidule

: cette extension
permet dinsrer des bidules
dans son document sans
avoir savoir
sil sagit de
machin ou de
truc.

Outillage ncessaire

158

labelwidth
2

itemindent

labelwidth

3
1

leftmargin

labelsep < 0

Paragraphe
rightmargin

itemindent

leftmargin

3 labelsep < 0
Paragraphe
rightmargin

(a) Utiliser un \labelsep ngatif. (b) Crer une bote paragraphe pour
superposer ltiquette et le paragraphe.

Figure 9.3: Postionnement de ltiquette dans la liste glossaire .

9.5.6

Un exemple un peu plus tordu...

Nous allons dtailler dans cette section la manire dont la liste


composant le glossaire de la page 277 a t gnre. Cette liste dont
lallure est donne ci-dessous exploite deux ides :
1re ide

La longueur \labelsep peut tre ngative ce qui permet de


superposer lentre de liste avec le paragraphe. Ceci est illustr
la gure 9.3a ;
Deuxime ide
On peut crer une bote paragraphe pour la bote produisant ltiquette. La bote ainsi cre pourra donc tre compose
de deux lignes : celle du haut contenant le texte de ltiquette,
celle du dessous tant vide, se superpose avec le paragraphe
(gure 9.3b).
Le code permettant de gnrer la liste ci-dessus et celle du glossaire
de ce manuel est donc :
\newenvironment{glossaire}{\begin{list}{}{%
\setlength{\labelwidth}{.5\textwidth}%
\setlength{\labelsep}{-.8\labelwidth}%
\setlength{\itemindent}{\parindent}%
\setlength{\leftmargin}{25pt}%
\setlength{\rightmargin}{0pt}%

9.6 Des environnements qui mettent en bote

159

\setlength{\itemsep}{.8\baselineskip}%
\renewcommand{\makelabel}[1]{%
\boiteentreeglossaire{##1}}}}
{\end{list}}
La valeur .8\baselineskip pour \itemsep permet darer le glossaire en insrant des blancs entre chaque entre. La commande permettant de gnrer la bote contenant lentre de liste superposer
est :
\newcommand{\boiteentreeglossaire}[1]{%
\parbox[b]{\labelwidth}{%
\setlength{\fboxsep}{3pt}%
\setlength{\fboxrule}{.4pt}%
\shadowbox{\sffamily#1}\\\hfill\mbox{}}}
Pour comprendre comment est positionne cette bote, nous avons
quelque peu modi la commande prcdente pour dessiner un cadre
autour :
Bidule
ooooooooooooo
ooooooooooooooo
ooooooooooooooo
ooooo
9.21

\begin{leglossaire}
\renewcommand{\boiteentreeglossaire}{%
\fboiteentreeglossaire}%
\item[Bidule] o o o o o o o o o o o o
o o o o o o o o o o o o o o o o o o
o o o o o o o o o o o o o o o o o o
\item[Truc muche] o o o o o o o o o o
o o o o o o o o o o o o o o o o o o
o o o o o o o o o o o o o o o o o o
\end{leglossaire}

Truc muche
ooooooooooooo
ooooooooooooooo
ooooooooooooooo
ooo

9.6 Des environnements qui mettent en bote


Lenvironnement lrbox qui fait lobjet de ce paragraphe permet
de stocker le contenu dun environnement dans une bote. Cest
un outil trs pratique qui est souvent une solution adapte des
problmes courants comme lencadrement dobjets. Nous allons voir
sur un exemple comment on peut utiliser cette construction.

Outillage ncessaire

160

9.6.1

Principe

On dclare une bote comme expliqu au paragraphe 4.4.5 page 78 :


\newsavebox{hmaboitei}
On peut ensuite crire :
\begin{lrbox}{hmaboitei}...contenu...\end{lrbox}
qui est parfaitement quivalent :
\savebox{hmaboitei}{...contenu...}
Bon mais alors si cest la mme chose, quoi a sert ?? a sert pour
la dfinition dun environnement.

9.6.2

Exemple

Supposons, par exemple lexistence dun environnement :


\newenvironment{remarque}{%
% clause begin
\begin{center}\begin{minipage}{.8\textwidth}}{%
% clause end
\end{minipage}\end{center}}
Et :
On peut faire la remarque (difiante)
suivante :
\begin{remarque}
Jazz is not dead. It just smells funny.
\hfill Frank \textsc{Zappa}
\end{remarque}
Et on reprend notre propos.

On peut faire la remarque (diante) suivante :


9.22

Jazz is not dead. It just


smells funny. Frank Zappa
Et on reprend notre propos.

la question : comment pourrait-on faire pour encadrer cette remarque ? nous rpondons sans hsiter : avec lenvironnement lrbox.
Dans la mesure o il ny a pas de moyen avec LATEX de commencer
une \fbox dans la clause begin et de la nir dans la claude end, on
utilisera le principe suivant :
1. stocker le contenu encadrer laide de lenvironnement
lrbox
2. lencadrer en rutilisant la bote ainsi construite.
On aura donc :

9.6 Des environnements qui mettent en bote

161

\newsavebox{\boiteremarque}
\newenvironment{remarque}{%
% clause begin
\begin{lrbox}{\boiteremarque}% dbut mise en bote
\begin{minipage}{.8\textwidth}}{%
% clause end
\end{minipage}
\end{lrbox}% fin mise en bote
% production de la bote encadre
\begin{center}
\fbox{\usebox{\boiteremarque}}
\end{center}}

On peut faire la remarque (diante) suivante :


9.23

On peut faire la remarque (difiante)


suivante :
\begin{remarque}
Jazz is not dead. It just smells funny.
\hfill Frank \textsc{Zappa}
\end{remarque}
Et on reprend notre propos.

Jazz is not dead. It just


smells funny. Frank Zappa
Et on reprend notre propos.

Cette ide est utilise plusieurs reprises dans les deux chapitres
qui suivent.
Il faut noter que la bote que dfinit lenvironnement lrbox est
une bote simple linstar des botes cres par les commandes
de la famille \mbox et par consquent ne peut contenir de saut de
paragraphe.

4.4.1
p. 72

Chapitre

Sommaire
10.1
10.2
10.3
10.4
10.5
10.6

Allure de lindex
Allures des titres
Gomtrie
En-tte et pied de page
Environnements verbatim
About those so called french
guillemets
10.7 Une bote pour le mini-sommaire

10

Cosmtique
Je me dis: Je monterai sur le palmier, Jen saisirai les rameaux !
Que tes seins soient comme les grappes de la vigne,
Le parfum de ton souffle comme celui des pommes,
Et ta bouche comme un vin excellent qui coule aisment pour mon bien-aim,
Et glisse sur les lvres de ceux qui sendorment !
Le Cantique des cantiques Ct 7 10.

gnrale de ce chapitre, laissant prsager des macros


Lide
parfumes, est de prsenter les outils standard de L TEX qui
A

ont t personnaliss pour produire certaines parties du document.


Ces personnalisations sentendent plusieurs niveaux : en utilisant
des options de packages (par exemple pour les en-ttes de page), ou
parfois en mettant le nez dans la dnition des macros, comme
pour lallure des chapitres et des sections, ou en modiant plus en
profondeur ces macros comme dans le cas de la minitable des matires. Une partie du chapitre est consacre aux outils que lon peut
mettre au point partir du package fancyvrb. Enn un combat en
rgle contre les guillemets franais est men en guise de clture de
ce chapitre.

163

Cosmtique

164

10.1

Allure de lindex

Pour changer lallure de lindex, il faut comprendre que lorsquon


tape fbrilement avec ses petits doigts la commande :
makeindex hdocumenti

on gnre alors un chier hdocumenti.ind contenant quelque chose


ressemblant :
\begin{theindex}

prambule

\item Cosmic debris, 12,34

01

\indexspace

espace inter-groupe

\item Debra kadabra, 23

entre, sparateur, page

\end{theindex}

postambule

En ralit, ce code est gnr partir dentits gnriques ayant des


valeurs prdnies et pouvant tre modies. Pour sen convaincre, il
sut de savoir que le programme makeindex peut gnrer un chier
.ind contenant autre chose que du code LATEX. Pour comprendre
cette aaire dentits gnriques, on pourrait dcrire le travail de
makeindex comme suit :
1. crire le prambule partir de la valeur de lentit preamble ;
2. Pour chaque entre du chier .idx:
(a) crire le contenu de lentit item_0 ;
(b) crire lentre ( Cosmic debries dans lexemple prcdent) ;
(c) crire le sparateur (valeur de lentit delim_0) ;
(d) crire le numro de page
3. chaque n de groupe (lors dun changement de lettre) crire
le contenu de lentit group_skip ;
4. crire le postambule partir de la valeur de postamble.
Les valeurs des entits auxquelles il est fait allusion sont par dfaut
les suivantes :
preamble
"\\begin{theindex}\n"
item_0
"\n \\item"
delim_0
", "
group_skip "\n\n \\indexspace\n"
postamble
"\n\n\\end{theindex}\n"

10.1 Allure de lindex

165

Ces valeurs peuvent tre modies par lintermdiaire dun chier


de style auquel on met gnralement lextension .ist et que lon
utilisera lors de lappel makeindex de la manire suivante :
makeindex -s hstylei.ist hdocumenti
Ainsi pour produire lindex de ce document, nous avons dans un
premier temps redni les sparateurs de niveau 1 et 2 :
delim_0 " \\dotfill \ "
delim_1 " \\dotfill \ "
on remplace donc la virgule qui spare par dfaut lentre dindex
et son numro de page par des points de suspension. Ensuite, en
lisant scrupuleusement la documentation makeindex 1 , on apprend
qucrire :
headings_flag 1
est la manire polie de demander makeindex de produire entre les
groupes dentres la lettre correspondant au groupe. Cette lettre
sera (en majuscule) et encadre par les contenus respectifs des entits heading_prefix et heading_suffix. Qu cela ne tienne, pour
produire nos jolies botes ombres, nous crivons dans le chier de
style :
heading_prefix "{\\large\\sffamily\\bfseries\\shadowbox{"
heading_suffix "}\\hfill}\\nopagebreak\n"

{\large\sffamily\bfseries%
\shadowbox{C}\hfil}\nopagebreak

10.1

Ce qui vous lavez compris, produira par exemple pour la lettre c :

Cette commande sera prcde par le contenu de group_skip qui,


nous lavons dit un peu plus haut, vaut par dfaut \indexspace.
Nous avons aprs quelques mois de recherche 2 , dnich la dnition de cette commande dans book.cls et lavons modie pour
augmenter lgrement lespace entre les groupes :
\renewcommand\indexspace{%
\par \vskip 20pt plus5pt minus3pt\relax}
1. Voir galement le nota qui suit pour les rfrences bibliographiques utiles.
2. Je plaisante, juste quelques semai... minutes veux-je dire.

10

Cosmtique

166

Ce paragraphe ne donne bien videmment quun aperu trs


succinct des fonctionnalits proposes par makeindex. Outre les
informations que lon peut trouver dans le LATEX companion, la page
de manuel de cet utilitaire dans un environnement Debian donne une
liste exhaustive des entits gnriques que lon peut dfinir. Un fichier
nomm ind.dvi crit par P. Chen et M. A. Harrinson constitue
galement un bon point de dpart pour la personnalisation de lindex.

10.2

Allures des titres

Nous proposons ici dexposer la manire dont on a modi lallure


des titres standard (partie, chapitre, section, etc.) de LATEX.

10.2.1 Numrotation dans la table des matires


Avant toute chose il faut savoir quon peut agir sur la table des
matires laide de deux compteurs :
1. secnumdepth (section numbering depth) stipulant la profondeur de la numrotation des titres dans le document ;
2. tocdepth (tab le of contents depth) dnissant quel est le niveau (ou profondeur) de titre maxi dans la table des matires.

01

Pour utiliser ces deux compteurs, il faut en outre avoir connaissance


de la manire dont LATEX associe une profondeur chaque titre. Et
bien rjouissez-vous, le tableau suivant vous fournit cette information :
Titre
part
chapter
section
subsection

profondeur
-1
0
1
2

Titre
subsubsection
paragraph
subparagraph

profondeur
3
4
5

Ainsi, aecter la valeur 1 secnumdepth et la valeur 2 tocdepth


numrotera les titres jusquaux \sections et insrera dans la table
des matires, tous les titres jusquaux \subsections...

10.2.2 Sections et niveaux infrieurs


Dans le chier book.cls du systme TEX, on trouve le code
suivant 3 :
3. Lgrement simplifi...

10.2 Allures des titres

167

\newcommand{\section}{%
\@startsection%
{section}% nom du titre
{1}% niveau de titre
{0pt}% indentation
{-3.5ex plus -1ex minus -.2ex}% espace vertical avant
{2.3ex plus.2ex}% espace vertical aprs
{\normalfont\Large\bfseries}} % allure du titre
Ce code permet de dnir comment sera produit le titre dune section. On constate que la commande \section fait appel la commande \@startsection, cette dernire attendant six arguments :
le nom du titre : section, subsection, etc.
son niveau : 1 pour section, 2 pour subsection, 3 pour
subsubsection, etc.
son indentation ;
le blanc vertical avant le titre ;
le blanc vertical aprs le titre ;
un ensemble de dclarations pour formater le titre lui-mme.
On pourra donc noter que la mise en page par dfaut de LATEX pour
les sections dans la classe book est la suivante :
pas dindentation (0pt)
espace avant le titre de 3.5ex avec un tolrance de plus -1ex
et moins -.2ex ;
espace aprs le titre de 2.3ex avec une tolrance de plus
.2ex ; on pourra noter que si lespace est ngatif, le paragraphe commence juste aprs le titre, et non sur un nouveau
paragraphe ;
les titres sont en gros et en gras dans la fonte normale .
Pour dnir lallure des sections de ce document, nous avons introduit trois longueurs pour lindentation de sections, subsections
et subsubsections :
\newlength{\sectiontitleindent}
\newlength{\subsectiontitleindent}
\newlength{\subsubsectiontitleindent}
Ces longueurs ont pour valeur :
\setlength{\sectiontitleindent}{-1cm}
\setlength{\subsectiontitleindent}{-.5cm}
\setlength{\subsubsectiontitleindent}{-.25cm}

10

168

Cosmtique

Dautre part, nous avons dni une fonte particulire pour les titres,
dnie comme suit :
\newcommand{\sectionfont}{%
\fontencoding{\encodingdefault}%
\fontfamily{pag}%
\fontseries{bc}%
\fontshape{n}%
\selectfont}
Cette commande permet de slectionner la fonte PostScript AvantGarde en gras condens (cf. 9.4 page 145). Finalement, pour dnir
lallure de nos sections on utilisera :
\renewcommand{\section}{%
\@startsection%
{section}%
{1}%
{\sectiontitleindent}%
{-3.5ex plus -1ex minus -.2ex}%
{2.3ex plus.2ex}%
{\sectionfont\Large}}
Des commandes quivalentes ont t crites pour les titres de niveaux
infrieurs.

10.2.3 Chapitres

01

Cest en fouillant dans le chier book.cls quon peut trouver


des informations sur la manire dont LATEX produit les en-ttes de
chapitres.
Principe
Dans le chier book.cls, on trouve la commande :
\newcommand{\chapter}{%
...
\thispagestyle{plain}%
...
\secdef\@chapter\@schapter} % la ligne qui nous intresse
La commande \chapter fait donc elle-mme appel deux commandes distinctes :
1. \@chapter pour les titres de chapitre qui sont numrots ;

10.2 Allures des titres

169

2. \@schapter pour les titres de chapitre non numrots (s pour


star ou toile faisant rfrence la commande \chapter*).
En cherchant vaillamment la dnition de ces deux commandes (toujours dans le chier book.cls), on trouve quelque chose du genre :
\def\@chapter[#1]#2{%
...
\refstepcounter{chapter}%
% message sur le terminal :
\typeout{\@chapapp\space\thechapter.}
\addcontentsline{toc}{chapter}% ajout du titre dans la toc
...
\if@twocolumn
...
\else% le cas dun document une colonne
\@makechapterhead{#2}% la ligne qui nous intresse
\fi}
ce qui nous met sur la voie... en eet \@makechapterhead (quon
peut traduire littralement par faire len-tte de chapitre ) est
celle quil va nous falloir rednir pour changer lallure des en-ttes.
Une recherche supplmentaire nous met galement sur la piste de la
commande \@makeschapterhead produisant len-tte dun chapitre
non numrot. Ces deux commandes attendent un argument qui est
le titre du chapitre.
Petits outils ncessaires
Nous avons dni un environnement cadrechap dont le propos
est simplement dlargir la marge de droite de deux centimtres :
\newenvironment{cadrechap}%
{\begin{list}{}{%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{-2cm}% on se met au large
\setlength{\itemindent}{0pt}%
\setlength{\labelsep}{0pt}%
}\item}%
{\end{list}}
Il sera galement fait usage du boolen @mainmatter permettant
de savoir si on se trouve dans la partie centrale du document.
Cest le cas lorsque la commande \mainmatter a t appele (cf. 6.4
page 109).

10

Cosmtique

170
En-tte des chapitres proprement parler

Pour ce manuel la commande qui produit len-tte du chapitre a


t dnie comme un assemblage de deux minipages :
1. sur la gauche une bote minipage dont la hauteur est impose
pour y mettre le mini-sommaire (cf. 10.7 page 189) ;
2. sur la droite une bote contenant le mot Chapitre et son
numro

Chapitre

10

minipage
pour
le
mini
sommaire

Le titre du chapitre
Le squelette pour raliser un tel assemblage de bote est le suivant :

01

\begin{cadrechap}
\begin{minipage}[t][6cm][t]{0.75\linewidth}
% insertion ici du minisommaire
\end{minipage}
\begin{minipage}[t]{0.25\linewidth}
% insertion ici du n de chapitre
\end{minipage}
\begin{flushright}
% insertion ici du titre du chapitre
\end{flushright}
\end{cadrechap}
Il est sans doute utile de noter ici que la bote de gauche (celle
qui reoit la mini table des matires) a une hauteur impose ce qui
permet de produire les en-ttes de chapitres de manire identique
quel que soit le nombre de sections de chapitres (et donc quelle que
soit la hauteur de la mini table des matires). Pour nir, il reste
dnir des fontes pour les dirents lments. Pour ce manuel ont
t dnies :
% numro du chapitre
\DeclareFixedFont{\chapnumfont}{T1}{phv}{b}{n}{80pt}

10.2 Allures des titres

171

% pour le mot Chapitre


\DeclareFixedFont{\chapchapfont}{T1}{phv}{b}{n}{16pt}
% pour le titre
\DeclareFixedFont{\chaptitfont}{T1}{phv}{b}{n}{24.88pt}

{\chapnumfont 8}
{\chaptitfont Oula !}

10.2

Dailleurs :

Oula !

10.2.4 Parties
Dans le chier book.cls on trouve la dnition de la commande
\part :
\newcommand\part{%
\cleardoublepage
\thispagestyle{plain}
[...]
\null\vfil
\secdef\@part\@spart}
qui nous informe qu linstar des chapitres, la commande \part
fait appel deux commandes distinctes pour produire les parties
numrotes et non numrotes (grce un appel aux commandes
\@part et \@spart respectivement). Dans un premier temps nous
avons impos que le style de page pour les dbuts de partie soit vide
(cest--dire sans numro de page ni en-tte etc.), nous avons donc
crit :
\newcommand\part{%
\cleardoublepage
\thispagestyle{empty}% la place de plain par dfaut
[...]
\null\vfil% un bote vide et un ressort vertical
\secdef\@part\@spart}
On peut ensuite examiner la dnition de la commande \@part qui
produit la page de partie :
\def\@part[#1]#2{%

10

172

Cosmtique
[...]
{\centering % centrage
[...]
\huge\bfseries \partname\nobreakspace\thepart
\par
\vskip 20\pt
[...]
\Huge \bfseries #2\par}%
\@endpart}

En examinant ce code on constate que la page de partie est constitue dune ligne en gros caractres gras, du nom Partie suivie du
numro de la partie 4 :
\huge\bfseries \partname\nobreakspace\thepart
suivie 20 points plus bas du titre de la partie (contenu dans largument #2). Pour ce manuel, nous avons redni la commande \@part
comme suit :

01

\def\@part[#1]#2{%
[...]
{\centering
\interlinepenalty \@M
\normalfont
[...]
\partnumfont \thepart % juste le numro de la partie
\par
\vskip 50\p@% 50 point au lieu de 20...
\partfont #2\par}% le titre avec une fonte personnalise
\@endpart}
Pour garder une homognit avec les en-ttes de chapitres on a
dni les commandes de fontes comme suit :
\newcommand{\partfont}{%
\fontencoding{\encodingdefault}\fontfamily{phv}%
\fontseries{bc}\fontshape{n}%
\fontsize{32}{34}%
\selectfont}
\DeclareFixedFont{\partnumfont}{T1}{phv}{bc}{n}{80}%
4. En ralit, aprs avoir enclench le package babel et loption french
ces deux commandes sont redfinies pour produire quelque chose du style :
Premire partie

10.3 Gomtrie

173

On notera galement que la commande \@part se termine par


lappel une autre commande : \@endpart. En examinant le
fichier book.cls on pourra se rendre compte que cette dernire permet
de sopposer au ressort vertical de la commande \part et de sauter
une page blanche...

10.3

Gomtrie

Les direntes dimensions de chaque page de ce document ont


t dnies laide du package geometry et de la commande :
\geometry{%
a4paper,
body={150mm,250mm},
left=25mm,top=25mm,
headheight=7mm,headsep=4mm,
marginparsep=4mm,
marginparwidth=27mm}
qui dnit respectivement (voir aussi gure 10.1 page suivante) :
un corps de texte faisant 150 mm de largeur par 250 mm ;
le positionnement du corps du texte dans la page, 25 mm
du bord gauche du papier, et 25 mm du bord suprieur du
papier ;
la hauteur de len-tte (7mm) et lespace entre len-tte et le
texte lui-mme (4 mm) ;
la taille du papier : standard A4 ;
la largeur de la marge pour les notes de marges (2.7 cm).
De manire gnrale, comme le montre la gure 10.1 page suivante, le package geometry permet de dnir un certain nombre
de dimensions que lon peut passer soit en option la commande
\usepackage soit laide de la commande \geometry.
Dimension du papier :
a4paper, a5paper, etc. pour utiliser un format de papier
prdni,
paperwidth==hdimi et paperheight=hdimi pour spcier une dimension de papier libre, par exemple pour un
document qui sera massicot.
Texte :
soit avec : body={hlargeuri,hhauteuri}
soit avec : width=hlargeuri et height=hhauteuri.

10

Cosmtique

174

height

Corps
du
texte

footskip

left

notes de marge

paperheight

headheight

entte

top

width

headsep

paperwidth

01

patati patata
pied de page
marginparsep
marginparwidth

Figure 10.1: Quelques unes des dimensions pour dnir la gomtrie


dun document.

10.4 En-tte et pied de page

175

le texte est positionn lintrieur de la page par rapport


un point de rfrence spci avec top=hpos_verti et
left=hpos_horizi
Haut et bas de page :
la hauteur de la surface rserve len-tte peut tre dnie laide de la formule magique headheight=hhauteuri
et sa position par rapport au corps du texte laide de
headsep=hespacei.
la position du pied de page peut tre impose avec la
longueur footskip=hespacei qui dnit lespace entre le
bas du corps du texte et la premire ligne du contenu du
pied de page.
Note de marge : dans le mme esprit la largeur et la position
de la surface rserve aux notes de marge peuvent tre dnies grce aux deux longeurs marginparwidth=hlargeuri et
marginparsep=hespacei.
Dans le package geometry les dimensions concernant len-tte,
le pied de page et la zone pour les notes de marge, sont par dfaut comptabilises en plus du corps du texte. Des options permettent
dinclure lune ou lintgralit de ces dimensions dans le corps du texte
pour le calcul, en disant par exemple : je veux que la largeur soit de
10 centimtres, notes de marge comprises. (voir la documentation
du package pour les dtails).

10.4

En-tte et pied de page

Les zones au-dessus et en dessous du corps du texte appeles


en-tte et pied de page peuvent tre personnalises laide du package fancyhdr. Le principe de base est simple 5 , il sut dutiliser la
commande :
\pagestyle{fancy}
pour spcier quon veut utiliser des en-ttes et des pieds de page
dnis grce au package fancyhdr. Par dfaut le package produit
des traits horizontaux en dessous de len-tte et au-dessus du pied
de page dont les paisseurs sont dnies par \footrulewidth et
\headrulewidth. On peut ensuite utiliser les commandes :
\fancyhead pour dnir len-tte ;
5. Vous ne serez sans doute pas tout fait daccord avec le terme simple
aprs avoir lu la suite...

10

10.4

176

VL

\fancyfoot pour dnir le pied de page ;


Ces deux commandes attendent un argument optionnel constitu
dune ou deux squences des caractres suivants :
E ou O pour spcier la parit de la page (paire=even, impaire=odd) ;
R, L, C pour spcier o lon veut produire linformation :
respectivement droite, gauche ou au centre ;
Voici un exemple :
\fancyhf{} % on efface tout et on recommence
% EN TTE :
% initiales droite sur page paire , gauche sur page impaire :
\fancyhead[RE,LO]{VL}
% numro de page au centre :
\fancyhead[C]{\thepage}
% numro de section droite sur page impaire ,
% gauche sur page paire :
\fancyhead[LE,RO]{\thesection}
% PIED DE PAGE :
% une image droite sur page impaire , gauche sur page paire :
\fancyfoot[RO,LE]{\includegraphics[height=4ex]{punch}}
% titre gauche sur page impaire , droite sur page paire :
\fancyfoot[LO,RE]{%
Tout ce que vous avez toujours voulu savoir sur \LaTeX{}}
% paisseur des traits
\renewcommand{\footrulewidth}{3pt}

10.4.1 Cas de la premire page des chapitres


Dans la classe book, LATEX fait automatiquement appel au style
plain pour les premires pages de chapitre. Pour demander au package fancyhdr de dnir un style particulier pour ces pages, on crit :
% le cas de la premire page dun chapitre
\fancypagestyle{plain}{%
\fancyhf{}% on efface tout
\fancyfoot[C]{\thepage}% numro en bas de la page
% on efface tous les traits
\renewcommand{\headrulewidth}{0pt}%
\renewcommand{\footrulewidth}{0pt}}
Vriez maintenant que les pages 3, 19, 43, 85, etc. ont ce style...
Tout ce que vous avez toujours voulu savoir sur LATEX

VL

177

10.4

10.4.2 Pages vierges avant le dbut dun chapitre


Dans la classe book en mode recto-verso (cest le cas de ce document), LATEX commence par dfaut un chapitre sur une page impaire appele dans le jargon typographique la belle page . Pour
ce faire LATEX fait appel dans direntes commandes internes, la
commande \cleardoublepage qui permet dinsrer si ncessaire une
page blanche avant le dbut du chapitre. Cette page reoit par dfaut le style des en-ttes et pieds en cours. Dans le manuel que vous
avez sous les yeux, nous avons impos un style vide ces pages
en modiant la dnition de la commande \cleardoublepage du
chier latex.ltx :
\renewcommand{\cleardoublepage}{% redfinition de la commande
\clearpage\ifodd\c@page\else
\hbox{}
\vspace*{\fill}
\thispagestyle{empty}% ligne ajoute
\newpage
\fi}
Feuilletez le manuel et cherchez si les pages vierges avant le dbut
des chapitres sont bien vides...

10.4.3 Mcanisme de marqueurs


Vous aurez sans doute remarqu que dans ce manuel, les en-ttes
des pages contiennent des informations qui dpendent du contexte.
Sont en eet insrs sur les pages paires (page de gauche) le titre
du chapitre, et sur les pages impaires (page de droite) le titre de
la dernire section de la page. Il est possible de produire ce genre
den-ttes car LATEX dispose dun mcanisme de marqueurs que nous
allons tenter dexpliquer ici.
Il nest pas inutile de prciser maintenant que lorsque TEX et
LATEX produisent une page, ils vont garnir len-tte et le pied
en fonction dinformation collectes le long de la page en question. La
production de len-tte et du pied est donc postrieure la composition
de la page.

Les commandes \markboth et \markright


Soient les commandes :
\markboth{htexteg i}{htexted i}
Tout ce que vous avez toujours voulu savoir sur LATEX

10.4

178

VL

ou :
\markright{htextei}
Nous allons imaginer que les arguments htextex i sont stocks dans
une pile et une le. Dans cet ordre dide :
\markboth empile htexteg i, et stocke htexted i dans la le ;
\markright stocke htextei dans la le.
Ces deux commandes de marquage peuvent tre appeles plusieurs fois ou jamais, sur une mme page. Les donnes de la pile
et de la le seront exploites au moment de gnrer les en-ttes et
pieds de page, lorsque TEX achve la mise en forme de la page, et
ceci grce aux commandes :
\leftmark renvoie le sommet de la pile, cest--dire htexteg i
du dernier appel \markboth ;
\rightmark renvoie le dbut de la le, cest--dire htexted i
du premier appel \markboth ou htextei du premier appel
\markright.
Une petite subtilit au sujet de la file que nous prsentons
ici : tant quaucune commande de marquage najoute de
donnes au cours dune page, la file contiendra la dernire information
insre dans les pages prcdentes. La file est vide ds quune
commande \markboth ou \markright survient.

Un autre moyen de comprendre ce mcanisme de marqueurs pourrait


tre de dire :
\leftmark contient la dernire information que jai insre
sur la pile ( laide du premier argument de \markboth) ;
\rightmark contient la premire information de la le ,
si on en a mis une sur cette page, ou la dernire qui a t
enl ( laide du deuxime argument de \markboth ou de
largument de \markright.
Il peut tre utile de savoir que lauteur a utilis ces commandes
pour la production dun trombinoscope compos de plusieurs
dizaines de noms et photos par page. Lide tait dexploiter le mcanisme de marquage pour faire apparatre dans len-tte le premier et
le dernier nom de la page, comme dans un dictionnaire. Il suffit pour
cela dappeler pour chaque personne (nom et photo) la commande :
\markboth{hnom du gugussei}{hnom du gugussei}
puis dinsrer dans les en-ttes la commande \rightmark sur les pages
de gauche (impaires) et \leftmark sur les pages de droite (paires)...

Tout ce que vous avez toujours voulu savoir sur LATEX

\rightmark vaut 10.4 En-tte et pied de page et leftmark vaut


Cosmtique
179
Interactions avec les commandes de paragraphe
chaque dbut de chapitre, de section, de sous-section, etc. une
commande interne de LATEX fait appel aux commandes de marquages
prsentes au paragraphe prcdent, pour stocker des informations
susceptibles denrichir len-tte ou le pied de page. Ces commandes
se nomment :
\chaptermark pour les chapitres ;
\sectionmark pour les sections ;
...
elles attendent un argument qui contient le titre du chapitre ou du
paragraphe. Dans ce manuel, les deux commandes prcdentes ont
t dnies comme suit :
% #1 contient le titre de la section
\renewcommand{\sectionmark}[1]{%
\markright{\sectionfont\thesection\ #1}}
% #2 contient le titre du chapitre
\renewcommand{\chaptermark}[1]{%
\markboth{\sectionfont#1}{}}
Puis :
\fancyhead[LE,RO]{\thepage}
\fancyhead[LO]{\rightmark}
\fancyhead[RE]{\leftmark}
Par consquent :
droite des pages paires, on trouve (\leftmark) le dernier
titre de chapitre rencontr ;
gauche des pages impaires, on trouve (\rightmark) le numro et le titre de la premire \section de cette page, ou le
numro et le titre de la dernire \section rencontre...
Si vous ne me croyez pas voyez par vous-mme le haut de cette page.

10.4.4 Organisation du document


Il est ncessaire de savoir que dans un document tel que celui que
vous lisez, il existe trois parties qui sont reconnues par LATEX : le front
matter, le main matter et le back matter dsignant respectivement
le dbut du document (comportant gnralement la prface et le
sommaire), la partie principale, et la partie clturant le document
(comportant gnralement la table des matires, le ou les index, la
ou les bibliographies, le glossaire, etc). On doit alors explicitement
crire un document LATEX comme suit :

10

\rightmark vaut 10.4 En-tte et pied de page et leftmark vaut


180
Cosmtique
\documentclass{hclasse du documenti}
\begin{document}
\frontmatter % introduction
[...]
\mainmatter % partie principale
[...]
\backmatter % pour clore le document
[...]
\end{document}
Nous verrons dans la suite de ce chapitre que nous serons amens
modier les trois commandes permettant de passer dune partie
une autre. Pour linstant, il faut savoir que la classe book dnit un
boolen :
\newif\if@mainmatter
utilis par dfaut dans LATEX pour savoir si on se trouve dans le
main matter ou pas. Nous avons en outre dni pour notre document un autre boolen :
\newif\if@frontmatter
qui nous permettra deectuer des traitements particuliers lorsquon
sera dans la partie introductive du document. Les trois commandes
dlimitant les trois parties sont dnies par :

01

\renewcommand\frontmatter{%
\cleardoublepage
\@frontmattertrue
\@mainmatterfalse
\pagenumbering{roman}% numrotation en romain
}
\renewcommand\mainmatter{%
\cleardoublepage
\@mainmattertrue
\@frontmatterfalse
\pagenumbering{arabic}% numrotation en chiffres arabes
}
\renewcommand\backmatter{%
\cleardoublepage
\@frontmatterfalse
\@mainmatterfalse
}

10.4 En-tte et pied de page

181

En farfouillant dans le code de LATEX on peut comprendre que la


commande \pagenumbering, permettant de changer la numrotation, rinitialise le compteur de page 1.

10.4.5 Numroter lintroduction en roman petites


capitales
Votre serviteur a tenu ce que les pages de lintroduction soient
numrotes en chires romains et petites capitales. On ne peut malheureusement pas crire :
\renewcommand{\thepage}{\textsc{\roman{page}}}
Puisque cela provoque une incompatibilit avec la gestion de lindex.
Lide retenue est de procder comme suit :
1. utiliser la numrotation en chire romain minuscule ;
2. dans le pied de page acher \textsc{\thepage} ;
3. modier la commande \index pour que les numros de pages
sache en petites capitales.
Do dans la dnition de \frontmatter on ajoutera :
\let\indexORI\index% sauvegarde de la dfinition initiale
\renewcommand{\index}[1]{\indexORI{##1|textsc}}
\fancyfoot{}
\fancyhead[LE,RO]{\textsc{\thepage}}
Et dans la dnition de \mainmatter :
\let\index\indexORI% pour revenir la dfinition initiale
Pour tre parfaitement rigoureux on va modier lallure des premires pages de chapitre :
\fancypagestyle{plain}{%
\fancyhf{}
\if@frontmatter% introduction
\fancyfoot[C]{\textsc{\thepage}}
\else
\fancyfoot[C]{\thepage}
\fi
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\makeatother

10

Cosmtique

182

10.4.6 Index, bibliographie et table des matires


Dans la classe book, deux environnements sont dnis :
thebibliography permettant de produire la bibliographie ;
theindex pour produire lindex ;
et la commande :
\tableofcontents pour produire la table des matires.
Ces environnements et cette commande sont conus pour produire
des en-ttes avec le numro de la page et le nom du chapitre en
majuscules savoir \bibname, \indexname et \contentsname. Voici
par exemple un extrait de \tableofcontents :
\newcommand\tableofcontents{%
[...]
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}%
{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
[...]
}
Jai souhait que dans ce manuel les en-ttes ne soient pas en majuscules. Deux solutions sont possibles :
1. utiliser la commande \nouppercase du package fancyhdr et
crire dans la dnition de \backmatter :

01

% entte en minuscule :
\fancyhead[LO]{\nouppercase\rightmark}
\fancyhead[RE]{\nouppercase\leftmark}%
2. recopier la dnition de la macro \tableofcontents provenant de book.cls, et la modier pour supprimer les commandes \MakeUppercase. Faire la mme chose pour lindex
et la bibliographie.
Dans ce document, cest la deuxime solution qui a t adopte. On
en a galement prot pour insrer lindex et la bibliographie dans
la table des matires, ce qui nest pas le comportement par dfaut de
LATEX et de la classe book. Nous avons donc pour lenvironnement
theindex :
\renewenvironment{theindex}
{%
[...]

10.5 Environnements verbatim

183

% insertion dans la table des matires


\addcontentsline{toc}{chapter}{\indexname}
% suppression de \MakeUppercase
\@mkboth{\indexname}{\indexname}
\thispagestyle{plain}
[...]
{\if@restonecol\onecolumn\else\clearpage\fi}

10.5

Environnements verbatim

Les packages fancyvrb et listings ont tous deux la particularit de


produire du texte avec des caractres spciaux. Le premier permet
de produire des environnements de type verbatim avec beaucoup
plus de souplesse. Il permet notamment de personnaliser dventuelles bordures, les marges, et surtout on peut schapper vers
LATEX au beau milieu de lenvironnement, ou comme disent les anglophones : to escape to LATEX. En dautres termes, bien qutant
dans un environnement o les caractres \, { et } sont sans eet, il
est malgr tout possible de faire appel des commandes LATEX.
Le second (listings) a pour objectif de produire des extraits de
langage de programmation. Il propose galement parmi un grand
nombre de fonctionalits, la possibilit de schapper vers LATEX.
Nous vous proposons donc ici de dcouvrir ces deux environements
laide dexemples en grandeur nature utiliss dans ce manuel.

10.5.1 Digression vers les caractres...


Il peut ne pas tre inutile 6 de faire ici une petite digression sur la
manire dont TEX mange et digre les caractres quon lui fournit.
Il faut savoir que les caractres peuvent entrer dans seize catgories
direntes. Chaque caractre peut nappartenir qu une catgorie
la fois. Chacune de ces catgories permet de basculer TEX vers
un traitement particulier. Par exemple lorsque le caractre \ est
rencontr, TEX va lire les caractres qui suivent pour connatre le
nom de la commande (ou squence de contrle), lorsquil rencontre
le caractre {, TEX va ouvrir un nouveau groupe, lorsque que le
caractre % est lu, TEX va ignorer les caractres jusqu la n de la
6. Les franais sont parait-il des spcialistes de la litote. Mais ne nous garons
pas...

10

Cosmtique

184

ligne, cest--dire jusqu ce quil rencontre un caractre catgoris


n de ligne , etc. Parmi les catgories reconnues par TEX :
Catgorie 0 caractre de contrle (\ dans LATEX) ;
Catgorie 1 dbut de groupe ({ dans LATEX) ;
Catgorie 2 n de groupe (} dans LATEX) ;
Catgorie 11 lettre ;

{ \catcode\/=0 \catcode\(=1
\catcode\)=2 \catcode\#=14
\catcode\{=11 \catcode\}=11
\catcode\\=11
# a on devrait pas le voir...
\bidule{truc muche} /textbf(en gras)
)\par
on retourne dans le monde \LaTeX{}...

\bidule{truc muche} en gras


on retourne dans le monde
LATEX...

En outre, il est intressant de savoir que TEX peut rendre actifs


certains caractres (qui entrent alors dans la catgorie 13). Ces caractres peuvent alors tre dnis comme des commandes voici un
exemple idiot :
\catcode\+=13
\newcommand{+}{plus}
3 + 4 = 7

10.4

01

10.3

Catgorie 14 commentaire (% dans LATEX) ;


On peut alors samuser mme si cela est assez dangereux
changer le contenu de chaque catgorie. Dans lexemple ci-dessous,
on a transform les caractres \, {et } en lettres, et on a dcid
que les caractres /, ( et ) appartiendraient respectivement aux
catgories : caractre de contrle, dbut de groupe et n de groupe.
Le caractre # a galement t chang de catgorie, cest dsormais
un caractre de commentaire.

3 plus 4 = 7

Dans cet exemple on a rendu actif le caractre +, puis on la


dni comme une commande. Vous noterez quici on a pu crer une
commande que lon utilise sans faire appel au caractre \.
Il peut tre utile de savoir que lorsquon charge le package
babel et lextension franaise, les caractres de ponctuations
double sont galement rendus actifs notamment pour empcher la csure avant ceux-ci. En outre le caractre ~ est dans la catgorie des
caractres actifs dans LATEX. On peut dailleurs voir sa dfinition dans
une session LATEX interactive :

10.5 Environnements verbatim

185

*\show~
> ~=macro:
->\nobreakspace {}.
<*> \show~

10.5.2 Environnements maison bass sur fancyvrb


Les environnements du type de verbatim ont pour but de changer lappartenance des caractres leur catgorie respective. En
outre, le package fancyvrb permet de dnir quels caractres permettent de repasser le contrle LATEX. Dans ce document, lenvironnement unixcom a t dni comme suit :
\DefineVerbatimEnvironment{unixcom}{Verbatim}{%
commandchars= ,
frame=single, framerule=.4pt, framesep=1.5mm,
gobble=2,
xleftmargin=15pt}
Cet environnement est donc de type verbatim mais dans lequel on
peut excuter des commandes LATEX laide des caractres de
catgorie 0, de catgorie 1 et de catgorie 2 on peut bien
videmment choisir nimporte quel caractre pour ce faire. Il faut
cependant garder lesprit que ceux-ci doivent tre la fois lisibles
pour lutilisateur et peu utiliss dautres ns que de repasser le
contrle LATEX.
Pour afficher le contenu dune variable : Pour acher le contenu dune
\begin{unixcom}
variable :
echo ${marg nom variable }
echo ${hnom variablei}
\end{unixcom}

10

La commande \marg permet de produire son argument entre chevrons simples et en pench. Les autres paramtres de la commande 11.1.1
\DefineVerbatimEnvironment ont pour but de prciser lallure de p. 198
la bordure (paramtres frame...), la marge de gauche (paramtre
xleftmargin) et le fait que les premiers caractres de chaque ligne
seront systmatiquement ignors (gobble). Comme le montre la documentation du package fancyvrb beaucoup dautres options sont
disponibles.
Un autre environnement de ce genre a t cr pour saisir les
commandes dEmacs dans lannexe consacre AucTEX. Lenvironnement en question (baptis emacscom) a t cr comme suit :
\DefineVerbatimEnvironment{emacscom}{Verbatim}{%

Cosmtique

186

commandchars= ,
frame=leftline, framerule=1mm, framesep=2mm,
gobble=2, xleftmargin=15pt}

Pour jouer Tetris dans \soft{Emacs} :


\begin{emacscom}
M-x tetris
\end{emacscom}

10.6

qui donne par exemple :


Pour jouer
Emacs :

Tetris

dans

M-x tetris

10.5.3 Environnements pour langages de programmation


Le package listings reconnat la syntaxe dun grand nombre de
langage de programmation. Une manire simple dutiliser ce package
consiste crer son propre environnement laide dune commande
analogue \newenvironment :
\lstnewenvironment{C}{\lstset{language=C}}{}

01

\begin{C}
/* hello world en C */
int main()
{
printf("Hello !\n");
return 0;
}
\end{C}

10.7

On pourra alors simplement crire :


/ h e l l o w o r l d en C /
i n t main ( )
{
p r i n t f ( " H e l l o ! \ n" ) ;
return 0 ;
}

Bien videmment une foultitude doptions de conguration permet


dadapter cet environement vos besoins. Le plus simple et le plus
ecace est sans doute de lire la documenation accompagnant le package. titre dexemple, il faut savoir que lon peut changer la mise
en vidence des mots rservs et des commentaires du langage considr. Ainsi, en crivant :
\lstnewenvironment{Cbis}{%
\lstset{language=C,
basicstyle=\rmfamily\slshape,
commentstyle=\rmfamily\upshape,}}{}

10.6 About those so called french guillemets

187

\begin{Cbis}
/* hello world en C */
int main()
{
printf("Salut !\n");
return 0;
}
\end{Cbis}

10.8

On aura :
/ h e l l o world en C /
i n t main ( )
{
p r i n t f ( " S a l u t ! \ n" ) ;
return 0 ;
}

Et puisquil est question des caractres spciaux et de lchappement


vers LATEX, il faut savoir qu linstar de fancyvrb, le package listings
permet de spcier un caractre permettant cet chappement. Ainsi :
\lstnewenvironment{Cter}{%
\lstset{language=C, escapechar=@}}{}
Permet dinsrer des commandes LATEX dans le listing :

10.6

i n t main ( )
{
p r i n t f ( " Hi ! \ n" ) ;
10.9

\begin{Cter}
int main()
{
printf("Hi !\n");
return @\fbox{code de retour}@;
}
\end{Cter}

return

code de retour ;

About those so called french guillemets

Un des plaisirs de la typographie franaise est sans aucun doute


lutilisation de ces merveilleux guillemets la franaise ... 7 Cependant le package babel ne gre pas la csure correctement sil on
saisit dans un document :
\begin{minipage}{3.7cm}
7. On notera dailleurs que la mode qui consiste aujourdhui faire subir ses
majeurs et index des mouvements doreilles de lapin, pendant quon parle pour
dire entre guillemets sans le dire, est clairement emprunte aux amricains.
Je propose donc ici publiquement que lon se force utiliser plutt lindex et le
pouce pour faire ce geste, il faudra par contre se munir de deux autres bras pour
tre en mesure dimiter les deux chevrons et , ou peut-tre quun habile
tortillage de quatre doigts dune main peut donner un rsultat...

10

Cosmtique

188

Cette courte phrase dans une bote a pour unique


but de montrer que ces symboles ne se comportent
pas comme de gentils guillemets.
\end{minipage}

on aura la minipage suivante :

Cette courte phrase a


pour unique but de
montrer que ces petits
symboles ne se comportent pas comme de
gentils guillemets.

Ce qui est pour le moins gnant... Il est bien sr possible de saisir


ces guillemets avec les commandes \og et \fg fournies par le package
babel, mais cela est au got de votre serviteur trop contraignant
dans la mesure o ce caractre est directement accessible depuis
le clavier 8 . Il existe une solution qui avait t adopte par le
package french palliant le problme de la csure qui consiste
10.5.1 rendre actifs les caractres et . Nous avons donc crit :
p. 183

\catcode\ =13
\catcode\ =13
puis dni les deux commandes suivantes :

01

\newcommand{\fermerguillemets}{%
\unskip\kern.15em\symbol{20}}
\newcommand{\ouvrerguillemets}{%
\symbol{19}\ignorespaces\kern.15em}

\setcounter{car}{1}
\whiledo{\value{car}<64}{%
\symbol{\value{car}}$_{\thecar}$
\stepcounter{car}}

10.10

On notera lutilisation de la commande TEX \kern permettant dinsrer un blanc inscable dune longueur donne, de la commande
9.2.1 \unskip et enn de la commande \symbol qui insre ici les 19e et
p. 138 20e caractres de la fonte courante :
1 2 3 4 5 6 7 8 9 10 11
12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29
30 31 32 !33 "34 #35 $36 %37
&38 39 (40 )41 *42 +43 ,44 -45 .46
/47 048 149 250 351 452 553 654 755
856 957 :58 ;59 <60 =61 >62 ?63

Enn, on a aect aux caractres les deux commandes prcdentes :


8. Alt-Gr-z et Alt-Gr-x.

10.7 Une bote pour le mini-sommaire

189

\let =\fermerguillemets
\let =\ouvrerguillemets
Cette faon de faire a trois inconvnients mineurs que je suis
bien incapable de rsoudre aujourdhui. Tout dabord, les moteurs sachant grer le codage Utf 8 et permettant TEX de rendre actif
le caractre (alors cod sur 2 octets), sont aujourdhui peu rpandus
et javoue humblement que je ne les ai pas encore tests. Par consquent la manipulation propose ici est limite aux codages utilisant 1
octet par caractre . Ensuite on ne peut utiliser ces guillemets dans
un titre au risque davoir des artfacts dans les signets/bookmarks
dun fichier pdf. Enfin, ces guillemets ne fonctionnent pas avec lenvironnement ltxexemple dfini la fin du chapitre suivant. Un drame
quoi !

10.7

Une bote pour le mini-sommaire

Le package mini-toc permet comme son nom lindique de


produire des minitables des matires que lon peut insrer dans
un document un endroit donn, gnralement en dbut de chapitre. Aprs avoir utilis lordre \dominitoc dans le prambule, on
fait ensuite appel la commande \minitoc pour insrer cette minitable des matires lendroit voulu. La documentation du package
explique tout cela en dtail et prsente notamment les dirents
styles que lon peut utiliser. Pour ce manuel, jai trouv lide dune
table des matires en dbut de chapitre sduisante, mais les styles
proposs par le package ne me convenaient pas. En fait je souhaitais
pouvoir mettre les titres de sections dans un bote comme ceci :
Sommaire
x.1 Le premier titre
x.2 Le deuxime titre
x.3 etc.
Cest--dire une bote avec un titre ici le titre est Sommaire .
ma connaissance, LATEX ne propose pas de telles botes et suite
une question pose sur les forums de discussions, une bonne me
en loccurrence Benjamin Bayart me propose un code TEX rpondant au cahier des charges. Je vous propose dans ce paragraphe,
une version 9 LATEX dune bote avec titre...
9. Tout fait discutable et limite dans ses fonctionnalits comme tout
logiciel pondu par un bricoleur...

10

Cosmtique

190

10.7.1 Linterface de la commande

\titlebox{\footnotesize Un titre}{%
Le contenu de la bote}

10.11

Plusieurs solutions sont possibles pour crer une telle commande.


En sinspirant de linterface des botes de LATEX, on peut crer une
macro dont la syntaxe dutilisation serait :
Un titre

Le contenu de la bote

\setlength{\fboxsep}{5pt}
\setlength{\fboxrule}{2pt}
\titlebox{Un autre titre}{%
\begin{minipage}{3cm}\begin{center}
truc\\ muche
\end{center}\end{minipage}}

10.12

ou encore :
Un autre titre
truc
muche

10.7.2 Quand mme un peu de TEX


La primitive de TEX \leaders permet de remplir un espace lastique avec ce qui vous passe par la tte. Sa syntaxe :
\leadershce qui vous chanteihespacei

\framebox[3cm]{%
\leaders\hbox{o}\hfill}

oooooooooooooooo

\framebox[3cm]{%
\leaders\hbox to 3pt{o}\hfill}

10.14

La primitive \hbox de TEX (utilise par \mbox et \makebox) permet


de crer des botes horizontales :
oooooooooooooooooooooooooo

Les \leaders peuvent galement tre utiliss en combinaison avec


la primitive \hrule de TEX permettant de dessiner des traits :
\framebox[3cm]{%
\leaders\hrule height 4pt\hfill}

10.15

01

10.13

permet donc de remplir lhespacei avec hce qui vous chantei. Par
exemple :

Ici, le ressort \hfill stire les trois centimtres de la \framebox et


est rempli par un trait de hauteur quatre points.

10.7 Une bote pour le mini-sommaire

10.16

\framebox[3cm]{%
\leaders\hbox to5pt{%
\leaders\hrule width1pt\hfill%
\kern2pt}\hfill}

191

\framebox[4cm]{%
\hskip0pt plus 2fill X%
\hskip0pt plus 3fill}

10.17

Dans lexemple ci-dessus, lespace de trois centimtres est rempli


par des boites de cinq points de large, contenant chacunes delles
des \leaders comme dans lexemple prcdent, et un blanc de deux
points de large. Avec TEX, on peut rgler la raideur du ressort de 4.2.4
p. 66
la manire suivante :

La dimension :
\hskip 0pt plus hnifill
permet de dnir une longueur lastique de raideur relative n. Dans
lexemple prcdent la lettre X se trouve donc au 2/5 de la bote...
En utilisant ce type de blanc lastique et des \leaders, on peut
dnir la commande suivante :
\newcommand{\traitressort}[2][1]{%
\leaders\hrule height#2\hskip0pt plus #1fill\relax}

\framebox[4cm]{%
\traitressort[2]{2ex}X%
\traitressort{2pt}}

10.18

pouvant tre par exemple utilise comme suit :

on a donc dans la bote de cinq centimtres :


un blanc lastique de raideur 2, rempli dun trait de quatre
points de hauteur ;
la lettre X ;
un blanc lastique de raideur 1, rempli dun trait de deux
points de hauteur.
Nous allons bien entendu nous servir de cette commande pour la
suite...

10

Cosmtique

192

10.7.3 Conception de la bote


Pour concevoir la bote proprement parler, nous allons crer
trois \parbox comme suit :
titre
contenu
Il y a :
deux \parboxs pour contenir les deux traits verticaux droite
et gauche ;
une \parbox pour le centre, contenant le trait du haut interrompu par le titre, le contenu, et en bas un trait horizontal.
Nous allons voir maintenant comment on peut construire ces trois
botes et les positionner les unes par rapport aux autres.

10.7.4 Le code
Nous allons avoir besoin dune bote pour stocker la \parbox
centrale :
\newsavebox{\boitetitre}
et de deux dimensions :

01

\newlength{\largeurboitetitre}
\newlength{\hauteurboitetitre}
qui portent un nom susamment explicite et par consquent me
dispense ainsi de faire des phrases alambiques expliquant la signication de telle ou telle variable. La premire tche que lon va
demander la commande \titlebox est de stocker son contenu et
de le mesurer :
\newcommand{\titlebox}[2]{%
\begin{lrbox}{\boitetitre}% stockage du contenu
\kern\fboxsep#2\kern\fboxsep
\end{lrbox}
% mesure de la largeur de la parbox centrale
\settowidth{\largeurboitetitre}{\usebox{\boitetitre}}%
% mesure de la hauteur de la parbox centrale
\settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
\settodepth{\tempdim}{\usebox{\boitetitre}}%
\addtolength{\hauteurboitetitre}{%

10.7 Une bote pour le mini-sommaire

193

\tempdim+2\fboxrule+2\fboxsep}%
... }
\kern est une commande TEX permettant dinsrer un blanc inscable, ici de largeur \fboxsep. Notez que pour mesurer la hauteur
totale on a recours une longueur temporaire qui nous permet de
faire la somme de la hauteur (height) et la profondeur (depth). On
ajoute ensuite cette hauteur totale deux fois lpaisseur du trait
et deux fois lespace \fboxsep. Vous vous souvenez sans doute que
les dimensions \fboxrule et \fboxsep dnissent respectivement
lpaisseur du trait et lespace entre la bordure et le contenu dune
bote simple. Par consquent, on a :
4.4.1
\largeurboitetitre correspond la largeur de la \parbox p. 72
centrale augmente de deux fois \fboxsep ;
\hauteurboitetitre correspond la hauteur totale augmente de lespace occupe par les deux traits horizontaux :
2(\fboxsep+\fboxrule).
On peut donc construire une premire version de la commande :
\newcommand{\titleboxI}[2]{%
...
\parbox{\fboxrule}{% le trait de gauche
\rule{\fboxrule}{\hauteurboitetitre}}%
\parbox{\largeurboitetitre}{% la bote centrale
\begin{flushleft}
\usebox{\boitetitre}
\end{flushleft}}%
\parbox{\fboxrule}{% le trait de droite
\rule{\fboxrule}{\hauteurboitetitre}}}}
Ce qui donnera pour linstant :
Bidule truc muche

\titleboxI{encore}{%
\parbox{4cm}{truc\\bidule\\machin}}

truc
bidule
machin

10.19

\titleboxI{titre}{Bidule truc muche}

Il reste donc modier le contenu de la \parbox centrale pour ajouter les deux traits horizontaux, celui du bas, et celui du haut coup
par le titre. Lide est dentasser trois botes :
1. une bote contenant le titre et des traits ressorts :

10

Cosmtique

194
2. la bote stockant le contenu (\boitetitre) ;
3. un trait de largeur \largeurboitetitre.
Voici une premire approche :

\newcommand{\titleboxII}[2]{%
...
\parbox{\largeurboitetitre}{% la bote centrale
\begin{flushleft}
\makebox[\largeurboitetitre]{%
\traitressort{\fboxrule}#1%
\traitressort[5]{\fboxrule}}\\
\usebox{\boitetitre}\\
\rule{\largeurboitetitre}{\fboxrule}
\end{flushleft}}
...}
qui donnera :
titre
Bidule truc muche

\titleboxII{encore}{%
\parbox{4cm}{truc\\machin}}

01

10.20

\titleboxII{titre}{Bidule truc muche}

encore
truc
machin

On dirait que cest pas tout fait a . Il faudrait penser faire en


sorte que la commande \\ eectue un saut vertical quivalent la
dimension \fboxsep. On en prote au passage pour faire subir au
titre une translation verticale vers le bas :
\newcommand{\titleboxIII}[2]{%
...
\parbox{\largeurboitetitre}{% la bote centrale
\begin{flushleft}
\makebox[\largeurboitetitre]{%
\traitressort{\fboxrule}%
\raisebox{-.5ex}[0pt][0pt]{#1}%
\traitressort[5]{\fboxrule}}\\[\fboxsep]
\usebox{\boitetitre}\\[\fboxsep]
\rule{\largeurboitetitre}{\fboxrule}
\end{flushleft}}
...}
ce qui donnera :

10.7 Une bote pour le mini-sommaire


titre
Bidule truc muche

10.21

\titleboxIII{titre}{Bidule truc muche}


\titleboxIII{encore}{%
\parbox{4cm}{truc\\machin}}

195

encore
truc
machin

On dirait que a na pas arrang grand chose... Il faut savoir que


lorsque TEX entasse des botes en mode vertical, il insre de lui
mme des espaces entres ces botes de manire ce que les lignes soit
espaces de la longueur \baselineskip. On trouve dans le TEXbook,
la page 79 du chapitre traitant des glues :
Exception : no interline glue is inserted before or after
a rule box. You can also inhibit interline glue by saying
\nointerlineskip between two boxes.

Donald Knuth in the TEXbook [9]

Lordre \nointerlineskip rsout donc le problme :


\newcommand{\titleboxIV}[2]{%
...
\parbox{\largeurboitetitre}{% la bote centrale
\begin{flushleft}
\makebox[\largeurboitetitre]{%
\traitressort{\fboxrule}%
\raisebox{-.5ex}[0pt][0pt]{#1}%
\traitressort[5]{\fboxrule}}\\[\fboxsep]
\nointerlineskip
\usebox{\boitetitre}\\[\fboxsep]\nointerlineskip
\rule{\largeurboitetitre}{\fboxrule}
\end{flushleft}}
...}
ce qui donnera :
titre
Bidule truc muche

\titleboxIV{encore}{%
\parbox{4cm}{truc\\machin}}

encore
truc
machin

Ce qui rpond au cahier des charges.

10.22

\titleboxIV{titre}{Bidule truc muche}

10

196

Cosmtique

Dautres amliorations laisses en guise dexercice pourraient tre apportes cette commande. On pourra par exemple
dfinir un argument optionnel permettant de rgler labaissement du
titre (on a mis ici -0.5ex en dur). Il est galement possible de rgler le
rapport des traits entourant le titre. Enfin, il est tout fait envisageable
de rgler lespace autour du titre (ici il ny en a pas).

10.7.5 Utilisation avec package minitoc


Lutilisation de la commande \titlebox prcdemment dnie,
dans le package minitoc se fait simplement en revtant le chapeau
de monsieur Poirot. En inspectant la loupe le chier de style,
on trouve la dnition dune commande nomme \minitoc@. Jai
simplement recopi le code de cette macro et insr un appel la
merveilleuse commande \titlebox.

01

Chapitre

Sommaire
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8

Quelques bricoles
Des nota
Des citations
Des lettrines
Un sommaire
Un glossaire
Des onglets
Exemples LATEX

11

De nouveaux jouets
Je suis mon bien-aim, Et ses dsirs se portent vers moi.
Viens, mon bien-aim, sortons dans les champs, Demeurons dans les villages!
Ds le matin nous irons aux vignes, Nous verrons si la vigne pousse,
Si la fleur souvre, Si les grenadiers fleurissent.
L je te donnerai mon amour.
Le Cantique des cantiques Ct 7 11.

ous prsentons dans ce chapitre les outils qui ont t crs


N
spcialement pour ce manuel. Pour comprendre la plupart des
commandes et environnements dnis ici, il est impratif davoir lu
les deux prcdents chapitres... Il est question dans ce chapitre de la
manire dont le nota avec panneau danger a t cr, des lettrines
apparaissant en dbut de chapitres, du sommaire, du glossaire, des
onglets contenant le numro du chapitre courant, et enn de lenvironnement permettant de produire du code LATEX et son interprtation cte cte.

197

De nouveaux jouets

198

11.1

Quelques bricoles

11.1.1 Arguments et convention typographique


Dans un document parlant de langage informatique, il est important de faire ressortir clairement les arguments de commande ou
de fonction. Par exemple on crira :
le

fichier

11.1

Pour compiler le fichier \bwarg{fichier} :


Pour
compiler
\begin{flushleft}
hchieri :
\ttfamily latex \bwarg{fichier}
latex hchieri
\end{flushleft}

La commande \bwmarg crit son argument en fonte penche, entre les


symboles h et i produits respectivement par les commandes \langle
et \rangle en mode mathmatique. De plus vous aurez sans doute
remarqu quon peut utiliser une notation indice comme ci-dessous :

Pour copier des fichiers :


11.2

Pour copier des fichiers :


\begin{flushleft}\ttfamily
cp \bwarg[1]{fichier} ...
\bwarg[n]{fichier}
\bwarg[dst]{fichier}
\end{flushleft}

cp hchier1 i ... hchiern i


hchierdst i

La commande \bwarg 1 est dnie comme suit :

11

\newcommand{\marg}[2][]{%
{\normalfont%
\textsl{$\langle$#2%
% si l argument optionnel est prsent
\ifthenelse{\equal{#1}{}}{}
{$_\mathit{#1}$}% on laffiche en indice
$\rangle$}}}%
La commande \normalfont permet de revenir la fonte par dfaut
dans le document. Ce qui explique que hfichieri napparat pas
en fonte machine crire dans lexemple 11.1.
Dans la version lectronique du document version lue sur un
cran il a t dcid, pour la mise en vidence, dutiliser la couleur
plutt que les caractres h et i. Ainsi on peut dnir la commande
\colarg :
1. Pour black & white argument...

11.1 Quelques bricoles

199

\newcommand{\colarg}[2][]{{%
\normalfont\color{blue!90}#2% un bleu
\ifthenelse{\equal{#1}{}}{}{$_\mathit{#1}$}}}
On pourra ensuite grce un boolen habilement positionn, dnir 9.3.1
une commande gnrique \marg faisant appel lune ou lautre des p. 140
versions (noir & blanc ou couleur) :
\ifversionenligne
\let\marg\colarg
\else
\let\marg\bwarg
\fi
Cette construction fait appel la commande \let de TEX prsente
de manire lumineuse la section 9.2.3 page 139.

11.1.2 Autour de la gnration de lindex

Le package \ltxpack{varioref} permet


dutiliser la commande \ltxcom{vref}...

11.3

Lorsque dans le texte du prsent manuel, il est question dune


commande, dun environnement, dun package, dune classe de document, etc. il est fait appel une commande particulire insrant
automatiquement une entre dans lindex. Ainsi par exemple :
Le package varioref permet
dutiliser la commande \vref...

La commande \ltxpack est dnie comme suit. Tout dabord :


\newcommand{\ltx@pack}[1]{%
\upshape\textsf{#1}}
dnissant la commande \ltx@pack permettant simplement de produire le nom du package en sans srif. On dnit ensuite :

11

\newcommand{\ltxpack}[1]{%
\ltx@pack{#1}%
\protect\index{extensions!\protect\texttt{#1}}%
\protect\index{#1@\protect\textsf{#1 extension}}}
qui appelle la commande prcdente, et qui insre deux entres dans
lindex. Une de la forme hnom du packagei extension et lautre
comme sous-entre de extensions . La commande \protect per- 6.3
met ici dviter les ennuis si la commande \ltxpack est elle-mme p. 106
en argument dune autre commande. Dans un mme ordre dide, la
commande \ltxcom est dnie tout dabord par :

200

De nouveaux jouets

\newcommand{\ltx@com}[1]{%
\texttt{\symbol{92}#1}}
permettant de produire en fonte machine crire, le nom de la commande prcd du caractre \. La commande \symbol est une commande LATEX permettant dinsrer ici le 92e caractre de la fonte
slectionne (en loccurrence le backslash). On peut alors dnir la
commande nale :
\newcommand{\ltxcom}[1]{%
\ltx@com{#1}%
\index{#1@\protect\texttt{\symbol{92}#1}}}
qui appelle la commande prcdente et introduit une entre dans
lindex. Lide retenir, cest quil est peut tre utile de dnir des
commandes pour insrer automatiquement des entres dans lindex.
On pourrait par exemple dnir une commande :
\newcommand{\jargonanglais}[1]{%
\emph{#1}%
\index{#1}}
permettant la fois de formater les mots du jargon en anglais, et
de les insrer dans lindex, voire dans un index spcial. De mme
si un mot revient souvent dans un document on peut dnir une
commande pour le produire et linsrer dans lindex. Par exemple
dans ce manuel, on a dni :

11

\newcommand{\postscript}{%
PostScript%
\protect\index{PostScript}}

11.1.3 Des renvois


La version papier de ce document est parseme de renvois
D.3.5 comme celui-ci parlant de glossaire qui na strictement rien voir
p. 277

avec le propos du moment 2 si ce nest quil sagit dun renvoi. La


commande mise en uvre pour les renvois a t baptise \voir et
attend deux arguments :
\voir{hlabel ciblei}{htexte objet du renvoii}
Par exemple, le renvoi prcdent a t produit par :

2. Je veux dire que nous ne sommes pas en train de parler de glossaire, ou


alors vous ne suivez pas du tout...

11.1 Quelques bricoles

201

\voir{chap-glossaire}{glossaire}
Toute la dicult de la conception de cette commande rside dans
lorientation des triangles qui dpend de la parit de la page. Cette
dicult peut tre leve grce lutilisation du package chngpage
comme expliqu au paragraphe 9.3.3 page 144.
Le reste concerne la mise en page des triangles. Pour cela deux
commandes ont t dnies, produisant chacunes les renvois dans la
marge et les marques dans le texte. Do la forme de la commande
\voir :
\newcommand{\voir}[3][\S]{%
\checkoddpage%
\ifcpoddpage
\v@irpageimpaire{#1}{#2}{#3}}{% renvoi sur page impaire
\else
\v@irpagepaire{#1}{#2}{#3}}} % renvoi sur page paire
\fi
On notera quoutre les deux arguments obligatoires, la commande
accepte un argument optionnel dni par dfaut comme tant le caractre de paragraphe (). Les deux commandes \v@irpageimpaire
et \v@irpagepaire sont symtriques lune de lautre et ont pour
objet :
1. de placer un triangle du bon ct du texte faisant lobjet
du renvoi
2. de produire une note marginale avec la cible du renvoi.

Oh les \og joulis\fg{} triangles :


$\blacktriangleleft$ et
$\blacktriangleright$ !

11.4

Les triangles sont obtenus laide de symboles contenus dans le


package amssymb :
Oh les joulis triangles : et
!

Voici nalement la commande permettant de faire un renvoi dans


le cas dune page paire :
\newcommand{\v@irpageimpaire}[3]{%
{\tiny$\blacktriangleright$}#3% le renvoi dans le texte
\marginpar{%
\parbox[t]{.9\marginparwidth}{%
{\footnotesize\sffamily%
\hfill#1~\ref{#2}}~{\small$\blacktriangleleft$}\\

11

De nouveaux jouets

202

{\footnotesize\sffamily%
\mbox{}\hfill p.~\pageref{#2}\hfill\mbox{}}}}
4.4.3
p. 76

On notera donc que la partie du renvoi qui rside dans la marge a


t inclue dans une \parbox dans laquelle le numro du paragraphe
et le numro de la page sont produits sur deux lignes. Pour la page
impaire il faut faire la mme chose que pour la page paire, mais en
tenant compte que cest une page impaire :-)
Dans la version en ligne les renvois apparaissent comme un
lien hypertexte. Ceci est facilement ralisable grce la commande
\hyperref du package ponyme. On aura donc quelque chose du
genre :
\newcommand{\voir}[3][\S]{%
\hyperref[#2]{#3}}
Largument optionnel ne sert ici rien dautre qu assurer la compatibilit avec la version papier de la commande \voir.

11.1.4 Changement de marges


plusieurs reprises dans ce document, jai eu recours des changements de marges provisoires. Cest le cas notamment des exemples
de code LATEX avec le rsultat en face, ou pour les pigraphes. Pour
ce faire, Marie-Paul Kluth 3 qui maintient la Faq franaise de LATEX
avait suggr un environnement ressemblant celui-ci :

11

\newenvironment{changemargin}[2]%
{\begin{list}{}{%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
}\item }%
{\end{list}}
Lide est donc de dnir une liste dont on change les marges. Les
deux arguments quattend cet environnement correspondent respectivement aux dimensions des marges gauche et droite. Une ide intressante serait celle dun environnement dans lequel les marges ont
des dimensions direntes selon la parit de la page. Un tel environnement peut tre dni comme suit :
3. Qui possde un lom prdestil...

11.1 Quelques bricoles

203

Figure 11.1: Une gure qui ne sert rien si ce nest montrer quon peut momentanment changer les marges gauche et droite quand on a besoin de place...

\newenvironment{agrandirmarges}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{0pt plus 1pt}%
\checkoddpage%
\ifcpoddpage
\setlength{\leftmargin}{-#1}
\setlength{\rightmargin}{-#2}
\else
\setlength{\leftmargin}{-#2}
\setlength{\rightmargin}{-#1}
\fi}\item }%
{\end{list}}
Notez quon utilise ici la commande \isodd pour tester la parit
de la page. La gure 11.1 montre un exemple dutilisation de cet
environnement avec le code suivant :
\begin{figure}[tb]
\begin{agrandirmarges}{1cm}{2cm}
% ici on a 1cm de plus ct reliure
%
et 2cm de plus ct bord
...
\caption{Une figure qui ne sert rien...}
\end{agrandirmarges}
\end{figure}

11

De nouveaux jouets

204

11.2

Des nota

Les pictogrammes 4 proviennent dune collection de cliparts


(...) et sont reprsents la gure 11.2 en trois centimtres de
large. Les nota insrs a et l dans le document, ont t produits

Figure 11.2: Les pictogrammes du manuel

11

\parshape=5
1.5cm 2.5cm
1.5cm 2.5cm
1cm 2cm
1cm 2cm
0pt \textwidth
a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a

11.5

par un environnement dni par votre serviteur, bas sur une fonctionnalit de niveau TEX dcouverte lors de mes laborieuses lecture
du TEXBook : la commande \parshape. Cette commande permet
de donner une forme arbitraire un paragraphe :

aaaaaaaa
aaaaaaaaaa
aaaaaaaa
aaaaaaaa
aaaaaaaaaaaaaaaaaa
aaaaa

Le nombre suivant le signe = permet de spcier le nombre de


lignes auxquelles on imposera une dformation. Suivent ensuite des
couples de dimensions indiquant le retrait et la longueur de chaque
ligne dforme. Dans lexemple ci-dessus :
les deux premires lignes auront un retrait de deux centimtres et mesureront chacune trois centimtres ;
les deux lignes suivantes seront indentes dun centimtre et
mesureront deux centimtres ;
4. Lide de ces pictogrammes a t inspire par la lecture de TEXbook,
comme je lexplique en introduction.

11.2 Des nota

205

la cinquime et dernire spcication dtermine lallure de


toutes les lignes restantes : retrait de zro centimtre et longueur de la ligne gale la longueur prdnie \textwidth.

\setlength{\larnota}{.9cm}
\setlength{\largligne}{%
\textwidth-\larnota}
\parshape=3
\larnota\largligne
\larnota\largligne
0pt\textwidth
\noindent Attention ce paragraphe a
uniquement pour but de montrer que lon
peut dcaler deux lignes dans un
paragraphe et ensuite continuer comme
si de rien ntait...

11.6

Pour insrer un nota dans un paragraphe, on va donc dplacer les


deux premires lignes laide de cette commande.

Attention ce paragraphe a
uniquement pour but de
montrer que lon peut dcaler
deux lignes dans un paragraphe et
ensuite continuer comme si de rien
ntait...

Bon, il reste essayer de mettre limage dans le trou laiss par


la commande \parshape. Essayons simplement :

11
11.7

\setlength{\larnota}{.9cm}
\setlength{\largligne}{%
\textwidth-\larnota}
\parshape=3
\larnota\largligne\larnota\largligne
0pt\textwidth\noindent%
\includegraphics[width=\larnota]{%
\ficnota}
Attention ce paragraphe a uniquement
pour but de montrer que lon peut dcaler
deux lignes dans un paragraphe [...]

Attention ce paragraphe a uniquement pour


but de montrer que lon peut dcaler deux lignes dans un paragraphe [...]

videmment, limage se pose sur la ligne comme nimporte quel autre


caractre. On la met dans une bote de largeur nulle dont le contenu
est align droite :

De nouveaux jouets

\setlength{\larnota}{.9cm}
\setlength{\largligne}{%
\textwidth-\larnota}%
\parshape=3
\larnota\largligne\larnota\largligne%
0pt\textwidth\noindent%
\makebox[0pt][r]{%
\includegraphics[width=\larnota]{%
\ficnota}}%
Attention ce joli paragraphe a
uniquement pour but de montrer que
lon peut dcaler deux lignes dans
un paragraphe [...]

11.8

206

Attention ce joli paragraphe a uniquement pour


but de montrer que lon peut
dcaler deux lignes dans un
paragraphe [...]

Il reste faire subir au pictogramme, une translation verticale (le


pictogramme est pratiquement carr, on se sert donc de la dimension
\indnota) :

Attention

11.9

11

\setlength{\larnota}{.9cm}
\setlength{\largligne}{%
\textwidth-\larnota}
\parshape=3
\larnota\largligne\larnota\largligne
0pt\textwidth\noindent%
\raisebox{-\larnota}{%
\makebox[0pt][r]{%
\includegraphics[width=\larnota]{%
\ficnota}}}%
Attention ce joli paragraphe a uniquement
pour but de montrer que lon peut dcaler
deux lignes dans un paragraphe [...]

ce

joli

para-

graphe a uniquement pour


but de montrer que lon peut
dcaler deux lignes dans un
paragraphe [...]

Bon, encore rat, il faut faire croire LATEX que la bote quon
translate verticalement est de taille nulle :

11.2 Des nota

11.10

\setlength{\larnota}{.9cm}
\setlength{\largligne}{%
\textwidth-\larnota}
\parshape=3
\larnota\largligne\larnota\largligne
0pt\textwidth\noindent%
\raisebox{-\larnota}[0pt][0pt]{%
\makebox[0pt][r]{%
\includegraphics[width=\larnota]{%
\ficnota}}}%
Attention ce joli paragraphe a uniquement
pour but de montrer que lon peut dcaler
deux lignes dans un paragraphe [...]

207

Attention ce joli paragraphe a uniquement pour


but de montrer que lon peut
dcaler deux lignes dans un
paragraphe [...]

\setlength{\padnota}{5pt}
\setlength{\larnota}{.9cm}
\setlength{\indnota}{\larnota+\padnota}
\setlength{\largligne}{%
\textwidth-\indnota}
\parshape=3
\indnota\largligne\indnota\largligne
0pt\textwidth\noindent%
\raisebox{-\larnota+2.2ex}[0pt][0pt]{%
\makebox[0pt][r]{%
\includegraphics[width=\larnota]{%
\ficnota}%
\hspace*{\padnota}}}%
Attention ce joli paragraphe a uniquement
pour but de montrer quon peut dcaler
deux lignes dans un paragraphe [...]

11.11

On y est presque. Deux ajustements sont ncessaires :


la bote est un peu trop basse, puisque la ligne de rfrence est
le bas de la ligne du texte. Par consquent on peut enlever 1ex
(la hauteur dun caractre) la translation ;
il serait bon dajouter un espace entre le pictogramme est le
texte. On dnit pour cela une longueur \padnota.

Attention ce joli paragraphe a uniquement pour


but de montrer quon peut dcaler
deux lignes dans un paragraphe
[...]

Et ouala ! Il ne reste qu modier ce code pour crer un nouvel


environnement. La technique choisie ici est de se baser sur lenvironnement list prsent au paragraphe 9.5 page 151. Le code complet
de lenvironnement est le suivant :
% on passe le nom du fichier en argument

11

208

De nouveaux jouets

\newenvironment{pictonote}[1]{%
\begin{list}{}{%
\setlength{\labelsep}{0pt}%
\setlength{\rightmargin}{15pt}}
\item%
\setlength{\indentationnota}{%
\@totalleftmargin+\largeurnota+\paddingnota}%
\setlength{\largeurlignenota}{%
\linewidth-\largeurnota-\paddingnota}%
\parshape=3%
\indentationnota\largeurlignenota%
\indentationnota\largeurlignenota%
\@totalleftmargin\linewidth%
\raisebox{-\largeurnota+2.2ex}[0pt][0pt]{%
\makebox[0pt][r]{%
\includegraphics[width=\largeurnota]{#1}%
\hspace{\paddingnota}}}%
\ignorespaces}{%
\end{list}}
On notera lutilisation de la dimension \@totalleftmargin
permettant dobtenir la largeur de la marge de gauche dans
une liste, en tenant compte dventuelles imbrications. En effet la dimension \leftmargin dans une liste correspond la marge de gauche
relativement lenvironnement contenant la dite liste.

11

On pourra ensuite utiliser cet environnement en lui passant en paramtre un chier particulier, ou mieux dnir un nouvel environnement par exemple :
\newenvironment{nota}{%
\begin{pictonote}{hvotre fichieri}}{\end{pictnote}}
Pour terminer cette section sur les nota il faut savoir que cet
environnement a un dfaut : Si un nota contient un saut de
paragraphe, un espace est de nouveau laiss libre pour un pictogramme
Oui oui comme dans celui-ci, vous voyez bien quil y a un emplacement prvu pour le pictogramme, alors quici on na pas
vraiment lintention den mettre un, non ? Pour viter ce genre de
dsagrment il faut rinitialiser les retraits au niveau TEX grce aux
incantations vaudoues suivantes :
\par\parshape=1\@totalleftmargin\linewidth
qui pourra faire lobjet dune commande insrer manuellement au
dbut de chaque nouveau paragraphe, comme je viens de le faire ici :-)

11.3 Des citations

11.3

209

Des citations

11.3.1 pigraphes
Les pigraphes provocatrices de ce manuel ont t produites par
un environnement que jai nomm epigraphe. Par exemple au dbut
du code LATEX du chapitre 2, on trouve :
\chapter{Ce quil faut savoir}
\label{chap-savoir}
\begin{epigraphe}{Les proverbes Pr \textbf{21} 11}
Quand on chtie le railleur, le simple sassagit ;\\
quand on instruit le sage, celui-ci gagne en savoir.
\end{epigraphe}
Lenvironnement epigraphe est dni comme suit :
\newenvironment{epigraphe}[1]
{% clause begin
\vspace*{-1.5cm}%
\small\sffamily% mise en vidence
\savebox{\nomepigraphe}{#1}% une bote pour sauvegarder
% l origine de la citation
\slshape% tout est pench
\begin{changemargin}{0pt}{-2cm}% on se met au large
\begin{flushright}}% tout est pouss droite
{% clause end
\\[4pt]\usebox{\nomepigraphe}.% insertion de lorigine
\end{flushright}%
\end{changemargin}\par\vspace*{0.6cm}}

11

Il faut bien entendu dclarer la bote quon utilise pour sauvegarder 4.4.5
p. 78
lorigine de notre citation :
\newsavebox{\nomepigraphe}
Les blanc verticaux (\vspace) insrs avant et aprs cet environnement permettent de caler correctement lpigraphe entre le dbut du
chapitre et la minitable des matires.

11.3.2 Citations
Quelques citations parsment le manuel que vous avez sous les
yeux. Elles ont t produites avec un environnement fait maison :

De nouveaux jouets

210

xxxxxxxxxxxxx
\begin{unecitation}[Georges
\textsc{Bataille}]
La vieillesse renouvelle la terreur
linfini. Elle ramne ltre sans
finir au commencement. Le commencement
quau bord de la tombe jentrevois est
le \emph{porc} quen moi la mort ni
linsulte ne peuvent tuer. La terreur
au bord de la tombe est divine et je
menfonce dans la terreur dont je suis
lenfant.
\end{unecitation}
xxxxxxxxxxxxxxx

11.12

xxxxxxxxxxxxx
La vieillesse renouvelle
la terreur linni. Elle ramne ltre sans nir au
commencement. Le commencement quau bord de
la tombe jentrevois est le
porc quen moi la mort ni
linsulte ne peuvent tuer.
La terreur au bord de la
tombe est divine et je menfonce dans la terreur dont
je suis lenfant.
Georges Bataille
xxxxxxxxxxxxxxx

Nous allons crer pas pas cet environnement de manire mettre


le doigt sur quelques problmes classiques auxquels on peut tre
confront avec monsieur LATEX. On va dnir lenvironnement citation en sappuyant sur celui du paragraphe 9.6 page 159 (permettant
de faire une remarque encadre) et sur celui du 4.5.2 page 81 qui
produit une citation avec son auteur :

11

% un boite pour l auteur de la citation


\newsavebox{\auteurcitation}
\newsavebox{\boitecitation}
\newenvironment{citationi}[1]{% clause begin
% on sauve l argument 1 pour l auteur
\savebox{\auteurcitation}{#1}%
\begin{lrbox}{\boitecitation}
\begin{minipage}{.8\linewidth}
\small\slshape}% on passe en petit et pench
{% clause end : on pousse l auteur de la citation droite
\par\mbox{}\hfill\usebox{\auteurcitation}
\end{minipage}
\end{lrbox}
\begin{center}
\usebox{\boitecitation}
\end{center}
Ce qui donne :

11.3 Des citations

11.13

Avant avant avant avant avant avant avant


avant avant avant avant avant avant avant
\begin{citationi}{%
Michel \textsc{Bakounine}, 1845}
Dans presque tous les pays les femmes
sont esclaves ; tant quelles ne seront
pas compltement mancipes, notre
propre libert sera impossible.
\end{citationi}
Aprs aprs aprs aprs aprs aprs aprs
aprs aprs aprs aprs aprs aprs aprs

211
Avant avant avant avant avant
avant avant avant avant avant
avant avant avant avant
Dans presque tous les pays
les femmes sont esclaves ;
tant quelles ne seront pas
compltement mancipes,
notre propre libert sera
impossible.
Michel Bakounine, 1845
Aprs aprs aprs aprs aprs
aprs aprs aprs aprs aprs
aprs aprs aprs aprs

On peut galement changer lindentation du paragraphe dans la minipage (qui vaut par dfaut 0pt dans cet environnement) en modiant dans lenvironnement la valeur de la longueur \parindent :
...
\begin{lrbox}{\boitecitation}
\begin{minipage}{.8\linewidth}%
\setlength{\parindent}{10pt}% indente la 1re ligne
...

On insre ensuite des guillemets en dbut et n de citation, avec le


code suivant :
...
\begin{minipage}{.8\linewidth}%
\setlength{\parindent}{10pt}%
\small\slshape \ignorspaces}% on passe en petit et pench
{\unskip
\par\mbox{}\hfill\usebox{\auteurcitation}
...

On se rfrera aux paragraphes 9.2.1 et 9.2.1 page 138 pour la signication des commandes \ignorespaces et \unskip. Ce qui donne :

11

De nouveaux jouets

Avant avant avant avant avant avant avant


avant avant avant avant avant avant avant
\begin{citationiii}{%
Michel \textsc{Bakounine}, 1845}
Dans presque tous les pays les femmes
sont esclaves ; tant quelles ne seront
pas compltement mancipes, notre
propre libert sera impossible.
\end{citationiii}
Aprs aprs aprs aprs aprs aprs aprs
aprs aprs aprs aprs aprs aprs aprs

11.14

212

Avant avant avant avant avant


avant avant avant avant avant
avant avant avant avant
Dans presque tous les
pays les femmes sont esclaves ; tant quelles ne
seront pas compltement
mancipes, notre propre
libert sera impossible.
Michel Bakounine, 1845
Aprs aprs aprs aprs aprs
aprs aprs aprs aprs aprs
aprs aprs aprs aprs

Ensuite on y est presque on se propose de rendre largument


auteur de la citation optionnel de manire pouvoir produire une
citation sans auteur si besoin est. Lide est de dclarer un boolen
de manire mmoriser le fait quun auteur est prsent ou pas :
\newboolean{auteurcitationpresent}
On modie ensuite la dnition de lenvironnement comme suit :

11

% argument optionnel vide par dfaut :


\newenvironment{unecitation}[1][] {%
% Clause begin :
% on note si on a un auteur pour la citation ou pas
\ifthenelse{\equal{#1}{}}{%
\setboolean{auteurcitationpresent}{false}}{%
\setboolean{auteurcitationpresent}{true}%
\savebox{\auteurcitation}{#1}}% on le sauve si ncessaire
...
Puis on modie la clause \end de lenvironnement en insrant lauteur uniquement sil est prsent en argument :
{ % clause end de l environnement
% s il y a un auteur on le met pouss tout droite
\ifthenelse{\boolean{auteurcitation}}%
{\par\nopagebreak\hfill\usebox{\auteurcitation}}
{}% sinon on ne fait rien ...
Enn, on met la citation sur un fond. On peut par exemple dclarer
cette couleur grce au package xcolor :

11.4 Des lettrines

213

\definecolor{coulcitation}{rgb}{0.90,0.75,0.20}%
Il sut alors de remplacer la commande \usebox de la clause end
par quelque chose du genre :
\setlength{\fboxsep}{10pt}%
\colorbox{coulcitation}{\usebox{\boitecitation}}
Ce qui donnera nalement :

11.4

11.15

avant avant avant avant avant avant avant


\begin{citationiv}[Pierre
\textsc{Desproges}]
Il tait tellement obsd qu la fin
il sautait mme des repas.
\end{citationiv}
Aprs aprs aprs aprs aprs aprs aprs

avant avant avant avant avant


avant avant
Il tait tellement obsd qu la n il sautait
mme des repas.
Pierre Desproges
Aprs aprs aprs aprs aprs
aprs aprs

Des lettrines

\lettrine{Les documents} soigns font


souvent appel aux lettrines, qui selon
les rgles dusage en typographie...

11.16

Les documents soigns font souvent appel aux lettrines qui permettent, selon les rgles dusage en typographie, de produire la premire lettre du chapitre en gros, ainsi que le mot ou groupe de mots
qui suit. Par exemple :
es documents
soigns
font souvent appel aux
lettrines, qui selon les rgles
dusage en typographie...

Il y a deux dicults dont une a dj t surmonte :


comment appliquer un traitement une seule lettre dun argument dune commande ;
comment dcaler les lignes pour laisser la place la lettrine.
On utilisera pour cela la commande \parshape comme pour
le nota ( 11.2 page 204).

11.4.1 La commande \glurps ou un pas vers TEX


Au niveau de LATEX cest la commande \newcommand qui permet
de crer de nouvelles commandes. Une des limitations de LATEX pour

11

De nouveaux jouets

214

\def\bidule{machin truc}
\bidule{} et \bidule

11.17

ce qui concerne la cration de commandes rside dans le fait que les


dlimiteurs darguments sont toujours les caractres { et }. Comme
nous le verrons un peu plus bas, au niveau de TEX, cette contrainte
nexiste pas. En eet, pour crer une commande avec TEX, on peut
crire :
machin truc et machin truc

Avec un ou plusieurs arguments, on crira

\bidule{ab}{cd}

11.18

\def\bidule#1#2{(1=#1) et (2=#2)}
(1=ab) et (2=cd)

On note quen TEX, on crit dans la dnition les arguments dans


lordre. Ce qui est intressant et que lon va exploiter pour notre
lettrine, peut tre illustr par les exemples suivants dutilisation de
la commande \bidule :

\bidule abcd

11.19

\def\bidule#1#2{(1=#1) et (2=#2)}
(1=a) et (2=b)cd
(1=a) et (2=b) cd

\bidule ab cd

\def\bidule#1#2/{(1=#1) et (2=#2)}
Ici, on indique que pour appeler la commande \bidule il faut lui
faire suivre deux arguments suivis du caractre /.
\bidule abc/d
\bidule ab/cd

11.20

11

On remarque donc que si on ne dlimite pas explicitement les arguments avec les caractres { et }, le premier argument (#1) est remplac par le premier caractre rencontr, le deuxime argument (#2)
par le deuxime caractre, etc. Encore plus intressant, on peut dnir trs souplement le format dappel de la commande, par exemple :

(1=a) et (2=bc)d
(1=a) et (2=b)cd

Par consquent cette dernire commande prendra comme premier argument, le premier caractre rencontr, et comme deuxime : tout ce
quelle trouve jusquau caractre /. On peut donc crer une bauche
de commande pour une lettrine :

11.4 Des lettrines


\def\glurps#1#2/{{\Huge#1}\textsc{#2}}
\newcommand{\lettrinedev}[1]{\glurps#1/}
\lettrinedev{Bon b} ouala le travail

11.21

215

on b ouala le travail

On va mme pousser le vice jusqu mettre la grosse lettre un peu


plus bas :

on b

11.22

\def\glurps#1#2/{%
{\Huge#1}%
\raisebox{\baselineskip}{\textsc{#2}}}
\newcommand{\lettrinedev}[1]{\glurps#1/}
\lettrinedev{Bon b} ouala le travail

ouala le travail

11.4.2 Insertion de la lettrine dans un paragraphe


Pour insrer la lettrine dans un paragraphe on aura recours la
commande \parshape. La gure 11.3 montre que lon doit dnir
deux dimensions pour insrer la lettrine :
1. lindentation de la premire ligne, correspondant la largeur
de la grosse lettre plus celle de la suite de la lettrine ;
2. lindentation de la deuxime ligne, correspondant la largeur
de la grosse lettre ventuellement augmente dune espace
pour arer un peu.

H op

11
Paragraphe

Figure 11.3: Insertion de la lettrine dans un paragraphe


On dnit les dimensions suivantes :
\indletH et \larligH respectivement lindentation et la largeur de la premire ligne (la ligne du Haut ) du paragraphe
contenant une lettrine ;
\indletB et \larligB la mme chose pour la deuxime ligne
(la ligne du Bas )
Ceci permet dcrire quelque chose du genre :

De nouveaux jouets

216

11.23

\setlength{\indletB}{.8cm}% au pif
\setlength{\larligB}{\textwidth-\indletB}
\setlength{\indletH}{1.5cm}% au pif
\setlength{\larligH}{\textwidth-\indletH}
Ce paragraphe est
\parshape=3
prt recevoir une jolie let\indletH\larligH
trine qui occupera deux lignes en\indletB\larligB
viron voire mme exactement.
0pt\textwidth
Ce paragraphe est prt
recevoir une jolie lettrine qui occupera
deux lignes environ voire mme exactement.

\DeclareFixedFont{%
\lettrinefont}{T1}{ppl}{m}{n}{%
2\baselineskip}
{\lettrinefont
Pour crire les grosses lettres}

11.24

Lemplacement est prt, il reste insrer la grosse lettre et ce qui


suit la bonne place. On commence par crer une commande pour
la fonte utiliser :

Pour crire
les
grosses
lettres

Ensuite on va modier la commande \glurps 5 et la commande


\lettrine pour quelles calculent elles-mmes les dimensions dnies ci-avant (\indletH, \larligH, ...).

11

\newsavebox{\lalettrine}% une bote pour la lettrine


\def\creerlettrine#1#2/{%
\savebox{\lalettrine}{%
{\lettrinefont#1}%
\raisebox{\baselineskip}{\textsc{#2}}}%
\settowidth{\indletB}{{\lettrinefont#1}}%
\settowidth{\indletH}{\usebox{\lalettrine}}}
La commande \creerlettrine (digne hritire de \glurps) sauve
la lettrine dans une bote et en prote pour sauvegarder la largeur
de la grosse lettre dans la dimension \indletB, et la dimension
de lensemble dans \indletH. Tentons maintenant, une premire
version de la lettrine :
\newcommand{\lettrineI}[1]{%
\creerlettrine#1/%
5. Vous pourrez notez quil est tout fait inadmissible dutiliser des noms
aussi ridicules pour les commandes que vous serez amen dfinir...

11.4 Des lettrines

217

\setlength{\larligH}{\textwidth-\indletH}%
\setlength{\larligB}{\textwidth-\indletB}%
\parshape=3\indletH\larligH\indletB\larligB%
0cm\textwidth%
\noindent\usebox{\lalettrine}}
Qui donne 6 :

Ce chapitre a

11.25

\lettrineI{Ce chapitre} a pour but de


produire des caractres les uns derrire
les autres et ainsi de former des mots
donnant lieu des phrases.

pour but de produire des caractres les uns derrire les autres
et ainsi de former des mots donnant lieu des phrases.

Les lecteurs trs attentifs auront not que ce nota nest pas la
bonne place. Il semblerait que des translations horizontales et verticales soient ncessaires. On commencera ici par se dcaler vers la
gauche. la dernire ligne de la dnition de \lettrine, on crira
donc :
% dcalage quivalent la largeur totale
\noindent\hspace{-\indletH}
qui produira :
e chapitre

Cproduire des caractres


a pour but de
les uns
11.26

\lettrineII{Ce chapitre} a pour but de


produire des caractres les uns derrire
les autres et ainsi de former des mots
donnant lieu des phrases.

derrire les autres et ainsi de former des mots donnant lieu des
phrases.

Puis on intgre la translation verticale :


\noindent\hspace{-\indletH}%
\raisebox{-\baselineskip}[0pt][0pt]{\usebox{\lalettrine}}
qui produira :
e chapitre a pour but de

Cproduire des caractres les uns

11.27

\lettrineIII{Ce chapitre} a pour but de


produire des caractres les uns derrire
les autres et ainsi de former des mots
donnant lieu des phrases.

derrire les autres et ainsi de former des mots donnant lieu des
phrases.

6. Des traits ont t ajouts pour bien situer la bote englobant la lettrine.

11

De nouveaux jouets

218

Les lecteurs encore veills auront remarqu que la grosse lettre


est un peu trop rapproche du texte. On peut donc augmenter lgrement la dimension \indletB. Voici nalement le code de la lettrine :
\newcommand{\lettrine}[1]{%
\creerlettrine#1/%
\addtolength{\indletB}{3pt}% pour avoir un peu despace
\setlength{\larligH}{\textwidth-\indletH}%
\setlength{\larligB}{\textwidth-\indletB}%
\parshape=3%
\indletH\larligH\indletB\larligB0cm\textwidth%
\noindent\hspace{-\indletH}%
\raisebox{-\baselineskip}[0pt][0pt]{%
\usebox{\lalettrine}}}

11.5

Un sommaire

Cest une pratique courante que le sommaire dun document rdig en franais soit plac en tte de document et contienne un
condens de la table des matires. Cette dernire est quant elle
gnralement insre la n. En fouillant dans le chier book.cls
dnissant la classe ponyme, on trouve une instruction commune
aux commandes \tableofcontents et \listoffigures : la commande \@starttoc.
\@starttoc{toc}

11

pour la commande \tableofcontents et :


\@starttoc{lof}
pour la commande \listoffigures. Cest la commande interne
\@starttoc qui permet de commencer un table (matires, gures,
etc.) partir dun chier auxiliaire portant lextension donne en
argument, ici toc pour la table des matires et lof pour la liste des
gures. Nous avons donc cr dans un premier temps la commande
\sommaire comme suit :
\newcommand{\sommaire}{%
\chapter*{Sommaire}
\@starttoc{som}}
Le chier portant lextension som contiendra les entres du sommaire. Ltape suivante consiste remplir le chier som. Pour cela, il

11.5 Un sommaire

219

faut savoir que les commandes \chapter, \section, etc. font toutes
appel une commande pour insrer une entre dans la table des
matires. Ainsi quand on crit :
\section{Bidule truc muche}
il sera fait appel la commande :
\addcontentsline{toc}{section}{Bidule truc muche}
pour insrer le titre dans la table des matires. De mme lorsquon
crit :
\chapter{Machin chose}
il sera fait automatiquement appel :
\addcontentsline{toc}{chapter}{Machin chose}
Cette dernire commande crit dans le chier de table des matires
(portant donc lextension toc) la ligne :
\contentsline{chapter}{%
\numberline {1}Machine chose}{3}{chapter.1}
Et (Hercule Poirot a eu du pain sur la planche), il se trouve que
cette dernire commande, fait nalement appel une commande de
la forme :
\l@htype dentrei
pour produire lentre dans la table. Par exemple la commande prcdente fait appel l@chapter. Ceci parce quon trouve la dnition
suivante :
\def\contentsline#1{\csname l@#1\endcsname}
dans latex.ltx. Nous passons volontairement sous silence le dtail
de ces commandes, et on se contentera ici de savoir que la commande \l@section produit une entre de table de matires pour les
sections, \l@subsection produit une entre pour les subsections,
etc. Pour nir notre sommaire, il reste crire dans le chier de
sommaire. Nous avons choisi dinsrer dans le sommaire les titres
de parties, chapitres et sections. Pour arriver nos ns, nous avons
ajout cette insertion la commande \addcontentsline originale :
% sauvegarde de l originale
\let\aclORIG\addcontentsline
% redfinition

11

De nouveaux jouets

220

\renewcommand{\addcontentsline}[3]{%
\aclORIG{#1}{#2}{#3}% appel de loriginale
\ifthenelse{% on insre sections , chapitres et parties
\equal{#2}{section} \or \equal{#2}{chapter}
\or \equal{#2}{part}}{%
\aclORIG{som}{#2}{#3}}{}}
Il faut noter que notre sommaire sera mis en page exactement
de la mme manire que la table des matires, puisque tous
deux font appel la mme commande interne :
\aclORIG{som}{section}{...}
cest donc la commande \l@section qui sera appele pour mettre en
page lentre. Pour mettre en page le sommaire diffremment, il aurait
fallu crire :
\aclORIG{som}{somsection}{...}
puis dfinir la commande \l@somsection pour mettre en page les
entres de sections dans le sommaire...

11.6

11

Un glossaire

Il est souvent utile dagrmenter un document dun glossaire


ayant pour but de rendre moins mystrieux les termes du jargon
quon appelle aussi vocabulaire technique. Nous proposons ici une
mthode sappuyant sur le programme makeindex prsent au paragraphe 6.3 page 106 et sur le paragraphe 10.1 page 164 prsentant
les outils permettant de changer lallure de lindex.

11.6.1 Tordre le cou makeindex


De mme que pour la cration dun index, on doit mettre dans le
prambule du document la commande \makeglossary. Cette commande demande monsieur LATEX de bien vouloir crer un chier
portant lextension glo, rceptacle des entres de glossaire.
\glossary{machin chouette chose}
ajoutera machin chouette chose dans le glossaire. En ralit cette
commande a pour eet dajouter dans le chier dextension glo, la
ligne :
\glossaryentry{machin chouette chose}{hno pagei}

11.6 Un glossaire

221

La phase suivante consiste produire le glossaire proprement dit


grce au programme makeindex et au chier dentres de glossaire :
makeindex -s hstyle glossairei hdocumenti.glo -o hdocumenti.glx
qui produit, en utilisant comme chier de style gglo.ist le glossaire
suivant :
\begin{theglossary}
\item machin chouette chose\pfill 27
\end{theglossary}
On note donc que le glossaire quil va falloir insrer explicitement dans notre document est constitu par lenvironnement
theglossary et que chaque entre donne lieu un \item et son
numro de page (ici 27 pour lexemple). Pour arriver nos ns, il
nous faudra :
1. dnir lenvironnement theglossary car rien nest fait par
dfaut dans LATEX ;
2. produire les entres avec un terme suivi de sa dnition, sous
la forme :
\begin{theglossary}
\item[htermei] blabla de dfinition
\end{theglossary}
3. supprimer les numros de pages puisquils napparaissent pas
dans un glossaire.
Ces trois tches font lobjet des paragraphes suivants.

11.6.2 Un environnement pour le glossaire


Au paragraphe 9.5.6 page 158 du chapitre 9, nous avons propos
une liste particulire permettant de prsenter les entres dans une
bote avec une ombre. La dnition tait la suivante :
\newenvironment{leglossaire}{\begin{list}{}{%
\setlength{\labelwidth}{.5\textwidth}%
\setlength{\labelsep}{-.8\labelwidth}%
\setlength{\itemindent}{\parindent}%
\setlength{\leftmargin}{25pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\itemsep}{.8\baselineskip}%
\renewcommand{\makelabel}[1]{%

11

De nouveaux jouets

222

\boiteentreeglossaire{##1}}}}
{\end{list}}
o \boiteentreeglossaire est :
\newcommand{\boiteentreeglossaire}[1]{%
\parbox[b]{\labelwidth}{%
\setlength{\fboxsep}{3pt}%
\setlength{\fboxrule}{.4pt}%
\shadowbox{\sffamily#1}\\\hfill\mbox{}}}

\begin{leglossaire}
\item[Sphre] Patate bien rgulire.
\end{leglossaire}

11.28

On se reportera au paragraphe mentionn ci-dessus pour les explications de ces commandes. En tous les cas on aura :
Sphre
Patate bien rgulire.

11.6.3 Produire le fichier .glx


De manire ce que makeindex produise le chier dextension
glx avec cet environnement on doit crire le chier de style suivant :
preamble "\n\\begin{leglossaire}"
postamble "\n\\end{leglossaire}"
Doit galement apparatre dans ce chier de style que lon nommera par exemple glossaire.ist le mot clef dsignant les entres
de glossaire dans le chier .glo :

11

keyword "\\glossaryentry"
Pour que chaque entre soit constitue dun terme et de sa dnition,
nous avons dni la commande suivante :
\newcommand{\entreeglossaire}[2]{\glossary{[#1] #2}}
De telle sorte que :
\entreeglossaire{Sphere}{Patate bien rgulire.}
aura pour eet dcrire :
\glossary{[Sphre] Patate bien rgulire.}
dans le chier .glo. Aprs appel de makeindex :
makeindex -s glossaire.ist hdocumenti.glo -o hdocumenti.glx

11.6 Un glossaire

223

on aura dans le chier .glx :


\begin{leglossaire}
\item [Sphre] Patate bien rgulire., hno de pagei
\end{leglossaire}
Si vous mavez bien suivi jusquici, vous devriez rler et me dire :
faudrait ptt voir enlever cette vilaine virgule et ce numro de
page... Certes. La virgule est automatiquement mise par makeindex
comme dlimiteur de premier niveau entre une entre dindex et
le numro de page o apparat cette entre. Pour utiliser autre chose
quune virgule (ici rien en loccurrence) on crit dans le chier de
style :
delim_0 ""
Il reste rgler le cas du numro de page. La solution que jai adopte consiste utiliser une commande absorbante en guise de mise
en forme du numro de page (cf. 6.3.3 page 108). Voici la commande\entreeglossaire modie :
\newcommand{\pasdenumerodepage}[1]{}% mange largument
\newcommand{\entreeglossaire}[2]{%
\glossary{[#1] #2|pasdenumerodepage}}
ceci permet de crer le chier .glx de la forme :
\begin{leglossaire}
\item [Sphre] Patate bien rgulire.
\pagedenumerodepage{27}
\end{leglossaire}
qui enverra le numro de page (ici 27 pour lexemple) dans le vide
intersidral.

11.6.4 Recollons les morceaux


Pour en nir avec le glossaire, il nous faut crer une commande
susamment souple qui aura essentiellement pour but de produire
un chapitre contenant le glossaire, cest--dire dinsrer dans le document le chier .glx. On peut dcomposer les tches eectuer
par la commande en question, comme suit :
crer un nouveau chapitre (avec comme titre glossaire ) ;
lire les entres de glossaire (commande \entreeglossaire)
depuis un chier ;

11

De nouveaux jouets

224

insrer le chier .glx


Voici la commande eectuant ces traitements :
\newcommand{\printglossary}[1][glossaire.tex]{%
\chapter*{Glossaire}
\label{chap-glossaire}
\markboth{Glossaire}{Glossaire}% entte de page
% insertion dans la table des matires :
\addcontentsline{toc}{chapter}{Glossaire}
% insertion des entres de glossaire :
\InputIfFileExists{#1}{%
\typeout{Donnes du glossaire}}{%
\typeout{Pas de fichier glossaire.tex}}
% insertion du fichier . glx
\InputIfFileExists{\jobname.glx}{%
\typeout{Glossaire tri}}{%
\typeout{Pas de fichier \jobname.glx}}
}
On notera les points suivants concernant cette commande :
le chier dentre de glossaire est par dfaut glossaire.tex ;
on a dcid dinsrer le glossaire dans la table des matires ;
pour insrer un chier, on fait appel \InputIfFileExists
dnie dans le format LATEX ayant la forme suivante :
\InputIfFileExists{hfichier inclurei}
{hcode LATEX si le fichier existei}
{hcode LATEX si le fichier nexiste pasi}

11

Enn \jobname contient le nom du chier (ou document


matre) en cours de compilation et la commande \typeout
ache un message sur la console de compilation.
Enn, le chier glossaire.ist contient nalement :
delim_0 ""
preamble "\n\\begin{leglossaire}"
postamble "\n\\end{leglossaire}"
keyword "\\glossaryentry"

11.7

Des onglets

Javais initialement prvu de mettre en page ce document sur


du papier plus petit que le standard A4 pour ensuite le massicoter.

11.7 Des onglets

225

Do lide de crer des onglets, petits carrs colors se retrouvant au


ras de la feuille aprs massicotage. Le fait que ltablissement dans
lequel je travaille sest spar de son massicot hydraulique dune
part, et que dautre part tout le monde na pas facilement accs
ce type de matriel ma fait changer davis quant au bien fond que
ce document devait imprativement tre massicot. Les onglets sont
malgr tout rests dans le document, bien que leur place nest plus
tout fait au ras de la feuille. Voici comment ils ont t gnrs...

11.7.1 Ide retenue


Le cahier des charges est le suivant :
les onglets apparaissent sur chaque page du cot oppos la
reliure ;
ils sont produits lenvers sur les pages paires ;
ils doivent tre une hauteur proportionnelle au numro du
chapitre.
Do lide :
dutiliser les fonctionnalits du package fancyhdr pour produire les onglets ;
utiliser des translations verticales pour les positionner ;

11.7.2 Les botes dans la marge


De manire produire les numros de chapitres dans la marge,
jai simplement cr des botes paragraphe de largeur et hauteur
imposes 7 :
\newlength{\ongletwidth}
\newlength{\ongletheight}
\setlength{\ongletheight}{32pt}
\setlength{\ongletwidth}{.96cm}
Voici la commande produisant la bote :
\newcommand{\b@iteonglet}{%
\colorbox[gray]{.7}{% une bote avec un fond gris contenant
% la bote paragraphe de largeur et hauteur fixe :
\parbox[t][\ongletheight][s]{\ongletwidth}{%
\vfill%
\centering%
7. On remarquera cette maladie des informaticiens de nommer les variables
avec des noms moiti en franais et en anglais...

11

De nouveaux jouets

226

% on applique un effet miroir selon la parit


\ifthenelse{\isodd{\value{page}}}{%
\ongletfont\thechapter}{%
\reflectbox{\ongletfont\thechapter}}%
\vfill}}}

9.4

de la page

On notera lutilisation de la commande \reflectbox du package


graphicx. On pourra galement remarquer que le contenu de la bote
paragraphe est centr en hauteur grce deux ressorts verticaux et
quon insre nalement dans cette bote le numro du chapitre dans
une mystrieuse fonte enclenche par la commande \ongletfont.

p. 145
11.29

Et voici la bote :
Et voici la bote : \b@iteonglet...

11

...

Il est important de noter que les botes produites par \colorbox


sont assujetties la dimension \fboxsep :

\setlength{\fboxsep}{15pt}
En voici une autre : \b@iteonglet...

11.30

En

voici

11

une

autre

...

11.7.3 Position des onglets

11

Pour positionner les onglets, il faut eectuer deux translations :


une horizontale pour pousser longlet jusquau bout de la zone
de note marginale ;
une verticale en fonction du numro de chapitre.
On utilisera le mcanisme de dnition des en-ttes de page du package fancyhdr pour positionner les onglets. Lide est simple, on
crit :
\fancyhead[RO]{\bfseries\thepage\onglet}
\fancyhead[LE]{\onglet\bfseries\thepage}
pour dire quen plus du numro de page en gras, on mettra dans
len-tte le rsultat de la commande \onglet ( droite sur les pages
impaires et gauche sur les pages paires). Nous allons voir comment
construire pas pas cette commande.

11.7 Des onglets

227

Postionnement horizontal
Dans le cas des pages impaires, il faut dans un premier temps
pousser la bote de longlet vers la droite, et vers la gauche pour les
pages paires. Qu cela ne tienne 8 :
\newcommand{\ongletI}{%
\ifthenelse{\isodd{\value{page}}}{%
% page impaire
\hspace*{\marginparwidth}\hspace*{\marginparsep}}{%
% page paire
\hspace*{-\marginparwidth}\hspace*{-\marginparsep}}%
\b@iteonglet}
Voici ce que donnerait cette commande sur cette page :
227

11

Pour placer correctement le numro de la page dans len-tte, il faut


donc leurrer LATEX en utilisant une bote de largeur nulle contenant la bote de longlet et les espaces de translation horizontale :
\newcommand{\ongletII}{%
\makebox[0pt][l]{%
% si la page est impaire
\ifthenelse{\isodd{\value{page}}}{%
\hspace*{\marginparwidth}\hspace*{\marginparsep}}{%
% sinon
\hspace*{-\marginparwidth}\hspace*{-\marginparsep}}%
\b@iteonglet}}

11

qui donnerait sur cette page :


227

Pour les pages impaires, sil on veut pousser la bote de longlet


contre le bord de la zone rserve aux notes marginales, on doit
galement tenir compte de la largeur totale de cette bote, comme
le montre les points de rfrences dans le schma ci-dessous :
8. Je suis toujours trs mu de commencer une phrase par le beau Q de la
police Computer Modern...

De nouveaux jouets

228
26

27

corps du document

zones des notes marginales

Par consquent, le positionnement horizontal est obtenu grce la


commande :
\newcommand{\ongletIII}{%
\makebox[0pt][l]{%
\ifthenelse{\isodd{\value{page}}}{% page impaire
\hspace*{\marginparwidth}\hspace*{\marginparsep}%
\hspace*{-\ongletwidth}\hspace{-2\fboxsep}}{% page paire
\hspace*{-\marginparwidth}\hspace*{-\marginparsep}}%
\b@iteonglet}}
puisqu la largeur de la bote de longlet, il faut rajouter deux fois
la dimension \fboxsep induite par la commande \colorbox.
Positionnement vertical
Reste maintenant traiter le problme du positionnement vertical... La commande \raisebox va nous permettre de positionner
verticalement longlet. De plus avec la forme suivante :
\raisebox{hdplacementi}[0pt][0pt]{hobjet dplaceri}

11
11

on fait croire LATEX que lhobjet dplaceri a une hauteur nulle. Il


ny aura par consquent pas de dplacement des objets aux alentours
et en particulier ceux constituant len-tte de la page. Par exemple,
en crivant :
\newcommand{\ongletIV}{%
\makebox[0pt][l]{%
\ifthenelse{\isodd{\value{page}}}{%
\hspace*{\marginparwidth}\hspace*{\marginparsep}%
\hspace*{-\ongletwidth}\hspace{-2\fboxsep}}{%
\hspace*{-\marginparwidth}\hspace*{-\marginparsep}}%
\raisebox{-5cm}[0pt][0pt]{\b@iteonglet}}}
On place partir dici un onglet deux centimtres vers le haut :
228
La mthode choisie pour dnir le placement de la bote est la
suivante : pour le chapitre de numro c :

11.7 Des onglets

229

se dplacer vers le bas dune dimension xe donne df ;


ajouter ce dplacement un dplacement proportionnel c.
Le dplacement de longlet pour le chapitre c peut scrire :
c hhauteur ongleti
o est un facteur permettant despacer les onglets. Si =
1, les onglets seront espacs dexactement la longueur de la
bote, avec = 2 ils seront spars par un espacement gal
deux fois la hauteur de longlet, etc.
Voici pour le premier dplacement :
% position de la premire tiquette
\newlength{\ongletvshift}
\setlength{\ongletvshift}{2cm}
Puis pour le facteur alpha :
\newcommand{\ongletsep}{1.37}
On dclare une dimension permettant de positionner longlet :
\newlength{\ongletpos}
On peut maintenant crire, la commande \onglet :
\newcommand{\onglet}{%
\makebox[0pt][l]{%
\ifthenelse{\isodd{\value{page}}}{%
\hspace*{\marginparwidth}\hspace*{\marginparsep}%
\hspace*{-\ongletwidth}\hspace*{-2\fboxsep}%
}{%
\hspace*{-\marginparwidth}\hspace*{-\marginparsep}}%
% calcul de la position verticale
\setlength{\ongletvpos}{%
-\ongletvshift
-\ongletheight*\real{\thechapter}*\real{\ongletsep}}%
% positionnement de l onglet
\raisebox{\ongletvpos}[0pt][0pt]{\b@iteonglet}}}
Ouf ! a marche... Oui pour le chapitre ne faisant pas partie des
annexes. Mais pour ceux en faisant partie, numrots A, B, etc. a
ne collera pas. Puisquon ne pourra pas calculer la position verticale
en fonction de ces numros. En petit coup dil dans book.cls nous
conrme cela :

11

230

De nouveaux jouets

\newcommand\appendix{\par
\setcounter{chapter}{0}%
\setcounter{section}{0}%
[...]
\gdef\thechapter{\@Alph\c@chapter}}
on peut comprendre ici que lorsquon commence les annexes avec la
commande \appendix, le compteur de chapitre est remis zro, et
produit en lettre majuscule. Il faut donc trouver une parade pour que
longlet continue se dcaler mme aprs les annexes. La solution
que jai adopte consiste simplement utiliser un nouveau compteur
permettant de numroter les chapitres et les annexes. Pour cela, on
le dclare :
\newcounter{chapitre}
On prcise tout de suite quon veut le produire en chire arabe :
\renewcommand{\thechapitre}{\arabic{chapitre}}
On ajoute la mise zro de ce compteur dans la dnition de
\frontmatter :
\renewcommand\frontmatter{%
\cleardoublepage
\setcounter{chapitre}{1}
[...]
}

11

Puis chaque appel de la commande \chapter, on incrmente le


compteur :
\renewcommand{\chapter}{%
\cleardoublepage
\stepcounter{chapitre}
\thispagestyle{plain}
[...]
}

11.8 Exemples LATEX

Exemples LATEX

Pour clore ce chapitre, nous prsenterons


lenvironnement \ltxenv{ltxexemple}
permettant dintroduire des exemples de
code \LaTeX{} et le rsultat dans le
document...

11.31

11.8

231

Pour clore ce chapitre, nous


prsenterons
lenvironnement
ltxexemple permettant dintroduire des exemples de code LATEX
et le rsultat dans le document...

11.8.1 Outils ncessaires


Le package fancyvrb propose deux fonctionnalits axes autour
des chiers. Tout dabord, la commande \VerbatimInput permet
dinsrer le contenu dun chier. Par exemple :
\VerbatimInput[lastline=4]{corps/jouets.tex}
donne (jouets.tex est le chier source de ce chapitre) :
\chapter{De nouveaux jouets}
\label{chap-jouets}
\begin{epigraphe}{Le Cantique des cantiques Ct \textbf{7} 11}
Ensuite, lenvironnement VerbatimOut ralisant la tche inverse :
\begin{VerbatimOut}{hfichieri}
hcode LATEXi
\end{VerbatimOut}
stockera le hcode LATEXi dans le chier nomm hfichieri.
Le deuxime outil ncessaire est dni en sinspirant de la dnition des commandes \settowidth, \settoheight, etc. dans le
chier latex.ltx. Il sagit dune commande permettant de rcuprer la hauteur totale dun objet, cest--dire sa hauteur additionne
de sa profondeur :
\newcommand{\hauteurtotale}[2]{%
% sauvegarde de l objet mesurer
\setbox\@tempboxa\hbox{{#2}}%
% rcupration de la hauteur
\setlength{#1}{\ht\@tempboxa}%
% laquelle on ajoute la profondeur
\addtolength{#1}{\dp\@tempboxa}%
% vidange de la bote temporaire
\setbox\@tempboxa\box\voidb@x}%

11

232

De nouveaux jouets

On notera lutilisation des commandes TEX, \ht et \dp renvoyant


respectivement la hauteur et la largeur dune bote. La commande
\setbox et lquivalent TEX de \savebox. La bote \@tempboxa est
une bote temporaire utilise par LATEX et enn, la bote \voidb@x
est une bote vide.

11.8.2 Le principe de lenvironnement ltxexemple


Lenvironnement ltxexemple que nous prsentons en dbut de
section, est un peu plus complexe que ce que nous avons rencontr
jusqu maintenant. En eet lorsquon crit :
\begin{ltxexemple} hcontenui \end{ltxexemple}

il faut dune part pouvoir produire hcontenui tel quel (en verbatim),
et dautre part pouvoir linterprter cest--dire le traiter comme
LATEX le ferait. Finalement, on se rend compte quil faudrait demander LATEX de traiter deux fois hcontenui ce qui nest pas envisageable. Une solution pour contourner ce problme est prcisment
de sauvegarder hcontenui dans un chier pour pouvoir le rutiliser,
soit en tant que verbatim, soit pour tre interprt par LATEX. La
premire dicult surmonter est donc de crer un environnement
sauvegardant son contenu :
\newenvironment{ltxexemple}{%
\VerbatimEnvironment
\begin{VerbatimOut}{\jobname.exa}}{% clause begin
\end{VerbatimOut}}% clause end

11

Ne me demandez surtout pas quoi peut bien servir la commande \VerbatimEnvironment non documente dans le package, mais ncessaire au bon fonctionnement de lenvironnement dfini ci-dessus.

Tout cela est bien joli, mais cet environnement ne fait que sauvegarder son contenu dans un chier. Il faut donc crire dans la clause
end de lenvironnement :
\end{VerbatimOut}%
\VerbatimInput{\jobname.exa}% le contenu tel quel
\input{\jobname.exa}% le contenu interprt par LaTeX

11.8 Exemples LATEX

233

Ainsi :
\begin{ltxexemplei}
du code \LaTeX{}...
\end{ltxexemplei}

du code \LaTeX{}...
donne :

du code LATEX...

Il reste donc modier la mise en page des deux parties. Ce qui fait
lobjet du paragraphe suivant.

11.8.3 Mises en bote


Lide de base consiste mettre dans deux botes :
\newsavebox{\b@iteentree}
\newsavebox{\b@itesortie}
pour stocker l entre (le code) et la sortie (le code interprt
par LATEX). On crira donc dans la clause end de lenvironnement :
[...]
\end{VerbatimOut}%
\begin{ltxexempleenv}% pour agrandir les marges
\savebox{\b@iteentree}{% sauvegarde du code en verbatim
\begin{minipage}{.57\linewidth}
\VerbatimInput{\jobname.exa}
\end{minipage}}%
\savebox{\b@itesortie}{% code interprt
\begin{minipage}{.40\linewidth}
\setlength{\parindent}{10pt}% par dfaut 0pt
\input{\jobname.exa}
\end{minipage}}%
\usebox{\b@iteentree}
\usebox{\b@itesortie}
\end{ltxexempleenv}

11

Lenvironnement ltxexempleenv est analogue celui que nous avons


prsent au paragraphe concernant lagrandissement des marges. 11.1.4
La seule dirence est quil bascule en \small et eectue quelques p. 202
rglages sur les blancs verticaux. On notera que la bote entre
occupera 57% de la largeur de la page et, la bote sortie 40%.
Ainsi, le code :

De nouveaux jouets

234
\begin{ltxexempleii}
du code \LaTeX{}...
\par\noindent
et cest tout.
\end{ltxexempleii}
Donnera :
du code \LaTeX{}...
\par\noindent
et cest tout.

du code LATEX...
et cest tout.

Nous avons mis des bordures aux ras des deux botes entre et
sortie pour mettre en vidence leurs dimensions. On peut galement noter ici que la clause begin de lenvironnement est en
ralit dnie comme suit :
\pagebreak[3]% on suggre de changer de page ici
\VerbatimEnvironment%
\begin{VerbatimOut}[gobble=2]{\jobname.exa}
Loption [gobble=2] permet de manger systmatiquement deux
caractres au dbut de chaque ligne car tout bon diteur 9 ajoute
des espaces pour lindentation du source. Ainsi le code :
\begin{ltxexempleii}
du code \LaTeX{}...
\par\noindent
et cest tout.
\end{ltxexempleii}

11

donnerait :
code \LaTeX{}...
ar\noindent
cest tout.

code LATEX... arcest tout.

La suite de la mise en page consiste en la cration du trait central.


Ceci fait lobjet du paragraphe 11.8.5 page 237. Avant cela nous nous
attarderons sur la numrotation des exemples.

11.8.4 Numrotation des exemples


4.1

Pour numroter les exemples, il est ncessaire de dclarer un


compteur :

p. 60

\newcounter{c@exemple}[chapter]
9. Je veux bien sr parler de //
vi, pardon, Emacs...

11.8 Exemples LATEX

235

qui sera donc remis zro chaque chapitre. On prcise la manire


dont il sachera lorsquon y fera rfrence :
\renewcommand{\thec@exemple}{%
\thechapter.\arabic{c@exemple}}
chaque appel lenvironnement ltxexemple, on fera appel :
\refstepcounter{c@exemple}
pour incrmenter le compteur et mettre jour le systme de rfrence. La petite bote noire que vous avez pu apercevoir au milieu
des exemples a pour largeur \l@rgeurnumex (dnie 16 points) et
est produite par :
\newcommand{\affichenumex}{%
\raisebox{-1.7pt}[0pt][0pt]{%
\setlength{\fboxsep}{.7pt}%
\colorbox{black}{%
la bote noire
\makebox[\l@rgeurnumex]{%
une bote de largeur fixe
\color{white}%
le contenu en blanc
\tiny\textsf{\thec@exemple}}}}}

La petite bote (\affichenumex)

11.34

Ainsi :
La petite bote (

11.34

Un nouvelle version de lenvironnement ltxexemple pourrait donc


tre :
\newenvironment{ltxexempleiii}{%
\VerbatimEnvironment%
\begin{VerbatimOut}[gobble=2]{\jobname.exa}}{%
\end{VerbatimOut}%
\begin{ltxexempleenv}%
\refstepcounter{c@exemple}%
incrmentation du compteur
\savebox{\b@iteentree}{ [...] }%
\savebox{\b@itesortie}{ [...] }%
\usebox{\b@iteentree}%
\kern2pt%
\parbox{3pt}{\rotatebox{90}{\affichenumex}}%
\kern2pt%
\usebox{\b@itesortie}
\end{ltxexempleenv}}%

11

De nouveaux jouets

236

11.35

qui donnera :
\setlength{\fboxsep}{-2pt}
\setlength{\fboxrule}{.5mm}
Ceci est un \fbox{EXEMPLE} idiot...

Ceci est un EXEMPLE idiot...

La dernire dicult est de grer le systme de rfrencement. En


eet, on ne peut pas crire :
Voici un exemple.\label{monexemple}.

Voici un exemple.\label{monexemple}

11.36

Car la squence \label{monexemple} apparatra dans lexemple :


Voici un exemple.

Ce qui nest pas souhaitable... La solution adopte ici a t de passer


lventuelle tiquette de \label lenvironnement par le truchement
dune commande. On a dni :
\newcommand{\l@belex}{} % la valeur courante du label
% commande pour la mettre jour
\newcommand{\labelexemple}[1]{%
\renewcommand{\l@belex}{#1}}
Ainsi avant lutilisation dun environnement ltxexemple il sura
dappeler :
\labelexemple{htiquettei}

11

pour pouvoir ensuite y faire rfrence avec \ref{htiquettei} ou


une commande quivalente. Dans la dnition de lenvironnement
ltxexemple, on a ajout :
% si le label courant n est pas vide
\ifthenelse{\equal{\l@belex}{}}{}{%
\label{\l@belex}}% on pose un label
qui signie en franais : si la commande \l@belex est dnie
une valeur non vide, on pose une tiquette (commande \label) avec
cette valeur . Il faut ensuite repositionner la commande \l@belex
une valeur vide car dans le cas contraire ltiquette serait dnie
plusieurs fois (message Label xxx multiply dened de LATEX).
On pourrait donc crire :
% si le label courant n est pas vide
\ifthenelse{\equal{\l@belex}{}}{}{%
\label{\l@belex}% on pose un label
\renewcommand{\l@belex}{}}

11.8 Exemples LATEX

237

ce qui est correct du point de vue de la syntaxe. Cependant la porte de la commande \renewcommand est ici locale au groupe dans
lequel le test \ifthenelse intervient. Pour contourner ce problme
on utilisera la construction TEX :
\global\def\l@belex{}
en lieu et place du \renewcommand pour eectuer une rednition
porte globale...

11.8.5 Le trait central


Il reste donc traiter la partie ayant pour but de tracer le vilain
trait entre les deux botes. La premire chose faire est de mesurer
la hauteur totale des deux botes, et de conserver la plus importante.
Ceci est ralis grce au code suivant :
% mesure de la bote d entre
\hauteurtotale{\tempodim}{\usebox{\b@iteentree}}%
% mesure de la bote de sortie
\hauteurtotale{\hauteurdutrait}{\usebox{\b@itesortie}}%
% on garde la plus grande
\ifthenelse{\hauteurdutrait>\tempodim}{%
\setlength{\tempodim}{\hauteurdutrait}}{}
Les dimensions \hauteurdutrait et \tempodim auront bien entendu
fait lobjet dune dclaration pralable. On peut voir une prsentation de La commande \settotoalheight au paragraphe 11.8.1.
La dimension du trait noir tracer entre lentre et la sortie
correspond exactement \hauteurtrait moins \l@rgeurnumex (la
largeur de la bote contenant le numro de lexemple). On stocke
cette dimension :
% hauteur du trait sans la bote du numro
\setlength{\hauteurdutrait}{\tempodim-\l@rgeurnumex}
Nous avons dcid aprs un vote bulletin secret en assemble gnrale, de dessiner 70% du trait au dessus du numro et 30% en
dessous. Par consquent le trait central est produit dans un \parbox
comme suit :
% le trait central
\parbox{3pt}{%
\begin{center}
% 70% au dessus

11

De nouveaux jouets

238

\rule{3pt}{.7\hauteurdutrait}\\\nointerlineskip%
\rotatebox{90}{\affichenumex}\\\nointerlineskip%
% 30% en dessous
\rule{3pt}{.3\hauteurdutrait}%
\end{center}}
La commande \nointerlineskip permet de supprimer tout blanc
vertical supplmentaire qui pourrait tre insr par la commande \\.
Plus de dtails sont donns la section prsentant limplmentation
10.7.4 de la bote avec titre pour la minitable des matires.
Voil, cest tout pour ce merveilleux
environnement \ltxenv{ltexexemple}. Notez
que la dimension \texttt{3pt} pourrait
faire lobjet de la dfinition dune
longueur...

11

11.37

p. 192

Voil, cest tout pour ce


merveilleux
environnement
ltexexemple. Notez que la dimension 3pt pourrait faire lobjet
de la dfinition dune longueur...

III
Annexes

Annexe

Sommaire
A.1
A.2
A.3
A.4
A.5

Principe gnral
Ce qui change
Trucs et astuces
Hyperliens
Interaction avec psfrag et pstricks

Gnrer des pdf

ette annexe prsente un moyen de gnrer des documents au

C format Pdf (portable document format). Ce format cr par


la socit Adobe prsente lavantage dtre eectivement portable
dun ordinateur un autre, et de manire plus gnrale, dun systme dexploitation un autre. Il est donc intressant aujourdhui
de pouvoir gnrer de tels chiers partir dun source LATEX.

241

Gnrer des pdf

242

A.1 Principe gnral


Il y a au moins trois faons de gnrer des chiers au format Pdf
partir dun document LATEX :
1. laide de pdflatex qui sutilise en lieu et place du programme
latex pour traduire le source LATEX en Pdf ;
2. laide de dvipdf permettant de traduire le chier Dvi en Pdf ;
3. laide de ps2pdf pour traduire une sortie PostScript en Pdf.
Votre serviteur qui a une certaine exprience de la premire
solution sattardera sur pdflatex. Un des pr-requis pour une
utilisation correcte de ce logiciel est
soit lutilisation du package lmodern ;
soit linstallation de lextension CM-Super font de Vladimir
Volovich. La distribution Etch de la Debian contient un paquet
prt lemploi. On peut galement trouver des documentations
sur le oube permettant dinstaller cette extension sur une distribution Debian Sarge avec teTEX (http://sravier.free.fr/
linux/debian_latex_cm-super.html).

A.2 Ce qui change


Pour compiler le chier source LATEX et produire un chier au
format Pdf, on utilisera le programme pdflatex :
pdflatex monfichier.tex

commande qui, si le document source ne contient pas derreur, crera


le chier nomm monfichier.pdf. Voici ensuite quelques remarques
importantes :
Graphiques : ils devront tre inclus au format Png ou Jpeg pour
les images et Pdf pour les dessins 1 ;
Liens : condition dinclure le package hyperref, le document Pdf
contiendra automatiquement des liens chaque occurrence de
la commande \ref, dans la table des matires, dans lindex,
etc. De plus une table des matires droulante sera gnre
pour le programme Acrobat Reader.
1. Les fichiers du logiciel Xfig peuvent tre convertis en Pdf

A.3 Trucs et astuces

243

A.3 Trucs et astuces


Puisquon gnre souvent du Dvi ou du Pdf partir du mme
source et que lon doit inclure des chiers graphiques des formats
dirents selon la situation, on utilisera le package ifpdf et lastuce
suivante :
\ifpdf
% un truc spcifique la sortie en pdf
\else
% un machin spcifique la sortie en dvi
\fi

A.3.1 Gestion des graphiques


On pourra crire ensuite quelque chose du genre :
\ifpdf
\graphicspath{{pngs/}{{pdfs/}}
\else
\graphicspath{{epss}}
\fi
Si on a pris soin de ranger les chiers graphiques dans les rpertoires pngs, pdfs et epss... Ce nouveau if permet galement des
constructions du style :
\ifpdf
\includegraphics[pdftex]{graphicx}
\else
\includegraphics{graphicx}
\fi
Ce qui ne doit pas tre ncessaire avec les dernires moutures de
LATEX.

A.3.2 Vignettes
Les versions rcentes de pdflatex permettent de crer des vignettes (thumbnail ) pour les visualiseurs evince et Acrobat Reader
pour ne citer queux. Auparavant, il tait ncessaire dutiliser le package thumbpdf :
\usepackage{thumbpdf}

Gnrer des pdf

244
puis excuter :
thumbpdf monfichier.pdf

Cette commande cre un chier nomm monfichier.tpt qui sera


inclus la compilation suivante avec pdflatex.

A.3.3 Pagination
Pour faire apparatre les numros de pages du document dans
le navigateur Acrobat Reader, il est ncessaire dajouter loption
pdfpagelabels linclusion du package hyperref (cf. suivant).

A.3.4 Signets

Les signets (bookmarks en anglais) des visualiseurs de chier pdf


sont des sortes d explorateurs de table des matires qui donnent
accs directement une section dun niveau dtermin. Il y a eu
deux dicults contourner pour produire ce manuel :
1. faire en sorte que le contenu du backmatter (biblio, glossaire, index) soit au mme niveau hirarchique que les parties
dans cet explorateur. Par dfaut, ces informations se trouvent
en eet caches dans la partie des annexes, car la mme
profondeur que les \chapters ;
2. faire en sorte que le lien vers lindex dans les signets pointe
eectivement sur lindex...
Pour rgler le premier problme, il sut de faire croire LATEX qu
partir du backmatter les chapitres sont dun mme niveau de
profondeur dans la table des matires, que les parties. Lincantation
vaudou correspondante est :
\renewcommand{\toclevel@chapter}{-1}
placer un endroit judicieux dans un chier de style. Lendroit o

10.4.4 lon rednit le \backmatter est sans nul doute un bon choix.
p. 179
Pour en finir avec les bookmarks, afin que celui de lindex pointe
effectivement sur lindex (!), on devra cette fois avoir recours
une incantation chamanique :
\let\printindexORIG\printindex
\renewcommand{\printindex}{%
\cleardoublepage
\phantomsection% cration dune fausse section
\addcontentsline{toc}{chapter}{Index}
\printindexORIG}

A.4 Hyperliens

245

permettant de surcharger la commande \printindex en y ajoutant


une fausse section laide de la commande \phantomsection fournie
avec le package hyperref. Ne men demandez pas plus :-)

A.4 Hyperliens
Le package hyperref permet dinsrer dans les chiers .dvi
et .pdf des commandes spciales qui pourront tre exploites par les
navigateurs (xdvi et Acrobat Reader entre autres). On pourra alors
cliquer sur le texte produit par les commandes telles que \ref pour
se rendre automatiquement la zone rfrence. Dans le document
que vous avez sous les yeux, la version lectronique possde des liens
sur lesquels on peut cliquer pour :
toutes les rfrences gnres par \ref, \pageref et \vref ;
les notes de bas de page ;
les url produites par la commande \url ;
les renvois bibliographiques ;
les pages pour chaque entre dindex.
Pour activer ce systme dhyperliens, on crira :
\ifpdf
\usepackage[pdftex=true,
hyperindex=true,
colorlinks=true]{hyperref}
\else
\usepackage[hypertex=true,
hyperindex=true,
colorlinks=false]{hyperref}
\fi
Ce qui fera apparatre les liens en couleur uniquement dans la version
Pdf. Ceux de la version PostScript seront quant eux produits en
noir ce qui assurera leur lisibilit si le document est imprim en noir
et blanc.
Lordre dans lequel on inclura les diffrents packages pour un
document influera sur le bon fonctionnement de lextension hyperref. Il arrive mme que lendroit choisi pour linclusion provoque une
erreur de compilation. vous de trouver la bonne squence :-)

Gnrer des pdf

246

A.5 Interaction avec psfrag et pstricks


A.5.1 pstricks
To trick en anglais, ou tricher en franais... En gros en crivant a :
Soit :
\begin{pspicture}[](-1,-1)(1,1)
\parametricplot[linewidth=.5pt,plotstyle=ccurve]%
{0}{360}{4 t mul sin 3 t mul sin}
\psgrid[gridlabels=0pt](-1,-1)(1,1)
\end{pspicture}
\quad le trac de $x=\sin(4t), y=\sin(3t)$...

On obtient a :

Soit :

le trac de x = sin(4t), y = sin(3t)...

Dingue, non ? Certes. Le principe de lextension pstricks est dinsrer du code PostScript dans le chier .dvi, code qui pourra tre
galement trait par le programme dvips. L o a se corse cest
lorsque lon veut utiliser ces bestioles avec pdflatex. En eet ce dernier crant directement un chier .pdf partir du .tex, insrer du
PostScript dans le chier au format Pdf naura aucun eet... Il est
malgr tout possible de contourner le problme :
1. gnrer dabord un document LATEX minimal contenant les
commandes pstricks ;
2. compiler ce document avec LATEX pour gnrer un .dvi ;
3. demander dvips de crer un chier au format PostScript
encapsul avec loption -E ;
4. convertir ce chier au format Pdf ;
5. inclure ce chier au moment dutiliser pdflatex.
Tout cela est videmment un peu tordu mais peut tre automatis
laide dun Makele, dun petit script Unix, et dune commande...

A.5 Interaction avec psfrag et pstricks

247

Tout dabord :
\newcommand{\includepstricksgraphics}[1]{%
\ifpdf\includegraphics{#1}\else\input{#1}\fi}
Lide est donc dextraire la portion de code contenant des commandes pstricks pour les stocker dans un chier bidule.tex, puis
lorsquon crit :
\includepstricksgraphics{bidule}
on inclura bidule.pdf si on utilise pdflatex et bidule.tex si on
utilise LATEX. Ensuite, le petit script Unix quon peut adapter
ses besoins :
#!/bin/sh
# on enlve lextension du 1er argument
FILE=${1%.*}
# cration dun fichier temporaire psttemp.tex
cat > psttemp.tex <<EOF
\documentclass{manuel}
mettre la classe et les packages adquats
\thispagestyle{empty}
\begin{document}
\input{$FILE}
\end{document}
EOF
# Cration du fichier dvi
latex psttemp
# Cration du fichier eps
dvips -E $TMPFILE.dvi -o psttemp.eps
# Cration du fichier pdf
epstopdf psttemp.eps --debug --outfile=$FILE.pdf
# effacement des fichiers temporaires
rm -f psttemp.*
Sauv sous le nom pstricks.sh, ce script peut tre invoqu comme
ceci :
./pstricks.sh bidule.tex
et cre le chier bidule.pdf que pdflatex aura la sagesse dinclure
grce la commande \includepstricksgraphics dont le code est
donn plus haut. Pour ce qui est du Makele, il nest pas trs dicile
partir du script prcdent de dnir une rgle ayant pour but de

Gnrer des pdf

248

transformer un chier .tex en un chier .pdf. Avec le version Gnu


de make, on aura quelque chose du genre :
%.pdf : %.tex
./pstricks.sh $<
Le programme dvips nest pas toujours en mesure de calculer
correctement la bote englobante pour le PostScript encapsul.
En particulier la section 41 de la documentation de pstricks 2 indique
que dvips nest pas capable de tenir compte du code postscript gnr
pour estimer cette bote englobante. Dans ce cas, il est conseill soit
dajouter du texte autour du graphique et dvips arrive sen sortir,
soit dutiliser lenvironnement TeXtoEPS. Le document temporaire du
script prcdent devient alors :
cat > psttemp.tex <<EOF
\documentclass{manuel}
\usepackage{pst-eps}
\thispagestyle{empty}
\begin{document}
\begin{TeXtoEPS}
\input{$FILE}
\end{TeXtoEPS}
\end{document}
EOF

Pour aider PSTricks calculer


la bote

A.5.2 psfrag
La limitation et le principe sont les mmes que pour pstricks. Pour
utiliser psfrag avec pdflatex, il est ncessaire de procder comme suit :

1. gnrer dabord un document LATEX minimal contenant des


commandes psfrag ;
2. compiler ce document avec LATEX pour gnrer un .dvi ;
3. demander dvips de crer un chier au format PostScript
encapsul avec loption -E ;
4. convertir ce chier au format Pdf ;
5. inclure ce chier au moment dutiliser pdflatex.
Il y a cependant un petit hic car la gure dont on calcule la bote
englobante avec dvips contient du texte gnr par psfrag indiquant
les remplacements qui seront eectus. On doit en tenir compte.
Dans le script shell, on cre une fonction :
2. http://tug.org/PSTricks

A.5 Interaction avec psfrag et pstricks


function genere_eps
{
cat > $TMPFILE.tex <<EOF
\documentclass{manuel}

249

mettre la classe et les packages qui vont bien

\thispagestyle{empty}
\begin{document}
\input{$1}
\end{document}
EOF
echo "Cration du fichier dvi"
latex $TMPFILE > $LOGFILE
echo "Cration du fichier $TMPFILE.eps"
dvips -E $TMPFILE.dvi -o $TMPFILE.eps >> $LOGFILE 2>&1
}
On utilise ensuite cette fonction par deux fois comme suit, dans le
script :
FILE=${1%.*}
TMPFILE=truc
LOGFILE=truc.log
sanspsfrag=$TMPFILE-sanspsf.tex
# on enlve les lignes contenant la commande \psfrag
# et on rcupre la bote englobante du fichier eps
# sans les psfrag
grep -v \\\\psfrag $FILE.tex > $sanspsfrag
genere_eps $sanspsfrag
bonnebb=$(grep "^%%BoundingBox" $TMPFILE.eps | head -1)
# on rcupre la bote englobante du fichier eps
# avec psfrag
genere_eps $FILE
mauvaisebb=$(grep "^%%BoundingBox" $TMPFILE.eps | head -1)
# on remplace la bote englobante par la bonne
sed -i "s/$mauvaisebb/$bonnebb/" $TMPFILE.eps
echo "Cration du fichier pdf"
epstopdf $TMPFILE.eps --debug \
--outfile=pdfs/${FILE##*/}.pdf >>

$LOGFILE 2>&1

250

Gnrer des pdf

# un petit coup de toilette


rm -f $TMPFILE.* $LOGFILE $sanspsfrag
Ce script a plusieurs limitations. Parmi elles : il chouera si une
commande \psfrag stend sur plusieurs lignes. On demande
en effet grep denlever les lignes contenant \psfrag sans vrifier que
la commande ne se termine pas une ou plusieurs lignes plus bas...

Annexe

Sommaire
B.1
B.2
B.3
B.4

Extensions
Les fichiers auxiliaires
AucTEX
Aspell

B
Mmento

ous trouverez ici quelques informations en vrac sur les ex-

V tensions de L TEX, une liste assez complte des chiers auxiA

liaires qui gravitent autour de votre chier source. Suivent quelques


explications succinctes sur ce merveilleux module dEmacs quest
AucTEX. Enn pour ceux qui ont la chance de travailler dans un environnement Unix, cette annexe sachve sur la conguration dEmacs
pour travailler avec le correcteur orthographique Aspell.

251

Mmento

252

B.1

Extensions

Comme indiqu dans la prface de ce document, TEX et LATEX


sont des systmes ouverts. Autour du noyau LATEX gravitent un certain nombre de packages standard qui constituent la base du systme. Mais tout utilisateur peut faire voluer LATEX en lui ajoutant
des fonctionnalits diverses. On trouve donc une multitude doutils sous forme dextensions (ou packages en anglais) ou sous forme
de classe de documents. Certaines sont devenues des standards,
toutes sont disponibles sur les serveurs ddis la distribution de
LATEX (cf. chapitre 8) ou sur des pages personnelles, dautres sont
fournies avec les Call for papers et autres authors guides.
Nous vous donnons ici une liste de packages classiques et
vous invitons vous rfrer la documentation qui est gnralement
jointe au package. Notez que cest le CTAN (http://www.ctan.org)
qui fait rfrence en termes de catalogue de packages.
N french

: utilis pour franciser les documents. Ne coupe


pas une phrase entre un mot et une double ponctuation. Propose aussi quelques commandes axes
sur la typographie franaise (voir chapitre 7) ;

N amsmath

: le package pour faire des formules et quations perfectionnes ;

N array

: amliore lutilisation de tabular ;

N hhline

: tend les bordures de tableaux de base de LATEX ;


: permet de personnaliser en-tte et pied de page.
Jetez un coup dil sur ceux de ce manuel ;

N fancyhdr

N varioref

: propose la commande \vref la place de \ref.


Celle-ci ajoute page suivante , page 12 , ou
rien du tout selon o se trouve lobjet rfrenc
par rapport la position du renvoi ;

N ifthen

: fournit deux structures de contrle un if then


else et un do while . Ce qui permet de faire
des commandes un peu plus volues ;

N chapterbib

: permet dinsrer une bibliographie chaque n de


chapitre ;

N overcite

: crit les citations bibliographiques sous forme dexposant ;

N bibunits

: permet de produire des bibliographies composes


de plusieurs units ;

B.2 Les fichiers auxiliaires


N fancybox

253

\shadowbox
: propose quatre variantes
de
\fbox
,

:
\doublebox , \ovalbox et \Ovalbox
.

N algorithms

: pour crire des algorithmes sous la forme dun environnement qui peut tre ottant ou non ;

N geometry

: une extension permettant de changer les marges et


la plupart des dimensions intervenant au niveau de
la page, de manire assez souple ;

N url

: permet dcrire des adresses sous forme dune url,


la csure est gre pour le mieux ;

N fancyvrb

: propose une version amliore de lenvironnement


verbatim ;

B.2

Les fichiers auxiliaires

Voici la liste des chiers que vous pourrez trouver sur votre disque
ct de votre document source. Ces chiers portent tous une extension de trois lettres, les voici 1 :
tex

chier source LATEX ;

aux

chier auxiliaire que LATEX utilise pour rsoudre les rfrences, entre autres ;

log

le chier de trace (dit log file en anglais) contenant les infos


de la compilation ;

dvi

chier device independant, qui va pouvoir tre ach ou


imprim selon la situation ;

toc

chier contenant la table des matires (initiales de table of


contents) ;

lof

chier contenant la liste des gures (list of figure);

lot

chier contenant la liste des tables ;

bib

chier source BibTEX contenant des entres de bibliographie ;

bbl

chier contenant la bibliographie, peut tre gnr partir


de BibTEX ;

blg

chier trace de BibTEX ;

1. Certains packages crent leur propres fichiers auxiliaires comme le package


minitoc et la classe lettre ; ils ne sont pas mentionns dans cette liste.

Mmento

254
idx

chier des entres dindex non tries ;

ind

chier contenant lindex, gnralement gnr par makeindex ;


chier trace de makeindex ;

ilg

chier contenant des dnitions de commandes modiant la


mise en page, ou fournissant des outils particuliers ;
cls chier denissant une classe.
Pour archiver un document LATEX,
Vous pouvez effacer : tous les chiers auxiliaires, les chiers log,
ainsi que les chiers de tables des matires et listes de gures
et tables.
Vous pouvez aussi effacer : le chier bbl si vous tes capable de
le gnrer partir dun chier bib et BibTEX. Les chiers
dindex peuvent gnralement tre eacs puisquils sont en
principe produits par makeindex. Le chier dvi nest pas indispensable puisque vous tes cens avoir le source LATEX
Vous devez garder : le source LATEX et les ventuels chiers de
styles que vous avez dnis (sty et cls) ; mais si vous en tes
au stade de la dnition de classe, le conseil est probablement
un peu saugrenu...
sty

B.3

AucTEX

AucTEX est un module dEmacs qui facilite la saisie de documents


LATEX. Il est automatiquement charg lorsquon ouvre un document
portant lextension .tex, .sty ou .cls. On peut distinguer trois
types daide dans AucTEX :
1. laide au formatage du source (couleur, indentation,...)
2. les raccourcis clavier pour insrer des commandes ou des environnements,
3. laide la compilation.

B.3.1

Formatage du source

Les couleurs et la touche tab jouent le mme rle que dans un


buer C ou C++. On notera que M-q formate un paragraphe, c.-d., dcoupe automatiquement le paragraphe en lignes de longueurs
peu prs gales.

B.3 AucTEX

B.3.2

255

Raccourcis

fontes
C-c C-f (Changer Fonte) suivi de :
C-e insre \emph{}
C-b insre \textbf{}
C-t insre \texttt{}
C-s insre \textsl{}
C-c insre \textsc{}
...
Section
C-c C-s insre une Section en vous demandant son niveau, son
titre et son label dans le minibuer.
Commandes et Environnement
M-Tab tente de complter le nom en cours (automatic completion).
C-c RET insre une commande.
C-c C-e insre un Environnement 2 .
C-u C-c C-e change un environnement.
C-c ] ferme un environnement en ajoutant la commande \end qui
manque.

B.3.3

Compilation

C-c C-c tente de suivre le cycle de compilation dun document, en


lanant suivant la situation, LATEX, BibTEX, xdvi,... Notez aussi que
AucTEX permet de grer le mcanisme du document matre (cf. 6.4).
Pour cela il vous demandera de saisir le nom du document matre
lorsque vous ouvrirez un nouveau document dans Emacs. Dans le
cas contraire il faudra expliquer gentiment AucTEX qui est le document matre avec :
M-x TeX-master-file-ask ou C-c _

vous devrez alors saisir le nom du chier matre. En agissant ainsi,


lorsque vous lancerez une compilation avec C-c C-c sur un des
documents esclaves , cest sur le master quelle agira.
2. Pour certains environnements et certaines commandes dont la syntaxe
est connue par AucTEX il vous sera demand quelques prcisions (valeurs des
arguments, lgendes, format du tableau,...).

Mmento

256

B.4 Aspell
Aspell est un correcteur orthographique multilingue quon peut
interfacer avec lditeur de texte tout faire Emacs. Pour lutiliser
dans Emacs, deux commandes connatre :
M-x ispell-change-dictionary

selectionne la langue du dictionnaire (francais ou english), et :


M-x ispell-buffer

commence une session de correction sur le buer. Il est galement


possible de vrier lorthographe dun seul mot avec la commande :
M-x ispell-word ou M-$
lheure o jcris ces lignes, la distribution Debian ne configure
pas Emacs pour utiliser le programme Aspell par dfaut. Il faut
donc ajouter dans votre fichier .emacs, la ligne :
(setq-default ispell-program-name "aspell")

Il est particulirement utile de noter que lon peut congurer le programme Aspell pour lui demander explicitement dignorer ou non les
arguments des commandes LATEX. On pourra par exemple ne pas
vrier largument dune commande ne contenant pas de franais.
Ainsi, si lon dnit la commande :
\newcommand{\bidule}[2]{% commande prenant 2 arguments
... }
Il sura dcrire dans son chier ~/.aspell.conf :
add-tex-command bidule pP

pour demander Aspell de vrier le second paramtre (P), mais


dignorer le contenu du premier (p). Pour ignorer les deux, on aurait
crit :
add-tex-command bidule pp
Enn, Emacs dispose galement dun mode de correction de mot
la vole 3 quon peut activer ou dsactiver avec la commande :
M-x flyspell-mode
3. Daucuns diront la ourde ...

Annexe

Sommaire
C.1 Symboles standard
C.2 Symboles de lAMS
C.3 Symboles du package textcomp

C
Symboles

ous trouverez dans cette annexe, une liste de tous les sym-

V boles mathmatiques disponibles dans L TEX. Nous avons spar


A

ces symboles en quatre catgories :


les symboles standard du tableau C.1 au tableau C.10 ;
les symboles de LATEX disponibles avec le package latexsym
donns par le tableau C.11 ;
les symboles de lAmerican Mathematical Society disponibles
avec le package amssymb, du tableau C.12 au tableau C.19 ;
les symboles disponibles avec le package textcomp (tableaux
C.20 et C.21);
les symboles des fontes PostScript bien connues ZapfDingbats
et Symbol. Les symboles de ces fontes sont accessibles en
incluant le package pifont et en utilisant la commande :
\Pisymbol{pzd}{hnumroi}
pour les symboles de la fonte Zapf, et :
\Pisymbol{psy}{hnumroi}
pour ceux de la fonte Symbol. Le nombre hnumroi est le
numro de la case correspondant au symbole choisi dans la
table C.22 page 266 ou C.23.

257

Symboles

258

C.1 Symboles standard


\alpha
\epsilon
\theta
\lambda
o
\varrho
\upsilon
\psi

Table C.1: Les lettres grecques.


\beta
\gamma

\varepsilon
\zeta

\vartheta
\iota

\mu
\nu

\pi
\varpi

\sigma
\varsigma
\phi
\varphi

\omega

\Gamma
\Xi
\Phi

\Delta
\Pi
\Psi

\pm
\mp
\times
\div
\ast
\star
\circ
\bullet

\sum
\bigcap
\bigodot
\oint

Table
\cdot
\cap
\cup
\uplus
\sqcap
\sqcup
\vee
\wedge

C.2:

\Theta
\Sigma
\Omega

Les oprateurs binaires.


\setminus
\
\wr

\diamond

\bigtriangleup

\bigtriangledown
\triangleleft

\triangleright

\oplus

\delta
\eta
\kappa
\xi
\rho
\tau
\chi

\Lambda
\Upsilon

\ominus
\otimes
\oslash
\odot
\bigcirc
\dagger
\ddagger
\amalg

Table C.3: Les symboles de taille variable.


P
Q
`
T \prod
S \coprod
F \int
\bigcup
\bigsqcup
J
N
L \bigvee
\bigotimes
\bigoplus
\biguplus
H
\bigwedg
Table C.4: Les points.

\ldots

...

\cdots

\vdots

..
.

\ddots

..

R
W
U

259

\leq
\prec
\preceq
\ll
\subset
\subseteq
\sqsubseteq
\in
\vdash

\leftarrow
\Leftarrow
\rightarrow
\Rightarrow
\leftrightarrow
\Leftrightarrow
\mapsto
\hookleftarrow
\leftharpoonup
\leftharpoondown

\aleph
\hbar
\imath
\jmath
\ell
\wp
\Re
\Im

Table C.5:
\geq
\succ
\succeq
\gg
\supset
\supseteq
\sqsupseteq
\ni
\dashv

Les relations.
\equiv
\sim
 \simeq
\asymp
\approx
\cong
\neq

\doteq

\propto

Table C.6: Les ches.


\longleftarrow
\Longleftarrow
\longrightarrow
\Longrightarrow
\longleftrightarrow
\Longleftrightarrow
\longmapsto
\hookrightarrow
\rightharpoonup
\rightharpoondown

\prime
\emptyset
\nabla
\surd
\top
\bot
\|
\angle

Table C.7: Divers.

\forall

\exists

\neg
\flat
\natural
\sharp
k
\backslash
\partial

=
6=
.
=

\models
\perp
\mid
\parallel
\bowtie
\smile
\frown

|=

|
k

\uparrow
\Uparrow
\downarrow
\Downarrow
\updownarrow
\Updownarrow
\nearrow
\searrow
\swarrow
\nwarrow

\infty
\triangle
\clubsuit
\diamondsuit
\heartsuit
\spadesuit

l
m

Symboles

260

\arccos
\arcsin
\arctan
\arg

\uparrow
\{
\lfloor
\langle
|

\cos
\cosh
\cot
\coth

h
|

\rmoustache
\arrowvert

Table C.8:
\csc \exp
\deg \gcd
\det \hom
\dim \inf

Les fonctions.
\ker
\limsup
\lg
\ln
\lim
\log
\liminf \max

Table C.9: Les dlimiteurs.


\Uparrow \downarrow

\}
} \updownarrow l
\rfloor
\lceil

\rangle
i /
/
\|
k

Table C.10: Les


\lmoustache
|
\Arrowvert

\min
\Pr
\sec
\sin

\sinh
\sup
\tan
\tanh

\Downarrow
\Updownarrow
\rceil
\backslash

grands
dlimiteurs.

\rgroup

k
\bracevert

\lgroup

C
\lhd
\sqsubset
\Box

Table C.11: Les


\rhd
\sqsubset
 \Diamond

symboles de latexsym
\unlhd
E \unrhd
\Join

\mho
\leadsto

261

C.2 Symboles de lAMS


Table C.12: Les ches de lAMS
\dashrightarrow
99K \dashleftarrow
\leftrightarrows

\Lleftarrow
\leftarrowtail

\looparrowleft
\curvearrowleft
x
\circlearrowleft
\upuparrows

\upharpoonleft
\multimap

\leftrightsquigarrow
\rightleftarrows

\rightrightarrows
\twoheadrightarrow
\rightarrowtail
\rightleftharpoons
\curvearrowright
\Rsh

\downdownarrows
\downharpoonright

\rightsquigarrow
\circlearrowright

\upharpoonright
\leftleftarrows

\twoheadleftarrow
\leftrightharpoons
\Lsh
\downharpoonleft

\rightrightarrows
\rightleftarrows

\looparrowright

L99

"

y


Symboles

262

Table C.13: Les relations de lAMS


\leq
\leqslant
\lesssim
. \lessapprox
\lessdot
\lll
\lesseqgtr
\lesseqqgtr
\risingdotseq
: \fallingdotseq
\backsimeq
\subseteqq
\sqsubset
\preccurlyeq
\precsim
- \precapprox
\trianglelefteq
E \vDash
\smallsmile
` \smallfrown
\Bumpeq
\geqq
\eqslantgtr
1 \gtrsim
\gtrdot
\ggg
\gtreqless
R \gtreqqless
\circeq
\triangleq
\thickapprox
\supseteqq
\sqsupset
\succcurlyeq
\succsim
% \succapprox
\trianglerighteq D \Vdash
\shortparallel
q
\between
\varpropto
\blacktriangleleft
\backepsilon

\blacktriangleright
\eqslantless
0 \approxeq
\lessgtr
\doteqdot
\backsim
\Subset
\curlyeqprec
2 \vartriangleleft
\Vvdash
 \bumpeq
\geqslant
> \gtrapprox
\gtrless
\eqcirc
\thicksim
\Supset
\curlyeqsucc
3 \vartriangleright
\shortmid
p
\pitchfork
\therefore
\because

6
/

S
;
j
4
w

a

&

T
,
k
<
v

'

263

Table C.14: Ngations de ches de lAMS


\nleftarrow
8 \nrightarrow
9 \nLeftarrow
\nRightarrow ; \nleftrightarrow = \nLeftrightarrow

\digamma

Table C.15: Lettres grecques et hbraques de lAMS


\varkappa \beth i \daleth k \gimel

\ulcorner

Table C.16: Dlimiteurs de lAMS


\urcorner q \llcorner x

Table C.17: Ngations de relations


\nless
\nleq

\nleqq
 \lneq

\lvertneqq
\lnsim

\nprec
\npreceq

\precnapprox
 \nsim

\nmid

\nvdash
0
\ntriangleleft
\ntrianglelefteq 5
\subsetneq
( \varsubsetneq
\varsubsetneqq
& \ngtr

\ngeqslant
\ngeqq

\gneqq
\gvertneqq

\gnapprox
\nsucc

\succnsim
 \succnapprox

\nshortparallel /
\nparallel

\nVDash
3 \ntriangleright

\nsupseteq
+ \nsupseteqq
#
\varsupsetneq
! \supsetneqq
%

\lrcorner

de lAMS
\nleqslant
\lneqq
\lnapprox
\precnsim
\nshortmid
\nvDash
\nsubseteq
\subsetneqq
\ngeq
\gneq
\gnsim
\nsucceq
\ncong
\nvDash
\ntrianglerighteq
\supsetneq
\varsupsetneqq

:
<


.
2
*
$





2
4
)
'

Symboles

264

Table C.18: Oprateurs binaires de lAMS


\dotplus
\smallsetminus r \Cap
\Cup
\barwedge
\veebar
\doublebarwedge
[ \boxminus
\boxtimes
\boxdot
\boxplus
\divideontimes
\ltimes
\rtimes
\leftthreetimes
\rightthreetimes \curlywedge
f \curlyvee
\circleddash
\circledast
\circledcirc
\symcenterdot
\intercal

\hbar
\triangledown
\circledS
\nexists
\Game
\varnothing
\blacksquare
\sphericalangle
\diagup

Table C.19: Symboles divers


~
\hslash

\square

s \angle

\mho

a \Bbbk
k
\blacktriangle N
 \blacklozenge

\complement

 \diagdown


de lAMS
\vartriangle
\lozenge
\measuredangle
\Finv
\backprime
\blacktriangledown
\bigstar
\eth

>

`
8
H

C.3 Symboles du package textcomp

Table C.20: Symboles du package textcomp.


\textacutedbl

\textascendercompwordmark
\textasciiacute

\textasciibreve
\textasciicaron

\textasciidieresis
\textasciigrave
`
\textasciimacron
\textasterisksymcentered
\textbaht
\textbardbl

\textbigcircle
\textblank

\textborn
\textbrokenbar

\textbullet
\textcapitalcompwordmark
\textcelsius
\textcent

\textcentoldstyle
\textcircledP
\textcolonmonetary
\textcopyleft
\textcopyright
\textcurrency

\textdagger
\textdaggerdbl

\textdblhyphen
\textdblhyphenchar

\textdegree

265
Table C.21: Symboles du package textcomp (suite).
\textdied
d
\textdiscount
\textdiv

\textdivorced
\textdollar
$
\textdollaroldstyle
\textdong

\textdownarrow
\texteightoldstyle

\textestimated
\texteuro

\textfiveoldstyle
\textflorin

\textfouroldstyle
\textfractionsolidus

\textgravedbl
\textguarani

\textinterrobang

\textinterrobangdown
\textlangle

\textlbrackdbl
\textleaf
l \textleftarrow
\textlira

\textlnot
\textlquill

\textmarried
\textmho

\textminus
\textmu

\textmusicalnote
\textnaira

\textnineoldstyle
\textnumero
\textohm
\textonehalf

\textoneoldstyle
\textonequarter

\textonesuperior
\textopenbullet

\textordfeminine
\textordmasculine

\textparagraph
\textperiodsymcentered
\textpertenthousand
\textperthousand
\textpeso
\textpilcrow

\textpm
\textquotesingle
'
\textquotestraightbase
\textquotestraightdblbase
\textrangle
\textrbrackdbl

\textrecipe
\textreferencemark

\textregistered
\textrightarrow
\textrquill
\textsection

\textservicemark
\textsevenoldstyle

\textsixoldstyle
\textsterling

\textsurd
\textthreeoldstyle

\textthreequarters
\textthreequartersemdash

\textthreesuperior
\texttildelow
~
\texttimes
\texttrademark

\texttwelveudash
\texttwooldstyle

\texttwosuperior
\textuparrow

\textwon
\textyen

\textzerooldstyle

%

Symboles

266

Table C.22: La fonte Zapf Dingbats

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

267

Table C.23: La fonte Symbol


0

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

&

48

49

64

80

96

65

81

97

34

35

50

51

66

82

98

67

83

99

36

52

37

54

69

100

53

68

84

38

85

101

39

56

71

102

55

70

86

40

87

103

41

57

72

73

88

104

89

105

42

43

44

<

45

46

>

47

58

59

60

61

62

63

74

90

106

75

91

107

76

92

108

77

93

109

78

94

110

79

95

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

176

192

177

193

162

178

194

179

195

180

196

181

197

182

198

183

199

184

200

185

201

186

171

187

202

203

172

188

204

189

205

190

206

191

207

218

219

220

221

222

223

240

241

242

243

244

245

246

247

248

249

234

250

235

251

236

252

237

253

175

217

233

174

216

232

173

215

231

170

214

230

169

213

229

168

212

228

167

211

227

166

210

226

165

209

225

164

208

224

163

238

254

239

255

Annexe

Sommaire
D.1 Distribution du moment
D.2 Les sources du manuel
D.3 Compilation

Notes de production

ai rassembl ici des lments permettant dexploiter les sources

J de ce document, comment les compiler, avec quelle distribution


de LATEX, comment les chiers sont organiss, etc.

269

Notes de production

270

D.1

Distribution du moment

Le prsent ouvrage a t compil sur la distribution Ubuntu 12.04


avec la distribution TEXlive 2013. Toute autre exprience fructueuse
sur des systmes dirents est bien entendu la bienvenue... De plus
pour la gnration du document au format pdf, seule la famille Computer Modern dans sa version CM-Super a t teste.

D.2

Les sources du manuel

D.2.1 Structure
Les sources du manuel sont organises selon le principe suivant :
sources LATEX dans le rpertoire corps avec un chier par
chapitre ;
les styles (sty et cls) dans le rpertoire styles ;
les images dans un rpertoire pngs ;
le rpertoire texs contient des sources LATEX inclure dans
le document (modles de lettre, de fax, code contenant des
appels Psfrag ou Pstricks) ;
les sources xfig dans le rpertoire figs ;
tout ce qui a trait lindex, la bibliographie et au glossaire
est stock dans le rpertoire bibidx ;
Les sources xfig et certains bouts de chiers LATEX sont traduits
au format pdf, postscript encapsul ou non, par un makele les stockant :
dans le rpertoire epss
dans le rpertoire pdfs
dans le rpertoire pss
selon le moteur utilis (latex ou pdflatex).

D.2.2 Styles

Le chier framabook.cls contient la dnition de la classe du


manuel. Ce chier fait appel une srie de packages du commerce
et une srie de packages maison . On trouve, pour ces derniers,
un chier source pour :
chaque nouveau jouet : onglets, nota, sommaire, glossaire,
bote avec un titre (titlebox.sty), exemples, lettrine, renvois (voir.sty), citations et pigraphes
le sommaire

D.3 Compilation

271

la gomtrie globale du document


lallure des en-ttes et pieds de pages
lallure des sections/chapitres/etc.
des commandes en vrac utilises dans le document (dans le
chier manumac.sty)
Sauf indication contraire, ces chiers portent un nom ressemblant
trangement ce quils contiennent.

D.3

Compilation

Dans le chier matre framabook.tex on peut stipuler en option


de classe :
versionenligne pour gnrer un chier visualiser avec des
hyperliens en couleur ;
versionpapier pour gnrer une version destine tre imprime puis massicote.
Le prsent manuel a t compos en se basant sur un support
papier diffrent du format A4. Par consquent si vous ne possdez pas de massicot, le document rsultant sera visuellement assez
laid. Une solution consiste se procurer les versions imprimables sur
papier A4 depuis le site http://www.enise.fr/cours/info.

D.3.1 Makefile
Larborescence racine des sources contient un chier Makele
pour le manuel, quil faut copier :
cp Makefile.frama Makefile

D.3.2 Figures
Les gures peuvent tres compiles grce aux commandes :
make figs
Il faut disposer du logiciel transfig connexe xfig pour traduire
les sources en pdf et eps. Sur le site http://cours.enise.
fr/info/latex est disponible une archive contenant les figures dj
traduites...

Notes de production

272

D.3.3 Dvi et postscript


latex framabook
make bibindex
latex framabook
latex framabook
dvips framabook -o framabook

D.3.4 Pdf
Rien de particulier
pdflatex framabook
make bibindex
pdflatex framabook
pdflatex framabook

D.3.5 Nettoyage de printemps


En bref :
make cleanfigs
make cleantex
make cleandocs

efface tous les eps/pdfs/...


efface tous les fichiers auxiliares
efface tous les documents
gnrs (dvi/ps/pdf/...)

Bibliographie
[1] the UK List of TEX Frequently Asked Questions on the Web .
une mine dinformations en anglais, disponible http://www.
tex.ac.uk/cgi-bin/texfaq2html, listant les fameuses questions
frquemment poses sur TEX & LATEX (contrairement ce que
le titre indique).

[2] Jacques Andr. Petites leons de typographie . 1990.


On doit pouvoir trouver ce document lurl http://jacques-andre.
fr Il sagit dun article intressant sur la typographie avec beaucoup
dexemples sur lemploi des majuscules, la ponctuation, lusage du
soulign et les caractres franais.

[3] W. Appel, E. Chevalier, E. Cornet, Desreux S., Fleck J.J., and Pichaureau P.. LATEX pour limpatient. In Technique
et pratique. H & K, 2007.
[4] Denis Bitouz and Jean-Cme Charpentier. LATEX. In Collection Synthex. Pearson Education France, September 2006.
[5] M. Goossens, S. Rahtz, and F. Mittelbach. The LATEX
Graphics Companion. Addison-Wesley, 1997.
Par les auteurs du LATEX Companion, un livre sur lutilisation des
graphiques au sens large du terme, avec notamment une exploration
des packages permettant de dessiner avec LATEX et une prsentation
de lutilisation des fontes Postscript.

273

274

Bibliographie

[6] Michel Goossens, Franck Mittelbach, and Alexander Samarin. The LATEX companion. Addison-Wesley, 1994.
LA bible de LATEX2 et de ses packages. Ce livre qui est un must
pour tout utilisateur qui veut comprendre les fonctions internes de
LATEX contient des informations trs prcises sur : la manire de
personnaliser les mises en page par dfaut, lutilisation des fontes,
moult packages, etc.

[7] Lexique des rgles typographiques en usage lImprimerie nationale , 1990.


Il sagit de lensemble des rgles qui sont appliques dans les livres
produits par lImprimerie nationale. Ce lexique est prsent sous la
forme de thmes classs par ordre alphabtique. Cest une source
dinformations intressante puisquelle fait rfrence dans limprimerie franaise.

[8] D. E. Knuth. The Art of Computer Programming, volume 13.


Addison-Wesley, 199798.
Trois volumes sur lart de programmer . Un quatrime tome
est en prparation. Cet ensemble de livres a t accueilli par la
communaut scientifique comme un des ouvrages les plus importants de ce sicle (cf. http://www.amsci.org/amsci/bookshelf/
centurylist.html ce sujet et http://www-cs-staff.stanford.
edu/~knuth/taocp.html sur la page web de Knuth pour plus dinfo
sur TAOCP ).

[9] Donald E. Knuth. The TEXBook. Addison-Wesley, 1988.


LA bible de TEX. Un livre plein de virages dangereux expliquant
trs prcisment le fonctionnement interne de TEX. Cest un ouvrage
de rfrence assez difficile lire et qui ne constitue pas une introduction TEX destine aux dbutants mon avis.

[10] Leslie Lamport. LATEX : A Document Preparation System.


Addison-Wesley, 2eedition, 1994.
Le livre de lauteur de LATEX dans sa seconde dition couvrant
LATEX 2 . Bien videmment une trs bonne introduction, avec en fin
douvrage un guide de rfrence des commandes.

[11] Vincent Lozano. Tout ce que vous avez toujours voulu savoir
sur Unix sans jamais oser le demander , 2006. http://www.
enise.fr/cours/info/unix.
[12] Lars Madsen. Avoid eqnarray ! . The PracTEX Journal, (4),
2006.

Bibliographie

275

Un article recensant les pourquoi ne pas utiliser cet environnement. Larticle doit tre disponible http://home.imf.au.dk/
daleif.

[13] Yves Perrousseaux. Manuel de typographie franaise lmentaire. Atelier Perrousseaux, 1995.
Un petit livre trs pdagogique sur la typographie, contenant un
historique trs intressant, et une liste de rgles en usage dans le
monde de la typographie.

[14] Mark Trettin.


LATEX . 2004.

Une liste des pchs des utilisateurs de

Ce document connu sous le nom l2tabu, traite des commandes et


extensions obsoltes, et quelques autres erreurs .

Glossaire
Compilation
Mme si ce terme nest pas trs rigoureux dun point de
vue scientique, on appelle compilation la phase permettant
de traduire le source LATEX en un chier au format DVI ou
PDF.
Document matre
Cest le document source qui contient le begin{document}
dans le contexte dun document divis en plusieurs chiers.
Document source
Un document texte contenant le texte et les commandes
LATEX. TEX Cest le document ne pas perdre car il est
la source de la production papier, cran, etc. au mme titre
quun code source en langage C est la source dun programme
excutable.
Dvi
Format de chier Device Independent mis au point par
277

278

Glossaire
Knuth de manire crer, partir du document source, un
document dont le format est indpendant de la plateforme et
du matriel.

Fichiers auxiliaires
Les chiers produits par LATEX lors dune compilation. Ils
portent le nom du document source, et ont une extension de
trois lettres rappelant leur rle.
Format
Cest un ensemble de commandes ou macro prcompiles
et stockes dans un chier portant gnralement lextension
.fmt. Les plus connus de ces ensembles sont le format plain
de TEX et le format LATEX.
Macro
Cest loutil permettant de faire faire des choses compliques LATEX en passant en ordre simple. Les macros, appeles aussi commandes, ressemblent un peu aux routines des
langages de programmation.
PDF
Pour portable document format, format de chier cr par la
socit Adobe, dont le but est de pouvoir changer facilement
des documents dun systme un autre. Le format PDF peut
tre cr de plusieurs faons partir dun source LATEX(cf. A
page 241).
PostScript
Langage dni par la socit Adobe pour dcrire un document destin limpression. Ce langage compos de primitives de bas niveau peut tre interprt par des logiciels pour
raliser des aperus avant impression ou directement par des
circuits lectroniques embarqus sur les imprimantes pour gnrer limage imprimer.

Glossaire

279

Rfrences
Systme proposant de manipuler les numros des paragraphes, quations, chapitres, etc. de manire symbolique, permettant de saranchir de la dicult de les mettre jour
lorsque lon change la mise en page.
LATEX
Cest lensemble de macros dni par Leslie Lamport au
dessus de TEX. La version utilise aujourdhui est LATEX 2 .
TEX
Le moteur de base, LATEX tant un ensemble de macros
formant une surcouche. La version de TEX est stabilise la
version 3.14159, chaque nouvelle version Knuth ajoute une
dcimale.

Index
A

Symboles
. . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Q
. . . . . . . . . . . . . . . . . . . . . . . . . . 48
P
. . . . . . . . . . . . . . . . . . . . . . . . . . 48
\( . . . . . . . . . . . . . . . . . . . . . . . . . 140
\) . . . . . . . . . . . . . . . . . . . . . . . . . 140
\, . . . . . . . . . . . . . . . . . . . . . . . . . . 49
\- . . . . . . . . . . . . . . . . . . . . . . . . . . 40
... extension . . . . . . . . . . . . . . . . 149
\/ . . . . . . . . . . . . . . . . . . . . . . . . . . 22
\= . . . . . . . . . . . . . . . . . . . . . . . . . . 26
@ . . . . . . . . . . . . . . . . . . . . . . . . . 138
\[ . . . . . . . . . . . . . . . . . . . . . . . . . . 44
$ . . . . . . . . . . . . . . . . . . . . . . . 12, 44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
TEXnicCenter . . . . . . . . . . . . . . . . . 4
TEXshop . . . . . . . . . . . . . . . . . . . . . 4
\] . . . . . . . . . . . . . . . . . . . . . . . . . . 44
R

a4wide extension . . . . . . . . . . xvii


accents . . . . . . . . . . . . . . . . . . . . . 14
et fontes . . . . . . . . . . . . . . 112
mathmatique . . . . . . . . . 50
saisie . . . . . . . . . . . . . . . . . . 14
sur les majuscules . . . . . 117
accolades . . . . . . . . . . . . . . . . . . . 53
Acrobat Reader . . . 242, 243, 245
acrobat reader . . . . . . . . . . . . . . . . 6
\acute . . . . . . . . . . . . . . . . . . . . . 50
\addcontentsline . . . . . . . . 219
\addpages . . . . . . . . . . . . . . . . 120
\address . . . . . . . . . . . . . 100, 118
\addtocounter . . . . . . . . . . . . . 61
\addtolength . . . . . . . . . . . . . . 65
\AE . . . . . . . . . . . . . . . . . . . . . . . .114
\ae . . . . . . . . . . . . . . . . . . . . . . . .114
algorithms extension . . . . . . . . 253
align envir. . . . . . . . . . . . . 55, 56
align* envir. . . . . . . . . . . . . . . . 56

281

282
alignement
droite . . . . . . . . . . . . . . . . 24
gauche . . . . . . . . . . . . . . . 24
\Alph . . . . . . . . . . . . . . . . . . . . . . 62
\alph . . . . . . . . . . . . . . . . . . . . . . 62
\alpha . . . . . . . . . . . . . . . . . . . . . 47
amsmath extension . . . . . . 43, 52,
5456, 58, 252
amssymb extension . . vi, 43, 46,
47, 201, 257
\AND . . . . . . . . . . . . . . . . . . . . . . 140
\appendix . . . . . . . . . . . . . . . . 230
\arabic . . . . . . . . . . . . . . . . . . . . 62
\arccos . . . . . . . . . . . . . . . . . . . 260
\arcsin . . . . . . . . . . . . . . . . . . . 260
\arctan . . . . . . . . . . . . . . . . . . . 260
\arg . . . . . . . . . . . . . . . . . . . 48, 260
argument
de commandes . . . . . . . . . 80
optionnel . . . . . . . . . . . 11, 81
array extension . . . . . . . . . 27, 252
array envir. . . . . . . . . . . . . 52, 53
article
rdaction . . . . . . . . . . . . . 100
style . . . . . . . . . . . . . . . . . . 100
Aspell . . . . . . . . . . . . . . . . .251, 256
aspell . . . . . . . . . . . . . . . . . . . . . . . vi
AucTEX . . . . . . . . . . . . . . . . . . . . 251
AucTEX . . . . . 101, 103, 254, 255
\author . . . . . . . . . . . . . . . . . . . 100

B
babel extension . . . . 15, 111116,
172, 184, 187, 188
\backmatter . . . . 110, 182, 244
\bar . . . . . . . . . . . . . . . . . . . . . . . 50
\baselineskip longueur . . . 64,
195
bash . . . . . . . . . . . . . . . . . . . . . . . . 83
bbm extension . . . . . . . . . . . . . . .47

Index
bbold extension . . . . . . . . . . . . . 47
beton extension . . . . . . . . . . . . 147
\bfseries . . . . . . . . . . . . . . . . . 20
BibTEX . . . . . . . . . . . . . . . . . . . . 105
BIBINPUTS
variable denvironnement 105
bibliographie
article . . . . . . . . . . . . . . . . 102
citations . . . . . . . . . . . . . . 103
confrence . . . . . . . . . . . . 103
livre . . . . . . . . . . . . . . . . . . 103
saisie . . . . . . . . . . . . . . . . . 101
style . . . . . . . . . . . . . . . . . . 101
alpha, 104
plain, 104
unsrt, 104
\bibliography . . . . . . . . . . . . 104
\bibliographystyle . . . . . . 104
\bibname . . . . . . . . . . . . . . . . . .182
BibTEX . . . . . . 100106, 253255
bibunits extension . . . . . . . . . . 252
bidouillage . . . . . . . . . . . . . . . . 138
bidule extension . . . . . . . . . . . . 157
\bidule . . . . . . . . . 137, 139, 214
bmatrix envir. . . . . . . . . . . . . . .54
\boiteentreeglossaire . . 222
book.cls . . .165, 166, 168, 169,
171, 173, 182, 218, 229
bookmarks . . . . . . . . . . . 189, 244
bote
bordure . . . . . . . . . . . . . . . . 73
dimensions . . . . . . . . . . . . . 65
et csure . . . . . . . . . . . . . . . 41
exemples . . . . . . . . . . . . . . . 70
paragraphe . . . . . . . . . . . . .76
positionnement . . . . . . . . .73
sauvegarde . . . . . . . . . . . . . 78
simple . . . . . . . . . . . . . . . . . 72
Bravo . . . . . . . . . . . . . . . . . . . . . . xii
\breve . . . . . . . . . . . . . . . . . . . . . 50
brouillon mode . . . . . . . . . . . . . 39

Index
\bsc . . . . . . . . . . . . . . . . . . . . . . 116
\bwarg . . . . . . . . . . . . . . . . . . . . 198
\bwmarg . . . . . . . . . . . . . . . . . . . 198

C
cadre de bote . . . . . . . . . . . . . . 73
cadrechap envir. . . . . . . . . . . 169
calc extension . . . . . . . . . . . . . . . 84
\caption . . . . . . . . 33, 34, 36, 63
caractre
dchappement . . . . . . . . . 12
spciaux . . . . . . . . . . . . . . . 12
caractre @ . . . . . . . . . . . . . . . . 138
\cdots . . . . . . . . . . . . . . . . . . . . . 46
center envir. . . . . . . . . . . . 24, 28
\centering . . . . . . . . . . . . . . . . 24
centrage . . . . . . . . . . . . . . . . . . . . 24
changebar extension . . . . . . . . 138
\chapter . . . . 30, 110, 168, 219,
230, 244
\chapter* . . . . . . . . . . . . . . . . 169
chapterbib extension . . . . . . . . 252
\chaptermark . . . . . . . . . . . . . 179
\check . . . . . . . . . . . . . . . . . . . . . 50
chngpage extension . . . . 144, 201
citations . . . . . . . . . . . . . . . 28, 103
\cite . . . . . . . . . . . .101, 103, 104
\cleardoublepage . . . . 41, 177
\clearpage . . . . . . . . . . . . . . . . 40
\closing . . . . . . . . . . . . . . . . . .119
codage
iso-latin1 . . . . . . . . . . . . . 112
OT1 . . . . . . . . . . . . . . . . . . 112
T1 . . . . . . . . . . . . . . . . . . . . 112
\colarg . . . . . . . . . . . . . . . . . . . 198
\colorbox . . . . . . . . . . . .226, 228
commande
appel . . . . . . . . . . . . . . . . . . 13
dnitions . . . . . . . . . . . . . 79
rednition . . . . . . . . . . . . 82

283
commentaires . . . . . . . . . . . . . . . 12
compilation . . . . . . . . . . . . . . . . . . 7
et rfrences . . . . . . . . . . . 36
compteur
achage . . . . . . . . . . . . . . . 61
manipulation . . . . . . . . . . .60
\conc . . . . . . . . . . . . . . . . . . . . . 118
concrete . . . . . . . . . . . . . . . . . . . 147
\contentsname . . . . . . . . . . . . 182
convert . . . . . . . . . . . . . . . . . . 86, 97
\cos . . . . . . . . . . . . . . . . . . . 48, 260
\cosh . . . . . . . . . . . . . . . . . . . . . 260
\cot . . . . . . . . . . . . . . . . . . . . . . 260
\coth . . . . . . . . . . . . . . . . . . . . . 260
courrier . . . . . . . . . . . . . . . . . . . 118
\creerlettrine . . . . . . . . . . 216
\csc . . . . . . . . . . . . . . . . . . . . . . 260
csure . . . . . . . . . . . . . . . . . . . . . . 38

D
\date . . . . . . . . . . . . . . . . . . . . . 100
date du jour . . . . . . . . . . . . . . . . 15
\ddot . . . . . . . . . . . . . . . . . . . . . . 50
\ddots . . . . . . . . . . . . . . . . . . . . . 46
\DeclareFixedFont . . . . . . . 150
\DefineVerbatimEnvironment 185
\deg . . . . . . . . . . . . . . . . . . . . . . 260
\degres . . . . . . . . . . . . . . . . . . . 114
depth . . . . . . . . . . . . . . . . . . . . . 193
\depth longueur . . . . . . . . . . . . 78
description envir. . . . . . . . . . 25
dessin . . . . . . . . . . . . . . . . . . . . . . 85
\det . . . . . . . . . . . . . . . . . . . . . . 260
\dim . . . . . . . . . . . . . . . . . . . . . . 260
dimension dun objet . . . . . . . 65
displaymath envir. . . . . . 44, 54
\displaystyle . . . . . . . . . . . . . 57
diviser document . . . . . . . . . . 109
docstrip extension . . . . . . . . . . . 92
document

284
diviser . . . . . . . . . . . . . . . . 109
document envir. . . . . . . . . . . . . 23
documentation . . . . . . . . . . . . 124
\documentclass . . . . . . . . . 9, 10
\dominitoc . . . . . . . . . . . . . . . 189
\dot . . . . . . . . . . . . . . . . . . . . . . . 50
\dotfill . . . . . . . . . . . . . . . . . . . 69
\dots . . . . . . . . . . . . . . . . . . . . . . 46
\doublebox . . . . . . . . . . . . . . . 253
\dp . . . . . . . . . . . . . . . . . . . . . . . .232
draft option de classe . . . . . . 39
dvipdf . . . . . . . . . . . . . . . . . . . . . 242
dvips . . . . . . . . 8, 87, 92, 246, 248
dviwin . . . . . . . . . . . . . . . . . . . . . . 87
dnition . . . . . . . . . . . . . . . . . . . 79
commandes . . . . . . . . . . . . 79
environnement . . . . . . . . . 81
dlimiteurs . . . . . . . . . . . . . . . . . 53

E
e dans la . . . . . . . . . . . . . . . . . . 114
dition . . . . . . . . . . . . . . . . . . . . . . .6
eepic extension . . . . . . . . . . . . . . 98
\em . . . . . . . . . . . . . . . . . . . . . . . . . 21
Emacs . . . 7, 101, 103, 185, 186,
234, 251, 254256
emacs . . . . . . . . . . . . . . . vi, xvi, 4
emacscom envir. . . . . . . . . . . . 185
\emph . . . . . . . . . . 12, 21, 22, 146
emphase fontes . . . . . . . . . . . . . 22
emTEX . . . . . . . . . . . . . . . . . . . . . . 87
\encl . . . . . . . . . . . . . . . . . . . . . 118
\enlargethispage . . . . . . . . . 41
\enspace . . . . . . . . . . . . . . . . . . . 69
\ensuremath . . . . . . . . . . 80, 142
\entreeglossaire . . . . . . . . 223
entte . . . . . . . . . . . . . . . . . . . . . . 31
enumerate envir. . . . . . . . .25, 35
environnement
dnition . . . . . . . . . . . . . . 81

Index
rednition . . . . . . . . . . . . 82
environnements
TeXtoEPS . . . . . . . . . . . . . 248
VerbatimOut . . . . . . . . . 231
align* . . . . . . . . . . . . . . . . .56
align . . . . . . . . . . . . . . 55, 56
array . . . . . . . . . . . . . . 52, 53
bmatrix . . . . . . . . . . . . . . . 54
cadrechap . . . . . . . . . . . . 169
center . . . . . . . . . . . . . 24, 28
description . . . . . . . . . . .25
displaymath . . . . . . . 44, 54
document . . . . . . . . . . . . . . 23
emacscom . . . . . . . . . . . . . 185
enumerate . . . . . . . . . 25, 35
epigraphe . . . . . . . . . . . . 209
eqnarray . . . . . . . . .xvii, 55
equation . . . . . . . . . . . . . . 55
ficaux . . . . . . . . . . . . . . . 155
figure . . 3235, 88, 89, 91
flushleft . . . . . . . . . . . . . 24
flushright . . . . . . . . . . . . 24
hyperref . . . . . . . . . . . . . 245
itemize . . . . . . . . . . . . 25, 77
letter . . . . . . . . . . . . . . . 120
list . . . . . 84, 151153, 207
lrbox . . . . . . . . . . . . 159161
ltexexemple . . . . . . . . . 238
ltxexempleenv . . . . . . . 233
ltxexemple 189, 231, 232,
235, 236
minipage . . . . . . . 77, 78, 91
picture . . . . . . . . . . . . 86, 98
pmatrix . . . . . . . . . . . . . . . 54
question . . . . . . . . . . . . . 157
quotation . . . . . . . . . 28, 29
quote . . . . . . . . . . . . . . 28, 29
split . . . . . . . . . . . . . . . . . . 56
subfigure . . . . . . . . . . . . . 91
tabbing . . . . . . . . . . . . . . . 26
table . . . . . . . . . . 32, 33, 35

Index
tabular 26, 27, 52, 76, 252
telefax . . . . . . . . . . . . . . 120
thebibliography . . . . 100,
105, 182
theglossary . . . . . . . . . 221
theindex . . . . . . . . . . . . . 182
unixcom . . . . . . . . . . . . . . 185
verbatim . . . . .28, 185, 253
wrapfigure . . . . . . . . . . . . 91
epic extension . . . . . . . . . . . . . . . 98
epigraphe envir. . . . . . . . . . . 209
eqnarray envir. . . . . . . . xvii, 55
\equal . . . . . . . . . . . . . . . . . . . . 140
equation
quation
multiligne, 55
\equation . . . . . . . . . . . . . . . . . 36
equation envir. . . . . . . . . . . . . 55
quation . . . . . . . . . . . . . . . . . . . . 44
erreurs
corrections . . . . . . . . . . . . . 17
de compilation . . . . . . . . . 16
messages . . . . . . . . . . . . . . . 16
escape char . . . . . . . . . . . . . . . . . 13
espace . . . . . . . . . . . . . . . . . . . . . . 68
dans le source . . . . . . . . . . 12
horizontale . . . . . . . . . . . . . 69
inscable . . . . . . . . . . . 13, 41
mathmatiques . . . . . . . . . 51
prdnie . . . . . . . . . . . . . . 69
verticale . . . . . . . . . . . . . . . 70
esvect extension . . . . . . . . . . . . . 50
tiquette . . . . . . . . . . . . . . . . . . . 35
\etiquettequestion . . . . . . 157
eurosym extension . . . . . . . . . . 116
even . . . . . . . . . . . . . . . . . . . . . . . 176
evince . . . . . . . . . . . . . . . . .68, 243
\exp . . . . . . . . . . . . . . . . . . . . . . 260
exposant . . . . . . . . . . . . . . . . 13, 44
extensions
... . . . . . . . . . . . . . . . . . . . 149

285
TikZ . . . . . . . . . . . . . . . . . . . 98
a4wide . . . . . . . . . . . . . . .xvii
algorithms . . . . . . . . . . . 253
amsmath 43, 52, 5456, 58,
252
amssymb . . . . vi, 43, 46, 47,
201, 257
array . . . . . . . . . . . . . 27, 252
babel . . . 15, 111116, 172,
184, 187, 188
bbm . . . . . . . . . . . . . . . . . . . . 47
bbold . . . . . . . . . . . . . . . . . . 47
beton . . . . . . . . . . . . . . . . . 147
bibunits . . . . . . . . . . . . . 252
bidule . . . . . . . . . . . . . . . 157
calc . . . . . . . . . . . . . . . . . . . 84
changebar . . . . . . . . . . . . 138
chapterbib . . . . . . . . . . . 252
chngpage . . . . . . . . 144, 201
docstrip . . . . . . . . . . . . . . 92
eepic . . . . . . . . . . . . . . . . . . 98
epic . . . . . . . . . . . . . . . . . . . 98
esvect . . . . . . . . . . . . . . . . .50
eurosym . . . . . . . . . . . . . . 116
fancybox . . . . . . . . . 80, 253
fancyhdr . . . . 32, 175, 176,
182, 225, 226, 252
fancyvrb . . . 163, 183, 185,
187, 231, 253
french . . vi, 112, 115, 188,
252
geometry . . . 173, 175, 253
graphics . . . . . . . . . . . . . . 87
graphicx . . .75, 87, 89, 94,
124, 226
hhline . . . . . . . . . . . . . . . 252
hyperref . . . 242, 244, 245
ifpdf . . . . . . . . . . . . . . . . . 243
ifthen . . 84, 139, 140, 252
latexsym . . . . .46, 257, 260
lettrine . . . . . . . . . . . . . 115

286

Index
listings 28, 183, 186, 187
lmodern . . . . . . . . . . . . . . 242
mathpazo . . . . . . . . . . . . . 149
mathptmx . . . . . . . . 145, 149
mini-toc . . . . . . . . . . . . . 189
minitoc . . . . . . . . . 196, 253
newcent . . . . . . . . . 145, 149
overcite . . . . . . . . . . . . . 252
packages . . . . . . . . . . . . . xvi
pifont . . . . . . . . . . . . . . . 257
psfrag . . . . . . . . 92, 93, 248
pstricks . . . . . 98, 246248
subfig . . . . . . . . . . . . . . . . .90
textcomp . . . 116, 257, 264,
265
thumbpdf . . . . . . . . . . . . . 243
times . . . . . . . . . . . . . . . . . 145
url . . . . . . . . . . . . . . . . . . . 253
varioref . . . . . . . . 199, 252
wrapfig . . . . . . . . . . . . 91, 92
xcolor . . . . . . . . . . . . 94, 212
textcomp . . . . . . . . . . . . . 257
inclusion . . . . . . . . . . . . . . . 10
options . . . . . . . . . . . . . . . . 11

F
faire-tant-que . . . . . . . . . . . . . . . 84
fancybox extension . . . . . .80, 253
\fancyfoot . . . . . . . . . . . . . . . 176
fancyhdr extension 32, 175, 176,
182, 225, 226, 252
\fancyhead . . . . . . . . . . . . . . . 175
fancyvrb extension . . . . 163, 183,
185, 187, 231, 253
fax . . . . . . . . . . . . . . . . . . . . . . . . 118
\fax . . . . . . . . . . . . . . . . . . . . . . 118
\fbox . . . . . . . . . 73, 77, 160, 253
\fboxrule longueur . . . 73, 193
\fboxsep longueur 73, 94, 193,
194, 226, 228

\fg . . . . . . . . . . . . . . . 15, 115, 188


ficaux envir. . . . . . . . . . . . . . . 155
chier
.aux . . . . . . . . . . . . . . . . . . . 36
.bbl . . . . . . . . . . . . . . . . . . 105
.bib . . . . . . . . 101, 103, 104
.blg . . . . . . . . . . . . . . . . . . 105
.dvi . . . . . . . . . . . . . . . . 7, 36
.lof . . . . . . . . . . . . . . . 34, 36
.log . . . . . . . . . . . . . . . . . . . 36
.lot . . . . . . . . . . . . . . . . . . . 34
.pdf . . . . . . . . . . . . . . . . . . . . 7
.toc . . . . . . . . . . . . . . . 36, 37
auxiliaire . . . . . . . . . . . . . . .36
graphique . . . . . . . . . . . . . . 86
postscript . . . . . . . . . . . . . . . 7
source . . . . . . . . . . . . . . . . . . . 9
chiers
book.cls . . . 165, 166, 168,
169, 171, 173, 182, 218,
229
gglo.ist . . . . . . . . . . . . . 221
glossaire.ist . . . . . . . 224
ind.dvi . . . . . . . . . . . . . . 166
latex.ltx . . 177, 219, 231
newcent.sty . . . . . . . . . 149
fig2dev . . . . . . . . . . . . . . . . . . . . . 97
gure . . . . . . . . . . . . . . . . . . . 33, 85
et mathmatiques . . . . . . 92
incruste . . . . . . . . . . . . . . . 91
liste de . . . . . . . . . . . . . . . . . 34
placement . . . . . . . . . . . . . . 33
figure envir. 3235, 88, 89, 91
\fill . . . . . . . . . . . . . . . . . . . 67, 70
flushleft envir. . . . . . . . . . . . 24
flushright envir. . . . . . . . . . . 24
ches . . . . . . . . . . . . . . . . . . . . . . 46
fonction mathmatiques . . . . 47
\fontencoding . . . . . . . . . . . . 150
fontes
correction italique . . . . . . 21

Index
emphase . . . . . . . . . . . . . . . 22
gras . . . . . . . . . . . . . . . . . . . . 22
machine crire . . . . 20, 23
mathmatiques . . . . . . . . . 56
mise en vidence . . . . . . . 20
penche . . . . . . . . . . . . . . . . 21
petites majuscules . . 20, 23
sans srif . . . . . . . . . . . . . . . 21
soulign . . . . . . . . . . . . . . . . 23
taille . . . . . . . . . . . . . . . 22, 23
usage . . . . . . . . . . . . . . . . . . 22
\fontfamily . . . . . . . . . . . . . . 150
\fontseries . . . . . . . . . . . . . . 150
\fontshape . . . . . . . . . . . . . . . 150
\fontsize . . . . . . . . . . . . . . . . 150
\footnote . . . . . . . . . . 31, 62, 77
\footnotemark . . . . . . . . . . . . . 31
\footnotesize . . . . . . . . . . . . . 22
\footnotetext . . . . . . . . . . . . . 31
\footrulewidth . . . . . . . . . . 175
format
chiers graphiques . . . . . 86
\frac . . . . . . . . . . . . . . . . . . . . . . 45
fraction . . . . . . . . . . . . . . . . . . . . . 45
\fraction . . . . . . . . . . . . . . . . . 81
\framebox . . . . . . . . . . . . . 73, 190
french extension . . . vi, 112, 115,
188, 252
\frontmatter . . . 110, 181, 230

G
\Gamma . . . . . . . . . . . . . . . . . . . . . 47
\gcd . . . . . . . . . . . . . . . . . . . . . . 260
geometry extension 173, 175, 253
\geometry . . . . . . . . . . . . . . . . 173
gglo.ist . . . . . . . . . . . . . . . . . .221
ghostscript . . . . . . . . . . . . . . . . . . . 6
ghostview . . . . . . . . . . . . . . . . . . . 76
gimp . . . . . . . . . . . . . . . . . . . . 86, 87
glossaire . . . . . . . . . . . . . . . . . . . 109

287
glossaire.ist . . . . . . . . . . . . 224
\glurps . . . . . . . . . . . . . . 213, 216
gnuplot . . . . . . . . . . . . . . . . . . . . . 86
graphics extension . . . . . . . . . . . 87
graphicx extension . . . 75, 87, 89,
94, 124, 226
graphique . . . . . . . . . . . . . . . . . . 85
et mathmatiques . . . . . . 92
gras fontes . . . . . . . . . . . . . . . . . . 22
\grave . . . . . . . . . . . . . . . . . . . . . 50
grep . . . . . . . . . . . . . . . . . . . . . . . 250
groupes . . . . . . . . . . . . . . . . . . . . .21
groupes de discussion . . . . . . 126
gsview . . . . . . . . . . . . . . . . . . . . . . . 4
guillemets . . . . . . . . . . . . . 15, 115
gv . . . . . . . . . . . . . . . . . . . . . . . . . . 76

H
\hat . . . . . . . . . . . . . . . . . . . . . . . 50
\hauteurboitetitre longueur 193
\hauteurdutrait longueur 237
\hauteurtrait longueur . . 237
\hbox . . . . . . . . . . . . . 39, 135, 190
\headrulewidth . . . . . . . . . . 175
height . . . . . . . . . . . . . . . . . . . . . 193
\height longueur . . . . . . . . . . .78
\hfill . . . . . . . . . . . . . 29, 69, 190
hhline extension . . . . . . . . . . . . 252
\hline . . . . . . . . . . . . . . . . . . . . . 27
\hom . . . . . . . . . . . . . . . . . . . . . . 260
\hrule . . . . . . . . . . . . . . . . . . . . 190
\hrulefill . . . . . . . . . . . . . . . . 69
\hspace . . . . . . . . . . . . . . . . . . . . 75
\hspace* . . . . . . . . . . . . . . . . . . . 68
\ht . . . . . . . . . . . . . . . . . . . . . . . .232
\Huge . . . . . . . . . . . . . . . . . . . . . . 22
\huge . . . . . . . . . . . . . . . . . . . . . . 22
hyperref extension 242, 244, 245
\hyperref . . . . . . . . . . . . . . . . 202
hyperref envir. . . . . . . . . . . . 245

288
hyphenation . . . . . . . . . . . . . . . . . 6
\hyphenation . . . . . . . . . . . . . . 40

I
iTEXmax . . . . . . . . . . . . . . . . . . . . . 4
\ieme . . . . . . . . . . . . . . . . . . . . . 114
\ier . . . . . . . . . . . . . . . . . . . . . . 114
ifpdf extension . . . . . . . . . . . . . 243
ifthen extension . . . 84, 139, 140,
252
\ifthenelse . . . . . . . . . 142, 237
\ignorespaces . . . . . . . 137, 211
image . . . . . . . . . . . . . . . . . . . 85, 87
\imath . . . . . . . . . . . . . . . . . . . . . 50
impression . . . . . . . . . . . . . . . . . . . 8
\include . . . . . . . . . . . . . 109, 110
\includegraphics . . . . . . 8890
\includeonly . . . . . . . . . . . . . 109
\includepstricksgraphics 247
inclusion
dextensions . . . . . . . . . . . . 10
dimages . . . . . . . . . . . . . . . 87
de graphiques . . . . . . . . . . 87
ind.dvi . . . . . . . . . . . . . . . . . . . 166
index . . . . . . . . . . . . . . . . . . . . . 106
\index . . . . . . . . . . . . . . . . . . . . 106
\indexname . . . . . . . . . . . . . . . 182
\indexspace . . . . . . . . . . . . . . 165
indice . . . . . . . . . . . . . . . . . . . 13, 44
\indletB longueur . . . 215, 216,
218
\indletH longueur . . . 215, 216
\indnota longueur . . . . . . . . 206
\inf . . . . . . . . . . . . . . . . . . . 48, 260
Inkscape . . . . . . . . . . . . . . . . . . . . 97
\input . . . . . . . . . . . . . . . . 83, 110
\InputIfFileExists . . . . . . 224
\institut . . . . . . . . . . . . . . . . 119
\int . . . . . . . . . . . . . . . . . . . . . . . 58
intgrale . . . . . . . . . . . . . . . . . . . . 48

Index
\isodd . . . . . . . . . . . . . . . 140, 203
italique fontes . . . . . . . . . . . . . . 22
\item . . . . . . . . . . . . . . . . . . . . . 221
\itemindent longueur 151154
itemize envir. . . . . . . . . . . 25, 77
\itemsep longueur . . . 153, 154,
159
\itshape . . . . . . . . . . . . . . . . . . . 20

J
\jmath . . . . . . . . . . . . . . . . . . . . . 50
\jobname . . . . . . . . . . . . . . . . . .224

K
kdvi . . . . . . . . . . . . . . . . . . . . . . . . . 6
\ker . . . . . . . . . . . . . . . . . . . . . . 260
\kern . . . . . . . . . . . . . . . . 188, 193
kile . . . . . . . . . . . . . . . . . . . . . . . . . . 4
\kill . . . . . . . . . . . . . . . . . . . . . . 26

L
\Lab . . . . . . . . . . . . . . . . . . . . . . . 80
\label 35, 36, 56, 102, 144, 236
\labelsep longueur . . 152154,
158
\labelwidth longueur 152154
\langle . . . . . . . . . . . . . . . 53, 198
\LARGE . . . . . . . . . . . . . . . . . . . . . 22
\Large . . . . . . . . . . . . . . . . . . . . . 22
\large . . . . . . . . . . . . . . . . . . . . . 22
\largeurboitetitre longueur 193,
194
\larligB longueur . . . . . . . . 215
\larligH longueur . . . 215, 216
latex . . . . . . . . . . . . . . . . . . . . . . . 242
latex.ltx . . . . . . . 177, 219, 231
latexsym extension . 46, 257, 260

Index
\lceil . . . . . . . . . . . . . . . . . . . . . 53
\ldots . . . . . . . . . . . . . . . . . . . . . 15
\leaders . . . . . . . . . . . . . 190, 191
\leavevmode . . . . . . . . . . . . . . 135
\left . . . . . . . . . . . . . . . . . . . . . . 54
\leftmargin longueur 152154,
208
\leftmark . . . . . . . . . . . .178, 179
\lengthtest . . . . . . . . . . . . . . 140
\let . . . . . . . . . . . . . . . . . .139, 199
letter envir. . . . . . . . . . . . . . . 120
lettres grecques . . . . . . . . . . . . . 47
lettrine . . . . . . . . . . . . . . . . . . . . 115
lettrine extension . . . . . . . . . . . 115
\lettrine . . . . . . . . . . . .216, 217
\lfloor . . . . . . . . . . . . . . . . . . . . 53
\lg . . . . . . . . . . . . . . . . . . . . . . . .260
\lieu . . . . . . . . . . . . . . . . . . . . . 118
like this . . . . . . . . . . . . . . . . . . . xvi
\lim . . . . . . . . . . . . . . . . . . . 58, 260
\liminf . . . . . . . . . . . . . . . . . . . 260
limite . . . . . . . . . . . . . . . . . . . . . . .49
\limsup . . . . . . . . . . . . . . . . . . . 260
\linebreak . . . . . . . . . . . . . 40, 41
\linewidth longueur . . . . . . . 67
linux . . . . . . . . . . . . . . . . . . . . . . . . . 8
list envir. . . . 84, 151153, 207
liste . . . . . . . . . . . . . . . . . . . . .25, 84
ditems . . . . . . . . . . . . . . . . 25
des gures . . . . . . . . . . . . . 34
des tables . . . . . . . . . . . . . . 34
description . . . . . . . . . . . . . 25
enumration . . . . . . . . . . . 25
listings extension . . 28, 183, 186,
187
\listoffigures . . . . . . . 34, 218
\listoftables . . . . . . . . . . . . . 34
\listparindent longueur 152,
154
livres . . . . . . . . . . . . . . . . . . . . . . 124
lmodern extension . . . . . . . . . . 242

289
\ln . . . . . . . . . . . . . . . . . . . . 48, 260
\log . . . . . . . . . . . . . . . . . . . 48, 260
logiciels connexes
TEXnicCenter . . . . . . . . . . . . 4
TEXshop . . . . . . . . . . . . . . . . . 4
Acrobat Reader . . 242, 243,
245
acrobat reader . . . . . . . . . . . 6
Aspell . . . . . . . . . . . . 251, 256
aspell . . . . . . . . . . . . . . . . . . .vi
AucTEX . . . . . . . . . . . . . . . 251
bash . . . . . . . . . . . . . . . . . . . 83
BibTEX . . . . . . . . . . . . . . . .105
BibTEX . 100106, 253255
Bravo . . . . . . . . . . . . . . . . . .xii
convert . . . . . . . . . . . . . 86, 97
dvipdf . . . . . . . . . . . . . . . . .242
dvips . . . 8, 87, 92, 246, 248
dviwin . . . . . . . . . . . . . . . . . . 87
Emacs . . . . 7, 101, 103, 185,
186, 234, 251, 254256
emacs . . . . . . . . . . . vi, xvi, 4
evince . . . . . . . . . . . . 68, 243
fig2dev . . . . . . . . . . . . . . . . . 97
ghostscript . . . . . . . . . . . . . . 6
ghostview . . . . . . . . . . . . . . 76
gimp . . . . . . . . . . . . . . . 86, 87
gnuplot . . . . . . . . . . . . . . . . .86
grep . . . . . . . . . . . . . . . . . . 250
gsview . . . . . . . . . . . . . . . . . . . 4
gv . . . . . . . . . . . . . . . . . . . . . 76
iTEXmax . . . . . . . . . . . . . . . . .4
Inkscape . . . . . . . . . . . . . . . .97
kdvi . . . . . . . . . . . . . . . . . . . . . 6
kile . . . . . . . . . . . . . . . . . . . . . . 4
latex . . . . . . . . . . . . . . . . . . 242
linux . . . . . . . . . . . . . . . . . . . . 8
luaTEX . . . . . . . . . . . . . . . . 112
lualatex . . . . . . . . . . . . . . . . . .7
make . . . . . . . 85, 95, 96, 248
makebst . . . . . . . . . . . . . . . 101

290
makeindex . . . . . . . 106108,
164166, 220223, 254
metafont . . . . . . . . . . . . . . . 86
pdflatex . . . . . . . 7, 242244,
246248
pdftex . . . . . . . . . . . . . . . . .112
ps2pdf . . . . . . . . . . . . . . . . 242
psfrag . . . . . . . 241, 246, 248
pstricks . . . . . . 241, 246, 248
texmaker . . . . . . . . . . . . . . . . 4
texture . . . . . . . . . . . . . . . . . 87
transfig . . . . . . . . . . . . . . . 271
vi . . . . . . . . . . . . . . . . . . . . . . . 4
xdvi . . . . 6, 76, 87, 245, 255
xeTEX . . . . . . . . . . . . . . . . . 112
xelatex . . . . . . . . . . . . . . . . . . 7
Xfig . . . . . . . . . . . . . . . . . . . 242
xfig . . . . . . . 86, 97, 270, 271
xpdf . . . . . . . . . . . . . . . . . . . . .6
yap . . . . . . . . . . . . . . . . . . . . . .6
longueurs . . . . . . . . . . . . . . . . . . . 63
manipulation . . . . . . . . . . .64
prdnies . . . . . . . . . . . . . 64
lastiques . . . . . . . . . . . . . . 66
lrbox envir. . . . . . . . . . . 159161
ltexexemple envir. . . . . . . . . 238
\ltxcom . . . . . . . . . . . . . . . . . . . 199
ltxexemple envir. . . . 189, 231,
232, 235, 236
ltxexempleenv envir. . . . . . 233
\ltxpack . . . . . . . . . . . . . 157, 199
luaTEX . . . . . . . . . . . . . . . . . . . . .112
lualatex . . . . . . . . . . . . . . . . . . . . . . 7

M
machine crire fontes . . . . . 23
macro . . . . . . . . . . . . . . . . . . . . . . 79
dnitions . . . . . . . . . . . . . 79
rednition . . . . . . . . . . . . 82
Magma . . . . . . . . . . . . . . . . . . . . . 89

Index
\mainmatter . . . . 110, 169, 181
majuscules . . . . . . . . . . . . . . . . 116
make . . . . . . . . . . . 85, 95, 96, 248
\makeatletter . . . . . . . . . . . . 139
\makeatother . . . . . . . . . . . . . 139
\makebox . . . 72, 73, 75, 79, 190
makebst . . . . . . . . . . . . . . . . . . . 101
makefile . . . . . . . . . . . . . . . . . . . 95
\makeglossary . . . . . . . . . . . . 220
\makeindex . . . . . . . . . . . . . . . 107
makeindex . . . 106108, 164166,
220223, 254
\makelabel . . . . . .152, 154, 157
\maketitle . . . . . . . . . . . . . . . 100
\MakeUppercase . . . . . . . . . . 182
\marg . . . . . . . . . . . . . . . . 185, 199
marge
changements de . . . . . . . 253
note de . . . . . . . . . . . . . . . . 29
\marginpar . . . . . . . . . . . . . . . . 29
\markboth . . . . . . . . . . . .177, 178
\markright . . . . . . . . . . 177, 178
\mathbb . . . . . . . . . . . . . . . . . . . . 47
\mathbbm . . . . . . . . . . . . . . . . . . . 47
\mathbbmss . . . . . . . . . . . . . . . . 47
\mathbf . . . . . . . . . . . . . . . . 47, 56
\mathcal . . . . . . . . . . . . . . . . . . . 56
\mathit . . . . . . . . . . . . . . . . . . . . 56
mathpazo extension . . . . . . . . 149
mathptmx extension . . . 145, 149
\mathrm . . . . . . . . . . . . . . . . . . . . 56
\mathsf . . . . . . . . . . . . . . . . . . . . 56
\mathtt . . . . . . . . . . . . . . . . . . . . 56
mathmatiques
et dnitions de commande
80
fonctions . . . . . . . . . . . . . . . 47
fontes . . . . . . . . . . . . . . . . . . 56
formules . . . . . . . . . . . . . . . 54
modes . . . . . . . . . . . . . . . . . 44
style . . . . . . . . . . . . . . . . . . . 57

Index
symboles . . . . . . . . . . . . . . . 45
matrice . . . . . . . . . . . . . . . . . . . . . 53
\max . . . . . . . . . . . . . . . . . . . 48, 260
\mbox . 41, 52, 72, 79, 135, 161,
190
\mdseries . . . . . . . . . . . . . . . . . 20
metafont . . . . . . . . . . . . . . . . . . . . 86
\min . . . . . . . . . . . . . . . . . . . 48, 260
mini-toc extension . . . . . . . . . . 189
minipage envir. . . . . . 77, 78, 91
minitoc extension . . . . . . 196, 253
\minitoc . . . . . . . . . . . . . . . . . .189
mode
brouillon . . . . . . . .10, 39, 90
recto verso . . . . . . . . . . . . . 10

N
\newboolean . . . . . . . . . . . . . . 140
newcent extension . . . . . 145, 149
newcent.sty . . . . . . . . . . . . . . 149
\newcommand . . . 58, 79, 81, 213
\newcounter . . . . . . . . . . 60, 143
\newenvironment . . . . . .81, 186
\newlength . . . . . . . . . . . . . . . . 64
\newsavebox . . . . . . . . . . . . . . . 78
newsgroup . . . . . . . . . . . . . . . . . 126
\No . . . . . . . . . . . . . . . . . . . . . . . .114
\no . . . . . . . . . . . . . . . . . . . . . . . .114
\NoAutoSpaceBeforeFDP . . 113
\nocite . . . . . . . . . . . . . . . . . . . 104
\nointerlineskip . . . 195, 238
\nolimits . . . . . . . . . . . . . . . . . 58
\nolinebreak . . . . . . . . . . . . . . 41
\nonumber . . . . . . . . . . . . . . . . . 55
\nopagebreak . . . . . . . . . . . . . . 41
\normalfont . . . . . . . . . . . . . . 198
\normalsize . . . . . . . . . . . . . . . 22
\NOT . . . . . . . . . . . . . . . . . . . . . . 140
\not . . . . . . . . . . . . . . . . . . . . . . . 49
note de bas de page . . . . . . . . .31

291
\nouppercase . . . . . . . . . . . . . 182
numrotation . . . . . . . . . . . . . . . 60

O
odd . . . . . . . . . . . . . . . . . . . . . . . 176
\OE . . . . . . . . . . . . . . . . . . . . . . . .114
. . . . . . . . . . . . . . . . . . . . . . . . . . 114
\oe . . . . . . . . . . . . . . . . . . . . . . . .114
\og . . . . . . . . . . . . . . . 15, 115, 188
\oint . . . . . . . . . . . . . . . . . . . . . . 49
\onglet . . . . . . . . . . . . . . 226, 229
\ongletfont . . . . . . . . . . . . . . 226
\opening . . . . . . . . . . . . . . . . . .119
options
de graphicx . . . . . . . . . . . 89
de classe . . . . . . . . . . . . . . . 10
oprateur \not . . . . . . . . . . . . . . 49
\OR . . . . . . . . . . . . . . . . . . . . . . . .140
\Ovalbox . . . . . . . . . . . . . . 80, 253
\ovalbox . . . . . . . . . . . . . . . . . .253
overcite extension . . . . . . . . . . 252
overfull . . . . . . . . . . . . . . . . . . . . . 38
\overrightarrow . . . . . . . . . . 50
OzTEX . . . . . . . . . . . . . . . . . . . . . . 87

P
packages extension . . . . . . . . . xvi
\padnota longueur . . . . . . . . 207
\pagebreak . . . . . . . . . . . . . 40, 41
\pagenumbering . . . . . . . . . . 181
\pageref . . . . . . . . . . . . . . 35, 245
\pagestyle . . . . . . . . . . . . . . . . 32
\par . . . . . . . . . . . . . . . . 12, 24, 70
\paragraph . . . . . . . . . . . . . . . . 30
paragraphe
sparation . . . . . . . . . . . . . 66
\parbox . 7678, 192, 193, 202,
237
parenthses . . . . . . . . . . . . . . . . . 53

292
\parindent longueur . . 78, 211
\parindent . . . . . . . . . . . . . 64, 65
\parsep longueur . . . . . 153, 154
\parshape . . 204, 205, 213, 215
\parskip . . . . . . . . . . . . . . . 64, 66
\part . . . . . . . . . . . . . 30, 171, 173
\partopsep longueur . 153, 154
pdflatex . . . 7, 242244, 246248
pdftex . . . . . . . . . . . . . . . . . . . . . 112
petites majuscules fontes . . . 23
\phantomsection . . . . . . . . . 245
\pi . . . . . . . . . . . . . . . . . . . . . . . . . 47
picture envir. . . . . . . . . . . 86, 98
pied de page . . . . . . . . . . . . . . . . 31
pifont extension . . . . . . . . . . . . 257
pmatrix envir. . . . . . . . . . . . . . .54
points . . . . . . . . . . . . . . . . . . . . . . 69
points de suspension . . . . 15, 46
positionnement de bote . . . . 73
PostScript . . . 4, 68, 76, 85, 86,
92, 145, 150, 245, 246,
248, 257
\Pr . . . . . . . . . . . . . . . . . . . . . . . .260
prambule . . . . . . . . . . . . . . . 9, 10
\primo . . . . . . . . . . . . . . . . . . . . 114
\printindex . . . . 106, 107, 245
\prod . . . . . . . . . . . . . . . . . . . . . . 48
produit . . . . . . . . . . . . . . . . . . . . . 48
\protect . . . . . . . . . . . . . . . . . .199
ps2pdf . . . . . . . . . . . . . . . . . . . . . 242
psfrag extension . . . . 92, 93, 248
\psfrag . . . . . . . . . . . . . . . . 92, 93
psfrag . . . . . . . . . . . . 241, 246, 248
pstricks extension . . 98, 246248
pstricks . . . . . . . . . . 241, 246, 248

Q
\qquad . . . . . . . . . . . . . . . . . 51, 69
\quad . . . . . . . . . . . . . . . . . . . 51, 69
\quarto . . . . . . . . . . . . . . . . . . . 114

Index
question envir. . . . . . . . . . . . 157
quotation envir. . . . . . . . .28, 29
quote envir. . . . . . . . . . . . . 28, 29

R
racine . . . . . . . . . . . . . . . . . . . . . . 45
\raggedleft . . . . . . . . . . . . . . . 24
\raggedright . . . . . . . . . . . . . . 25
\raisebox . . . . . . . . . 73, 74, 228
\rangle . . . . . . . . . . . . . . . 53, 198
\rceil . . . . . . . . . . . . . . . . . . . . . 53
recto verso . . . . . . . . . . . . . . . . . 10
rednitions . . . . . . . . . . . . . . . . 82
\ref . . . . . . . . . 35, 242, 245, 252
\reflectbox . . . . . . . . . . . . . . 226
\renewcommand . . . . 58, 82, 237
\renewenvironment . . . . . . . . 82
ressort . . . . . . . . . . . . . . . . . . . . . . 66
\rfloor . . . . . . . . . . . . . . . . . . . . 53
\right . . . . . . . . . . . . . . . . . . . . . 54
\right. . . . . . . . . . . . . . . . . . . . . 54
\rightmargin longueur . . . 152,
154
\rightmark . . . . . . . . . . 178, 179
\rmfamily . . . . . . . . . . . . . . . . . 20
\Roman . . . . . . . . . . . . . . . . . . . . . 62
\roman . . . . . . . . . . . . . . . . . . . . . 62
\rotatebox . . . . . . . . . . . . . . . . 75
rotation
de botes . . . . . . . . . . . . . . . 75
de graphiques . . . . . . . . . . 89
\rule . . . . . . . . . . . . . . . . . . . . . . 86
rfrence . . . . . . . . . . . . . . . . . . . 34
aux subfigures . . . . . . . . 91
et chier auxiliaires . . . . 36
non dnie . . . . . . . . . . . . . 36
un objet . . . . . . . . . . . . . 35
une page . . . . . . . . . . . . . 35

Index

S
\S . . . . . . . . . . . . . . . . . . . . . . . . . . 15
saut
de ligne . . . . . . . . . . . . . . . . 12
de paragraphe . . . . . . . . . .11
sauvegarde de bote . . . . . . . . . 78
\savebox . . . . . . . . . . 78, 79, 232
\sbox . . . . . . . . . . . . . . . . . . . 78, 79
\scriptscriptstyle . . . . . . . 57
\scriptsize . . . . . . . . . . . . . . . 22
\scriptstyle . . . . . . . . . . . . . . 57
\scshape . . . . . . . . . . . . . . . . . . . 20
\sec . . . . . . . . . . . . . . . . . . . . . . 260
\section 30, 36, 166, 167, 179,
219
section numbering depth . . .166
\section* . . . . . . . . . . . . . . . . . 30
\sectionmark . . . . . . . . . . . . . 179
\secundo . . . . . . . . . . . . . . . . . .114
\selectfont . . . . . . . . . . . . . . 150
\setboolean . . . . . . . . . . . . . . 140
\setbox . . . . . . . . . . . . . . . . . . . 232
\setcounter . . . . . . . . . . . . . . . 61
\setlength . . . . . . . . . . . . . . . . 65
\settodepth . . . . . . . . . . . . . . . 66
\settoheight . . . . . . . . . 66, 231
\settotoalheight . . . . . . . . 237
\settowidth . . . . . . . . . . 66, 231
\sffamily . . . . . . . . . . . . . . . . . 20
\shadowbox . . . . . . . . . . . . . . . 253
shape . . . . . . . . . . . . . . . . . . . . . 146
\showthe . . . . . . . . . . . . . . . . . . . 67
si-alors-sinon . . . . . . . . . . . . . . . 84
\signature . . . . . . . . . . . . . . . 118
simulation de terminal . . . . . . 28
\sin . . . . . . . . . . . . . . . . . . . 48, 260
\sinh . . . . . . . . . . . . . . . . . . . . . 260
sites internet . . . . . . . . . . . . . . 125
\slshape . . . . . . . . . . . . . . . 20, 21
\small . . . . . . . . . . . . . . . . 22, 233

293
sommaire . . . . . . . . . . . . . . . . . . 115
\sommaire . . . . . . . . . . . .115, 218
somme . . . . . . . . . . . . . . . . . . . . . 48
soulign
fontes . . . . . . . . . . . . . . . . . . 23
sous-gures . . . . . . . . . . . . . . . . . 90
split envir. . . . . . . . . . . . . . . . . 56
\sqrt . . . . . . . . . . . . . . . . . . . . . . 45
\stackrel . . . . . . . . . . . . . . . . . 50
\stretch . . . . . . . . . . . . . . . . . . . 67
subfig extension . . . . . . . . . . . . . 90
\subfigure . . . . . . . . . . . . . . . . 91
subfigure envir. . . . . . . . . . . . 91
\subparagraph . . . . . . . . . . . . . 30
\subsection . . . . . . . 30, 62, 166
\subsubsection . . . . . . . . . . . .30
\sup . . . . . . . . . . . . . . . . . . . 48, 260
\symbol . . . . . . . . . . . . . . 188, 200
\symboles . . . . . . . . . . . . . . . . 143
symboles mathmatiques . . . 45

T
tab le of contents depth . . . 166
tabbing envir. . . . . . . . . . . . . . .26
table . . . . . . . . . . . . . . . . . . . . . . . 33
liste des . . . . . . . . . . . . . . . . 34
placement . . . . . . . . . . . . . . 33
table envir. . . . . . . . . . 32, 33, 35
table des matires . . . . . . . . . . 37
numrotation . . . . . . . . . 166
profondeur . . . . . . . . . . . . 166
tableau . . . . . . . . . . . . . . . . . . . . . 26
mathmatique . . . . . . . . . 52
\tableofcontents . 30, 37, 38,
106, 182, 218
tabular envir. . . 26, 27, 52, 76,
252
tabulations . . . . . . . . . . . . . . . . . 26
taille
des fontes . . . . . . . . . . . . . . 22

294
des graphiques . . . . . . . . . 89
\tan . . . . . . . . . . . . . . . . . . . 48, 260
\tanh . . . . . . . . . . . . . . . . . . . . . 260
telefax envir. . . . . . . . . . . . . 120
\telephone . . . . . . . . . . . . . . . 118
\tempodim longueur . . . . . . . 237
\tertio . . . . . . . . . . . . . . . . . . . 114
\TeX . . . . . . . . . . . . . . . . . . . . . . . 13
TEXINPUTS
variable denvironnement 83
texmaker . . . . . . . . . . . . . . . . . . . . . 4
\text . . . . . . . . . . . . . . . . . . . . . . 52
\textbf . . . . . . . . . . . . . . . 20, 146
textcomp extension . . . 116, 257,
264, 265
textcomp extension . . . . . . . . . 257
\texteuro . . . . . . . . . . . . . . . . 116
\textheight . . . . . . . . . . . . . . . 64
\textit . . . . . . . . . . . . . . . . . . . . 20
\textmd . . . . . . . . . . . . . . . . . . . . 20
TeXtoEPS envir. . . . . . . . . . . . 248
\textrm . . . . . . . . . . . . . . . . . . . . 20
\textsc . . . . . . . . . . . . . . . . . . . . 20
\textsf . . . . . . . . . . . . . . . . . . . . 20
\textsl . . . . . . . . . . . . . . . . . . . . 20
\textstyle . . . . . . . . . . . . . . . . 57
\texttt . . . . . . . . . . . . . . . . . . . . 20
\textup . . . . . . . . . . . . . . . . . . . . 20
texture . . . . . . . . . . . . . . . . . . . . . .87
\textwidth longueur . . 78, 205
\textwidth . . . . . . . . . . . . . . . . 64
\thanks . . . . . . . . . . . . . . . . . . . 100
\the . . . . . . . . . . . . . . . . . . . . 61, 62
thebibliography envir. . . 100,
105, 182
\thefigure . . . . . . . . . . . . . . . . 62
\thefootnote . . . . . . . . . . . . . . 62
theglossary envir. . . . . . . . . 221
theindex envir. . . . . . . . . . . . 182
\thepage . . . . . . . . . . . . . . . . . . . 62
\thesubsection . . . . . . . . . . . .62

Index
\thispagestyle . . . . . . . . . . . .32
thumbpdf extension . . . . . . . . 243
TikZ extension . . . . . . . . . . . . . . 98
\tilde . . . . . . . . . . . . . . . . . . . . . 50
times extension . . . . . . . . . . . . .145
\times . . . . . . . . . . . . . . . . . . . . 142
\tiny . . . . . . . . . . . . . . . . . . . . . . 22
tirets . . . . . . . . . . . . . . . . . . . . . . . 15
\title . . . . . . . . . . . . . . . . . . . . 100
\titlebox . . . . . . . . . . . .192, 196
titre . . . . . . . . . . . . . . . . . . . . . . . . 30
dun document . . . . . . . . 100
numrotation . . . . . . . . . 166
\today . . . . . . . . . . . . . . . . . . . . . 15
\topsep longueur . . . . . 153, 154
\totalheight longueur . . . . .78
traits . . . . . . . . . . . . . . . . . . . 69, 86
transfig . . . . . . . . . . . . . . . . . . . . 271
translation de bote . . . . . 73, 75
\truc . . . . . . . . . . . . . . . . . . . . . 137
\ttfamily . . . . . . . . . . . . . . . . . 20
\typeout . . . . . . . . . . . . . . . . . .224
typographie
lettrine . . . . . . . . . . . . . . . 115
majuscules . . . . . . . . . . . . 116
ponctuation . . . . . . . . . . . 113
rgles . . . . . . . . . . . . . 22, 115

U
underfull . . . . . . . . . . . . . . . . . . . 38
\underline . . . . . . . . . . . . . . . . 23
unit des longueurs . . . . . . . . . 63
Unix vii, x, 7, 86, 87, 134, 246,
247, 251
unixcom envir. . . . . . . . . . . . . 185
\unskip . . . . 137, 138, 188, 211
\up . . . . . . . . . . . . . . . . . . . . . . . .116
\upshape . . . . . . . . . . . . . . . . . . . 20
url extension . . . . . . . . . . . . . . . 253
\url . . . . . . . . . . . . . . . . . . . . . . 245

Index
\usebox . . . . . . . . . . . . . . . 79, 213
\usecounter . . . . . . . . . . . . . . 157
\usepackage . . 10, 83, 90, 139,
173

V
\value . . . . . . . . . . . . . . . 140, 142
variable denvironnement
BIBINPUTS . . . . . . . . . . . . 105
TEXINPUTS . . . . . . . . . . . . . 83
varioref extension . . . . . . 199, 252
\vbox . . . . . . . . . . . . . . . . . . . . . . 39
\vdots . . . . . . . . . . . . . . . . . . . . . 46
\vec . . . . . . . . . . . . . . . . . . . . . . . 50
vecteurs . . . . . . . . . . . . . . . . . . . . 50
\verb . . . . . . . . . . . . . . . . . . . . . . 28
\verb* . . . . . . . . . . . . . . . . . . . . . 28
verbatim envir. . . . 28, 185, 253
\VerbatimEnvironment . . . 232
\VerbatimInput . . . . . . . . . . 231
VerbatimOut envir. . . . . . . . . 231
\vfill . . . . . . . . . . . . . . . . . . . . . 70
vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
visualisation . . . . . . . . . . . . . . . . . 7
\voir . . . . . . . . . . . . . . . . . 200202
\vref . . . . . . . . . . . .199, 245, 252
\vspace . . . . . . . . . . . . . . . 70, 209
\vspace* . . . . . . . . . . . . . . . . . . . 68

W
\whiledo . . . . . . . . . . . . . 141, 142
\width longueur . . . . . . . . . . . . 78
wrapfig extension . . . . . . . . 91, 92
\wrapfig . . . . . . . . . . . . . . . . . . . 92
wrapfigure envir. . . . . . . . . . . 91
Wysiwyg . . . . . . . . . . . . . . xii, xiii

295

X
xcolor extension . . . . . . . . 94, 212
xdvi . . . . . . . . . 6, 76, 87, 245, 255
xeTEX . . . . . . . . . . . . . . . . . . . . . 112
xelatex . . . . . . . . . . . . . . . . . . . . . . . 7
Xfig . . . . . . . . . . . . . . . . . . . . . . . 242
xfig . . . . . . . . . . . .86, 97, 270, 271
xpdf . . . . . . . . . . . . . . . . . . . . . . . . . 6

Y
yap . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Table des matires


I

Tout sur LATEX

1 Principes de base
1.1 Installation . . . . . . . . . . . . . . . . .
1.2 Cycle de production . . . . . . . . . . . .
1.2.1 dition . . . . . . . . . . . . . . .
1.2.2 Compilation . . . . . . . . . . . . .
1.2.3 Visualisation . . . . . . . . . . . .
1.2.4 Impression . . . . . . . . . . . . .
1.3 Structure type dun document source . . .
1.3.1 Classe du document . . . . . . . .
1.3.2 Le prambule . . . . . . . . . . . .
1.3.3 Ajout dextension . . . . . . . . . .
1.4 Cest parti ! . . . . . . . . . . . . . . . . .
1.4.1 Quelques caractres sont spciaux
1.4.2 Appel des commandes . . . . . . .
1.4.3 Accents . . . . . . . . . . . . . . .
1.5 Premiers outils . . . . . . . . . . . . . . .
1.6 Premires erreurs . . . . . . . . . . . . . .
1.6.1 Symptmes . . . . . . . . . . . . .
297

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

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

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

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

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

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

3
4
6
6
7
7
8
9
9
10
10
11
12
13
14
15
15
16

298

Table des matires


1.6.2
1.6.3
1.6.4

Diagnostic . . . . . . . . . . . . . . . . . . . .
Soins . . . . . . . . . . . . . . . . . . . . . . .
Une collection de message . . . . . . . . . . .

16
17
17

2 Ce quil faut savoir


2.1 Mise en vidence . . . . . . . . . . . . . . . .
2.1.1 Family-shape-series . . . . . . . . . . .
2.1.2 Correction italique . . . . . . . . . . .
2.1.3 Tailles . . . . . . . . . . . . . . . . . .
2.1.4 Quelques recommandations . . . . . .
2.2 Environnements . . . . . . . . . . . . . . . . .
2.2.1 Centrage et alignement . . . . . . . .
2.2.2 Listes . . . . . . . . . . . . . . . . . .
2.2.3 Tabulations . . . . . . . . . . . . . . .
2.2.4 Tableaux . . . . . . . . . . . . . . . .
2.2.5 Simulation de terminal . . . . . . . . .
2.2.6 Citations . . . . . . . . . . . . . . . .
2.3 Notes de marge . . . . . . . . . . . . . . . . .
2.4 Titres . . . . . . . . . . . . . . . . . . . . . .
2.5 Notes de bas de page . . . . . . . . . . . . . .
2.6 Entte et pied de page . . . . . . . . . . . . .
2.7 Flottants . . . . . . . . . . . . . . . . . . . .
2.7.1 Figure et table . . . . . . . . . . . . .
2.7.2 Placement . . . . . . . . . . . . . . . .
2.7.3 Liste des gures . . . . . . . . . . . .
2.8 Rfrences . . . . . . . . . . . . . . . . . . . .
2.8.1 Principe . . . . . . . . . . . . . . . . .
2.8.2 Que rfrencer ? . . . . . . . . . . . .
2.9 Fichiers auxiliaires . . . . . . . . . . . . . . .
2.9.1 Interaction avec les rfrences . . . . .
2.9.2 Interaction avec la table des matires .
2.9.3 Petits conseils . . . . . . . . . . . . . .
2.10 O il est question de csure . . . . . . . . . .
2.10.1 Contrler la csure . . . . . . . . . . .

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

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

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

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

19
20
20
21
22
22
23
24
25
26
26
28
28
29
30
31
31
32
33
33
34
34
35
35
36
36
37
38
38
40

3 Mathmatiques
3.1 Les deux faons dcrire des maths
3.2 Commandes usuelles . . . . . . . .
3.2.1 Indice et exposant . . . . .
3.2.2 Fraction et racine . . . . . .
3.2.3 Symboles . . . . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

43
44
44
44
45
45

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

Table des matires


3.3

3.4

3.5

3.6

3.7

3.8

299

Fonctions . . . . . . . . . . . . . . . . . . .
3.3.1 Fonctions standards . . . . . . . . .
3.3.2 Intgrales, sommes et autres limites
Des symboles les uns sur les autres . . . . .
3.4.1 Loprateur not . . . . . . . . . . .
3.4.2 Accents . . . . . . . . . . . . . . . .
3.4.3 Vecteurs . . . . . . . . . . . . . . . .
3.4.4 Commande stackrel . . . . . . . .
Deux principes importants . . . . . . . . . .
3.5.1 Espaces en mode mathmatique . .
3.5.2 Texte en mode mathmatique . . . .
Array : simple et ecace . . . . . . . . . . .
3.6.1 Comment a marche . . . . . . . . .
3.6.2 Array et les dlimiteurs . . . . . . .
3.6.3 Pour vous simplier la vie... . . . . .
quations et environnements . . . . . . . .
3.7.1 Lenvironnement displaymath . . .
3.7.2 Lenvironnement equation . . . . .
3.7.3 Formules multi-lignes . . . . . . . .
Styles en mode mathmatique . . . . . . . .
3.8.1 Fontes . . . . . . . . . . . . . . . . .
3.8.2 Taille des symboles . . . . . . . . . .
3.8.3 Crer de nouveaux oprateurs . . . .

4 Un pas vers la sorcellerie


4.1 Compteurs . . . . . . . . . . . . . . .
4.1.1 Compteurs disponibles . . . . .
4.1.2 Manipulation . . . . . . . . . .
4.1.3 Achage . . . . . . . . . . . .
4.2 Longueurs . . . . . . . . . . . . . . . .
4.2.1 Units . . . . . . . . . . . . . .
4.2.2 Quelques longueurs de LATEX .
4.2.3 Manipulation des longueurs . .
4.2.4 Longueurs lastiques . . . . . .
4.2.5 Achage . . . . . . . . . . . .
4.3 Espaces . . . . . . . . . . . . . . . . .
4.3.1 Commandes de base . . . . . .
4.3.2 Quelques espaces prdnies . .
4.4 Botes . . . . . . . . . . . . . . . . . .
4.4.1 Botes simples . . . . . . . . .
4.4.2 Manipulation de botes simples

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

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

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

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

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

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

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

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

47
47
48
49
49
50
50
50
51
51
52
52
52
53
54
54
54
55
55
56
56
57
57

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

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

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

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

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

59
60
60
60
61
63
63
64
64
66
67
68
68
69
70
72
73

300

Table des matires


.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

76
78
78
79
79
81
82
83

5 Graphisme
5.1 Apritifs . . . . . . . . . . . . . . . . .
5.2 Du format des chiers graphiques . . .
5.3 Le package graphicx . . . . . . . . . . .
5.3.1 Un standard . . . . . . . . . .
5.3.2 Options . . . . . . . . . . . . .
5.4 Quelques extensions utiles . . . . . . .
5.4.1 subfig . . . . . . . . . . . . . .
5.4.2 Le package wrapfig . . . . . . .
5.4.3 Le package psfrag . . . . . . . .
5.4.4 Le package xcolor . . . . . . . .
5.5 Utiliser make . . . . . . . . . . . . . .
5.5.1 Convertir les images . . . . . .
5.5.2 Convertir les chiers de dessin
5.6 part a . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

85
86
86
87
87
89
90
90
91
92
94
95
96
97
97

6 Documents scientifiques
6.1 Article . . . . . . . . . . . . . . . . . . .
6.2 Bibliographie . . . . . . . . . . . . . . .
6.2.1 Fichier .bib . . . . . . . . . . .
6.2.2 Citation . . . . . . . . . . . . . .
6.2.3 Gnration . . . . . . . . . . . .
6.3 Index . . . . . . . . . . . . . . . . . . .
6.3.1 Ce quil faut faire . . . . . . . . .
6.3.2 Dtail du fonctionnement . . . .
6.3.3 Dirents types dentre dindex
6.3.4 Glossaire . . . . . . . . . . . . .
6.4 Diviser votre document . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

99
100
100
101
103
105
106
106
107
108
109
109

4.5

4.6

4.4.3 Botes paragraphe . . . . .


4.4.4 Petites astuces . . . . . . .
4.4.5 Sauvegarde et rutilisation
Dnitions . . . . . . . . . . . . . .
4.5.1 Commandes . . . . . . . . .
4.5.2 Environnement . . . . . . .
4.5.3 Rednitions . . . . . . . .
Mais encore ? . . . . . . . . . . . .

.
.
.
.
.
.
.
.

Table des matires

301

7 Des
7.1
7.2
7.3

documents en franais
Le problme des lettres accentues
Rdiger en franais avec LATEX . .
Le package babel et la typographie
7.3.1 Ponctuation . . . . . . . . .
7.3.2 L-a, e dans la, t-i, t-i, a ! .
7.3.3 Outils du package babel . .
7.3.4 Recommandations dusage .
7.3.5 Le cas de leuro . . . . . . .
7.3.6 Au sujet des majuscules . .
7.4 Courrier et fax . . . . . . . . . . .
7.4.1 Commandes disponibles . .
7.4.2 Document bas sur la classe
7.4.3 Fichiers instituts . . . .
7.4.4 Fax . . . . . . . . . . . . .

8 vous de jouer !
8.1 Livres et autres manuels .
8.2 Local . . . . . . . . . . . .
8.3 ETp, Oube et niouses
8.3.1 CTAN . . . . . . .
8.3.2 Sites Web . . . . .
8.3.3 Les newsgroups . .

II

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
lettre
. . . . .
. . . . .

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

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

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

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

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

111
112
112
113
113
114
114
115
116
116
118
118
119
119
119

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

123
124
124
125
125
125
126

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

Tout sur ( Tout sur LATEX)

9 Outillage ncessaire
9.1 Hercule Poirot . . . . . . . . . . . . . .
9.1.1 Fouiller dans les chiers . . . . .
9.1.2 Examiner les macros . . . . . . .
9.2 Outils de bas niveaux . . . . . . . . . .
9.2.1 Pour qui sont ces pourcents ? . .
9.2.2 Le caractre @ . . . . . . . . . .
9.2.3 Le \let de TEX . . . . . . . . .
9.3 Structures de contrle et tests . . . . . .
9.3.1 Boolens et oprateurs associs .
9.3.2 Exemples . . . . . . . . . . . . .
9.3.3 Tester la parit des pages . . . .
9.4 Fontes . . . . . . . . . . . . . . . . . . .
9.4.1 Le jeu des trois familles . . . .
9.4.2 Dsignation des fontes et de leurs

. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
attributs

127
.
.
.
.
.
.
.
.
.
.
.
.
.
.

133
134
134
134
136
136
138
139
139
140
141
144
145
145
145

302

Table des matires


.
.
.
.
.
.
.
.
.
.
.

149
151
151
152
153
153
155
158
159
160
160

10 Cosmtique
10.1 Allure de lindex . . . . . . . . . . . . . . . . . . . .
10.2 Allures des titres . . . . . . . . . . . . . . . . . . . .
10.2.1 Numrotation dans la table des matires . . .
10.2.2 Sections et niveaux infrieurs . . . . . . . . .
10.2.3 Chapitres . . . . . . . . . . . . . . . . . . . .
10.2.4 Parties . . . . . . . . . . . . . . . . . . . . . .
10.3 Gomtrie . . . . . . . . . . . . . . . . . . . . . . . .
10.4 En-tte et pied de page . . . . . . . . . . . . . . . .
10.4.1 Cas de la premire page des chapitres . . . .
10.4.2 Pages vierges avant le dbut dun chapitre . .
10.4.3 Mcanisme de marqueurs . . . . . . . . . . .
10.4.4 Organisation du document . . . . . . . . . .
10.4.5 Numroter lintroduction en roman petites
capitales . . . . . . . . . . . . . . . . . . . .
10.4.6 Index, bibliographie et table des matires . .
10.5 Environnements verbatim . . . . . . . . . . . . .
10.5.1 Digression vers les caractres... . . . . . . . .
10.5.2 Environnements maison bass sur fancyvrb . .
10.5.3 Environnements pour langages de programmation . . . . . . . . . . . . . . . . . . . . . .
10.6 About those so called french guillemets . . . . . . .
10.7 Une bote pour le mini-sommaire . . . . . . . . . . .
10.7.1 Linterface de la commande . . . . . . . . . .
10.7.2 Quand mme un peu de TEX . . . . . . . . .
10.7.3 Conception de la bote . . . . . . . . . . . . .
10.7.4 Le code . . . . . . . . . . . . . . . . . . . . .
10.7.5 Utilisation avec package minitoc . . . . . . . .

163
164
166
166
166
168
171
173
175
176
177
177
179

9.5

9.6

9.4.3 Changer de fontes . . . . . . . . .


Listes et nouveaux environnements . . . .
9.5.1 Principe . . . . . . . . . . . . . . .
9.5.2 Rglage de ltiquette . . . . . . .
9.5.3 Rglages verticaux . . . . . . . . .
9.5.4 Valeurs par dfaut . . . . . . . . .
9.5.5 Exemples . . . . . . . . . . . . . .
9.5.6 Un exemple un peu plus tordu... .
Des environnements qui mettent en bote
9.6.1 Principe . . . . . . . . . . . . . . .
9.6.2 Exemple . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

181
182
183
183
185
186
187
189
190
190
192
192
196

Table des matires

303

11 De nouveaux jouets
11.1 Quelques bricoles . . . . . . . . . . . . . . . . . . .
11.1.1 Arguments et convention typographique . .
11.1.2 Autour de la gnration de lindex . . . . .
11.1.3 Des renvois . . . . . . . . . . . . . . . . . .
11.1.4 Changement de marges . . . . . . . . . . .
11.2 Des nota . . . . . . . . . . . . . . . . . . . . . . . .
11.3 Des citations . . . . . . . . . . . . . . . . . . . . .
11.3.1 pigraphes . . . . . . . . . . . . . . . . . .
11.3.2 Citations . . . . . . . . . . . . . . . . . . .
11.4 Des lettrines . . . . . . . . . . . . . . . . . . . . . .
11.4.1 La commande \glurps ou un pas vers TEX
11.4.2 Insertion de la lettrine dans un paragraphe
11.5 Un sommaire . . . . . . . . . . . . . . . . . . . . .
11.6 Un glossaire . . . . . . . . . . . . . . . . . . . . . .
11.6.1 Tordre le cou makeindex . . . . . . . . . .
11.6.2 Un environnement pour le glossaire . . . . .
11.6.3 Produire le chier .glx . . . . . . . . . . .
11.6.4 Recollons les morceaux . . . . . . . . . . . .
11.7 Des onglets . . . . . . . . . . . . . . . . . . . . . .
11.7.1 Ide retenue . . . . . . . . . . . . . . . . . .
11.7.2 Les botes dans la marge . . . . . . . . . . .
11.7.3 Position des onglets . . . . . . . . . . . . .
11.8 Exemples LATEX . . . . . . . . . . . . . . . . . . . .
11.8.1 Outils ncessaires . . . . . . . . . . . . . . .
11.8.2 Le principe de lenvironnement ltxexemple
11.8.3 Mises en bote . . . . . . . . . . . . . . . .
11.8.4 Numrotation des exemples . . . . . . . . .
11.8.5 Le trait central . . . . . . . . . . . . . . . .

III

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

Annexes

A Gnrer des pdf


A.1 Principe gnral . . . . . . . .
A.2 Ce qui change . . . . . . . . . .
A.3 Trucs et astuces . . . . . . . . .
A.3.1 Gestion des graphiques .
A.3.2 Vignettes . . . . . . . .
A.3.3 Pagination . . . . . . .
A.3.4 Signets . . . . . . . . .

197
198
198
199
200
202
204
209
209
209
213
213
215
218
220
220
221
222
223
224
225
225
226
231
231
232
233
234
237

239
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

241
242
242
243
243
243
244
244

304
A.4 Hyperliens . . .
A.5 Interaction avec
A.5.1 pstricks
A.5.2 psfrag .

Table des matires


. . . . . . . . . .
psfrag et pstricks
. . . . . . . . . .
. . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

245
246
246
248

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

251
252
253
254
254
255
255
256

C Symboles
C.1 Symboles standard . . . . . . . . . . . . . . . . . . .
C.2 Symboles de lAMS . . . . . . . . . . . . . . . . . . .
C.3 Symboles du package textcomp . . . . . . . . . . . .

257
258
261
264

D Notes de production
D.1 Distribution du moment . . . .
D.2 Les sources du manuel . . . . .
D.2.1 Structure . . . . . . . .
D.2.2 Styles . . . . . . . . . .
D.3 Compilation . . . . . . . . . . .
D.3.1 Makele . . . . . . . . .
D.3.2 Figures . . . . . . . . .
D.3.3 Dvi et postscript . . . .
D.3.4 Pdf . . . . . . . . . . . .
D.3.5 Nettoyage de printemps

269
270
270
270
270
271
271
271
272
272
272

B Mmento
B.1 Extensions . . . . . . . . . .
B.2 Les chiers auxiliaires . . .
B.3 AucTEX . . . . . . . . . . .
B.3.1 Formatage du source
B.3.2 Raccourcis . . . . .
B.3.3 Compilation . . . . .
B.4 Aspell . . . . . . . . . . . .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

Bibliographie

273

Glossaire

277

Index

281

Das könnte Ihnen auch gefallen