如何将字符串逐字地作为参数传递给宏?

如何将字符串逐字地作为参数传递给宏?

你建议将字符串作为参数传递给 \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}

相关内容