Tikz - 动态节点命名

Tikz - 动态节点命名

我需要使用计数器动态创建 TiKz 中节点的 ID,以便我可以根据前一个节点定位新节点。计数器的创建方式如下,并且会随着每个新节点而增加:

\documentclass[10pt]{article}
\begin{document}
\thispagestyle{empty}

\newcounter{nojobs}\setcounter{nojobs}{0}

动态创建 TiKz 节点的命令定义如下(此命令可以根据需要多次调用):

\newcommand{\job}[7]{
    \stepcounter{nojobs}

    \node [
        regular polygon,
        regular polygon sides=3,
        fill=headergray,
        anchor=north,
        shift={(+0.0cm,+0.0cm)},
        minimum width=\tipheight,
        minimum height=\tipheight,
        shape border rotate=90
    ]
        (__job_\value{nojobs})
        at
        (__job_\the\numexpr\value{nojobs}-1\relax.south)
    {};

}

问题是,每当调用该命令时,LaTeX 都会说:

! Undefined control sequence.
\job ...par \par \stepcounter {nojobs} \par \node 
  • 这是解决问题的正确方法吗?还有其他解决方案吗?
  • 计数器变量能这样使用吗?
  • 计数器变量可以减少并用于计算前一个节点 ID 吗?

答案1

您的方法是有效的 —— 原则上。以下是使其发挥作用的第一步。唯一真正的“改进”是使用\pgfmathtruncatemacro

\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning,backgrounds,shapes}
\thispagestyle{empty}

\newcounter{nojobs}\setcounter{nojobs}{0}
\newcommand{\job}[7]{
    \stepcounter{nojobs}
    \pgfmathtruncatemacro{\ni}{\value{nojobs}}
    \pgfmathtruncatemacro{\nj}{\value{nojobs}-1}
    \node 
    [
        regular polygon,
        regular polygon sides=3,
%        fill=headergray,
        anchor=north,
        shift={(+0.0cm,+0.0cm)},
%         minimum width=\tipheight,
%         minimum height=\tipheight,
        shape border rotate=90
    ]
        (jobnode\ni)
        at
        (jobnode\nj.south)
    {#1};

}
\begin{document}
\tikz{\node (jobnode0) at (0,0) {};\job1234567\job2345678}
\end{document}

我的水晶球坏了,所以我不得不注释掉一些没有可编译的 MWE 就不知道的选项。

编辑:我删去了.0我答案早期版本中返回的浮点数,并使用注释来这个问题

相关内容