I was writing some macros for drawing timelines in Tikz and thought that it might be good to name the internal help coordinates with an @ in it. The idea is that in this way it will not conflict with the coordinates of a potential user of those macros (not that I will be able to produce a package because of my recurrent coding problems).
However, I was surprised that I can use an @ in the name of a coordinate without placing it within \makeatletter and \makatother:
\begin{tikzpicture}
\draw (0,0)--(2,0) coordinate (A@1);
\draw (1,1)--(A@1);
\end{tikzpicture}
My question is: why does it work?
Then, if the @ can be used freely, the help coordinates will not be protected against an unintentional use.
@in coordinate names is well known and has used e.g. in https://tex.stackexchange.com/a/316050/121799. The idea is still that using these makes it less likely that "random users" accidentally use the same symbols. Same is true for underscores, e.g.\begin{tikzpicture} \draw (0,0) --(2,0) coordinate (A@1) (4,0) coordinate (X_Y); \draw (1,1)--(A@1) -- (X_Y); \end{tikzpicture}. – Apr 27 '19 at 19:23