TikZ est aujourd’hui le standard de fait pour le dessin, mais ce n’est pas la seule option. Plusieurs systèmes plus anciens gardent leur rôle : PSTricks, qui emprunte la puissance de PostScript; le vétéran Xy-pic, fort pour les diagrammes; Asymptote, langage autonome pour la 2D et la 3D; et MetaPost, descendant de METAFONT. Cette page explique ce que sont ces systèmes non TikZ et quand les utiliser, avec une attention particulière à leurs particularités de chaîne de sortie. Pour les nouveaux travaux, TikZ suffit généralement; ceux-ci valent surtout pour les documents hérités, la 3D ou des écosystèmes particuliers.
TikZ d’abord par défaut
Avant de commencer, clarifions la recommandation. Si vous commencez aujourd’hui à dessiner des figures en LaTeX, le bon réflexe est de choisir TikZ d’abord. TikZ est activement maintenu, fonctionne avec pdflatex, lualatex ou xelatex sans outil externe supplémentaire, s’intègre naturellement aux polices et couleurs du document, et dispose d’un vaste écosystème (tikz-cd, PGFPlots, circuitikz, etc.). TikZ lui-même est traité dans la page « Bases de TikZ ».
Pourquoi connaître les autres systèmes ? Principalement pour trois raisons. D’abord, les documents existants : d’anciens articles, livres et modèles peuvent être écrits en PSTricks ou Xy-pic, et il faut pouvoir les lire pour les maintenir ou les réviser. Ensuite, la 3D : pour de vraies figures tridimensionnelles, Asymptote est le plus fort. Enfin, les écosystèmes spécifiques : dans le monde ConTeXt, MetaPost (via MetaFun) est l’outil central de dessin. Nous les parcourons ci-dessous.
PSTricks : la puissance de PostScript
PSTricks est un ensemble de macros qui appellent directement les fonctions de dessin de PostScript depuis la source TeX/LaTeX. Comme son nom l’indique, il utilise PostScript en interne, ce qui donne des remplissages, dégradés et transformations de coordonnées de haute qualité. Chargez-le avec \usepackage{pstricks} et écrivez la figure dans un environnement pspicture. Les coordonnées, coin inférieur gauche et coin supérieur droit, se donnent à l’ouverture, par exemple \begin{pspicture}(0,0)(4,3).
Les commandes de base se lisent souvent dans leur nom. \psline trace une ligne ou polyligne, \pscircle un cercle, \psframe un rectangle. Les coordonnées se donnent entre parenthèses, comme \psline(0,0)(3,2), et un cercle reçoit centre et rayon, comme \pscircle(2,2){1}. Pour placer un objet quelconque, texte ou autre image, à des coordonnées données, utilisez \rput, par exemple \rput(2,1){text}. Pour ajouter un angle ou un décalage au placement, \uput existe aussi. Voici un exemple minimal.
\begin{pspicture}(0,0)(4,3)
\psframe(0,0)(4,3)
\psline{->}(0,0)(3,2)
\pscircle(2,1.5){1}
\rput(2,1.5){$O$}
\end{pspicture}Cette figure trace un cadre rectangulaire de largeur 4 et hauteur 3, un segment fléché de l’origine vers (3,2) à l’intérieur, un cercle de rayon 1 centré en (2,1.5), et le symbole mathématique O au centre du cercle. Le {->} de \psline{->} précise la pointe de flèche; dans PSTricks, style de ligne, pointes, couleur, etc. se donnent ensemble comme options entre crochets [...] (par exemple \psline[linewidth=2pt,linecolor=red]{->}(...)).
Voici la principale mise en garde. Comme PSTricks dépend des \specials PostScript, des instructions spéciales intégrées au DVI, il ne fonctionne pas directement avec pdflatex, qui produit le PDF d’emblée. La voie classique et fiable passe par DVI : latex → dvips → ps2pdf. Autrement dit, latex crée le DVI, dvips le convertit en PostScript, puis ps2pdf (Ghostscript) en fait un PDF.
latex figure.tex
dvips figure.dvi -o figure.ps
ps2pdf figure.psSi vous devez l’intégrer à un flux pdflatex, ou mélanger des images PNG/JPEG, il existe des contournements. Les paquets pst-pdf et auto-pst-pdf rendent seulement les parties PSTricks via PostScript en arrière-plan, les convertissent en fragments PDF et les intègrent à la sortie pdflatex (auto-pst-pdf appelle un processus externe et doit donc être lancé avec --shell-escape; pdftricks de la même famille requiert aussi -shell-escape). Une autre voie est XeLaTeX : avec xetex-pstricks installé, xelatex peut traiter PSTricks sans changer la source.
PSTricks possède une riche famille d’extensions : pst-plot (tracés de fonctions), pst-node (nœuds et connexions), pst-3dplot (tracés 3D), et beaucoup d’autres; sa puissance d’expression reste élevée. Mais avec la contrainte de chaîne de sortie, TikZ est souvent plus commode pour les nouveaux documents.
Xy-pic : le vétéran des diagrammes
Xy-pic (nom du paquet xy) est un paquet généraliste ancien pour composer graphes et diagrammes. Il fonctionne avec plain TeX, LaTeX et AMS-LaTeX, et a servi à des diagrammes dans de nombreux domaines : théorie des catégories, algèbre et topologie, mais aussi automates, bases de données, chimie et généalogie. En LaTeX, le chargement habituel est \usepackage[all]{xy}, où [all] active l’ensemble standard des fonctionnalités.
La partie la plus utilisée, surtout pour les diagrammes commutatifs, est \xymatrix. C’est un mode qui dispose le diagramme comme une matrice : comme dans tabular, les entrées sont séparées par & et les lignes par \\. Les flèches entre objets se tracent avec la commande \ar, dont la cible est donnée par des touches de direction : [r] à droite, [l] à gauche, [u] en haut, [d] en bas, et des combinaisons comme [rd] pour une diagonale (la case une colonne à droite et une ligne en dessous). Pour mettre une étiquette sur une flèche, on réutilise la notation des exposants et indices mathématiques : ^ place l’étiquette au-dessus (à gauche) de la flèche, et _ en dessous (à droite).
\[
\xymatrix{
A \ar[r]^{f} \ar[d]_{\alpha} & B \ar[d]^{\beta} \\
C \ar[r]_{g} & D
}
\]Cela produit un carré commutatif avec A, B, C et D aux quatre coins : f pointe vers la droite sur le bord supérieur, α vers le bas à gauche, β vers le bas à droite, et g vers la droite en bas. L’étiquette f se place au-dessus de la flèche du haut, et g sous celle du bas. Comme un diagramme est lui-même un objet mathématique, il est placé dans un environnement de formule hors ligne (\[ … \]).
Xy-pic est historiquement important et apparaît encore dans beaucoup de documents, mais pour les diagrammes commutatifs, l’alternative moderne est tikz-cd, fondé sur TikZ. tikz-cd gère plus facilement les courbes, les pointes de flèche élaborées et les diagrammes complexes à plusieurs lignes, avec des messages d’erreur plus accueillants. La bonne répartition est donc : tikz-cd pour les nouveaux travaux, et les connaissances de cette section pour maintenir d’anciens documents Xy-pic. La comparaison détaillée se trouve dans la page « Diagrammes commutatifs ».
Asymptote : un langage pour la 2D et la 3D
Asymptote n’est pas un ensemble de macros TeX, mais un langage autonome de graphiques vectoriels. Avec une syntaxe proche de C++, il décrit les figures comme un vrai langage de programmation, avec variables, fonctions, boucles et types. Il vise à donner aux figures la même qualité typographique que LaTeX apporte aux textes scientifiques, et son trait distinctif est de produire des figures en 3D comme en 2D avec une grande qualité. Comme les étiquettes sont composées par TeX, les formules dans la figure utilisent les mêmes polices que le corps du texte.
Pour l’intégrer à LaTeX, chargez \usepackage{asymptote} dans le préambule et écrivez le code de la figure dans un asy environment (\begin{asy} … \end{asy}). Par conception, la compilation se fait en trois étapes. D’abord, l’exécution de latex (ou pdflatex) écrit le contenu de chaque environnement asy dans des fichiers temporaires .asy. Ensuite, le programme externe asy est lancé sur ces fichiers pour produire les figures (PDF pour pdflatex, EPS pour latex/dvips). Enfin, une nouvelle exécution de latex/pdflatex intègre les figures terminées.
pdflatex document
asy document-*.asy
pdflatex documentLancer ces trois étapes à la main est fastidieux; en pratique, on laisse donc généralement latexmk les automatiser. Les figures Asymptote peuvent aussi être écrites comme fichiers .asy autonomes, plutôt qu’intégrées au document, puis exécutées seules avec asy figure.asy pour produire du PDF, de l’EPS, ou des formats incluant de la 3D interactive. Voici un exemple minimal de .asy.
import three;
size(6cm);
draw(unitcube);
draw(O--X, red, Arrow3);
draw(O--Y, green, Arrow3);
draw(O--Z, blue, Arrow3);Ce code Asymptote importe le module three (les fonctions 3D), trace un cube unité, puis dessine des flèches tridimensionnelles rouge, verte et bleue depuis l’origine le long des axes x, y et z. size(6cm) fixe la taille finale. La force d’Asymptote est donc de permettre une écriture assez naturelle de vraies figures 3D, solides avec axes de coordonnées, surfaces, etc., qui seraient pénibles en TikZ. Il existe aussi une interface graphique, xasy, qui permet de dessiner interactivement et d’exporter le résultat en source .asy à retoucher à la main.
MetaPost : la lignée de METAFONT
MetaPost est la reprise par John Hobby du METAFONT de Knuth (un langage pour décrire les fontes), avec PostScript comme sortie. Il hérite de la notation distinctive de METAFONT pour résoudre des courbes lisses à partir de points et de directions (l’algorithme de Hobby), et permet de déclarer les coordonnées comme des équations. Classiquement, c’est un langage autonome : on traite un fichier .mp avec le programme dédié mpost pour obtenir de l’EPS.
Dans la pratique moderne, le plus simple est de l’écrire directement dans LuaLaTeX. En chargeant le paquet luamplib (\usepackage{luamplib}), on peut écrire du code MetaPost directement dans un mplibcode environment. La figure est alors composée au moyen de la mplib library intégrée à LuaTeX; il n’y a donc ni appel séparé à mpost, ni --shell-escape. Cela fonctionne en mode PDF comme en mode DVI (la sortie DVI suppose l’usage de dvipdfmx). Voici un exemple minimal.
% lualatex で処理する / compile with lualatex
\documentclass{article}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
draw fullcircle scaled 2cm withpen pencircle scaled 1pt;
draw (-1cm,0)--(1cm,0);
draw (0,-1cm)--(0,1cm);
endfig;
\end{mplibcode}
\end{document}Le contenu de ce mplibcode est du code MetaPost. beginfig(1) … endfig délimitent une figure; il trace un cercle de rayon 1cm (le cercle unité mis à l’échelle d’un diamètre de 2cm) avec une plume de 1pt, puis un diamètre horizontal et un diamètre vertical. Compilée avec LuaLaTeX, cette figure est intégrée directement au PDF sans outil externe. fullcircle, pencircle et scaled font partie du vocabulaire intégré de MetaPost.
Un élément clé de l’écosystème MetaPost est MetaFun, un format riche pour MetaPost; le système de composition ConTeXt intègre MetaPost en profondeur par son intermédiaire. Pour les utilisateurs de ConTeXt, MetaPost (via MetaFun) est l’outil central de dessin. À l’inverse, si vous travaillez surtout en LaTeX, vous utilisez normalement TikZ et gardez MetaPost en réserve pour son mode de description des courbes hérité de METAFONT ou pour une interaction avec ConTeXt.
Comparer les systèmes et choisir
En classant les quatre systèmes par chaîne de sortie, moteur et points forts, on obtient le tableau ci-dessous. Le fil conducteur est le suivant : pour un nouveau travail, commencez par TikZ, et n’utilisez les systèmes listés ici que pour une raison précise : document ancien, 3D, ou écosystème particulier.
| Système | Chaîne de sortie / moteur | Point fort / usage principal |
|---|---|---|
PSTricks | latex → dvips → ps2pdf; ou pst-pdf/auto-pst-pdf (requiert --shell-escape), ou XeLaTeX | Remplissages et effets PostScript de haute qualité; nombreux documents anciens |
Xy-pic | Fonctionne avec LaTeX ordinaire (pas de chaîne spéciale) | Diagrammes commutatifs (le vétéran); tikz-cd est l’alternative moderne |
Asymptote | latex/pdflatex → asy externe → de nouveau latex (automatiser avec latexmk); ou .asy autonome | 2D et 3D ambitieuses; solides et surfaces avec axes |
MetaPost | Traiter .mp avec mpost; ou LuaLaTeX + mplibcode de luamplib (sans outil externe) | Courbes de style METAFONT; central dans ConTeXt (MetaFun) |
Comme règle pratique : pour maintenir un document existant, il faut savoir lire et écrire le système qu’il utilise déjà, PSTricks ou Xy-pic. Pour des figures 3D, Asymptote est le premier candidat. Avec ConTeXt, MetaPost (MetaFun) est le choix naturel. Pour de nouveaux diagrammes commutatifs, choisissez tikz-cd plutôt que Xy-pic. Et pour la grande majorité des dessins qui ne relèvent d’aucun de ces cas, le choix le plus sûr est TikZ, sans outil externe supplémentaire ni chaîne de sortie spéciale.