Is there a way to use the TikZ \foreach command to do operations with parameters?

E.g. I would like to be able to write (just a silly example):


    \foreach \x in{1,2,...,9}{


where #\x would mean the x th parameter of the command I'm defining with \newcommand.

This should come in handy since I'm writing macros that depend on global values that can be set arbitrarily. E.g. \def\N{9} would go in preamble and I'd write newcommand{\bar}[\N]{...}, but since I don't know beforehand how much parameters there will be, I can't define anything unless I write \foreach \x in{1,2,...,\N} and the above draw command.

What I actually like to do:

I'd like to have a command that plots some coordinates which are given. So I'd like \foo{#1}{#2}{#3} to expand to something like;

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

but I don't know if this is possible.

  • can be done in the same way as I already pointed out: \def\saveCoordinates{} and then instead of the \draw do \xdef\saveCoordinates{\saveCoordinates(360/\N*2:#2)}. However, I do not understand the meaning of \N here
    – user2478
    Feb 3 '11 at 14:05
  • Great thanks! Where did you point that out exaclty? Was it in this question, I don't seem to find it. \N would mean the fraction of the full circle and is also the number of command parameters.
    – romeovs
    Feb 3 '11 at 14:31

I do not reall understand what exactly do you want to draw, but maybe this helps:




  • Not what I asked for but way better! This helps a lot thanks!
    – romeovs
    Feb 3 '11 at 13:21

(Substantially revised answer.) The following should read in and draw as many arguments as you like, one at a time, provided that \N is defined and stores a positive integer.

    \advance\c@foo by 1\relax%
  • I know this is what I could do. But the example I gave is a simplification of what I really would want like to do. I've edited the question to make this clear.
    – romeovs
    Feb 3 '11 at 13:01
  • I've revised my answer. It looks like Herbert's is more versatile, but this should also do what you want. Feb 3 '11 at 13:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.