Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
3_composition:illustrations:dessiner_avec_tex [2021/12/09 08:08] – Suite de la traduction. yannick.tanguy3_composition:illustrations:dessiner_avec_tex [2022/10/04 12:52] (Version actuelle) – [Avec l'extension “TikZ”] Ajout de lien vers TeX4ht dbitouze
Ligne 1: Ligne 1:
 ====== Comment dessiner avec TeX? ====== ====== 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 LaTeX, avec ses versions améliorées comme ''eepic'', au dessin sophistiqué (mais lent) avec [[ctanpkg>PicTeX]]. En fonction de votre type de dessin et de votre configuration, voici quelques systèmes à envisager.+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 <latex>\LaTeX</latex> au dessin sophistiqué avec [[ctanpkg>PSTricks]] ou [[ctanpkg>tikz|TikZ]]. En fonction de votre type de dessin et de votre configuration, voici quelques systèmes à envisager.
  
 ===== Avec les commandes de base ===== ===== Avec les commandes de base =====
  
-L'environnement ''picture'' offre des capacités de dessin plutôt primitives : 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 [[ctanpkg>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. +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 [[ctanpkg>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. 
  
-===== Avec l'extension “epic” =====+Voici un exemple d'utilisation :
  
-FIXME+<WRAP column 45ex> 
 +<code latex> 
 +\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} 
 +</code> 
 +</WRAP> 
 +<WRAP column 30ex> 
 +<latexdoc> 
 +\documentclass{article} 
 +  \pagestyle{empty}
  
-[[ctanpkg>epic]] was designed to make use of the LaTeX ''picture'' environment somewhat less agonising; [[ctanpkg>eepic]] extends it, and is capable of using ''tpic'' ''\special'' commands to improve printing performance (If the ''\special''s aren't availablethe [[ctanpkg>eepic|eepicemu]] will do the business, far less efficiently.+\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} 
 +</latexdoc> 
 +</WRAP> 
 +<WRAP clear /> 
 + 
 +===== Avec les extensions “epic”, “eepic” et ''eepicemu'' ===== 
 + 
 +L'extension [[ctanpkg>epic]] a été conçue pour utiliser l'environnement ''picture'' de manière plus efficace. L'extension [[ctanpkg>eepic]] l'étend et est capable d'utiliser les commandes ''\special'' de ''tpic'' pour améliorer les performances d'impressionSi les commandes ''\special'' ne sont pas disponiblesl'extension [[ctanpkg>eepic|eepicemu]] pourra effectuer le traitement mais bien moins efficacement
  
 ===== Avec l'extension “pict2e” ===== ===== Avec l'extension “pict2e” =====
  
-[[ctanpkg>pict2e]]; this was advertised in [[1_generalites:documentation:livres:documents_sur_latex|the LaTeX manual]], but didn't appear for nearly ten years after publication of the book!  It removes all the petty restrictions that surround the use of the ''picture'' environment It therefore suffers //only// from the rather eccentric drawing language of the environmentand is a far more useful tool than the original environment has ever been (Note that [[ctanpkg>pict2e]] supersedes David Carlisle's stop-gap [[ctanpkg>pspicture]].)+L'extension [[ctanpkg>pict2e]] comble les lacunes de l'environnement ''picture'' de <latex>\LaTeX</latex>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 [[ctanpkg>pstricks|PStricks]] mais présente le gros avantage de fournir des pilotes permettant la compilation avec <latex>\LaTeX</latex> //et// pdfLaTeXcomme le montre l'exemple ci-dessousDe plus, elle ne nécessite pas de compilation externe. 
 + 
 +Voici des courbes de Bézier (quadratique et cubique) avec [[ctanpkg>pict2e]] 
 + 
 +<code latex> 
 +\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}   
 +</code>
  
 ===== Avec l'extension “PICTeX” ===== ===== Avec l'extension “PICTeX” =====
  
