案例 1 的图表是正确的,但重复了弧的语句。相比之下,案例 2 更容易编写,而且不需要重复弧的语句。我觉得必须有一个样式命令或类似命令来避免重复命令,并指定每个边都指向某个方向。所以
如何使用 Tikz Draw 绘制圆弧,而不用使用 [->] 重复每个圆弧命令?
1. 案例:目标如下,所有边均有方向
\draw[->] (Input)--(1); \draw[->] (1)--(2); \draw[->] (2)--(Output); \draw[->] (Input)--(3); \draw[->] (3)--(4); \draw[->] (4)--(Output); \draw[->] (Input)--(5); \draw[->] (5)--(7); \draw[->] (7)--(Output); \draw[->] (Input)--(6); \draw[->] (6)--(7);
2. 不是像这样,有些边缘没有指向
\draw[->] (Input)--(1)--(2)--(Output); \draw[->] (Input)--(3)--(4)--(Output); \draw[->] (Input)--(5)--(7)--(Output); \draw[->] (Input)--(6)--(7)--(Output);
答案1
要点 1:避免重复->
您可以全局设置选项(或使用范围)
% \usetikzlibrary{automata} for `state` key
\begin{tikzpicture}[->]
\foreach[count=\i] \n in {A,B,C,D,E}{
\node[state] at (\i*60:1+rnd*3) (\n) {\n};
}
\draw (A)--(B);
\draw (B)--(C);
\draw (C)--(D);
\draw (A)--(E);
\end{tikzpicture}
要点 2:在单一路径中绘制箭头
您可以使用以下edge
操作:
\draw[->] (A) edge (B)
(B) edge (C)
(C) edge (D)
(A) edge (E);
答案2
Bordaigorl 的建议与边缘命令解决了这个问题。我在下面提供了 MWE。对我来说,MWE 编译相同,后者的解决方案更好,重复次数更少
重复解决方案不好
\begin{tikzpicture}[x=2cm, y=2cm,scale=0.8]
\tikzstyle{every node}=[draw, circle, fill=white, inner sep=3pt,minimum size=18pt]
\draw (0,0) node[minimum size=1.5cm](Output){Sink};
\draw (0,-3) node[minimum size=1.5cm](Input){Source};
\draw (-1,-1) node(1){1};
\draw (0,-1) node(3){3};
\draw (0.5,-1) node(5){5};
\draw (1.5,-1) node(6){6};
\draw (-1,-2) node(2){2};
\draw (0,-2) node(4){4};
\draw (1,-2) node(7){7};
\draw[->] (1)--(Output);
\draw[->] (3)--(Output);
\draw[->] (5)--(Output);
\draw[->] (6)--(Output);
\draw[->] (2)--(1);
\draw[->] (4)--(3);
\draw[->] (7)--(5);
\draw[->] (7)--(6);
\draw[->] (Input)--(2);
\draw[->] (Input)--(4);
\draw[->] (Input)--(7);
\end{tikzpicture}
更少重复的更好解决方案
\begin{tikzpicture}[x=2cm, y=2cm,scale=0.8]
\tikzstyle{every node}=[draw, circle, fill=white, inner sep=3pt,minimum size=18pt]
\draw (0,0) node[minimum size=1.5cm](Output){Sink};
\draw (0,-3) node[minimum size=1.5cm](Input){Source};
\draw (-1,-1) node(1){1};
\draw (0,-1) node(3){3};
\draw (0.5,-1) node(5){5};
\draw (1.5,-1) node(6){6};
\draw (-1,-2) node(2){2};
\draw (0,-2) node(4){4};
\draw (1,-2) node(7){7};
\draw[->] (Input) edge (2)
(2) edge (1)
(1) edge (Output);
\draw[->] (Input) edge (4)
(4) edge (3)
(3) edge (Output);
\draw[->] (Input) edge (7)
(7) edge (5)
(5) edge (Output);
\draw[->] (7) edge (6)
(6) edge (Output);
\end{tikzpicture}