Ceci est une ancienne révision du document !
Où trouver un logiciel de dessin?
Il en existe une multitude, que je vais découper en deux grandes
catégories : les outils « extérieurs » à , qui nécessitent de
passer par un fichier intermédiaire, et ceux qui s'intègrent directement
dans
.
Pour ce qui est des logiciels extérieurs, on peut encore distinguer deux sous-catégories : les logiciels de dessin vectoriel qui décrivent la figure à l'aide d'objets tels les cercles et les segments, et les logiciels de dessin bitmap pour qui une image n'est qu'une matrice de pixels.
xfig
, disponible sur le CTAN ou sur
son site web pour Linux et Windows. Il est très simple à
utiliser, et permet d'inclure des commandes dans le dessin (ces
commandes seront donc
exécutées à la compilation du document),
et d'exporter l'image en PostScript encapsulé (EPS).
Il est en existe plusieurs portages : une version pour Windows, WinFIG et une version java (donc fonctionnant sur de nombreuses plate-formes), jfig,
eukleides pour Linux et Windows :
adapté pour les figures de géométrie euclidienne, ligne de commande, produit du code
PStricks.
Inconvénients : en ligne de commande et surtout une fois la figure compilée les légendes sont légèrement décalées par rapport à la fenêtre eukleides de départ. Long à maîtriser.
Avantages : bien adapté pour la géométrie euclidienne et sort de jolies figures. Produit du code PStricks donc éditable par la suite dans le document. Possibilité de lui demander un segment d'une longueur donnée, ou un angle précis ;
declic :
pour Linux et Windows. Exporte maintenant en EPS. Bien adapté à la géométrie,
mais les polices de caractère ne sont pas belles dans le document final ;
jpicedt : programme java générant directement du code
et possédant une interface graphique. Très bien pour les figures
simples. Nécessite un peu d'habitude pour les figures complexes
TeXgraph: pour les graphiques ou autres,
génère du code
et/ou PStricks.
TikZedt est un éditeur semi-graphique pour le code TikZ/PGF.
En ce qui concerne les logiciels de dessin bitmap, on peut citer
The Gimp, POV-ray,
et plus généralement, tout logiciel de dessin avec interface graphique.
Certains de ces logiciels n'exportent pas directement au format EPS.
Mais à partir d'une image au format JPEG, par exemple, il est possible
d'obtenir la même image en EPS, avec les convertisseurs
imgtops
, jpeg2ps
,
ou convert
d'ImageMagick. La qualité et la taille
du résultat peut varier d'un convertisseur à l'autre…
Parmi les outils qui s'intègrent dans , on trouve :
lui-même permet de faire des figures géométriques
simples… Un petit exemple est montré ici:
\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}
PStricks, développé essentiellement par Timothy Van Zandt,
est un ensemble de packages permettant de faire à peu près tout ce que permet de faire le langage PostScript.
Le principe est de convertir des commandes
en commandes Postscript, qui seront
interprétées lors de la visualisation de Postscript. Par conséquent,
cela ne marche pas pour un document compilé avec pdfLaTeX, et le
dessin ne sera pas (du moins, pas toujours) visible lors de la visualisation
du fichier DVI.
Voici un exemple de dessin réalisé avec PStricks:
\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}
XYpic, développé par Kristoffer Rose, est un package
permettant de dessiner des graphes et des diagrammes. Il n'est pas très
facile de prime abord, mais permet néanmoins de faire de très belle chose,
une fois qu'on a pris un peu l'habitude.
\documentclass{report} \usepackage{xy} \begin{document} \begin{xy} (0,0)*+{A}; (20,20)*+{B} **\dir{-}; (0,20)*+{C} **\dir2{~} \end{xy} \end{document}
METAPOST est un peu différent des précédents: ce n'est pas un
package, mais un programme et un langage, comparables à METAFONT (voir le
thème \vref{theme-fontes}). METAPOST a été développé par John Hobby.
De nombreuses documentations et exemples sont disponibles sur Internet :
http://plan9.bell-labs.com/who/hobby/MetaPost.html et
http://melusine.eu.org/syracuse/metapost/, par exemple.
Pour faciliter l'utilisation de METAFONT, on peut se servir du package
MFpic. 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 :
\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}
le package PGF est un outil très intéressant 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 le package 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 LaTeX, pdfLaTeX, mais permet également de
générer du SVG avec
4ht (c'est le seul qui le permet à notre
connaissance). 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} \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}
![LaTeX
\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}](/lib/exe/fetch.php?media=wiki:latex:/img0c26bb1841f5678f81f912d2033ffbee.png)
le package pict2e comble les lacunes de l'environnement
picture
de . Il définit un ensemble de commandes permettant de
tracer des figures dont des cercles de tout diamètres des droites de toutes
pentes. Il 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,
il ne nécessite pas de compilation externe.
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">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}