我想循环遍历\foreach
函数中的术语。这是我的代码:
\foreach \n in {cdof,cc,cdus,ads,aiw} \draw [->] (\n) |- ($(\n)+1$);
但是,正如预期的那样,由于“aiw”后面没有术语,因此这失败了。我尝试过输入条件 ( $((\n)+1)<6$
),但不起作用。是否可以在\foreach
函数中输入条件?或者有其他解决方案吗?
答案1
我第一次尝试时,没有注意到要通过箭头连接节点。有两种选择(见下图)。您可以通过一条在节点处带有箭头的锯齿形线(红线)或多条在每个节点处带有箭头的线(黑线)连接所有节点。
代码:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (1,1);
\coordinate (C) at (2,2);
\coordinate (D) at (3,3);
% FIRST OPTION
\draw[red,thick,->] (A)
\foreach \i in {B,C,D}{
|- (\i)
};
% SECOND OPTION
\foreach \n [count=\i] in {A,B,C,D}
{
\ifnum\i>1
\draw[thick,->] (Q) -| (\n);
\else \fi
\coordinate (Q) at (\n);
}
\end{tikzpicture}
\end{document}
结果:
旧版本 - 我将把它留在这里,因为它使用了稍微不同的方法,而且可能也值得考虑。
代码:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,...,3} % prepare dummy coordinates
\coordinate (A-\i) at (\i,\i);
\draw[thick] (A-0) node[fill=black] {\color{white}0}
foreach \i in {1,...,3}{
|- (A-\i) node[fill=black] {\color{white}\i}
};
\end{tikzpicture}
\end{document}
有时(这里也是)你甚至可以进一步简化代码,如下所示
\draw[thick] (A-0)
foreach \i in {0,...,3}{ % different range than in the original code
|- (A-\i) node[fill=black] {\color{white}\i}
};
结果:
答案2
同样没有任何条件,只要您以连续编号的方式命名您的节点,就像a-x
从x
到0
一样4
,例如,如果您有五个节点。
\documentclass[border=5pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[line width=.7pt]
\foreach \i in {0,...,4} % prepare dummy coordinates as @Ondrian
\coordinate (a-\i) at (\i,\i);
\foreach \i [count=\j] in {0,...,3}
\draw [->] (a-\i) |- (a-\j);
\end{tikzpicture}
\end{document}
答案3
如果您想循环浏览列表,并且remember
在最后一个列表之后使用第一个列表(或者在第一个列表之前使用最后一个列表),remember
则选项就是您所需要的。
以下取自 AboAmmar 答案的代码经过了轻微修改,可以记住previous
列表中的元素。initially
将元素设置为第一个元素之前的元素。
\documentclass[border=5pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[line width=.7pt]
\foreach \i in {0,...,4} % prepare dummy coordinates as @Ondrian
\coordinate (a-\i) at (\i,\i);
\foreach \i [remember=\i as \j (initially 4)] in {0,...,4}
\draw [->] (a-\j) |- (a-\i);
\end{tikzpicture}
\end{document}