# TikZ: Variable arithmetic result in node name

I'm having trouble incrementing a variable in TikZ and then using the result as part of a node name:

\def\x{2}
\begin{figure}[H]
\begin{tikzpicture}
\node (X\xplusone1) at (0,0) {};
\path (1, 1) edge (X\xplusone1);
\end{tikzpicture}
\end{figure}


seems to be parsing the final line as "X3" instead of "X31".

-
I assume that the line \node (X\xplusone0)... should be \node (X\xplusone1)...? Also, for questions like this, please post complete compilable minimal files. In this case, you don't need the figure environment, but it would save others some work if you included the preamble and the document environment. – Jake Sep 26 '11 at 6:23
Closely related question: tex.stackexchange.com/q/4275/86 – Andrew Stacey Sep 26 '11 at 7:27
Also closely related: tex.stackexchange.com/q/27822/86 – Andrew Stacey Sep 26 '11 at 7:28
Oh, and: tex.stackexchange.com/q/28228/86 – Andrew Stacey Sep 26 '11 at 7:29

\pgfmathsetmacro always saves its result with a decimal place, even if you're just working with integers. This will confuse TikZ, which assumes that a period separates a node name from an anchor. You should use \pgfmathtruncatemacro instead, which will discard the decimal digits:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\def\x{2}
\begin{tikzpicture}
\pgfmathtruncatemacro{\xplusone}{\x + 1}
\node (X\xplusone1) at (0,0) {};
\path (1, 1) edge (X\xplusone1);
\end{tikzpicture}

\end{document}

-