Dessin basique math

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.

Dessin basique math

Messagepar hard0 » Jeudi 18 Janvier 2018, 02:31

Bonjour,

Alors voilà, j'aimerais créer un petit graphique linéaire qui se démultiplie.

Je sais tracer les traits et/ou vecteurs mais je ne parviens pas à entrer mon text au bon endroit, à emmener mon curseur d'écriture là ou il le faut.

En image vous trouverez ce que j'essais de réaliser...
Image

mon code pour tracer un vecteur, j'ai du mal à comprendre comment fonctionne les coordonnées (x,y) .. (en gras)

Code: Tout sélectionner
\setlength{\unitlength}{1mm}
    \thicklines
    \begin{picture}(40,20)
      \put(0,0){
      \vector[b](1,1)[/b]{10}
               }
   \end{picture}


Merci de votre aide.

Hard0.
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Publicité

Re: Dessin basique math

Messagepar gigiair » Jeudi 18 Janvier 2018, 06:16

Les coordonnées du vecteur directeur de vector doivent être entières de valeur absolue inférieure à 6. En outre l'épaisseur du trait est limitée à \thinlines et \thicklines.
Lire la doc de pict2e :
Code: Tout sélectionner
texdoc pict2e

L'extension pict2e permet d’accroître considérablement les possibilités de picture.
Voici un exemple extrait de la documentation de pict2e
Code: Tout sélectionner
%%% ecm.tex ---
%% Author: gigiair
\documentclass[12pt,draft,a4paper,french]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
%\usepackage{pict2e}
\usepackage{babel}
\frenchbsetup{og=«, fg=»}

\begin{document}
[img][/img]
 \begin{picture}(100,100)(-50,-50)
    \put(-50,-50){\framebox(100,100){}}
    \thinlines
    \put(0,0){\vector(1,0){50}}
    \thicklines
    \put(0,0){\vector(2,1){50}}
    \linethickness{1.4pt}
    \put(0,0){\vector(1,1){50}}
    \linethickness{2.0pt}
    \put(0,0){\vector(1,2){25}}
 
    \linethickness{3.2pt}
    \put(0,0){\vector(0,1){50}}
    \linethickness{4.4pt}
    \put(0,0){\vector(-1,1){50}}
    \linethickness{5.0pt}
    \put(0,0){\vector(-1,-1){50}}
    \linethickness{8.0pt}
    \put(0,0){\vector(1,-1){50}}
    \thicklines
    \thinlines
    \put(1,-30){\line(1,0){10}}
    \put(-1,-30){\line(-1,0){10}}
    \put(0,-30){\vector(0,-1){0}}
    \put(0,-30){\vector(1,1){0}}
    \put(0,-30){\vector(-1,1){0}}
  \end{picture}


\end{document}

Compiler cet ecm, puis décommenter %\usepackage{pict2e} et comparer.

L'environnement picture permet d'utiliser des unités de longueur autres que \unitlength.
J'ai un petit exemple pour montrer comment démarrer le croquis. Il y a sûrement mieux, c'est pour être plus clair et donner le principe.
Code: Tout sélectionner
%%% martyr.tex ---
%% Author: gigiair
\documentclass[12pt,draft,a4paper,french]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pict2e}
\usepackage[calc]{picture}
\usepackage{graphicx}
\usepackage{babel}
\frenchbsetup{og=«, fg=»}

\begin{document}

\begin{picture}(10cm,5cm)
  \put(2em,0){\(a\;\)
    \put(0,.5ex){\vector(1,0){4em}
      \put(4.5em,0){\(b\;\)\vector(3,1){4em}\vector(3,-1){4em}}}}
\end{picture}

\end{document}


La figure comportant des éléments répétitifs, il peut être judicieux d'écrire une ou deux macros pour simplifier le code.

