如何使用参数编号和 \foreach

如何使用参数编号和 \foreach

有没有办法使用 TikZ\foreach命令进行带参数的操作?

例如我希望能够写(只是一个愚蠢的例子):

\newcommand{\foo}[9]{

    \foreach \x in{1,2,...,9}{
        \draw(0,#\x)--++(1,1);

    }
}

哪里#\x意味着X我用来定义的命令的第个参数\newcommand

这应该很有用,因为我正在编写依赖于可以任意设置的全局值的宏。例如,它\def\N{9}会出现在序言中,我会写,但由于我事先不知道会有多少参数,所以除非我写上面的绘制命令,newcommand{\bar}[\N]{...}否则我无法定义任何东西。\foreach \x in{1,2,...,\N}


我真正喜欢做的事:

我想要一个命令来绘制给定的一些坐标。所以我想\foo{#1}{#2}{#3}扩展为类似的东西;

\draw plot coordinates {(360/\N*1:#1) (360/\N*2:#2) (360/\N*3:#3) ... (360/\N*\N:#N};

但我不知道这是否可能。

答案1

我不太明白你到底想画什么,但也许这会有所帮助:

\documentclass{minimal}
\usepackage{tikz}

\makeatletter
\def\foo#1{\foo@i#1,,\@nil}%
\def\foo@i#1,#2,#3\@nil{%
  \draw(0,#1)--++(1,1);
  \ifx\relax#2\relax\else\foo@i#2,#3\@nil\fi}
\makeatother

\begin{document}
\begin{tikzpicture}
\foo{1,2,3,4,5,6,7,8,9}
\end{tikzpicture}
\begin{tikzpicture}
\foo{1,2,3,4,5,6}
\end{tikzpicture}

\end{document}

答案2

大幅修改了答案。) 以下应该读取并绘制任意多个参数,一次一个,前提是\N已定义并存储一个正整数。

\制作字母
  \newcount\c@foo
  \新命令\foo{%
    \c@foo=1\放松
    \@foo}
  \newcommand\@foo[1]{%
    \绘制(0,#1)--++(1,1);%
    \advance\c@foo 1\relax%
    \ifnum\c@foo>\N%
       \让\@tempa\放松
    \别的
       \让\@tempa\@foo
    \fi
    \@tempa}
\makeatother

相关内容