Comment dessiner avec TeX ?#

Il existe de nombreux logiciels permettant de faire des dessins directement dans (La)TeX (plutôt que d’importer des graphiques créés avec un autre outil), allant de la simple utilisation de l’environnement picture de au dessin sophistiqué avec PSTricks ou TikZ. En fonction de votre type de dessin et de votre configuration, voici quelques systèmes à envisager.

Avec les commandes de base#

L’environnement picture offre des capacités de dessin plutôt basiques : tout ce qui nécessite plus que de simples calculs linéaires est exclu, à moins qu’une police de caractères ne puisse vous venir en aide. Cet environnement dispose de sa propre définition de la commande \unitlength comme unité de mesure de base. Cette fonctionnalité pouvant être gênante, l’extension picture permet de l’éviter en détectant si une longueur est citée sous forme de nombre ou de longueur et agit en conséquence.

Voici un exemple d’utilisation :

\documentclass{article}
  \pagestyle{empty}

\begin{document}
\setlength\unitlength{1mm}
\begin{picture}(32,40)(-2,-2)
\put(0,0){\circle{1}}
\put(25,0){\line(-1,2){10}}
\put(12,26){\circle*{15}}
\qbezier(5,5)(30,40)(25,0)
\end{picture}
\end{document}

Avec les extensions « epic », « eepic » et eepicemu#

L’extension epic a été conçue pour utiliser l’environnement picture de manière plus efficace. L’extension eepic l’étend et est capable d’utiliser les commandes \special de tpic pour améliorer les performances d’impression. Si les commandes \special ne sont pas disponibles, l’extension eepicemu pourra effectuer le traitement mais bien moins efficacement.

Avec l’extension « pict2e »#

L’extension pict2e comble les lacunes de l’environnement picture de . Elle définit un ensemble de commandes permettant de tracer des figures dont des cercles de tout diamètres des droites de toutes pentes. Elle a moins de commandes que PStricks mais présente le gros avantage de fournir des pilotes permettant la compilation avec et pdfLaTeX, comme le montre l’exemple ci-dessous. De plus, elle ne nécessite pas de compilation externe.

Voici des courbes de Bézier (quadratique et cubique) avec pict2e :

% !TEX noedit
\documentclass{article}
  \usepackage{ifpdf}
  \ifpdf
    \usepackage[pdftex]{pict2e}
  \else
    \usepackage[dvips]{pict2e}
  \fi
  \usepackage{color}

\newcommand*\FPOINT{
  \begingroup
    \setlength\unitlength{.8pt}
    \circle*{5}
  \endgroup
}

\newcommand*\OPOINT{
  \begingroup
    \setlength\unitlength{.8pt}
    \circle{5}
  \endgroup
}

\begin{document}
\setlength\unitlength{.007\linewidth}

\begin{picture}(100,120)(-50,-60)
  \put(-50,-60){\framebox(100,120){}}
  \color{green}
  \qbezier[0](-40,-30)(-30,10)(0,10)
  \qbezier[0](0,10)(30,10)(40,50)
  \put(-40,-30){\FPOINT}\put(-30,10){\OPOINT}
  \put(0,10){\FPOINT}
  \put(30,10){\OPOINT}\put(40,50){\FPOINT}
  \color{black}
  \cbezier[0](-40,-50)(-20,30)(20,-50)(40,30)
  \put(-40,-50){\FPOINT}\put(-20,30){\OPOINT}
  \put(20,-50){\OPOINT}\put(40,30){\FPOINT}
\end{picture}
\end{document}

Avec l’extension « PICTeX »#

L’extension PICTeX est un système ancien et assez puissant qui dessine en plaçant des points sur la page pour donner l’effet d’une ligne ou d’une courbe. Bien qu’il y ait ici beaucoup de potentiel, cette extention est beaucoup plus lente que n’importe laquelle des autres extensions établies. De plus, sa documentation pose des difficultés.

Vous avez aimé PicTeX mais il a été trop gourmand en mémoire ou en temps ? Testez l’extension dratex d’Eitan Gurari : elle est tout aussi puissante, plus économe en mémoire et beaucoup plus lisible.

Avec l’extension « XYpic »#

L’extension XYpic, développée par Kristoffer Rose, permet de dessiner des graphes et des diagrammes. Elle n’est pas évidente de prime abord mais permet néanmoins de faire de très belles choses, une fois qu’on a pris un peu l’habitude.

En voici un exemple :

% !TEX noedit
\documentclass{report}
\usepackage{xy}

\begin{document}
\begin{xy}
(0,0)*+{A}; (20,20)*+{B} **\dir{-};
(0,20)*+{C} **\dir2{~}
\end{xy}
\end{document}

Avec l’extension « PSTricks »#

PStricks, développé essentiellement par Timothy Van Zandt, est un ensemble d’extensions permettant de faire à peu près tout ce que permet de faire le langage PostScript. Le principe est de convertir des commandes (utilisant des commandes \special) en commandes Postscript, qui seront interprétées lors de la visualisation de Postscript.

