Tikz 矢印が表示されない

Tikz 矢印が表示されない

MWEは次のようになります(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

私の意図は、CCC から PPP (PPP の北) へのパスの終わりに矢印を表示することですが、表示されません。助けてください。ありがとうございます。

答え1

矢印はパスの最初と最後のサブパスにのみ配置されます。https://tikz.dev/tikz-arrows#sec-16.2

この例では(C) -- (10,3) -| (P.north)、 と(S) -- (10,0) -| (P.south)は 2 つのサブパス (パスへの移動操作によって分離) であるため、矢印は にのみ追加されます(S) -- (10,0) -| (P.south)

複数のパスに分割する代わりに、edgeいくつかの追加オプションを使用して、単一のパスに複数の矢印を追加するために を引き続き使用できます。

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

@Sczの回答を参照ノード間の Tikz 直角エッジ | TeX-SX#48397

完全な適応例:

  • -{Stealth[black!70]}ライブラリをロードして使用すると、矢印は線と同じ色になりますarrows.meta
  • 新しいスタイルのキーはto path hvと と名付けられています。このキー名をto path vh使用するとエラーが発生するためです。ConTeXt は catcode を12 (その他) から 13 (アクティブ) に設定しますが、これが原因であると推測します。私は ConTeXt を頻繁に使用することはないので、回避策を講じました。また、以下も参照してください。|
    |ConTeXt ではどの記号をエスケープする必要がありますか? | TeX-SX#48933更新:
    これは動作しますが、表現力が失われます: 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

ここに画像の説明を入力してください

関連情報