LaTeX/Dessiner avec LaTeX/Dessiner avec PGF et TikZ

Un livre de Wikilivres.
Table des matières - Dessiner avec LaTeX - Dessiner en LaTeX pur - Dessiner avec PSTricks - Dessiner avec PGF/TikZ - Dessiner des molécules - Réalisation de graphiques mathématiques - Index - Commandes - Liens externes

PGF signifie « portable graphics format », ou « pretty, good, functional ». Contrairement à ce qu'indique son nom, ce n'est pas un format au sens « format de fichier », mais un ensemble d'instructions pour (La)TeX permettant de faire des dessins vectoriels, et la portabilité est limitée au monde de (La)TeX (TeX, LaTeX, ConTeXt), pour faire du PS ou du PDF. Les instructions PGF se placent au sein d'un environnement pfgpicture. Cela permet de générer du PostScript et du PDF.

TikZ est une extension permettant de générer des images PGF avec une syntaxe assez simple ; c'est en quelques sorte une « surcouche » de PGF pour LaTeX, TikZ est à PGF ce que PSTricks est au PostScript. Selon son auteur Till Tantau, TikZ est un acronyme récursif qui veut dire « TikZ ist kein Zeichenprogramm » : TikZ n'est pas un logiciel de dessin - au sens de « TikZ est un langage pour graphiques ».

Environnement tikzpicture[modifier | modifier le wikicode]

L'environnement tikzpicture permet de déclarer à LaTeX que l'on commence une image TikZ. On peut définir un facteur d'échelle ; par exemple, si l'on veut multiplier la taille de l'image dessinée par trois, on utilise :

\begin{tikzpicture}[scale=3]
   ...
\end{tikzpicture}

Pour les petites images, on peut se contenter d'utiliser la commande \tikz : cette commande prend l'argument qui suit, typiquement une commande de dessin et ses paramètres, et l'inclut dans un environnement tikzpicture. On peut soit mettre la commande et ses paramètres entre accolades, soit terminer la commande par un point virgule :

\tikz{ \draw (0,0) -- (1,1)}

et

\tikz \draw (0,0) -- (1,1) ;

équivalent à

\begin{tikzpicture}
   \draw (0,0) -- (1,1) ;
\end{tikzpicture}

Coordonnées[modifier | modifier le wikicode]

L'unité de longueur par défaut est le centimètre ; l'unité d'angle est le degré. On peut définir un point par ses coordonnées cartésiennes

(x,y)

ou par ses coordonnées polaires

(angle:rayon)

Par défaut, pour simplifier la présentation, nous considèrerons des coordonnées cartésiennes, mais les coordonnées polaires peuvent être utilisées partout.

Chemin[modifier | modifier le wikicode]

Le chemin (path) est la notion de base de TikZ. Un chemin est une série de points séparés par des « opérations d'extension ». Les opérations d'extensions définissent le type de trait qui relient les points :

  • -- (deux tirets) : un segment de droite relie les deux points ;
  • rectangle : trace un rectangle horizontal dont les angles sont les deux points.

Par exemple, un chemin sous la forme d'une ligne brisée sera de la forme

(x0,y0) -- (x1,y1) -- (x2,y2) -- (x3,y3)

Si l'on termine le chemin par -- cycle, il sera fermé.

Les points peuvent être définis de manière relatives par rapport à un point précédent : le signe + devant des coordonnées définit un décalage, mais laisse inchangé le point de référence (le point de départ reste la référence), tandis que l'opérateur ++ considère que le point ainsi défini est la nouvelle référence pour les points suivants.

Par exemple,

(0,0) -- + (0,1) -- + (1,0)

est équivalent à

(0,0) -- (0,1) -- (1,0)

tandis que

(0,0) -- ++ (0,1) -- ++ (1,0)

est équivalent à

(0,0) -- (0,1) -- (1,1)

Un cercle est un chemin défini à partir de son centre et de son rayon :

(x0,y0) circle (rayon)