Les commandes \special de PSTricks sont par défaut spécifiques à dvips, mais il existe un pilote PSTricks qui lui permet de fonctionner sous XeTeX. Les utilisateurs de pdfTeX peuvent utiliser l’extension pst-pdf qui, comme l’extension epstopdf présentée à la question « Comment insérer des images avec « pdfLaTeX » ? », génère des fichiers PDF à l’aide d’un programme auxiliaire à partir des commandes PSTricks. L’extension pst-pdf nécessite également une version récente de l’extension preview.

Il existe une liste de diffusion en anglais traitant de PSTricks à laquelle vous pouvez vous abonner. Vous pouvez aussi en parcourir ses archives.

Voici un exemple de dessin réalisé avec PStricks :

% !TEX noedit
\documentclass{report}
\usepackage{pstricks}

\begin{document}
\psset{unit=3pt}
\begin{pspicture}(-10,-10)(50,50)
\psline[linewidth=1,linecolor=red,linearc=5]
                {*->}(0,0)(10,0)(10,30)(40,40)
\psline[linewidth=1pt,linearc=5]
                (-10,0)(10,0)(10,30)(40,40)
\pspolygon(30,10)(30,30)(10,20)
\pscircle*[linewidth=5pt,linecolor=gray](40,5){5}
\pswedge*[linecolor=blue](40,40){10}{-45}{60}
\psarc*[linecolor=green](40,40){8}{-45}{60}
\psbezier{*-*}(0,20)(10,10)(25,10)(35,-10)
\psellipse(40,20)(5,10)
\end{pspicture}
\end{document}

Avec l’extension « TikZ »#

Alors que l’extension PStricks est très puissante et pratique avec les moteurs historiques de , son utilisation avec pdfLaTeX est assez fastidieuse. Dès lors, l’extension PGF est un outil très intéressant à étudier pour faire des dessins. Il est conçu avec des frontends (interfaces frontales) et des backends (interfaces dorsales) qui lui donnent une grande souplesse. L’interface frontale TikZ fournie avec cette extension est assez conviviale à utiliser. Mais il est possible d’ajouter d’autres syntaxes, par exemple celle de PStricks. Grâce aux interfaces dorsales, il fonctionne avec , pdfLaTeX, mais permet également de générer du SVG avec a un support mathématique étendu, ce qui lui permet de rivaliser avec l’utilisation du moteur de calcul de PSTricks.

L’exemple ci-dessous est celui la page de garde du manuel de PGF, qui présente comment faire un arbre de type « soleil » :

\documentclass{article}
  \usepackage{tikz}
  \usetikzlibrary{snakes}
  \usetikzlibrary{trees}
  \pagestyle{empty}
\begin{document}
\tikzstyle{level 1}=[sibling angle=120]
\tikzstyle{level 2}=[sibling angle=60]
\tikzstyle{level 3}=[sibling angle=30]
\tikzstyle{every node}=[fill]
\tikzstyle{edge from parent}=[snake=expanding waves,
           segment length=1mm,segment angle=10,draw]

\tikz [grow cyclic,shape=circle,very thick,
       level distance=13mm,cap=round]
  \node {} child [color=\A]
    foreach \A in {red,green,blue}
    { node {} child [color=\A!50!\B]
      foreach \B in {red,green,blue}
       { node {} child [color=\A!50!\B!50!\C]
         foreach \C in {black,gray,white}
         { node {} }
       }
    };
\end{document}

Si le manuel de TikZ est énorme, son introduction permet à l’utilisateur d’avoir une idée des capacités du système (cette dernière est disponible en français dans le cahier GUTenberg n°48). D’autres documents proposent des présentations :

Avec Metapost#

À la différence des solutions précédentes, MetaPost n’est pas une extension mais un programme et un langage développé par John B. Hobby. Il met à votre disposition toute la puissance de MetaFont pour générer des graphiques PostScript. Notez que vous pouvez intégrer du code Metapost dans votre code comme évoqué dans la question «Quels langages de description graphique peut-on utiliser avec LaTeX ? ».

De nombreuses documentations et exemples sont disponibles sur Internet :

Avec l’extension « Mfpic »#

L’extension Mfpic permet de faciliter l’utilisation de Metafont. Il s’agit tout d’abord d’écrire du code à la manière de PStricks. Puis à la compilation, un fichier mf est produit. Après avoir compilé le fichier obtenu avec Metafont (mf), il suffit de recompiler le fichier initial avec pour admirer les figures. Voici un exemple tiré de la documentation Mfpic :

% !TEX noedit
\documentclass{article}
\usepackage{mfpic}
\begin{document}
\opengraphsfile{pics}
\begin{mfpic}[20]{-3}{3}{-3}{3}
\axes
\function{-2,2,0.1}{((x**3)-x)/3}
\tcaption{\raggedright{\it Fig. :}
Fonction dans un repère orthonormal.}
\end{mfpic}
\closegraphsfile
\end{document}

MFpic, même s’il n’a pas la puissance de PStricks, a l’avantage de fonctionner à la fois avec et pdfLaTeX et de permettre de tracer très facilement des courbes.

Avec du code d’autres langages#

Il existe plusieurs moyens de générer du code pour votre application graphique (asymptote, gnuplot et MetaPost, au moins) avec du code placé dans votre document . Pour plus de détails, voir la question «Quels langages de description graphique peut-on utiliser avec LaTeX ? ».


Source : Drawing with TeX