Tracer des graphes avec GasTeX

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Tracer des graphes avec GasTeX

Messagepar XANA » Lundi 12 Mars 2018, 19:07

Bonjour,
je vais avoir besoin de tracer des graphes dans un fichier LaTeX et après quelques recherches, j'ai découvert que le package GasTeX permettait de le faire, sans qu'on ait à entrer les coordonnées des nœuds à la main et qui place tout bien comme il faut.

J'ai essayé avec un exemple trouvé sur ce site https://www.irif.fr/~jep//GasTeX/Images/14.html et quand je compile le fichier, j'ai tous les textes qui se placent au bon endroit, mais les cercles autour et les flèches n'apparaissent pas.

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage{gastex}

\begin{document}

   
\begin{figure}
  \begin{center}
    \unitlength=4pt
    \begin{picture}(40,34)(20,15)
    \gasset{Nw=5,Nh=5,Nmr=2.5,curvedepth=0}
    \thinlines
    \node[Nmarks=i,iangle=180](A1)(20,40){$1$}
    \node(A2)(40,40){$12$}
    \node[Nmarks=f,fangle=270](A3)(40,20){$13$}
    \node[Nmarks=f,fangle=270](A8)(60,20){$123$}
    \drawedge(A1,A2){$a$}
    \drawedge(A3,A1){$b$}
    \drawedge(A2,A8){$a$}
    \drawedge(A8,A3){$b$}
    \drawloop[loopangle=90](A1){$b$}
    \drawloop[loopangle=0](A8){$a$}
    \gasset{curvedepth=4}
    \drawedge(A2,A3){$b$}
    \drawedge(A3,A2){$a$}
    \end{picture}
  \end{center}
  \caption{...et émondage.}
\end{figure}
\end{documennt}

Il doit manquer des extensions ou des packages, mais je ne sais pas quoi...
Sinon il y a toujours la méthode où on dispose tout bien à la main sur GéoGébra et on exporte le code, mais ça devient fastidieux si le graphe est trop grand...

Merci
XANA
Déca-utilisateur
 
Messages: 26
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Publicité

Re: Tracer des graphes avec GasTeX

Messagepar balf » Lundi 12 Mars 2018, 21:19

En tout cas, ce code fonctionne avec la version 3.0 de GasTeX (celle des distributions est la version 2.8 et date de 2006, tandis que celle-ci date de 2013).

