J'utilise PSTricks pour tracer des graphes orientés. Une option pour les commandes \ncarc et \ncline permet de placer une flèche à l'une ou l'autre des extrémités, flèche souvent très petite. Je ne trouve pas d'option permettant de placer la flèche à la position de mon choix sur l'arc ou la ligne dessinée avec la commande.

Ma question : comment peut-on faire pour réaliser un tel chemin, si possible en choisissant la couleur de la flèche?

Posée 26 Aoû '17, 16:38

pzorba75's gravatar image

pzorba75
15741522
Taux d'acceptation : 18%

Modifiée 26 Aoû '17, 16:51

denis's gravatar image

denis ♦♦
7.0k1510

@pzorba75 Attention ! Les contre-obliques (\) saisies telles quelles dans les contributions ne sont visibles que si elles sont insérées en tant que ⟨code⟩. Pour insérer du ⟨code⟩, notamment des commandes LaTeX, cf. la FAQ Comment mettre en forme ma contribution ?. Merci de corriger votre contribution si cela n'a pas déjà été fait.

(26 Aoû '17, 16:50) denis ♦♦ denis's gravatar image

Ça tombe bien, j'en ai un (un peu clinquant) sous la main. Il s'agit d'utiliser la clef ArrowInside de pst-arrow, et ses cousines ArrowInsidePos, ArrowInsideNo, ArrowInsideOffset.

Ouvrir dans l'éditeur Overleaf
\documentclass[svgnames]{standalone}%
\usepackage{pst-node, pst-arrow}
\usepackage{auto-pst-pdf}

\begin{document}

\psset{algebraic=true,dimen=middle, arrowinset=0.12, arrowsize=4pt}
\begin{pspicture*}(-3,-3)(3,3)
\dotnodes(-2,0){A}(2,0){B}%\pnode
\psset{ArrowInside=->, ArrowInsidePos=0.46}
\ncarc[arcangle=90, linecolor=DarkSeaGreen]{A}{B}\ncarc[arcangle =90, linecolor=Coral, ArrowInsideNo=2]{B}{A}
\psset{linecolor =Gold}
\pscircle(0,0){2}{\psset{yunit=0.5}\nccircle[linecolor =Goldenrod]{->}{B}{0.25}} \psarc{<-<}(0,0){2}{-80}{100}
\end{pspicture*}

\end{document}

alt text

Rajoutis:

Voici un code pour avoir l'èquivalent de la command \nncircle avec une flèche au milieu: je définis une command \mynccircle qui prend deux arguments obligés: le rayon du cercle et le nœud par lequel il passe, et un argument optionnel: l'angle polaire dudit cercle (0 par défaut). Démo:

Ouvrir dans l'éditeur Overleaf
\documentclass[svgnames]{standalone}%
\usepackage{pst-node, pst-arrow}
%\usepackage{auto-pst-pdf}
\newcommand\mynccircle[3][0]{\AplusB(#3)(#2;#1){C}\pscircle(C){#2}\psarc{->}(C){#2}{!#1 180 sub}{#1}}%

\begin{document}

\psset{algebraic=true,dimen=middle, arrowinset=0.12}
\begin{pspicture}(-3,-1.5)(3,1.5) 
\dotnodes(-2,0){A}(2,0){B}(0,1){C}
\psset{ArrowInside=->, ArrowInsidePos=0.52}
\ncarc[arcangle=30, linecolor=DarkSeaGreen]{A}{C}\ncarc[arcangle =90, linecolor=Coral,]{B}{A}
\ncline[linecolor=PaleVioletRed]{B}{C}
\psset{linecolor =Gold}%
\psset{linecolor =Goldenrod}
\mynccircle[30]{3mm}{B}
\psset{linecolor =RoyalBlue}
\mynccircle[150]{4mm}{A}

\end{pspicture}

\end{document}

alt text

Lien permanent

Publiée 26 Aoû '17, 21:03

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 28 Aoû '17, 20:44

D'après la documentation de l'extension pst-add (septembre 2016) et les essais que je viens de faire, les options permettant de placer les flèches sont disponibles avec des lignes ou des arcs mais pas avec des cercles (nccircle). Comment peut-on mettre la flèche au milieu sur un cercle?

(27 Aoû '17, 08:02) pzorba75 pzorba75's gravatar image

Exact, et le code fournit la démonstration: au grand cercle est superposé un un demi-cercle avec flèches aux extrémités.

(27 Aoû '17, 11:57) Bernard Bernard's gravatar image

Il n'y a donc pas de solution avec PSTricks, ce qui me surprend un peu compte-tenu des options de cette famille d'extensions graphiques. Dans le plus part des livres du secondaire, les graphes orientés sont tracés avec la flèche "au milieu" de ce trait qui relie les sommets ou tourne autour d'un sommet.

(27 Aoû '17, 12:38) pzorba75 pzorba75's gravatar image
1

@pzorba75: Il ya maintenant une solution (si vous vous contentez d'une flèche au milieu du cercle…, mais on doit pouvoir concocter une commande à plusieurs flèches). Vous pouvez jeter un coup d'œil au résultat (toujours plus clinquant).

(28 Aoû '17, 18:45) Bernard Bernard's gravatar image

@bernard : je ne comprends pas la syntaxe, en faisant un essai j'obtiens bien deux cercles autour du point C et les flèches décalées de 30 et 150 degrés, mais le texte de la commande ne m'est pas explicite du tout ({AplusB(#3)(#2;#1){C}pscircle(C){#2}psarc{->}(C){#2}{!#1 180 sub}{#1}}% Est-il possible d'avoir une explication?

(28 Aoû '17, 19:14) pzorba75 pzorba75's gravatar image
1

Oui, bien sûr: `\AplusB(P)(Q){R} fait l'addition vectorielle de P et Q et appelle R la somme. Rien n'empêche que le résultat s'appelle P or Q, au passage. Bref dans mon code, ça donne le centre du cercle qui va passer par le point P (A ou B en pratique). L'utilisation des coordonnées polaires pour le second argument permet de préciser la direction du centre du cercle et son rayon. Après, on trace un cercle entier, puis on double cela avec un demi-cercle qui a une flèche terminale, d'où l'émulation d'une flèche au milieu du cercle.

(28 Aoû '17, 19:26) Bernard Bernard's gravatar image

Je n'avais jamais vu la commande backslash AplusB ni compris le texte, maintenant bien mis en forme dans la réponse précédente. Je cherche une documentation de cette commande pour essayer de retenir et l'utiliser ensuite.

(28 Aoû '17, 22:06) pzorba75 pzorba75's gravatar image
1

C'est décrit à la fin de la documentation, § 18, Extensions, en particulier le § 18.2, Node expressions.

(29 Aoû '17, 00:17) Bernard Bernard's gravatar image

@bernard : je ne trouve pas ce chapitre 18 dans la documentation de pst-add v.3.83a dernière mise à jour sur ctan.org, ni dans la documentation de base pst-base v.1.5.

(29 Aoû '17, 07:21) pzorba75 pzorba75's gravatar image
1

C'est assez normal, vu qu'il se trouve dans la documentation de pst-node. Désolé de ne pas l'avoir précisé, je pensais que c'était clair puisque je ne charge explicitement que pst-node et pst-arrow (détaché de pstricks-add l'an dernier à peu près).

(29 Aoû '17, 13:19) Bernard Bernard's gravatar image
Affichage de 5 parmi 10 Afficher 5 commentaire(s) en plus
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.