
この質問は単純かもしれませんが、edge
の代わりにを使用する必要があるのはいつですか? また、 を使用すると、パスの従来の描画コマンドと同じ出力を複製するには--
どうすればよいでしょうか?edge
--
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,shapes.geometric,calc}
\begin{document}
\begin{tikzpicture}[>=latex',very thick,align=center]
\tikzset{%
block/.style= {draw, rectangle, text width=2cm,minimum height=1cm,align=center}
}
\node [block] (start1) {Start1};
\node [block, right = 1cm of start1.east] (end1) {End1};
\node [block, below= 2cm of start1] (start2) {Start2};
\node [block, right = 1cm of start2] (end2) {End2};
\path[draw,->]
(start1.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end1.north);
\path[draw,->]
(start2.north) edge ++(0,1cm) edge ++(3.25cm,0) edge (end2.north);
\end{tikzpicture}
\end{document}
答え1
この回答は、すべての詳細を網羅しようとするものではなく、いくつかの違いについて「第一段階」の説明をしようとするものです。
edge
メイン パスとはまったく異なる属性を持つ別のパスを構築します。メイン パス上のポイントとは異なり、エッジはどこにも移動しません。
これは実際には起こらないが、かのように次のようなことが起こります:
パスから始めるとします
\path [draw=blue, -{Stealth[]}] (0,0)
。- ここまでは、実際にはどこにも行っていません。このパスを描画し、特定の矢印の先端を持つ必要があると述べました。パスの開始点である原点に移動しました。
それで、 を続けます
++(1,0)
。- これにより、何も描画されずに 1 単位右に移動します。
ここで を追加します
-- ++(1,0)
。- これにより、さらに 1 つ右に移動し、今度はパスが描画されます。
;
ここに を配置すると、矢印の先端がここに表示されます。ただし、これは行わないため、先端はまだ必要ありません。
- これにより、さらに 1 つ右に移動し、今度はパスが描画されます。
ここで、メイン パスを続行するのではなく、 を追加します
edge ++(0,1}
。- TikZ は、メイン パスの構築を一時的に停止し、迂回して小さなサイド パスを作成するものと考えることができます。このパスは、現在の位置から 1 単位上に進みます。デフォルトでは、メイン パスの属性を継承するため、矢印付きの青色になります。操作が
edge
完了すると、TikZ は迂回を開始したポイントに戻ります。これは、子供たちを学校に迎えに行く途中で、パン屋でパンを買うために脇道にちょっと立ち寄るようなものです。パンを手に入れたら、メイン ストリートに戻って学校に向かいます。
- TikZ は、メイン パスの構築を一時的に停止し、迂回して小さなサイド パスを作成するものと考えることができます。このパスは、現在の位置から 1 単位上に進みます。デフォルトでは、メイン パスの属性を継承するため、矢印付きの青色になります。操作が
今、私たちは
-- ++(1,0)
パスに追加します。- さて、迂回から戻ってきたので、右方向へ直線を進みます。
次に、 を追加します
edge [draw=red, -{Circle[fill=green]}] ++(0,1)
。- これは別の転換ですが、今回はエッジを赤で描画し、矢印の先端を変更します。もちろん、これはこの転換にのみ適用されます。
- これは通常のパスでは不可能であることに注意してください。たとえば、一部を赤にし、一部を青にすることはできませんが、
edge
メイン パスや、edge
同じ\path
コマンドの一部として描画された他のパスとはまったく異なる属性を持つことができます。
最後に、 でパスを完成させます
-- ++(1,0);
。
完全なコード:
\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[x=25mm, y=25mm, line width=1pt]
\path [draw=blue, -{Stealth[]}] (0,0) ++(1,0) -- ++(1,0) edge ++(0,1) -- ++(1,0) edge [draw=red, -{Circle[fill=green]}] ++(0,1) -- ++(1,0);
\foreach \i/\j in {(0,0)/{(0,0)},(1,0)/{++(1,0)},(2,0)/{++(1,0)},(3,0)/{++(1,0)},(4,0)/{++(1,0)}} \path \i node [below, ] {\j};
\foreach \i/\j in {(2,1)/{++(0,1)},(3,1)/{++(0,1)}} \path \i node [right, ] {\j};
\end{tikzpicture}
\end{document}
再。ムウェ
質問の例の場合、もちろん次のように書くこともできます。
\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{arrows.meta,positioning}
\begin{document}
\begin{tikzpicture}
[
>=Latex,
very thick,
align=center,
block/.style= {draw, rectangle, text width=2cm,minimum height=1cm,align=center},
]
\node [block] (start1) {Start1};
\node [block, right = 1cm of start1.east] (end1) {End1};
\node [block, below= 2cm of start1] (start2) {Start2};
\node [block, right = 1cm of start2] (end2) {End2};
\path [draw, ->] (start1.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end1.north);
\path [draw, ->] (start2.north) -- ++(0,1cm) -- ++(3.25cm,0) -- (end2.north);
\end{tikzpicture}
\end{document}
生産する
しかし、これをオールインワンで行う方法を知りたいのだと思います。
上記のノードとパスのコマンドは、次の2つのパスに置き換えることができます。
\path [draw, ->] node [block] (start1) {Start1} (start1.north) |- ++(3.25cm,1cm) node [block, right=1cm of start1] (end1) {End1} -- (end1);
\path [draw, ->] node [block, below= 2cm of start1] (start2) {Start2} (start2.north) |- ++(3.25cm,1cm) node [block, right=1cm of start2] (end2) {End2} -- (end2);
同じ出力を生成するか、またはより簡潔だがあまり明白ではないが、
\coordinate (start0);
\foreach \i [evaluate=\i as \j using int(\i-1), evaluate=\j as \k using \j*2] in {1,2}
\path [draw, ->] node [block, below=\k cm of start\j] (start\i) {Start\i} (start\i.north) |- ++(3.25cm,1cm) node [block, right=1cm of start\i] (end\i) {End\i} -- (end\i);