rayon est une longueur indiquée comme à l'habitude sous la forme nombre et unité. par exemple, le cercle de centre O et de rayon 1 cm est défini par :

(0,0) circle (1cm)

Pour avoir un arc de cercle, on utilise

(x0,y0) arc (angledébut:anglefin:rayon)

par exemple, pour avoir l'arc du cercle précédent compris entre 0 et 90 °, on écrit :

(0,0) arc (0:90:1cm)

Une ellipse est un chemin défini à partir de son centre et de ses axes horizontal et vertical : :

(x0,y0) ellipse (axehorizontal and axevertical)

Pour les courbes de Bézier, les points de passage sont séparés par les points de contrôle :

(x0,y0) .. controls (x1,y1) .. (x2,y2)

est l'arc dont les extrémités sont (x0, y0) et (x2, y2), et dont le point de contrôle est (x1, y1). S'il y a plusieurs points de contrôle, ils sont séparés par and. Par exemple, avec deux points de contrôle :

(x0,y0) .. controls (x1,y1) and (x2,y2) .. (x3,y3)

Traçage de ligne[modifier | modifier le wikicode]

La commande permettant de tracer une ligne est

\draw chemin

où chemin est défini comme précédemment. Par exemple, pour tracer le cercle de centre O et de rayon 1 cm, on écrit :

\draw (0,0) circle (1cm);

On peut choisir la couleur du tracé :

\draw[red] (0,0) -- (1,1);

On peut aussi ajouter des flèches aux extrémités :

\draw[blue,->] (0,0) -- (1,1);
\draw[red,<->] (1,0) -- (2,1);

Surface remplie[modifier | modifier le wikicode]

Pour avoir une surface remplie (peinte), on utilise la commande

\fill chemin

Cette commande accepte la couleur comme paramètre. par exemple, pour tracer un disque gris :

\fill[gray] (0,0) circle (1cm);

On peut remplir avec un dégradé en utilisant la commande \shade. On peut passer des couleurs en argument :

  • dégradé horizontal : \shade[left color=couleur1, right color=couleur2] ;
  • dégradé vertical : \shade[top color=couleur1, bottom color=couleur2] ;
  • dégradé vers l'extérieur : \shade[inner color=couleur1, outer color=couleur2] ;
  • effet de balle : \shade[ball color=couleur].

Utilisation des nœuds[modifier | modifier le wikicode]

Un nœud est une boîte qui peut contenir du texte. Pour obtenir un nœud aux coordonnées x et y, on utilise la commande suivante :

\node at (x,y) {du texte};

La boîte du nœud peut être remplie, son bord peut être tracé et on peut choisir la couleur du texte :

\node[fill=yellow,draw=black,text=blue] at (0,0) {du texte};

On peut aussi nommer un nœud pour y faire appel ensuite :

\node (premier) at (0,0) {du texte};
\node (second) at (2,2) {autre texte};
\draw[->] (premier) -- (second);

TikZ et Babel french/français[modifier | modifier le wikicode]

Utiliser TikZ avec la bibliothèque babel en français pose des problèmes car cette bibliothèque rend actifs les caractères { : ; ! ? }.

Pour pallier cette incompatibilité il suffit de rajouter au début d’une séquence TikZ :

\shorthandoff{:;!?};

Comme par exemple ici :

\begin{tikzpicture}
    \shorthandoff{:;!?};
    \draw (0,-2) arc (-90:-270:1);
\end{tikzpicture}

Si vous voulez faire ceci globalement pour tout les environnements {tikzpicture} il suffit de mettre au début du document :

\tikzset{every picture/.style={execute at begin picture={
   \shorthandoff{:;!?};}
}}

Voir aussi[modifier | modifier le wikicode]

Liens externes[modifier | modifier le wikicode]

  • PGF sur la CTAN
  • TikZ pour l'impatient un manuel en français pour débuter rapidement
  • TeXample.net un site proposant de nombreux exemples de dessins et graphiques réalisés via TikZ