Tikz:循环遍历foreach函数

Tikz:循环遍历foreach函数

我想循环遍历\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-xx0一样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}

在此处输入图片描述

相关内容