我尝试使用字母而不是数字来模拟其他代码foreach
,tikz
因此这是我的代码:
\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}