Vous êtes sur la page 1sur 189

.

..
.
.
.
.D
e
s
s
i
n
e
r
.L
A
T
E
X
.
. a
v
e
c
.TikZ
.!"#$%&'()!*+(,-+
.
.
.
..
*
(
+
*
/
,
0
.
.1
234
5
,
+
%
3
(
6
7
.Grard Tisseau et Jacques Duma
TikZ pour limpatient
Grard Tisseau Jacques Duma
19 novembre 2009
T
i
k
Z
l

i
m
p
a
t
i
e
n
t
p
o
u
r
\def\arete{3} \def\epaisseur{5} \def\rayon{2}
\newcommand{\ruban}{(0,0)
++(0:0.57735*\arete-0.57735*\epaisseur+2*\rayon)
++(-30:\epaisseur-1.73205*\rayon)
arc (60:0:\rayon) -- ++(90:\epaisseur)
arc (0:60:\rayon) -- ++(150:\arete)
arc (60:120:\rayon) -- ++(210:\epaisseur)
arc (120:60:\rayon) -- cycle}
\begin{tikzpicture}[very thick,top color=white,bottom color=gray]
\shadedraw \ruban;
\shadedraw [rotate=120] \ruban;
\shadedraw [rotate=-120] \ruban;
\draw (-60:4) node[scale=5,rotate=30]{Ti\textit{k}Z};
\draw (180:4) node[scale=3,rotate=-90]{limpatient};
\clip (0,-6) rectangle (6,6); % pour croiser
\shadedraw \ruban;
\draw (60:4) node [gray,xscale=-3,yscale=3,rotate=30]{pour};
\end{tikzpicture}
Table des matires
Avant-propos 9
Vous avez des documents publier, avec des gures . . . . . . . . 9
Vous avez essay dinclure des gures, sans grand succs . . . . . 9
Nous vous recommandons dutiliser TikZ . . . . . . . . . . . . . 9
Ce livre vous aide utiliser TikZ . . . . . . . . . . . . . . . . . . 9
Chercher dans le livre : la table des matires . . . . . . . . . . . . 10
Trouver une rfrence : le glossaire . . . . . . . . . . . . . . . . . 10
Le site compagnon . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1 Premires gures 11
1.1 Utilisation de TikZ dans L
A
T
E
X . . . . . . . . . . . . . . . . . . . 11
1.1.1 TikZ est un package : \usepackage{tikz} . . . . . . . . 11
1.1.2 Insrer une gure TikZ : \begin{tikzpicture} . . . . . 12
1.2 Le reprage des points . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.1 Coordonnes cartsiennes : (x,y) . . . . . . . . . . . . . . 13
1.2.2 Coordonnes polaires : (a:r) . . . . . . . . . . . . . . . . 14
1.2.3 Echelle : [scale=k] . . . . . . . . . . . . . . . . . . . . . 14
1.3 Exemple : tracer un segment ou un cercle . . . . . . . . . . . . . 15
1.3.1 Enonc : deux segments, un cercle . . . . . . . . . . . . . 15
1.3.2 Solution la main . . . . . . . . . . . . . . . . . . . . . . 15
1.3.3 Solution TikZ : (a,b) -- (c,d) et (a,b) circle (r) . 15
1.3.4 Ecrire des textes : (x,y) node [position] {texte} . . 16
1.3.5 Arc de cercle : (x,y) arc (a:b:r) . . . . . . . . . . . . 17
1.3.6 Annotations : angle droit, segments gaux . . . . . . . . . 18
1.4 Figure gomtrique : mthodes de base . . . . . . . . . . . . . . . 20
1.4.1 Problme principal : calculer les coordonnes . . . . . . . 21
1.4.2 Exemple : triangle de cts 3, 4 et 5 . . . . . . . . . . . . 21
1.4.3 Prparer la gure avec GeoGebra . . . . . . . . . . . . . . 23
1.4.4 Faire engendrer le code TikZ par GeoGebra . . . . . . . . 24
1.5 Exercices : gures gomtriques . . . . . . . . . . . . . . . . . . . 24
1.5.1 Thorme de Thals . . . . . . . . . . . . . . . . . . . . . 25
1.5.2 Paralllogramme . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.3 Losange . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.5.4 Centre de gravit . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.5 Cercle circonscrit . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.6 Orthocentre . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5.7 Centre du cercle inscrit . . . . . . . . . . . . . . . . . . . 28
1.6 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3
4 TABLE DES MATIRES
2 Chemins, options graphiques 29
2.1 Simplications, raccourcis, abstractions . . . . . . . . . . . . . . 29
2.1.1 Nommage des points : \coordinate(nom) at (x,y) . . . 29
2.1.2 Enchanement de traits : chemin, position courante . . . . 30
2.1.3 Rectangle : (a,b) rectangle (c,d) . . . . . . . . . . . . 31
2.1.4 Figures fermes : cycle, fill . . . . . . . . . . . . . . . . 32
2.1.5 Noeuds sur les traits : midway, sloped . . . . . . . . . . . 32
2.1.6 Coordonnes relatives : ++(x,y) . . . . . . . . . . . . . . 33
2.2 Dcorations, styles, options graphiques . . . . . . . . . . . . . . . 35
2.2.1 Options : [ ] . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.2.2 Epaisseur des traits : thick, thin, line width=5pt . . 35
2.2.3 Pointills, styles des traits : dotted, dashed, double . . 36
2.2.4 Pointes de ches : ->, >= stealth . . . . . . . . . . . . 36
2.2.5 Couleurs : red, color=gray !20 . . . . . . . . . . . . . . 37
2.3 Axes, grille, fentre dachage . . . . . . . . . . . . . . . . . . . 37
2.3.1 Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.2 Quadrillage (grille) : grid . . . . . . . . . . . . . . . . . . 38
2.3.3 Fentre dachage : clip . . . . . . . . . . . . . . . . . . 39
2.4 Complments : opacit, couleurs, styles . . . . . . . . . . . . . . . 40
2.4.1 Ordre des tracs, transparence : opacity . . . . . . . . . 40
2.4.2 Noms et calculs des couleurs, package xcolor . . . . . . . 41
2.4.3 Dnition de styles : \tikzstyle, \tikzset . . . . . . . . 42
2.5 Exercices : styles de traits, ches, couleurs . . . . . . . . . . . . 43
2.5.1 Somme de deux vecteurs . . . . . . . . . . . . . . . . . . . 43
2.5.2 Triangle rectangle inscrit dans un demi-cercle . . . . . . . 43
2.5.3 Angle inscrit et angle au centre . . . . . . . . . . . . . . . 43
2.5.4 Parallles, aires gales . . . . . . . . . . . . . . . . . . . . 44
2.5.5 Compose de deux symtries centrales . . . . . . . . . . . 44
2.5.6 Suite gomtrique . . . . . . . . . . . . . . . . . . . . . . 44
3 Courbes 46
3.1 Tracer une courbe : plot (...) . . . . . . . . . . . . . . . . . . 46
3.1.1 Domaine : [domain=a:b] . . . . . . . . . . . . . . . . . . 47
Le problme de babel franais et de : . . . . . . . . . 48
Dsactiver : avec \shorthandoff{:} . . . . . . . . . . 48
Utiliser le package microtype . . . . . . . . . . . . . . . 49
Introduire une autre option [domaine={a}{b}] . . . . . . 49
Exemples de domaines . . . . . . . . . . . . . . . . . . . . 49
3.1.2 Formules mathmatiques disponibles . . . . . . . . . . . . 50
Oprations . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Fonctions trigonomtriques . . . . . . . . . . . . . . . . . 50
Nombres alatoires . . . . . . . . . . . . . . . . . . . . . . 51
Oprations boolennes . . . . . . . . . . . . . . . . . . . . 51
3.2 Aspect du graphe . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2.1 Nombre de points : samples . . . . . . . . . . . . . . . . . 52
3.2.2 Lissage : smooth, tension . . . . . . . . . . . . . . . . . 52
3.2.3 Discontinuits : sparer les intervalles . . . . . . . . . . . 53
3.2.4 Grandes valeurs : scale, \clip . . . . . . . . . . . . . . 53
3.3 Rgions limites par des courbes . . . . . . . . . . . . . . . . . . 55
TABLE DES MATIRES 5
3.3.1 Une courbe et des segments : cycle, \fill, \filldraw . 55
3.3.2 Rgion entre deux courbes . . . . . . . . . . . . . . . . . . 56
3.3.3 Rgion non convexe : interior rules . . . . . . . . . . . . . 57
3.4 Complments techniques . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.1 Utilisation de Gnuplot : plot function . . . . . . . . . . 58
3.4.2 Automatisation de certaines congurations . . . . . . . . 58
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.5.1 Ellipse. Angles avec circle et \clip . . . . . . . . . . . . 60
3.5.2 a
b
= b
a
. xscale, yscale . . . . . . . . . . . . . . . . . . 60
3.5.3 Fonction priodique, \foreach . . . . . . . . . . . . . . . 61
3.5.4 Fonctions rciproques, aires, pattern . . . . . . . . . . . 62
3.5.5 Lemniscate de Gerono. \scope, xshift, \filldraw . . 63
3.6 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4 Gomtrie dans lespace 66
4.1 Coordonnes (x,y,z) . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1.1 Reprsentation TikZ standard . . . . . . . . . . . . . . . 66
4.1.2 Autres reprsentations. x=..., y=..., z=... . . . . . . 67
4.2 Quelques gures de gomtrie . . . . . . . . . . . . . . . . . . . . 68
4.2.1 Section dun cube suivant un hexagone . . . . . . . . . . . 68
4.2.2 Grande diagonale dun cube . . . . . . . . . . . . . . . . . 68
4.2.3 Droites et plans . . . . . . . . . . . . . . . . . . . . . . . . 68
4.3 Courbes et surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3.1 Reprsentation paramtrique, plot, \foreach . . . . . . . 70
4.3.2 Hlice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.3.3 Cylindre x
2
+y
2
= 1 . . . . . . . . . . . . . . . . . . . . . 71
4.3.4 Sphre x
2
+y
2
+z
2
= 1 . . . . . . . . . . . . . . . . . . . 72
4.3.5 Parabolode z = x
2
+y
2
. . . . . . . . . . . . . . . . . . . 72
4.4 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5 Reprsentation de donnes 74
5.1 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1.1 Diagramme deectifs : plot coordinates . . . . . . . . 74
5.1.2 Amliorer la lisibilit : grid, node, \foreach . . . . . . . 75
5.1.3 Marquer les points, tiqueter : mark, node, rotate . . . . 76
5.1.4 Diagrammes barres : xcomb, ycomb, polar comb . . . . 77
5.1.5 Histogramme : xcomb, ycomb, line width . . . . . . . . 78
5.1.6 Achage des donnes dun chier : plot file . . . . . . 79
5.2 Diagramme barres horizontales . . . . . . . . . . . . . . . . . . 80
5.2.1 Le bl dans le monde : utilisation dun tableur . . . . . . 80
5.2.2 Barres horizontales : plot file, xcomb . . . . . . . . . . 81
5.2.3 Installation dune grille : grid, xstep, ystep . . . . . . . 83
5.2.4 tiquetage du repre : \foreach, node . . . . . . . . . . 84
5.2.5 Deux sries plus une lgende : plot, shift, node . . . . 85
5.3 Courbe des variations de donnes . . . . . . . . . . . . . . . . . . 86
5.3.1 Production annuelle de riz : pr-traitement . . . . . . . . 86
5.3.2 Courbe des variations : plot file . . . . . . . . . . . . . 87
5.3.3 Quadrillage : grid, step . . . . . . . . . . . . . . . . . . 87
5.3.4 Annotations, dcorations : \foreach, node, mark . . . . 88
5.4 Diagramme secteurs . . . . . . . . . . . . . . . . . . . . . . . . 90
6 TABLE DES MATIRES
5.4.1 Rpartition par catgories socioprofessionnelles . . . . . . 90
5.4.2 Calcul des angles : pr-traitement avec un tableur . . . . 90
5.4.3 Dessiner les secteurs : \draw, arc, cycle, fill, $ . . . . 91
5.4.4 Diagramme complet : \foreach . . . . . . . . . . . . . . 93
5.5 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6 Graphes : Introduction 95
6.1 Notions de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.1.1 Nuds et Arcs : \draw, , node, et \node . . . . . . . . . 95
6.1.2 Chemin annot : \draw avec opration node . . . . . . . 96
6.1.3 Graphe : \node puis \draw avec nom de nud . . . . . . 96
6.2 Styles des nuds et des arcs . . . . . . . . . . . . . . . . . . . . . 97
6.2.1 Les arcs : \draw, , |-, -|, to et options de ches . . . 97
6.2.2 Extrmits des arcs : [->|, *-o, >->>, )-( . . . . . . . . 98
6.2.3 Dcoration des nuds : circle, ellipse, diamond . . . 99
6.2.4 Abstraction des styles : \tikzstyle, \tikzset . . . . . . 99
6.2.5 Ancrage et position des nuds : P.south, left, below . . 101
6.2.6 Flches vers les ancres : N.north, P.center, N.15 . . . . 102
6.3 Techniques avances . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.3.1 Chemins en toile : edge, bend, in, out . . . . . . . . . . 103
6.3.2 tiquetage des arcs : sloped, midway, pos . . . . . . . . 103
6.3.3 Inclinaison des tiquettes : sloped, rotate . . . . . . . . 104
6.3.4 Modication de la taille des annotations : scale . . . . . 104
6.3.5 Insrer une sous-gure : scope, shift, rotate, scale . . 104
6.3.6 Textes longs : text width, justified, centered . . . . 107
6.3.7 Contournement dun nud . . . . . . . . . . . . . . . . . 108
6.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.4.1 Voyelle ou Consonne . . . . . . . . . . . . . . . . . . . . . 109
6.4.2 Les points cardinaux . . . . . . . . . . . . . . . . . . . . . 109
6.4.3 Orientations . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.4.4 Pentagone . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.4.5 Benzne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.4.6 Arbre gnalogique . . . . . . . . . . . . . . . . . . . . . 112
6.5 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7 Graphes : Exemples 114
7.1 Graphe dune relation . . . . . . . . . . . . . . . . . . . . . . . . 114
7.1.1 Relations entre quadrilatres . . . . . . . . . . . . . . . . 114
7.1.2 Des nuds et des ches : node et -> . . . . . . . . . . . 114
7.1.3 Graphe nal : courbure bend, ancrage P.east . . . . . . 117
7.2 Organigramme informatique . . . . . . . . . . . . . . . . . . . . . 118
7.2.1 Somme des N premiers nombres entiers . . . . . . . . . . 118
7.2.2 Style des nud : draw, ellipse, fill, text . . . . . . . . 118
7.2.3 Forme des ches : >=, rounded corners, |- . . . . . . . 120
7.2.4 Organigramme nal . . . . . . . . . . . . . . . . . . . . . 121
7.3 Diagrammes syntaxiques . . . . . . . . . . . . . . . . . . . . . . . 122
7.3.1 Grammaire des expressions mathmatiques . . . . . . . . 122
7.3.2 Alignement des nuds, tiquetage . . . . . . . . . . . . . 123
7.3.3 Regroupement de gures : scope et yshift . . . . . . . . 124
7.4 Graphe de preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
TABLE DES MATIRES 7
7.4.1 Rsolution dune quation : 2x + 3 = 7 . . . . . . . . . . 125
7.4.2 Placement des nuds : \node (a) at (x,y), below . . 126
7.4.3 Placement et tiquetage des ches : ->, midway . . . . 127
7.4.4 Flches courbes : bend, to . . . . . . . . . . . . . . . . . 128
7.4.5 Exercice damlioration . . . . . . . . . . . . . . . . . . . 130
7.5 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
8 Des gures aux illustrations 132
8.1 Les anneaux olympiques . . . . . . . . . . . . . . . . . . . . . . . 132
8.1.1 Un anneau : circle, fill, even odd rule . . . . . . . . 133
8.1.2 Entrelacer les anneaux : \coordinate, fill et arc . . . 134
8.1.3 La gure complte : \newcommand . . . . . . . . . . . . . 136
8.2 Diagrammes de Venn . . . . . . . . . . . . . . . . . . . . . . . . . 137
8.2.1 Ensembles E, A, B : rectangle, circle, \newcommand . 137
8.2.2 Coloriage : \fill, color, opacity . . . . . . . . . . . . . 138
8.2.3 Mthode par superposition de couleurs . . . . . . . . . . . 139
A, B et A B : \draw et \fill . . . . . . . . . . . . . . 139
A B, AB, B A et AB : \clip et scope . . . . . 140
8.2.4 Mthode par coloriage entre les frontires . . . . . . . . . 141
Dnition des frontires : rectangle, circle et arc . . . 142
Coloriage des rgions : \fill, even odd rule . . . . . . 143
8.3 Personnages et dcors . . . . . . . . . . . . . . . . . . . . . . . . 144
8.3.1 Locan : \shade, arc, top color, bottom color . . . . 145
8.3.2 Le quai : \fill, rectangle, rotate . . . . . . . . . . . . 145
8.3.3 Les personnages : \fill, ellipse, circle . . . . . . . . 146
8.3.4 Le cur : \draw, .. controls and .. . . . . . . . . . . 146
8.3.5 Curs multicolores : \shift, rotate, ball color . . . 148
8.3.6 La gure complte : scope, shift, rotate . . . . . . . . 149
8.3.7 La solution : scope, shift, rotate . . . . . . . . . . . . 149
8.4 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
9 Complments techniques 151
9.1 Transformations avec scope . . . . . . . . . . . . . . . . . . . . 151
9.1.1 Translations : xshift, yshift ou shift . . . . . . . . . 152
9.1.2 Rotation : [xshift=6cm,rotate=45]] . . . . . . . . . . 152
9.1.3 Changement dchelle : [xshift=6cm,scale=0.5] . . . . 153
9.1.4 paisseur des traits : \draw et line width . . . . . . . . 155
9.1.5 Taille et inclinaison de textes : transform shape . . . . 157
9.1.6 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.2 Au sujet des arbres . . . . . . . . . . . . . . . . . . . . . . . . . . 159
9.2.1 Dnition : \node node et child . . . . . . . . . . . . . . 160
9.2.2 Espacement des frres : sibling distance . . . . . . . 160
9.2.3 Forme globale : level distance et grow . . . . . . . . 161
9.2.4 tiquetage des arcs : edge from parent . . . . . . . . . 162
9.2.5 Style des arcs : edge from parent path . . . . . . . . . 163
9.3 Liaisons entre gures : overlay . . . . . . . . . . . . . . . . . . 163
9.3.1 Dnitions globales des noms : remember picture . . . . 164
9.3.2 Dessiner dune gure lautre : overlay . . . . . . . . . 165
9.3.3 La page courante est un nud : current page . . . . . . 165
9.4 Rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
8 TABLE DES MATIRES
A La syntaxe de TikZ 167
A.1 Les environnements : {tikzpicture}, {scope} . . . . . . . . . . 167
A.2 Les commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
A.3 Les coordonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
A.3.1 Forme gnrale : (...) . . . . . . . . . . . . . . . . . . . 169
A.3.2 Calculs sur les nombres : package pgfmath . . . . . . . . . 169
A.3.3 Calculs sur les coordonnes : bibliothque calc . . . . . . 169
A.4 Les oprations de chemin . . . . . . . . . . . . . . . . . . . . . . 170
A.5 Les options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
A.6 Utiliser des commandes L
A
T
E
X dans TikZ . . . . . . . . . . . . . 173
B Erreur ! Que faire ? 174
Oubli du ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Les nombres trop grands . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Le ! dans la dnitions des couleurs . . . . . . . . . . . . . . . . . . 175
Le problme de babel franais et de : . . . . . . . . . . . . . . . . 175
C O trouver de laide ? 177
D Glossaire 178
Avant-propos
Vous avez des documents publier, avec des gures
Vous avez rgulirement des documents publier. Vous avez choisi L
A
T
E
X
pour sa grande qualit typographique, son ouverture et sa portabilit. Vous
souhaiteriez maintenant inclure des gures et illustrations dans vos documents,
mais sans avoir sortir de lenvironnement L
A
T
E
X, et de manire pouvoir
produire directement des documents au format PDF, qui devient un format
dchange et de publication standard.
Vous avez essay dinclure des gures, sans grand succs
Les direntes solutions que vous avez essayes ne vous ont pas sembles
satisfaisantes.
Vous avez prpar un dessin dans un logiciel externe, puis vous avez utilis
la commande \includegraphics, mais vous navez pas trouv pratique le fait
de manipuler des chiers externes et dessayer dadapter le style et le format
votre document.
Vous avez essay pstricks, mais vous lavez trouv un peu technique et vous
avez regrett quil produise seulement du PostScript et pas du PDF.
Nous vous recommandons dutiliser TikZ
TikZ est un package pour L
A
T
E
X permettant dinclure des gures au format
PDF en restant dans lenvironnement L
A
T
E
X.
Il a t cr vers 2006 par Till Tantau. Il devient rapidement populaire,
car il rpond aux besoins prcdents en vitant les inconvnients des autres
solutions. La phase initiale dapprentissage est rapide, et les gures simples
peuvent tre obtenues simplement. On sent que le langage a t conu pour
rpondre des besoins usuels de manire pratique. Il continue dvoluer, et les
extensions actuelles permettent de crer des illustrations trs varies.
Utiliser TikZ est un plaisir car on obtient des gures prcises et dune grande
qualit, avec une impression de matrise.
Ce livre vous aide utiliser TikZ
Dans ce livre, nous prsentons TikZ de manire vous rendre capable dob-
tenir rapidement des gures incluses dans vos documents L
A
T
E
X, en lillustrant
de direntes faons : gomtrie, courbes, graphes, arbres, histogrammes, illus-
trations.
9
10 TABLE DES MATIRES
La lecture des deux premiers chapitres est indispensable. Vous pourrez crer
vos gures ds le premier chapitre. Le deuxime fournit des complments im-
portants dordre gnral, et ensuite vous pourrez choisir en fonction de votre
domaine dapplication.
Les deux derniers chapitres prsentent des exemples plus complexes et des
complments techniques. Il est prfrable dtre laise avec L
A
T
E
X et TikZ pour
les aborder .
Chercher dans le livre : la table des matires
La table des matires est une sorte daide mmoire intgr.
Chaque fois que cest possible, un titre est la description dune tche ou dun
problme suivie des mots-cls Tikz qui permettent de raliser cette tche ou de
rsoudre ce problme de faon standard.
Par exemple : Echelle : [scale=k], Etiquetage des arcs : sloped, midway,
pos, etc. Dun seul coup doeil, on devrait pouvoir retrouver une information
utile et la situer dans le contexte dun exemple.
Trouver une rfrence : le glossaire
Ce livre contient un glossaire mais pas dindex. Le problme dun index
alphabtique est que lon ne peut y trouver que des mots dj connus.
Notre glossaire rassemble uniquement la liste des mots-cls du langage pr-
sents dans le livre, avec pour chacun deux un court rsum et une rfrence
au passage du Manuel de TikZ & PGF de Till Tantau prsentant le concept.
Till Tantau signale lui-mme que lindex de son manuel nest pas trs satis-
faisant parce quil contient tout alors quil ne devrait contenir quune slection.
Il contient plus de 2000 entres !
Nous avons justement fait une slection (moins de 100 entres). Le rsum
devrait sure pour lusage indiqu dans cet ouvrage, et ensuite vous pourrez
obtenir des complments dans le manuel ociel.
Le site compagnon
Un site Internet, cr par les auteurs, accompagne ce livre. On y trouvera le
code de tous les exemples prsents ici, plus quelques complments.
partir du site, il est aussi possible de contacter les auteurs : Toutes les
questions, toutes les critiques et toutes les suggestions sont les bienvenues.
http://math.et.info.free.fr/TikZ/index.html
Chapitre 1
Premires gures
1.1 Utilisation de TikZ dans L
A
T
E
X
1.1.1 TikZ est un package : \usepackage{tikz}
TikZ tant un package pour L
A
T
E
X, il sutilise comme tout autre package, en
dclarant \usepackage{tikz} dans le prambule.
Pour savoir quelle est la version de TikZ dont vous disposez, vous pouvez
faire acher le numro de version par la commande \pgfversion (PGF est le
nom du moteur de TikZ).
Voici par exemple la version utilise ici : 2.00. Elle date de fvrier 2008.
Le document minimal utilisant TikZ est donc :
\documentclass{article}
\usepackage{tikz}
\begin{document}
La version de TikZ est : \pgfversion
\end{document}
Essayez dabord de composer ce document. Si votre distribution T
E
X est
jour, vous devriez voir ache la version 2.00. Si vous ne disposez pas de
TikZ ou si vous navez pas la version 2, le plus simple est sans doute de charger
entirement la plus rcente version de la distribution T
E
X (TikZ est fourni avec
les principales distributions de T
E
X).
Les standards sont TeX Live pour les systmes Unix (y compris MacOS X,
o elle est prsente dans MacTeX) et MiKTeX pour les systmes Windows. Ces
distributions T
E
X sont assez souvent mises jour (une fois par an environ).
La version 2 de TikZ est incluse dans la distribution TeX Live version 10.2
de 2008.
Pour Windows : http://miktex.org
Pour Mac : http://www.tug.org/mactex/
Pour Unix, Linux : http://www.tug.org/texlive/
Eventuellement, vous pouvez obtenir directement le package pgf et lui seul,
mais il faut une certaine expertise pour linstaller correctement la main .
Cependant MikTeX dispose dun utilitaire pour cela, accessible par un menu,
et il existe une commande tlmgr sous Unix (TeX Live manager).
11
12 CHAPITRE 1. PREMIRES FIGURES
Package pgf : http://sourceforge.net/projects/pgf/
ou http://www.ctan.org/tex-archive/graphics/pgf/
Comme dans toute utilisation de package, il faut tre prudent : il peut exister
des conits avec dautres packages. Le plus notable pour TikZ est le conit avec
xcolor, car TikZ rednit certaines des fonctions de xcolor. Cependant les
deux packages peuvent rester compatibles si on dclare xcolor avant tikz.
1.1.2 Insrer une gure TikZ : \begin{tikzpicture}
Llment de base que permet de crer TikZ dans un document L
A
T
E
X est
une gure (picture). Elle se matrialise dans le document L
A
T
E
X par un environ-
nement tikzpicture :
\begin{tikzpicture}
...
\end{tikzpicture}
A lintrieur de cet environnement se trouve une zone de texte dans laquelle
on crit suivant la syntaxe spciale de TikZ. Voici par exemple comment on
trace un cercle de rayon 1 dont le centre a pour coordonnes cartsiennes (0, 0)
(dans le systme de reprage de TikZ) :
\begin{tikzpicture}
\draw (0,0) circle (1) ;
\end{tikzpicture}
Ce qui donne :
La syntaxe \draw (0,0) circle (1) ; est analyse par TikZ suivant ses
propres conventions, qui ne sont pas celles du L
A
T
E
X standard, et que nous
dtaillerons par la suite.
Comment une gure TikZ est-elle place dans le document nal ? TikZ cal-
cule dabord lencombrement total de la gure et fait en sorte que L
A
T
E
X consi-
dre cette gure comme un bloc rectangulaire. L
A
T
E
X insre alors ce bloc dans
le ot normal, suivant les rgles applicables aux blocs de type mbox.
Dans lexemple qui suit, on a insr une gure TikZ dans du texte et on la
encadre avec \fbox :
Voici une premire ligne ...
... et de rayon 1
\fbox{
\begin{tikzpicture}
...
\end{tikzpicture}
}
insr dans une ligne ...
1.2. LE REPRAGE DES POINTS 13
Voici une premire ligne de texte L
A
T
E
X. pour montrer linsertion dune gure.
Voici le cercle de centre (0, 0) et de rayon 1 insr dans une
ligne L
A
T
E
X et encadr avec fbox. La gure est considre comme un rectangle et
est aligne sur la ligne de base.
On peut ensuite grer lalignement et le placement sur la page avec les ou-
tils L
A
T
E
X habituels de mise en page. La plupart du temps, on isole la gure sur
une ligne et on la centre avec \begin{center} ... \end{center}.
1.2 Le reprage des points
1.2.1 Coordonnes cartsiennes : (x,y)
Dans le systme par dfaut, les points sont reprs laide de deux axes
perpendiculaires : laxe des abscisses, horizontal et dirig vers la droite et laxe
des ordonnes, vertical et dirig vers le haut. Les vecteurs de base ont pour
longueur 1 cm (et quand on imprime, cest trs prcisment 1 cm). La position
dun point est repre par un couple de nombres (x,y)
1 0
1
(x, y)
x
y
On peut se demander o est place lorigine dans la gure engendre. En fait,
elle na pas de position prdnie. La gure occupe seulement la place minimale
pour que tous les lments tracs explicitement soient visibles. La position de
lorigine par rapport la gure dpend donc des points tracs. Si on trace juste
un cercle de centre (2, 0) et de rayon 1, lorigine ne sera pas dans le cadre de la
gure, qui ne montrera que les abscisses x entre 1 et 3 et les ordonnes y entre
1 et 1.
TikZ possde dautres systmes de reprage que nous verrons au fur et
mesure. Signalons tout de suite les coordonnes polaires (a:r) o a est langle
polaire en degrs et r le rayon polaire.
14 CHAPITRE 1. PREMIRES FIGURES
1.2.2 Coordonnes polaires : (a:r)
On peut reprer la position dun point M dans un systme de coordonnes
polaires, avec la syntaxe ( : r), o est langle orient (en degrs) entre le
vecteur de base des abscisses et le vecteur

OM et r est la distance OM.
1 0
1
r
( : r)

Les formules permettant de passer dun systme un autre sont :


r =

x
2
+y
2
, cos() =
x
r
, sin() =
y
r
x = r cos() et y = r sin()
Par exemple, le point de coordonnes cartsiennes (2,2) a pour coordon-
nes polaires approches (45:2.82), o 2.82 est la valeur approche de

8 =

2
2
+ 2
2
.
1 0
1

(45 : 2.82)
45
2
2
Dans la version de base, on doit spcier les coordonnes sous forme num-
rique approche. Cependant une extension de TikZ permet dintroduire quelques
calculs formels. Nous verrons cela dans la suite, mais pour linstant nous utili-
serons uniquement les valeurs numriques.
1.2.3 Echelle : [scale=k]
Il peut arriver que gure telle quelle est dnie avec les coordonnes soit
trop petite ou trop grande. On peut alors utiliser loption [scale=k], quon
crit juste aprs \begin{tikzpicture}. Elle signie que toutes les dimensions
seront multiplies par k.
Pour avoir une gure deux fois plus grande, crire
1.3. EXEMPLE : TRACER UN SEGMENT OU UN CERCLE 15
\begin{tikzpicture}[scale=2] ... \end{tikzpicture}
Le point de coordonnes (1,0) sera alors dessin 2 cm de lorigine au lieu
de 1 cm.
1.3 Exemple : tracer un segment ou un cercle
1.3.1 Enonc : deux segments, un cercle
Dans un repre orthonormal dunit 1 cm, tracer les deux segments reliant
lorigine aux points units de coordonnes (1, 0) et (0, 1), ainsi que le cercle
trigonomtrique.
1.3.2 Solution la main
Pour cela, on procde en sparant les trois lments de la gure :
1. Premier segment (horizontal)
(a) Positionner le crayon au-dessus de lorigine
(b) Abaisser le crayon et tracer le segment jusquau point de coordonnes
(1, 0)
2. Deuxime segment (vertical)
(a) Relever le crayon, le positionner au-dessus de lorigine
(b) Abaisser le crayon et tracer le segment jusquau point de coordonnes
(0, 1)
3. Cercle
(a) prendre un compas, piquer sa pointe lorigine
(b) xer un rayon de 1 cm, tracer le cercle.
1.3.3 Solution TikZ : (a,b) -- (c,d) et (a,b) circle (r)
Cette construction se traduit en TikZ de la manire suivante :
\begin{tikzpicture}
\draw (0,0) -- (1,0) ;
\draw (0,0) -- (0,1) ;
\draw (0,0) circle (1) ;
\end{tikzpicture}
On y retrouve tous les lments de la solution prcdente.
La gure entire est dlimite par un environnement au sens de L
A
T
E
X :
\begin{tikzpicture}
...
\end{tikzpicture}
16 CHAPITRE 1. PREMIRES FIGURES
A lintrieur de cet environnement, TikZ introduit sa propre syntaxe, qui
nest plus celle de L
A
T
E
X (ce qui peut drouter au dbut).
Chacune des sous-gures (segments, cercle) est dlimite par
\draw ... ;
Chaque lment dune sous-gure correspond une opration lintrieur
du \draw :
positionner : (x,y)
tracer un segment : --(x,y)
tracer un cercle : circle (r)
Il y a bien dautres lments de syntaxe dans TikZ, nous les verrons au fur
et mesure.
1.3.4 Ecrire des textes : (x,y) node [position] {texte}
Pour que la gure soit plus parlante, on veut maintenant crire le nom des
points ct des points : O pour lorigine, A pour (1, 0), B pour (0, 1)
O
A
B
Pour cela, on veut exprimer en gros les actions suivantes :
Ecrire la lettre O en-dessous de lorigine
Ecrire la lettre A droite du point (1, 0)
Ecrire la lettre B au-dessus du point (0, 1)
Ces trois instructions scrivent en TikZ de la manire suivante :
\draw (0,0) node[below]{$O$} ;
\draw (1,0) node[right]{$A$} ;
\draw (0,1) node[above]{$B$} ;
A chaque fois, on retrouve lopration de positionnement : (0, 0) pour se
positionner lorigine, etc.
Puis vient le mot-cl node. Cela fait rfrence un concept de TikZ :
le concept de nud. Cela dsigne en gros une bote de texte. Il faut ensuite
prciser o se place le centre de cette bote par rapport la position spcie.
Cest lobjet de loption entre crochets : [below] par exemple (il nest pas
ncessaire de donner une position trs prcise, TikZ fait des choix raisonnables)
. Puis on donne le texte acher, entre accolades, et dans ces accolades on
crit une expression L
A
T
E
X quelconque. Cest une des forces de TikZ : pouvoir
annoter une gure avec des textes crits en L
A
T
E
X.
Ces instructions se rajoutent la gure prcdente, qui devient :
\begin{tikzpicture}
\draw (0,0) -- (1,0) ;
\draw (0,0) -- (0,1) ;
1.3. EXEMPLE : TRACER UN SEGMENT OU UN CERCLE 17
\draw (0,0) circle (1) ;
\draw (0,0) node[below]{$O$} ;
\draw (1,0) node[right]{$A$} ;
\draw (0,1) node[above]{$B$} ;
\end{tikzpicture}
On peut ne pas spcier du tout de position. Le centre du texte est alors
plac au point de rfrence :
Par exemple, pour placer la lettre O prcisment lorigine, on peut crire :
\draw (0,0) node{$O$};
Les positions possibles sont (avec les signications des mots anglais) :
above, below, right, left,
above left, above right, below left, below right
au-dessus, en-dessous, droite, gauche
au-dessus gauche, au-dessus droite, en-dessous gauche, en-dessous
droite
Parfois ces indications qualitatives ne sont pas assez prcises. Le plus simple
est souvent alors de placer le centre du nud explicitement un autre point
proche du point principal, en contrlant exactement les coordonnes. Il y a
dautres mthodes, mais elles introduisent de nouveaux concepts techniques que
nous aborderons plus tard.

O
(0,0) node[below left] {$O$}

O
(-0.6,-0.3) node {$O$}
1.3.5 Arc de cercle : (x,y) arc (a:b:r)
Comment dessiner seulement le quart de cercle de A B?
O
A
B
Pour spcier mathmatiquement un arc de cercle, on peut donner le centre
du cercle, son rayon, langle polaire du point origine et langle polaire du point
extrmit (le vecteur de rfrence des angles polaires tant comme dhabitude
le vecteur (1, 0), ici

OA).
Par exemple, ici, on pourrait dire : tracer larc de cercle de centre (0, 0) et de
rayon 1 dont lorigine a pour angle polaire 0et donc lextrmit a pour angle
polaire 90.
Malheureusement, TikZ na pas choisi cette faon de sexprimer. Il faut dire
quelque chose comme :
tracer larc de cercle qui commence en A, de telle manire que A se trouve
sur ce cercle avec un angle polaire de 0, jusquau point dangle polaire 90sur
le mme cercle, sachant que le rayon du cercle vaut 1.
18 CHAPITRE 1. PREMIRES FIGURES
\draw (1,0) arc (0:90:1) ;
Bien sr, ces informations susent pour retrouver le centre et pour reconsti-
tuer la gure, mais ce nest sans doute pas la convention la plus naturelle possible
(sauriez-vous construire gomtriquement le centre ?). Lavantage quon peut lui
trouver, cest justement de ne pas avoir prciser le centre. Mais existe-t-il des
cas o on trace un arc de cercle sans avoir aucune ide du centre ?
Une application frquente de cette construction est de marquer un angle sur
une gure.
Soit le triangle OAB avec O(0, 0), A(2, 0), B(2, 2). Marquer sur le dessin
langle en O.
O
A
B
\begin{tikzpicture}
\draw (0,0) node[below] {$O$};
\draw (2,0) node[right] {$A$};
\draw (2,2) node[right] {$B$};
\draw (0,0) -- (2,0) ;
\draw (0,0) -- (2,2);
\draw (1,0) arc (0:45:1) ;
\end{tikzpicture}
Et on peut ensuite utiliser le concept de node pour crire la valeur de langle
ct. Il faut alors placer la bote de texte au bon endroit, prs de larc. Ici on
peut utiliser les coordonnes polaires, puisque langle en O est connu : 45. Le
nud est alors plac dans la direction de langle moiti : 22.5, une distance
un peu plus grande que le rayon de larc : 1.3. En fait, on ne peut indiquer quun
nombre entier de degrs, donc on arrondit par exemple 22.
\draw (22:1.3) node {$\dfrac{\pi}{4}$};

4
1.3.6 Annotations : angle droit, segments gaux
Annotons maintenant le triangle avec les signes habituels indiquant que cest
un triangle isocle rectangle.
1.3. EXEMPLE : TRACER UN SEGMENT OU UN CERCLE 19
On marque langle droit avec deux petits segments perpendiculaires, lgalit
des cts avec deux petits segments coupant les cts. Bien que ces signes ne
fassent pas vraiment partie de la gure et quils ne vont pas faire lobjet dune
tude gomtrique, il sagit aprs tout quand mme dlments gomtriques :
des segments. On peut les tracer avec les outils vus jusqu maintenant, mais
cela ncessite de calculer les coordonnes de leurs extrmits.
Cela peut paratre inhabituel, car on trace souvent ce genre de signes sans
trop y faire attention et sans avoir rsoudre de nouveaux problmes gom-
triques.
Ici les traits de la marque dangle droit sont horizontaux et verticaux, donc il
nest pas dicile dimaginer des coordonnes (leur longueur exacte rsulte dun
choix arbitraire, disons 0.3 .
Donc les nouveaux points introduire sont (1.7, 0), (1.7, 0.3) et (1.7, 0.3), (2, 0.3)
...
\draw (1.7, 0) -- (1.7, 0.3) ;
\draw (1.7, 0.3) -- (2, 0.3) ;
Les marques de segments gaux peuvent galement tre choisis horizontaux
et verticaux, disons de longueur 0.2 .
Donc les nouveaux points introduire sont (1.9, 1), (2.1, 1) et (1, 0.1), (1, 0.1).
....
\draw (1.9,1) -- (2.1,1);
\draw (1,-0.1) -- (1,0.1);
Et si on voulait marquer les points avec des points plus gros, comme ?
Eh bien, un gros point de ce type est simplement un caractre L
A
T
E
X :
$\bullet$ .
Il sut dintroduire un nud (node), centr sur le point (il sut de ne
donner aucune option de position) et dont le contenu est $\bullet$ :
20 CHAPITRE 1. PREMIRES FIGURES
\draw (0,0) node {$\bullet$} ;
\draw (2,0) node {$\bullet$} ;
\draw (0,2) node {$\bullet$} ;

On peut prolonger cette ide : un noeud de texte peut tre rempli avec un
symbole L
A
T
E
X, et un symbole nest rien dautre aprs tout quun dessin. Ecrire
un symbole, cest dessiner, et L
A
T
E
X est bien fourni en symboles divers. On peut
utiliser cette ide ici pour tracer les petits traits indiquant lgalit des cts : on
peut utiliser les symboles $|$ (barre verticale |), --- (tiret ), $\backslash$
(barre oblique \), $/$ (barre oblique /), $\times$ (multiplication ).
|
$|$
-

$\times$
$\times$ \ $\backslash$
1.4 Figure gomtrique : mthodes de base
Nous venons de voir les lments de base qui constituent une gure gom-
trique comme on en rencontre au collge et au lyce, et comment ils se traduisent
en TikZ :
des segments : (a,b) -- (c,d)
des cercles : (a,b) circle (r)
des arcs de cercle : (a,b) arc (u:v:r)
des annotations de texte : (a,b) node[position] {texte}
Nous allons voir maintenant comment on peut crer de nombreuses gures de
gomtrie uniquement laide de ces lments de base. Autrement dit, vous
pouvez tre oprationnels ds maintenant avec les techniques vues jusquici.
TikZ propose bien dautres possibilits (son manuel comporte 560 pages),
mais il est essentiel de se familiariser avec les bases pour comprendre lintrt
des extensions et savoir quand les utiliser de manire pertinente. Et encore une
fois, les bases peuvent vous sure pour la plupart de vos gures.
Cela peut paratre surprenant de pouvoir se contenter de ces constructions,
mais aprs tout, si vous observez une gure de gomtrie usuelle, mme com-
plique, vous verrez bien quelle nest forme que de ces lments, du moins en
ce qui concerne sa structure. Les gures usuelles sont bien de ce type : points,
segments, triangles, paralllogrammes, polygones, cercles, droites parallles et
perpendiculaires, etc.
1.4. FIGURE GOMTRIQUE : MTHODES DE BASE 21
1.4.1 Problme principal : calculer les coordonnes
Construire une gure avec les techniques de base seulement suppose que vous
devez calculer dabord par vos propres moyens les coordonnes (cartsiennes ou
polaires) de tous les points. Ce nest pas ce quon fait dhabitude quand on trace
une gure la main : on dispose doutils de dessin (rgle, compas, rapporteur,
papier quadrill) et doutils de calcul (calculatrice, logiciel mathmatique).
La dicult du calcul dpend de la gure que vous avez construire et des
contraintes sur cette gure. Si les positions des points sont imposes par un
nonc et si les points ne sont pas placs de manire pratique pour le dessin,
alors il peut y avoir beaucoup de calculs. Mais souvent, vous avez une certaine
marge de manuvre : si votre but est dillustrer une proprit gomtrique, vous
pouvez dcider de placer certains points de telle manire que les calculs soient
facilits.
Voici quelques stratgies, qui sont en fait dj bien connues pour les tracs
la main :
privilgier les points coordonnes entires
privilgier les directions verticales et horizontales
privilgier les directions dangles polaires simples et connus, ce qui per-
mettra dutiliser plus facilement les coordonnes polaires
commencer par la n : si on veut illustrer le cercle circonscrit un triangle,
commencer par placer le cercle
1.4.2 Exemple : triangle de cts 3, 4 et 5
Voici un exemple : tracer un segment [AB] horizontal de longueur 5, puis
tracer le triangle ABC direct tel que BC = 4 et AC = 3.
On choisit des coordonnes simples pour A et B : A(0, 0) et B(5, 0).
Il faut calculer les coordonnes de C, en traduisant AC = 3 et BC = 4, soit
x
2
+y
2
= 3
2
, (x 5)
2
+y
2
= 4
2
.
On rsout ensuite le systme par dirence : 10x25 = 7, soit x =
9
5
= 1.8,
puis, en remplaant, y =
12
5
= 2.4
On peut alors crire le code TikZ, quon peut annoter avec des commentaires
L
A
T
E
Xpour plus de lisibilit :
\begin{tikzpicture}
\draw (0,0) -- (5,0); % AB = 5
\draw (0,0) -- (1.8,2.4); % AC = 3
\draw (5,0) -- (1.8,2.4); % BC = 4
\end{tikzpicture}
22 CHAPITRE 1. PREMIRES FIGURES
On peut rajouter des nuds de texte pour montrer les noms les points :
\draw (0,0) node [below] {$A$}; etc.
A B
C
Et nalement on peut indiquer les longueurs des cts. Pour cela, il faut
trois noeuds de texte, placs aux alentours des milieux des segments, milieux
dont on calcule les coordonnes :

5
2
, 0

17
5
,
6
5

9
10
,
6
5

.
Donc par exemple \draw (3.4,1.2) node [above right] {$4$} ; etc.
A B
C
4 3
5
Il serait dommage de ne pas en proter pour illustrer le thorme de Py-
thagore : langle en C est droit puisque 3
2
+ 4
2
= 5
2
. Pour noter cela, il faut
des petits traits dans langle en C, de longueur 0.5 par exemple, de manire
former un carr CGIH avec G sur [CA] et H sur [CB].
C
G
I
H
On pose

CG =
1
2

1
3

CA,

CH =
1
2

1
4

CB, puis

CI =

CG+

CH.
On trouve G(1.5, 2), H(2.2, 2.1) et I(1.9, 1.7).
Sur le dessin on trace [GI] et [IH] : \draw (1.5,2) -- (2.2,2.1) ; etc.
A B
C
4 3
5
1.4. FIGURE GOMTRIQUE : MTHODES DE BASE 23
Il faut quand mme un certain temps pour concevoir tout cela, faire les
calculs et raliser la gure, et cela pour un simple triangle. Le plus long nest
dailleurs pas de tracer le triangle, mais de bien placer les annotations (noms
des points, longueurs des cts, marque dangle droit). On conoit alors que la
ralisation dune gure plus complexe peut demander beaucoup de temps et de
calculs.
Une possibilit est alors de les faire excuter dabord par un autre logiciel
spcialis en gomtrie et en mathmatiques. Un exemple dun tel logiciel est
GeoGebra. Nous allons voir comment lutiliser pour prparer cette gure.
1.4.3 Prparer la gure avec GeoGebra
Le site de GeoGebra est ladresse http://www.geogebra.org/
GeoGebra permet de construire interactivement et visuellement une gure
avec des primitives mathmatiques, comme tracer la perpendiculaire une droite
passant par un point, tracer lintersection de deux lignes, tracer le milieu dun
segment, tracer limage dun point par une rotation donne, tracer le cercle
passant par trois points, etc. Il permet aussi de nommer les points, de tracer
les droites par leurs quations, de dterminer le lieu dun point quand un autre
varie.
Autrement dit, il manipule directement des objets gomtriques de manire
visuelle et conceptuelle et il a des capacits de calcul mathmatique. Ces possi-
bilits peuvent tre trs avantageuses pour prparer une gure TikZ.
Un autre de ses avantages est que vous pouvez dplacer certains points pour
que la gure soit bien mise en place sans avoir tout rednir (les contraintes
gomtriques imposes restent vries). Pour cette raison, on dit que cest un
logiciel de gomtrie dynamique (un autre excellent logiciel bien connu de ce
type est Cabri).
Voici comment raliser la gure prcdente avec GeoGebra :
Tracer le point A(0, 0), le point B(5, 0), le cercle de centre A et de rayon
3, le cercle de centre B et de rayon 4, puis dnir C comme un des points
dintersection des deux cercles (le point dordonne positive). Dans la colonne
des coordonnes gauche, vous pouvez lire les coordonnes de C : (1.8, 2.4).
Vous navez pas eu de calculs faire pour cela.
De mme on peut tracer les milieux des cts et lire leurs coordonnes.
Pour la marque dangle droit, on peut construire G et H comme les inter-
sections du cercle de centre C et de rayon 0.5 avec les segments [CA] et [CB],
puis obtenir I comme image de C par la rotation de centre H et dangle 90.
A B
C
D E
F
G
H
I
24 CHAPITRE 1. PREMIRES FIGURES
On peut ainsi retrouver toutes les coordonnes utiles et reconstituer la gure.
1.4.4 Faire engendrer le code TikZ par GeoGebra
Au lieu de lire les coordonnes et de les utiliser pour crire le code TikZ, vous
pouvez laisser GeoGebra le faire pour vous ! En eet, depuis la prversion de
dveloppement 3.1 de septembre 2008, on trouve un menu Fichier Exporter
Export PGF/TikZ . Lorsquon demande un export, on obtient le code dun
document L
A
T
E
X contenant une gure TikZ. Si votre seul but est de produire
un document avec juste une gure, cela sut. La gure reproduit lidentique
(quasiment) celle que vous avez construite avec GeoGebra, avec la qualit TikZ.
Autrement dit, dans ce cas, vous navez mme pas apprendre TikZ!
Il se peut que vous souhaitiez inclure cette gure dans un document L
A
T
E
X,
ce que vous pouvez faire par copier-coller. Il se peut aussi que vous ne souhaitiez
pas conserver tous les lments de la gure (en particulier ce qui concerne les
dclarations des couleurs, la grille, les axes). Il faut alors analyser prcisment
le code produit par GeoGebra pour extraire juste ce qui vous intresse, par
exemple les segments entre les points (il est prfrable de cacher dabord sous
GeoGebra tout ce quon ne souhaite pas voir). En gnral, le code correspondant
est identiable et bien group.
Par exemple, aprs avoir trac un triangle quilatral avec la commande
GeoGebra polygone rgulier , on peut extraire juste les lignes qui tracent le
triangle :
\draw [color=zzttqq] (2,1)-- (4,2);
\draw [color=zzttqq] (4,2)-- (2.13,3.23);
\draw [color=zzttqq] (2.13,3.23)-- (2,1);
puis supprimer les indications de couleur. On obtient alors un trac simple :
\begin{tikzpicture}
\draw (2,1)-- (4,2);
\draw (4,2)-- (2.13,3.23);
\draw (2.13,3.23)-- (2,1);
\end{tikzpicture}
On peut ensuite partir de ce code pour complter la gure.
Ce procd a t utilis pour construire de nombreuses gures de gomtrie
de ce livre, en particulier pour les exercices qui suivent.
1.5 Exercices : gures gomtriques
Dans chaque exercice, on demande de raliser la gure spcie. Toutes ces
gures peuvent tre construites en TikZ uniquement partir des lments de
1.5. EXERCICES : FIGURES GOMTRIQUES 25
base : coordonnes, segments, cercles, arcs, nuds. Pour certaines gures, les
coordonnes ont t obtenues laide du logiciel GeoGebra.
Comme lments de solution, nous donnons les coordonnes utilises (il est
recommand dutiliser GeoGebra ou au minimum un papier quadrill).
Il est parois tonnant de sapercevoir que, mme pour des gures aussi clas-
siques et relativement simples, le nombre de points peut tre lev (une vingtaine
de points). Cest d en partie aux points auxiliaires utiliss pour les annotations.
1.5.1 Thorme de Thals
Figure : deux droites obliques coupes par trois parallles horizontales.
Aide :
droites obliques (0,0)--(1,3) et (4,0)--(2,3)
droites parallles (0,1)--(4,1) (0,1.5)--(4,1.5) et
(0,2.5)--(4,2.5)
1.5.2 Paralllogramme
Les diagonales dun paralllogramme se coupent en leur milieu
|| ||
\
\
Aide :
Centre : $\bullet$ (0,0)
Diagonales : (-2,0)--(2,0) et (1,1)--(-1,-1)
Marques $||$ : (1, 0) et (1, 0)
Marques $\backslash$ : (0.5, 0.5) et (0.5, 0.5) ;
1.5.3 Losange
Les diagonales dun losange sont perpendiculaires.
Ici le losange est form de deux triangles quilatraux.
26 CHAPITRE 1. PREMIRES FIGURES
/

Aide :
Losange : (0, 0), (2, 0), (3, 1.73), (1, 1.73)
Diagonales (0,0) -- (3,1.73) ; (1,1.73) -- (2,0)
Marques $/$ : (2, 1.73), (1, 0)
Marques --- : (2.5, 0.87), (0.5, 0.87)
Angle droit : (1.38, 1.07), (1.59, 1.19), (1.7, 0.99)
1.5.4 Centre de gravit
Le centre de gravit dun triangle est lintersection des mdianes.
Les points ont t choisis sur le cercle trigonomtrique.
A

3
5
,
4
5

, B

3
2
,
1
2

, C

3
2
,
1
2

C
A
B

G
\
\
|| ||
Aide :
Echelle : 2.
Triangle : A(0.6, 0.8), B(0.87, 0.5), C(0.87, 0.5)
Milieux : (0, 0.5), (0.74, 0.15), (0.13, 0.15)
Centre de gravit G(0.2, 0.07)
Marques $\backslash$ : (0.24, 0.47), (0.5, 0.18)
Marques $||$ : (0.44, 0.5), (0.44, 0.5)
1.5.5 Cercle circonscrit
Le centre du cercle circonscrit un triangle est lintersection des mdiatrices.
Mme triangle : A

3
5
,
4
5

, B

3
2
,
1
2

, C

3
2
,
1
2

1.5. EXERCICES : FIGURES GOMTRIQUES 27


C
A
B

O
\
\
|| ||
Aide :
Echelle : 2.
Triangle : A(0.6, 0.8), B(0.87, 0.5), C(0.87, 0.5)
Milieux : (0, 0.5), (0.74, 0.15), (0.13, 0.15)
Cercle : centre O(0, 0), rayon : 1 (tout a pour a !)
Marques $\backslash$ : (0.24, 0.47), (0.5, 0.18)
Marques $||$ : (0.44, 0.5), (0.44, 0.5)
Angle droit sur [BC] : (0.1, 0.5), (0.1, 0.4), (0, 0.4)
Angle droit sur [AB] : (0.08, 0.09), (0.02, 0.14), (0.07, 0.2)
1.5.6 Orthocentre
Lorthocentre est lintersection des hauteurs.
A
B
C

H
Aide :
Triangle : A(0, 0), B(2, 2), C(3, 2)
Pieds des hauteurs :
sur [AC] : (0.46, 0.31), sur [BC] : (2.35, 0.59), sur [AB] : (0.5, 0.5)
Orthocentre : H(0.8, 0.2)
Angles droits :
sur [AC] : (0.8, 0.53), (1.02, 0.2), (0.68, 0.03)
sur [BC] : (1.96, 0.49), (2.06, 0.1), (2.45, 0.2)
28 CHAPITRE 1. PREMIRES FIGURES
1.5.7 Centre du cercle inscrit
Le centre du cercle inscrit est lintersection des bissectrices.
C
B A
I

Aide :
Triangle : A(0, 0), B(4, 0), C(3, 3)
Cercle : centre I(2.54, 1.05), rayon : 1, 05
Points de contact :
sur [AB] : (2.54, 0), sur [AC] : (1.8, 1.8), sur [BC] : (3.54, 1.38)
Marques dangles (en A, langle est simple : 45) :
BAI : (1,0) arc(0:22:1), IAC : (1.11,0.46) arc (23:45:1.2)
Angle droit sur [AB] : (2.34, 0), (2.34, 0.2), (2.54, 0.2)
1.6 Rsum
TikZ est un package pour L
A
T
E
X, dclar par \usepackage{tikz}.
Une gure TikZ est engendre par du code plac dans un environnement
\begin{tikzpicture} ... \end{tikzpicture}, suivant une syntaxe sp-
ciale propre TikZ.
Les points sont reprs par leurs coordonnes cartsiennes (x,y) ou par leurs
coordonnes polaires (a:r)
Lunit par dfaut est 1 cm, mais on peut appliquer toute la gure une
chelle avec [scale=k] (lunit devient k cm).
La principale commande de dessin est \draw ... ;
Tracer un segment : \draw (a,b) -- (c,d) ;
Tracer un cercle : \draw (a,b) circle (r) ;
Tracer un arc de cercle : \draw (a,b) arc (u:v:r) ;
Ecrire un texte L
A
T
E
X : \draw (a,b) node {texte} ;
ou \draw (a,b) node [position] {texte} ; (position : above, below,
etc.)
Le problme principal pour tracer une gure de gomtrie est de dterminer
les coordonnes des points, surtout pour les points auxiliaires servant aux anno-
tations. Pour cela, il peut tre pratique de saider dun logiciel auxiliaire comme
GeoGebra, qui est mme capable dengendrer du code TikZ.
Chapitre 2
Chemins, options graphiques
Dans ce chapitre nous allons voir direntes faons de simplier le trac des
gures par rapport aux mthodes de base vues dans le chapitre prcdent, en
introduisant la possibilit de nommer les points, de regrouper des traits lmen-
taires dans un chemin, de spcier des positions par rapport des traits et plus
seulement des points. Dautre part, nous prsentons des options graphiques
permettant de faire varier lapparence des traits : pointills, couleurs, remplis-
sage. Et enn nous introduisons des faons de prciser le cadre de la gure :
axes, grille, fentre.
Ces outils permettent de raliser de nombreuses gures de gomtrie avec
une prsentation de qualit.
2.1 Simplications, raccourcis, abstractions
Toutes les gures prcdentes taient construites point par point, trait par
trait, et partir de coordonnes qui devaient toutes tre calcules au pralable.
On peut trouver cela un peu fastidieux.
TikZ fournit direntes facilits pour simplier les choses. Mais qui dit sim-
plication dit nouveaux outils, nouvelle syntaxe, nouveaux concepts. Ces nou-
veauts ont un avantage et un inconvnient : lavantage, cest que le code
crire sera un peu plus simple ou de plus haut niveau, linconvnient cest que
cela rajoute une charge mentale de mmoire, de comprhension, de dcision. Il
faut apprendre et comprendre les nouveauts et il faudra se demander lors de
chaque gure quel va tre le choix de loutil le plus appropri. Ces nouveauts
pourront mme embrouiller rtrospectivement ce quon pensait avoir compris.
Donc prudence : il nest pas ncessaire de se prcipiter sur toutes les nouveauts.
Il faut que lacquisition soit progressive
2.1.1 Nommage des points : \coordinate(nom) at (x,y)
Pour concevoir et vrier une gure, il est plus agrable de pouvoir dsigner
les points par des noms plutt que par des coordonnes.
Il y a plusieurs variantes syntaxiques. Nous conseillons la suivante, qui joue
le rle de dclaration, un peu comme dans un texte mathmatique : Soit A le
point de coordonnes (1, 0) . Cela scrit \coordinate (A) at (1,0) ;
29
30 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
\coordinate (nom) at (x,y) ;
Le nom peut tre choisi librement, mais il ne doit pas contenir de signes de
ponctuation ou de symboles spciaux.
Si on reprend la gure du dbut, on peut dclarer les noms des points puis
utiliser ensuite ces noms pour le trac :
\begin{tikzpicture}
\coordinate (O) at (0,0) ;
\coordinate (A) at (1,0) ;
\coordinate (B) at (0,1) ;
\draw (O) -- (A) ;
\draw (O) -- (B) ;
\draw (O) circle (1) ;
\end{tikzpicture}
Apparemment, on ny gagne pas en concision, puisquon rajoute des lignes.
Mais on y gagne sur plusieurs points : en lisibilit dabord (on voit clairement
quon trace le segment [OA] par exemple), en modularit ensuite (on spare net-
tement les positions particulires et la structure de la gure) et en rutilisabilit
enn (on peut utiliser plusieurs fois le mme nom pour faire rfrence la mme
position).
Cela facilite aussi les corrections : si on sest tromp dans le calcul des
coordonnes dun point, il ny a quun seul endroit rectier (la dclaration
des coordonnes).
2.1.2 Enchanement de traits : chemin, position courante
Jusqu maintenant, nous avons trac les traits un par un, chacun dans une
instruction \draw.
Cest un peu fastidieux quand il faut tracer des successions de traits qui
senchanent (des lignes brises et polygones) car on est oblig dcrire deux fois
ou plus les points intermdiaires. TikZ introduit un raccourci pour cela : plutt
que dcrire
\draw (0,0) -- (1,0) ;
\draw (1,0) -- (1,1) ;
On peut crire en enchanant les traits dans une mme instruction :
\draw (0,0) -- (1,0) -- (1,1) ;
Cela sappelle un chemin (path). Cette notion est introduite ici propos
dune suite de segments, mais elle est beaucoup plus gnrale et forme une des
bases de TikZ.
Syntaxiquement, elle se prsente comme une suite doprations de chemin
(path operations). Ici, il y en a trois : (0,0) , qui est une opration de posi-
tionnement explicite, puis -- (1,0) et -- (1,1) , qui sont des oprations
de trac de segment.
Ces dernires oprations ont un double rle : un rle de trac dabord, mais
aussi un rle de positionnement implicite aprs le trac. En eet, le long dun
chemin, TikZ maintient une position courante : cest la position qui rsulte
2.1. SIMPLIFICATIONS, RACCOURCIS, ABSTRACTIONS 31
du trac prcdent et qui servira de rfrence (point de dpart) pour le trac
suivant. Dune manire image, cest la position du crayon.
Dans le cas dun segment, cette position implicite est naturelle : aprs lins-
truction de trac -- (x,y) , la position courante devient (x, y). Mais il y a
dautres instructions pour lesquelles la convention est moins vidente, ce qui
peut tre source de confusions.
Par exemple, aprs le trac dun cercle par circle (r), la position courante
devient le centre du cercle.
Aprs le trac dun arc, la position courante devient lextrmit de larc.
Cette dirence entre arc et cercle explique peut-tre la convention inhabituelle
choisie pour dcrire un arc. Un arc peut tre inclus dans une succession de lignes
pour former une ligne continue :
\draw (0,0) -- (1,1) arc (180:0:1) -- (4,0);
(0, 0)
(1, 1)
(4, 0)
180 0
Les indications donnes en gris ont t rajoutes pour bien montrer lin-
uence des paramtres, mais elles ne font pas partie du dessin proprement dit.
Si on remplace larc par un cercle, on obtient :
\draw (0,0) -- (1,1) circle(1) -- (4,0);
(0, 0)
(1, 1)
(4, 0)
Aprs le trac du cercle, le crayon est en son centre (1, 1) et on repart de l
pour joindre le point suivant (4, 0).
2.1.3 Rectangle : (a,b) rectangle (c,d)
Il est frquent davoir tracer un rectangle dont les cts sont parallles
aux axes. TikZ fournit une opration pour cela : rectangle, utilise sous la
forme (a,b) rectangle (c,d), o (a, b) et (c, d) sont deux coins opposs du
rectangle.
Exemple : (0,0) rectangle (2,1);
(0,0)
(2,1)
Autre exemple : (0,2) rectangle (2,0);
32 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
(0,2)
(2,0)
2.1.4 Figures fermes : cycle, fill
Pour tracer un triangle ABC, on peut toujours crire :
\draw (a) -- (b) -- (c) -- (a);
Mais TikZ possde le concept de chemin ferm. Il est possible de dire : tracer
de A B puis C, puis fermer la gure :
\draw (a) -- (b) -- (c) -- cycle;
Il y a deux intrts cela : dabord dans la jonction des traits entre le dpart
du point initial et le retour au point initial (TikZ sarrange pour que la jonction
se fasse bien au pixel prs) et ensuite dans le remplissage des gures fermes
avec de la couleur ou des motifs.
Pour remplir une gure ferme, on utilise \fill au lieu de \draw :
\fill (0,0) -- (1,0) -- (1,1) -- cycle;
Le principal intrt de la notion de chemin ne rside pas tellement dans lco-
nomie dcriture quelle permet (on conomise quelques instructions \draw),
mais dans cette possibilit de dnir des chemins ferms pour linstruction
\fill. Elle a un autre avantage : elle permet de regrouper en un seul endroit
les options graphiques qui sappliquent sur tout le chemin (voir plus loin).
Nous allons voir plus loin comment remplir la gure avec direntes couleurs
et motifs.
2.1.5 Noeuds sur les traits : midway, sloped
.
Dans ce qui prcde, nous avons vu lopration node, qui permet de placer
une bote de texte une position donne, avec ventuellement une option de po-
sitionnement : \draw (0,0) node[below right] {$O$} node{$\bullet$};
O

On peut aussi placer un nud pour annoter un trait et non plus un point :
pour cela on place lopration node aprs lextrmit du trait, avec une option de
position relative au trait (midway, near start, near end). TikZ comprendra
alors grce cette option que le nud se rapporte au trait plutt quau point.
\draw (0,0) -- (4,0) node[midway] {$M$}
node[near start] {$NS$}
node[near end] {$NE$};
2.1. SIMPLIFICATIONS, RACCOURCIS, ABSTRACTIONS 33
M NS NE
On peut ajouter les options usuelles de placement : above, below, etc. (ici :
above), et ajouter dautres nuds (ici les points qui marquent les positions
exactes) : node[midway,above] {$M$} node[midway] {$\bullet$}
Cela permet par exemple de tracer rapidement le milieu M dun segment.
M

NS

NE

On peut aussi indiquer que le texte doit suivre lorientation du trait : option
sloped
node[midway,above,sloped] {$M$}
M
N
S
N
E
Cette dernire possibilit est pratique pour noter des segments gaux par
de petits traits. Au lieu de tracer ces petits traits explicitement laide de
coordonnes, on peut les considrer comme des nuds associs aux segments
(option midway), avec un contenu symbolique comme $|$ (un trait vertical |)
et loption sloped pour que le petit trait reste perpendiculaire au segment :
node[midway, sloped]{$|$}
|
|
|
2.1.6 Coordonnes relatives : ++(x,y)
Il peut tre pratique de dsigner un point non pas par ses coordonnes ab-
solues mais par un dplacement partir du point courant.
La notation \draw (a,b) -- ++(x,y); est un raccourci qui peut remplacer
\draw (a,b) -- (c,d) avec c = a +x et d = b +y.
Autrement dit, on joint le point (a, b) au point qui sen dduit par la trans-
lation de vecteur (x, y).
Ainsi, \draw (1,2) -- ++(1,1); quivalent \draw (1,2)--(2,3);
(a,b)
++(x,y)

v (x, y)
34 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
Ici encore, les annotations en gris ne font pas partie de la gure proprement
dite.
Cette opration est intressante pour dcrire un chemin par tapes locales :
pour trouver le trsor, partez du grand chne en (1, 2), puis faites 2 pas vers le
nord, puis 3 pas vers lest.
\draw (1,2) -- ++(0,2) -- ++ (3,0);
Cest quivalent \draw (1,2) -- (1,4) -- (4,4);
(1, 2)
(1, 4)
(4, 4)
++(0,2)
++(3,0)
Cela peut tre pratique pour tracer des polygones dont on connat les vec-
teurs des cts, par exemple un carr OABC :
\draw (0,0) -- ++(1,1) -- ++(-1,1) --++ (-1,-1) -- cycle;
Les coordonnes des vecteurs sont :

OA(1, 1),

AB(1, 1),

BC(1, 1)
O
A
B
C
Cette dernire technique est particulirement intressante en utilisant les
coordonnes polaires, par exemple pour tracer un pentagone rgulier. Langle
entre deux cts successifs dun pentagone rgulier est 72, et les cts ont tous
la mme longueur, prenons 1 par exemple.
Le premier ct est (0,0) -- (1,0). Pour tracer le deuxime ct, on peut
crire : \draw -- ++(72:1). Cela revient dire : tracer un segment dans la
direction dangle polaire 72, sur une distance 1. Pour le troisime ct, il sura
de dire -- ++ (144:1), sachant que 144 est le double de 72, cest langle polaire
du troisime ct. Et ainsi de suite avec les multiples de 72 :
\draw (0,0) -- (1,0)
-- ++(72:1) -- ++(144:1) -- ++(216:1) -- cycle;
(0, 0) (1, 0)
72
144
2.2. DCORATIONS, STYLES, OPTIONS GRAPHIQUES 35
2.2 Dcorations, styles, options graphiques
2.2.1 Options : [ ]
Une gure nest pas constitue que de traits pleins entre des points. Il devient
trs vite ncessaire de modier laspect des lignes : pointills au lieu de traits
pleins, couleur, paisseur des traits, pointes de ches, etc. Non pas pour le
simple plaisir de faire joli, mais pour communiquer des informations propos
de la gure.
TikZ permet cela par lintermdiaire doptions graphiques. Le concept et la
syntaxe des options est analogue ce quon trouve dans L
A
T
E
X : les options
scrivent entre crochets, spares par des virgules. Par exemple [thick, red]
signiera quon veut des traits pais et rouges. Remarquez quon a dj utilis
cette syntaxe pour le positionnement des noeuds :
dans lexpression node[below]{}, below tait une option au sens indiqu ici.
Les questions qui se posent propos de cette nouvelle construction syn-
taxique sont les suivantes :
o peut-on (doit-on) crire ces options ?
quelles sont les options disponibles, avec quelle syntaxe ?
quels sont les lments de la gure aects par loption ?
Nous ne pouvons pas rpondre dun seul coup ni compltement toutes ces
questions. En gros, les options scrivent immdiatement aprs les direntes
commandes comme \tikzpicture (pour une option sappliquant toute la
gure), \draw (pour une option sappliquant uniquement au chemin), et dans les
oprations de chemin, comme node. Elles sont . . . optionnelles, cest--dire quon
peut ne pas les faire gurer (dans ce cas TikZ choisira alors automatiquement
des valeurs par dfaut). En fait, chaque fois que nous introduirons une nouvelle
possibilit de TikZ, nous indiquerons les principales options associes.
2.2.2 Epaisseur des traits : thick, thin, line width=5pt
A chaque opration draw, on peut spcier lpaisseur des traits, avec les
options suivantes (n ou pais) :
thin, very thin, ultra thin
thick, very thick, ultra thick
Par exemple \draw [very thick] (0,0) -- (1,0);
Remarquez que TikZ permet de sexprimer de manire qualitative (en an-
glais), sans trop se proccuper de prcision absolue. Cest souvent susant, mais
si on veut on peut aussi spcier la largeur exacte du trait, avec des units de
longueur :
[line width=5pt]
On peut remarquer deux choses dans cette syntaxe : dabord les noms des
options peuvent contenir des espaces, et ensuite il y a deux formes possibles,
lune courte, comme [thin], et lautre longue comme [line width=5pt] . On
direncie en fait le nom de loption (line width) et la valeur de loption
(5pt). La plupart du temps, TikZ se dbrouille tout seul pour trouver de quelle
option on parle quand on donne une valeur seulement (quand on donne [red],
TikZ reconstitue la syntaxe complte [color=red] ). En cas dambigut il faut
prciser le nom de loption.
36 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
2.2.3 Pointills, styles des traits : dotted, dashed, double
On peut spcier quun trait doit tre en pointills :
dotted
Options possibles : dotted, loosely dotted, densely dotted
ou en traitills :
dashed
Options possibles : dashed, loosely dashed, densely dashed
On peut aussi spcier quun trait doit tre double :
\draw [double] (0,0) -- (1,0)
On peut mme prciser lcartement entre les deux traits :
\draw [double distance = 5pt] (0,0) -- (1,0)
2.2.4 Pointes de ches : ->, >= stealth
On peut spcier que lextrmit dun trait doit tre une pointe de che
avec loption [->].
Si la che doit tre lorigine plutt qu lextrmit : [<-].
Et on peut combiner les deux : [<->].
Pour un chemin form de traits contigus dans une mme instruction \draw,
la che sapplique tout le chemin considr comme un seul trait.
Exemple : \draw [<->] (0,0) -- (1,0) -- (1,1);
Les pointes de ches par dfaut sont un peu petites, et on peut en prfrer
dautres. On peut alors spcier le type de pointe quon veut avec loption >,
par exemple : [>=stealth]. Rappelons que les options saccumulent entre cro-
chets, spares par des virgules : [>=stealth,->]
Le mot stealth voque la forme de lavion furtif appel stealth-ghter (stealth
= ruse).
Autre forme de che, plus triangulaire : [>=latex]
Une extension de TikZ permet davoir des pointes de ches varies (package
arrowtips)
2.3. AXES, GRILLE, FENTRE DAFFICHAGE 37
2.2.5 Couleurs : red, color=gray !20
On peut indiquer quun trait ou une rgion doit tre dune couleur donne
en indiquant seulement le nom de la couleur comme option : [red] ou avec le
nom doption : [color=red].
On peut spcier une couleur pour toute la gure :
\begin{tikzpicture}[red] ... ou juste un trait \draw[red]...
Les noms de couleurs autoriss sont les noms de couleur standard en L
A
T
E
X.
Les couleurs de base sont :
red, green, blue, cyan, yellow, magenta, black, white, gray
On peut de plus ajouter une nuance la couleur, le procd consistant
suxer le nom de couleur par un point dexclamation suivi dun nombre de 0
100.
Exemple : [color=gray!20], signie que la couleur est grise 20% (plus le
nombre est petit, plus la couleur est claire). Mais attention, syntaxiquement il
faut alors indiquer obligatoirement le nom de loption : color=gray!20
gray!20 gray!40 gray!60 gray!80 gray!100
On peut distinguer la couleur de remplissage et la couleur du contour :
\draw [black,fill=gray!20]
2.3 Axes, grille, fentre dachage
Dans les gures de gomtrie la position prcise des points est importante,
et il est pratique de lindiquer visuellement en traant les axes ainsi quun qua-
drillage (en anglais grid, souvent traduit par grille).
2.3.1 Axes
TikZ ne possde pas dinstruction particulire pour tracer les axes. Un axe
nest rien dautre quun segment entre deux points, quon trace comme tous
les autres segments, en lui appliquant ventuellement des options graphiques
(ches, paisseur, pointills, couleur) et en ajoutant des annotations :
\begin{center}
\begin{tikzpicture}
\draw[->] (-1,0) -- (1,0);
\draw (1,0) node[right] {$x$};
\draw [->] (0,-1) -- (0,1);
\draw (0,1) node[above] {$y$};
\end{tikzpicture}
\end{center}
38 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
x
y
Une gure classique consiste indiquer les coordonnes dun point dans les
axes.
Par exemple, pour le point A(2, 1), il faut joindre le point A ses projets
sur les axes (2, 0) et (0, 1), et indiquer ct de ces projets labscisse 2 et
lordonne 1.
\draw [dashed] (2,1) -- (2,0) node[below] {$2$};
\draw [dashed] (2,1) -- (0,1) node[left] {$1$};
2
1
A(2, 1)
Plutt que de tracer sparment les deux segments, il est possible de faire le
dessin en une seule opration. On veut joindre le point (0, 1) au point (2, 0) par
une ligne dabord horizontale, puis verticale. TikZ possde une opration pour
cela, note -| :
\draw [dashed] (0,1) -| (2,0);
Ou, dans lautre sens, on joint le point (2, 0) au point (0, 1) par une ligne
dabord verticale puis horizontale : \draw [dashed] (2,0) |- (0,1);
2.3.2 Quadrillage (grille) : grid
Pour rendre les coordonnes directement lisibles, il est souvent pratique daf-
cher un quadrillage (une grille). TikZ fournit linstruction grid pour cela.
La syntaxe est \draw (a,b) grid (c,d);
Cela dessine un quadrillage dont les points sont les points de coordonnes
entires lintrieur du rectangle dni par deux coins opposs (a, b) et (c, d).
Par dfaut, les traits sont espacs de 1 cm.
Par exemple \draw (0,0) grid (3,2);
(0, 0)
(3, 2)
2.3. AXES, GRILLE, FENTRE DAFFICHAGE 39
Le problme dun quadrillage, cest quil risque dembrouiller la gure. Il
vaut donc mieux le dessiner discrtement. Pour cela, on peut utiliser les options
very thin et gray (trait trs n et gris).
\draw [very thin, gray] (0,0) grid (3,2);
\draw (1,0) -- (3,2);
Cela peut ne pas sure pour les nuds de texte. On peut alors aecter
ces noeuds loption fill=white. Cela colorie le fond du nud en blanc (non
transparent). Il faut alors tracer le noeud aprs la grille.
(AB)
node
(AB)
grid puis node[fill=white]
La distance par dfaut de 1 cm peut parfois tre insusante. On peut alors
utiliser loption step applique lopration grid.
Par exemple, il est possible dobtenir un quadrillage de cahier dcolier avec :
grid [step=0.5], et pour un papier millimtr : grid [step=0.1]. Et si on
veut renforcer les traits des units, on peut tracer une autre grille standard
par-dessus, avec des traits un peu plus gros.
0

grid[step=0.5]
0

grid[step=0.1]
0

deux grilles
2.3.3 Fentre dachage : clip
Il se peut que, pour direntes raisons, on doive rduire la fentre dachage,
cest--dire la rgion qui sera eectivement ache. On utilise alors linstruction
\clip.
La syntaxe est \clip (a,b) rectangle (c,d);
La rgion eectivement ache sera seulement lintrieur du rectangle dont
les coins opposs sont (a, b) et (c, d). Cela aectera uniquement les dessins placs
aprs linstruction \clip.
Les pointills ont t rajouts pour lexemple, ils ne font pas partie de lins-
truction \clip.
40 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
1
2
3
4
5 (a,b)
(c,d)
\clip (a,b) rectangle (c,d)
1
2
3
4
5
(a,b)
(c,d)
En fait, la fentre na pas forcment toujours une forme de rectangle. Elle
a la forme quon dnit lintrieur de linstruction \clip. En particulier, elle
peut avoir une forme circulaire. \clip (a,b) circle (r);
1
2
3
4
5
\clip (a,b) circle (r) ;
1
2
3
4
5
(a,b)
(c,d)
2.4 Complments : opacit, couleurs, styles
2.4.1 Ordre des tracs, transparence : opacity
Dans une gure, les traits se superposent dans lordre du trac. Or certains
tracs sont transparents et dautres pas. Donc les tracs non transparents vont
cacher les traits qui ont t tracs avant.
Cest le cas en particulier avec la grille grid et des commandes \fill.
La grille est transparente, mais un triangle rempli avec \fill ne lest pas :
grid, puis \fill \fill, puis grid
Autre exemple, dans loption double, qui trace un trait double, en fait le trait
est un rectangle et la rgion entre les deux traits nest pas transparente. Il
faut ventuellement y penser pour lordre de trac des traits, sachant que les
dirents traits se dessinent lun aprs lautre, cest--dire lun sur lautre. Dans
lexemple suivant, le trait vertical de gauche est trac avant le trait horizontal
double, et le trait vertical de droite est trac aprs. Le trait horizontal en traitill
est trac aprs, et montre comment le trait double saligne : il est centr sur la
ligne du trait simple.
2.4. COMPLMENTS : OPACIT, COULEURS, STYLES 41
Il existe une option pour grer la transparence ou plutt lopacit : opacity,
avec des valeurs allant de 0 (transparent) 1 (opaque).
On peut reprendre le premier dessin (la grille suivie dun triangle rempli de
gris) en appliquant [gray,opacity = 0.5] au triangle. On obtient :
grid, puis \fill[gray,opacity=0.5] opacity=0.2
Le triangle est bien trac par-dessus la grille, mais il est en partie transparent.
Plus prcisment, on peut distinguer draw opacity lopacit pour le contour et
fill opacity lopacit pour le remplissage, sachant que opacity xe les deux
la fois.
2.4.2 Noms et calculs des couleurs, package xcolor
Si on veut disposer de noms de couleurs plus varis quen L
A
T
E
Xstandard, on
peut charger le package xcolor
Il est dclar par \usepackage[usenames, dvipsnames]{xcolor}.
Attention, il faut le dclarer avant \usepackage{tikz}, sinon il y a incom-
patibilit.
On dispose alors des couleurs suivantes :
De jaune orange : GreenYellow, Yellow, Goldenrod, Dandelion, Apricot,
Peach, Melon, YellowOrange,
De orange rouge : Orange, BurntOrange, Bittersweet, RedOrange, Ma-
hogany, Maroon, BrickRed, Red,
De rouge rose : OrangeRed, RubineRed, WildStrawberry, Salmon, Car-
nationPink, Magenta, VioletRed, Rhodamine,
De rose violet : Mulberry, RedViolet, Fuchsia, Lavender, Thistle, Orchid,
DarkOrchid, Purple,
De violet bleu : Plum, Violet, RoyalPurple, BlueViolet, Periwinkle, Ca-
detBlue, CornowerBlue, MidnightBlue,
De bleu bleu clair : NavyBlue, RoyalBlue, Blue, Cerulean, Cyan, Pro-
cessBlue, SkyBlue, Turquoise
De bleu clair vert : TealBlue, Aquamarine, BlueGreen, Emerald, Jun-
gleGreen, SeaGreen, Green, ForestGreen,
De vert brun : PineGreen, LimeGreen, YellowGreen, SpringGreen, Oli-
veGreen, RawSienna, Sepia, Brown, Tan
Sinon, on peut fabriquer soi-mme ses propres couleurs en faisant des mlanges :
[color=blue!30!red] dsigne une couleur avec 30 pour cent de bleu et 70
pour cent de rouge. Cest donc une couleur plutt rouge, lgrement violette.
De mme [color=blue!30!red!40!green] dsigne le mlange de la cou-
leur prcdente en proportion de 40 pour cent, avec 60 pour cent de vert. Cela
42 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
donne une dnition globale dans le systme RVB, avec des valeurs de 0 255 :
R = 31, B = 71, V = 153 (calcul de barycentres). Le rsultat est plutt vert.
Cela donne une grande libert, mais il nest peut-tre pas trs raisonnable de
vouloir tout prix inventer ses propres couleurs. Cest un exercice dicile, et les
coloristes ont tabli des palettes soigneusement talonnes quil est prfrable
dutiliser. Les 64 couleurs de xcolor plus les couleurs standard devraient sure.
2.4.3 Dnition de styles : \tikzstyle, \tikzset
Il est frquent que plusieurs lments dune gure aient les mmes options
graphiques, et que ces options soient associes une convention particulire
de reprsentation, quon appelle un style. Il est alors pratique de sparer la
dnition du style, qui est commune, et ses applications aux divers lments.
Par exemple, pour que les traits soient en pointills pais et que la couleur
de remplissage soit en gris, on crit habituellement :
\draw[thick, dashed, fill=gray] ...
On peut alors dsigner ce style par un nom, par exemple grisEncadre. On
dclare alors ce nom TikZ de la faon suivante :
\tikzstyle{grisEncadre}=[thick, dashed, fill=gray!20]
On peut crire cette commande nimporte o dans le document L
A
T
E
X, avant
la gure.
Ensuite, on peut utiliser ce nom dans la gure de la manire suivante, en
crivant seulement le nom comme option, et cela jouera le rle dune abrviation :
\draw [grisEncadre] (0,0) circle (1);
Et on peut utiliser ce mme style plusieurs fois :
\tikzstyle{grisEncadre}=[thick, dashed, fill=gray!20]
\begin{tikzpicture}
\draw [grisEncadre] (0,0) circle (1);
\draw [grisEncadre] (2,0) circle(0.5);
\end{tikzpicture}
Cette faon de faire augmente la lisibilit et facilite les corrections : en corri-
geant seulement la dnition du style, toutes les gures utilisant ce style seront
modies automatiquement.
En fait, la commande \tikzstyle semble tombe en dsutude dans la ver-
sion 2 (mme si elle est toujours correcte et utilisable).
La mthode utilise par la version 2 utilise la commande \tikzset pour
dnir un style, avec une syntaxe un peu plus complique :
\tikzset{grisEncadre/.style={thick, dashed, fill=gray!20}}
Cette lgre complication permet de proter des possibilits du package
pgfkeys, que nous ne dtaillons pas dans cet ouvrage.
2.5. EXERCICES : STYLES DE TRAITS, FLCHES, COULEURS 43
2.5 Exercices : styles de traits, ches, couleurs
Voici des exercices raliser avec TikZ. Pour chacun deux, on donne une
gure et il faut crire le code TikZ qui trace cette gure. On donne comme
indications les techniques utilises, cest--dire les mots-cls TikZ utiliss.
Les gures sont des gures classiques de gomtrie.
2.5.1 Somme de deux vecteurs
La somme de deux vecteurs sobtient en traant la diagonale dun paralllo-
gramme ou en plaant les vecteurs bout bout.

u +

u +

v
Techniques utilises : ->, >= stealth, --, node, above
below right, dashed, midway
2.5.2 Triangle rectangle inscrit dans un demi-cercle
Tout triangle rectangle est inscrit dans un demi-cercle dont le diamtre est
lhypotnuse.
| |
Techniques utilises : dashed, arc, node, --
2.5.3 Angle inscrit et angle au centre
Langle au centre est le double de langle inscrit.
Techniques utilises : double distance, thick, arc,
color=gray!20, circle, --, densely dotted
44 CHAPITRE 2. CHEMINS, OPTIONS GRAPHIQUES
2.5.4 Parallles, aires gales
Deux triangles de bases gales et de hauteurs gales ont des aires gales.
| |
Techniques utilises :
color=gray!20, --, cycle, node, \fill
2.5.5 Compose de deux symtries centrales
La compose s
2
s
1
de deux symtries centrales de centres I
1
et I
2
est la
translation de vecteur 2

I
1
I
2
. Si M
1
= s
1
(M) et M
2
= s
2
(M
1
),
alors

MM
2
= 2

I
1
I
2
.
M
1

M
||
||
I
1


v
I
2

v
M
2
Techniques utilises : >=latex, node, below, midway, --,
above, dashed, left, below right, ->
2.5.6 Suite gomtrique
1
2
+
1
4
+
1
8
+ = lim
n+
n

k=1
1
2
k
= 1
Le triangle OAB est isocle rectangle en B, direct. A partir de B, on eectue
une suite de projections orthogonales : sur [OA] dabord, puis sur [AB], puis
sur [OA], puis sur [AB], etc.
Les longueurs des segments sur [OA] forment une suite gomtrique de raison
1
2
.
2.5. EXERCICES : STYLES DE TRAITS, FLCHES, COULEURS 45
O
B
A
1
2
1
4
1
8
1
Techniques utilises :
>=latex, <->, node, left, above, --,
right, midway, below, densely dashed
Chapitre 3
Courbes
3.1 Tracer une courbe : plot (...)
Dans ce chapitre, nous allons voir comment tracer des courbes dnies
laide dquations mathmatiques, comme y = sin(x) (quation cartsienne), ou

x = cos(t)
y = sin(t)
(quations paramtriques) ou r = f() (quation polaire).
Lopration principale pour cela est plot, insrer dans une commande
\draw par exemple : \draw plot ... ;
Nous dcrivons ici la syntaxe de cette opration dans la version 2 de TikZ.
Cette opration permet de tracer des courbes paramtres, le nom du para-
mtre par dfaut tant \x.
Aprs le mot plot, on crit :
ou bien (X, Y ), o X et Y sont les formules de labscisse et de lordonne
en fonction du paramtre, Si ces formules contiennent des parenthses ou
des virgules, il faut les crire entre accolades. Cest trs souvent le cas pour
Y. Par exemple, on crit (\x,{exp(\x)})
ou bien ( : r), o et r sont les formules de langle polaire (en degrs)
et du rayon en fonction du paramtre (rayon algbrique, qui peut tre
ngatif). Les accolades peuvent tre ncessaires galement.
Par exemple, pour tracer la courbe de la fonction dquation cartsienne
y =
x
4
, il faut dabord la traduire en quations paramtriques :

x = x
y =
x
4
, et
on crit :
\draw plot (\x, \x/4);
ce qui donne :
46
3.1. TRACER UNE COURBE : PLOT (...) 47
(5, 1.25)
(5, 1.25)
\
(0, 0)
y =
x
4
On a ajout des annotations en gris pour montrer comment la gure se place.
Ici, TikZ a utilis ses options par dfaut pour choisir le domaine du para-
mtre : 5 x 5.
Autre exemple : la courbe dquation polaire = 20 r. On peut la repr-
senter en choissant comme paramtre r, ce qui scrit :
\draw plot (20*\x:\x);
La courbe part du point ( = 100: r = 5) et arrive au point
( = 100: r = 5) car \x varie par dfaut de 5 5. On obtient :
(100 : 5) (100 : 5)
(0 : 0)
|
(45 : 2.25) (45 : 2.25)
Si on ne souhaite pas conserver le nom par dfaut \x pour le paramtre,
on peut lui attribuer un nom, par exemple \t, avec loption [variable=\t]
applique lopration plot.
Exemple : \draw plot [variable=\t] (\t,2*\t);
Il reste direntes questions, que nous allons tudier dans la suite :
Comment dnir le domaine du paramtre ?
Quelles sont les formules mathmatiques disponibles ?
Comment spcier le nombre de points calculs, le lissage ?
Comment sont traits les points singuliers (discontinuits, valeurs trop
grandes) ?
3.1.1 Domaine : [domain=a:b]
Pour dire que le paramtre (\x par dfaut) varie de a b, TikZ a prvu la
syntaxe [domain=a:b].
48 CHAPITRE 3. COURBES
Malheureusement, cette syntaxe pose un problme pour les utilisateurs fran-
ais qui ont dclar le package babel avec une option french, frenchb ou
francais.
Le problme de babel franais et de :
Avec le package babel franais (french, frenchb ou francais), le code
interne T
E
X du caractre : (son catcode) est modi pour permettre un trai-
tement spcial adapt aux rgles typographiques de la langue franaise. Cela
ne pose pas de problmes en gnral dans L
A
T
E
X, mais comme TikZ utilise
une syntaxe spciale et donc une procdure de lecture spciale, cela interfre
avec ses rgles syntaxiques et provoque une erreur, en particulier dans loption
[domain=a:b]. On obtient en gnral dans la fentre de console le message sui-
vant, dicile comprendre, mais qui peut servir dindice pour reprer lerreur :
Paragraph ended before \tikz@plot@samples@recalc was complete
Nous proposons deux solutions direntes :
dire L
A
T
E
X de ne plus considrer le caractre : comme un caractre
spcial dans les passages o il doit tre interprt par TikZ, en utilisant
la commande fournie par babel franais : \shorthandoff{:}
congurer TikZ pour modier la syntaxe de loption domain=a:b, ou plu-
tt introduire une autre option quivalente domaine={a}{b} qui nutilise
pas les deux-points.
Aucune des deux solutions nest parfaite, nous les dveloppons dans ce qui suit.
Dsactiver : avec \shorthandoff{:}
On peut dire L
A
T
E
X de ne plus considrer le caractre : comme un carac-
tre spcial dans les passages o il doit tre interprt par TikZ. La commande
pour cela est :
\shorthandoff{:}
O exactement placer cette commande ? Rpondre prcisment et compl-
tement cette question est dicile, parce quil sagit dinteractions un niveau
de base de T
E
X (la lecture des caractres et lexcution des commandes), et que
des eets inattendus peuvent se produire.
La plupart du temps il sut dinsrer la commande lintrieur de chaque
environnement tikzpicture :
\begin{tikzpicture} \shorthandoff{:} ... \end{tikzpicture}
Cependant, cela ne sut pas si la tikzpicture est elle-mme lintrieur dune
autre commande, comme quand on veut encadrer une tikzpicture par \fbox.
On obtient le message derreur suivant :
Argument of \tikz@plot@samples@recalc has an extra }
Dans ce cas-l, on peut essayer dcrire :
{ \shorthandoff{:}
\fbox{ \begin{tikzpicture} ... \end {tikzpicture} } }
3.1. TRACER UNE COURBE : PLOT (...) 49
Utiliser le package microtype
Un package rcent, microtype, permet de rsoudre le problme globalement
de faon simple.
Il sut dajouter :
\usepackage[babel=true,kerning=true]{microtype} aprs la dclaration
dutilisation du package babel. Ainsi le caractre : ne semble plus poser de
problme.
Attention : nous supposons partir de maintenant que toutes ces prcautions
sont prises quand nous utilisons [domain=a:b] dans les exemples.
Introduire une autre option [domaine={a}{b}]
Nous proposons dintroduire loption domaine (cest un mot franais rappe-
lant que le problme se pose pour les utilisateurs de babel en franais).
Pour la dnir, il sut dcrire la ligne suivante la n du prambule L
A
T
E
X
du document :
\tikzset { domaine/.style 2 args={domain=#1:#2} }
Alors, dans une tikzpicture, au lieu dcrire [domain=a:b], on crira
[domaine={a}{b}]
Cette solution est pratique quand on crit soi-mme le code de ses gures
TikZ. Elle ne rgle cependant pas tous les problmes quand on veut rcuprer
un code TikZ qui utilise directement loption domain originale. Dans ce cas-l,
il vaut mieux utiliser la solution avec \shorthandoff{:}.
Exemples de domaines
Avec les prcautions concernant : , voici comment on peut modier le
domaine de la courbe polaire prcdente (dquation = 20 r), par exemple
en le xant 0 x 90. On peut galement en proter pour modier lchelle
(diviser les dimensions par 2 avec scale=0.5).
\draw [domain=0:9, scale=0.5] plot (20*\x:\x);
(45 : 2.25)
(90 : 4.5)
(135 : 6.75)
(0 : 0)
(180 : 9)
= 20 r
Le bon rglage du domaine est important pour les fonctions qui prennent de
trs grandes valeurs, par exemple lexponentielle.
Avec \draw plot(\x,{exp(\x)});, on obtient un trait quasiment vertical
qui prend toute la page, car e
5
148.
Il vaut mieux crire \draw [domain=-3:1.5] plot(\x,{exp(\x)});
50 CHAPITRE 3. COURBES
(0, 0)

y = e
x
3.1.2 Formules mathmatiques disponibles
Depuis la version 2, TikZ permet dcrire des formules mathmatiques avec
une syntaxe usuelle analogue celle des calculatrices, des logiciels mathma-
tiques ou des langages de programmation.
Cependant, la gamme de fonctions disponibles nest pas trs grande. TikZ
nest pas un logiciel de calcul, et il ne faut pas lui en demander trop.
Si les fonctions disponibles ne susent pas, il y a deux grandes solutions :
utiliser lopration plot function qui fait appel (de manire transpa-
rente) au logiciel libre Gnuplot, quil faut avoir pralablement install et
connect TikZ. Voir plus loin complments techniques pour des pr-
cisions sur Gnuplot.
prparer les donnes (coordonnes des points de la courbe) laide dun
logiciel extrieur, les sauvegarder sur chier sous un format convenable,
puis utiliser lopration plot file (voir chapitre suivant)
Oprations
Addition, soustraction, multiplication, division, lvation une puissance :
x+y, x-y, x*y, x/y, x^y
Modulo, maximum, minimum :
mod(x,y), max(x,y), min(x,y)
Fonctions
Valeur absolue, exponentielle, logarithme nprien, racine carre :
abs(x), exp(x), ln(x), sqrt(x)
Arrondi, partie entire (plancher), entier immdiatement suprieur (pla-
fond) :
round(x), floor(x), ceil(x)
Fonctions trigonomtriques
Les angles sont en degrs.
sin(x), cos(x), tan(x), cot(x), sec(x), cosec(x)
Fonctions rciproques :
asin(x), acos(x), atan(x)
3.1. TRACER UNE COURBE : PLOT (...) 51
Constante , conversions
pi, x r, deg(x), rad(x)
En TikZ, les fonctions trigonomtriques attendent des angles en degrs. Pour
retrouver les fonctions mathmatiques habituelles qui attendent des angles en
radians, il faut convertir les radians en degrs.
Appelons s la fonction note en TikZ par sin et continuons appeler sin la
fonction mathmatique habituelle en radians. On a alors les relations :
sin(x) = s

180

et s(x) = sin


180
x

Multiplier x par
180

(cest--dire convertir les radians en degrs) peut se


faire de deux faons en TikZ : deg(x) ou x r.
Par exemple sin(pi/2 r) vaut 1, ainsi que sin(deg(pi/2))
Mais attention au niveau de priorit de la notation r : elle est de mme prio-
rit quune multiplication. Elle reprsente en eet la multiplication par
180

.
Autrement dit a*b r reprsente ab
180

mais a+b r reprsente a+

b
180

.
La courbe habituelle de la fonction sinus sur [; ] est obtenue par
\draw [domain=-pi:pi] plot (\x,{sin(\x r)});.
La fonction sinus en radians sur [; ]
(0, 0)

Inversement, pour convertir de degrs en radians (cest--dire multiplier par

180
), utiliser rad(x)
Nombres alatoires
Un rel alatoire entre 0 et 1 : rnd
Un rel alatoire entre 1 et 1 : rand
Oprations boolennes
Tests dgalit et dingalits :
x == y, x < y, x > y
Le rsultat est 1 pour vrai et 0 pour faux.
La manuel ne prcise pas avec quelle approximation numrique ces tests sont
eectus.
52 CHAPITRE 3. COURBES
3.2 Aspect du graphe
3.2.1 Nombre de points : samples
Par dfaut, lorsquon demande TikZ de tracer une courbe avec plot, il
calcule un certain nombre de points de la courbe (25 points) puis il les joint par
des segments. On peut changer ces choix par des options.
On peut changer le nombre de points avec loption samples.
Par exemple, pour la courbe dont la formule TikZ est (\x,{sin(5*\x r)},
cest--dire la courbe de la fonction mathmatique x sin(5x)
Avec la valeur de samples par dfaut (25) :
Avec [samples=200] :
3.2.2 Lissage : smooth, tension
On peut demander TikZ de ne pas joindre les points par des segments mais
par des courbes (calcules avec un algorithme de lissage). On obtient alors une
courbe lisse.
La courbe de la fonction prcedente x sin(5x) avec 25 points, mais lisse
avec loption [smooth] est moins cahotique, mais ne compense pas leet d au
faible nombre de points :
Le degr de lissage (la courbure des arcs de courbes) peut tre congur avec
loption tension. Une valeur de 0 donne un segment (comme si on navait pas
mis loption smooth), la valeur par dfaut est 0.55, et le maximum est la valeur
1 (plus la valeur est grande, plus les arcs sont courbs).
Avec [smooth, tension=1] :
3.2. ASPECT DU GRAPHE 53
On voit que, de toutes faons, le meilleur eet de lissage est obtenu en
augmentant le nombre de points avec samples. Cependant, loption smooth
peut quand mme tre ecace pour des courbes simples et rgulires.
3.2.3 Discontinuits : sparer les intervalles
Exemple : tracer la courbe de la fonction x
x
|x|
. La fonction nest pas
dnie en 0, et pas non plus prolongeable par continuit en 0. La courbe est
forme de deux demi-droites : y = 1 pour x < 0 et y = 1 pour x > 0.
Quand on crit lquation directement, TikZ ne donne pas un rsultat correct
(contrairement par exemple GeoGebra) :
\draw[domain=-3:3] plot(\x,{\x/abs(\x)});
TikZ joint systmatiquement les points quil calcule.
La solution usuelle est de tracer sparment deux morceaux de courbes, sur
deux intervalles qui vitent le point de discontinuit, mais quand mme trs
proches de ce point, par exemple [3, 0.01] et [0.01, 3]
\draw[domain=-3:-0.01] plot(\x,{\x/abs(\x)});
\draw[domain=0.01:3] plot(\x,{\x/abs(\x)});
3.2.4 Grandes valeurs : scale, \clip
Prenons lexemple de la fonction x
1
x
, trace lchelle 0.5, avec le nombre
de points par dfaut (25).
\draw [scale=0.5] plot (\x, {1/\x});
54 CHAPITRE 3. COURBES
Le dernier point gauche de 0 ne devrait pas tre reli au premier
point droite de 0 parce que le domaine de dnition de la fonction nest pas
connexe.
Si on voulait augmenter le nombre de points ([samples=100]), ce serait
encore pire : on obtiendrait un message derreur : Dimension too large. Les
valeurs au voisinage de 0 sont en eet trop grandes pour les capacits de calcul
de TikZ (sans compter le problme de la valeur en 0).
La seule faon de rsoudre le problme est dtudier la fonction avant, dana-
lyser les problmes de discontinuit et de valeurs trop grandes, et de tracer en
fait sparment deux morceaux de courbe sur des domaines dirents, en pre-
nant soin dviter les abscisses trop proches de 0.
On peut alors essayer [domain=-3:-0.2] pour lune et [domain=0.2:3]
pour lautre. Les courbes se tracent mais les valeurs extrmes des ordonnes
restent un peu grandes (5 et 5), ce qui donne une image de 10 cm de hauteur.
Il y a deux sortes de solutions cela : loption scale ou la commande \clip.
Avec scale, on peut rduire lchelle, par exemple [scale=0.5].
Avec \clip, on garde lchelle mais on peut rduire la fentre dachage,
par exemple \clip (-3,-2) rectangle (3,2); (commande placer au dbut
de la gure).
[scale=0.5]

\clip (-3,-2) rectangle (3,2) ;

Il peut paratre un peu dcevant que TikZ ne prenne pas en charge ces
problmes de discontinuit et de valeurs trop grandes, contrairement certaines
3.3. RGIONS LIMITES PAR DES COURBES 55
calculatrices ou logiciels. Mais encore une fois, ce nest quun module pour T
E
X,
qui nest aprs tout quun logiciel de composition typographique et nest pas du
tout prvu pour tre un logiciel de calcul. Il est mme remarquable que T
E
X
arrive supporter toutes ces extensions de manire robuste.
3.3 Rgions limites par des courbes
Il arrive souvent quon doive reprsenter une rgion limite par des courbes,
par exemple pour des calculs daires. La technique de base est de dnir le
contour laide dun chemin, en enchanant les courbes, puis de demander
remplir ce chemin avec fill.
3.3.1 Une courbe et des segments : cycle, \fill, \filldraw
Exemple : remplir la rgion comprise entre laxe des abscisses, la courbe de
la fonction x
1
x
et les droites dquation x = 1 et x = 2.
A
B
C
D
Il sagit de remplir la rgion ABCD, avec A(1, 0), B(1, 1), C(2, 0.5), D(2, 0).
Pour cela on dnit un chemin ferm avec dans lordre : le segment de A
B, la courbe de B C et les segments de C D, puis de D A.
Le code suivant doit tre inclus dans un environnement tikzpicture en
noubliant pas dviter le problme des deux-points grce \shorthandoff{:}.
Notez bien que tous les lments du chemin sont connects les uns aux autres
(y compris la courbe) par des tirets -- pour indiquer un chemin connexe, et que
le chemin est ferm par -- cycle.
\fill[color=gray!20]
(1,0) -- (1,1) % segment de A B
-- plot [domain=1:2] (\x,1/\x) % courbe de B C
-- (2,0) -- cycle; % segment de C D puis fermer
Il y a un sous-entendu concernant la position implicite du crayon aprs la
trac dune courbe par plot : le crayon est plac au dernier point trac par
cette opration, ici le point C(2, 0.5), sachant que les points sont tracs dans
lordre du domaine [domain=1:2], cest--dire de 1 2. Le mme morceau de
courbe aurait pu tre trac de 2 1 par [domain=2:1], mais alors il aurait t
parcouru dans lautre sens et la position nale du crayon aurait t B(1, 1).
On souhaite souvent tracer le contour galement. Au lieu de \fill, on peut
utiliser \filldraw, qui remplit et trace le contour. Mais il faut spcier deux
couleurs direntes, avec les options fill et draw :
56 CHAPITRE 3. COURBES
\filldraw [fill=gray!20,draw=black]
Cette rgion nest quun lment de la gure complte, avec les axes et la
courbe. Pour des raisons dordre du trac et de recouvrement, il est prfrable
de tracer la rgion avant.
La structure de la gure complte est donc :
\begin{tikzpicture}
\shorthandoff{:} % protection des deux-points pour domain
\filldraw ... ; % la rgion ABCD
\draw ... ; % laxe des abscisses de 0 3
\draw ... ; % laxe des ordonnes de 0 2
\draw plot ... ; % la courbe complte, de 0.5 3
\draw ... ; % les noeuds de texte A, B, C, D
\end{tikzpicture}
A
B
C
D
Aire(ABCD) =

2
1
1
x
dx = ln(2)
3.3.2 Rgion entre deux courbes
Exemple : remplir la rgion comprise entre la courbe de x x
2
et celle de
x

x sur [0; 1].


Le principe est le mme : on dnit un contour, puis on remplit la rgion
intrieure. Il faut juste faire attention aux sens des tracs des courbes. Il faut
tracer une premire courbe de 0 1, puis tracer lautre de 1 0 pour revenir
lorigine.
\filldraw[draw=black,fill=gray!20]
plot [smooth,domain=0:1] (\x,{sqrt(\x)})
-- plot [smooth,domain=1:0] (\x,\x^2)
-- cycle;
3.3. RGIONS LIMITES PAR DES COURBES 57
3.3.3 Rgion non convexe : interior rules
Pour linstant, nous avons dni un contour et utilis la commande \fill
pour remplir son intrieur. Mais comment est dni exactement lintrieur dun
contour ? La question devient dlicate lorsque la frontire de la rgion se recoupe
et se traverse elle-mme.
Exemple : remplir la rgion limite par la courbe de x sin(x) et laxe des
abscisses sur [0; 2].
0

2
La frontire se recoupe et se traverse au point (, 0).
Pour remplir la rgion grise, on peut dnir un chemin ferm comme pr-
cdemment :
\filldraw[fill=gray!20,draw=black]
(0,0) -- plot [domain=0:2*pi] (\x,{sin(\x r)}) -- cycle;
On obtient ce quon veut, mais il faut bien comprendre ce qua fait TikZ. Il
dispose de deux modes de calcul pour dterminer lintrieur dun chemin. Dans
le cas de lexemple prcdent, les deux modes donnent le mme rsultat, mais
ce ne sera pas toujours le cas.
Il a utilis ici son mode par dfaut, quon aurait pu demander explicitement
par loption nonzero rule, lautre mode tant even odd rule.
La dnition de ces modes nest pas simple (voir le manuel : interior rules).
Comme le dit lui-mme le manuel : Vous pensez que cest compliqu ? Eh bien,
oui, a lest ! . Le plus compliqu est le mode par dfaut, lautre est un peu
plus naturel.
Cependant, pour les cas usuels tudis ici (rgion entre deux courbes de
fonctions continues), les deux modes donnent le mme rsultat. Par exemple :
tracer la rgion dlimite par la courbe du sinus et la courbe du cosinus sur
[0; 2]. On trace dabord la courbe du sinus de 0 2, puis la courbe du cosinus
de 2 0.
\filldraw [draw=black,fill=gray!20]
plot [domain=0:2*pi] (\x,{sin(\x r)})
-- plot [domain=2*pi:0] (\x,{cos(\x r)})
-- cycle;
0

4
5
4
2
Notez que le quadrillage grid doit tre dessin aprs les courbes pour quil
soit entirement visible. On peut aussi dessiner le quadrillage avant, mais alors
si on veut quil reste visible, il faut que les dessins tracs par-dessus soient
transparents, par exemple avec loption [opacity=0.5].
58 CHAPITRE 3. COURBES
3.4 Complments techniques
3.4.1 Utilisation de Gnuplot : plot function
Il se peut que les formules mathmatiques intgres dans TikZ ne vous suf-
sent pas. Il faut alors faire appel un programme extrieur. Une possibilit
prvue par TikZ est dutiliser Gnuplot, logiciel permettant de tracer toutes
sortes de courbes et diagrammes.
Le mcanisme est le suivant : quand on donne la commande \draw avec une
opration plot function, comme dans lexemple suivant :
\draw plot function {sin(x)};
TikZ fait appel au logiciel Gnuplot (qui doit avoir t install et connect
TikZ), qui se charge de calculer une liste de points tracer, les enregistre dans
un chier, puis TikZ va lire ce chier et sen sert pour tracer la courbe.
Plus prcisment, si le nom du chier L
A
T
E
X est doc.tex, TikZ engendre
un chier doc.pgf-plot.gnuplot, puis ce chier est excut par Gnuplot, qui
fournit en retour un chier doc.pgf-plot.table, qui est ensuite utilis par
TikZ pour tracer la courbe, comme si on avait crit
\draw plot file {doc.pgf-plot.table};
Pour que cela soit possible, il faut certaines manipulations pralables. Il faut
dabord charger et installer Gnuplot, ce qui est plus ou moins facile suivant les
systmes dexploitation.
La page daccueil de Gnuplot est http://www.gnuplot.info/
Il faut sassurer de la compatibilit entre les versions de Gnuplot, du systme
et de T
E
X.
Il faut ensuite congurer le systme T
E
X pour quil puisse se connecter
Gnuplot. L aussi, la manoeuvre suivre dpend des systmes.
Quand tout fonctionne, on peut utiliser \draw plot function {...}, en
notant que la syntaxe de reprsentation des fonctions nest pas celle de TikZ,
cest celle de Gnuplot.
Cette opration admet direntes options permettant de contler Gnuplot,
en particulier parametric pour tracer des courbes paramtres.
Depuis la version 2 de TikZ, lusage de Gnuplot devient moins ncessaire car
on peut maintenant crire directement des formules mathmatiques. Il nest donc
pas systmatiquement conseill dutiliser Gnuplot, dautant que son installation
peut tre dlicate.
3.4.2 Automatisation de certaines congurations
Dans les calculatrices graphiques et les logiciels qui tracent des courbes, il
y a souvent un couplage troit entre direntes options : la fentre de trac, le
domaine dtude de la fonction, le trac des axes et du quadrillage. En gnral,
on xe les bornes pour labscisse et lordonne, et tout le reste en dcoule.
Il est possible de raliser cela avec TikZ, en utilisant ses possibilits de gestion
doptions (le package pgfkeys) et un peu de programmation L
A
T
E
X. Ce package
ncessite la version 2 de TikZ.
Le but recherch est le suivant : introduire quatre nouvelles options
xmin, xmax, ymin, ymax permettant de xer les bornes, et trois commandes
L
A
T
E
X \axes, \grille, \fenetre utilisant ces bornes pour tracer les axes et
la grille (grid), et xer la fentre (\clip).
3.4. COMPLMENTS TECHNIQUES 59
Exemple dutilisation :
\begin{center}
\begin{tikzpicture} [xmin=-2,xmax=2,ymin=0,ymax=5]
\grille \axes \fenetre
\draw plot[smooth] (\x,\x^2);
\end{tikzpicture}
\end{center}
Lordre des tracs est dlicat : si on place \axes avant \grille, les axes sont
recouverts par la grille. Si on place \fenetre avant \axes, la pointe de che
des abscisses est rogne (ce problme peut tre vit en largissant la fentre
vers le bas).
Pour obtenir ces nouvelles options et commandes, il sut dinsrer la n
du prambule du document L
A
T
E
X les quelques lignes suivantes :
% Dfinition des nouvelles options xmin, xmax, ymin, ymax
% Valeurs par dfaut : -3, 3, -3, 3
\tikzset{
xmin/.store in=\xmin, xmin/.default=-3, xmin=-3,
xmax/.store in=\xmax, xmax/.default=3, xmax=3,
ymin/.store in=\ymin, ymin/.default=-3, ymin=-3,
ymax/.store in=\ymax, ymax/.default=3, ymax=3,
}
% Commande qui trace la grille entre (xmin,ymin) et (xmax,ymax)
\newcommand {\grille}
{\draw[help lines] (\xmin,\ymin) grid (\xmax,\ymax);}
% Commande \axes
\newcommand {\axes} {
\draw[->] (\xmin,0) -- (\xmax,0);
\draw[->] (0,\ymin) -- (0,\ymax);
}
% Commande qui limite laffichage (xmin,ymin) et (xmax,ymax)
\newcommand {\fenetre}
{\clip (\xmin,\ymin) rectangle (\xmax,\ymax);}
60 CHAPITRE 3. COURBES
3.5 Exercices
3.5.1 Ellipse. Angles avec circle et \clip
Illustrer la proprit suivante : la tangente et la normale en un point A une
ellipse sont les bissectrices de (AF, AF

), o F et F

sont les foyers de lellipse.

A
P
Echelle 0.5
Ellipse (reprsentation paramtrique) :

x = 5 cos()
y = 3 sin()
Foyers F(4, 0) et F

(4, 0) car 3
2
+ 4
2
= 5
2
.
A(2, 2.75)
Tangente : y = 0.26x + 3.27, normale : y = 3.82x 4.89
Angle droit : (2.25,3.72) -- (1.28,3.97) -- (1.03,3)
Les coordonnes ont t obtenues avec GeoGebra.
Pour les marques dangle, on a trac des cercles de centre A (rayons 1 et 1.2),
et on nen a montr que la partie intrieure aux triangles AF

P et APF, P tant
le point de la normale sur laxe Ox : P(1.28, 0). Pour ne montrer quune partie,
on utilise \clip, et pour limiter la porte de ce clip, on utilise un environnement
\begin{scope} ... \end{scope}
\begin{scope} % pour limiter la porte du \clip
\clip (a) -- (p) -- (f2) -- cycle; % triangle APF
\draw [gray] (a) circle (1); % cercle pour arc
\end{scope}
3.5.2 a
b
= b
a
. xscale, yscale
Illustrer la proprit suivante : lquation a
b
= b
a
na que deux solutions
entires (a, b) avec a b : (2, 2) et (2, 4)
Lquation est quivalente
ln(a)
a
=
ln(b)
b
. Pour illustrer cela, on trace la
courbe de x
ln(x)
x
et on tudie ses intersections avec des droites horizontales
y = k. Ltude du sens de variation montre un maximum en e et une limite de
0 en +. Donc la seule solution envisageable est a = 2.
3.5. EXERCICES 61
e
1
|
0
|
3
|
2
|
Pour mieux voir le sens de variation au voisinage de e, on peut choisir une
chelle dirente pour les abscisses et pour les ordonnes, par exemple multiplier
les abscisses par 2 et les ordonnes par 100 : Ici [xscale=2,yscale=100].
Pour les points dordonne
ln(2)
2
, on peut utiliser directement une formule
de calcul dans les coordonnes, par exemple (2,{ln(2)/2}).
On limite galement le domaine de la fonction, avec [domain=1.85:4.5].
Attention aux deux-points : protger avec \sorthandhoff(:) ou utiliser
[domaine={1.85}{4.5}]
y =
ln(2)
2 x = 2

x = 4

e,
1
e

3.5.3 Fonction priodique, \foreach


Tracer la courbe de la fonction priodique de priode 2 dont la formule sur
[1; 1] est y = x
2
.
Lide est de tracer dabord la courbe sur une priode avec
\draw plot [domain=-1:1] (\x,\x^2);
,
puis de reproduire ce morceau par des translations de vecteur (2, 0).

v (2, 0)
,
On ajoute pour cela \draw plot [domaine={-1}{1}] (\x+2,\x^2); .
On peut rajouter de mme dirents morceaux, en factorisant les options au
dbut :
62 CHAPITRE 3. COURBES
\begin{tikzpicture} [domaine={-1}{1}, samples=80]
\draw plot (\x,\x^2);
\draw plot (\x+2,\x^2);
\draw plot (\x+4,\x^2);
\draw plot (\x+6,\x^2);
\draw plot (\x+8,\x^2);
\end{tikzpicture},
Cette rptition dcritures peut tre rsume par lutilisation de \foreach :
\foreach \k in {0,2,...,8}
{\draw plot (\x + \k, \x^2);}
\foreach est une instruction de boucle au sens usuel de linformatique. Nous
en verrons dautres exemples plus loin.
3.5.4 Fonctions rciproques, aires, pattern
Illustrer la formule

2
1
ln(x) dx +

ln(2)
0
e
x
dx = 2 ln(2) en linterprtant en
termes daires.
Lintgrale du logarithme est reprsente par laire grise A, lintgrale de
lexponentielle par laire hachure. Les fonctions ln et exp sont rciproques,
donc les deux aires grises A et B sont gales, par symtrie par rapport la
droite dquation y = x. Laire (hachure + B) est laire dun rectangle et vaut
2 ln(2),
2
ln(2)
0
1
2
1 2
y = x
y = ln(x)
y = e
x
A
B
3.5. EXERCICES 63
On trace les rgions avant le reste. Pour les hachures, il faut utiliser la bi-
bliothque patterns, en dclarant dans le prambule :
\usepackage{tikz}
\usetikzlibrary{patterns}
On lutilise alors avec loption pattern (voir le manuel pour les dirents
motifs possibles : vertical lines, north east lines, dots, etc.) :
\fill [pattern=horizontal lines]
(0,0)
-- plot [domaine={0}{ln(2)}] (\x,{exp(\x)})
-- ({ln(2)},0)
-- cycle;
Attention au domaine de dnition du logarithme, et aux grandes valeurs au
voisinage de 0. Il faut choisir un domaine convenable. De mme pour les grandes
valeur de lexponentielle. De plus, on peut xer la fentre pour bien cadrer le
dessin. Attention lordre des direntes commandes.
La structure du code est :
\begin{tikzpicture}[scale = 2,xmin=-1,xmax=3,ymin=-1,ymax=3]
\fenetre
\fill ... ; % aire grise avec logarithme
\fill ... ; % aire grise avec exponentielle
\fill ... ; % aire hachure
\axes
\draw plot ... ; % courbe de ln
\draw plot ...; % courbe de exp
\draw plot ... ; % courbe y = x
\draw [dashed] ... ; % les lignes de rappel en pointills
... % les noeuds de texte
\end{tikzpicture}
3.5.5 Lemniscate de Gerono. \scope, xshift, \filldraw
La lemniscate de Gerono est la courbe de reprsentation paramtrique

x = cos()
y = sin() cos()
Son quation cartsienne est x
4
+ y
2
= x
2
, soit y = x

1 x
2
ou y =
x

1 x
2
. Le but est de reprsenter laire de la rgion intrieure dlimite par
la courbe, puis de reprsenter un encadrement de cette aire.
A 1 A A
3
2
1 A
3
2
64 CHAPITRE 3. COURBES
Pour reprsenter laire A, utiliser \filldraw. TikZ dtermine correctement
la rgion intrieure.
Pour reprsenter lencadrement daires, il faut calculer dirents lments de
la fonction x x

1 x
2
sur [0; 1] :
la tangente en O a pour quation y = x, le maximum est

2
2
,
1
2

.
Mettre au point dabord 4 gures spares (les trois aires puis le rsultat).
Ne pas oublier que les angles de la formule mathmatique sont en radians.
Ensuite, regrouper ces gures spares en une seule en utilisant scope et
xshift.
Ainsi, \begin{scope}[xshift=1.5 cm] ... \end{scope} eectue une
translation de 1.5 cm vers la droite et limite leet de cette translation len-
vironnement scope.
En remplissant les rgions, attention lordre du trac : tracer les rgions
remplies avant les autres lments.
La structure du code est donc :
\begin{tikzpicture}[scale=...] % choisir une chelle
\begin{scope} % premire figure
\filldraw[fill=...] plot ...; % la courbe et laire
\draw (0,-1) node {$A$}; % commentaire
\end{scope}
\begin{scope}[xshift= 2.3cm] % translation
\filldraw ... ; % aire minorante
\draw[densely dashed] plot ...; % la courbe
\draw (0,-1) node ... ; % commentaire
\end{scope}
\begin{scope}[xshift= 4.6cm] % translation
\filldraw ... ; % aire majorante
\draw[densely dashed] plot ... ; % la courbe
\draw (0,-1) node ... ; % commentaire
\end{scope}
\begin{scope}[xshift= ...cm] % translation
\draw (0,0) node ... ; % le rsultat
\end{scope}
\end{tikzpicture}
3.6 Rsum
Pour tracer une courbe dnie par des quations mathmatiques utiliser
\draw plot (abscisse,ordonne); ou \draw plot (angle:rayon);
Les formules sont donnes en fonction dun paramtre nomm \x par dfaut,
ou quon peut nommer comme on veut avec loption variable=
Avec loption [domain=a:b] on peut xer le domaine de variation de ce pa-
ramtre, mais cette syntaxe pose des problmes quand on utilise babel franais.
3.6. RSUM 65
Ces problmes peuvent tre rsolus par lemploi de shorthandoff(:) ou par la
programmation dune option [domaine={a}{b}]
TikZ fournit une syntaxe pour les formules mathmatiques usuelles. Les
fonctions trigonomtriques utilisent des angles en degrs, mais TikZ fournit des
possibilits de conversion de radians en degrs : r ou deg().
Laspect des courbes peut tre contrl par des options : samples pour le
nombre de points, smooth pour le lissage.
Le traitement des discontinuits ou des grandes valeurs nest pas automa-
tique. Il faut alors sparer soi-mme les intervalles, xer explicitement lchelle
avec scale, xscale, yscale et la fentre dachage avec \clip.
Les courbes formes de morceaux quon reproduit par des transformations
(fonction priodique par exemple) peuvent tre construites avec la commande
\foreach.
On peut remplir des rgions dlimites par des courbes. Pour cela il faut
dnir un chemin ferm (avec -- et cycle) et utiliser \fill ou \filldraw.
Certaines portions du chemin peuvent tre des courbes traces avec plot, sa-
chant quelles sont parcourues dans le sens dni par lordre des valeurs extrmes
du paramtre dans domain=a:b (de a vers b, mme si a > b).
On peut remplir une rgion avec de la couleur ou des motifs, comme par
exemple [pattern= horizontal lines] (voir la bibliothque patterns).
Le remplissage des rgions est rgi par des rgles techniques consulter dans
le manuel (interior rules : nonzero rule par dfaut, ou
even odd rule). La rgle par dfaut donne en gnral le rsultat attendu.
Une autre possibilit pour tracer des courbes est dutiliser plot function,
qui fait appel au logiciel extrieur Gnuplot. Cela peut tre utile quand les fonc-
tions mathmatiques de TikZ se rvlent insusantes, ou pour rcuprer des
gures charges sur Internet. Mais cela exige une bonne installation et congu-
ration de Gnuplot et de T
E
X. Se rfrer aux manuels de TikZ et de Gnuplot.
Une autre possibilit encore est dutiliser plot file {chier}, o chier
contient la liste des coordonnes des points avec un point par ligne.
On peut retrouver les options de certaines calculatrices graphiques avec un
peu de programmation :
xmin, xmax, ymin, ymax, \axes, \grille, \fenetre.
Pour construire une gure compose de plusieurs sous-gures indpendantes,
on peut utiliser lenvironnement scope pour sparer les sous-gures et les options
shift, xshift, ou yshift pour les dcaler.
Chapitre 4
Gomtrie dans lespace
4.1 Coordonnes (x,y,z)
4.1.1 Reprsentation TikZ standard
TikZ prvoit une syntaxe (x,y,z) pour reprsenter des points dans lespace.
Mais ce nest pas un logiciel de modlisation 3D : il ne gre pas les surfaces ca-
ches, ne permet pas de voir les gures sous dirents points de vue. Il se contente
de tracer des gures planes qui sont les projetes de gures de lespace, sachant
que le point M(x, y, z) est dni par

OM = x

i + y

j + z

k , o

i ,

j ,

sont des vecteurs du plan, avec par dfaut

k =
1
2

i
1
2

j (ce nest pas


ce que dit le manuel, mais on peut vrier sur la gure suivante).

k
Le cube unit est alors obtenu par :
\draw (0,0,0)--(1,0,0)--(1,1,0)--(0,1,0)--cycle; % face arrire
\draw (0,0,1)--(1,0,1)--(1,1,1)--(0,1,1)--cycle; % face avant
% artes horizontales, de larrire vers lavant
\draw (0,0,0) -- (0,0,1); % bas gauche
\draw (1,0,0) -- (1,0,1); % bas droit
\draw (1,1,0) -- (1,1,1); % haut droit
\draw (0,1,0) -- (0,1,1); % haut gauche
Si lon considre le cube comme un solide plein, on peut tracer en pointills
([dashed]) les artes caches (celles qui partent de lorigine) :
66
4.1. COORDONNES (X,Y,Z) 67
Ou bien on peut ombrer les faces avec \fill (le soleil est en haut gauche) :
On peut de plus rendre les faces transparentes avec opacity :
Tout cela est possible avec les options habituelles de TikZ, mais ce nest pas
automatique. Il faut dcider soi-mme ce qui sera en pointills [dashed], en gris
[fill=...], transparent [opacity=0.7], et bien dessiner les lments dans le
bon ordre.
4.1.2 Autres reprsentations. x=..., y=..., z=...
La reprsentation de TikZ est une convention comme une autre, et une fois
quon la comprise, on peut lutiliser. Cependant, lenseignement mathmatique
franais utilise une autre convention laquelle sont attachs des rexes et des
images mentales, et changer ces rexes peut induire une charge mentale inutile.
TikZ possde des options x, y et z, qui permettent de rednir les vecteurs
de base en fonction de coordonnes planes absolues (abscisses horizontales vers
la droite, ordonnes verticales vers le haut).
La reprsentation mathmatique franaise usuelle peut tre obtenue par :
[x= {(-0.353cm,-0.353cm)}, z={(0cm,1cm)}, y={(1cm,0cm)}]

k
Si lon souhaite utiliser souvent cette reprsentation, il peut tre pratique
den faire un style (par exemple math3d), quon dnit une fois pour toutes au
dbut du document :
\tikzset{math3d/.style=
{x= {(-0.353cm,-0.353cm)}, z={(0cm,1cm)},y={(1cm,0cm)}}}
On peut dailleurs choisir une autre valeur de x pour les besoins de la perspec-
tive. Pour chaque gure o lon veut utiliser cette convention, il sura dajouter
loption math3d :
\begin{tikzpicture} [math3d] ... \end{tikzpicture}
68 CHAPITRE 4. GOMTRIE DANS LESPACE
4.2 Quelques gures de gomtrie
4.2.1 Section dun cube suivant un hexagone
En joignant les milieux de certains cts, on obtient un hexagone rgulier,
section du cube par le plan mdiateur de la grande diagonale.
En soi, il ny a pas de dicult particulire concernant TikZ. Il faut prala-
blement calculer les coordonnes de tous les points, mais cest plus un problme
mathmatique quun problme de dessin. Pour le dessin, il faut tracer des seg-
ments entre les points, en reprant ce qui doit tre ombr, mis en pointills ou
transparent.
Une dcision prendre est de choisir un paralllogramme pour reprsenter
le plan de lhexagone. On a choisi des points dont la position est facilement
reprable par rapport aux autres lments du dessin, le but tant de favoriser
la vision dans lespace.
(3/2,0,0) (0,3/2,0) (-1/2,1,1) (1,-1/2,1)
4.2.2 Grande diagonale dun cube
La grande diagonale du cube coupe un certain triangle quilatral en son
centre de gravit, perpendiculairement.

L encore, il faut calculer les coordonnes de tous les points, reprer ce qui
est cach et le traduire par des couleurs, des pointills, une opacit, un ordre de
trac.
4.2.3 Droites et plans
Il est frquent davoir illustrer un problme de gomtrie qui demande de
dessiner des droites et des plans quand on connat leurs quations.
Par exemple : construire la perpendiculaire commune aux deux droites
d et d

dont les reprsentations paramtriques sont :


4.2. QUELQUES FIGURES DE GOMTRIE 69
d

x = 1 t
y = t
z = 2t
et d

x = t
y = 2 + 2t
z = t
Une solution mathmatique consiste construire le plan P parallle d et
contenant d

(dquation x y +z +2 = 0), puis le plan Q perpendiculaire P


et contenant d

(dquation x z = 0). Ce plan Q coupe d en H

2
3
,
1
3
,
2
3

.
Soit K le projet de H sur P : K

1
3
,
4
3
,
1
3

.
Alors la perpendiculaire commune d et d

est la droite (HK).


Le problme est mathmatiquement rsolu, mais il reste faire la gure
suivante pour lillustrer :
d

H
d
K
Q
P
Pour cela, il reste de nombreux choix supplmentaires faire et de problmes
auxiliaires rsoudre.
On choisit dabord deux points A et B de d et on trace le segment [AB]. De
mme, on choisit C et D sur d

et on trace le segment [CD]. Ce nest pas grand


chose, mais rien que cela peut demander plusieurs essais pour que la gure ne
soit pas trop grande et que la vue en perspective soit interprtable. On choisit
A(2, 1, 2); B(0, 1, 2); C(0, 2, 0); D(1, 0, 1).
Ensuite il faut reprsenter le plan P par un paralllogramme. On dcide
de choisir [CD] comme diagonale de ce paralllogramme. On choisit lautre
diagonale [C

] parallle d pour bien suggrer le paralllisme. Mais pour que


le paralllogramme ne soit pas trop grand, on prend pour longueur C

la
moiti de AB.
On obtient C

1,
3
2
,
1
2

; D

0,
1
2
,
3
2

Il faut ensuite reprsenter le plan Q par un paralllogramme. On choisit [CD]


comme un des cts et on sarrange pour que le ct parallle [CD] contienne
H. Les autres sommets sont alors E(1, 1, 1) et F(0, 1, 0).
Pour le dessin, il faut faire attention lordre du trac pour suggrer la
perspective : le contour et le remplissage du plan P doivent tre faits dabord
(le plan P est plac derrire), puis celui du plan Q avec une certaine transparence
[opacity = 0.7].
70 CHAPITRE 4. GOMTRIE DANS LESPACE
D
C
C
D
H
E
F
A
B
K
On voit que, pour une structure mathmatique relativement simple (deux
plans et trois droites), les contraintes du trac en perspective rendent la ra-
lisation assez dlicate : il faut matrialiser les droites par des segments et les
plans par des paralllogrammes, suggrer les proprits de la gure (parall-
lisme), rendre la gure lisible et pas trop grande. Et tout cela en respectant les
quations donnes par lnonc et les rgles de la reprsentation en perspective.
Une astuce consisterait considrer que la gure nale nest aprs tout
quune gure plane comportant essentiellement deux paralllogrammes, et de
tracer ces paralllogrammes sans se soucier dun quelconque repre de lespace.
On peut alors choisir les paralllogrammes de formes arbitraires, condition de
respecter la possibilit dinterprter la gure comme une projection dune gure
de lespace.
Cependant, il ne serait plus possible de les choisir arbitrairement si on devait
de plus reprsenter le repre de lespace de manire cohrente avec les quations
(ou alors dans ce cas il faudrait calculer la bonne position du repre).
4.3 Courbes et surfaces
4.3.1 Reprsentation paramtrique, plot, \foreach
Une courbe dans lespace peut tre dnie par une reprsentation param-
trique un paramtre. On peut donc la dessiner avec lopration plot (X, Y, Z)
en exprimant X, Y et Z en fonction dun paramtre (nomm \x par dfaut).
Une surface peut tre dnie mathmatiquement par une reprsentation
paramtrique deux paramtres t et u. TikZ ne prvoit pas cette possibilit,
mais on peut cependant la mettre en oeuvre.
Lorsquon xe t et quon fait varier u, on obtient une courbe dans lespace,
trace sur la surface. Lide est de tracer chacune de ces courbes avec lopration
plot, et cela pour direntes valeurs de t, quon peut obtenir laide dune
boucle \foreach.
Le schma est donc :
\foreach \t in {...} { plot ( ..., ..., ...) }
Prenons comme exemple une surface de rvolution daxe Oz (comme un
cylindre, un cne, une sphre). Elle est obtenue en faisant tourner la courbe plane
4.3. COURBES ET SURFACES 71
dquation x = f(z) autour de laxe Oz et a pour reprsentation paramtrique
(avec deux paramtres et t, variant de 0 2) :

x = f(t) cos()
y = f(t) sin()
z = t
On peut alors reprsenter la surface par empilement de disques horizontaux
(un disque est obtenu pour t constant), en les dessinant dans lordre croissant
des valeurs de t. On matrialise ainsi les sections de la surface par des plans
horizontaux (les courbes de niveau).
Avec TikZ, les noms des paramtres vont tre \x pour et \t pour t. On fera
varier \t grce une boucle \foreach, et \x sera le paramtre dune instruction
plot. Suivant la surface, il faut choisir correctement les valeurs de \t et le
domaine de \x
4.3.2 Hlice
Une hlice circulaire (un ressort) est dnie par :

x =

y = cos()
z = sin()
\draw [domain=-4*pi:4*pi, samples=80, smooth]
plot (\x/pi, {cos(\x r)}, {sin(\x r)}) ;
TikZ na pas de mcanisme automatique pour mettre en vidence les parties
caches. Sur cette gure, il nest pas facile de le faire, contrairement ce qui peut
se passer pour les faces dun cube. Laxe de lhlice est laxe des abscisses. Dans
le sens des variations du paramtre, de 4 4, les spires vont de larrire
vers lavant, en tournant dans le sens inverse des aiguilles dune montre.
On constate les limitations de TikZ en ce qui concerne les gures dans les-
pace. Il fournit une faon simple de reprer prcisment les points dans lespace
avec trois coordonnes, ce qui permet de faire des gures exactes, mais il ne
permet pas danalyser les gures obtenues pour obtenir un rendu analogue la
vision humaine.
4.3.3 Cylindre x
2
+y
2
= 1
Cest une surface de rvolution de reprsentation paramtrique
(cos(), sin(), t)
72 CHAPITRE 4. GOMTRIE DANS LESPACE
\foreach \t in {-1,-0.9,...,1} {
\filldraw plot[domain=0:2*pi]
({cos(\x r)}, {sin(\x r)}, \t);
}
4.3.4 Sphre x
2
+y
2
+z
2
= 1
Cest une surface de rvolution de reprsentation paramtrique
(

1 t
2
cos(),

1 t
2
sin(), t)
On nobtient pas tout fait laspect visuel habituel dune sphre, mais cela
sexplique par le type de perspective utilis : perspective cavalire (cest--dire
projection sur un plan) et non pas perspective centrale (qui correspond notre
mode de vision).
Il y a dautres faons de reprsenter une sphre, mais ici la reprsentation
par empilement de disques horizontaux permet de suggrer le relief et de cacher
les parties qui sont derrire.
4.3.5 Parabolode z = x
2
+y
2
Cest une surface de rvolution obtenue en faisant tourner une parabole
autour de Oz. Une reprsentation paramtrique est (

t cos(),

t sin(), t)
4.4 Rsum
TikZ permet dexprimer les coordonnes (x,y,z) dun point de lespace,
quil reprsente par projection sur le plan de dessin.
Le repre correspondant de lespace a une position prdnie, quon peut
modier par les options x, y et z, qui xent les projets des vecteurs de lespace.
Pour une reprsentation franaise standard, on peut choisir
[x= {(-0.353cm,-0.353cm)}, z={(0cm,1cm)}, y={(1cm,0cm)}]
TikZ nest pas un logiciel de modlisation 3D, et il ne fournit aucune autre
fonctionnalit automatique part la trac dun point par (x,y,z). Il faut donc
4.4. RSUM 73
dcider soi-mmes des reprsentations du relief, de la perspective, des parties
caches. A part les cas simples (faces planes, segments), ce nest pas forcment
possible. Il est alors conseill de se tourner vers des logiciels spcialiss.
Les courbes peuvent tre traces partir de leurs reprsentations param-
triques, par lopration plot.
Les surfaces peuvent tre reprsentes par leurs courbes de niveau, en com-
binant \foreach et plot.
Chapitre 5
Reprsentation de donnes
5.1 Notions de base
On parle de reprsentation graphique de donnes, lorsque des informations
relatives un certain phnomne et qui sont fournies comme une liste de nombres,
sont aches sous forme dun diagramme signicatif.
On va montrer, dans ce chapitre, comment raliser les diagrammes utiliss
de faon usuelle dans ce type de situation : les courbes, les diagrammes barres,
les histogrammes, les diagrammes secteurs.
5.1.1 Diagramme deectifs : plot coordinates
Dans une classe, un professeur a rendu un devoir not sur 10 en points
entiers. Il a compt combien il y avait de copies pour chaque note. Il dsire faire
une reprsentation graphique du nombre de copies par note.
Note 0 1 2 3 4 5 6 7 8 9 10
Nombre de copies 0 0 2 0 6 4 7 4 3 0 1
Pour tre traites, ces donnes numriques vont tre reprsentes sous forme
dune liste de couples de coordonnes, avec en abscisse la note et en ordonne
le nombre des copies ayant obtenu cette note.
Ainsi en utilisant lopration plot coordinates :
\begin{tikzpicture}
\draw plot coordinates {(0,0) (1,0) (2,2) (3,0)
(4,6) (5,4) (6,7) (7,4) (8,3) (9,0) (10,1)};
\end{tikzpicture}
on va dessiner le diagramme suivant :
74
5.1. NOTIONS DE BASE 75
Comme on le voit, la commande :
\draw plot coordinates {(0,0) (1,0) (2,2) ... (10,1)};
produit le mme trac que : \draw (0,0)--(1,0)--(2,2) ... --(10,1);
On peut alors se demander quel intrt il y a utiliser plot coordinates.
Sur ce petit exemple, ce nest pas vident. Mais les sries statistiques com-
portent parfois une trs grande quantit de donnes, et nous verrons plus loin
comment traiter ces donnes facilement laide dapplications auxiliaires (ta-
bleur ou outils statistique) et crer des chiers de donnes associer au code
source du document.
Nous allons maintenant prsenter plusieurs exemples avec ces donnes. Pour
viter davoir les recopier plusieurs fois, nous allons les dnir sous forme dune
commande L
A
T
E
X rutilisable dans les exemples qui vont suivre. En eet, bien
que TikZ dnisse ses propres rgles syntaxiques, il peut quand mme bncier
de certains mcanismes de L
A
T
E
X, en particulier lutilisation de commandes vues
comme des macros de remplacement de texte.
Voici la commande \nombresCopiesParNote :
\newcommand{\nombresCopiesParNote}
{(0,0)(1,0)(2,2)(3,0)(4,6)(5,4)(6,7)(7,4)(8,3)(9,0)(10,1)}
Maintenant, lexemple prcdent peut tre obtenu plus simplement avec :
\draw plot coordinates {\nombresCopiesParNote};
5.1.2 Amliorer la lisibilit : grid, node, \foreach
Nous allons maintenant montrer comment amliorer ce diagramme pour
rendre comprhensibles les informations fournies.
Il est ncessaire de placer ces donnes sur une grille pour rendre les valeurs
plus facilement lisibles : \draw (-1,0) grid (11,7);
On peut ensuite tiqueter les abscisses avec des commandes de ce type :
\draw (\x,0) node[below]{\x} en faisant varier \x entre 0 et 10.
76 CHAPITRE 5. REPRSENTATION DE DONNES
ou les ordonnes avec : \draw (-1,\y) node[left]{\y};
Pour cela on peut utiliser la commande \foreach qui permet en deux ins-
tructions deectuer ltiquetage des abscisses et des ordonnes :
\foreach \y in {1,2,...,7} \draw(-1,\y)node[left]{\y};
\foreach \x in {0,1,...,10} \draw(\x,0)node[below]{\x};
Dans la commande \foreach, la variable \x va prendre successivement les
valeurs dnies par {0,1,...,10} cest dire {0,1,2,3,4,5,6,7,8,9,10}
Les trois points signient que la liste doit tre prolonge en utilisant comme
modles les 2 premires valeurs et jusqu la valeur nale. Pour cela, on ajoute
la seconde valeur de la dirence delle mme avec la premire et ainsi de suite...
Par exemple : {-1,4,...,19} reprsente {-1,4,9,14,19}
0 1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
5.1.3 Marquer les points, tiqueter : mark, node, rotate
On peut placer un texte sur chaque axe pour prciser ce quil reprsente. On
utilise pour cela un nud (node) correctement plac :
\draw (5.5,-0.75) node{Notes};
\draw (-1.75,3.5) node[rotate=90]{Nombre de notes};
On peut aussi marquer les points signicatifs de la courbe laide de loption
mark aecte lopration plot :
\draw[thick] plot[mark=*] coordinates {\nombresCopiesParNote};
On obtient alors cette nouvelle version du diagramme :
5.1. NOTIONS DE BASE 77
0 1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
Notes
N
o
m
b
r
e
d
e
n
o
t
e
s
plot[mark=*]
\draw[thick]
Le marquage des points est fait laide de loption mark= suivie dune des
3 valeurs * + ou x qui placent respectivement + ou sur chaque point de la
liste. Loption mark size= suivie dune dimension permet de modier la taille
de la marque. Par exemple : [mark=*,mark size=5mm]
Loption ball permet aussi de placer une marque comme celle-ci
Dautres marques sont disponibles dans la bibliothque (library) plotmarks.
Pour cela, dans le prambule, lors du chargement de TikZ il faut ajouter :
\usetikzlibrary{plotmarks} aprs \usepackage{tikz}
Pour un diagramme deectifs, la courbe qui relie les points nest pas trs
signicative, et ce nest donc pas une bonne ide de tracer cette courbe.
5.1.4 Diagrammes barres : xcomb, ycomb, polar comb
Par dfaut, lopration plot relie les points donns par une ligne polygonale,
mais on peut remplacer cette ligne par des barres :
horizontales avec loption xcomb
verticales avec loption ycomb
joignant les points lorigine avec loption polar comb
Voici trois petits exemples o la mme liste de coordonnes est ache avec
les options xcomb, ycomb et polar comb.
On pourra ainsi comparer les dirents modes dachage :
78 CHAPITRE 5. REPRSENTATION DE DONNES
\draw[very thick] plot coordinates
{(-1.5,1.5)(0.5,2)(1.5,0.5)(-0.5,-0.5)(-2,-1)(1,-1.5)}
xcomb

ycomb

polar comb

Pour le diagramme actuel, la meilleure option est donc ycomb.


On peut aussi rendre les barres bien visibles en dessinant des traits plus
larges et en marquant le point avec par exemple :
0 1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
Notes
N
o
m
b
r
e
d
e
n
o
t
e
s
plot[ycomb,mark=*]
\draw[line width=4pt]
5.1.5 Histogramme : xcomb, ycomb, line width
Un histogramme est aussi un diagramme barre, en eet il sut de sup-
primer les marques du diagramme prcdent et daugmenter la largeur du trait
pour obtenir un histogramme traditionnel :
5.1. NOTIONS DE BASE 79
0 1 2 3 4 5 6 7 8 9 10
1
2
3
4
5
6
7
Notes
N
o
m
b
r
e
d
e
n
o
t
e
s
plot[ycomb]
\draw[line width=8mm,color=blue !50]
5.1.6 Achage des donnes dun chier : plot file
Dans les exemples prcdents, les eectifs par note ont t donns sous forme
dune liste de coordonnes :
{(0,0)(1,0)(2,2)(3,0)(4,6)(5,4)(6,7)(7,4)(8,3)(9,0)(10,1)}
Cependant les informations statistiques sont souvent disponibles sous forme
de chier de texte contenant les donnes numriques. Voici par exemple le chier
nombresCopiesParNote.txt contenant les mme informations que ci-dessus
sous un format dirent :
0 0
1 0
2 2
3 0
4 6
5 4
6 7
7 4
8 3
9 0
10 1
Il y a un couple de coordonnes par ligne, et il y a au moins un sparateur
(espace ou tabulation) entre labscisse et lordonne. Il est facile de crer un tel
chier avec nimporte quel diteur de texte ordinaire.
En gnral si on copie deux colonnes dun tableur et quon les colle dans
lditeur de texte, on obtient exactement ce que lon dsire.
Une fois ce chier nombresCopiesParNote.txt plac dans le dossier conte-
nant le source .tex du document en cours de rdaction, on obtiendra exactement
le mme rsultat en remplaant la commande :
\draw plot coordinates {\nombresCopiesParNote};
80 CHAPITRE 5. REPRSENTATION DE DONNES
ou la commande :
\draw plot coordinates {(0,0) (1,0) (2,2) (3,0)
(4,6) (5,4) (6,7) (7,4) (8,3) (9,0) (10,1)};
par la commande :
\draw plot file {nombresCopiesParNote.txt};
Le principal avantage de cette approche est quil est, dans ce cas, facile de
changer les donnes dans le chier texte auxiliaire, sans modier le code source
.tex du document. Une simple compilation permet alors une mise jour rapide
de lachage des donnes.
Un autre avantage concerne le traitement des donne statistiques de grande
taille (des centaines de points). Dans ce cas linclusion des donnes dans le source
serait trop pnible et provoquerait des risques derreurs.
5.2 Diagramme barres horizontales
5.2.1 Le bl dans le monde : utilisation dun tableur
On dsire les prsenter de faon signicative sur un diagramme les deux s-
ries statistiques suivantes. Ces donnes reprsentent la production de bl pour
les annes 2004 et 2005 (en millions de tonnes), pour les principaux pays pro-
ducteurs dans le monde :
Pays Production 2004 Production 2005
Chine 91,96 97,45
Inde 72,16 68,64
tats-Unis 58,74 58,74
Russie 45,41 47,70
France 39,69 36,89
Canada 25,86 26,78
Australie 21,91 25,09
Allemagne 25,43 23,69
Pakistan 19,50 21,61
Turquie 21,00 21,50
Ukraine 17,52 18,70
Royaume-Uni 15,47 14,86
Iran 14,57 14,31
Argentine 15,96 12,57
On veut obtenir une gure de ce type :
Chine
Inde
tats-Unis
Russie
France
Canada
Australie
Allemagne
Pakistan
Turquie
Ukraine
Royaume-Uni
Iran
Argentine
10 20 30 40 50 60 70 80 90 Mt
5.2. DIAGRAMME BARRES HORIZONTALES 81
La solution la plus rapide est de raliser le diagramme laide dun logiciel
adapt, comme un tableur, par exemple. On peut alors exporter la gure et
linclure dans le document. Hlas, dans ce cas, le style de la gure ne sera pas
parfaitement assorti la typographie du document, et on risque de rencontrer
des dicults pour la mise lchelle de la gure.
Faire la gure avec TikZ rclame videment un petit eort qui sera largement
valid par la qualit du rsultat obtenu.
Comme nous lavons vu prcdemment, lopration plot eectue un trac
laide de coordonnes de points.
Nous pouvons dcider, par exemple, de reprsenter chaque valeur par une
barre horizontale. Chaque valeur est donc labscisse dun point dont il faut xer
lordonne.
Pour cela, nous allons procder, laide du tableur, un pr-traitement des
donnes pour prparer les chiers textes ncessaires.
On va produire les deux chiers suivants :
"producBle2004.txt"
91.96 14
72.16 13
58.74 12
45.41 11
39.69 10
25.86 9
21.91 8
25.43 7
19.50 6
21.00 5
17.52 4
15.47 3
14.57 2
15.96 1
"producBle2005.txt"
97.45 14
68.64 13
58.74 12
47.70 11
36.89 10
26.78 9
25.09 8
23.69 7
21.61 6
21.50 5
18.70 4
14.86 3
14.31 2
12.57 1
On a plac les donnes en abscisse et on a numrot les ordonnes par valeurs
dcroissantes pour que les barres horizontales se placent les unes en dessous des
autres par pays. On utilisera loption xcomb de lopration plot qui permet de
relier chaque point laxe des ordonnes par une barre horizontale, comme on
la vue prcdemment.
Attention : en franais le sparateur dcimal est la virgule. On a utilis la
fonction de recherche-remplacement de notre diteur de texte pour mettre des
points dcimaux la place des virgules.
5.2.2 Barres horizontales : plot file, xcomb
Maintenant, si on utilise la commande :
\draw[thick] plot[xcomb] file {producBle2004.txt};
Le rsultat donne quelque chose de ce type :
82 CHAPITRE 5. REPRSENTATION DE DONNES
On constate que la gure dborde dans la marge droite de la feuille. En eet
la Chine produit 91,96 Mt de bl, or lunit par dfaut de TikZ est le centimtre
et on obtient donc une barre de presque un mtre.
Il va falloir jouer avec lchelle de la gure pour obtenir un achage de taille
correcte en ajoutant des options lenvironnement tikzpicture.
Un facteur multiplicatif pour les abscisses peut tre dni la suite de lop-
tion xscale=.
Pour que la gure tienne sur la largeur de la feuille, ce facteur doit tre
infrieur 0,1 et il sera ncessaire de faire quelques essais pour parvenir un
rsultat satisfaisant.
Comme il y a 14 pays dans la liste, le diagramme fera au moins 14 cm de
haut, ce qui est beaucoup.
On pourra de mme rduire cette hauteur en xant un facteur multiplicatif
pour les ordonnes la suite de loption yscale=.
Voici ce quon obtient avec, par exemple : [xscale=0.09,yscale=0.6]
On peut maintenant se proccuper du style des barres. Si on veut une pr-
sentation en histogramme on peut crire par exemple :
\draw[line width=4mm,color=blue!50]
plot[xcomb] file {producBle2004.txt};
5.2. DIAGRAMME BARRES HORIZONTALES 83
5.2.3 Installation dune grille : grid, xstep, ystep
On va placer des lignes verticales pour faciliter la lecture des informations.
On utilise pour cela une grille dont le pas sera astucieusement choisi :
\draw (0,0) grid[xstep=10,ystep=15] (100,15);
Loption xstep=10 place les lignes verticales tous les 10 millions de tonnes
84 CHAPITRE 5. REPRSENTATION DE DONNES
et loption ystep=15 place les lignes horizontale toutes les 15 units, ce qui
reprsente en ralit uniquement la ligne du bas et la ligne du haut.
On a ausssi ajout une sous-grille en gris de pas plus petit (5 Mt) :
\draw[gray,very thin] (0,0) grid[xstep=5,ystep=15] (100,15);
Cette commande a t place avant la commande prcdente dans lenvi-
ronnement tikzpicture de faon ce que le reste de la gure soit dessin par
dessus.
5.2.4 tiquetage du repre : \foreach, node
On utilisera ensuite des commandes \foreach pour graduer les abscisses de
la grille de reprage et pour placer les noms de pays en ordonnes.
\foreach \x in {10,20,...,90} \draw(\x,15)node[above]{\x};
Cette commande place les nombres en haut du diagramme.
Chine
Inde
tats-Unis
Russie
France
Canada
Australie
Allemagne
Pakistan
Turquie
Ukraine
Royaume-Uni
Iran
Argentine
10 20 30 40 50 60 70 80 90
\foreach \n/\y in {Chine/14,Inde/13,tats-Unis/12,Russie/11,
France/10,Canada/9,Australie/8,Allemagne/7,Pakistan/6,
Turquie/5,Ukraine/4,Royaume-Uni/3,Iran/2,Argentine/1}
\draw (0,\y) node [left] {\n};
Nous utilisons ici une nouvelle forme de la commande \foreach. qui per-
met de contrler plusieurs variables simultanment. Les valeurs proposes entre
accolades est, dans ce cas, une liste de valeurs multiples.
Dans cet forme de la commande \foreach il y a ici deux variables :
\n qui va prendre pour valeur les noms des villes
5.2. DIAGRAMME BARRES HORIZONTALES 85
\y qui va prendre pour valeur lordonne du point dtiquetage
De mme que les deux variables sont spares par un / dans la dclaration
\n/\y leurs valeurs respectives dans la liste qui suit sont aussi spares par un
/ comme pour Chine/14 par exemple.
5.2.5 Deux sries plus une lgende : plot, shift, node
Il est possible de placer la seconde srie statistique (la production de bl
2005) sur le mme diagramme en utilisant une couleur dirente et en dcalant
lgrement les barres des deux sries verticalement avec yshift. La premire
srie est dcale de 2 mm vers le haut avec yshift=2mm, et la seconde srie est
dcale de 2 mm vers le bas avec yshift=-2mm :
\draw [line width=3mm,color=blue!50,yshift=2mm]
plot[xcomb] file {producBle2004.txt};
\draw [line width=3mm,color=green!50,yshift=-2mm]
plot[xcomb] file {producBle2005.txt};
Cest une bonne ide dajouter par la mme occasion une lgende, dans deux
nuds correctement placs :
\draw(60,5)node[fill=blue!50,above] {Production 2004};
\draw(60,5)node[fill=green!50,below] {Production 2005};
Chine
Inde
tats-Unis
Russie
France
Canada
Australie
Allemagne
Pakistan
Turquie
Ukraine
Royaume-Uni
Iran
Argentine
10 20 30 40 50 60 70 80 90 Mt
Production 2004
Production 2005
Les principaux pays producteurs de bl (en millions de tonnes)
86 CHAPITRE 5. REPRSENTATION DE DONNES
5.3 Courbe des variations de donnes
5.3.1 Production annuelle de riz : pr-traitement
On dsire prsenter par une courbe lvolution de la production mondiale de
riz durant les annes 1997 2006.
Les donnes sont prsentes dans la table suivante :
Anne Production de riz en Mt
1997 577
1998 583
1999 612
2000 598
2001 603
2002 572
2003 588
2004 615
2005 627
2006 633
On dsire prsenter les variations ainsi :
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
580
590
600
610
620
630
640
Il semble tout fait naturel de penser procder de la mme faon que dans
le paragraphe prcdent :
crer un chier de texte contenant ces donnes
utiliser la commande \draw plot file {nomDuFichier.txt}
Hlas, ce nest pas aussi simple : TikZ supporte assez mal les points dont les
coordonnes sont grandes. Lunit par dfaut du dessin est le centimtre. Avec
2006 on obtient donc une gure de plus de 20 m de large.
On peut alors esprer utiliser loption scale pour modier lchelle du dessin.
Hlas, a ne marche pas non plus, car TikZ utilise aussi pour ses calculs internes
des nombres damplitude limite.
On dcouvre exprimentalement (a ne semble pas clairement document
dans le manuel de lauteur) quil vaut mieux limiter les coordonnes des points
des valeurs comprise entre 500 cm et +500 cm. On peut malgr tout utiliser des
nombres plus grands dans les calcul, TikZ est simplement incapable dutiliser des
points dont les coordonnes sortent de cet intervalle. Il est dans ce cas impossible
de dessiner, mme en rduisant la fentre dachage avec la commande \clip
ou en changeant dchelle avec loption scale.
Si une erreur de compilation survient avec un message de ce type :
! dimension too large. <recently read> \pgf@yy
on doit penser vrier que certaines coordonnes ne sont pas trop grandes.
5.3. COURBE DES VARIATIONS DE DONNES 87
Nos donnes ne sont pas du tout comprises dans cet intervalle. Nous allons
donc eectuer un pr-traitement, laide dun tableur par exemple, pour obtenir
des donnes plus adaptes au dessin. On peut dcider de :
soustraire 1990 aux annes
diviser par 10 les nombres de millions de tonnes
On produit ainsi le chier : "producRiz.txt"
7 57.7
8 58.3
9 61.2
10 59.8
11 60.3
12 57.2
13 58.8
14 61.5
15 62.7
16 63.3
5.3.2 Courbe des variations : plot file
La commande \draw plot file {producRiz.txt}; permet dobtenir im-
mdiatement un rsultat visible :
5.3.3 Quadrillage : grid, step
On va ajouter une grille en faisant varier les abscisses entre 7 (pour 1997) et
16 (pour 2006), les ordonnes entre 57 (pour un minimum de 57,2) et 64 (pour
un maximum de 63,3) : \draw (7,57) grid (16,64);
88 CHAPITRE 5. REPRSENTATION DE DONNES
Pour faciliter la lecture on peut quadriller plus nement selon les ordonnes
en xant pour lopration grid loption [ystep=0.5] :
On constate que la ligne horizontale infrieure du quadrillage est absente.
En eet les erreurs darrondi dans le calcul du quadrillage produisent parfois
des problmes de ce type.
Pour corriger ce problme il sut de faire quelques essais en modiant pro-
gressivement la valeur de loption ystep qui xe le pas vertical de la grille du
quadrillage. Dans le cas prsent, on obtient un rsultat satisfaisant en augmen-
tant trs lgrement le pas, avec :
\draw (7,57) grid [ystep=5.00001mm] (16,64);
5.3.4 Annotations, dcorations : \foreach, node, mark
On peut maintenant tiqueter les axes du quadrillage pour faciliter la lecture
des donnes qui sont aches.
5.3. COURBE DES VARIATIONS DE DONNES 89
On commence par laxe des ordonnes avec la commande \foreach :
\foreach \y in {58,59,...,64}
\draw (7,\y) node[left,scale=0.8]{\y0};
Pour ltiquetage des ordonnes on remarquera que la variable \y prend les
valeurs de 58 64, mais que le contenu du nud est {\y0} cest dire la valeur
de \y suivie du caractre 0, ce qui fera donc : 580, 590, ... jusqu 640.
\foreach \x in {1997,1998,...,2006}
\draw (\x-1990,57) node [below,scale=0.8] {\x};
Pour ltiquetage des abscisses on utilise les capacits de calcul de la version
2 de PGF. La variable \x prend les valeurs successives de 1997 2006, mais les
nuds contenant les annes doivent tre placs aux points dabscisses successives
7, 8, ... jusqu 16. On place donc chaque nud en (\x-1990,57)
Labscisse \x-1990 est la valeur de \x laquelle on soustrait 1990. Ainsi les
abscisses seront bien les valeurs 7, 8, ... jusqu 16 (valeurs infrieures 500).
Cette syntaxe qui accepte des formules de calcul dans les commandes TikZ
est rserve la version 2 de TikZ & PGF. De plus elle ne fonctionne que si
le bibliothque calc a t charge dans le prambule, dans le quel il faut donc
placer \usetikzlibrary{calc} juste aprs \usepackage{tikz}.
Pour terminer, on va eectuer une petite amlioration esthtique de la -
gure en accentuant la visibilit des points signicatifs. Pour cela on ajoute
lopration plot loption [mark=ball,mark size=3pt] pour obtenir :
1997 1998 1999 2000 2001 2002 2003 2004 2005 2006
580
590
600
610
620
630
640
Production annuelle mondiale de riz en million de tonnes
90 CHAPITRE 5. REPRSENTATION DE DONNES
5.4 Diagramme secteurs
5.4.1 Rpartition par catgories socioprofessionnelles
Voici la rpartition en pourcentage de la population franaise par catgories
socioprofessionnelles pour lanne 1999 :
Catgorie %
Agriculteurs exploitants 2
Artisans, commerants, chefs dentreprise 3
Cadres, professions intellectuelles suprieures 5
Professions intermdiaires 9
Employs 13
Ouvriers 12
Retraits 18
Autres sans activit professionnelle 38
Dans ce cas, il est assez naturel de reprsenter ces donnes laide dun
diagramme secteurs.
Le disque complet reprsentera la population franaise et chaque catgorie
socioprofessionnelle sera associ un secteur dangle proportionnel au pourcentage
de la population quelle reprsente.
Voici le type de gure raliser :
2%
Agriculteurs
3%
Artisans
5%
Cadres
9%
Intermdiaires
13%
Employs
12%
Ouvriers
18%
Retraits
38%
Inactifs
5.4.2 Calcul des angles : pr-traitement avec un tableur
Dans TikZ, il ny a pas de commande spcique prvue pour construire
automatiquement des diagrammes secteurs.
Il va donc falloir construire chaque secteur laide de lopration arc crite
sous la forme suivante :
\draw (X
0
, Y
0
) -- ( : R) arc ( : : R) -- cycle;
5.4. DIAGRAMME SECTEURS 91
R

(X
0
, Y
0
)
On constate quil est ncessaire, pour tracer un secteur, de calculer au pra-
lable les angles qui dnissent sa forme, langle du secteur, mais aussi langle
que fait le rayon du dbut du secteur avec lhorizontale, puis celui que fait le
rayon de la n du secteur avec lhorizontale :
Catgorie % angle en dbut du secteur n du secteur
Agriculteurs 2 7,2 0 7,2
Artisans 3 10,8 7,2 18
Cadres 5 18 18 36
Intermdiaires 9 32,4 36 68,4
Employs 13 46,8 68,4 115,2
Ouvriers 12 43,2 115,2 158,4
Retraits 18 64,8 158,4 223,2
inactifs 38 136,8 223,2 360
Ces rsultats ont t obtenus laide dun tableur.
5.4.3 Dessiner les secteurs : \draw, arc, cycle, fill, $
Pour dessiner un secteur on utilise son angle de dbut et son angle de n.
On peut aussi tiqueter ce secteur par exemple, en notant la catgorie
lextrieur et en plaant le pourcentage lintrieur.
Expliquons en dtail deux exemples :
Agriculteurs (2% secteur de 0 7,2)
Employs (13% secteur de 68,4 115,2)
2%
Agriculteurs
\draw[fill=black!2!blue!2] (0,0)--(0:4.5)arc(0:7.2:4.5)--cycle;
\draw (3.6:4) node {2\%};
\draw (3.6:5.6) node {Agriculteurs};
Le secteur est centr lorigine (X
0
, Y
0
) = (0, 0), le rayon du cercle est
R = 4, 5 cm et le secteur de = 0 = 7, 2est colori avec un mlange de 2%
de noir et de bleu [fill=black !2 !blue !2], cest dire proportionnellement
au pourcentage de la population quil reprsente. Ainsi le secteur sera dautant
plus sombre que son angle sera grand.
Ltiquette 2% est place 4 cm du centre, lintrieur du secteur, avec
un angle de 3,6(la moiti de 7,2) cest dire sur la bissectrice de langle du
secteur. Ltiquette Agriculteurs est place, avec le mme angle 5.6 cm du
centre, cest dire lextrieur du secteur.
92 CHAPITRE 5. REPRSENTATION DE DONNES
13%
Employs
\draw[fill=black!13!blue!13]
(0,0)--(68.4:4.5)arc(68.4:115.2:4.5)--cycle;
\draw ({(68.4+ 115.2)/2}:4) node {13\%};
\draw ({(68.4+ 115.2)/2}:5.6) node {Employs};
Cette fois-ci, le secteur va de = 68, 4 = 115, 2est colori avec un
mlange de 13% de noir et de bleu. Il est donc plus sombre que le prcdent.
Pour aligner les tiquettes, langle de la bissectrice
+
2
a t calcul comme
moyenne des angles et qui dlimitent le secteur.
On a utilis pour cela les capacits de calcul de la version 2 de PGF :
Ainsi, ({(68.4+115.2)/2}:4) sera valu (91.8:4)
On remarque ici que pour eectuer le calcul, lexpression valuer doit tre
place entre accolades {(68.4+115.2)/2} pour viter les conits de syntaxe.
En rsum, sur ces deux exemples, on remarque que les trois commandes uti-
lises pour la construction de chaque secteur colori et tiquet, ont la structure
gnrale suivante :
\draw[fill=black!\p!blue!\p]
(0,0) -- (\a:4.5) arc (\a:\b:4.5) -- cycle;
\draw ({(\a+\b)/2}:4) node {\p\%};
\draw ({(\a+\b)/2}:5.6) node {\c};
\a est langle
utilis pour dnir de dbut du secteur
\b est langle
utilis pour dnir de n du secteur
\p est le pourcentage de la population reprsente
utilis pour xer lintensit la couleur
utilis pour dnir le texte ltiquette intrieure
\c est la catgorie socioprofessionnelle
utilise pour dnir le texte ltiquette extrieure
De plus, la taille du diagramme complet est contrle par les valeurs des
rayons de trois cercles :
le cercle des secteurs : de rayon R = 4, 5 (en centimtres)
5.4. DIAGRAMME SECTEURS 93
le cercle des tiquettes intrieures de pourcentage : de rayon 4
le cercle des tiquettes extrieures de catgorie : de rayon 5, 6
5.4.4 Diagramme complet : \foreach
Pour dessiner tous les secteurs du diagramme, les commandes ci-dessus
doivent tre excutes en faisant varier les valeurs de \a, \b, \p et \c
On va utiliser pour cela quatre variables \a/\b/\p/\c dans la commande
\foreach et crer la liste des valeurs que doivent prendre ces variables laide
du tableau donn au dbut.
Par exemple, les trois premires lignes du tableau :
Catgorie % angle en dbut du secteur n du secteur
Agriculteurs 2 7,2 0 7,2
Artisans 3 10,8 7,2 18
Cadres 5 18 18 36
vont fournir les valeurs respectives des variables \a/\b/\p/\c sous la forme :
{0/7.2/2/Agriculteurs, 7.2/18/3/Artisans, 18/36/5/Cadres,...
On obtiendra ainsi avec une commande \foreach unique le diagramme com-
plet avec tous les secteurs coloris et tiquets :
\begin{tikzpicture}
\foreach \a/\b/\p/\c in
{
0/7.2/2/Agriculteurs, 7.2/18/3/Artisans,
18/36/5/Cadres, 36/68.4/9/Intermdiaires,
68.4/115.2/13/Employs, 15.2/158.4/12/Ouvriers,
158.4/223.2/18/Retraits, 223.2/360/38/Inactifs
}
{
\draw[fill=black!\p!blue!\p]
(0,0) -- (\a:4.5) arc (\a:\b:4.5) -- cycle;
\draw ({(\a+\b)/2}:4) node {\p\%};
\draw ({(\a+\b)/2}:5.6) node {\c};
}
\end{tikzpicture}
On remarque ci-dessus :
la liste des donnes, entre accolades, aprs \foreach \a/\b/\p/\c in
les trois commandes de construction dun secteur qui sont insres entre
des accolades et forme donc le bloc des instructions excutes chaque
tape par la commande \foreach
Et voici le diagramme obtenu :
94 CHAPITRE 5. REPRSENTATION DE DONNES
2%
Agriculteurs
3%
Artisans
5%
Cadres
9%
Intermdiaires
13%
Employs
12%
Ouvriers
18%
Retraits
38%
Inactifs
Rpartition par catgories socioprofessionnelles en France en 1999
5.5 Rsum
On a vu ici des exemples de reprsentations graphiques de donnes.
partir de sries statistiques varies enregistres sous forme de chiers de
texte, on a dessin, des courbes, des diagrammes barres horizontales ou verti-
cales, des histogrammes et des diagrammes secteurs.
On a montr quil est souvent ncessaire deectuer un traitement des don-
nes au pralable laide dune application auxiliaire comme un tableur par
exemple, pour obtenir les cordonnes des points signicatifs du diagramme.
On a aussi constat quun diagramme se construit par essais successifs, en
construisant dabord une premire gure, puis en procdant des modications
progressives pour obtenir une gure satisfaisante.
Attention : Ne jamais utiliser de coordonnes de points en dehors de
lintervalle [500; 500] en centimtres.
Chapitre 6
Graphes : Introduction
6.1 Notions de base
On va montrer ici, laide dexemples simples, comment construire des dia-
grammes de graphes constitus de nuds relis par des arcs.
6.1.1 Nuds et Arcs : \draw, , node, et \node
Allons dabord de Paris Strasbourg, le plus simple est dcrire :
\draw (0,0)node[draw]{Paris} -- (4,-1)node[draw]{Strasbourg};
Paris
Strasbourg
Mais on peut aussi dnir dabord les villes puis les relier ensuite :
\node[draw] (P) at (0,0) {Paris};
\node[draw] (S) at (4,-1) {Strasbourg};
\draw (P) -- (S);
Paris
Strasbourg
Si lon regarde attentivement, on constate que les deux critures donnent des
rsultats lgrement dirents :
Dans le premier cas, node est une opration excute sur un chemin. On
peut considrer chaque nud comme une dcoration du point auquel il
est associ. La ligne trace par la commande \draw joint deux points, les
nuds sont des objets ajouts ensuite et centrs sur les points. Loption
draw de lopration node trace le contour du nud.
Dans le second cas, \node est une commande TikZ qui permet de dnir
un nud, de le nommer et de le dessiner. On peut alors considrer les
nuds comme des objets prexistants que lon va ensuite relier avec la
95
96 CHAPITRE 6. GRAPHES : INTRODUCTION
commande \draw. Ces nuds ne sont pas des points, il ont une certaine
dimension, la ligne trace joint les bords de ces objets.
La syntaxe de dnition dun nud avec la commande \node est :
\node[<options>] (<nom>) at (<position>) {<contenu>} ;
Par dfaut, un nud a la forme dun rectangle qui englobe son contenu
comme on le voit dans les deux cas de gure ci-dessus.
Sil ny a pas loption draw, le contour nest pas trac, mais le rectangle a des
dimensions non nulles mme si le contenu est vide comme on peut le constater
en comparant les deux exemples ci-dessous :
\draw (0,0) --(1,1) --(2,0);
\node (A) at (1,1) {};
\draw (0,0) --(A) --(2,0);
(0, 0)
(1, 1)
(2, 0) (0, 0)
(A)
(2, 0)
Dans la gure de gauche, le trait du chemin passe par les trois points de
rfrence, il ny a pas de nud.
Dans celle de droite, le nud, nomm (A), qui a t dessin est visible, bien
quil soit vide, car le trait du chemin sinterrompt la frontire du nud, alors
que celle-ci est elle-mme invisible.
6.1.2 Chemin annot : \draw avec opration node
La premire mthode (ajouter des nuds sur un chemin) a dj t utilise
prcdemment, par exemple pour annoter les gures de gomtrie.
On peut prciser la position des nuds autour des points du chemin en
ajoutant lopration node des options de position comme above ou below par
exemple.
\draw (0,0)node[above]{Paris}--(4,-1)node[below]{Strasbourg};
Paris
Strasbourg
6.1.3 Graphe : \node puis \draw avec nom de nud
La seconde mthode (relier par un chemin des nuds nomms prcdem-
ment) nous intresse davantage dans ce chapitre, car elle sera plutt utilise
pour construire des diagrammes de graphes.
Dans ce cas on modiera le style des traits laide doptions de la commande
\draw comme par exemple [<->,>=latex] pour obtenir des ches :
\draw[<->,>=latex] (P) -- (S);
Paris
Strasbourg
6.2. STYLES DES NUDS ET DES ARCS 97
6.2 Styles des nuds et des arcs
6.2.1 Les arcs : \draw, , |-, -|, to et options de ches
Nous allons maintenant tudier comment construire des graphes constitus
de nuds et darc. On prsentera les direntes options qui permettent de pr-
ciser le styles des arcs et de nuds.
Nous avons constat sur lexemple prcdent que larc entre deux nuds est
une ligne droite qui relie les centres des nuds, mais sarrte la priphrie, sur
la frontire rectangulaire du nud.
On peut remplacer la liaison -- par une liaison |- (dpart vertical, arrive
horizontale) ou -| (dpart horizontal, arrive verticale) :
Paris
Lille
Strasbourg
\draw[->,>=latex] (P) |- (L);
\draw[->,>=latex] (L) -| (S);
\draw[->,>=latex] (S) -| (P);
On peut aussi utiliser une liaison to suivie dun option de courbure.
Pour cette option de courbure, le plus simple est dindiquer vaguement ce que
lon veut, soit une courbure vers la droite avec [bend right], soit une courbure
vers la gauche avec [bend left] :
Paris
Lille
Strasbourg
\draw[->,>=latex] (P) to[bend right] (L);
\draw[->,>=latex] (L) to[bend left] (S);
\draw[->,>=latex] (S) to[bend left] (P);
Pour loption bend, la courbure est relative la direction de parcours du
chemin en ligne droite dni par deux points successifs.
Attention : Le mot courbure prte ici confusion. Pour loption bend left
par exemple, cela signie que le chemin subit une dformation courbe qui le
place sur la gauche, dans le sens du parcours du chemin en ligne droite directe.
Pour que tout soit parfaitement clair, voici quelque exemples de ches tra-
ces avec to[bend left], le chemin direct tant visualis en gris :
98 CHAPITRE 6. GRAPHES : INTRODUCTION
Limportance de la courbure de loption bend peut tre modie en prcisant
aprs un signe = un angle en degrs (0correspond la ligne droite) :
Paris
Strasbourg
0
20
45
90
\draw[->,>=latex] (P) to[bend left=0] (S);
\draw[->,>=latex] (P) to[bend left=20] (S);
\draw[->,>=latex,dashed] (P) to[bend left] (S);
\draw[->,>=latex] (P) to[bend left=45] (S);
\draw[->,>=latex] (P) to[bend left=90] (S);
Avec lopration de liaison to, on peut aussi tre encore plus prcis et utiliser
loption out= qui dnit langle polaire en degrs de sortie du nud origine et
loption in= pour langle dentre dans le nud extrmit :
Paris
Lille
Strasbourg
out=45
in=0
out=0
in=-90
out=230
in=180
\draw[->,>=latex] (P) to[out=45,in=-90] (L);
\draw[->,>=latex] (L) to[out=0,in=180] (S);
\draw[->,>=latex] (S) to[out=230,in=0] (P);
6.2.2 Extrmits des arcs : [->|, *-o, >->>, )-(
De nombreuses variations sont possibles pour dnir les extrmits des arcs.
On se reportera la documentation gnrale pour plus dinformations sur ce
sujet. Voici quelques exemples :
\draw[{[-]}] (0,0) -- (1,1); \draw[*-o] (2,0) -- (3,1);
\draw[>->>] (4,0) -- (5,1); \draw[)-(] (6,0) -- (7,1);
\draw[|<-)] (8,0) -- (9,1); \draw[{]-)}] (10,0) -- (11,1);
6.2. STYLES DES NUDS ET DES ARCS 99
On remarquera la ncessit dutiliser des accolades dans le cas o on utilise
le crochet. Ceci vite, lors de la lecture de loption, une erreur de syntaxe.
6.2.3 Dcoration des nuds : circle, ellipse, diamond
Nous avons vu loption draw de \node qui trace la frontire du nud.
La forme de cette frontire peut tre modie et dcore laide de direntes
options :
de forme : rectangle (dfaut), circle, ellipse, diamond
de style : dashed, dotted, thick, red, fill
de modication : rounded corners, minimum width ou height
Pour que certaines options de forme soient disponibles, le chargement dune
bibliothque (library) dans le prambule est ncessaire. Aprs le chargement de
\usepackage{tikz} il faut ajouter \usetikzlibrary{shapes}
Paris
Lille
Strasbourg
Bourges
Dijon
ellipse
rounded corners=3pt
minimum height=1cm,dashed
diamond,aspect=2.5
circle,fill=gray
\node[draw,rectangle,rounded corners=3pt] (P)at(0,0){Paris};
\node[draw,minimum height=1cm,dashed] (L)at(2,1) {Lille};
\node[draw,ellipse] (S)at(6,-1) {Strasbourg};
\node[draw,diamond,aspect=2.5] (B)at(0,-1.5) {Bourges};
\node[draw,circle,fill=gray!50] (D)at(4,-2) {Dijon};
Remarque : Loption diamond est accompagne de son option aspect qui
xe le rapport entre la largeur et la hauteur du nud.
6.2.4 Abstraction des styles : \tikzstyle, \tikzset
Pour les graphes un peu complexes dans lesquels gurent des nuds et des
arcs de styles varis, il est parfois utile de nommer les styles. Plutt que de
procder aux copier-coller des options, on dnira des styles laide de la com-
mande \tikzstyle (pour PGF version 1) ou de la commande \tikzset (pour
PGF version 2).
On dnit par exemple un style pour ville et le style de Paris capitale :
\tikzstyle{ville}=[draw,rectangle,rounded corners=3pt]
\tikzstyle{capitale}=[draw,ellipse,very thick,fill=black!25]
Ou avec la commande \tikzset de PGF version 2 :
100 CHAPITRE 6. GRAPHES : INTRODUCTION
\tikzset{ville/.style={draw,rectangle,rounded corners=3pt}}
\tikzset{capitale/.style={draw,ellipse,very thick,fill=black!25}}
Il sura alors dcrire dans le code :
\node[capitale] (P)at(0,0){Paris};
\node[ville] (L)at(2,1){Lille}; . . .
On dnit de mme des styles radial et transversal pour les arcs :
\tikzset{radial/.style={very thick,->,>=stealth}}
\tikzset{transversal/.style={<->,>=stealth,thick,dashed}}
On peut alors eectuer les liaisons :
\draw[radial] (P)--(L);
\draw[transversal] (D)--(B); . . .
Paris
Lille
Strasbourg
Bourges
Dijon
[capitale]
[ville]
[radial]
[
t
r
a
n
s
v
e
r
s
a
l
]
Remarque : Un des avantages principaux de la dnitions de style est de
rendre le code beaucoup plus lisible.
Mais il y a plus important encore, les commandes \tikzstyle ou \tikzset
peuvent tre dnies lextrieur de lenvironnement {tikzpicture}. Dans ce
cas, toutes les gures qui suivent pourront utiliser les styles dnis. Ceci per-
met ainsi duniformiser le style de plusieurs gures distinctes. Par contre, si les
commandes \tikzstyle ou \tikzset sont dnies lintrieur dun lenviron-
nement {tikzpicture}, la porte est limite cet environnement.
Attention : La commande \tikzstyle de TikZ & PGF version 1 est
toujours valable dans la version 2, mais, on lui prfrera la nouvelle commande
\tikzset qui permet de dnir des styles, mais qui ore aussi des possibilits
supplmentaires que lon utilise par ailleurs.
Les dnitions de styles prcdentes peuvent ainsi tre dnies globalement
dans une unique commande \tikzset.
\tikzset{ville/.style={draw,rectangle,rounded corners=3pt},
capitale/.style={draw,ellipse,very thick,fill=black!25},
radial/.style={very thick,->,>=stealth},
transversal/.style={<->,>=stealth,thick,dashed}}
Les styles ainsi dnis pourront tre ensuite utiliss dans tous les environ-
nements {tikzpicture} qui suivent.
6.2. STYLES DES NUDS ET DES ARCS 101
6.2.5 Ancrage et position des nuds : P.south, left, below
On a vu en gomtrie comment placer un nud autour dun point. On montre
ici comment atteindre certains points dancrage dun nud :
\node[draw] (P)at(2,2){\Large Paris};
\draw[->,>=latex] (0,0) -- (P.north);
\draw[->,>=latex] (0,0) -- (P.south);
\draw[->,>=latex] (0,0) -- (P.west);
\draw[->,>=latex] (0,0) -- (P.east);
Paris
Pour visualiser les dirents points dancrage dun nud, nous allons dabord
crer un nud de grande taille en utilisant les options de dcorations vue dans
le paragraphe prcdent pour dnir son style :
node N
\tikzstyle{noeud}=[minimum width=5cm,minimum height=3cm,
rectangle,rounded corners=10pt,draw,
fill=yellow!75,text=red,font=\bfseries]
\node[noeud] (N) at (0,0) {\Large node \ N };
Une fois le nud N plac, on dessine sur la gure les principaux points
dancrage, avec leurs noms :
node N

(N.center)

(N.north)

(N.south)
(N.west) (N.east)
\draw (N.north) node{$\times$} node[above]{(N.north)};
\draw (N.south) node{$\times$} node[below]{(N.south)};
\draw (N.west) node{$\times$} node[left]{(N.west)};
\draw (N.east) node{$\times$} node[right]{(N.east)};
\draw[blue] (N.center) node{$\times$} node[above=3pt]{(N.center)};
En ralit, il y a de trs nombreux points dancrage, ce qui permet, comme
toujours avec TikZ dtre extrmement prcis dans la disposition des objets.
Voici quelques autres des principaux points dancrage :
102 CHAPITRE 6. GRAPHES : INTRODUCTION
node N
+
(N.north west)
+
(N.north east)
+
(N.south west)
+
(N.south east)
+
(N.base)
+
(N.text)
(N.40)
(N.15)
Les noms de tous ces points sont assez comprhensibles. On remarquera en
particulier les points (N.15) et (N.40) qui font rfrence aux points dintersec-
tion de la frontire du nud avec la droite passant par le centre et qui fait un
angle de 15(respectivement 40) avec lhorizontale.
6.2.6 Flches vers les ancres : N.north, P.center, N.15
Le nom (N) fait rfrence au centre du nud comme (N.center), mais
nest pas identique cependant. Une che qui pointe vers (N) a son extrmit
sur la frontire du nud, tandis quune che qui pointe vers (N.center) a
son extrmit sur le centre du nud comme on peut le constater sur la gure
suivante qui rsume les dirents cas :
\draw[->] (etiquetteN) -- (N);
\draw[->] (etiquetteNcenter) -- (N.center);
...
node N
(N)
(N.center)
(N.north)
(N.south)
(N.west) (N.east)
(N.north west) (N.north east)
(N.south west) (N.south east)
(N.base)
(N.text)
(N.15)
(N.40)
6.3. TECHNIQUES AVANCES 103
6.3 Techniques avances
6.3.1 Chemins en toile : edge, bend, in, out
En plus des oprations de chemin , |-, -| et to qui dnissent la forme
des traits de liaison, on dispose aussi de edge (avec les mmes options que pour
lopration to) qui dessine une ligne jusquau point suivant, mais laisse le crayon
lorigine pour les liaisons suivantes en toile :
\draw[->,>=latex] (P) edge[bend left] (L)
edge[out=0,in=90] (S)
edge (D)
edge[bend right] (B);
Paris
Lille
Strasbourg
Bourges
Dijon
[bend left]
[bend right]
[out=0,in=90]
6.3.2 tiquetage des arcs : sloped, midway, pos
Aprs spcication dans une commande \draw dun chemin (A)--(B), lop-
ration node qui suit place, par dfaut, un nud au point (B). Si on ajoute
lopration node loption midway le nud sera plac mi-chemin du point (A)
et du point (B).
En plus de loption midway, il existe aussi les options very near start,
near start, near end, very near end pour les placements approximatifs et
loption pos= qui permet une plus grande prcision.
Le nombre qui suit pos= est le pourcentage du chemin parcourir pour
placer le nud : 0 en (A), 1 en (B), 0.5 au milieu de (A)--(B).
\draw (0,0) node{A} -- (4,2) node{B}
node[midway]{M} node[near end]{N};
\draw (5,0) node{A} to[bend right] (9,2) node{B}
node[very near start]{R} node[pos=0.7]{S};
\draw (9,0) node{A} to[bend left](13,2) node{B}
node[pos=0.5]{M} node[pos=0.25]{Q};
A
B
M
N
midway
near end
A
B
R
S
very near start
pos=0.7
A
B
M
Q
pos=0.5
pos=0.25
Les tiquettes sont crites horizontalement par dfaut, mais comme on le
voit sur les exemples ci-dessous, ajouter loption sloped permet dincliner les
tiquettes selon la pente du chemin : node[sloped,midway]{M}
104 CHAPITRE 6. GRAPHES : INTRODUCTION
A
B
M
N
m
i
d
w
a
y
n
e
a
r
e
n
d
A
B
R
S
very
near
start
p
o
s
=
0
.
7
A
B
M
Q
p
o
s
=
0
.
5
p
o
s
=
0
.
2
5
avec sloped
6.3.3 Inclinaison des tiquettes : sloped, rotate
Il est aussi possible de modier linclinaison par dfaut du texte de ltiquette
dans lopration node avec loption rotate= suivie dun angle en degrs :
Texte
node[draw]{Texte}
T
e
x
t
e
node[draw,rotate=45]{Texte}
rotate=45
La rotation du texte se fait partir de la position normale du texte, cest
dire par rapport lhorizontale.
La rotation peut aussi tre applique sur des nuds placs une position
intermdiaire dun chemin entre deux points conscutifs :
N
R
pos=0.25
pos=0.75
rotate=45
N
R
sloped,pos=0.25
sloped,pos=0.75
rotate=45
Si loption sloped est prsente sur lopration node, la rotation du texte se
fait partir de la tangente au chemin la position de ltiquette.
6.3.4 Modication de la taille des annotations : scale
On peut enn modier la taille des tiquettes de lopration node avec lop-
tion scale= suivie dun coecient multiplicatif :
P
N
G
scale=0.75
scale=1.5
P
N
G
sloped,scale=0.75
sloped,scale=1.5
6.3.5 Insrer une sous-gure : scope, shift, rotate, scale
Voici deux gures dessines sparment :
6.3. TECHNIQUES AVANCES 105
Figure 1 :
I
J
O
Figure 2 :
O
B
C
Si on copie simplement le code de chaque gure dans un mme environnement
tikzpicture, les gures seront probablement superposes si leurs points sont
voisins.
I
J
OO
B
C
Heureusement, il existe un environnement scope qui peut tre vu comme un
sous-environnement tikzpicture auquel on peut aecter des options de dca-
lages comme loption xshift (suivi dun dcalage horizontal), loption yshift
(suivi dun dcalage vertical) ou loption shift (suivi des coordonnes dun
vecteur de translation).
Par exemple : [xshift=2] [yshift=25mm] ou [shift={(5,2)}]
On remarque, dans ce dernier cas, les accolades autour des coordonnes du
vecteur de translation. Ces accolades sont ncessaires ici, pour que la virgule ne
soit pas considre comme un sparateur doptions.
Prenons le code de chacune de nos deux gures et insrons les codes respectifs
dans un environnement scope que nous plaons ensuite dans un environnement
tikzpicture. Pour dcaler la seconde gure, on ajoute son environnement
scope loption [shift={(5,-1)}] :
\begin{tikzpicture}
\begin{scope}
% ... Figure 1
\end{scope}
\begin{scope}[shift={(5,-1)}]
% ... Figure 2
\end{scope}
\end{tikzpicture}
I
J
O
O
B
C
s
h
i
f
t
=
{
(
5
,
-
1
)
}
106 CHAPITRE 6. GRAPHES : INTRODUCTION
Ajoutons loption [rotate=60] au scope qui contient le code de la premire
gure, une rotation de 60est donc applique cette gure :
I
J
O
O
B
C
s
h
i
f
t
=
{
(
5
,
-
1
)
}
rotate=60
Remarque : la rotation ne concerne que le dessin du chemin, on constate que
les textes ont conserv leur alignement original.
Cest un peu surprenant, mais raisonnable : Si vous avez ralis une gure
complexe avec de nombreuses annotations textuelles, vous pouvez ainsi la faire
tourner facilement, les annotations restent lisibles car elles conservent la mme
orientation. Il cependant parfois utile de modier lancrage de certains nuds.
Loption [shift={(5,-1)},rotate=-45,scale=1.5] a maintenant t af-
fecte au scope contenant le code de la seconde gure, celle-ci a donc subi une
translation, une rotation et sa taille a t augmente de 50%.
I
J
O
O
B
C
s
h
i
f
t
=
{
(
5
,
-
1
)
}
rotate=60 scale=1.5
rotate=-45
Remarque : Attention, leet des options rotate ou scale quand elles sont
appliques un des environnements scope ou tikzpicture nest pas le mme
que si elles sont appliques lopration node :
rotate ou scale pour les environnements scope ou tikzpicture :
ce sont les lignes du dessin qui constitue la gure qui subissent les trans-
formations. La gure tourne, sa taille est modie, mais les annotations
textuelles eectues laide de nuds gardent leurs tailles et leurs orien-
tations.
rotate ou scale pour lopration node :
ce sont les textes contenus dans le nud qui subissent les transformations.
Une fois ces transformations eectues, il ny a plus de changement des
textes, ni en taille, ni en orientation lors dune modications des options
de scope ou tikzpicture. Il y a cependant dplacement des textes qui
restent lis leurs points dancrage qui ont boug.
6.3. TECHNIQUES AVANCES 107
6.3.6 Textes longs : text width, justified, centered
Le contenu dun nud est en gnral assez court et plac sur une seule
ligne. Il est toutefois possible de mettre dans un nud des textes plus longs sur
plusieurs lignes comme par exemple dans la lgende dune gure.
Loption text width permet de limiter la largeur du contenu textuel du
nud et de provoquer ainsi son achage sur plusieurs lignes :
Voici un commen-
taire bavard qui
ne tiendra pas sur
3 cm
Voici un commen-
taire bavard qui
ne tiendra pas sur
3 cm
t
e
x
t
j
u
s
t
i
f
i
e
d
Voici un com-
mentaire bavard
qui ne tiendra
pas sur 3 cm
t
e
x
t
c
e
n
t
e
r
e
d
\node[draw,text width=3cm] at(0,0){Voici...cm};
\node[draw,text width=3cm,text justified] at(4,0){Voici...cm};
\node[draw,text width=3cm,text centered] at(8,0){Voici...cm};
Les options text justified ou text centered permettent de prciser le
type dalignement du texte
En gnral, la largeur dun nud est assez limite. Dans ce cas, les csures
provoques par L
A
T
E
X lors de la mise en page seront parfois gnantes.
Les options text badly ragged ou text badly centered permettent din-
terdire les csures dans le texte du nud :
Voici un
commentaire
bavard qui ne
tiendra pas sur
3 cm
t
e
x
t
b
a
d
l
y
r
a
g
g
e
d
Voici un
commentaire
bavard qui ne
tiendra pas sur
3 cm
t
e
x
t
b
a
d
l
y
c
e
n
t
e
r
e
d
Il est aussi possible dutiliser simultanment les options minimum width,
minimum height et text width dans un mme nud. Ainsi on contrle la taille
du rectangle du nud :
Voici un com-
mentaire bavard
qui ne tiendra
pas sur 3 cm
minimum width=6cm
text width=3cm
m
i
n
i
m
u
m
h
e
i
g
h
t
=
4
c
m
\node[draw,text width=3cm,text centered,
minimum width=6cm,
minimum height=4cm] at (0,0) {Voici...cm}
108 CHAPITRE 6. GRAPHES : INTRODUCTION
6.3.7 Contournement dun nud
Si on construit un graphe complexe, il peut parfois arriver que certains nuds
gnent le passage dun arc, comme ci-dessous, ou les options les plus simples ne
permettent pas daller de A B sans rencontrer les autres nuds.
On veut relier A B par une che qui contourne les obstacles :
A
Q
R
P B
On va dabord dnir un nud auxiliaire (n) invisible lgrement droite
et en dessous (2 mm) du coin sud-est du nud (P) :
\coordinate[shift={(2mm,-2mm)}] (n) at (P.south east);
Pour cela, on a utilis loption [shift={(2mm,-2mm)}] applique lancre
(P.south east) du nud (P).
On trace ensuite :
\draw[->,thick,>=latex,rounded corners=5pt] (A) |- (n) |- (B);
A
Q
R
P B
|-
|-
.
(n)
out=0
in=220
Une petite marque discrte t ajoute sur la gure pour montrer la
position du point auxiliaire (n) invisible ct du point (P).
On remarque aussi quil tait aussi possible dviter les obstacles avec une
che courbe qui passe entre Q et R, condition dajuster les angles de sortie
et dentre dans les nuds laide des options out= et in= de lopration to.
6.4 Exercices
Dans chaque exercice, on demande de raliser la gure spcie. Toutes ces
gures peuvent tre construites uniquement en TikZ avec des nuds et des arcs,
en dnissant videment des styles laide des direntes options.
La principale dicult, dans ces exercices, est de raliser la gure la plus
proche possible du modle en respectant les positions et les angles.
6.4. EXERCICES 109
6.4.1 Voyelle ou Consonne
A
B
C
D
E
Voyelle Consonne
Aide
On place les lettres 1 cm les unes des autres et Voyelle et Consonne
3 cm de chaque ct. On dnit trois style :
\tikzstyle{lettre}=[circle,draw,fill=yellow!50,text=blue]
\tikzstyle{type}=[circle,fill=red!25]
\tikzstyle{fleche}=[->,>= stealth,thick]
Il ny a plus qu lier les dirents nuds.
6.4.2 Les points cardinaux
Nord Sud
Est
Ouest
Aide
On dni le style des points cardinaux :
\tikzstyle{point}=[circle,fill=blue!25,minimum width=5em]
Le mot le plus long est Ouest, ont xe donc minimum width=5em une
largeur dau moins 5 fois la largeur de la lette m pour que tous les cercles
soient de mme taille. On dnit le style des ches :
\tikzstyle{fleche}=[<->,>=latex,line width=2mm]
On trace :
110 CHAPITRE 6. GRAPHES : INTRODUCTION
\node[point] (N) at (2,0){Nord};
\node[point] (S) at (-2,0){Sud};
\draw[fleche] (N)--(S);
...
6.4.3 Orientations
Horizontal
M
o
n
t

4
5

S u r l e D o s
D
e
s
c
e
n
t
e

6
0

V
e
r
t
i
c
a
l
Aide
On dnit les nuds H : (0,0) , M : (2,0), S : (6,0), D : (6,0) et V : (9,0) avec
loption draw,rotate= et les angles 45, 180, 60, 90, et le style pour les ches :
\tikzstyle{fleche}=[<->,>=stealth,very thick]
Les liens sont assez dlicats tablir en raison des rotations des nuds. La
gure a t obtenu avec les options suivantes :
\draw[fleche] (H.south) to[bend right=90] (S.north);
\draw[fleche] (M.east) to[bend left] (D.west);
\draw[fleche] (D.east) to[out=-60,in=-90] (V.west);
Par exemple sur la premire ligne on relie (H.south) (S.north) qui est
au dessous du nud (S) car le nud (S) est sur le dos [rotate=180], et son
nord est en bas !
6.4.4 Pentagone
Solution
Pentagone de rayon 2 centr sur lorigine :
\tikzstyle{sommet}=[circle,draw,thick,fill=yellow]
\draw (90:2) node[sommet]{}
-- (162:2) node[sommet]{}
6.4. EXERCICES 111
-- (234:2) node[sommet]{}
-- (306:2) node[sommet]{}
-- (378:2) node[sommet]{}
-- cycle;
Le premier sommet trac est celui du haut.
6.4.5 Benzne
Le benzne est un hydrocarbure aromatique monocyclique, de formule C
6
H
6
C
H C
H
C
H
C
H C
H
C
H
Solution
Les C et les H sont placs et nomms laide dune commande \foreach
Lorigine est au centre de la molcule, et les atomes sont placs en coordon-
nes polaires, langle tant dni par la variable \a.
Les C sont nomms a, b, c, d et e (noms pris successivement par la variable
\n) et les H associs sont nomms respectivement aa, bb, cc, dd et ee (noms
engendrs successivement par \n\n).
% les C et les H
\foreach \n/\a in {a/30,b/90,c/150,d/210,e/270,f/330}
{\node (\n) at (\a:1) {C};
\node (\n\n) at (\a:2) {H};}
% les liaisons C - H
\foreach \n in {a,b,c,d,e,f} \draw [thick] (\n)--(\n\n);
On remarque la possibilit, avec la commande \foreach, de construire des
noms de nuds par concatnation de variables et de les rutiliser plus tard.
Il sut ensuite de dessiner les liaisons, simples ou doubles.
%les liaisons simple entre C
\draw [thick](a)--(b);s
\draw [thick] (c)--(d);
\draw [thick] (e)--(f);
%les liaisons doubles entre C
\draw [double,thick] (b)--(c);
\draw [double,thick] (d)--(e);
\draw [double,thick] (f)--(a);
112 CHAPITRE 6. GRAPHES : INTRODUCTION
6.4.6 Arbre gnalogique
Bibi
Papa Maman
Pp Mm Papy Mamie
Aide
On dnit le style des liens :
\tikzstyle{lien}=[->,>=stealth,rounded corners=5pt,thick]
On peut ensuite dnir avec la commande \tikzstyle trois styles distincts
pour Bibi les hommes et les femmes, mais si lon dispose de la version 2.00 de
TikZ & PGF on pourra utiliser la commande \tikzset pour crer un style
paramtrable :
\tikzset{individu/.style={draw,thick,fill=#1!25},
individu/.default={green}}
Ici loption individu donne un fond fill=green !25 par dfaut, mais elle
peut accepter un nom de couleur qui remplacera le #1 dans la dnition. Ainsi
individu=red donne un fond fill=red !25.
On peut alors placer les nuds, puis les liens :
\node[individu] (B) at (0,0) {Bibi};
\node[individu=blue] (P) at (-3,2) {Papa};
\node[individu=red] (M) at (3,2) {Maman};
...
\draw[lien] (B) |- (-1,1) -| (P);
\draw[lien] (B) |- (1,1) -| (M);
...
On remarque lutilisation de points auxiliaires pour permettre un trac des
ches des liens en zigzag.
6.5 Rsum
On construit des graphes en dnissant et en nommant des nuds, qui sont
des botes de texte, avec la commande \node, puis on les relie par des arcs avec
la commande \draw.
On peut modier le style, la taille et lorientation des textes des nuds avec
les options rotate scale.
Les arcs sont tracs laide de la commande \draw, et de ses direntes
oprations comme |-, -| ou to qui permettent de modier la forme des arcs.
6.5. RSUM 113
Les options comme thick, dashed, ->, *-o ou [-( permettent de prciser les
styles de traits ou de ches.
On peut aussi ajouter des annotations sur les arcs avec lopration node et
une des options midway, pos= ou sloped.
Pour la construction de gures complexes, lenvironnement scope permet de
dcomposer le diagramme en sous-gures cres dabord indpendamment, puis
assembles ensuite avec des transformations ventuelles en utilisant des options
comme shift, rotate ou scale.
Chapitre 7
Graphes : Exemples
On a prsent dans le chapitre prcdent les outils de base pour dessiner
des graphes. On va maintenant raliser des graphes complexes pour montrer
comment mettre en uvre ces dirents outils.
7.1 Graphe dune relation
7.1.1 Relations entre quadrilatres
On connat direntes relations entre quadrilatres, comme : un carr est un
rectangle, un carr est un losange.
On veut tracer un graphe exprimant ces direntes relations entre les types
de quadrilatres suivants : paralllogramme, rectangle, carr, losange.
Chaque type de quadrilatre sera reprsent par un nud et chaque relation
sera reprsente par une che.
Par exemple Carr est un Rectangle : Rectangle Carr
signie
que lensemble des carrs est strictement inclus dans lensemble des rectangles.
7.1.2 Des nuds et des ches : node et ->
La gure tant assez complexe, on va la construire pas pas en indiquant
chaque tape, uniquement ce qui dire de ltape prcdente.
On place dabord un nud (node) pour chaque type de quadrilatre et on
le nomme laide de son initiale :
\begin{tikzpicture}
\node (Q) at (0,3) {Quadrilatre};
\node (P) at (0,1.5) {Paralllogramme};
\node (R) at (-3,0) {Rectangle};
\node (L) at (3,0) {Losange};
\node (C) at (0,-1.5) {Carr};
\end{tikzpicture}
114
7.1. GRAPHE DUNE RELATION 115
3 0 3
1.5
0
1.5
3 Quadrilatre
Paralllogramme
Rectangle Losange
Carr
Le placement des nuds t fait, au crayon sur un papier, puis simul en
centrant chaque nud sur des points de coordonnes raisonnables.
Pour rendre la gure plus lisible, on va dnir un style de nud en crivant
chaque nom en bleu sur fond jaune clair dans un rectangle encadr de noir.
On dnit un style quadri ajouter comme option sur chaque nud :
\tikzstyle{quadri}=[rectangle,draw,fill=yellow!50,text=blue]
\node[quadri] (Q) at (0,3) {Quadrilatre}; . . . etc.
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
On ajoute maintenant les relations est un reliant les nuds par des ches.
On dni estun, le style de ces ches, pour les tracer en pointilles trs paisses,
avec une pointe de type latex.
On ajoute ainsi le code suivant notre gure :
\tikzstyle{estun}=[->,dotted,very thick,>=latex]
\draw[estun] (P)--(Q);
\draw[estun] (R)--(Q); \draw[estun] (R)--(P);
\draw[estun] (L)--(Q); \draw[estun] (L)--(P);
\draw[estun] (C)--(Q); \draw[estun] (C)--(P);
\draw[estun] (C)--(L); \draw[estun] (C)--(R);
116 CHAPITRE 7. GRAPHES : EXEMPLES
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
Le rsultat manque de lisibilit, car certaines ches traversent les nuds et
dautres se superposent.
vitons dabord les superposition en remplaant les droite par des courbes.
Pour cela le lien est remplac par un lien to avec une option [bend left]
(courb gauche) ou [bend right] ( droite).
Modions dabord Rectangle-Quadrilatre et Losange-Quadrilatre :
\draw[estun] (R) to[bend left] (Q);
\draw[estun] (L) to[bend right] (Q);
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
Le nud Carr est mal plac. Pour sparer les ches superposes et rendre
les relations entre quadrilatres visibles, on dplace le nud Carr droite
du nud Losange et on courbe ensuite la ches Carr-Quadrilatre et la
che Carr-Paralllogramme :
\node[quadri] (L) at (4,1.5) {Losange};
\node[quadri] (C) at (7,0) {Carr};
\draw[estun] (C) to[bend right] (Q);
\draw[estun] (C) to[bend left] (P);
7.1. GRAPHE DUNE RELATION 117
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
Il est encore possible damliorer la gure.
7.1.3 Graphe nal : courbure bend, ancrage P.east
On va redresser la che Losange-Quadrilatre et la faire arriver au coin
sud-est du nud Quadrilatre : \draw (L)--(Q.south east);
On procde ensuite dautres petites modications de position des extrmi-
ts des ches Carr-Losange et Carr-Paralllogramme.
Pour terminer, on place sur le ct gauche de la gure, une lgende qui
prcise la smantique de la che :
\draw[estun] (-4.5,2.5) -- (-3,2.5) node[midway,above]{est un};
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
est un
\begin{tikzpicture}
% dfinition des styles
\tikzstyle{quadri}=[rectangle,draw,fill=yellow!50,text=blue]
\tikzstyle{estun}=[->,>=latex,very thick,dotted]
% les nuds
\node[quadri] (Q) at (0,3) {Quadrilatre};
\node[quadri] (P) at (0,1.5) {Paralllogramme};
\node[quadri] (R) at (-3,0) {Rectangle};
\node[quadri] (L) at (3,0) {Losange};
118 CHAPITRE 7. GRAPHES : EXEMPLES
\node[quadri] (C) at (5,-1.5) {Carr};
% les flches
\draw[estun] (P)--(Q);
\draw[estun] (R)to[bend left](Q); \draw[estun] (R)--(P);
\draw[estun] (L)--(Q.south east); \draw[estun] (L)--(P);
\draw[estun] (C)to[bend right](Q.east); \draw[estun] (C)to[bend left](P);
\draw[estun] (C)--(L.south east); \draw[estun] (C)to[bend left](R);
% la lgende
\draw[estun] (-4.5,2.5)--(-3,2.5)node[midway,above]{est un};
\end{tikzpicture}
Lexemple prcdent avait pour but de montrer comment contrler nement
la position des nuds et des arcs. Il est dusage en gnral de ne pas reprsenter
les ches que lon peut dduire par transitivit comme ci-dessous :
Quadrilatre
Paralllogramme
Rectangle Losange
Carr
7.2 Organigramme informatique
7.2.1 Somme des N premiers nombres entiers
Dessiner un organigramme du programme qui calcule la somme des N pre-
miers nombres entiers avec lalgorithme suivant :
DBUT
Lire un entier positif N
S 0
TANT QUE N > 0 FAIRE

S S +N
N N 1
Acher la somme S
FIN
7.2.2 Style des nud : draw, ellipse, fill, text
Comme dans lexemple prcdent, on va reprsenter un graphe compos de
nuds relis par des ches. Mais dans ce cas il y a plusieurs types de nuds
que lon dsire direncier graphiquement.
On va dnir des styles pour chaque type de nud du diagramme :
7.2. ORGANIGRAMME INFORMATIQUE 119
debfin pour les repres de Dbut et de Fin : ellipse
es pour les Entres-Sorties : rounded corners
instruct pour les instruction : rectangle
test pour le test : diamond
\begin{tikzpicture}
\tikzstyle{debutfin}=[ellipse,draw,text=red]
\tikzstyle{instruct}=[rectangle,draw,fill=yellow!50]
\tikzstyle{test}=[diamond, aspect=2.5,thick,
draw=blue,fill=yellow!50,text=blue]
\tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25]
\end{tikzpicture}
On va ensuite placer les lments en leur attribuant un nom signicatif :
\node[debutfin] (debut) at (-2,5) {Dbut};
\node[es] (lire) at (-2,4) {Lire un entier positif $N$};
\node[test] (test) at (0,0) {$N>0$ \ ?};
\node[instruct] (init) at (-2,2.5) {$S\leftarrow 0$};
\node[instruct] (plus) at (0,-2.5) {$S\leftarrow S+N$};
\node[instruct] (moins) at (0,-3.5) {$N\leftarrow N-1$};
\node[es] (afficher) at (-4,-2) {Afficher la somme $S$};
\node[debutfin] (fin) at (-4,-3) {Fin};
Dbut
Lire un entier positif N
N > 0 ?
S 0
S S +N
N N 1
Acher la somme S
Fin
4 2 0
5
4
0
2, 5
2, 5
2
3
3, 5
120 CHAPITRE 7. GRAPHES : EXEMPLES
7.2.3 Forme des ches : >=, rounded corners, |-
Il sut de reprsenter la squence ordonne des instructions par des ches
dont le style suite est dabord dni :
\tikzstyle{suite}=[->,>=stealth,thick,rounded corners=4pt]
\draw[suite] (debut) -- (lire);
\draw[suite] (lire) -- (init);
\draw[suite] (init) -- (test.north);
\draw[suite] (test) -- (plus);
\draw[suite] (plus) -- (moins);
\draw[suite] (test) -| (afficher);
\draw[suite] (afficher) -- (fin);
On remarquera en particulier : \draw[suite] (init)--(test.north); le
branchement au sommet du losange de test.
Et aussi ; \draw[suite] (test)-|(afficher); le branchement avec vi-
rage angle droit en sortie du test.
Dbut
Lire un entier positif N
N > 0 ?
S 0
S S +N
N N 1
Acher la somme S
Fin
7.2. ORGANIGRAMME INFORMATIQUE 121
Il manque la che qui boucle entre
linstruction N N 1 et le sommet
du losange de test.
Comme elle doit contourner la -
gure par la droite, on va introduire
deux points auxiliaires rendus visibles
ci-contre par .
On ajoute donc la commande :
\draw[suite] (moins) |- (3,-4.5)
|- (1,1.5) -- (test.north);
N > 0 ?
S S +N
N N 1

(3, 4.5)

(1, 1.5)
Il ne reste plus qu tiqueter les sorties du losange de test :
\draw[suite] (test) -- (plus)
node[midway,fill=white] {oui};
\draw[suite] (test) -| (afficher)
node[near start,fill=white] {non};
7.2.4 Organigramme nal
Dbut
Lire un entier positif N
N > 0 ?
S 0
S S +N
N N 1
Acher la somme S
Fin
oui
non
Code complet de la gure :
122 CHAPITRE 7. GRAPHES : EXEMPLES
\begin{tikzpicture}
% style des nuds
\tikzstyle{debutfin}=[ellipse,draw,text=red]
\tikzstyle{instruct}=[rectangle,draw,fill=yellow!50]
\tikzstyle{test}=[diamond, aspect=2.5,thick,
draw=blue,fill=yellow!50,text=blue]
\tikzstyle{es}=[rectangle,draw,rounded corners=4pt,fill=blue!25]
% style des flches
\tikzstyle{suite}=[->,>=stealth,thick,rounded corners=4pt]
% placement des nuds
\node[debutfin] (debut) at (-2,5) {Dbut};
\node[es] (lire) at (-2,4) {Lire un entier positif $N$};
\node[test] (test) at (0,0) {$N>0$ \ ?};
\node[instruct] (init) at (-2,2.5) {$S\leftarrow 0$};
\node[instruct] (plus) at (0,-2.5) {$S\leftarrow S+N$};
\node[instruct] (moins) at (0,-3.5) {$N\leftarrow N-1$};
\node[es] (afficher) at (-4,-2) {Afficher la somme $S$};
\node[debutfin] (fin) at (-4,-3) {Fin};
% Placement des flches
\draw[suite] (debut) -- (lire);
\draw[suite] (lire) -- (init);
\draw[suite] (init) -- (test.north);
\draw[suite] (test) -- (plus) node[midway,fill=white]{oui};
\draw[suite] (plus) -- (moins);
\draw[suite] (moins)|-(3,-4.5) |- (1,1.5)--(test.north);
\draw[suite] (test)-|(afficher)node[near start,fill=white]{non};
\draw[suite] (afficher) -- (fin);
\end{tikzpicture}
7.3 Diagrammes syntaxiques
7.3.1 Grammaire des expressions mathmatiques
Dessiner les diagramme de dnition de la grammaire (simplie) des ex-
pressions mathmatiques :
Une Expression est une somme de Termes spars par +
Un Terme est une produit de Facteurs spars par
Un Facteur est : soit une Variable, soit une Expression entre ( et )
Une Variable est : soit X, soit Y , soit Z
Pour le spcialiste, voici cette grammaire note en BNF :
Expression ::= Terme {"+" Terme}
*
Terme ::= Facteur {"" Facteur}
*
Facteur ::= Variable | "(" , Expression , ")"
Variable ::= "X" | "Y " | "Z"
Remarque : pour simplier on se limite trois variables et on ne prvoit
aucune valeur numrique. Voici quelques exemples :
X ; X Y ; X +Y ; X + (Y Z) ; (X +Y ) (Z +X)
7.3. DIAGRAMMES SYNTAXIQUES 123
7.3.2 Alignement des nuds, tiquetage
On connat bien maintenant les mthodes de construction de graphes que
nous allons appliquer ce problme.
On dni dirents style :
element pour les lments syntaxiques (Terme Facteur . . .).
terminal pour les lment terminaux de la grammaire (+ . . .).
fleche pour les arcs de liaison.
\tikzstyle{element}=[rectangle,draw,fill=white]
\tikzstyle{terminal}=[circle,draw]
\tikzstyle{fleche}=[->,>=stealth,thick,rounded corners=4pt]
On place ensuite les nuds en les alignant correctement, puis les arcs orients
pour lier les dirents nuds.
\begin{tikzpicture}
\node[above right] at (-1,0) {Expression};
\node[element] (T) at (4,0) {Terme};
\node[terminal] (p) at (4,-1) {$+$};
\draw[fleche] (0,0) -- (T); \draw[fleche] (T) -- (8,0);
\draw[fleche] (6,0) |- (p); \draw[fleche] (p) -| (2,0);
\end{tikzpicture}
Expression
Terme
+
De mme, on va construire les diagrammes syntaxiques successifs :
Terme
Facteur

\node[above right] at (-1,0) {Terme};


\node[element] (F) at (4,0) {Facteur};
\node[terminal] (m) at (4,-1) {$\times$};
\draw[fleche] (0,0) -- (F); \draw[fleche] (F) -- (8,0);
\draw[fleche] (6,0) |- (m); \draw[fleche] (m) -| (2,0);
Facteur
Variable
( Expression )
\node[above right] at (-1,0) {Facteur};
\node[element] (V) at (4,0) {Variable};
\node[terminal] (po) at (2,-1) {$($};
124 CHAPITRE 7. GRAPHES : EXEMPLES
\node[element] (E) at (4,-1) {Expression};
\node[terminal] (pf) at (6,-1) {$)$};
\draw[fleche] (0,0) -- (V); \draw[fleche] (V) -- (8,0);
\draw[fleche] (1,0) |- (po); \draw[fleche] (po)--(E);
\draw[fleche] (E) -- (pf); \draw[fleche] (pf) -| (7,0);
Variable
X
Y
Z
\node[above right] at (-1,0) {Variable};
\node[terminal] (x) at (4,0) {$X$};
\node[terminal] (y) at (4,-1) {$Y$};
\node[terminal] (z) at (4,-2) {$Z$};
\draw[fleche] (0,0) -- (x); \draw[fleche] (x) -- (8,0);
\draw[fleche] (2,0) |- (y); \draw[fleche] (y) -| (6,0);
\draw[fleche] (1,0) |- (z); \draw[fleche] (z) -| (7,0);
7.3.3 Regroupement de gures : scope et yshift
Les quatre gures on t construites dans des environnements tikzpicture
spars. On aimerait maintenant les regrouper en une seule gure.
On peut pourrait recopier simplement leurs codes dans un seul environne-
ment tikzpicture :
\begin{tikzpicture}
\node[above right] at (-1,0) {Expression}; ...
\node[above right] at (-1,0) {Expression}; ...
\node[above right] at (-1,0) {Terme}; ...
\node[above right] at (-1,0) {Variable}; ...
\end{tikzpicture}
Malheureusement, dans ce cas, toutes les gures seraient superposes puisque
les coordonnes ont t positionnes lorigine.
On pourrait alors penser modier les coordonnes de tous les nuds. Cest
possible, mais ce serait long.
On va utiliser une instruction qui permet de dcaler chaque gure vers le
bas de 2.5 cm par rapport la prcdente. On ne peut pas en fait sexprimer
directement de cette faon. Il faut dire : dcaler la deuxime gure de 2.5 cm,
la troisime de 5 cm; etc.
Le dcalage vertical sobtient avec loption yshift, et pour prciser quelle
partie du code sapplique cette option, on insre le code concern dans un envi-
ronnement scope. Lorsque TikZ applique loption [yshift=-2.5cm] au point
(-1,0), il trace en fait le point (-1,-2.5), etc.
On applique ensuite chaque scope les dcalages successifs :
[yshift=-2.5cm], [yshift=-5cm], [yshift=-7.5cm].
7.4. GRAPHE DE PREUVE 125
\begin{tikzpicture}
\node[above right] at (-1,0) {Expression}; ...
\begin{scope}[yshift=-2.5cm]
\node[above right] at (-1,0) {Expression}; ...
\end{scope}
\begin{scope}[yshift=-5cm]
\node[above right] at (-1,0) {Terme}; ...
\end{scope}
\begin{scope}[yshift=-7.5cm]
\node[above right] at (-1,0) {Variable}; ...
\end{scope}
\end{tikzpicture}
Expression
Terme
+
Terme
Facteur

Facteur
Variable
( Expression )
Variable
X
Y
Z
7.4 Graphe de preuve
7.4.1 Rsolution dune quation : 2x + 3 = 7
On veut expliquer laide dun schma la rsolution de lquation du premier
degr : 2x + 3 = 7
126 CHAPITRE 7. GRAPHES : EXEMPLES
Rsolution de lquation 2x + 3 = 7
On soustrait 3 chaque membre 2x + 3 3 = 7 3
On simplie 2x = 4
On divise chaque membre par 2
2x
2
=
4
2
On simplie x = 2
La solution est S = {2}
On veut prsenter le schma de rsolution sous cette forme :
2x + 3 =
7
2x
=
4
x =
2
S = {2}
3 3
/2 /2
7.4.2 Placement des nuds : \node (a) at (x,y), below
La gure nale est propose ci-dessus pour montrer lobjectif atteindre. En
ralit un diagramme de ce type a t fait la main au brouillon au pralable.
On code ensuite successivement les dirents lments en procdant par essais
et erreurs pour obtenir le rsultat voulu.
On va reprsenter notre quation laide de 3 nuds en nommant les
membres de gauche (g) et de droite (d). Ainsi les nuds (g) et (d) pourront
tre origines des ches :
\begin{tikzpicture}
\node (g) at (-1.25,4.5) {$2x+3$};
\node at (0,4.5) {$=$};
\node (d) at (1,4.5) {$7$};
\end{tikzpicture}
2x + 3 =
7
Un maniaque de la prcision remarquera un lger dfaut dalignement du
signe gal par rapport sa position dans lquation standard : 2x + 3 = 7
Pour corriger a, on peut penser loption [below] que lon ajoute au nud
gal : \node[below] at (0,5) {$=$};
2x + 3
=
7
7.4. GRAPHE DE PREUVE 127
Hlas le rsultat est pire ! Il faut ajuster la valeur de la descente en procdant
par essais successifs jusqu obtenir : [below=-5pt]
2x + 3 =
7
On va aussi encadrer les deux membres de lquation en dnissant le style
membre quon ajoutera ensuite comme option des nuds (g) et (d).
\tikzstyle{membre}= [rectangle,draw,thick,dotted]
\node[membre] (g) at (-1.25,4.5) {$2x+3$};
\node[membre] (d) at (1,4.5) {$7$};
2x + 3 =
7
On peut maintenant complter le diagramme :
2x + 3 =
7
2x
=
4
x =
2
S = {2}
Plusieurs ajustements des coordonnes des dirents nuds ont t nces-
saires pour obtenir une disposition satisfaisante et des espacements corrects.
\node[membre] (gg) at (-1,2.5) {$2x$};
\node [below=-5pt] at (0,2.5) {$=$};
\node[membre] (dd) at (1,2.5) {$4$};
\node[membre] (ggg) at (-1,0.5) {$x$};
\node [below=-5pt] (egal) at (0,0.5) {$=$};
\node[membre] (ddd) at (1,0.5) {$2$};
\node[membre] (reponse) at (0,-1) {$S=\{2\}$};
On remarque que lon a nomm (egal) le nud contenant le signe gal de
lavant dernire quation et (reponse) le nud contenant la dernire quation,
en eet on lintention de les relier par une che.
7.4.3 Placement et tiquetage des ches : ->, midway
On va donc maintenant placer des ches qui indiquent laide dtiquettes
les oprations eectuer sur chaque menbre de lquation. Par exemple :
128 CHAPITRE 7. GRAPHES : EXEMPLES
\draw[->] (g)--(gg) node[midway]{$-3$};
\draw[->] (d)--(dd) node[midway]{$-3$};
2x + 3 =
7
2x
=
4
3 3
On a utilis loption [->] de la commande \draw pour obtenir une che,
et loption [midway] de node pour placer ltiquette mi-chemin de lorigine et
de lextrmit.
La dnition pour les ches et les tiquettes des styles respectifs operation
et etiquette permettent damliorer la pointe des ches et de dessiner des
tiquettes sur fond gris clair :
\tikzstyle{operation}=[->,>=latex]
\tikzstyle{etiquette}=[midway,fill=black!20]
\draw[operation] (g)--(gg) node[etiquette]{$-3$};
\draw[operation] (d)--(dd) node[etiquette]{$-3$};
2x + 3 =
7
2x
=
4
3 3
7.4.4 Flches courbes : bend, to
2x + 3 =
7
2x
=
4
x =
2
S = {2}
3 3
/2 /2
\begin{tikzpicture}
\tikzstyle{membre}= [rectangle,draw,thick,dotted]
\tikzstyle{operation}=[->,>=latex]
\tikzstyle{etiquette}=[midway,fill=black!20]
7.4. GRAPHE DE PREUVE 129
\node[membre] (g) at (-1.25,4.5) {$2x+3$};
\node[below=-5pt] at (0,4.5) {$=$};
\node[membre] (d) at (1,4.5) {$7$};
\node[membre] (gg) at (-1,2.5) {$2x$};
\node [below=-5pt] at (0,2.5) {$=$};
\node[membre] (dd) at (1,2.5) {$4$};
\node[membre] (ggg) at (-1,0.5) {$x$};
\node [below=-5pt] (egal) at (0,0.5) {$=$};
\node[membre] (ddd) at (1,0.5) {$2$};
\node[membre] (reponse) at (0,-1) {$S=\{2\}$};
%flches
\draw[operation] (g)--(gg) node[etiquette]{$-3$};
\draw[operation] (d)--(dd) node[etiquette] {$-3$};
\draw[operation] (gg)--(ggg) node[etiquette]{$/2$};
\draw[operation] (dd)--(ddd) node[etiquette] {$/2$};
\draw[operation] (egal)--(reponse);
\end{tikzpicture}
Mais on peut faire mieux pour que la gure remplace la solution rdige.
On va dabord viter dintercaler les tiquettes 3 ou /2 entre les qua-
tions et les placer, de chaque ct des quations, comme des commentaires on
soustrait 3 ou on divise par 2 :
On change la che droite en che courbe en remplaant par to et en
prcisant en option langle de sortie du nud pour lorigine de la che et
langle dentre dans le nud suivant pour lextrmit.
On dcale ensuite les tiquettes, en ajoutant les options left ou right aux
nuds correspondants.
\draw[operation] (g) to[out=180,in=180] (gg)
node[etiquette,left]{on soustrait $3$};
\draw[operation] (d) to[out=0,in=0] (dd)
node[etiquette,right]{on soustrait $3$};
\draw[operation] (gg) to[out=180,in=180] (ggg)
node[etiquette,left]{on divise par $2$};
\draw[operation] (dd) to[out=0,in=0] (ddd)
node[etiquette,right]{on divise par $2$};
2x + 3 =
7
2x
=
4
x =
2
on soustrait 3 on soustrait 3
on divise par 2 on divise par 2
130 CHAPITRE 7. GRAPHES : EXEMPLES
La position des ches nest pas encore tout fait satisfaisante. on va lg-
remnt modier les angles dentre et de sortie et prciser les point dentre et
de sortie des ches sur les nuds.
De plus, on peut remonter lgrement la ligne de la troisime quation.
\draw[operation] (g) to[out=200,in=135] (gg.north west)
node[etiquette,left]{on soustrait $3$};
\draw[operation] (d) to[out=0,in=45] (dd.north east)
node[etiquette,right]{on soustrait $3$};
\draw[operation] (gg.south west) to[out=-135,in=180] (ggg)
node[etiquette,left]{on divise par $2$};
\draw[operation] (dd.south east) to[out=-45,in=0] (ddd)
node[etiquette,right] {on divise par $2$};
2x + 3 =
7
2x
=
4
x =
2
on soustrait 3
on soustrait 3
on divise par 2 on divise par 2
7.4.5 Exercice damlioration
titre dexercice, on laissera le lecteur poursuivre lamlioration de la gure
pour obtenir, par exemple, la prsentation suivante :
2x + 3 =
7
2x + 3 3 = 7 3
2x
=
4
2x
2
=
4
2
x = 2
S = {2}
on soustrait 3 on soustrait 3
on simplie
on divise par 2 on divise par 2
on simplie
Solution :
7.5. RSUM 131
7.5 Rsum
On a vu ici des exemples de graphes complexes et le moyen de les raliser
en utilisant les commandes \node et \draw et leurs direntes options.
On a montr la ncessit de structurer le dessin en plaant dabord les nuds,
puis les arcs partir dun modle fait la main sur papier au pralable.
Mais on a aussi pris conscience quun diagramme se prpare dabord soigneu-
sement avec un papier et un crayon. Il faut ensuite le modier par amliorations
successives, laide de corrections du plus en plus nes.
Chapitre 8
Des gures aux illustrations
8.1 Les anneaux olympiques
Dans cet exemple, la gure est dcorative, mais sa construction exige une
grande prcision mathmatique.
Description des anneaux olympiques
Les cinq anneaux olympiques sont centrs aux points A, B, C, D, et E. Leurs
rayons et leurs positions sont prcises sur le diagramme suivant :
+
+
+
+
+ A
3,2
C
3,2 3,2
E
3,2
B
3,2
D
3,2
2
,
5
3
De plus ils sont en couleur et entrelacs ainsi :
132
8.1. LES ANNEAUX OLYMPIQUES 133
Centre Pays Couleur
A Europe Bleu
B Asie Jaune
C Afrique Noir
D Ocanie Vert
E Amrique Rouge
8.1.1 Un anneau : circle, fill, even odd rule
On trace dabord deux cercles concentriques :
\draw (0,0) circle(2.5) circle(3);
Puis on met une couleur lintrieur avec loption : fill=lightgray
Hlas, ce nest pas ce que lon dsire. On a dj vu prcdemment que la
dnition de lintrieur dune rgion nest pas simple (voir le manuel : interior
rules). Dans le cas prsent loption applique est : even odd rule
On peut viter de tracer les frontires de lanneau en remplaant \draw par :
\fill[lightgray,even odd rule] (0,0) circle(2.5) circle(3);
134 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
8.1.2 Entrelacer les anneaux : \coordinate, fill et arc
On va maintenant dnir et nommer les coordonnes des centres des cercles
et tracer les anneaux :
\coordinate (A) at (-6.4,0);
\coordinate (B) at (-3.2,-3.2);
\coordinate (C) at (0,0);
\coordinate (D) at (3.2,-3.2);
\coordinate (E) at (6.4,0);
\fill[blue,even odd rule] (A) circle(2.5) circle(3);
\fill[yellow,even odd rule] (B) circle(2.5) circle(3);
\fill[black,even odd rule] (C) circle(2.5) circle(3);
\fill[green,even odd rule] (D) circle(2.5) circle(3);
\fill[red,even odd rule] (E) circle(2.5) circle(3);
On reconnat bien les anneaux olympiques. Hlas, ils ne sont pas entrelacs,
mais placs les uns sur les autres selon leur ordre de cration.
Sur la gure qui suit, on a dessin des secteurs angulaires de 30qui reprent
la zone o lanneau bleu devrait tre au dessus de lanneau jaune et la zone o
lanneau jaune devrait tre au dessus de lanneau noir.
Donc, une fois les anneaux superposs normalement, il sut de dessiner
nouveau, par dessus, les arc danneaux correspondants aux zones concernes.
Cest dire les rgions colories en gris :
8.1. LES ANNEAUX OLYMPIQUES 135
Par exemple, pour entrelacer les deux anneaux bleu et jaune, on va faire
passer un arc danneau bleu sur le jaune avec la commande :
\fill[blue] (A) ++(0:3)
arc(0:-30:3) -- ++(-30:-0.5)
arc(-30:0:2.5) -- cycle;
(A)
0
30

++(0:3)
2

arc(0:-30:3)
3

--++(-30:-0.5)
4

arc(-30:0:2.5)
5
Suivons pas pas la frontire de la rgion colorie :
1. (A) origine
2. ++(0:3) avance au dpart sans tracer de 3 dans la direction 0
3. arc(0:-30:3) trace un arc de rayon 3 de 0 30
4. --++(-30:-0.5) trace vers le centre un trait de 0, 5 direction 30
5. arc(-30:0:2.5) trace un arc de rayon 2, 5 de 30 0
6. --cycle retour au point de dpart 2.
On procde de la mme faon pour le recouvrement de la partie jaune en
remplaant lorigine (A) par le point (B) et les angles de 0 30par lintervalle
des angles de 90 60= 9030.
En rsum : on trace dabord tous les anneaux, puis ensuite, on retrace la
partie des anneaux entrelacs qui doit tre au dessus.
136 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
8.1.3 La gure complte : \newcommand
On remarque que le dessin dun anneau est dtermin par son centre et sa
couleur. La partie de recouvrement est dtermin par son centre, sa couleur et
son angle de dpart. Il semble donc naturel den faire des commandes :
\newcommand{\anneau}[2]%
{\fill[#2,even odd rule] (#1) circle (2.5) circle (3);}
#1 est le centre
#2 est la couleur
\newcommand{\recouvrement}[3]%
{\fill[#3] (#1) ++(#2:3)
arc (#2:{#2-30}:3) -- ++({#2-30}:-0.5)
arc ({#2-30}:#2:2.5) -- cycle;}
#1 est le centre
#2 est la couleur
#3 est langle de dpart du recouvrement
On note lutilisation des calculs dans la dnition de cette commande. Pour
que cet exemple fonctionne correctement il ne faut pas oublier dinclure dans la
prambule \usetikzlibrary{calc} aprs avoir charg le package TikZ (uni-
quement avec PGF version 2.00).
On trace alors les anneaux olympiques avec :
\anneau{A}{blue} \anneau{C}{black} \anneau{D}{green}
\anneau{B}{yellow} \anneau{E}{red}
\recouvrement{A}{0}{blue} \recouvrement{B}{90}{yellow}
\recouvrement{C}{0}{black} \recouvrement{D}{90}{green}
8.2. DIAGRAMMES DE VENN 137
8.2 Diagrammes de Venn
Dans cet exemple, les diagrammes illustrent un sujet mathmatiques, mais
la construction de ces diagrammes ne demande pas de prcision particulire.
Les diagrammes de Venn permettent de faire des schmas densembles. On
se limitera deux ensembles dun mme rfrentiel.
On choisit de reprsenter le rfrentiel E par un rectangle et les ensembles
A et B par des cercles concourants dans ce rectangle, mais on pourrait aussi
choisir de reprsenter ces ensembles par dautres formes quelconques.
On va construire les diagrammes classiques qui reprsentent : A, B, AB,
A B, AB, B A, AB et leurs complmentaires dans le rfrentiel E.
On proposera deux mthodes direntes pour raliser ces diagrammes.
8.2.1 Ensembles E, A, B : rectangle, circle, \newcommand
partir de lorigine O point dintersection bas des deux cercles, on placera
les centres
A
et
B
2 cm de O respectivement 135et a 45comme on le
voit sur la gure :
\begin{tikzpicture}
\draw (-4,-1) rectangle (4,4); % E
\draw (0,0) ++(135:2) circle (2); % A
\draw (0,0) ++(45:2) circle (2); % B
\end{tikzpicture}
O
45

A ++(45:2)
135

B ++(135:2)

(4, 1)

(4, 4)
Pour viter davoir rcrire chaque fois les coordonnes des dirents des-
sins, on propose de les dnir comme des commandes L
A
T
E
X quil sera facile
dutiliser ensuite dans les commandes TikZ. On gagne ainsi du temps la r-
daction, mais surtout, on rend le code plus comprhensible.
On va dnir les commandes L
A
T
E
X \E, \A et \B pour reprsenter respecti-
vement les ensembles E, A et B :
\newcommand{\E}{(-4,-1) rectangle (4,4)}
\newcommand{\A}{(0,0) ++(135:2) circle (2)}
\newcommand{\B}{(0,0) ++(45:2) circle (2)}
138 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
Chaque fois que, par exemple, la commande \E sera rencontre dans le code
TikZ, elle sera remplace par le texte (-4,-1) rectangle (4,4)
Ainsi, le code \tikz\draw\E\A\B; produit :
Pour linstant, seuls les contours ont t tracs. Il est possible de les colorier
en remplaant la commande \draw par la commande \fill.
8.2.2 Coloriage : \fill, color, opacity
crire : \fill[magenta] \E; \fill[red] \A; \fill[blue] \B; donne :
E
A B
Les couleurs sont un peu violentes ! Mais surtout, lensemble B qui a t
dessin en dernier, cache une partie de lensemble A.
Pour claircir la couleur de E, on va remplacer \fill[magenta] \E; par
\fill[magenta!50] \E; Hlas, cela provoque une erreur de compilation avec
le message :
! Missing \encsname inserted. <to be read again> \penalty
En eet \fill[magenta] est une abrviation de \fill[color=magenta]
qui est permise par la syntaxe de TikZ, car magenta est reconnu sans ambigut
comme une couleur par la commande \fill.
Par contre magenta !50 provoque une erreur. Dans ce cas, il est obligatoire
dcrire \fill[color=magenta!50]
On peut viter ce type de problme en crivant systmatiquement color=
lorsquon dnit une couleur.
Pour viter ensuite le recouvrement de lensemble A par lensemble B on
peut dnir un coloriage transparent laide de loption opacity.
8.2. DIAGRAMMES DE VENN 139
\fill[color=magenta!50] \E;
\fill[opacity=0.5,red] \A;
\fill[opacity=0.5,blue] \B;
E
A B
8.2.3 Mthode par superposition de couleurs
Dans cette premire mthode, le coloriage des rgions sera eectu en plu-
sieurs couches. Certaines zones du dessin seront colories plusieurs fois.
Colorier en blanc consiste eacer la zone sur laquelle est appliqu la couleur
blanche.
A, B et A B : \draw et \fill
Le disque de A est simplement colori dans le rectangle de E :
\draw[magenta] \E; \fill[magenta] \A;
Le complmentaire A est obtenu en coloriant le rectangle de E puis ensuite
en eaant le disque de A, cest dire en le coloriant en blanc :
\fill[magenta] \E; \fill[white] \A;
A
A
De mme pour les ensembles B et B :
B
B
Pour lensemble AB on va superposer le disque de A et celui de B et pour
lensemble A B on fera de mme en coloriant en blanc :
\fill[magenta] \E; \fill[white] \A; \fill[white] \B;
140 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
A B
A B
A B, AB, B A et AB : \clip et scope
Pour lensemble A B il faut colorier uniquement la partie du cercle de A
qui est aussi dans le cercle de B.
Pour cela on va utiliser la commande \clip qui dnit une rgion de d-
coupage dans laquelle les commandes suivantes seront eectues. On placera le
code dans un environnement scope pour limiter la porte du dcoupage :
\draw[magenta] \E;
\begin{scope}
\clip \B;
\fill[magenta] \A;
\end{scope}
\fill[magenta] \E;
\begin{scope}
\clip \B;
\fill[white] \A;
\end{scope}
A B
A B
Lensemble A B et son complmentaire AB peuvent se dessiner par
simple coloriage-eacement :
\draw[magenta] \E;
\fill[magenta] \A;
\fill[white] \B;
\fill[magenta] \E;
\fill[white] \A;
\fill[magenta] \B;
AB AB
De mme pour les ensembles B A et B A :
8.2. DIAGRAMMES DE VENN 141
B A B A
Enn : AB = (AB)(AB) et on a dj vu prcdemment comment
reprsenter la runion et lintersection :
\draw[magenta] \E;
\fill[magenta] \A;
\fill[magenta] \B;
\begin{scope}
\clip \B;
\fill[white] \A;
\end{scope}
\fill[magenta] \E;
\fill[white] \A;
\fill[white] \B;
\begin{scope}
\clip \B;
\fill[magenta] \A;
\end{scope}
AB
AB
8.2.4 Mthode par coloriage entre les frontires
Dans cette seconde mthode, on va dabord dnir les frontires qui en-
tourent le dirents ensembles puis colorier lintrieur des rgions dnies par
ces frontires.
Comme on la dj dit prcdemment, le mode par dfaut de coloriage des
rgions est loption nonzero rule quil est inutile de spcier, lautre mode quil
est possible dnir est even odd rule.
La dnition de ces modes est complique (voir le manuel : interior rules). En
particulier, le mode par dfaut tient compte du sens de parcour de la frontire
pour dterminer la rgion colorier. Or, quand on trace un rectangle ou un
cercle, le sens du trac est inconnu. dans ce cas le coloriage donne trs souvent
des rsultats inattendu et diciles interprter.
Conseil : Ds quune rgion est complique (en plusieurs morceaux ou
avec des trous), il est trs fortement conseill dutiliser even odd rule comme
option de coloriage. Il faut donc, dans ce cas, le spcier explicitement dans
chaque commande \fill.
Dans le mode even odd rule, le coloriage se fait de faon assez naturelle,
lextrieur est blanc, lintrieur est colori. Il sut donc de savoir ce quon
appelle intrieur et extrieur :
142 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
lespace situ autour de la gure totale est lextrieur
chaque fois quon franchit une frontire :
si on est lextrieur on passe lintrieur
si on est lintrieur on passe lextrieur
Attention : Dans toute cette section even odd rule est explicitement
spci dans chaque commande \fill.
Dnition des frontires : rectangle, circle et arc
Les frontires de E, A et B ont dj dnies prcdemment avec les com-
mandes \E, \A et \B.
Le code \tikz\draw\E\A\B; produit :
Nous allons dnir de mme pour AB, AB, AB et BA les commandes
respectives \AuB, \AnB, \AmB et \BmA.
Pour : A B : \draw (0,0) arc(-135:135:2) arc(45:315:2);
Et donc la commande :
\newcommand{\AuB}{(0,0) arc(-135:135:2) arc(45:315:2)}
O
135
135
45
315
Pour : A B : \draw (0,0) arc (-45:45:2) arc (135:225:2);
Et donc la commande :
\newcommand{\AnB}{(0,0) arc (-45:45:2) arc (135:225:2)}
8.2. DIAGRAMMES DE VENN 143
O
135
225
45
45
Pour : AB : \draw (0,0) arc (225:135:2) arc (45:315:2);
Et donc la commande :
\newcommand{\AmB}{(0,0) arc (225:135:2) arc (45:315:2)}
O
135
225
45
315
Et de mme pour B A la commande :
\newcommand{\BmA}{(0,0) arc(-135:135:2) arc(45:-45:2)}
Coloriage des rgions : \fill, even odd rule
Maintenant que les frontires sont dnies le coloriage ne pose plus de pro-
blme et on va obtenir les mmes rsultats que prcdemment avec :
\draw[magenta] \E;
\fill[magenta] \AuB; % ou respectivement \AnB \AmB \BmA
Et les complmentaires avec :
\draw[magenta,even odd rule] \E \AuB; % resp. \AnB \AmB \BmA
144 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
Pour lensemble AB on na pas dni de frontire particulire, cest en eet
inutile, car loption even odd rule permet un coloriage correct en utilisant pour
frontire de AB la runion de celle de A et de B ainsi :
\draw[magenta] \E;
\fill[magenta,even odd rule]
\A \B;
\fill[magenta,even odd rule]
\E \A \B;
8.3 Personnages et dcors
Dans cet exemple, on a choisi dillustrer un problme de mathmatiques
rcratives. Les choix esthtiques sont ceux de lauteur, mais on laisse le lecteur
libre de refaire la gure selon sa propre inspiration.
Cur bris
Vous venez de plaquer lex-amour de votre vie !
Vous labandonnez sur la jete, altitude de ses yeux humides : 4 m et vous
ramez irrsistiblement vers le large, altitude de vos yeux impitoyables : 1 m.
A quelle distance du rivage chapperez-vous
son regard dchirant, en disparaissant lhorizon ?
8.3. PERSONNAGES ET DCORS 145
Solution
R est le rayon de la terre
h la hauteur des yeux au dessus du sol
d la distance entre lil et lhorizon
c la distance au sol (arc de cercle)

R
d
h
R
On a cos() =
R
R +h
donc c = R et d = Rtan()
On peut prendre R 6365 km, h
1
= 0, 001 km, h
2
= 0, 004 km.
Comme est trs petit, on a c
1
d
1
3, 568 km et c
2
d
2
7, 136 km
Donc le cur est dnitivement bris environ 15 km
8.3.1 Locan : \shade, arc, top color, bottom color
On va dessiner un arc avec un grand rayon :
\draw (0,0) arc (105:75:25) -- cycle;
(0, 0)
105 75
On peut alors remplacer la commande \draw la commande \shade pour
colorier locan et dnir les couleurs des dgrads, par exemple les options :
top color=blue et bottom color=lightgray
8.3.2 Le quai : \fill, rectangle, rotate
Le quai est un rectangle : \fill (0,0)rectangle(1,0.2);
Il sut de le tourner un peu en ajoutant loption [rotate=12] pour le mettre
en place gauche de limage :
146 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
8.3.3 Les personnages : \fill, ellipse, circle
Les personnages sont de petites silhouettes constitue dune ellipse et dun
cercle dessines avec la commande \fill et dont les dimensions ont t rendues
satisfaisantes avec quelques essais :
\fill (0,0)ellipse(0.12 and 0.25) (0,0.35)circle(0.1);
Quelques essais sont encore ncessaires pour placer le personnage sur le quai
laide des options [rotate=12,shift={(0.8,0.3)}] :
Le second personnage rame dans une barque que nous allons dabord dessiner
avant de ly placer.
\fill (0,0)--(1,0)--(1.1,0.2)--(-0.1,0.1)--cycle;% barque
\draw[line width=2pt] (-0.2,0.4)--(0.5,0.2)--(1.2,0.4);% rames
On ajoute le personnage en linclinant lgrement pour produire un eet plus
dynamique :
\fill[shift={(0.5,0.25)},rotate=-10] % personnage
(0,0)ellipse(0.12 and 0.25) (0,0.35)circle(0.1);
Il ny a plus qu le placer la barque au large en insrant les instructions
prcdentes dans un environnement scope avec les options appropries :
\begin{scope} [shift={(11,0.4)},rotate=-10]
% ...
\end{scope}
Il faut bien insister sur le fait que pour arriver placer correctement les
dirents lments du dessin, de nombreux essais ont t ncessaires.
8.3.4 Le cur : \draw, .. controls and ..
Pour dessiner une gure quelconque, on peut utiliser des courbes de Bzier.
Une courbe de Bzier est dnie laide de quatre points de contrle :
A le point de dpart de la courbe
S le point tel que AS est la tangente la courbe en A
T le point tel que BT est la tangente la courbe en B
B le point darrive de la courbe
8.3. PERSONNAGES ET DCORS 147
\draw (A) .. controls (S) and (T) .. (B);

T
Une fois les points A et B plac on peut modier la courbure en jouant de
faon assez intuitive avec les points S ou T. On montre ici deux dplacement
du point T et leet produit sur la courbe :

T
On peut considrer que plus AS ou BT sont longs, plus la courbe colle
la tangente. On constate donc que les dplacements des points de contrle S
est T ont un eet global sur la forme de la courbe, mais sans en dplacer les
extrmits A et B.
Une autre syntaxe permet de dnir les vecteurs tangents

u =

AS et

v =

BT en coordonnes relatives par rapport A et B respectivement :


\draw (A) .. controls +(u) and +(v) .. (B);
A
u
B
v
On peut maintenant construire des formes complexes constitues darcs de
Bzier raccords bout bout. Si, de plus, on aligne les vecteurs tangents aux
extrmits commune, on obtient facilement des courbes lisses.
Par exemple on peut commencer dessiner un cur ainsi :
\draw (0,0) ..controls +(0,2) and +(0,2).. (3,0); % arc 1
\draw (3,0) ..controls +(0,-2) and +(0,2).. (0,-4); % arc 2
148 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
1
(0, 0)
+(0, 2)
(3, 0)
+(0, 2)
2
+(0, 2)
(0, 4)
+(0, 2)
En ajoutant deux arcs supplmentaires, on complte le cur avec une sym-
trie par rapport laxe vertical : \draw[fill=red] (0,0) ... cycle;
(3, 0)
1
(0, 4)
2
(3, 0)
3
4
(0, 0)
8.3.5 Curs multicolores : \shift, rotate, ball color
Les options de la commande \draw peuvent tre modies pour changer
laspect du cur, comme par exemple :
\draw [scale=0.25,rotate=45,ball color=blue]
(0,0) .. controls +(0,2) and +(0,3) .. (3,0)
.. controls +(0,-2) and +(0,2) .. (0,-4)
.. controls +(0,2) and +(0,-2) .. (-3,0)
.. controls +(0,2) and +(0,2) .. (0,0);
On va donc crer une commande ayant pour paramtre les options de la
commande \draw et faire appel cette commande plusieurs fois, pour dessiner
les curs des endroits dirents avec des orientations direntes :
8.3. PERSONNAGES ET DCORS 149
% Commande \coeur
\newcommand{\coeur}[1][fill=red] % rouge par dfaut
{\draw [#1] (0,0)
.. controls +(0,2) and +(0,2) .. (3,0)
.. controls +(0,-2) and +(0,2) .. (0,-4)
.. controls +(0,2) and +(0,-2) .. (-3,0)
.. controls +(0,2) and +(0,2) .. (0,0);}
% Dessin
\coeur[shift={(1.3,2)},ball color=red,scale=0.35]
\coeur[shift={(0.3,1.8)},ball color=orange,scale=0.2,rotate=35]
\coeur[shift={(2.2,1.6)},ball color=magenta,scale=0.2,rotate=-20]
\coeur[shift={(1.8,2.5)},ball color=green,scale=0.25,rotate=-25]
\coeur[shift={(2.7,2.1)},ball color=yellow,scale=0.15,rotate=10]
(0, 0)
8.3.6 La gure complte : scope, shift, rotate
On regroupe enn tous les lments de la gure pour obtenir lillustration
de lnonc du problme :
8.3.7 La solution : scope, shift, rotate
La gure propose dans la solution est une gure gomtrique classique quil
sera facile de raliser titre dexercice.
Pour simplier les calculs dangles et de coordonnes on conseille de dessiner
un demi triangle quilatral :
150 CHAPITRE 8. DES FIGURES AUX ILLUSTRATIONS
= 30
R
d
h
R
(0, 0) (5, 0)
(5,
5

3
)
45
15
\begin{tikzpicture}
% angle alpha
\draw[->,red,>=stealth] (1.5,0) arc (0:30:1.5);
\draw[red] (15:1.5) node[right]{$\alpha$};
% angle droit
\draw (4.5,0)|-(5,0.5);
% triangle
\draw[thick] (0,0)-- node[pos=0.6,above]{$R$} (5,0)
-- node[midway,right]{$d$} (5,{5/sqrt(3)})
-- node[pos=0.1,above]{$h$}
node[pos=0.5,above left]{$R$}(0,0);
% arcs
\draw[blue,thick,dashed] (0:5) arc (0:-15: 5);
\draw[blue,thick] (0:5) arc (0:30: 5);
\draw[blue,thick,dashed] (30:5) arc (30:45: 5);
\end{tikzpicture}
8.4 Rsum
On a vu dans ce chapitre comment dessiner des gures complexes en compo-
sant des lignes lmentaires comme rectangle, circle, arc ou en utilisant des
courbes de Bzier. Les courbes dessine peuvent tre les frontires de rgions
quil est possible de colorier avec fill.
Ainsi TikZ permet non seulement de construire des gures purement go-
mtriques de grande prcision, mais il peut aussi permettre de raliser certains
travaux dillustration.
Chapitre 9
Complments techniques
9.1 Transformations avec scope
On va tudier ici leet des options de transformation xshift, yshift,
shift, scale et rotate sur une mme gure que lon dsire dessiner plusieurs
fois sur un diagramme unique des positions direntes.
Pour cela on placera cette gure dans sa position dorigine en crivant son
code dans un environnement tikzpicture et en insrant une copie de ce code
dans un environnement scope contrl par des options de transformation.
Les exemples suivants seront donc tous rdigs sur ce modle :
\begin{tikzpicture}
% code de la Figure
\begin{scope} [<options de transformation>]
% code de la Figure
\end{scope}
\end{tikzpicture}
Voici la petite gure qui va nous servir visualiser les transformations. Elle
est inscrite dans un carr de 1,5 cm sur 2 cm de ct :
(1, 0)
(0, 0)
(0, 1)
(1.5, 2)
\begin{tikzpicture}
% code de la Figure
\draw [<->,>=stealth] (1,0) -- (0,0) -- (0,1);
\draw[thick] (1.5,0) -- (0,2) -- (1.5,2) -- cycle;
\end{tikzpicture}
Les transformations dont il est question ici sont appliques au repre dans
lequel sont excutes les commandes TikZ qui construisent la gure. La gure
151
152 CHAPITRE 9. COMPLMENTS TECHNIQUES
semble donc subir les mmes transformations, mais il sagit en ralit de chan-
gement du repre dans lequel est dessin la gure. Il faut donc faire attention
lordre dans lequel sont eectues ces transformations.
9.1.1 Translations : xshift, yshift ou shift
Pour viter de superposer les deux dessins, on va dabord eectuer une trans-
lation en utilisant une des options xshift, yshift ou shift :
(0, 0)
[xshift=6cm]
(0, 0)
[
y
s
h
i
f
t
=
3
5
m
m
]
(0, 0)
[
s
h
i
f
t
=
{
(
6
c
m
,
3
5
m
m
)
}
]
On remarquera que dans le cas de loption shift= les coordonnes du vecteur
de translation doivent tre insres entre des accolades. Ceci est ncessaire, car
la virgule qui spare les coordonnes ne doit pas tre interprte comme un
sparateur doptions.
On va maintenant montrer comment faire tourner ou dilater la gure. Dans
tous les cas suivants on utilisera au pralable loption xshift=6cm pour viter
la superposition des deux gures.
9.1.2 Rotation : [xshift=6cm,rotate=45]]
Loption rotate= attend pour paramtre langle de la rotation en degrs :
xshift=6cm
(0, 0)
rotate=45
9.1. TRANSFORMATIONS AVEC SCOPE 153
Attention : On conseille vivement de toujours crire en premier loption
de translation (xshift, yshift ou shift), mais ce nest pas obligatoire.
En eet le centre de la rotation est lorigine actuelle, cest dire lorigine de
la gure aprs quelle ait subi le xshift=6cm dans lexemple prcdent.
Mais si on on eectue la rotation en premier le centre est lorigine (0, 0) de
dpart. Dans ce cas la translation suivante est alors eectue dans un repre
ayant dj subi la rotation.
Voici ce que donne : \begin{scope}[xshift=6cm,rotate=30]
xshift=6cm
(0, 0)
rotate=30
Si on le compare : \begin{scope}[rotate=30,xshift=6cm]
x
s
h
i
f
t
=
6
c
m
rotate=30
(0, 0)
on constate que lordre des options est important et le rsultat est plus dicile
interprter dans le second cas.
Il est donc plus facile de toujours faire la translation en premier. Le rsultat
nal est alors plus facile comprendre.
9.1.3 Changement dchelle : [xshift=6cm,scale=0.5]
Le changement dchelle est une homothtie, applique au repre dans lequel
sont excutes les commandes de construction de la gure, ce qui provoque
eectivement une modication de la taille de la gure.
Loption scale= attend pour paramtre le rapport dhomothtie :
xshift=6cm
(0, 0)
scale=0.5
154 CHAPITRE 9. COMPLMENTS TECHNIQUES
Attention : On conseille, comme dans le cas prcdent, de toujours crire
en premier une option de translation (xshift, yshift ou shift) bien que ce ne
soit pas obligatoire.
En eet le centre de lhomothtie est lorigine actuelle, cest dire lorigine
du repre dans lequel est trace la gure aprs quelle ait subi le xshift=6cm
dans lexemple prcdent.
Si on on eectue lhomothtie en premier le centre est lorigine (0, 0) de
dpart. Dans ce cas la translation suivante est alors eectu dans un repre
ayant subi dj subi lhomothtie et dont les units ont t multiplies par le
rapport dhomotthie.
Voici ce que donne : \begin{scope}[xshift=5cm,scale=1.5]
xshift=5cm
(0, 0)
scale=1.5
Si on le compare : \begin{scope}[scale=1.5,xshift=5cm]
xshift=5cm 1.5 =7.5cm
(0, 0)
on constate, comme prcdemment avec la rotation, que lordre des options est
important et le rsultat est toujours surprenant dans le second cas.
On a vu sur les exemples que le coecient de loption scale (rapport dho-
mothtie), peut tre infrieur 1, pour rtrcir ou suprieur 1 pour dilater la
gure. Il peut aussi tre ngatif.
On peut aussi composer les trois transformations, traunslation en premier,
homothtie et rotation ensuite dans un ordre quelconque.
Par exemple : \begin{scope}[xshift=6cm,rotate=60,scale=2.25]
9.1. TRANSFORMATIONS AVEC SCOPE 155
xshift=6cm
rotate=60
(0, 0)
scale=2.25
Les options [xshift=6cm,scale=2.25,rotate=60] crites dans cet ordre
donnent la mme gure.
Attention : Toutes ces options de transformation sappliquent au repre
dans lequel sera trace la gure dnie dans lenvironnement scope, cest
dire que les transformations ont un eet sur lensemble des chemins (path)
dessins (draw). Pr contre, ces transformations nont aucun eet sur lpaisseur
des traits, sur la taille ou linclinaison des textes contenus dans les nuds (node)
qui annotent ventuellement la gure.
9.1.4 paisseur des traits : \draw et line width
Attention : En premire lecture, vous pouvez ignorer ce paragraphe assez
technique. Par contre si vous avez lintention de faire des transformations pr-
cises sur des gures dans lesquelles les traits ont des paisseurs direntes, il
sera ncessaire de le lire attentivement.
On va considrer une gure de rfrence qui ressemble la prcdente, mais
avec des traits dpaisseurs direntes :
\draw [<->,>=stealth] (1,0) -- (0,0) -- (0,1);
\draw[very thick] (0,2) -- (1.5,2) -- (1.5,0);
\draw[line width=3mm,color=blue!50] (0,2) -- (1.5,0);
Elle est situe gauche et a t reproduite deux fois avec des options scale
direntes pour chaque environnement scope :
156 CHAPITRE 9. COMPLMENTS TECHNIQUES
[
l
i
n
e
w
i
d
t
h
=
3
m
m
]
[
v
e
r
y
t
h
i
c
k
]
[scale=0.5]
[scale=2.5]
On constate que la forme de la gure a t transforme lexception de
lpaisseur des traits qui est reste constante. Lhomottie porte sur les chemins
(path) dessins par \draw mais pas sur leurs paisseurs dnies par des options
de la commande \draw.
Lpaisseur du trait peut tre dnie avec loption line width= suivie dune
dimension, ou avec une des options suivantes : ultra thin (0.1pt), very thin
(0.2pt), thin (qui est line width=0.4pt paisseur par dfaut si aucune option
nest spcie), semithick (0.6pt), thick (0.8pt), very thick (1.2pt) et
ultra thick (1.6pt)
Si on veut obtenir des gures semblables, il faut modier le code situ
lintrieur de lenvironnement scope pour dnir lpaisseur de chaque trait en
multipliant lpaisseur originale par le coecient de loption scale.
Dans le cas o lenvironnement scope est contrl par [scale=0.5], toute
commande de la forme : \draw[line width=<d>] ...; o <d> est une di-
mension, sera remplac par : \draw[line width={0.5*<d>}] ...;
Par exemple :
\draw ...; par \draw[line width={0.5*0.4pt}] ...;
\draw[very thick] ...; par \draw[line width={0.5*1.6pt}] ...;
\draw[line width=3mm] ...; par \draw[line width={0.5*3mm}] ...;
Ne pas oublier dinsrer les calculs entre accolades.
Maintenant, le changement dchelle est appliqu la gure complte (pais-
seur des traits comprise). Voici ce que donnera aprs correction notre gure :
9.1. TRANSFORMATIONS AVEC SCOPE 157
[scale=0.5]
[scale=2.5]
Remarque : Pour que cet exemple fonctionne correctement il ne faut pas
oublier dinclure dans la prambule \usetikzlibrary{calc} aprs avoir charg
le package TikZ (uniquement avec PGF version 2.00).
9.1.5 Taille et inclinaison de textes : transform shape
Attention : En premire lecture, vous pouvez ignorer ce paragraphe qui est
assez technique. Par contre si vous avez lintention de faire des transformations
prcises sur des gures contenant de nombreuses annotations textuelles, il sera
ncessaire de le lire attentivement.
On va considrer une gure de rfrence qui ressemble la prcdente, mais
avec des annotations textuelles varies en taille et en orientation :
\draw [<->,>=stealth] (1,0) -- (0,0) -- (0,1);
\path (1.5,2) node{$\oplus$}
node[left,scale=1.5,rotate=45]{Texte};
et lui faire subir deux transformations :

T
e
x
t
e
n
o
d
e
[
s
c
a
l
e
=
1
.
5
,
r
o
t
a
t
e
=
4
5
]
node{$\oplus$}
[scale=0.5]
[scale=2]
30

T
e
x
t
e

T
e
x
t
e
On constate que la forme de la gure a t transforme et que les annotations
textuelles sont correctement places, mais elles ont conserv la mme taille et
158 CHAPITRE 9. COMPLMENTS TECHNIQUES
la mme inclinaison. La plupart du temps, on veut simplement modier la taille
de la gue et cest donc tout fait satisfaisant, les annotations gardent une taille
assortie celle du texte qui accompagne la gure.
Par contre, si on a lintention de montrer une image rduite ou dilate du dia-
gramme avec des texte proportionnels correctement inclins, il va falloir ajouter
la gure loption [transform shape] qui va faire subir aux nuds les trans-
formations dnies dans les environnements {scope} :

T
e
x
t
e

T
e
x
t
e

T
e
x
t
e
On remarque quon a bien obtenu des gures de formes semblables, textes
compris. Seule lpaisseur des trais est reste constante.
9.1.6 Exercice
titre dexercice, faites subir un quart de tour et triplez la gure.

T
e
x
t
e
Solution
\begin{tikzpicture} [scale=3,rotate=90,transform shape]
\draw[<->,>=stealth,very thick] (1,0)--(0,0)--(0,1);
\path (1.5,2) node{$\oplus$}
node[left,scale=1.5,rotate=45]{Texte};
\end{tikzpicture}
9.2. AU SUJET DES ARBRES 159
9.2 Au sujet des arbres
En mathmatiques, la structure darbre est un cas important de la tho-
rie des graphes. TikZ propose de nombreuses oprations spciques pour la
construction des arbres.
Nous allons montrer sur un exemple vu prcdemment sous forme dexercice,
comment dessiner dun arbre gnalogique :
% dfinition des styles
\tikzstyle{lien}=[->,>=stealth,rounded corners=5pt,thick]
\tikzset{individu/.style={draw,thick,fill=#1!25},
individu/.default={green}}
% dfinition de larbre
\begin{tikzpicture}
\node[individu] (B) at (0,0) {Bibi};
\node[individu=blue] (P) at (-3,2) {Papa};
\node[individu=red] (M) at (3,2) {Maman};
\node[individu=blue] (GPP) at (-4.5,4) {Pp};
\node[individu=red] (GMP) at (-1.5,4) {Mm};
\node[individu=blue] (GPM) at (1.5,4) {Papy};
\node[individu=red] (GMM) at (4.5,4) {Mamie};
\draw[lien] (B) |- (-1,1) -| (P);
\draw[lien] (B) |- (1,1) -| (M);
\draw[lien] (P) |- (-4,3) -| (GPP);
\draw[lien] (P) |- (-2,3) -| (GMP);
\draw[lien] (M) |- (2,3) -| (GPM);
\draw[lien] (M) |- (4,3) -| (GMM);
\end{tikzpicture}
Bibi
Papa Maman
Pp Mm Papy Mamie
On va dabord rappeler le vocabulaire usuel concernant les arbres.
Ci-dessus, le nud Bibi est la racine de larbre. Ce nud Bibi a deux
nuds ls : le nud Papa et le nud Maman. Les nuds terminaux, ou
feuilles de larbre, sont donc les nuds Pp, Mm, Papy et Mamie.
Remarque : Cet arbre reprsente les anctres de Bibi, donc, du point de
vue mathmatique, Papa et Maman les parents de Bibi sont bien les nuds ls
du nud Bibi, au sens de la structure darbre, de mme que Papy et Ma-
mie sont mathmatiquement deux nuds frres du nud parent Maman.
160 CHAPITRE 9. COMPLMENTS TECHNIQUES
9.2.1 Dnition : \node node et child
Si on dnit un nud avec la commande \node, lopration child permet
de lui associer des ls sous la forme suivante :
\node {Racine} child{ node{Fils1}...} child{ node{Fils2}...};
et ceci de faon rcursive.
On peut donc dnir lexemple prcdent ainsi :
\begin{tikzpicture}
\node [individu] {Bibi}
child { node [individu=blue]{Papa}
child { node [individu=blue]{Pp} }
child { node [individu=red]{Mm} }
}
child { node [individu=red]{Maman}
child { node [individu=blue]{Papy} }
child { node [individu=red]{Mamie} }
};
\end{tikzpicture}
Bibi
Papa
Pp Mm
Maman
Papy Mamie
On remarque que les nuds ont t dnis avec leur place dans larbre, les
arcs ont t automatiquement tracs. Par contre la distance entre les frres est
par dfaut toujours la mme et au second niveau, les nuds se superposent.
9.2.2 Espacement des frres : sibling distance
Une option de lopration child permet de modier cette distance entre
frres : sibling distance. Par exemple la racine :
\node [individu]{Bibi} [sibling distance=3cm] ...
Bibi
Papa
Pp Mm
Maman
Papy Mamie
On constate hlas que si la distance entre frres a augment, il y a toujours
superposition au second niveau car loption sibling distance propage son
9.2. AU SUJET DES ARBRES 161
eet sur tous les sous-arbres. Il faut donc rednir cette option chaque tage
en faisant varier la distance selon le niveau, par exemple :
\node [individu] {Bibi} [sibling distance=6cm]
node [individu=blue]{Papa} [sibling distance=3cm]
node [individu=red]{Maman} [sibling distance=3cm]
Bibi
Papa
Pp Mm
Maman
Papy Mamie
Construire un arbre est toujours une tche assez dlicate. En pratique, il
est toujours ncessaire de bien rchir pour xer correctement la sibling
distance, et cela, tous les niveaux.
Heureusement, il existe des noms de styles crs automatiquement lors de la
construction dun arbre et que lon peut dnir globalement, ce qui vite de le
faire sur chaque ls chaque niveau.
Le style level sapplique larbre entier. Les styles level 1, level 2, etc.
sappliquent respectivement aux ls de niveau 1, 2, etc.
On obtient exactement le mme arbre en supprimant, sur tous les nuds
o on les avait mises, les options sibling distance, condition de dnir
globalement pour la gure les styles level 1 et level 2 :
\begin{tikzpicture}
[level 1/.style={sibling distance=6cm},
level 2/.style={sibling distance=3cm}]
\node [individu] {Bibi}
child{ node [individu=blue]{Papa}
% etc.
}
child{ node [individu=red]{Maman}
% etc.
};
\end{tikzpicture}
9.2.3 Forme globale : level distance et grow
On peut aussi prciser la distance entre les niveaux avec loption level
distance et modier la direction de croissance de larbre avec une des options
grow et grow (qui inverse lordre des frres) :
\node{Bibi} [grow=up,level distance=2cm,sibling distance=6cm]
162 CHAPITRE 9. COMPLMENTS TECHNIQUES
Bibi
Papa
Pp Mm
Maman
Papy Mamie
sibling distance=3cm
level 2
sibling distance=3cm
level 2
sibling distance=6cm
level 1
l
e
v
e
l
d
i
s
t
a
n
c
e
=
2
c
m
9.2.4 tiquetage des arcs : edge from parent
Parfois, il peut tre utile de placer des textes sur les arcs. Lopration edge
from parent place la n de la dnition dun ls (child) si elle est suivie de
nuds (node) place les textes de ces nuds sur larc reliant le ls son parent,
comme le montre la gure suivante :
Bibi
Papa
Pp
Descendant
Mm
Anctre
Maman
Papy Mamie
Pour bien comprendre la gure obtenue ci-dessus, lire attentivement le code
suivant qui a permis de placer les textes sur les arcs :
\node [individu] {Bibi}
child{ node [individu=blue]{Papa}
child{ node [individu=blue]{Pp}
edge from parent node{$\downarrow$ Descendant}
}
child{node [individu=red]{Mm}}
edge from parent node[below left]{Anctre $\uparrow$}
}
child{ node [individu=red]{Maman}
child{node [individu=blue]{Papy}}
child{node [individu=red]{Mamie}}
};
9.3. LIAISONS ENTRE FIGURES : OVERLAY 163
9.2.5 Style des arcs : edge from parent path
Pour nir on va montrer comment on peut modier le trac et le style des
arcs reliant les nuds.
Loption edge from parent path permet de dnir larc comme un chemin
quelconque. Pour faire rfrence aux nud origine et extrmit du chemin on
peut utiliser les commande respectives \tikzparentnode et \tikzchildnode,
par exemple on peut dnir comme option de lenvironement tikzpicture :
[edge from parent path={[->,>=stealth,thick]
(\tikzparentnode) to [out=90,in=-90] (\tikzchildnode)}]
Bibi
Papa
Pp Mm
Maman
Papy Mamie
Les nombreuses autres oprations sont disponibles dans TikZ pour amliorer
la reprsentation des arbres, mais elle sortent du cadre de cet ouvrage.
On conseille donc au lecteur qui voudrait dessiner des arbres complexes de
se reporter au manuel de rfrence.
9.3 Liaisons entre gures : overlay
Parfois on peut avoir envie de montrer du doigt certains points remarquables
dune gure. Pour cela, on veut en gnral crire, en dehors de la gure, dans
le texte daccompagnement, des commentaires relatifs des points particuliers
dsigns sur la gure.
Par en dehors de la gure on veut dire, dans la page L
A
T
E
X, mais en dehors
de lenvironnement tikzpicture qui dnit la gure. On peut aussi dessiner sur
la page des liens entre deux environnements tikzpicture distincts dnissant
deux gures direntes.
Voici, dans le cadre ci-dessous, un exemple contenant du texte L
A
T
E
X et
quatre gures TikZ dont deux visibles :
la premire gure est le paralllogramme
la seconde est le couple de ches
Les deux autres gures TikZ sont invisibles, ce sont des nuds qui reprent
simplement les origines des ches dans le texte L
A
T
E
X.
164 CHAPITRE 9. COMPLMENTS TECHNIQUES
Cette gure est un paralllogramme.

Ce point est le milieu des diagonales de ce paralllogramme.


Les extrmits des ches sont des nuds situs dans quatre gures TikZ
direntes et nomms :
(figure) pour le point situ entre le mot "gure" et le mot "est" de la premire
ligne de texte
(parallelogramme) pour le sommet nord-ouest du paralllogramme
(centre) pour le centre du paralllogramme
(point) pour le point situ entre le mot "point" et le mot "est" de la ligne de
texte qui suit la gure
On veut pouvoir dessiner les ches avec les instructions suivantes :
\draw [->] (figure) to[bend right,thick] (parallelogramme);
\draw [->] (point) to[bend left,thick,dashed] (centre);
Deux questions se posent :
comment peut-on dnir les nuds (figure) et (point) ?
comment partager des noms de nuds entre direntes gures ?
(en eet, on sait que dhabitude la porte dun nom est limite la gure
dans laquelle il est dni)
9.3.1 Dnitions globales des noms : remember picture
Pour dnir le nud (figure) il faut insrer une gure TikZ entre le mot
"gure" et le mot "est" de la premire ligne de texte, et pour rendre la porte
de ce nom globale il faut ajouter loption [remember picture]
Cette figure \tikz[remember picture]\coordinate(figure); est un
On procde de mme pour le nud (point) :
Ce point \tikz[remember picture]\coordinate(point); est le milieu
Ces deux gures TikZ ne dessinent rien sur les lignes de texte. Cest pour
cela quon les a appeles gures invisibles.
La gure elle-mme ne pose pas de problme. On a simplement dni deux
points, le centre (centre) et le point (parallelogramme) le sommet en haut
gauche du paralllogramme, et pour rendre la porte de ces noms globale il
faut aussi ajouter loption [remember picture]
9.3. LIAISONS ENTRE FIGURES : OVERLAY 165
\begin{tikzpicture} [remember picture]
\draw (-3,-2)--(3,2) (-2,1)--(2,-1);
\draw[thick] (-3,-2)--(2,-1)--(3,2)--(-2,1)--cycle;
\node (centre) at (0,0){$\bullet$};
\node (parallelogramme) at (-2,1){};
\end{tikzpicture}
9.3.2 Dessiner dune gure lautre : overlay
Les ches sont ensuite dessines par dessus la gure et le texte dans une
nouvelle gure dnie avec les deux options [remember picture,overlay]. La
premire, remember picture, indique quil faut utiliser les noms globaux, la
seconde, overlay, indique que la gure sera dessine en surimpression sur la
page. Le code suivant peut tre plac nimporte o, condition que ce soit
aprs la dnition des noms utiliss :
\begin{tikzpicture}[remember picture,overlay]
\draw [->] (figure) to[bend right,thick] (parallelogramme);
\draw [->] (point) to[bend left,thick,dashed] (centre);
\end{tikzpicture}
Attention : La mise en place dune gure avec les options overlay et
remember picture exige au moins deux compilations du texte source.
En gnral, aprs la premire compilation les parties dnies avec loption
overlay sont mal places sur la page, il ne faut pas sen inquiter, le rsultat
satisfaisant sera obtenu aprs une autre compilation.
9.3.3 La page courante est un nud : current page
TikZ fournit un nom de nud spcial current page qui donne accs la
page courante sous la forme dun rectangle qui reprsente la page complte.
Cest un rectangle dont chaque sommet a pour cordonnes un des coins de la
page. On peut donc partir de ce nud dnir nimporte quelle position absolue
sur la page courante.
On peut par exemple crire TikZ au centre de la page avec le code suivant :
\begin{tikzpicture}[remember picture,overlay]
\node [rotate=60,scale=10,text opacity=0.3]
at (current page.center) {Ti\textit{k}Z};
\end{tikzpicture}
T
i
k
Z
Attention : Il est parfois dicile de comprendre quelle est la page courante,
car la mise en page est faite automatiquement par L
A
T
E
X.
Si le dessin ne se situe pas dans la page prvue, on peut essayer de dplacer
le code de la gure dans le texte source, ou forcer un saut de page laide de la
commande \newpage, et compiler nouveau deux fois.
166 CHAPITRE 9. COMPLMENTS TECHNIQUES
9.4 Rsum
On a ajout ici des prcisions sur lutilisation de lenvironnement scope qui
permet dinsrer une sous-gure dans une gure. Leet des options xshift,
yshift, shift, scale et rotate sur lpaisseur des traits et sur les annotations
textuelles a t tudi en dtail.
On a prsent, sur un exemple simple, quelques uns des outils de base que
TikZ fournit spciquement pour la construction de graphe de type arbre.
On a aussi montr comment il est possible dcrire nimporte o sur une
page et crer des liens entre direntes gures dnies et le textes du document
laide des options remember picture et overlay.
Annexe A
La syntaxe de TikZ
La syntaxe de TikZ admet de nombreuses constructions spcialises, avec
parfois des raccourcis et des exceptions, et il peut tre dicile de sy retrouver.
Pour cela il peut tre bon de classer les formes syntaxiques en grandes catgo-
ries : environnements, commandes, options, oprations de chemin, coordonnes.
Toutes ces catgories se retrouvent dans lexemple suivant, qui trace un tri-
angle en pointills :
\begin{tikzpicture}
\draw [dashed] (0,0) node[below]{O} -- (1,1) -- (2,0) -- cycle;
\end{tikzpicture}
O
{tikzpicture} est un environnement, \draw est une commande, [dashed]
est une option, (0,0) est un couple de coordonnes, node est une opration de
chemin avec une option [below] et un argument {O}, -- est une opration de
chemin avec un argument (1,1) , -- cycle est aussi une opration de chemin.
A.1 Les environnements : {tikzpicture}, {scope}
TikZ ne dnit que deux environnements au sens de L
A
T
E
X : {tikzpicture}
et {scope}. Le premier est utilis chaque fois quon veut insrer une gure TikZ
dans un document L
A
T
E
X, le deuxime peut tre utilis lintrieur du prcdent
pour dnir un contexte ayant ses propres options graphiques.
A.2 Les commandes
Ce sont des commandes au sens de L
A
T
E
X, qui se reconnaissent ce quelles
commencent par le caractre \.
167
168 ANNEXE A. LA SYNTAXE DE TIKZ
Commandes utilisables dans tout le document
Certaines commandes peuvent tre utilises dans le document L
A
T
E
X en de-
hors de lenvironnement {tikzpicture}.
Ce sont :
\usetikzlibrary
Pour charger au dbut du document les bibliothques TikZ ncessaires,
comme arrowtips, patterns ou calc.
Exemple : \usetikzlibrary{patterns, arrowtips}
\tikzset
Pour dnir des options globalement dans tout le document.
Exemple : \tikzset{rougegris/.style={draw=gray,fill=red}}
Applique un nud, cette option encadrera le nud en gris et coloriera
lintrieur en rouge. Exemple : node[rougegris]{texte}
La commande \tikzset peut aussi tre utilise lintrieur dun environ-
nement {tikzpicture}. Son eet sera alors limit cet environnement.
\tikzstyle
Cest lancienne forme de la commande \tikzset. Elle reste toujours uti-
lisable, sous la forme \tikzstyle{rougegris}=[draw=gray,fill=red]
\tikz
Cest lquivalent de lenvironnement {tikzpicture} pour les gures dont
le code est court (un paragraphe au plus).
Exemple : \tikz \draw (0,0) circle (1); pour tracer un cercle centr
lorigine et de rayon 1.
\foreach
Cest une instruction de programmation rendue disponible dans tout le do-
cument ds le chargement de TikZ. Elle permet dexcuter des instructions
de manire rpte (au sens informatique, cest une boucle). Exemple :
\foreach \x in {1,2,3} {$x=\x$, } donne :
x = 1, x = 2, x = 3,
La commande peut tre utilise aussi lintrieur dun environnement
{tikzpicture}. Exemple, pour tracer cinq cercles concentriques :
\tikz \foreach \r in {1,2,...,5} \draw (0,0) circle (\r mm);
Commandes dans lenvironnement {tikzpicture}
Les autres commandes ne peuvent tre utilises qu lintrieur dun envi-
ronnement {tikzpicture}. Les principales sont :
\clip, \coordinate, \draw, \fill, \filldraw, \node, \path
A.3. LES COORDONNES 169
A.3 Les coordonnes
A.3.1 Forme gnrale : (...)
Syntaxiquement, la position dun point est indique par une expression de
coordonnes, comme (x,y) (coordonnes cartsiennes) ou (a:r) (coordonnes
polaires) ou (nom) (point nomm), ou (nom.ancre) (ancre dun noeud, comme
(n.north)), ou ++(x,y) (coordonnes relatives la position du crayon).
Il y a dautres formes, mais dune manire gnrale, une expression de coor-
donnes scrit entre parenthses.
A.3.2 Calculs sur les nombres : package pgfmath
Depuis la version 2 de TikZ, il est possible dcrire des calculs portant sur
les nombres grce au package pgfmath, qui est charg automatiquement avec
TikZ. Les formules de calcul disponibles sont celles quon peut utiliser pour le
trac de courbes avec lopration plot.
Dans une expression de coordonnes, on peut utiliser ces calculs :
({sqrt(3)/2},1/2) dsigne le point de coordonnes

3
2
,
1
2

Comme on le voit, si le calcul utilise des parenthses, il faut lencadrer par


des accolades.
A.3.3 Calculs sur les coordonnes : bibliothque calc
Une autre sorte de calcul est rendue possible avec le chargement de la
bibliothque calc. Contrairement au package \pgfmath, dont le chargement
est automatique et implicite, le chargement de calc doit tre explicite, avec
\usetikzlibrary{calc}. Nous navons pas parl dans cet ouvrage des possibi-
lits oertes par calc. Se rfrer au manuel ociel : 12.4 Coordinate Calculations
page 113.
Avec cette bibliothque, il est possible de faire des calculs portant direc-
tement sur les couples de coordonnes (par exemple faire la somme de deux
couples, faire le produit dun nombre par un couple). Mais cela introduit une
syntaxe spciale : les calculs de ce type doivent tre crits entre les symboles ($
et $), comme ($ (1,2) + (3,4) $).
En plus de ces calculs avec des oprations mathmatiques, cette syntaxe
permet deectuer de manire interne les calculs lis des constructions gom-
triques :
Point de tangence de la tangente mene dun point un cercle,
Barycentre de plusieurs points, combinaisons linaires
Point dintersection de deux segments
Image dun point par une similitude directe dont on donne le centre, le
rapport et langle
Projection orthogonale dun point sur un segment
Point une distance donne dun autre sur un segment
Ces possibilits peuvent tre intressantes pour viter davoir calculer par
soi-mme des coordonnes. En ceci, elles rapprochent TikZ dun logiciel de
construction gomtrique comme GeoGebra.
170 ANNEXE A. LA SYNTAXE DE TIKZ
Cependant, la syntaxe de ces instructions est souvent un peu sotrique et
manque dunit. Voici un exemple tir du manuel : ($(1,1)!.5!60:(2,2)$)
dsigne limage du point (2,2) par la similitude directe de centre (1,1), de
rapport 0.5 et dangle 60.
Si le seul but est dviter les calculs, on peut aussi le faire en utilisant Geo-
Gebra ou un logiciel de calcul formel comme logiciel auxiliaire. Mais cela ge
le rsultat des calculs et il faut tout recommencer ds quon veut changer une
coordonne quelque part.
A.4 Les oprations de chemin
Ce sont les oprations quon peut crire dans les commandes qui dnissent
des chemins ou qui agissent sur des chemins , comme dans
\draw, \fill, \filldraw, \path, \clip.
Syntaxe opration argument
La plupart des oprations ont une syntaxe de la forme opration argument, o
opration est le nom de lopration et argument est largument. La syntaxe pour
largument dune opration dpend de cette opration. La plupart des arguments
sont simples (un couple de coordonnes ou un nom de nud), except pour plot
et child (cette dernire tant rcursive).
La seule opration qui na pas de nom est lopration de positionnement
explicite, quon utilise au dbut dun chemin pour xer la position du crayon :
elle a seulement un argument, qui est la position en question.
Dans lexemple suivant, les expressions dsignant des oprations ont t en-
cadres :
\draw (0,0) -- (1,1) circle (1) ;
La premire est lopration de positionnement explicite du crayon en (0, 0),
la deuxime celle de trac dun segment, la troisime celle de trac dun cercle.
Aprs chaque opration, la position du crayon est ractualise
(0, 0)
(1, 1)
Cette opration de positionnement peut tre utilise plusieurs fois dans un
mme chemin. Dans ce cas-l, le chemin peut tre en dirents morceaux non
connects. Par exemple :
\draw (0,0) -- (1,1) (2,2) -- (3,3);
Il y a deux positionnements explicites (0, 0) et (2, 2). Le chemin est form
de deux segments non connects. Cette possibilit est utiliser avec prudence,
elle rend le code plus dicile interprter. Il vaudrait mieux crire :
\draw (0,0) -- (1,1);
\draw (2,2) -- (3,3);
A.5. LES OPTIONS 171
Cest un peu plus long crire, mais plus clair et plus modulaire. Cepen-
dant, un avantage de regrouper les oprations en un seul chemin est de pouvoir
factoriser les options graphiques en un seul endroit, dans la commande \draw.
Principales oprations
Les principaux symboles ou noms doprations sont :
--, -|, |-, --cycle
rectangle, circle, arc, grid, plot, --plot, to
Les oprations se rapportant aux nuds sont spciales :
node, edge, child
On crit ces dernires lintrieur dun chemin, mais ce quelles dnissent
nest pas considr comme un lment du chemin. Cette distinction est impor-
tante pour lordre du trac (les noeuds sont tracs aprs le reste), les remplis-
sages avec fill et la fermeture des rgions avec --cycle (les noeuds ne font
pas partie de la rgion remplir).
Il existe quelques autres oprations dont nous navons pas ou peu parl :
..controls and .., ellipse, parabola, sin, cos, let
A.5 Les options
Les options explicites : [...]
Syntaxiquement on crit les options entre crochets, spares par des virgules.
La spcication dune option peut prendre plusieurs formes, dont les principales
sont [cl] et [cl=valeur] .
Elles peuvent sappliquer tout un environnement {tikzpicture}, un
environnement {scope}, un chemin utilis par \draw, \fill, \clip,
\filldraw, ou \path, et la plupart des oprations de chemin, par exemple
node, to ou grid.
Exemple :
\begin{tikzpicture} [scale=0.75]
\draw [gray, very thin] (-2,-2) grid [step=0.5cm] (2,2);
\draw (0,0) node [below, fill=white] {$O$} node{$\bullet$};
\draw [dashed,red,thick] (0,0) circle(1);
\end{tikzpicture}
O

172 ANNEXE A. LA SYNTAXE DE TIKZ


Les options implicites : raccourcis
Le mcanisme qui interprte les options est dni par le package pgfkeys,
charg automatiquement avec TikZ, et qui peut tre utilis en dehors de TikZ.
Ce mcanisme comporte des possibilits dabstraction, dabrviations et de va-
leurs par dfaut qui sont souvent pratiques, mais qui peuvent sembler parfois
mystrieuses et entraner des confusions, dautant plus que certains raccourcis
peuvent aussi tre obtenus laide de commandes qui cachent le mcanisme
doptions.
Exemple : coordinate
Un bon exemple est donn par le mot-cl coordinate permettant dattribuer
un nom symbolique un point ou un nud.
On le rencontre sous direntes formes : comme commande, comme opra-
tion de chemin, comme cl doption, comme valeur doption.
Voici dirents exemples ayant pour eet de nommer (o) lorigine du repre :
commande : \coordinate (o) at (0,0);
opration de chemin : \path (0,0) coordinate (o);
cl doption : \path (0,0) node [coordinate] (o);
valeur doption : \path (0,0) node [shape=coordinate] (o);
En fait, le vrai concept de coordinate est le dernier : cest une va-
leur possible de loption shape pour un nud. Dire que shape a pour valeur
coordinate signie que le noeud na pas dtendue, et donc quil peut tre vu
comme un simple point, et donc quil peut servir reprer les coordonnes de
ce point.
Mais penser ce concept en ces termes est un niveau de dtail technique un
peu compliqu pour lusage habituel, qui consiste seulement donner un nom
un point. Cest pour cela que le langage ore les autres possibilits, qui se
ramnent toutes de manire interne dire quil y a un nud (parfois implicite)
dont loption shape a pour valeur coordinate.
Exemple : draw
Pour tracer un chemin, on utilise habituellement la commande \draw. Mais
ce nest quun raccourci pour dire que loption draw du chemin a pour valeur
une certaine couleur (la couleur actuellement en vigueur, cest--dire la valeur
de loption color).
Autrement dit, le mot-cl draw indique une option de couleur plutt que
rellement une instruction demandant de dessiner. Mais, dans le mcanisme
interne, le fait de spcier cette couleur a pour consquence de rendre le trac
eectif.
Exemple :
\begin{tikzpicture} [scale=0.4]
\draw [red] (0,0) circle (1) ; % 1 trace en rouge
\path[color=blue] (0,0) circle (2); % 2 ne trace pas
\path[color=blue,draw] (0,0) circle (3); % 3 trace en bleu
\path[color=blue,draw=green] (0,0) circle (4);% 4 trace en vert
\path [draw=gray] (0,0) circle (5); % 5 trace en gris
\end{tikzpicture}
A.6. UTILISER DES COMMANDES L
A
T
E
X DANS TIKZ 173
1 2 3 4 5
On constate cette occasion que la commande de base pour un chemin est
\path, qui se contente de dnir un chemin, mais ne le trace pas forcment. Les
autres commandes de chemin, comme \clip, \draw, \fill ne sont en fait
que des raccourcis qui se ramnent de manire interne la commande \path,
en aectant certaines options.
A.6 Utiliser des commandes L
A
T
E
X dans TikZ
TikZ est une extension de L
A
T
E
X. Bien quil dnisse ses propres rgles syn-
taxiques, il peut quand mme bncier de certains mcanismes de L
A
T
E
X, en
particulier lutilisation de commandes vues comme des macros de remplacement
de texte.
La manuel ne prcise pas exactement ce qui est possible ou pas, mais lex-
prience et les exemples montrent quil est possible de dnir ses propres com-
mandes comme abrviations pour engendrer des parties du texte source.
Par exemple, on peut dnir une commande qui trace un triangle quilatral
de ct 1 dont un sommet est (0, 0) et dont un ct est dirig suivant langle po-
laire donn en paramtre #1. On utilise loption rotate pour tourner le triangle
dans la direction voulue.
\newcommand{\triangleE}[1]
{\draw[rotate=#1] (0,0) -- (1,0) -- (1/2, {sqrt(3)/2}) -- cycle;}
Si on a plusieurs triangles de ce type tracer, cela vite davoir crire
chaque fois le code dtaill :
\begin{tikzpicture}
\triangleE{10}
\triangleE{90}
\triangleE{200}
\end{tikzpicture}
10
90
200
On voit donc qu lintrieur dun environnement {tikzpicture}, il est pos-
sible dutiliser une commande dnie ailleurs. Cette commande sera dveloppe
sous forme de code source TikZ et sera ensuite interprte par TikZ.
Annexe B
Erreur ! Que faire ?
Soyons optimistes, on suppose ici que le lecteur sait dj comment corriger
les erreurs qui peuvent survenir lors de la rdaction dun document L
A
T
E
X.
On signale simplement ici les principales sources derreurs typiques de TikZ.
Lors dune erreur de compilation, il faut dabord consulter les dernires lignes
aches sur la console. On appelle console la fentre dans laquelle sont achs
les messages de compilation et les messages derreur.
On va signaler ici les messages les plus frquents provoqus par les erreurs
dans TikZ et qui doivent attirer lattention.
On va expliquer leur origine et comment corriger les erreurs.
Oubli du ;
Si on voit le message suivant :
! Package tikz Error; Giving up on this path.
Did you forget a semicolon?.
Cest lerreur la plus frquente quand on commence utiliser TikZ. Toute
commande TikZ se termine par un point-virgule que lon oublie souvent.
La correction est facile.
Les nombres trop grands
Si on voit le message suivant :
! Dimension too large.
<recently read> \pgf@xx
Ce message est suivis du numro dune ligne contenant en gnral des coor-
donnes trop grandes. En eet, dans TikZ, il vaut mieux limiter les coordonnes
des points des valeurs comprises entre 500 et +500.
Il sut donc de concevoir le dessin de faon maintenir les coordonnes de
tous les points de la gure dans un intervalle plus limit.
174
175
Le ! dans la dnitions des couleurs
Si on voit le message suivant :
! Missing \endcsname inserted.
<to be read again>
\penalty
Ce message assez mystrieux est suivi du numro dune ligne qui contient en
gnral une option de couleur comme par exemple : \draw[red!50]...
Le responsable de lerreur est ici le ! et le raccourci dans la dnition de
la couleur du trac.
On corrige lerreur en vitant le raccourci : \draw[color=red!50]...
Le problme de babel franais et de :
Si on voit le message suivant :
! Paragraph ended before \tikz@plot@samples@recalc was complete.
<to be read again>
\par
ou le message suivant :
! File ended while scanning use of \tikz@plot@samples@recalc.
< inserted text >
\par
Ces messages assez mystrieux sont suivis du numro dune ligne contenant
en gnral une commande \plot avec une option [domain=a:b]. Cest le deux-
points qui est responsable de lerreur.
Le plus simple, pour corriger cette erreur, est dajouter ds le dbut de
lenvironnement {tikzpicture} la commande \shorthandoff{:}
Mais on peut aussi voir le message suivant :
! Argument of \tikz@plot@samples@recalc has an extra }.
<inserted text>
\par
Ceci peut se produire si lenvironnement {tikzpicture} est insr dans une
commande \fbox. Dans ce cas la commande \shorthandoff{:} doit tre place
lextrieur de la commande \fbox, ainsi :
{\shorthandoff{:}
\fbox{\begin{tikzpicture}
\draw plot[domain=-2:5] (\x,\x/5);
\end{tikzpicture}}}
Ce problme dincompatibilit des packages tikz et babel franais est tudi
en dtail dans le chapitre "Courbes".
176 ANNEXE B. ERREUR! QUE FAIRE?
Il semble que dans la prochaine version de TikZ & PGF qui est actuellement
en cours de dveloppement, ce problme sera corrig.
Un package rcent, microtype, permet de rsoudre le problme globalement
de faon simple.
Il sut dajouter :
\usepackage[babel=true,kerning=true]{microtype} aprs la dclaration
dutilisation du package babel.
Ainsi le caractre : ne semble plus poser de problme.
Annexe C
O trouver de laide ?
Un site Internet, cr par les auteurs, accompagne ce livre. On y trouvera le
code de tous les exemples prsents ici, plus quelques complments.
partir du site, il est aussi possible de contacter les auteurs : Toutes les
questions, toutes les critiques et toutes les suggestions sont les bienvenues.
http://math.et.info.free.fr/TikZ/index.html
Livres lire
On trouve sur Internet la documentation de lauteur Till Tantau :
TikZ & PGF Manual for Version 2.00
http ://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf
Ce document au format PDF de 560 pages est une rfrence trs complte,
mais reste dun abord un peu dicile...
Si vous tes plutt dbutant en L
A
T
E
X, nous vous conseillons en particulier
chez lditeur H&K : L
A
T
E
X pour limpatient . La lecture pralable de cet
ouvrage remarquable, simple, mais cependant trs complet vous sera trs utile :
http ://www.h-k.fr/liens/tp/latex_pour_impatient.htm
Autres liens vers Internet
En anglais
Lauteur de TikZ est Till Tantau qui a aussi cr pour L
A
T
E
X le package
Beamer qui permet de raliser des prsentation sous forme de diaporama.
http://www.tcs.uni-luebeck.de/mitarbeiter/tantau/
On trouvera sur le site T
E
Xample.net des exemples proposs par lauteur et
concernant de trs nombreux domaines :
http://www.texample.net/tikz/examples/author/till-tantau/
En franais
Allez sur le site Altermundus : http://www.altermundus.fr/
Vous y trouverez aussi de nombreux exemples :
http://www.altermundus.fr/pages/pdflatex/tikz.html
177
Annexe D
Glossaire
Ce glossaire contient la liste alphabtique des commandes, oprations et
options du langage TikZ utilises dans ce livre et brivement commentes.
Pour chaque item il y a une rfrence la documentation de Till Tantau
dans laquelle cet item est dni. Cette rfrence est donne sous la forme : Titre
de la section, numro de la section et page.
TikZ & PGF Manual for Version 2.00
http ://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf
Conventions dcriture
Dans langage de TikZ, le mme mot peut souvent reprsenter des lments
syntaxiques distincts. Pour aider comprendre les nombreux raccourcis et les
variations syntaxiques on notera dans ce glossaire les lments dirents ainsi :
les commandes prxes par une contre-oblique, ainsi : \draw
les coordonnes ou les noms entre parenthses, ainsi : (x,y) (a:r) (P)
les options entre crochet, ainsi : [above]
les environnements entre accolade, ainsi : {scope}
les oprations de chemin et autres mots cls, ainsi : arc west
les concepts prsents dans ce livre, ainsi : chemin
Liste alphabtique
-- (The Line-To Operation 13.2 page 118)
-- est le symbole de lopration qui trace un segment sous la forme :
\draw (a,b) -- (c,d); du point (a,b) au point (c,d)
On peut aussi obtenir un trac en lignes horizontales et verticales avec |-
ou -| ou des lignes courbes avec to ou .. controls and ..
[->] (Graphic Parameters : Arrow Tips 14.3.4 page 134)
Cest une option graphique applicable un trait ou un chemin, pour des-
siner une pointe de che place lextrmit du trait.
Exemple : \draw [->] (a,b) -- (c,d); Dirents styles de pointes de
ches sont possibles, comme par exemple |->, *-o, |<->>, [-( ou ->>.
178
179
On peut changer aussi le dessin des pointes avec lotpion >= suivie de
latex ou stealth.
(x,y), (x,y,z), (a:r), (P) (Specifying coordinates 12 page 103)
TikZ propose plusieurs faons dexprimer les coordonnes des points :
(x,y) coordonnes cartsiennes 2 dimensions
(x,y,y) coordonnes cartsiennes 3 dimensions
(a:r) coordonnes polaires angle et distance au centre
(P) coordonnes du nud dont le nom (P) a t dni par exemple avec :
\draw (x,y) node(P){Texte}; ou \coordinate (P) at (x,y);
++(x,y) (Relative and Incremental Coordinates 12.3 page 112)
++ est le symbole qui prcde des coordonnes pour indiquer que celles-ci
doivent tre considres comme relatives au point prcdent.
\draw (4,3) -- ++(1,3); quivalent \draw (4,3) -- ++(5,6);
[above], [above left], [above right] (Positioning Nodes 15.5 page 154)
Options de placement des nuds. (Voir : node)
arbre (Making Trees Grow 17 page 183)
(Voir : child)
arc (The Arc Operation 13.8 page 121)
arc est lopration de chemin qui trace un arc sous la forme :
\draw (x,y) arc (d:f:r); partir du point (x,y) un arc de rayon r
dont le rayon origine forme un angle de d avec lhorizontale et le rayon
extrmit un angle de f avec lhorizontale.
[below], [below left], [below right] (Positioning Nodes 15.5 page 154)
Options de placement des nuds. (Voir : node)
[bend left], [bend right] (Curves 40.2 page 367)
Options pour xer la courbure dun ligne. (Voir : to)
[bottom color=], [top color=] (Choosing a Shading Color 14.5.2 page 140)
Options pour xer les couleurs de dgrads. (Voir : \shade)
[text centered] (Options for the Text in Nodes 15.4 page 152)
Option de mise en forme de texte. (Voir : node)
chemin (Actions on Paths 14 page 130)
(Voir : \path ou \draw)
child (Making Trees Grow 17 page 183)
child est une opration place la suite dune opration node qui permet
de dnir un ls du noeud dans une structure darbre.
De nombreuses options sont disponibles pour contrler les dimensions
de larbre comme sibling distance ou level distance ou la direction
dans laquelle il se dveloppe comme grow.
180 ANNEXE D. GLOSSAIRE
On peut aussi tiqueter les nuds laide de edge from parent et des-
siner les arcs entre les nuds avec edge from parent path .
circle (The Circle and Ellipse Operations 13.7 page 121)
circle est lopration de chemin qui trace un cercle sous la forme :
\draw (x,y) circle (r); de centre (x,y) et de rayon (r).
On peut aussi tracer une ellipse en donnant les rayons sur les deux axes
sous la forme \draw (x,y) circle (r and s);
[circle] (Nodes and Their Shapes 15.2 page 147)
Abrviation de [shape=circle] xe la forme dun nud. (Voir : node)
\clip (Clipping and Fading : Soft Clipping 14.7 page 142)
\clip... est la commande qui restreint la rgion dachage. Tous les
dessins qui suivent cette commande seront limits cette rgion.
[color=] (Specifying a Color 14.2 page 131)
Option pour dnir la couleur. (Voir : \draw, \fill, node ou {scope})
.. controls and .. (The Curve-To Operation 13.3 page 119)
(A) ..controls (U) and (V) .. (B) trace une courbe de Bzier entre
le point (A) et le point (B), les tangentes en (A) et (B) tant respective-
ment dtermines par les points de contrles (U) et (V).
[coordinate] (Nodes and Their Shapes 15.2 page 146)
Abrviation de [shape=coordinate] qui xe la forme dun nud.
Cest une forme de nud spciale, de dimension nulle, qui permet de
considrer le nud comme un simple point et de le nommer pour un
usage ultrieur. (Voir : node)
\coordinate (Nodes and Their Shapes 15.2 page 146)
\coordinate (A) at (x,y); est la forme abrge de la commande qui
permet de nommer et de placer un nud de dimension nulle :
\path (x,y) coordinate (A); ou
\draw (x,y) node[coordinate] (A){}; ou
\node (A) at (x,y) node[shape=coordinate]{};
--cycle (The Cycle Operation 13.4 page 119)
--cycle; est lopration de n de chemin qui consiste relier le dernier
point au premier.
(current page) (Referencing the Current Page Node 15.13.2 page 170)
Nud spcial qui reprsente la page entire. (Voir : [overlay])
[dashed] (Graphic Parameters : Dash Pattern 14.3.2 page 134)
Option de style pointill en tirets. (Voir : \draw)
[diamond] (Nodes and Their Shapes 15.2 page 147)
Abrviation de [shape=diamond] xe la forme dun nud. (Voir : node)
181
[domain=] (Plotting a Function 18.5 page 194)
Option pour le domaine de dnition dune fonction. (Voir : plot)
[dotted] (Graphic Parameters : Dash Pattern 14.3.2 page 134)
Option de style pointill. (Voir : \draw)
[double] (Graphic Parameters : Double Lines 14.3.5 page 136)
Option de style de trait double. (Voir : \draw)
\draw (Drawing a Path 14.3 page 131)
\draw... est la commande qui permet tracer un chemin.
De nombreuses options permettent de prciser le mode de trac. On peut
xer lpaisseur des traits avec thin, thick, line width=, le type de trait
avec dashed, dotted, double etc.
east (Positioning Nodes Using Anchors 15.5.1 page 154)
Option dancrage [anchor=east] dun nud. (Voir : node)
.east (Positioning Nodes Using Anchors 15.5.1 page 154)
Pour la rfrence (P.east) point dancrage un nud. (Voir : node)
edge from parent (Edges From the Parent Node 17.6 page 191)
Opration daccs au parent dun nud dans un arbre. (Voir : child )
edge from parent path, (Edges From the Parent Node 17.6 page 191)
Style pour dnir les arcs dans un arbre. (Voir : child )
[ellipse] (Nodes and Their Shapes 15.2 page 147)
Abrviation de [shape=ellipse] xe la forme dun nud. (Voir : node)
[even odd rule] (Interior Rules 14.4.2 page 138)
Rgle de dnition de rgion. (Voir : \clip ou \fill)
gure (Creating a Picture 11.2 page 96)
(Voir : {tikzpicture} \tikz)
\fill (Filling a Path 14.4 page 136)
\fill... est la commande qui colorie la rgion limite par un chemin.
La couleur du coloriage peut tre prcise avec par exemple :
\draw[fill=red]... ou aussi \fill[color=red]... On peut aussi
obtenir des eets de transparence avec loption opacity.
Il existe deux rgles pour dnir le mode de coloriage des rgions limites
par un chemin : nonzero rule, par dfaut ou even odd rule
\filldraw (Drawing a Path 14.3 page 131) (Filling a Path 14.4 page 136)
\filldraw.. est la forme abrge de la commande \path[fill,draw]..
qui permet de tracer le chemin et colorier la rgion. (Voir : \fill et \draw)
\foreach (The Foreach Statement 44 page 389)
La commande \foreach sutilise sous la forme :
\foreach <variables> in <liste> <commandes>
182 ANNEXE D. GLOSSAIRE
<variables> est une ou plusieurs commandes L
A
T
E
X spares par des
barres. Exemples : \x ou \x/\y/\z
<liste> est une liste de valeurs spares par des virgules :
Exemples : {2,texte,0.5} ou avec 3 variables {1/un/I,5/cinq/V}
<commandes> sont des instructions qui contiennent la ou les variables
et qui seront excutes de faon rptitive en donnant aux variables
successivement les valeurs fournies dans la liste.
grid (The Grid Operation 13.9 page 121)
grid est lopration de chemin consistant tracer un quadrillage (grille).
La forme dutilisation la plus simple est \draw (A) grid (B); qui trace
une grille dont (A) et (B) sont deux sommets dune diagonale.
Le pas de la grille peut tre x avec les options step, xstep ou ystep
[grow=] (Default Growth Function 17.5.2 page 187)
Option pour xer la direction de croissance dun arbre. (Voir : child)
[in=], [out=] (Curves 40.2 page 367)
Options pour xer la courbure. (Voir : to)
[text justified] (Options for the Text in Nodes 15.4 page 152)
Option de mise en forme de texte. (Voir : node)
latex (Arrow Tip Library 22 page 224)
Style de pointe de che, [>=latex]. (Voir : ->)
[left], [right] (Positioning Nodes 15.5 page 154)
Options de placement des nuds. (Voir : node)
[level distance=] (Default Growth Function 17.5.2 page 187)
Option pour xer lcart entre les niveaux dans un arbre. (Voir : child)
[line width=] (Graphic Parameters : Line Width 14.3.1 page 132)
Option pour xer lpaisseur du trait. (Voir : \draw)
[mark=] (Placing Marks on the Plot 18.7 page 198)
Option pour marquer les points dune courbe avec *,+,x. (Voir : plot)
[midway] (Placing Nodes on a Line or Curve Explicitly 15.8 page 161)
Options pour placer des nuds sur une ligne. (Voir : -- ou to)
[minimum size] (Creating Nodes 59.2 page 474)
Ou aussi [minimum width] et [minimum height]
Options pour xer les dimensions dun nud. (Voir : node)
[near end] (Placing Nodes on a Line or Curve Explicitly 15.8 page 161)
Options pour placer des nuds sur une ligne. (Voir : -- ou to)
[near start] (Placing Nodes on a Line or Curve Explicitly 15.8 page 161)
Options pour placer des nuds sur une ligne. (Voir : -- ou to)
183
nud (Nodes and Edges 15 page 146)
(Voir : node ou \node)
node (Nodes and Edges 15 page 146)
node est une opration de chemin qui crit un texte L
A
T
E
X, plac par
dfaut dans une bote rectangulaire centre la position du crayon.
Son utilisation de base est \draw (a,b) node {texte};
De nombreuses options sont possibles, pour contrler dirents aspects :
la position : above, below, left, right, above left, etc.
La couleur du texte : node [red] {texte}
La couleur du fond : node [fill=red] {texte}
la forme : circle, rectangle, coordinate
\node (Nodes and Their Shapes 15.2 page 146)
\node (A) at (x,y){Texte}; est la forme abrge de la commande :
\path (x,y) node (A){Texte};
[nonzero rule] (Interior Rules 14.4.2 page 138)
Rgle de dnition de rgion. (Voir : \clip ou \fill)
north (Positioning Nodes Using Anchors 15.5.1 page 154)
Option dancrage [anchor=north] dun nud. (Voir : node)
Autres valeurs, [anchor=north west], [anchor=north east]
.north (Positioning Nodes Using Anchors 15.5.1 page 154)
Pour la rfrence (P.north) point dancrage un nud. (Voir : node)
Autres valeurs, (P.north west), (P.north east)
\newcommand dnition dune commande. (Voir : L
A
T
E
X)
On peut aussi utiliser \def en T
E
X.
[opacity=] (Transparency 19 page 202)
Option pour dnir le niveau de transparence. (Voir : \fill)
[out=], [in=] (Curves 40.2 page 367)
Options pour xer la courbure dune ligne. (Voir : to)
[overlay] (Referencing Nodes Outside the Current Pictures 15.13 page 169)
Loption overlay associe loption remember picture permet de tra-
cer, sur une mme page, des chemins entre des gures dnies dans des
environnements {tikzpicture} distincts.
Il est aussi possible de dessiner nimporte o sur la page en utilisant le
nud spcial (current page) qui reprsente le rectangle de la feuille.
\path (Actions on Paths 14 page 130)
\path... est la commande de base de TikZ qui dnit un chemin.
Toutes les autres commandes en sont des cas particuliers comme :
\clip..., \draw..., \fill..., \filldraw..., \shade..., etc.
184 ANNEXE D. GLOSSAIRE
plot (Plots of Functions 18 page 193)
plot est une opration de chemin qui trace la courbe reprsentative dune
fonction donne par une formule.
On peut prciser le domaine de dnition de la fonction avec loption
[domain=] et le nombre de points calculer avec loption [samples=].
Par exemple : plot[domain=-2:2,samples=50] (\x,2*\x+3)
plot coordinates (Plotting Points Given Inline 18.3 page 194)
plot coordinates est une opration de chemin qui trace une reprsen-
tation graphique dune liste de points.
Par dfaut, une courbe reliant les points est dessine. On peut aussi tracer
des barres, horizontales avec loption [xcomb], verticales avec [ycomb] ou
partir de lorigine avec [polar comb].
On peut aussi marquer les points de la courbe avec loption [mark=].
La liste des coordonnes de tous les points acher est dnie en ligne,
entre accolades.
Par exemple : plot[ycomb] coordinates {(1,2) (3,5) (5,1)}
plot file (Plotting Points Read From an External File 18.4 page 194)
plot file est une opration de chemin qui trace une reprsentation
graphique dune liste de points. (Voir : plot coordinates)
La liste des coordonnes de tous les points acher est dnie un chier
texte dont le nom est donn entre accolades.
Par exemple : plot[mark=*] file {data.txt}
plot function (Plotting a Function Using Gnuplot 18.6 page 196)
plot function est une opration de chemin qui trace la courbe repr-
sentative dune fonction donne par une formule Gnuplot.
La formule est transmise Gnuplot qui va calculer les coordonnes de tous
les points acher. (Voir : plot)
On peut prciser le domaine de dnition de la fonction avec loption
[domain=] et le nombre de points calculer avec loption [samples=].
Par exemple :
plot[domain=-pi:pi,samples=50] function {x+sin(x)}
polar comb (Smooth Plots, Sharp Plots, and Comb Plots 18.8 page 199)
Option pour tracer des barres partir de lorigine. (Voir : plot)
[pos=] (Placing Nodes on a Line or Curve Explicitly 15.8 page 161)
Options pour placer des nuds sur une ligne. (Voir : -- ou to)
rectangle (The Rectangle Operation 13.5 page 120)
rectangle est lopration de chemin consistant tracer un rectangle.
La forme dutilisation la plus simple est \draw (A) rectangle (B); qui
trace un rectangle dont (A) et (B) sont deux sommets dune diagonale.
[rectangle] (Nodes and Their Shapes 15.2 page 147)
Abrviation de [shape=rectangle] xe la forme dun nud. (Voir : node)
185
rgion (Interior Rules 14.4.2 page 138)
Une rgion est limite par un chemin. (Voir : \clip ou \fill)
[remember picture] (Referencing a Node in a Dierent Picture 15.13.1 page
169)
Option qui mmorise les noms des nuds dnis dans des environnement
{tikzpicture} distincts. (Voir : [overlay])
[right], [left] (Positioning Nodes 15.5 page 154)
Options de placement des nuds. (Voir : node)
[rotate=] (Coordinate Transformations 21.3 page 218)
Option pour eectuer une rotation. (Voir : node ou {scope})
[rounded corners=] (Rounding Corners 13.6 page 120)
Option qui arrondit les angles des lignes. (Voir : \draw ou node)
[scale=] (Coordinate Transformations 21.3 page 218)
Option pour eectuer un changement dchelle. (Voir : node ou {scope})
{scope} (Using Scopes to Structure a Picture 11.3 page 99)
Lenvironnement {scope} permet de dessiner une sous-gure et de lui ap-
pliquer globalement direntes transformations ou styles, comme : shift,
scale, rotate, etc.
[samples=] (Plotting a Function 18.5 page 194)
Option qui xe le nombre des points calculer pour une fonction. (Voir :
plot)
\shade (Shading a Path 14.5 page 139)
\shade... est la forme abrge de la commande \path[shade]... qui
permet de colorier la rgion dnie par un chemin avec des eets de d-
grads de couleurs.
Direntes options permettent de prciser le dgrad comme shading ou
les couleurs comme top color ou bottom color.
[shift=], [xshift=], [yshift=] (Coordinate Transformations 21.3 page 218)
Option pour eectuer une translation. (Voir : node ou {scope})
[sibling distance=] (Default Growth Function 17.5.2 page 187)
Option pour xer lcart entre ls dans un arbre. (Voir : child)
[sloped] (Placing Nodes on a Line or Curve Explicitly 15.8 page 161)
Options pour aligner des nuds sur une ligne. (Voir : -- ou to)
[smooth] (Smooth Plots, Sharp Plots, and Comb Plots 18.8 page 199)
Options qui provoque le lissage dune courbe. (Voir : plot)
south (Positioning Nodes Using Anchors 15.5.1 page 154)
Option dancrage [anchor=south] dun nud. (Voir : node)
Autres valeurs, [anchor=south west], [anchor=south east]
186 ANNEXE D. GLOSSAIRE
.south (Positioning Nodes Using Anchors 15.5.1 page 154)
Pour la rfrence (P.south) point dancrage un nud. (Voir : node)
Autres valeurs, (P.south west), (P.south east)
stealth (Arrow Tip Library 22 page 224)
Style de pointe de che, [>=stealth]. (Voir : ->)
[step=], [xstep=], [ystep=] (The Grid Operation 13.9 page 121)
Option pour xer le pas de la grille. (Voir : \grid)
[tension=] (Smooth Plots, Sharp Plots, and Comb Plots 18.8 page 199)
Options qui contrle le niveau lissage dune courbe. (Voir : plot)
[text width=] (Options for the Text in Nodes 15.4 page 152)
Options pour xer mise en forme du texte dun nud. (Voir : node)
[thick], [very thick] (Graphic Parameters : Line Width 14.3.1 page 132)
Option pour xer lpaisseur du trait. (Voir : \draw)
[thin], [very thin] (Graphic Parameters : Line Width 14.3.1 page 132)
Option pour xer lpaisseur du trait. (Voir : \draw)
TikZ (Loading the Package and the libraries 11.1 page 96)
Pour utiliser TikZ, on doit charger le package tikz :
\usepackage{tikz}
Si on veut de plus utiliser des bibliothques additionnelles, il faut les char-
ger explicitement, par exemple :
\usetikzlibrary{arrows,calc}
Ne pas confondre avec \tikz, qui est une commande quivalente lenvi-
ronnement {tikzpicture}
\tikz (Creating a Picture Using a Command 11.2.2 page 98)
Commande brve pour la cration de gure TikZ. (Voir : {tikzpicture})
{tikzpicture} (Creating a Picture Using an Environment 11.2.1 page 96)
On crit les commandes de dessin dans lenvironnement {tikzpicture}
\begin{tikzpicture} ... \end{tikzpicture}
Pour les dessins dont le code tient en un paragraphe, on peut utiliser la
commande brve : \tikz \draw (0,0) -- (1,1);
\tikzset (How Graphic Options Are Processed 11.4.1 page 100)
\tikzset est une commande TikZ qui permet de dnir des options, des
styles ou des cls. Par exemple :
\tikzset{fondRouge/.style={fill=red}}
\tikzstyle (How Graphic Options Are Processed 11.4.1 page 100)
Cest une ancienne commande de la version 1.00 de TikZ & PGF utilise
pour dnir une option de style. Par exemple :
\tikzstyle{fondRouge}=[fill=red]
187
On peut toujours utiliser cette commande dans la version 2.00, mais main-
tenant, on utilisera plutt la commande \tikset
to (The To Path Operation 13.13 page 125)
(A) to (B) est une opration de chemin comme (A)--(B) mais on peut
luis associer des options pour obtenir des lignes courbes, comme : [bend
left], [bend right], [in=] ou [out=]
[top color=], [bottom color=] (Choosing a Shading Color 14.5.2 page 140)
Options pour xer les couleurs de dgrads. (Voir : \shade)
west (Positioning Nodes Using Anchors 15.5.1 page 154)
Option dancrage [anchor=west] dun nud. (Voir : node)
.west (Positioning Nodes Using Anchors 15.5.1 page 154)
Pour la rfrence (P.west) point dancrage un nud. (Voir : node)
[xcomb] (Smooth Plots, Sharp Plots, and Comb Plots 18.8 page 199)
Option pour tracer des barres horizontales. (Voir : plot)
[x=] (The XY- and XYZ-Coordinate Systems 21.2 page 217)
Option qui permet de changer le vecteur unit des X, qui vaut par dfaut :
[x={(1cm,0pt)}] par rapport un repre absolu.
[y=] (The XY- and XYZ-Coordinate Systems 21.2 page 217)
Option qui permet de changer le vecteur unit des Y, qui vaut par dfaut :
[y={(0pt,1cm)}] par rapport un repre absolu.
[ycomb] (Smooth Plots, Sharp Plots, and Comb Plots 18.8 page 199)
Option pour tracer des barres verticales. (Voir : plot)
[z=] (The XY- and XYZ-Coordinate Systems 21.2 page 217)
Option qui permet de changer le vecteur unit des Z, qui vaut par dfaut :
[z={(-0.3535cm,-0.3535cm)}] par rapport un repre absolu.
En eet, les points de lespace sont eectivement achs dans un repre
deux dimensions qui vrie par dfaut :

k =
1
2

i
1
2

j .
Pour obtenir le repre mathmatique franais usuel on peut dnir :
[x={(-0.353cm,-0.353cm)}, z={(0cm,1cm)}, y={(1cm,0cm)}]
% avec \usetikzlibrary{fadings} en prambule pour le dgrad
\newcommand{\Fin}{node[xshift=-1.5ex,rotate=10]{F}
node[rotate=170]{i}
node[xshift=1.5ex,rotate=45]{n}}
\begin{tikzpicture}[scale=10,transform shape]
\draw (0,0) \Fin;
\draw (-1em,-1ex) -- (1em,-1ex);
\path[scope fading=south] (-1em,-0.25em) rectangle (1em,-3.75ex);
\draw[yscale=-1] (0,2ex) \Fin;
\end{tikzpicture}
F
i
n
F
i
n