-[[ctanpkg>pictex|PICTeX]] is a venerable, and very powerful, system, that draws by placing dots on the page to give the effect of a line or curve While this has the potential of great powerit is (of course) much slower than any of the other established packages.  What's morethere are problems with its [[1_generalites:documentation:documents:documents_extensions:manuel_de_pictex|documentation]].+L'extension [[ctanpkg>pictex|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 courbeBien qu'il y ait ici beaucoup de potentielcette extention est beaucoup plus lente que n'importe laquelle des autres extensions établies. De plussa [[1_generalites:documentation:documents:documents_extensions:manuel_de_pictex|documentation]] pose des difficultés 
 + 
 +Vous avez aimé PicTeX mais il a été trop gourmand en mémoire ou en temps ? Testez l'extension [[ctanpkg>dratex]] d'Eitan Gurari : elle est tout aussi puissante, plus économe en mémoire et beaucoup plus lisible. 
 + 
 + 
 +===== Avec l'extension “XYpic” ===== 
 + 
 +L'extension [[ctanpkg>xypic|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 : 
 + 
 +<code latex> 
 +\documentclass{report} 
 +\usepackage{xy} 
 + 
 +\begin{document} 
 +\begin{xy} 
 +(0,0)*+{A}; (20,20)*+{B} **\dir{-}; 
 +(0,20)*+{C} **\dir2{~} 
 +\end{xy} 
 +\end{document} 
 +</code>
  
 ===== Avec l'extension “PSTricks” ===== ===== Avec l'extension “PSTricks” =====
  
-$\Reponse$  [[ctanpkg>PSTricks]] gives you access to the (considerable) power of PostScript via a set of TeX macroswhich talk to PostScript using [[5_fichiers:postscript:commandes_special|''\special'' commands]].  Since PostScript is itself a pretty powerful programming language, many astounding things can in principle be achieved using [[ctanpkg>PSTricks]] (a wide range of contributed packagesranging from world mapping to lens design diagrams, is available). [[ctanpkg>PSTricks]]' ''\special''s are by default specific to ''dvips'', but there is a [[ctanpkg>PSTricks]] "driver" that allow [[ctanpkg>Pstricks]] to operate under XeTeX.  pdfTeX users may use [[ctanpkg>pst-pdf]], which (like [[ctanpkg>epstopdf]] --- see [[3_composition:illustrations:inclure_une_image:inclure_un_fichier_pdf|pdfLaTeX graphics]]) generates PDF files using an auxiliary program, from [[ctanpkg>PSTricks]] commands ([[ctanpkg>pst-pdf]] also requires a recent installation of the [[ctanpkg>preview]] package).+[[ctanpkg>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 [[wpfr>Postscript|PostScript]]. Le principe est de  convertir des commandes <latex>\LaTeX</latex> (utilisant des commandes [[5_fichiers:postscript:commandes_special|\special]]) en commandes Postscript, qui seront interprétées lors de la visualisation de Postscript. 
 + 
 +Les commandes ''\special'' de [[ctanpkg>PSTricks]] sont par défaut spécifiques à ''dvips''mais il existe un pilote [[ctanpkg>PSTricks]] qui lui permet de fonctionner sous ''XeTeX''. Les utilisateurs de ''pdfTeX'' peuvent utiliser l'extension [[ctanpkg>pst-pdf]] quicomme l'extension [[ctanpkg>epstopdf]] présentée à la question « [[3_composition/illustrations/inclure_une_image/inclure_un_fichier_pdf2|Comment insérer des images avec “pdfLaTeX” ?]] », génère des fichiers PDF à l'aide d'un programme auxiliaire à partir des commandes [[ctanpkg>PSTricks]]. L'extension [[ctanpkg>pst-pdf]] nécessite également une version récente de l'extension [[ctanpkg>preview]].  
 + 
 +Il existe une liste de diffusion en anglais traitant de [[ctanpkg>PSTricks]] à laquelle vous pouvez vous [[https://tug.org/mailman/listinfo/pstricks|abonner]]. Vous pouvez aussi en parcourir ses [[https://tug.org/pipermail/pstricks/|archives]].  
 + 
 +Voici un exemple de dessin réalisé avec [[ctanpkg>pstricks|PStricks]] : 
 + 
 +<code latex> 
 +\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} 
 +</code>
  
-There is a PSTricks mailing list which you may [[https://tug.org/mailman/listinfo/pstricks|join]], or you may just browse the [[https://tug.org/pipermail/pstricks/|list archives]]. 
  
 ===== Avec l'extension “TikZ” ===== ===== Avec l'extension “TikZ” =====
  
-While [[ctanpkg>pstricks|PStricks]] is very powerful and convenient from "traditional" TeX, using it with pdfLaTeX is pretty tiresome : if you simply want the graphical capabilities, [[ctanpkg>pgf|PGF]], together with its "user-oriented" interface [[ctanpkg>tikz|TikZ]], may be a good bet for you While PDF has (in essence) the same graphical capabilities as PostScriptit isn't programmable; PGF provides LaTeX commands that will utilise the graphical capabilities of both PostScript and PDF equally [[ctanpkg>Pgf|Pgf]] has extensive mathematical support, which allows it to rival [[ctanpkg>PSTricks|PSTricks]]' use of the computation engine within PostScriptThe [[texdoc>TikZ|TikZ manual]] is enormousbut a simple introduction which allows the user to get a feel for the capabilities of the systemis available at [[http://cremeronline.com/LaTeX/minimaltikz.pdf]].+Alors que l'extension [[ctanpkg>pstricks|PStricks]] est très puissante et pratique avec les moteurs historiques de <latex>\TeX</latex>, 
 +son utilisation avec ''pdfLaTeX'' est assez fastidieuse. Dès lorsl'extension [[ctanpkg>pgf|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 [[ctanpkg>tikz|TikZ]] fournie avec cette extension est assez conviviale à utiliser. 
 +Mais il est possible d'ajouter d'autres syntaxespar exemple celle de [[ctanpkg>pstricks|PStricks]]. 
 +Grâce aux interfaces dorsalesil fonctionne avec <latex>\LaTeX</latex>, ''pdfLaTeX'', mais permet également de générer du SVG 
 +avec [[ctanpkg>TeX4ht]] (c'est le seul qui le permet à notre connaissance)Par ailleurs, [[ctanpkg>Pgf|PGF]] a un support mathématique étendu, 
 +ce qui lui permet de rivaliser avec l'utilisation du moteur de calcul de [[ctanpkg>PSTricks|PSTricks]].  
 + 
 +L'exemple ci-dessous est celui la page de garde du manuel de [[ctanpkg>pgf|PGF]], qui présente comment faire un arbre de type « soleil » : 
 + 
 +<WRAP column 45ex> 
 +<code latex> 
 +\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} 
 +</code> 
 +</WRAP> 
 + 
 +<WRAP column 45ex> 
 +<latexdoc> 
 +\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} 
 +</latexdoc> 
 +</WRAP> 
 +<WRAP clear /> 
 + 
 +Si le [[texdoc>TikZ|manuel de TikZ]] est énormeson 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 [[http://cahiers.gutenberg.eu.org/cg-bin/article/CG_2007___48_23_0.pdf|cahier GUTenberg n°48]]). D'autres documents proposent des présentations : 
 +  * le //[[http://cahiers.gutenberg.eu.org/cg-bin/article/CG_2008___50_5_0.pdf|Cahier GUTenberg n°50]]//: //Manuel de prise en main pour TikZ//, 
 +  * //[[http://math.et.info.free.fr/TikZ/index.html|TikZ pour l'impatient]]//, de Gérard Tisseau et Jacques Duma, 
 +  * //[[http://cremeronline.com/LaTeX/minimaltikz.pdf|A very minimal introduction to TikZ]]// de Jacques Crémer (en anglais).
  
 ===== Avec Metapost ===== ===== Avec Metapost =====
  
-$\Reponse$  MetaPost; you liked MetaFontbut never got to grips with font files? Try [[1_generalites:glossaire:qu_est_ce_que_metapost|MetaPost]] --- all the power of MetaFont, but it generates PostScript figures; MetaPost is nowadays part of most serious (La)TeX distributions.  Knuth uses it for all his work... +À la différence des solutions précédentes, [[1_generalites:glossaire:qu_est_ce_que_metapost|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'' 
-Note that you can [[3_composition:illustrations:dessiner_avec_tex|"embed" MetaPost source in your document]] (i.e., keep it in-line with your LaTeX code).+pour générer des graphiques ''PostScript''Notez que vous pouvez intégrer du code ''Metapost'' dans votre code <latex>\LaTeX</latex> 
 +comme évoqué dans la question «[[3_composition/illustrations/dessiner_avec_tex2|Quels langages de description graphique peut-on utiliser avec LaTeX ?]]». 
 + 
 +De nombreuses documentations et exemples sont disponibles sur Internet :  
 +  * la [[https://www.tug.org/metapost.html|page Metapost]] (en anglais) du [[1_generalites/gutenberg|TUG]] ; 
 +  * la [[http://melusine.eu.org/syracuse/metapost/|page Metapost]] du site [[https://melusine.eu.org/syracuse/|Syracuse]] 
 +  * le [[http://cahiers.gutenberg.eu.org/cg-bin/feuilleter?id=CG_2001___41|cahier GUTenberg n°41]] : //[[http://cahiers.gutenberg.eu.org/cg-bin/feuilleter?id=CG_2001___41|Metapostle dessin sous *TeX]]//, contenant le [[http://cahiers.gutenberg.eu.org/cg-bin/article/CG_2001___41_17_0.pdf|manuel de Metapost]] de John B. Hobby traduit en français ; 
 +  * le [[http://cahiers.gutenberg.eu.org/cg-bin/article/CG_2009___52-53_5_0.pdf|cahier GUTenberg n°52-53]] : //[[http://cahiers.gutenberg.eu.org/cg-bin/article/CG_2009___52-53_5_0.pdf|Metapost raconté aux piétons]]//.
  
 ===== Avec l'extension “Mfpic” ===== ===== Avec l'extension “Mfpic” =====
  
-You liked MetaFont (or MetaPost), but find the language difficult ? ''Mfpic'' makes up MetaFont or MetaPost code for you using familiar-looking (La)TeX macros.  Not //quite// the full power of MetaFont or MetaPost, but a friendlier interfaceand with MetaPost output the results can be used equally well in either LaTeX or pdfLaTeX.+L'extension [[ctanpkg>mfpic|Mfpic]] permet de faciliter l'utilisation de [[wpfr>Metafont]]. Il s'agit tout d'abord d'écrire 
 +du code <latex>\LaTeX</latex> à la manière de [[ctanpkg>pstricks|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 <latex>\LaTeX</latex> pour admirer les figuresVoici un exemple tiré de la [[texdoc>mfpic|documentation Mfpic]] :
  
-===== Avec l'extension “dratex” =====+<code latex> 
 +\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} 
 +</code>
  
-You liked PicTeX but don't have enough memory or time?  Look at the late Eitan Gurari'[[ctanpkg>dratex]]: it is just as powerfulbut is an entirely new implementation which is not as hard on memory, is much more readable, as well as in the author's book "TeX and LaTeX: Drawing and Literate Programming", which remains available from on-line booksellers.+[[ctanpkg>mfpic|MFpic]], même s'il n'a pas la puissance de [[ctanpkg>pstricks|PStricks]], a l'avantage de fonctionner à la fois avec <latex>\LaTeX</latex> et ''pdfLaTeX'' et de permettre de tracer très facilement des courbes.
  
------+===== Avec du code d'autres langages =====
  
-In addition, there are several means of generating code for your graphics application (''asymptote'', ''gnuplot'' and MetaPost, at leastin-line in your document, and then have them processed in a command spawned from your (La)TeX run For detailssee [[3_composition:illustrations:dessiner_avec_tex2|question]].+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 <latex>\TeX</latex>Pour plus de détailsvoir la question 
 +«[[3_composition:illustrations:dessiner_avec_tex2|Quels langages de description graphique peut-on utiliser avec LaTeX ?]]»
  
 ----- -----
3_composition/illustrations/dessiner_avec_tex.1639037333.txt.gz · Dernière modification : 2021/12/09 08:08 de yannick.tanguy
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0