我想在页面上放置可变数量的节点,但我还希望能够为这些节点指定一个(整数)名称。但是,我遇到了一个问题,即只有某些类型的命令才能出现在节点的标签中(请参阅这个问题)。
我为了实现自己的愿望而进行的天真的尝试是......
\documentclass{article}
\usepackage{tikz}
\def\n{3}
\begin{document}
\begin{tikzpicture}
\node[draw, circle] (\n + 1) {4};
\node[draw, circle] (\n + 2) [right of=4] {5};
\end{tikzpicture}
\end{document}
...但这会出现错误消息...
! Package pgf Error: No shape named 4 is known.
...因为节点的名称实际上是“3 + 1”(或接近于它的值)。
我发现了这个黑客...
\documentclass{article}
\usepackage{tikz}
\def\n{3}
\begin{document}
\begin{tikzpicture}
\pgfmathtruncatemacro{\nPlusOne}{\n + 1}
\node[draw, circle] (\nPlusOne) {4};
\node[draw, circle] (\n + 2) [right of=4] {5};
\end{tikzpicture}
\end{document}
...其行为正确。但是,当调用也使用此 hack 的嵌套函数时,它们会\nPlusOne
使用给定的 值进行重新定义\n
。
问题
将计算的整数分配给节点标签的更好方法是什么?
答案1
那么像这样的事情怎么样:
\documentclass{article}
\usepackage{tikz}
\newcounter{n}\setcounter{n}{3}
\addtocounter{n}{1}
\begin{document}
\begin{tikzpicture}
\node[draw, circle] (\arabic{n}){4};
\addtocounter{n}{1}
\node[draw, circle] (\arabic{n}) [right of=4] {5};
\draw (4)--(5);
\end{tikzpicture}
\end{document}
生产