
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 edge
mehrere 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 beiarrows.meta
geladener Bibliothek die gleiche Farbe wie Linien .- Neue Stilschlüssel werden
to path hv
und genanntto 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