Tikz 设置计数器不工作

Tikz 设置计数器不工作

我尝试使用字母而不是数字来模拟其他代码foreachtikz因此这是我的代码:

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,automata, positioning}
\usepackage{float}
\usepackage{ifthen}
\begin{document}
    \begin{figure}[H]\centering
        \begin{tikzpicture}[>=stealth', auto,node distance=2.5cm]
        \foreach \a in {1,2,...,5} { 
            \setcounter{nodeCount}{\a}
            \ifthenelse{\a <= 2}{
                \draw (2*\a, 0) node[state, name = \Alph{nodeCount}] {$\Alph{nodeCount}$};
            }
            {
                \draw (2*\a - 6, 1) node[state, name = \Alph{nodeCount}] {$\Alph{nodeCount}$};
            }
            \edef\underNode{nodeCount}
            \addtocounter{nodeCount}{5}
            \node[state, above of = \Alph{\underNode}, name = \Alph{nodeCount}]{$\Alph{nodeCount}$};
        }
        \end{tikzpicture}
    \end{figure}
\end{document}

我正在尝试绘制这个:

在此处输入图片描述

我该如何正确地编写代码?

答案1

这可能是您想要生成的代码。首先,您需要

\newcounter{nodeCount}

那么你可能想说

\edef\underNode{\Alph{nodeCount}}

您不需要ifthen这里的包,arrows它已被取代arrows.meta,并且您正在加载但未使用定位库,现在它使用正确的语法above=of ...而不是above of=...

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata,positioning}
\usepackage{float}
\newcounter{nodeCount}
\begin{document}
\begin{figure}[H]
    \centering
        \begin{tikzpicture}[>=Stealth, auto,node distance=2.5cm]
        \foreach \a in {1,2,...,5} { 
            \setcounter{nodeCount}{\a}
            \ifnum\a<3
             \draw (2*\a, 0) node[state, name = \Alph{nodeCount}] {$\Alph{nodeCount}$};
            \else               
             \draw (2*\a - 5, 1.5) node[state, name = \Alph{nodeCount}] {$\Alph{nodeCount}$};
            \fi
            \edef\underNode{\Alph{nodeCount}}
            \addtocounter{nodeCount}{5}
            \node[state, above=of \underNode, 
            name = \Alph{nodeCount}]{$\Alph{nodeCount}$};
        }
        \end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

这看起来不太像目标输出,目标输出可以通过例如 轻松获得matrix

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{automata,matrix}
\newcounter{nodeCount}
\begin{document}
\begin{tikzpicture}[c/.style={state,execute at begin node={%
    $\stepcounter{nodeCount}%
    \Alph{nodeCount}$}}]
 \matrix[matrix of nodes,row sep=-6em,column sep=1em] (mat)
 {  & & |[c]| & &  |[c]|  & &  \\
  |[c]| & &  &|[c]| &   & & |[c]|  \\
    & & |[c]| & &  |[c]|  & &  \\
 & |[c]|  &  & |[c]|  &   &  |[c]| & \\
    };
 \path (mat-1-3.south)  (mat-4-2.north);  
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容