Les extensions requises sont : ifpdf, xkeyval, xifthen, calc, environ, xcolor, graphicx et auto-pst-pdf. Vérifiez que toutes sont installées, ainsi sans doute que pstricks (gastex l'utilise) .

Il faut placer le graphe dans un environnement gpicture et ajouter parmi les options de lancement de pdflatex, --enable-write18 si vous êtes sous MiKTeX, -shell-escape sous TeX Live ou MacTeX.

Voici le code, légèrement amélioré, et le résultat en p. j. À noter que l'option de langue de babel francais devrait maintenant être french, et chargée avec les options de classe depuis la version 3.10. D'autre part, n'utilisez pas l'environnement center pour une figure: l'environnement figure rajoute déjà des espacements verticaux. Enfin, avec l'option [pdflatex], il est inutile de donner les dimensions de la figure: pst-pdf coupe automatiquement la figure à ses dimensions réelles.

Code: Tout sélectionner
    \documentclass[10pt, a4paper, french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{babel}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}

    \usepackage[pdflatex, recompilepics,runs=2]{gastex}

    \begin{document}

    \begin{figure}
      \centering
        \unitlength=4pt
        \begin{gpicture}[frame]%(40,34)(20,15)
        \gasset{Nw=5,Nh=5,Nmr=2.5,curvedepth=0}
        \thinlines
        \node[Nmarks=i,iangle=180](A1)(20,40){$1$}
        \node(A2)(40,40){$12$}
        \node[Nmarks=f,fangle=270](A3)(40,20){$13$}
        \node[Nmarks=f,fangle=270](A8)(60,20){$123$}
        \drawedge(A1,A2){$a$}
        \drawedge(A3,A1){$b$}
        \drawedge(A2,A8){$a$}
        \drawedge(A8,A3){$b$}
        \drawloop[loopangle=90](A1){$b$}
        \drawloop[loopangle=0](A8){$a$}
        \gasset{curvedepth=4}
        \drawedge(A2,A3){$b$}
        \drawedge(A3,A2){$a$}
        \end{gpicture}
      \caption{...et émondage.}
    \end{figure}

    \end{document}


B. A.
Fichiers joints
pbgastex.pdf
(26.48 Kio) Téléchargé 38 fois
Dernière édition par balf le Mercredi 14 Mars 2018, 23:41, édité 1 fois.
balf
Zetta-utilisateur
 
Messages: 3792
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Tracer des graphes avec GasTeX

Messagepar XANA » Lundi 12 Mars 2018, 22:01

En effet c'était la version de 2006 que je possédais.
J'ai téléchargé les fichiers gastex.sty et gastex.pro sur le site (http://www.lsv.fr/~gastin/gastex/index.php#download) et je les ai copié là où ils disaient de les mettre (dans C:\Program Files\MiKTeX 2.9\tex\latex\gastex et dans C:\Program Files\MiKTeX 2.9\dvips\gastex), mais même après un redémarrage de mon ordinateur quand je compile le fichier, ça me donne un erreur en me disant qu'il ne connais pas les options pdflatex, recompilep et runs=2 sont inconnues pour le package gastex et que l'environnement gpicture n'est pas défini.
J'ai peu être fait une fausse manipulation parce que je n'avais encore jamais touché à ces dossiers avant...
XANA
Déca-utilisateur
 
Messages: 26
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Tracer des graphes avec GasTeX

Messagepar balf » Lundi 12 Mars 2018, 22:49

De toute façon, comme ces versions ne font par partie de la distribution, il vaut mieux les installer dans une arborescence locale – que MiKTeX n'installe pas par défaut, contrairement à TeX Live. Vous devriez désinstaller la version distribuée et installer les deux fichiers dans un dossier, disons TeXMF-local, avec la même arborescence. Si vous n'en avez pas, créez-en un et validez-le en tant que TeX root avec MiKTeX Settings (comme administtrateur et comme utilisateur). Une fois les fichiers correctement installés dans ce dossier, rafraîchissez la base de données des fichiers installés (FNDB).

Cela devrait marcher, puisque ça a marché pour moi. Simplement, n'oubliez pas de vérifier que vous avez bien les extensions nécessaires installées, et si vous avez bien ajouté l'option --enable-write18 à la ligne de commande de pdflatex dans les options/préférences de votre éditeur.

B. A.
Dernière édition par balf le Mardi 13 Mars 2018, 20:07, édité 1 fois.
balf
Zetta-utilisateur
 
Messages: 3792
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Tracer des graphes avec GasTeX

Messagepar gigiair » Mardi 13 Mars 2018, 19:39

Je me permet d'intervenir un peu hors sujet (à peine). J'ai essayé de compiler les exemples donnés sur le site de Gastex. Le premier exemple testé à conduit à un échec. Je me suis dit que la maintenance de Gastex laissait à désirer.
Il existe un logiciel spécialisé pour ce genre de diagrammes avec la possibilité d'exporter vers tikz ou vers pstricks: graphviz.
Je me suis amusé à essayé de reproduire le diagramme proposé, je ne suis pas un pro de graphviz, voici le code que j'ai composé :
Code: Tout sélectionner
digraph {
   node [label="\N"];
   {
      graph [rank=same,
         rankdir=LR
      ];
      A0       [label="",
         shape=plaintext];
      A       [label=1];
      B       [label=12];
   }
   {
      graph [rank=same,
         rankdir=LR
      ];
      C       [label=13];
      D       [label=123];
   }
   A0 -> A;
   A:nw -> A:ne    [label=b];
   A -> B    [label=a];
   B -> C    [label=b];
   B -> D    [label=a];
   C -> A    [label=b];
   C -> B    [label=a];
   C0    [label="",
      shape=none];
   C:s -> C0;
   D -> C    [constraint=none,
      label=b];
   D:ne -> D:se    [label=a];
   D0    [label="",
      shape=none];
   D:s -> D0;
}

J'ai juste parcouru en diagonale la documentation dotguide.pdf, le code est facile à comprendre très déclaratif.
La composition de ce diagramme prend très peu de temps, juste rechercher les attributs qui réalisent le diagramme désiré.

Et voilà le rendu :
gastex.png


Le code converti en tikz par dot2tex
dot2tex permet le choix entre les formats tikz, pgf ou pstricks. On peut exporter sous forme d'un fichier latex compilable, ou simplement d'un environnement graphique à inclure dans un fichier LaTeX. J'ai créé une fonction Elisp qui automatise l'insertion du code dans un fichier latex, mais ça ne peut marcher que sous Emacs.

Code: Tout sélectionner
% Start of code
% \begin{tikzpicture}[anchor=mid,>=latex',line join=bevel,]
\begin{tikzpicture}[>=latex',line join=bevel,]
  \pgfsetlinewidth{1bp}
%%
\begin{scope}
  \pgfsetstrokecolor{black}
  \definecolor{strokecol}{rgb}{1.0,1.0,1.0};
  \pgfsetstrokecolor{strokecol}
  \definecolor{fillcol}{rgb}{1.0,1.0,1.0};
  \pgfsetfillcolor{fillcol}
  \filldraw (0.0bp,0.0bp) -- (0.0bp,239.0bp) -- (313.0bp,239.0bp) -- (313.0bp,0.0bp) -- cycle;
\end{scope}
\begin{scope}
  \pgfsetstrokecolor{black}
  \definecolor{strokecol}{rgb}{1.0,1.0,1.0};
  \pgfsetstrokecolor{strokecol}
  \definecolor{fillcol}{rgb}{1.0,1.0,1.0};
  \pgfsetfillcolor{fillcol}
  \filldraw (0.0bp,0.0bp) -- (0.0bp,239.0bp) -- (313.0bp,239.0bp) -- (313.0bp,0.0bp) -- cycle;
\end{scope}
  \pgfsetcolor{black}
  % Edge: D -> D0
  \draw [->] (251.0bp,73.0bp) .. controls (251.0bp,64.299bp) and (251.0bp,54.809bp)  .. (251.0bp,36.025bp);
  % Edge: B -> C
  \draw [->] (185.96bp,169.26bp) .. controls (176.86bp,163.41bp) and (167.14bp,155.27bp)  .. (162.0bp,145.0bp) .. controls (158.07bp,137.16bp) and (156.93bp,127.82bp)  .. (157.7bp,109.13bp);
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (170.5bp,136.0bp) node {b};
  % Edge: A -> A
  \draw [->] (102.0bp,196.0bp) .. controls (93.0bp,206.33bp) and (93.0bp,221.0bp)  .. (117.0bp,221.0bp) .. controls (134.62bp,221.0bp) and (139.31bp,213.09bp)  .. (132.0bp,196.0bp);
  \draw (117.0bp,230.0bp) node {b};
  % Edge: D -> D
  \draw [->] (266.0bp,106.0bp) .. controls (281.0bp,115.0bp) and (296.0bp,115.0bp)  .. (296.0bp,91.0bp) .. controls (296.0bp,72.062bp) and (286.66bp,68.068bp)  .. (266.0bp,76.0bp);
  \draw (304.5bp,91.0bp) node {a};
  % Edge: D -> C
  \draw [->] (223.71bp,91.0bp) .. controls (215.66bp,91.0bp) and (206.71bp,91.0bp)  .. (188.0bp,91.0bp);
  \draw (206.0bp,103.0bp) node {b};
  % Edge: A0 -> A
  \draw [->] (54.07bp,181.0bp) .. controls (62.669bp,181.0bp) and (71.267bp,181.0bp)  .. (89.96bp,181.0bp);
  % Edge: C -> A
  \draw [->] (142.94bp,104.72bp) .. controls (135.88bp,110.66bp) and (128.42bp,118.34bp)  .. (124.0bp,127.0bp) .. controls (119.98bp,134.87bp) and (117.98bp,144.23bp)  .. (116.4bp,162.91bp);
  \draw (132.5bp,136.0bp) node {b};
  % Edge: C -> B
  \draw [->] (171.54bp,107.76bp) .. controls (175.34bp,113.69bp) and (179.53bp,120.55bp)  .. (183.0bp,127.0bp) .. controls (187.66bp,135.66bp) and (192.24bp,145.4bp)  .. (200.21bp,163.48bp);
  \draw (199.5bp,136.0bp) node {a};
  % Edge: A -> B
  \draw [->] (144.0bp,181.0bp) .. controls (152.03bp,181.0bp) and (160.97bp,181.0bp)  .. (179.71bp,181.0bp);
  \draw (162.0bp,192.0bp) node {a};
  % Edge: C -> C0
  \draw [->] (161.0bp,73.0bp) .. controls (161.0bp,64.299bp) and (161.0bp,54.809bp)  .. (161.0bp,36.025bp);
  % Edge: B -> D
  \draw [->] (215.28bp,163.45bp) .. controls (221.77bp,150.46bp) and (230.92bp,132.16bp)  .. (242.91bp,108.18bp);
  \draw (240.5bp,136.0bp) node {a};
  % Node: A
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (117.0bp,181.0bp) ellipse (27.0bp and 18.0bp);
  \draw (117.0bp,181.0bp) node {1};
\end{scope}
  % Node: C
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (161.0bp,91.0bp) ellipse (27.0bp and 18.0bp);
  \draw (161.0bp,91.0bp) node {13};
\end{scope}
  % Node: B
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (207.0bp,181.0bp) ellipse (27.0bp and 18.0bp);
  \draw (207.0bp,181.0bp) node {12};
\end{scope}
  % Node: D
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (251.0bp,91.0bp) ellipse (27.0bp and 18.0bp);
  \draw (251.0bp,91.0bp) node {123};
\end{scope}
%
\end{tikzpicture}
% End of code

JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2364
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Tracer des graphes avec GasTeX

Messagepar XANA » Mercredi 14 Mars 2018, 20:07

Bonsoir,
ça ne fonctionne pas du tout... J'ai désinstallé MikTeX et mis TeXLive à la place et ça ne fonctionne pas non plus...

Après j'ai vu la solution de Gigiair, mais je n'ai pas réussi à installer dot2tex. J'ai vu qu'il existe un package dot2texi qui permet de faire la même chose, mais je n'ai pas réussi à le faire fonctionner (décidément :cry: )
XANA
Déca-utilisateur
 
Messages: 26
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Tracer des graphes avec GasTeX

Messagepar gigiair » Mercredi 14 Mars 2018, 22:59

Je suis sous Linux, j'ai une machine sous WindowsXP inutilisable ou presque maintenant. Je ne peux donc pas aider pour ce système malheureusement.

Graphviz a un installateur sous Windows, https://graphviz.gitlab.io/_pages/Downl ... ndows.html
Il est possible de produire directement par dot (l'exécutable de graphviz pour créer des graphes orientés) dans une multitude de formats tpng, eps, jpeg, svg etc...)
et les inclure dans un document LaTeX.
Il existe un package dot2texi qui permet d'insérer du code dot inspiré de gnuplottex, donc avec usage du -shell-escape. C'est à tester.

La documentation de graphviz (dotguide.pdf) fait 40 pages, c'est peu, si comme tu le dis tu as beaucoup de diagrammes de ce type à réaliser, ce n'est pas un investissement très lourd (c'est en anglais, malheureusement).

le programme dot2tex ne fonctionne sous Windows que par l'intermédiaire de Python.IL faut donc installer Python, pyparsing, graphviz, preview en plus de l'installation LaTeX, comme il est dit dans la doc. http://dot2tex.readthedocs.io/en/latest ... guide.html
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2364
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Tracer des graphes avec GasTeX

Messagepar balf » Jeudi 15 Mars 2018, 02:30

Puisque GasTeX repose sur pstricks, je me suis dit que ce devait être faisable directement avec pst-node. De fait, ce n'est pas très difficile. Voici un code:
Code: Tout sélectionner
    \documentclass[11pt, border = 3pt]{standalone}
    \usepackage{tikz}
    \usepackage{pst-node}
    \usepackage{auto-pst-pdf}

    \begin{document}

    \psset{arrowinset=0.12, arrows =->, shortput = nab}
    \everypsbox{\scriptstyle}
     \psset{mnode=Circle, radius = 0.35cm}
    \def\pscolhookii{\hspace{-1cm}}

    $ \begin{psmatrix}[colsep=1.5cm, emnode = p]
    %% nœuds
    & [name = 1] 1 & [name = 12] 12\\
    & & [name = 13] 13 &[name = 123] 123
    %%% \flèches et labels
    \foreach \n in {13,123}{\nput[labelsep = 3ex]{-90}{\n}{\pnode{out\n}}\ncline{\n}{out\n}}
    \ncline{1,1}{1}
    \psset{labelsep = 2pt}
    \psscalebox{0.9 1.2}{ \nccircle[nodesep =-0.6pt, arrows =<-]{1}{0.4cm}}\nput[labelsep=20pt]{90}{1}{b}
    \ncline{1}{12}\naput{a}\ncline{1}{13}\nbput[npos=0.45]{b}
    \ncarc[arcangleA=30, arcangleB=25]{12}{13}\naput{b} \ncline{12}{123}^{a}
    \ncline{123}{13}_{b}\ncarc[arcangleA=30, arcangleB=25]{13}{12}\naput{a}
    \psscalebox{1.2 0.9}{ \nccircle[angle = -90, nodesep =2pt]{123}{0.4cm}}\nbput[labelsep = 4pt]{a}
    \end{psmatrix} $

    \end{document}

Résultat en p.j.
B. A.
Fichiers joints
comme_GasTeX.pdf
(5.75 Kio) Téléchargé 25 fois
Dernière édition par balf le Jeudi 15 Mars 2018, 22:58, édité 1 fois.
balf
Zetta-utilisateur
 
Messages: 3792
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Tracer des graphes avec GasTeX

Messagepar XANA » Jeudi 15 Mars 2018, 21:01

Oh c'est bon ça a fonctionné ! En fait j'ai ajouté le texte -shell-escape dans l'invite de commande à la main et là ça a fonctionné, alors qu'avant je le mettait dans l'éditeur, et ça me marquait que la commande était ignorée...
Merci !
XANA
Déca-utilisateur
 
Messages: 26
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Tracer des graphes avec GasTeX

Messagepar balf » Jeudi 15 Mars 2018, 23:01

XANA a écrit:En fait j'ai ajouté le texte -shell-escape dans l'invite de commande à la main et là ça a fonctionné, alors qu'avant je le mettais dans l'éditeur, et ça me marquait que la commande était ignorée...
Votre éditeur, c'est quoi? Il est tout de même étrange que vous ne parveniez pas à ajouter une option à la ligne de commande dans le fichier de configuration…
B. A.
balf
Zetta-utilisateur
 
Messages: 3792
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Tracer des graphes avec GasTeX

Messagepar XANA » Jeudi 15 Mars 2018, 23:07

TeXmaker, mais c'est sûrement moi qui les ai mises au mauvais endroit (c'est la première fois que j'allais dans ces menus là), après coup, j'ai réessayé dans commandes utilisateurs et là ça a bien fonctionné...
XANA
Déca-utilisateur
 
Messages: 26
Inscription: Lundi 04 Septembre 2017, 16:56
Statut actuel: Post-bac | CPGE

Re: Tracer des graphes avec GasTeX

Messagepar balf » Vendredi 16 Mars 2018, 00:40

Juste au cas où, voici une copie d'écran de ma fenêtre de configuration de TeXmaker (pas très lisible, mais on doit pouvoir déchiffrer) :
myconfigtexmaker.png

B. A.
balf
Zetta-utilisateur
 
Messages: 3792
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google [Bot], Grapeshot [Crawler], Proximic [Spider] et 27 invités