Cours 7 – LATEX et les graphiques
7.4 Programmer des graphiques
• • • • • • • • • • • • • • • • • • • • • • • • • • • •
Le logiciel Asymptote : utilisation
Il y a trois façons simples d’utiliser Asymptote :
. Créer un fichier .asy dans lequel figure le code de l’image à composer.
asy -vv -f pdf image.asy produit le fichier image image.pdf.
asy est le moteur de compilation de Asymptote.
. Créer un document LATEX, nommé fichier.tex, avec les commandes
\usepackage{asymptote}
...
\begin{asy}
code de l’image
\end{asy}
pdflatex fichier.tex Ù produit des fichiers fichier-n.asy (n numéro),
asy -vv fichier-*.asy Ù produit les images fichier-n.pdf
pdflatex fichier.tex Ù insère les images dans fichier.pdf
. Créer un document LATEX comme ci-dessus avec l’option
\usepackage[inline]{asymptote}
et procéder de la même façon. Cette fois les libellés de texte placés dans le code de l’image
seront composés par pdflatex lors de la seconde compilation : ils ne sont pas dans les
fichiers images fichier-n.pdf.
• • • • • • • • • • • • • • • • • • • • • • • • • •
Le logiciel Asymptote : exemple
import settings;
outformat="pdf";
unitsize(1cm);
pair z=(1,6); A
dot(Label("$A$",red),z,(2,2),red+10bp);
draw((1,5)--(1.5,5.5)--(2,5)--(4,6),blue+4bp);
draw((0,2)..(2,4)..(3,3)..(5,3),blue+2bp);
draw((0,0)--(2,2),Arrow);
draw((1,0)--(3,2),red,Arrow(5bp));
draw((2,0)--(4,2),blue,Arrow(SimpleHead,10bp));
path p=circle((2,-2),1.5);
draw(p,blue+2bp);
draw(shift(1,0)*p,red+1bp);
path q=(0,-4)--(4,-4)--(2,-5)--cycle;
filldraw(q,lightgreen,2bp+.8blue);
25 février 2012 135
Cours 7 – LATEX et les graphiques
7.4 Programmer des graphiques
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Courbes analytiques avec Asymptote
import graph3;
size(7.5cm,0);
currentprojection=orthographic(2,0,1.5);
real f(pair z) {
real r=2pi*(z.x^2+z.y^2);
if (r!=0) return sin(r)/r;
else return 1;}
draw(surface(f,(-2.5,-2),(2.5,2),100,Spline),lightblue);
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
Représentations de données avec Asymptote
Le module stats de Asymptote permet de gérer des données statistiques.
35
30
Effectifs cumulés croissants
25
20
15
10
0
0 2 4 6 8 10 12 14 16 18 20 0 5 10 15 20
Valeurs du caractère Valeurs du caractère
(Exemples extraits de Asymptote - Galeries d’exemples ² 96 )
136 25 février 2012
Cours 7 – LATEX et les graphiques
7.4 Programmer des graphiques
• • • • • • • • • • • • • • • •
Le package TikZ
Le package tikz repose sur le package pgf, Portable Graphic Format.
Origine du nom : TikZ = “TikZ ist kein Zeichenprogramm”
pgf est un langage de dessin vectoriel bas niveau, qui définit des primitives essentielles pour
dessiner. Il est construit comme couche intermédiaire entre l’utilisateur et les drivers utilisés par
TEX pour produire les fichiers .dvi, .ps et .pdf.
TikZ est une surcouche de pgf qui définit des commandes riches et intuitives pour dessiner. On
peut l’étendre avec des modules supplémentaires.
Principaux avantages de TikZ :
– % LATEX ! Le document est donc unique, pas de fichiers externes.
– TikZ peut intervenir ailleurs que dans des boîtes d’images : encadrement de textes, entêtes et bas
de pages, tableaux, flèches entre éléments du texte (même page). . .
– Langage de programmation compatible avec celui de LATEX : familiarité, utilisation dans des
commandes LATEX personnelles. . .
– Nombreuses fonctionnalités de dessin : formes usuelles, couleurs, transparences, dégradés,
textures, boucles, conditions, couches. . .
– Nombreux modules pour des fonctionnalités diverses : matrices, arbres, flèches, décorations,
calendriers, chaînes, ombres. . .
– Installé par défaut avec TeXLive Ù utilisable partout où il y a LATEX.
• • • • • • • • • • • • • • • • • • • • •
La gourmandise de TikZ
TikZ est très gourmand en registres (longueurs, compteurs. . . ).
Lorsqu’on l’installe avec d’autres packages, comme par exemple xypic, il arrive qu’on sature ce
nombre de registres.
On aboutit alors à des messages d’erreurs du type :
! No room for a new \dimen
! No room for a new \count
Heureusement, le moteur pdftex (basé sur ε-TEX, une extension de TEX apparue en ) utilisé
par défaut aujourd’hui peut allouer beaucoup plus de registres :
de 256 = 28 on passe à 32768 = 215 .
Mais ces registres ne sont pas disponibles par défaut ! Il faut utiliser :
\usepackage{etex}
juste après \documentclass[-]{-} pour activer ces registres supplémentaires.
Il doit être placé avant l’installation d’autres packages afin que ces derniers profitent de tous les
registres disponibles.
Lorsqu’on utilise TikZ, il est préférable d’utiliser le package etex.
Cette solution est préconisée dès que le problème de saturation intervient.
25 février 2012 137
Cours 7 – LATEX et les graphiques
7.4 Programmer des graphiques
• • • • • • • • • • • • • • • • • • • • • • • •
La syntaxe de TikZ : les bases
Les figures créées avec TikZ sont contenues soit dans la commande \tikz{-}, soit dans
l’environnement tikzpicture. Pas de différence de rendu entre les deux syntaxes.
Cette commande et cet environnement acceptent des options qui seront appliquées à tout le dessin
en cours.
\usepackage{tikz}
...
\begin{tikzpicture}[line width=1pt,fill=red,draw=blue]
\path[draw] (0,1)--(1,1)--(1,0);
\filldraw (0,0) circle (0.5cm);
\draw[black] (-5pt,-5pt) rectangle (5pt,5pt);
\end{tikzpicture}
\tikz[line width=2pt,fill=orange,draw=red]{
\draw[fill] (0,1)--(1,1)--(1,0)--cycle;
\draw[dashed] (0,-0.5) to[out=45,in=135] (1,-0.5);
}
TikZ peut être étendu à l’aide de bibliothèques qu’on appelle dans le préambule :
\usetikzlibrary{biblio1,biblio2,...}
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
La syntaxe de TikZ : les fondamentaux
Un dessin TikZ obéit aux règles suivantes.
– Les éléments d’un dessin sont des chemins : \path ... instructions ... ;.
Ù \path admet des variantes : \draw, \fill, \filldraw, \node, \coordinate, \shade,
\shadedraw. . .
B La construction d’un chemin se termine avec ;.
Ù La lecture/construction d’un chemin se fait de gauche à droite.
– Les éléments d’un chemin sont des “opérations” élémentaires qui utilisent le point courant actuel
et qui définissent le nouveau point courant : aller à un point, insérer une ligne droite, une courbe
de Bézier, une forme (rectangle, cercle, ellipse. . . ), un arc, une grille, un graphique. . .
– En cours de réalisation, le chemin accumule des options ([-]) : dessiner, remplir, épaisseur du
trait, couleurs, style du trait. . . Sans option, un chemin est créé sans être rendu.
Le chemin une fois terminé (arrivé au ;) est rendu selon les options données.
– Des nœuds (node) peuvent être insérés en cours de réalisation.
Ce sont des morceaux de textes qui seront ajoutés après le rendu du chemin.
Les points peuvent être nommés pour les utiliser après.
Il est possible de définir et de nommer des “styles” utilisables dans tous les dessins.
\path[draw] (0,0) circle (5pt) to[out=20,in=240] (1cm,2cm) [fill]
node[xshift=10pt] {$A_1$} -| (90:10pt) [thick] -- cycle;
138 25 février 2012