Une solution, sans doute à améliorer
Code: Tout sélectionner
%%% martyr.tex ---
%% Author: gigiair
\documentclass[12pt,draft,a4paper,french]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pict2e}
\usepackage[calc]{picture}
\usepackage{graphicx}
\usepackage{babel}
\frenchbsetup{og=«, fg=»}
\newcommand{\departdroit}[2]{#1\put(\arrowsep,\heightof{#1}/2){%
    \vector(1,0){\arrowlength}\put(\arrowlength+\arrowsep,0pt-\heightof{#1}/2){#2}}}

\newcommand{\departfourchu}[3]{%
  #1\put(\arrowsep,\heightof{#1}/2){%
    \vector(3,1){\arrowlength}\put(%
    \arrowlength+\arrowsep,\arrowlength/3-\heightof{#1}/2
    ){#2}
    \vector(3,-1){\arrowlength}\put(%
        \arrowlength+\arrowsep,0pt-\arrowlength/3-\heightof{#1}/2){#3}}}


\begin{document}

\newlength{\arrowlength} % Longueur d'une flèche (projection horizontale de la )
\setlength{\arrowlength}{4em}

\newlength{\arrowsep} % séparation précédant la flèche
\setlength{\arrowsep}{.5em}

\begin{picture}(10cm,5cm)

\departdroit{\(a\)}{%
  \departfourchu{\(b\)}{%
  \departdroit{\(c\)}{\(d\)}}{%
  \departdroit{\(e\)}{\(f\)}}} 
   
\end{picture}

\end{document}

Les défauts sont évidents, il faudrait mettre les données dans des boîtes.

croquis-fleche.png
croquis-fleche.png (2.02 Kio) Vu 444 fois
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar hard0 » Jeudi 18 Janvier 2018, 20:48

Merci pour ta réponse qui m'es d'une aide précieuse.

As tu des explications concernant la création des deux macros?

Le code ne fonctionne pas chez moi, j'ai de nombreuses erreurs du type faisant intervenir \@gobble et de nombreuses autres.
Est-ce à cause de packages non installés ? Car j'ai bien mis tous ceux indiqué sur ton code.

Je te remercie.

Hard0.
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar gigiair » Jeudi 18 Janvier 2018, 23:00

Il n'y a pas de raison que ça ne fonctionne pas sur une installation correctement réalisée.
Ajouter \listfiles dans le fichier source, et poster intégralement le fichier de log ici.
Par exemple le fichier martyr.tex déjà posté et modifié http://ix.io/Elh
J'utilise systématiquement les classes de koma-script.On peut sans problème remplacer scrartcl par article.
Les extensions utilisée picture et pict2e sont des standard. Il ne faut surtout pas changer l'ordre du chargement (pict2e avant picture).
Graphicx n'est en rien nécessaire, ni frenchbsetup. (J'ai ça parce que j'utilise des gabarits pour créer mes fichiers .tex et je m'en trouve bien).

Le code du fichier martyr.tex est à revoir. J'avais oublié que dans la commande \put(x,y){garniture}, la garniture ne doit comporter aucun espace ni retour à la ligne intempestif.
C'est surtout les retours à la ligne qui sont sournois. Le résultat risque de ne pas être celui que l'on attend et on se demande bien pourquoi.
J'avais oublié ce détail. Je n'utilise pas l'environnement picture très souvent. J'ai un autre fichier source en chantier, mais il faut que je le revoie.

LaTeX et l'environnement picture ne sont probablement pas les solutions les plus simples pour réaliser votre schéma. Le logiciel graphviz est conçu pour ça. Le code est purement déclaratif et le codage consiste à décrire les attributs que l'on désire. Là non plus, je ne suis pas un pro de graphviz, juste un grand débutant. Voici un exemple de code dot (un utilitaire de graphviz)
Code: Tout sélectionner
digraph { rankdir=LR;nodesep=2;width=8;height=2.5
node [shape="none",height=.25,width=.5]
A->B ;
B->C;
C->D;
D->E;
B->F;
F->G;
G->H
}

Les noeuds sont garnis par des lettres capitales A, B, ...ce qui ne permet pas de composer votre exemple, mais il existe un utilitaire dot2tex qui convertit les fichiers dot en tex utilisant tikz.
Voici ce que j'obtiens avec cet exemple converti en tex , puis en remplaçant A, B, ... par ce que l'on veut. http://ix.io/Elx
Je donne juste une piste que je pense utile. C'est à chacun de voir si elle l'est.

edit :
J'ai regardé d'un peu plus près comment fonctionne dot et dot2tex. Il n'est pas nécessaire d'éditer le fichier exporté par dot2tex. Avec l'option -t math de dot2tex et la définition de labels pour chaque noeud, on peut obtenir ce que l'on veut. Il suffit de parcourir un peu les docs.
Voir un peu plus loin dans ce fil.

croquis-fleche-via-dot.png
croquis-fleche-via-dot.png (4.11 Kio) Vu 417 fois
Dernière édition par gigiair le Samedi 20 Janvier 2018, 17:24, édité 3 fois.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar hard0 » Jeudi 18 Janvier 2018, 23:16

gigiair a écrit:Ajouter \listfiles dans le fichier source, et poster intégralement le fichier de log ici.


Ayant commencé latex récemment, je ne sais pas comment réaliser cette manip...
Le fichier "source" c'est le fichier ou j'écris mon code?
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar hard0 » Jeudi 18 Janvier 2018, 23:32

Je pense que c'est ce que tu souhaites avoir.

J'ai enlevé mon code excepté la partie que j'essais de réaliser. tout en laissant les packages utilisés etc...

https://catup.pw/2mMJLrs
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar gigiair » Vendredi 19 Janvier 2018, 00:11

hard0 a écrit:
gigiair a écrit:Ajouter \listfiles dans le fichier source, et poster intégralement le fichier de log ici.


Ayant commencé latex récemment, je ne sais pas comment réaliser cette manip...
Le fichier "source" c'est le fichier ou j'écris mon code?

Tout à fait.
IL suffit avec un éditeur d'ajouter \listfiles juste avant le \begin{document}
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar gigiair » Vendredi 19 Janvier 2018, 00:20

hard0 a écrit:Je pense que c'est ce que tu souhaites avoir.

J'ai enlevé mon code excepté la partie que j'essais de réaliser. tout en laissant les packages utilisés etc...

https://catup.pw/2mMJLrs

Ce site est une horreur. Je ne peux pas y accéder.
Copier le fichier, et le coller entre deux balises \[code\]\[/code\] créées en cliquant sur le bouton du même nom.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar hard0 » Vendredi 19 Janvier 2018, 00:38

Cette solution me paraît très bien!

Il "suffit" de triturer la doc tikz et les possibilités deviennent énorme.
En revanche, dans MikTex package manager il n'existe pas juste le package "tikz".
Je ne parviens pas à trouver un autre moyen.
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar anonyme74170 » Vendredi 19 Janvier 2018, 07:53

Bonjour,

Je comprends que Hard0 part sur une solution Tikz. Pour aller au but :
1) Tikz pour l'impatient § 2.5.1 p 43 : somme de deux vecteurs et chapitre 6 graphes.
2) pgfmanuel : tree library p 751 de la version 3.01a du manuel.

Cdlt.
AO
anonyme74170
Hecto-utilisateur
 
Messages: 59
Inscription: Jeudi 21 Avril 2016, 10:34
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar hard0 » Vendredi 19 Janvier 2018, 08:58

Merci AO,

J'ai déjà commencé Tikz pour l'impatient qui est super.

Mais j'ai toujours le problème du package tikz introuvable sur package manager.

Hard0.
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar balf » Vendredi 19 Janvier 2018, 11:28

Il n'existe pas de paquet tikz : c'est pgf qu'il faut installer.
Vous pouvez aussi jeter un coup d'œil à la famille pstricks. La documentation est très complète, mais les renseignements sont plus faciles à trouver que dans le manuel de pgf (près de 1200 pages !) et la syntaxe est celle de LaTeX (en fait c'est une interface LaTeX au langage PostScript d'Adobe), ce qui la rend plus rapidement maîtrisable.
En particulier, pour le problème qui vous occupe, vous pouvez regarder ce qu'on peut faire avec l'extension pst-node.

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

Re: Dessin basique math

Messagepar hard0 » Vendredi 19 Janvier 2018, 12:48

Merci à vous tous pour ces explications claires et votre aide précieuse.
Tout fonctionne correctement.

Il ne me reste plus qu'à lire les docs pour apprendre à dessiner.

Merci beaucoup.

Hard0.
hard0
Déca-utilisateur
 
Messages: 17
Inscription: Mercredi 17 Janvier 2018, 15:55
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Dessin basique math

Messagepar gigiair » Vendredi 19 Janvier 2018, 14:11

balf a écrit:En particulier, pour le problème qui vous occupe, vous pouvez regarder ce qu'on peut faire avec l'extension pst-node

La réponse ne me paraît pas pertinente. l'OP désire utiliser graphviz pour produire son graphique et l'utilitaire dot2tex pour exporter en tikz. (il peut aussi exporter en pstricks avec l'option -f pst). Par défaut le fichier exporté comporte l'entête complète et elle ne fait appel qu'à pstricks de base.

Il existe une option de dot2tex pour exporter le texte qui apparaît dans les noeuds du graphe en mode mathématique.
Avec cette option, le code
Code: Tout sélectionner
digraph { rankdir=LR;size="4.2";
   nodesep="2";
   
   node [shape="none",height=".25",width=".5"]
A->B ;
B->C;
C->D;
D->E;
B->F;
F->G;
G->H;
A [label="x^2_1"];
B [label="y^t_5"];
}

passé à la moulinette dot2tex avec l'option -t math produit le code tikz
Code: Tout sélectionner
\documentclass{article}
\usepackage[x11names, rgb]{xcolor}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{snakes,arrows,shapes}
\usepackage{amsmath}
%
%
\begin{document}
\pagestyle{empty}
%
%
%

%\enlargethispage{100cm}
% Start of code
% \begin{tikzpicture}[anchor=mid,>=latex',line join=bevel,]
\begin{tikzpicture}[>=latex',line join=bevel,]
  \pgfsetlinewidth{1bp}
%%
\pgfsetcolor{black}
  % Edge: D -> E
  \draw [->] (252.3bp,178.5bp) .. controls (260.02bp,178.5bp) and (269.29bp,178.5bp)  .. (287.9bp,178.5bp);
  % Edge: F -> G
  \draw [->] (180.3bp,11.5bp) .. controls (188.02bp,11.5bp) and (197.29bp,11.5bp)  .. (215.9bp,11.5bp);
  % Edge: B -> C
  \draw [->] (100.73bp,106.18bp) .. controls (112.12bp,119.85bp) and (131.15bp,142.68bp)  .. (151.35bp,166.92bp);
  % Edge: G -> H
  \draw [->] (252.3bp,11.5bp) .. controls (260.02bp,11.5bp) and (269.29bp,11.5bp)  .. (287.9bp,11.5bp);
  % Edge: B -> F
  \draw [->] (100.73bp,82.959bp) .. controls (112.06bp,69.532bp) and (130.94bp,47.144bp)  .. (151.12bp,23.21bp);
  % Edge: A -> B
  \draw [->] (36.303bp,94.5bp) .. controls (44.017bp,94.5bp) and (53.288bp,94.5bp)  .. (71.896bp,94.5bp);
  % Edge: C -> D
  \draw [->] (180.3bp,178.5bp) .. controls (188.02bp,178.5bp) and (197.29bp,178.5bp)  .. (215.9bp,178.5bp);
  % Node: A
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (18.0bp,94.5bp) node {$a_1^2$};
\end{scope}
  % Node: C
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (162.0bp,178.5bp) node {C};
\end{scope}
  % Node: B
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (90.0bp,94.5bp) node {$b_1^{x+1}$};
\end{scope}
  % Node: E
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (306.0bp,178.5bp) node {E};
\end{scope}
  % Node: D
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (234.0bp,178.5bp) node {D};
\end{scope}
  % Node: G
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (234.0bp,11.5bp) node {G};
\end{scope}
  % Node: F
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (162.0bp,11.5bp) node {F};
\end{scope}
  % Node: H
\begin{scope}
  \definecolor{strokecol}{rgb}{0.0,0.0,0.0};
  \pgfsetstrokecolor{strokecol}
  \draw (306.0bp,11.5bp) node {H};
\end{scope}
%
\end{tikzpicture}
% End of code

%
\end{document}
%

avec l'option -t pst dot2pst produira le code
Code: Tout sélectionner
\documentclass{article}
% (0.0bp,0.0bp)(349.0bp,190.0bp)

\usepackage[x11names]{xcolor}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{pstricks}
\usepackage{amsmath}
%
%
%


\begin{document}
\pagestyle{empty}
%
%
\enlargethispage{100cm}

% Start of code
\begin{pspicture}[linewidth=1bp](0.0bp,0.0bp)(349.0bp,190.0bp)

  \pstVerb{2 setlinejoin} % set line join style to 'mitre'
%%
\psset{linecolor=black}
  % Edge: D -> E
  \psbezier[arrows=->](277.3bp,178.5bp)(285.02bp,178.5bp)(294.29bp,178.5bp)(312.9bp,178.5bp)
  % Edge: F -> G
  \psbezier[arrows=->](205.3bp,11.5bp)(213.02bp,11.5bp)(222.29bp,11.5bp)(240.9bp,11.5bp)
  % Edge: B -> C
  \psbezier[arrows=->](121.0bp,106.18bp)(133.28bp,119.85bp)(153.81bp,142.68bp)(175.59bp,166.92bp)
  % Edge: G -> H
  \psbezier[arrows=->](277.3bp,11.5bp)(285.02bp,11.5bp)(294.29bp,11.5bp)(312.9bp,11.5bp)
  % Edge: B -> F
  \psbezier[arrows=->](121.0bp,82.959bp)(133.21bp,69.532bp)(153.58bp,47.144bp)(175.35bp,23.21bp)
  % Edge: A -> B
  \psbezier[arrows=->](50.307bp,94.5bp)(58.281bp,94.5bp)(67.278bp,94.5bp)(85.779bp,94.5bp)
  % Edge: C -> D
  \psbezier[arrows=->](205.3bp,178.5bp)(213.02bp,178.5bp)(222.29bp,178.5bp)(240.9bp,178.5bp)
  % Node: A
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(25.0bp,94.5bp){$x^2_1$}
}%
  % Node: C
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(187.0bp,178.5bp){$C$}
}%
  % Node: B
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(109.5bp,94.5bp){$y^t_5$}
}%
  % Node: E
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(331.0bp,178.5bp){$E$}
}%
  % Node: D
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(259.0bp,178.5bp){$D$}
}%
  % Node: G
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(259.0bp,11.5bp){$G$}
}%
  % Node: F
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(187.0bp,11.5bp){$F$}
}%
  % Node: H
{%
  \psset{linecolor=[rgb]{0.0,0.0,0.0}}
  \rput(331.0bp,11.5bp){$H$}
}%
%
\end{pspicture}
% End of code
%
\end{document}
%


Le rendu est le suivant
croquis-fleche-noeuds-math.png
croquis-fleche-noeuds-math.png (4.56 Kio) Vu 375 fois

Je ne suis pas sûr qu'en utilisant pst-node on aille aussi vite. Je ne suis pas du tout un connaisseur de graphviz (ni de latex en général) mais il y a des docs pour graphviz (dotguide.pdf), pour dot2tex et pour tikz. On doit pouvoir fignoler en passant un peu de temps à les lire.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar balf » Vendredi 19 Janvier 2018, 14:20

À titre de démo, voici comment on peut reproduire l'image fournie (pour autant que j'aie pu tout décrypter) avec pst-node et un code assez court. On peut compiler de façon classique, selon la chaîne latex -> dvips -> pstopdf (ne pas charger auto-pst-pdf en ce cas), ou bien via pdflatex, avec auto-pst-pdf, ou bien avec xelatex (ne charger ni inputenc, ni fontenc ni auto-pst-pdf dans ce cas).
Code: Tout sélectionner
\documentclass[border=3pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{pst-node}
\usepackage{auto-pst-pdf} %% pour compiler avec pdflatex --enable-write18 (MiKTeX) ou pdflatex --shell-escape (TeX Live, MacTeX)

\newcommand{\circled}[1]{\pscirclebox[framesep = 0pt, linewidth = 0.4pt]{#1}}

\begin{document}

\everypsbox{\scriptstyle}
\psset{arrows = ->, arrowinset = 0.15,nodesep=3pt, linejoin = 1}
$ \begin{psmatrix}[rowsep = 0ex]
%% Premier \arbre
& & q_{3}{}^{\!\circled{1}} & A^{\circled{1}} \text{ and } B^{\,\circled{1}} & q_{2}{}^{\!\circled{1}}\\
q_{1}{}^{\!\circled{1}} & \begin{matrix}
\bar x{}^{\circled{1}}\\
\bar y{}^{\mkern1mu\circled{1}}
\end{matrix} \\
& & q_{3}{}^{\!\circled{2}} & A^{\circled{2}} \text{ and } B^{\mkern1mu\circled{2}} & q_{2}{}^{\!\circled{2}}
\foreach \i/\j in {{2,1}/{2,2}, {2,2}/{1,3}, {2,2}/{3,3},{1,3}/{1,4},{1,4}/{1,5},{3,3}/{3,4},{3,4}/{3,5}}{\ncline{\i}{\j}} \\[6ex]
%% Second arbre
& & q_{3}{}^{\!\circled{1}} & A^{\circled{1}} \text{ and } B^{\,\circled{1}} & q_{2}{}^{\!\circled{1}}\\
q_{1}{}^{\!\circled{2}} & \begin{matrix}
\bar x{}^{\circled{1}}\\
\bar y{}^{\mkern1mu\circled{1}}
\end{matrix} \\
& & q_{3}{}^{\!\circled{2}} & A^{\circled{2}} \text{ and } B^{\mkern1mu\circled{2}} & q_{2}{}^{\!\circled{2}}
\foreach \i/\j in {{5,1}/{5,2}, {5,2}/{4,3}, {5,2}/{6,3},{4,3}/{4,4},{4,4}/{4,5},{6,3}/{6,4},{6,4}/{6,5}}{\ncline{\i}{\j}}
\end{psmatrix} $

\end{document}


B.A.
Fichiers joints
dessin-basique.pdf
(8.8 Kio) Téléchargé 14 fois
balf
Zetta-utilisateur
 
Messages: 3726
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Dessin basique math

Messagepar balf » Vendredi 19 Janvier 2018, 14:27

@gigiair: les codes pstricks fournis par des logiciels externes (Geogebra, par exemple) m'ont la plupart du temps parus assez désastreux, et je pense réellement qu'on passe moins de temps à écrire directement le code qu'à corriger et optimiser celui exporté par le logiciel tiers.

Je suppose d'ailleurs qu'il doit en être de même avec TikZ.

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

Re: Dessin basique math

Messagepar gigiair » Vendredi 19 Janvier 2018, 17:26

balf a écrit:@gigiair: les codes pstricks fournis par des logiciels externes (Geogebra, par exemple) m'ont la plupart du temps parus assez désastreux, et je pense réellement qu'on passe moins de temps à écrire directement le code qu'à corriger et optimiser celui exporté par le logiciel tiers.
Le code dot est parfaitement lisible après une heure ou deux de lecture de la documentation. Il suffit dans la grande majorité des cas. L'accès au code produit doit être exceptionnel. dot2tex est un convertisseur qui n'a rien à voir avec Geogebra.
J'avais suggéré de modifier le code tex car j'avais oublié comment on pouvait éditer les étiquettes. Je m'étais dit qu'avec les spécialistes qui fréquentent Mathematex, il y en aurait bien un qui me reprendrait.
dot apporte une productivité qu'on ne peut pas espérer en codant directement en pstricks. Certains trouvent aussi que LaTeX est un mauvais producteur de code TeX et préfèrent écrire directement en TeX. D'autres préféreront écrire directement en Postscript plutôt qu'en pstricks.
Ce débat existe depuis le début de l'informatique et de l'utilisation des langages de haut niveau. L'histoire à tranché, on n'écrit plus de logiciels conséquents en assembleur.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: Dessin basique math

Messagepar gigiair » Samedi 20 Janvier 2018, 17:19

J'ai essayé de produire le document complet en utilisant graphviz et dot2tex. Comme ça j'apprends à m'en servir.
Ça peut peut-être intéresser des gens. Comme j'ai beaucoup de mal à distinguer les nœuds de l'arborescence désirée, j'ai mis un peu ce qui me passait par la tête (comme vous le voyez, il ne passe pas grand chose).Voici le fichier source tex avec le code dot en commentaire et le mode d'emploi.
Code: Tout sélectionner
%%% dot-insert.tex ---
%% Author: gigiair

\documentclass[12pt,a4paper,french]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
% demandé par dot2tex
\usepackage[x11names, rgb]{xcolor}
\usepackage{tikz}
\usetikzlibrary{snakes,arrows,shapes}
\usepackage{amsmath}
%%%%%%%%%%%%%%%%%%%%
\usepackage{comment}
\usepackage{babel}
\frenchbsetup{og=«, fg=»}


\begin{document}
\begin{comment}
%%%% Début du code dot sous cette ligne :
digraph { rankdir=LR; size="4,3";ranksep=".8";node [shape="plaintext"];
A [label="x^2_1"];
B [label="y^t_5"];
C [label="x_1^2"];
D [label="x_1^2"];
E [label="x_1^2"];
F [label="x_1^2"];
G [label="x_1^2"];
H [label="x_1^2"];
A->B ;
B->C;
C->D;
D->E;
B->F;
F->G;
G->H;
A1 [label="x^2_1"];
B1 [label="y^t_5"];
C1 [label="y^t_5"];
D1 [label="y^t_5"];
E1 [label="y^t_5"];
F1 [label="y^t_5"];
G1 [label="y^t_5"];
H1 [label="y^t_5"];
A1->B1 ;
B1->C1;
C1->D1;
D1->E1;
B1->F1;
F1->G1;
G1->H1;
}
%%% Fin du code dot
                         ━━━━━━━━━━━━━━━━━━━━━━
                             MODE D'EMPLOI
                         ━━━━━━━━━━━━━━━━━━━━━━


1 Linux, OS/X
═════════════

1.1 Sous Emacs
──────────────

  • sélectionner le code /dot/ dans ce fichier tex.
  • tapez la commande 'M-| dot2tex –autosize –figonly -s -t math -f tikz'
  • Placez le curseur là ou vous voulez insérer le code tikz
  • 'M-x insert-buffer RET'


1.2 Sans Emacs
──────────────

  • Sauver le code /dot/ dans un fichier, par exemple mon-code.dot
  • Exécuter la commande
  'dot -Txdot mon-code.dot | dot2tex –autosize –figonly -s -t math -f tikz -o mon-code.tex'
  • insérez le contenu de mon-code.tex dans votre fichier (avec les
    entêtes que j'ai ajoutées dans ce fichier)


2 Windows
═════════

  ça devait fonctionner aussi bien avec Emacs que sans comme sous Linux et OS/X, mais la commande
  /dot2tex/ doit être remplacée par /python dot2tex/ (pas testé)
  'python dot2tex –autosize –figonly -s -t math -f tikz -o mon-code.tex'
 

\end{comment}


\begin{tikzpicture}[>=latex,line join=bevel,]
%%
\node (A) at (8.5bp,26.5bp) [draw,draw=none] {$x^2_1$};
  \node (F1) at (157.5bp,78.5bp) [draw,draw=none] {$y^t_5$};
  \node (C) at (157.5bp,43.5bp) [draw,draw=none] {$x_1^2$};
  \node (B) at (83.0bp,26.5bp) [draw,draw=none] {$y^t_5$};
  \node (E) at (307.5bp,43.5bp) [draw,draw=none] {$x_1^2$};
  \node (D) at (232.5bp,43.5bp) [draw,draw=none] {$x_1^2$};
  \node (G) at (232.5bp,8.5bp) [draw,draw=none] {$x_1^2$};
  \node (F) at (157.5bp,8.5bp) [draw,draw=none] {$x_1^2$};
  \node (H) at (307.5bp,8.5bp) [draw,draw=none] {$x_1^2$};
  \node (H1) at (307.5bp,78.5bp) [draw,draw=none] {$y^t_5$};
  \node (A1) at (8.5bp,95.5bp) [draw,draw=none] {$x^2_1$};
  \node (B1) at (83.0bp,95.5bp) [draw,draw=none] {$y^t_5$};
  \node (C1) at (157.5bp,113.5bp) [draw,draw=none] {$y^t_5$};
  \node (G1) at (232.5bp,78.5bp) [draw,draw=none] {$y^t_5$};
  \node (E1) at (307.5bp,113.5bp) [draw,draw=none] {$y^t_5$};
  \node (D1) at (232.5bp,113.5bp) [draw,draw=none] {$y^t_5$};
  \draw [->] (D1) -- (E1);
  \draw [->] (C1) -- (D1);
  \draw [->] (D) -- (E);
  \draw [->] (B1) -- (C1);
  \draw [->] (G1) -- (H1);
  \draw [->] (B1) -- (F1);
  \draw [->] (F) -- (G);
  \draw [->] (B) -- (C);
  \draw [->] (G) -- (H);
  \draw [->] (A1) -- (B1);
  \draw [->] (B) -- (F);
  \draw [->] (A) -- (B);
  \draw [->] (C) -- (D);
  \draw [->] (F1) -- (G1);
%
\end{tikzpicture}



\end{document}
%%% Local Variables:
%%% coding: utf-8
%%% End:

Le fichier est tout prêt, il suffit d'éditer les labels pour obtenir exactement ce que l'on veut. La syntaxe de dot est très facile à apprendre.
Pour ceux qui n'ont pas le temps de compiler le fichier, voici le rendu en png :

arborescence-mtmtx.png
arborescence-mtmtx.png (4.49 Kio) Vu 335 fois

J'ai choisi l'export tikz qui produit un code vraiment très clair et facile à modifier. On peut préférer pgf ou pstricks.
graphviz et dot2tex sont vraiment deux programmes indispensables pour produire ce genre de diagrammes. Cet exemple est très simple, mais si vous allez sur la page de graphviz, vous verrez qu'il est possible de réaliser des graphes d'une grande complexité simplement. Il existe un package graphviz.sty et un dot2texi.sty pour ceux qui veulent écrire directement le code dot dans le source LaTeX. Je n'ai pas eu le temps de regarder ça de près, d'autant que je n'en vois guère l'intérêt. Les appels aux exécutables se font via -shell-escape, ce que je préfère éviter.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2340
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 9 invités