Tikz-Pfeil wird nicht angezeigt

Tikz-Pfeil wird nicht angezeigt

Das MWE ist wie folgt (ich verwende ConTeXt)

\usemodule[tikz]
\usetikzlibrary{positioning}
\usetikzlibrary{shapes}
\usetikzlibrary{calc}
\tikzset{arrow/.style={-stealth, thick, draw=black!70!white}}
\starttext
\starttikzpicture[ampersand replacement=\&]
% \draw[help lines](0,-5) grid (10,5);  
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (3,0) (S) {SSS};   
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (3,3) (C) {CCC};    
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (6,1.5) (I) {III};    
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (10,1.5) (P) {PPP};
    
    \path[arrow]
    (S) edge (I.south west)
    (C) edge (I.north west)
    (I) edge (P)
    (C) -- (10,3) -|  (P.north)
    (S) -- (10,0) -|  (P.south)
    ;
\stoptikzpicture
\stoptext

Ich möchte den Pfeil am Ende des Pfads von CCC nach PPP (nördlich von PPP) sehen, aber er wird nicht angezeigt. Bitte helfen Sie. Danke.

Antwort1

Pfeile werden nur am ersten und letzten Teilpfad eines Pfades platziert, siehehttps://tikz.dev/tikz-arrows#sec-16.2.

In Ihrem Beispiel sind (C) -- (10,3) -| (P.north)und (S) -- (10,0) -| (P.south)zwei Unterpfade (getrennt durch Move-To-Pfadoperationen), daher wird der Pfeil nur zu hinzugefügt (S) -- (10,0) -| (P.south).

Anstatt den Pfad in mehrere Pfade aufzuteilen, können Sie weiterhin edgemehrere Pfeile zu einem einzelnen Pfad hinzufügen, mit einigen zusätzlichen Optionen:

(node a) edge[to path={-| (\tikztotarget)}] (node b)

siehe @Scz's Antwort aufTikz rechtwinklige Kanten zwischen Knoten | TeX-SX#48397.

Komplett angepasstes Beispiel:

  • -{Stealth[black!70]}Pfeile haben bei arrows.metageladener Bibliothek die gleiche Farbe wie Linien .
  • Neue Stilschlüssel werden to path hvund genannt to path vh, da die Verwendung |dieses Schlüsselnamens mit Fehlern endet.
    ConTeXt setzt den Catcode von |12 (andere) auf 13 (aktiv), was meiner Meinung nach die Ursache ist. Da ich nie ein regelmäßiger ConTeXt-Benutzer war, habe ich es einfach umgangen. Siehe auchWelche Symbole müssen in ConTeXt maskiert werden? | TeX-SX#48933.
    Update: das funktioniert, aber die Ausdruckskraft geht verloren: to path -\|/.style={...}.
% !TeX TS-program = context %.tex
\usemodule[tikz]
\usetikzlibrary{arrows.meta, calc, positioning, shapes}
\tikzset{
  arrow/.style={-{Stealth[black!70]}, thick, draw=black!70},
  % based on https://tex.stackexchange.com/a/250515
  to path hv/.style={to path={-| (\tikztotarget)}},
  to path vh/.style={to path={|- (\tikztotarget)}}
}
\starttext
\starttikzpicture[ampersand replacement=\&]
% \draw[help lines](0,-5) grid (10,5);
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (3,0) (S) {SSS};
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (3,3) (C) {CCC};
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (6,1.5) (I) {III};
    \node[rectangle, rounded corners, draw, fill=white!90!black, minimum height=1cm] at (10,1.5) (P) {PPP};

    \path[arrow]
      (S) edge (I.south west)
      (C) edge (I.north west)
      (I) edge (P)
      (C) edge[to path hv] (P.north)
      (S) edge[to path hv] (P.south)
    ;
\stoptikzpicture
\stoptext

Bildbeschreibung hier eingeben

verwandte Informationen