關於。微量元素

關於。微量元素

也許這個問題很天真,但是我什麼時候需要使用而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建構一個單獨的路徑,它可以具有與主路徑完全不同的屬性。與主路徑上的點不同,邊緣不會移動到任何地方。

這並不是真正發生的事情,但它是彷彿有時候是這樣的:

  1. 假設我們從一條路徑開始\path [draw=blue, -{Stealth[]}] (0,0)

    • 到目前為止,我們實際上還沒有去任何地方。我們已經說過應該繪製這條路徑並且它應該有一個特定的箭頭尖端。我們已經移動到路徑起點的原點。
  2. 所以我們繼續++(1,0)

    • 這將我們向右移動 1 個單位,但仍然沒有繪製任何內容。
  3. 現在我們加入-- ++(1,0).

    • 這使我們又向右移動 1,這一次,路徑被繪製出來。如果我們在;這裡放一個,我們就會在這裡得到我們的箭頭。但我們不這麼做,所以還不需要提示。

    第三階段

  4. 現在,我們不再繼續主路徑,而是添加edge ++(0,1}.

    • 我們可以把 TikZ 想像成暫時停止主路建設,採取分流,做一條小支路。這條路徑從我們目前的位置向上 1 個單位。預設情況下,它繼承了主路徑的屬性,因此它是帶有箭頭的藍色。當edge操作完成後,TikZ 會回到開始轉移的位置。這就像在接孩子們放學的路上溜進一條小巷從麵包店買一些麵包一樣。拿到麵包後,你就回到大街繼續​​上學。

    第四階段

  5. 我們現在添加-- ++(1,0)到我們的路徑中。

    • 所以,既然我們繞道回來了,我們就繼續往右走直線。

    第五階段

  6. 接下來,我們新增edge [draw=red, -{Circle[fill=green]}] ++(0,1).

    • 這是另一個轉移,但這一次,我們用紅色繪製邊緣並更改箭頭尖端。當然,這只適用於我們的消遣。

    第六階段

    • 請注意,這對於普通路徑是不可能的 - 例如,您不能將其一部分設為紅色,將其一部分設為藍色,但是可以edge與主路徑和edge作為路徑一部分繪製的任何其他路徑具有完全不同的屬性。\path
  7. 最後,我們用 完成路徑-- ++(1,0);

    第7階段

完整程式碼:

\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);

相關內容