
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