你建议将字符串作为参数传递给 \newcommand 定义的命令并使用它逐字在命令主体中?
小伪示例:
\newcommand{\linedraw}[2]{%
\draw (#1)--(#2);
% and further, more complicated operations involving (#1) and (#2)
}
然后就可以执行以下操作:
\begin{tikzpicture}
% here imagine some code which defines each of the six nodes
% (a0) , (a1) , (a2) , (b0) , (b1) , (b2)
% Now the goal is to be able to write
\foreach \loopvariable in {0,1,...,2}{
\linedraw{a\loopvariable}{b\loopvariable};
}
% and have tikz understand it.
\end{tikzpicture}
一个挑战似乎是如何将反斜杠作为参数的一部分传递。也就是说,一个关键点似乎是能够传递细绳“b\loopvariable”作为参数。这可能很多人都遇到过。
答案1
就像评论者指出的那样,这是可行的。这是一个可编译的小示例。
\documentclass{amsart}
\usepackage{tikz}
\begin{document}
\newcommand{\linedraw}[2]{%
\draw[->] (#1.north west)--(#2.north west);
\draw[->] (#1)--(#2);
}
\begin{tikzpicture}
\foreach \loopvariable in {0,1,...,2}{
\node (a\loopvariable) at (\loopvariable,0) [] {};
\node (b\loopvariable) at (\loopvariable,1) [] {};
\linedraw{a\loopvariable}{b\loopvariable};
}
\end{tikzpicture}
\end{document}