[texhax] dynamically generating tikz node names

Neal H. Walfield neal at walfield.org
Thu Aug 16 23:17:44 CEST 2012


I'm trying to programmatically name a bunch of tikz nodes (actually
pgfplots).  Here is a minimal example:

  \documentclass{article}
  \usepackage{tikz}
  
  \begin{document}
  
  \def\alltraces{aaa, bbb, ccc, ddd}
  
  \def\plotall{
    \begin{tikzpicture}
    \gdef\i{0}
    \node (t\i) at (0, 0) {};
    \foreach \trace in \alltraces {%
      \edef\prev{\i}
      \pgfmathadd{\i}{1}
      \xdef\i{\pgfmathresult}
      \node[anchor=north] (t\i) at (t\prev.south) {\i \trace};
    }
    \end{tikzpicture}
  }
  
  \plotall
  
  \end{document}

pgfmathresult returns numbers like 2.0 rather than 2 (\show\i returns,
e.g., \i=macro: ->1.0.), which I think confuses tikz.  Here's an error
message:

  ! Package pgf Error: No shape named t1 is known.
  
  See the pgf package documentation for explanation.
  Type  H <return>  for immediate help.
   ...                                              
                                                    
  l.21 \plotall

How can I get rid of the .0?  Is this actually the problem?  I don't
think I'm having the non-expandability problem that some people have,
e.g., [1], because my name macros (\i and \prev) are really expanding
to numbers and not token sequences...

  [1] http://tex.stackexchange.com/questions/27769/is-it-possible-to-use-a-macro-to-name-a-tikz-node,

Is there perhaps a better way to dynamically name tikz nodes?

Thanks,

Neal


More information about the texhax mailing list