我有以下代码用于绘制不同半径的圆。如代码所示,有两个不同的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}