Comment dessiner avec #

Il existe de nombreux logiciels permettant de faire des dessins directement dans (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.

1.  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}

2.  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.

3.  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 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 :

\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}

4.  Avec l’extension #

L’extension 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é 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.

5.  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 :

\documentclass{report}
\usepackage{xy}

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

6.  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  », 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 engine=lualatex
\documentclass{article}
\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}

7.  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 ht (c’est le seul qui le permet à notre connaissance). Par ailleurs, PGF 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 :

8.  Avec #

À la différence des solutions précédentes, Quels langages de description graphique peut-on utiliser avec  ».

De nombreuses documentations et exemples sont disponibles sur Internet :

9.  Avec l’extension « Mfpic »#

L’extension Mfpic permet de faciliter l’utilisation de . Il s’agit tout d’abord d’écrire du code à la manière de PSTricks. Puis à la compilation, un fichier .mf est produit ; celui-ci porte le nom (arbitraire) passé en argument de \opengraphsfile. Après avoir compilé avec (mf) ce fichier .mf, il suffit de recompiler le fichier initial avec pour admirer les figures. Voici un exemple tiré de la documentation Mfpic :

\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{Une fonction représentée dans un repère orthonormal.}
\end{mfpic}

\begin{mfpic}[20]{-3}{3}{-3}{3}
\axes
\function{-2,2,0.1}{((x**2)-x)/3}
\tcaption{Une autre fonction représentée dans un repère orthonormal.}
\end{mfpic}
\closegraphsfile
\end{document}

Si le fichier source de l’exemple précédent est nommé test.tex, il serait donc à compiler avec :

pdflatex test
mf pics.mf
pdflatex test

Avertissement

Il semblerait que les modifications apportées aux environnements mfpic ne sont pas automatiquement pris en compte et qu’il faille supprimer les fichiers .mf correspondants puis relancer les compilations pour obtenir des figures à jour.

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.

10.  Avec du code d’autres langages#

Il existe plusieurs moyens de générer du code pour votre application graphique (asymptote, gnuplot, MetaPost et R 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  ».