Académique Documents
Professionnel Documents
Culture Documents
1 Introduction
PGF (Portable Graphics Format) est une extension à LATEX qui permet de créer des dessins à l’aide de
commandes en-ligne. TikZ [2] est une boı̂te à outils frontale à PGF qui offre des fonctions pour simplifier
la vie des utilisateurs. De nombreux exemples de figures réalisées avec TikZ sont disponibles sur Internet
[1]. Elles permettent d’aller plus loin dans l’exploration et l’exploitation des extraordinaires possibilités de
PGF/TikZ.
Utiliser TikZ offre l’avantage de limiter la taille du fichier PDF obtenu en évitant d’avoir à générer des
images (PNG ou JPEG) pour chaque figure et à les insérer dans le fichier. Par contre, il faut connaı̂tre les
commandes TikZ pour pouvoir créer son dessin. Cet article a pour but de vous montrer quelques commandes
pour vous lancer dans l’aventure PGF/TikZ.
Le fichier le plus simple pour utiliser TikZ est le suivant :
\ d o c u m e n t c l a s s [11 p t ]{ a r t i c l e }
\ b e g in {document}
Bla bla bla \ dots
\bigskip
\ b e g in { t i k z p i c t u r e } % f i g u r e TikZ
\draw ( 0 , 0 ) −− ( 1 , 1 ) ;
\end{ t i k z p i c t u r e }
CReSTIC - Univ. de Reims-Champagne-Ardenne - IUT de Troyes
\end{document}
Comme nous allons le voir, la syntaxe de TikZ est très simple. Chaque ligne décrit une opération à réaliser
Jérôme Landré - jerome.landre@univ-reims.fr
\ b e g in { t i k z p i c t u r e }
\draw ( 0 , 0 ) −− ( 1 , 1 ) ;
\end{ t i k z p i c t u r e }
Avec TikZ, on peut ajouter très facilement des propriétés à notre ligne, comme la couleur, le type de
hachure et l’épaisseur.
\ b e g in { t i k z p i c t u r e }
\draw [ c o l o r=blue , dashed , v e r y t h i c k ] ( 0 , 0 ) −− ( 1 , 1 ) ;
\end{ t i k z p i c t u r e }
On peut définir une liste de points à relier ensemble avec leurs propriétés graphiques (couleur, épaisseur. . .)
comme on vient de le voir. le mot-clé cycle à la fin indique à TikZ qu’on repasse par le point de départ et qu’il
faut faire correspondre les coins de la figure à cet endroit.
\ b e g in { t i k z p i c t u r e }
\draw [ c o l o r=red , u l t r a t h i c k ] ( 0 , 0 ) −− ( 0 , 1 ) −− ( 1 , 1 ) −− ( 1 , 0 ) −− c y c l e ;
\end{ t i k z p i c t u r e }
Si on ne met pas le mot-clé cycle, on risque d’avoir une discontinuité dans un coin de la figure. On
remarque un problème de liaison pour le triangle bleu en bas à gauche, le triangle rouge est parfaitement
construit avec cycle.
\ b e g in { t i k z p i c t u r e }[ l i n e width=5p t ]
\draw [ c o l o r=b l u e ] ( 0 , 0 ) −− ( 0 , 1 ) −− ( 0 . 5 , 0 . 5 ) −− ( 0 , 0 ) ;
\draw [ c o l o r=red ] ( 1 , 0 ) −− ( 1 , 1 ) −− ( 1 . 5 , 0 . 5 ) −− c y c l e ;
\end{ t i k z p i c t u r e }
Lorsqu’on utilise plusieurs types d’objets différents dans une même figure, TikZ offre des fonctions de
définition de styles très utiles.
\ b e g in { t i k z p i c t u r e }[ s c a l e =2]
t i k z s t y l e { s t y l e 1}=[ c o l o r=red , t h i c k ]
t i k z s t y l e { s t y l e 2}=[ c o l o r=blue , t h i n , dashed ]
\draw [ s t y l e=s t y l e 2] ( 0 , 0 ) −− ( 0 , 1 ) ;
\draw [ s t y l e=s t y l e 1] ( 0 , 1 ) −− ( 1 , 1 ) ;
\draw [ s t y l e=s t y l e 2] ( 1 , 1 ) −− ( 1 , 0 ) ;
\draw [ s t y l e=s t y l e 1] ( 1 , 0 ) −− ( 0 , 0 ) ;
\end{ t i k z p i c t u r e }
TikZ propose une fonction très utile lorsqu’on débute, l’ajout d’une grille au dessin pour pouvoir plus
facilement se repérer. La même chose que précédemment avec une grille :
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p =0.5cm , c o l o r=green , v e r y t h i n ] ( −0.7 , −0.7) g r i d ( 1 . 7 , 1 . 7 ) ;
\draw ( 0 , 0 ) −− ( 0 , 1 ) −− ( 1 , 1 ) −− ( 1 , 0 ) −− c y c l e ;
\end{ t i k z p i c t u r e }
2
– Coordonnées polaires :
\ b e g in { t i k z p i c t u r e }
y \draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −0.2 , −0.2) g r i d ( 3 . 2 , 3 . 2 ) ;
\draw [−>] ( 0 : 0 ) −− (9 0:3cm ) ;
M (45 :2.82cm) \draw [−>] ( 0 : 0 ) −− ( 0 : 3cm ) ;
\ path ( 0 : 3cm) node [ anchor=n o r t h ] {x } ;
\ path (9 0:3cm) node [ anchor=e a s t ] {y } ;
\draw ( 0 : 0cm) node [ anchor=n o r t h ] {O ( 0 : 0cm ) } ;
\draw ( 4 5 : 2 . 8 2cm) node [ anchor=south ] {M ( 4 5 : 2 . 8 2cm ) } ;
\draw [ c o l o r=red , t h i c k ] ( 0 : 0cm) −− ( 0 : 2cm) −− ( 4 5 : 2 . 8 2cm)
−− c y c l e ;
\end{ t i k z p i c t u r e }
O (0 :0cm) x
Pourquoi le point M a-t-il comme coordonnées polaires (45 :2.82cm) ? Il se trouve sur une droite située à
45 degrés par rapport à l’axe des abcisses (horizontal). Il est sur le triangle rectangle de côtés horizontaux et
verticaux de longueur 2cm. On sait que dans √ un triangle
p rectangle,√l’hypothénuse a pour longueur la somme
des carrés des deux autres côtés, soit l = 22 + 22 = (4 + 4) = 8 ≈ 2.82cm.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −0.2 , −0.2) g r i d ( 3 . 2 , 3 . 2 ) ;
\draw [ c o l o r=b l u e ] ( 0 , 0 ) r e c t a n g l e ( 1 , 0 . 5 ) r e c t a n g l e ( 1 . 5 , 2 ) ;
\draw [ c o l o r=red , dashed , t h i c k ] ( 0 : 2cm) r e c t a n g l e (3 0:3cm ) ;
\end{ t i k z p i c t u r e }
– cercles (circle) : ils sont définis par les coordonnées de leur centre et leur rayon.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −0.2 , −0.2) g r i d ( 3 . 2 , 3 . 2 ) ;
\draw [ c o l o r=gray , v e r y t h i n ] ( 1 . 5 , 1 . 5 ) c i r c l e (1cm ) ;
\draw [ c o l o r=gray , t h i n ] ( 1 . 5 , 1 . 5 ) c i r c l e ( 0 . 5cm ) ;
\draw [ c o l o r=red , dashed ] ( 1 , 1 ) c i r c l e (1cm ) ;
\draw [ c o l o r=red ] ( 2 , 2 ) c i r c l e (1cm ) ;
\end{ t i k z p i c t u r e }
– ellipses (ellipse) : elles sont définies par les coordonnées de leur centre et leurs longueurs grand axe/-
petit axe ainsi que de l’angle de rotation si elles sont tournées.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −0.2 , −0.2) g r i d ( 3 . 2 , 3 . 2 ) ;
\draw [ c o l o r=red , dashed ] ( 1 . 5 , 1 . 5 ) e l l i p s e ( 1 . 5cm and 1 cm ) ;
\draw [ c o l o r=gray , , v e r y t h i c k ] (3 0:1cm) e l l i p s e ( 0 . 3cm and 0 . 9cm ) ;
\draw [ r o t a t e =10, c o l o r=orange ] ( 1 . 5 , 1 . 5 )
e l l i p s e (1cm and 0.25cm ) ;
\end{ t i k z p i c t u r e }
3
– arcs (arc) : ils sont définis par trois paramètres, les deux premiers sont l’angle de départ, l’angle d’ar-
rivée et le dernier est le rayon de l’arc.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −0.2 , −0.2) g r i d ( 3 . 2 , 3 . 2 ) ;
\draw ( 0 : 0cm) −− (1 0:2cm ) ;
\draw ( 0 : 0cm) −− (7 5:2cm ) ;
\draw [ c o l o r=orange , v e r y t h i c k ] (1 0:8mm) a r c ( 1 0 : 7 5 : 8mm) ;
\ path ( 3 2 . 5 : 8mm) node [ anchor=south west ] {$\ alpha $};
\draw [ c o l o r=blue , dashed ] ( 2 , 2 ) a r c ( 3 0 : 6 0 : 2 . 5cm ) ;
\end{ t i k z p i c t u r e }
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , t h i n ] ( −0.2cm, −0.2cm) g r i d ( 2 . 2cm , 2 . 2 cm ) ;
\draw [ c o l o r=blue , t h i n ] ( 0 , 0 ) −− +(1 ,0) −− +(1 ,1);
\draw [ c o l o r=red , dashed , t h i c k ] ( 0 , 1 ) −− ++(1,0) −− ++(1 ,1);
\end{ t i k z p i c t u r e }
Lorsqu’on utilise des points particuliers dans un dessin, on peut stocker leurs coordonnées et y faire
référence dans la suite du dessin (très pratique).
\ b e g in { t i k z p i c t u r e }[ s c a l e =2]
\draw [ s t e p=1cm , c o l o r=green ] ( −1.2cm, −1.2cm) g r i d ( 1 . 2cm , 1 . 2 cm ) ;
\ path ( 0 : 0cm) c o o r d i n a t e (O) ;
\ path ( 0 : 1cm) c o o r d i n a t e ( P 0 ) ;
\ path (1∗60:1cm) c o o r d i n a t e ( P 1 ) ;
\ path (2∗60:1cm) c o o r d i n a t e ( P 2 ) ;
\ path (3∗60:1cm) c o o r d i n a t e ( P 3 ) ;
\ path (4∗60:1cm) c o o r d i n a t e ( P 4 ) ;
\ path (5∗60:1cm) c o o r d i n a t e ( P 5 ) ;
\draw [ c o l o r=b l u e ] ( P0) −− ( P1) −− ( P2) −− ( P3) −− ( P4) −− ( P5)
−− c y c l e ;
\end{ t i k z p i c t u r e }
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , t h i n ] ( −0.2cm, −0.2cm) g r i d ( 1 . 2cm , 1 . 2 cm ) ;
\ path ( 0 , 0 ) node {O} ;
\end{ t i k z p i c t u r e }
O
Le problème de positionner le texte ”O” sur la grille à la position (0,0) est qu’il masque justement cette
position. TikZ fournit une commande d’ancrage des nœuds sous la forme de la propriété ”anchor”.
Ces positions ”anchor” sont indiquées par les points cardinaux : north, south, east, west, north east, north
west, south east, south west. Attention, l’ancrage est effectué en indiquant où se trouve le point d’ancrage par
rapport au texte et non pas le texte par rapport au point d’ancrage. Ainsi pour demander que le texte ”O”
4
associé au point origine du repère de coordonnées (0,0) soit affiché en bas à gauche de ce point, on ajoute
”anchor=north east” (et pas south west) dans les propriétés du nœud.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , t h i n ] ( −0.2cm, −0.2cm) g r i d ( 1 . 2cm , 1 . 2 cm ) ;
\ path ( 0 , 0 ) node [ anchor=n o r t h e a s t ] {O} ;
\end{ t i k z p i c t u r e }
O
Il existe un système très pratique pour gérer les graphes : c’est la définition de nœuds représentant les
éléments du graphe.
SGML
HTML XML
XHTML
\ b e g in { t i k z p i c t u r e }
\ path ( 0 , 0 ) node ( n0) [ c i r c l e , f i l l =yellow , draw , i n n e r sep=5p t ] {SGML} ;
\ path (−2,−2) node ( n1) [ c i r c l e , f i l l =yellow , draw , i n n e r sep=5p t ] {HTML} ;
\ path (2 , −2) node ( n2) [ c i r c l e , f i l l =yellow , draw , i n n e r sep=5p t ] {XML} ;
\ path (0 , −4) node ( n3) [ c i r c l e , f i l l =yellow , draw , i n n e r sep=5p t ] {XHTML} ;
%\ p g f s e t l i n e w i d t h {0.02cm} ;
\draw[−>] ( n0) −− ( n 1 ) ;
\draw[−>] ( n0) −− ( n 2 ) ;
\draw[−>] ( n1) −− ( n 3 ) ;
\draw[−>] ( n2) −− ( n 3 ) ;
\end{ t i k z p i c t u r e }
Afin d’améliorer l’aspect de certains éléments graphiques, il existe de nombreuses librairies associées à
TikZ. Pour les utiliser, il faut ajouter les lignes \usetikzlibrary{...} après la commande \usepackage{tikz}.
\ usepackage { t i k z }
% O p t i o n a l PGF l i b r a r i e s
\ u s e t i k z l i b r a r y { arrows }
\ u s e t i k z l i b r a r y { snakes }
\ u s e t i k z l i b r a r y { shapes }
Par exemple, on peut remplacer les cercles qui entourent les nœuds dans le graphe ci-dessus par des
ellipses (librairie TikZ shapes). On peut aussi améliorer l’aspect des flèches (librairie TikZ arrows) :
SGML
HTML XML
XHTML
5
\ b e g in { t i k z p i c t u r e }
% pgflibraryshapes obligatoire !
\ path ( 0 , 0 ) node ( n0) [ e l l i p s e , f i l l =yellow , draw , i n n e r sep=5p t ] {SGML} ;
\ path (−2,−2) node ( n1) [ e l l i p s e , f i l l =yellow , draw , i n n e r sep=5p t ] {HTML} ;
\ path (2 , −2) node ( n2) [ e l l i p s e , f i l l =yellow , draw , i n n e r sep=5p t ] {XML} ;
\ path (0 , −4) node ( n3) [ e l l i p s e , f i l l =yellow , draw , i n n e r sep=5p t ] {XHTML} ;
%\ p g f s e t l i n e w i d t h {0.02cm} ;
\draw[− t r i a n g l e 60] ( n0) −− ( n 1 ) ; % p g f l i b r a r y a r r o w s !
\draw[− t r i a n g l e 60] ( n0) −− ( n 2 ) ; % p g f l i b r a r y a r r o w s !
\draw[− t r i a n g l e 60] ( n1) −− ( n 3 ) ;
\draw[− t r i a n g l e 60] ( n2) −− ( n 3 ) ;
\end{ t i k z p i c t u r e }
Un exemple un peu plus conséquent : la création d’un repère orthonormal pour la représentation gra-
phique de fonctions mathématiques.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] ( −2.2 , −2.2) g r i d ( 2 . 2 , 2 . 2 ) ;
\ path ( 0 , 0 ) c o o r d i n a t e ( o r i g i n ) ;
\ path ( 1 , 0 ) c o o r d i n a t e ( x ) ;
\ path ( 0 , 1 ) c o o r d i n a t e ( y ) ;
\ path ( −2 ,0) c o o r d i n a t e (xm ) ;
\ path ( 2 , 0 ) c o o r d i n a t e ( xp ) ;
\ path (0 , −2) c o o r d i n a t e (ym ) ;
\ path ( 0 , 2 ) c o o r d i n a t e ( yp ) ;
~j \draw (xm) −− ( xp ) ;
\draw (ym) −− ( yp ) ;
\draw ( 0 , 0 ) r e c t a n g l e (3mm, 3mm) ;
\draw ( o r i g i n ) −− ( o r i g i n ) node [ anchor=n o r t h e a s t ] {$O$};
O ~i \draw [− t r i a n g l e 60 , c o l o r=red ] ( o r i g i n )
−− ( x ) node [ anchor=n o r t h ] {$\ vec { i }$};
\draw [− t r i a n g l e 60 , c o l o r=red ] ( o r i g i n )
−− ( y ) node [ anchor=e a s t ] {$\ vec { j }$};
\end{ t i k z p i c t u r e }
Une autre façon pour indiquer les positions est de spécifier des valeurs non plus d’ancrage, mais de
positionnement. C’est-à-dire qu’on spécifie où se trouve le texte par rapport aux coordonnées à l’aide des
mots-clés above, left, right, below, above left, above right, below left, below right et en précisant une distance :
above=0.4cm.
\ b e g in { t i k z p i c t u r e }
\draw [ s t e p=1cm , c o l o r=green , v e r y t h i n ] (−1,−1) grid (1 ,1);
\ path ( 0 , 0 ) c o o r d i n a t e ( o r i g i n e ) ;
\draw [ c o l o r=red ] ( o r i g i n e ) c i r c l e ( . 2 cm ) ;
\ path ( o r i g i n e ) node ( s ) [ below=0.5cm] {S } ;
\ path ( o r i g i n e ) node ( o ) [ l e f t =0.5cm] {O} ;
\ path ( o r i g i n e ) node ( n ) [ above =0.5cm] {N} ;
\ path ( o r i g i n e ) node ( e ) [ r i g h t =0.5cm] {E } ;
N \ path [ c o l o r=gray ] ( o r i g i n e ) node ( no ) [ above l e f t =0.4cm] {NO} ;
NO NE \ path [ c o l o r=gray ] ( o r i g i n e ) node ( ne ) [ above r i g h t =0.4cm] {NE} ;
\ path [ c o l o r=gray ] ( o r i g i n e ) node ( so ) [ below l e f t =0.4cm] {SO} ;
O E \ path [ c o l o r=gray ] ( o r i g i n e ) node ( s e ) [ below r i g h t =0.4cm] {SE } ;
\end{ t i k z p i c t u r e }
SO S SE
\ b e g in { t i k z p i c t u r e }
/ \node {/}
c h i l d {node {dev }}
c h i l d {node [ c o l o r=green ] { e t c }
c h i l d {node { s y s c o n f i g }}
dev etc home usr c h i l d {node [ c o l o r=green ] { i n i t . d}}
}
c h i l d {node {home}}
c h i l d {node { u s r } } ;
\end{ t i k z p i c t u r e }
sysconfig init.d
6
Grâce à la définition de styles, TikZ permet de décorer autrement la figure précédente.
\ b e g in { t i k z p i c t u r e }
\ t i k z s t y l e { e v e r y node}=[ f i l l =red ! 3 0 , rounded c o r n e r s ]
\ t i k z s t y l e { edge from p a r e n t }=[red ,−>>, t h i c k , draw ]
/ \node {/}
c h i l d {node {dev }}
c h i l d {node { e t c }
c h i l d {node { s y s c o n f i g }}
dev etc home usr c h i l d {node { i n i t . d}}
}
c h i l d {node {home}}
c h i l d {node { u s r } } ;
\end{ t i k z p i c t u r e }
sysconfig init.d
Pour améliorer le rendu, il est possible d’ajouter une option pour positionner le texte afin qu’il suive la
trajectoire de la courbe avec l’option sloped. Le résultat est plus agréable visuellement.
7
\ b e g in { t i k z p i c t u r e }[ s c a l e =0.8]
\draw [ s t e p=1cm , c o l o r=green ] ( −0.2cm, −0.2cm) g r i d ( 5 . 2cm , 5 . 2 cm ) ;
\ path ( 0 , 0 ) c o o r d i n a t e ( s r c ) ;
\ path ( 5 , 0 ) c o o r d i n a t e ( d s t ) ;
\ path ( 1 , 2 ) c o o r d i n a t e ( c t r l 1 ) ;
\ path ( 4 , 3 ) c o o r d i n a t e ( c t r l 2 ) ;
\draw ( s r c ) . .
c o n t r o l s ( c t r l 1) and ( c t r l 2) . .
node [ a t s t a r t , below , s l o p e d ] {d \ ’ ebut }
node [ midway , s l o p e d ] { m i l i e u }
node [ v e r y near end , above , s l o p e d ] { f i n }
milieu ( dst );
\ f i l l ( s r c ) c i r c l e (1mm) ;
fin
\ f i l l ( d s t ) c i r c l e (1mm) ;
\ f i l l [ c o l o r=b l u e ] ( c t r l 1) c i r c l e (1mm) ;
\ f i l l [ c o l o r=red ] ( c t r l 2) c i r c l e (1mm) ;
ut
déb
\end{ t i k z p i c t u r e }
Le positionnement marche aussi pour les lignes. De plus, si on veut être plus précis, on peut utiliser
l’option pos qui positionne un texte à l’endroit où on le souhaite sur une courbe ou une droite.
\ b e g in { t i k z p i c t u r e }[ s c a l e =0.8]
\draw [ s t e p=1cm , c o l o r=green ] ( −0.2cm, −0.2cm) g r i d ( 5 . 2cm , 5 . 2 cm ) ;
\ path ( 0 , 0 ) c o o r d i n a t e ( s o u r c e ) ;
\ path ( 5 , 1 ) c o o r d i n a t e ( d e s t 1 ) ;
8/10 \ path ( 3 , 4 ) c o o r d i n a t e ( d e s t 2 ) ;
\draw ( s o u r c e ) −− node [ midway , above , s l o p e d ] { m i l i e u } ( d e s t 1 ) ;
\draw ( s o u r c e ) −− ( d e s t 2)
1
{ \ f i l l [ c o l o r=orange ] (\ i ) c i r c l e (1mm) ; }
\end{ t i k z p i c t u r e }
0
La boucle foreach insérée à la fin de l’exemple permet de dessiner un cercle orange de rayon 1mm. Les
boucles sont expliquées plus en détail dans la section suivante.
\ b e g in { t i k z p i c t u r e }
\ foreach \ i in { 1 , . . . , 3 }
{
\ path (\ i cm, \ i cm) c o o r d i n a t e ( P\ i ) ;
\ f i l l ( P\ i ) c i r c l e (2mm) ;
}
\end{ t i k z p i c t u r e }
Les boucles sont utiles lorsqu’on doit définir des actions répétitives.
\ b e g in { t i k z p i c t u r e }
\ foreach \ i in { 1 , . . . , 3 }
{ \ path (\ i , 0 ) c o o r d i n a t e (X\ i ) ;
\ f i l l (X\ i ) c i r c l e ( 0 . 5mm) ; }
\ foreach \ j in { 1 , . . . , 3 }
{ \ path (\ j , 1 ) c o o r d i n a t e (Y\ j ) ;
\ f i l l (Y\ j ) c i r c l e ( 0 . 5mm) ; }
\ foreach \ i in { 1 , . . . , 3 }
{ \ foreach \ j in { 1 , . . . , 3 }
{ \draw (X\ i ) −− (Y\ j ) ; } }
\end{ t i k z p i c t u r e }
8
On peut aussi modifier plusieurs valeurs en même temps dans une boucle.
\ b e g in { t i k z p i c t u r e }[ s c a l e =2]
\ f o r e a c h \ a n g l e / \ c o l o r i n {0/ red , 6 0 / green ,120/ blue ,180/ gray }
{
\draw [ c o l o r=\c o l o r , v e r y t h i c k , dashed ] ( 0 : 0cm) −− (\ a n g l e : 1cm ) ;
}
\end{ t i k z p i c t u r e }
\ b e g in { t i k z p i c t u r e }[ s c a l e =0.5]
\draw [ v e r y t h i n , c o l o r=green ] ( −0.2cm, −1.2cm) g r i d ( 7 . 2cm , 1 . 2 cm ) ;
\draw [ raw g n u p l o t ] p l o t [ i d=s i n 0] f u n c t i o n { p l o t [ 0 : 7 ] s i n ( x ) } ;
\end{ t i k z p i c t u r e }
Un exemple un peu plus compliqué pour aller plus loin, on le tourne de 90◦ (rotate) par rapport à
l’horizontale et on le met à l’échelle 0.5 (scale).
\ b e g in { t i k z p i c t u r e }[ s c a l e =0.5 , r o t a t e =90]
\draw [ s t e p=1cm , c o l o r=green ] ( −0.2cm, −1.2cm) g r i d ( 7 . 2cm , 1 . 2 cm ) ;
\draw [ c o l o r=red , raw g n u p l o t ] p l o t [ i d=s i n 1]
function { plot [0:7] sin (x )};
2π
Emetteur Récepteur
\ b e g in { t i k z p i c t u r e }[ s c a l e =0.38]
\ path ( 0 , 0 ) node [ r e c t a n g l e , f i l l =y e l l o w ! 6 0 , draw , i n n e r sep =0.3cm , rounded c o r n e r s =0.3cm]
( codage ) {Codage } ;
\ path ( 1 0 , 0 ) node [ r e c t a n g l e , shade , i n n e r c o l o r=white , o u t e r c o l o r=orange , i n n e r sep =0.3cm]
( c a n a l ) { Canal de communication } ;
\ path ( 2 0 , 0 ) node [ r e c t a n g l e , f i l l =y e l l o w ! 6 0 , draw , i n n e r sep =0.3cm , rounded c o r n e r s =0.3cm]
( decodage ) {D\ ’ ecodage } ;
\draw [− t r i a n g l e 60] ( codage ) −− ( c a n a l ) ;
\draw [− t r i a n g l e 60] ( c a n a l ) −− ( decodage ) ;
9
\ path ( 0 , 5 ) node [ e l l i p s e , shade , top c o l o r=blue , bottom c o l o r=white , i n n e r sep =0.1cm]
( emis ) {Message \ ’ emis } ;
\ path ( emis ) node [ above =0.5cm] { Emetteur } ;
\draw [− t r i a n g l e 60] ( emis ) −− ( codage ) ;
\ path ( 2 0 , 5 ) node [ e l l i p s e , shade , l e f t c o l o r=blue , r i g h t c o l o r=yellow , i n n e r sep =0.1cm]
( r e c u ) {Message r e \ c { c }u } ;
\ path ( r e c u ) node [ above =0.5cm] {R\ ’ e c e p t e u r } ;
\draw [− t r i a n g l e 60] ( decodage ) −− ( r e c u ) ;
\ path ( 1 0 , 5 ) node [ e l l i p s e , b a l l c o l o r=red ! 8 0 , i n n e r sep =0.5cm] ( b r u i t ) { B r u i t } ;
\draw [− t r i a n g l e 60] ( b r u i t ) −− ( c a n a l ) ;
\end{ t i k z p i c t u r e }
2.12 Le découpage
Si on ne veut garder qu’une partie du dessin, on peut ajouter une commande de découpage en précisant
le type de la zone de découpage et ses dimensions. On reprend l’exemple précédent en le coupant sous la
forme d’un disque et sous la forme d’un rectangle. Il y a juste une ligneade l découpage (clip) à ajouter juste
après le begin{tikzpicture}. al Un clip dans un scope est local au contenu du
r m scope.
rm o
no g e r sn l
e s u
ug o ur
\ b e g in { t i k z p i c t u r e }
al \ c l i p ( 1 , 1 ) r ou
u jo r ma \ b e g in { t i k z p i c t u r e }
r o j r m o n o \ c l i p ( −0.2 , −0.2)
u no t
to c i r c l e (1cm ) ; rectangle (3 ,2);
[...] bl [...]
bl \end{ t i k z p i c t u r e } eu \end{ t i k z p i c t u r e }
eu
orange dans bleu
orange dans bleu
3 Conclusion
TikZ est un outil puissant et facile d’utilisation (avec un peu d’habitude) pour dessiner des graphiques
de qualité sous LATEX. Il propose des fonctions simples de mise en page et de dessin qui permettent à tous de
créer des figures de qualité avec un encombrement mémoire très faible (plus faible que le chargement d’une
image PNG ou JPG externe). L’avantage de la méthode est le gain de place et la souplesse de n’avoir qu’un
seul fichier source du document qui contient le texte et les figures. Bonne utilisation de PGF/TikZ. . .
Références
[1] M ANY CONTRIBUTORS, PGF/TikZ online examples, http ://www.texample.net/tikz/examples, 2008
[2] T ILL TANTAU, The PGF and TikZ packages, http ://sourceforge.net/projects/pgf, 2005
10