\tikzset 的 \foreach 循环

\tikzset 的 \foreach 循环

我有以下代码用于绘制不同半径的圆。如代码所示,有两个不同的pic语句(d1 和 d2)。

\documentclass[margin=3mm]{standalone}
\usepackage{tikz,pgf}
\begin{document}

\begin{tikzpicture}

%  \foreach \b in {1,2}{
    \tikzset{
        d1/.pic={
            \foreach \r in {1,...,4}{
                \draw[red,thick](\r,0) circle (\r);
            }
        }
    }
    \tikzset{
        d2/.pic={
            \foreach \r in {1,...,4}{
                \draw[black,thick](3*\r,0) circle (\r);
            }
        }
    }
%  }


    \pic at (0,0) {d1};
    \pic at (0,0) {d2};

    \end{tikzpicture}

\end{document}

代码输出:

在此处输入图片描述

是否可以pic使用 为 d1 和 d2 使用一个语句\foreach?例如:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz,pgf}
\begin{document}

\begin{tikzpicture}
   \pgfmathsetmacro{\k}{1} 
  \foreach \b in {1,2}{
    \tikzset{
        d\b/.pic={

        \ifnum\b=2 \pgfmathsetmacro{\k}{2} \fi
            \foreach \r in {1,...,4}{
                \draw[red,thick](\k*\r,0) circle (\r);
            }
        }
    }  
    }

    \pic at (0,0) {d1};
    \pic at (0,0) {d2};

    \end{tikzpicture}

\end{document}

b循环中的计数器似乎\foreach没有传递到tikzset。我该如何解决这个问题?

答案1

您可以只依赖pic指示颜色的参数。

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\def\ColorList{{"black","red","blue"}}

    \tikzset{
        d/.pic={\pgfmathsetmacro{\mycolor}{\ColorList[#1]}
            \foreach \r in {1,...,4}{
                \draw[\mycolor,thick]({\r*(1+2*#1)},0) circle (\r);
            }
        }
    }

  \foreach \b in {0,1,2}{
    \pic at (0,0) {d=\b};
  } 
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容