我正在尝试使用 TikZ 制作一个简单的图形。
这是我的代码
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{memory/.style={draw,minimum width = 100pt, minimum height = 25pt, node distance = 0}}
% Draw memory cells with addresses.
\newcounter{add} % memory address
\setcounter{add}{202}
\node [memory, label=left:0x\theadd] (a) {a};
\stepcounter{add} % name of above node
\newcounter{aboveNode}
\setcounter{aboveNode}{1}
\foreach \n in {b,c,d,e,f} {
\node [memory, label=left:0x\theadd, below = of {\alph{aboveNode}}] (\n) {\n};
\stepcounter{add}
\stepcounter{aboveNode}
}
\end{tikzpicture}
\end{document}
我觉得我应该能够做到这一点而不必使用计数器aboveNode
。我发现了,\tikzlastnode
但按如下方式使用它是行不通的。
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{memory/.style={draw,minimum width = 100pt, minimum height = 25pt, node distance = 0}}
% Draw memory cells with addresses.
\newcounter{add}
\setcounter{add}{202}
\node [memory, label=left:0x\theadd] (a) {a};
\stepcounter{add}
\foreach \n in {b,c,d,e,f} {
\node [memory, label=left:0x\theadd, below = of \tikzlastnode] (\n) {\n};
\stepcounter{add}
}
\end{tikzpicture}
\end{document}
LaTeX 给出错误
ERROR: Undefined control sequence.
--- TeX said ---
<argument> of \tikzlastnode
l.20 }
有没有办法访问最后绘制的节点?或者有更简单的方法来绘制我的图表?目前,我使用的线条比手动绘制每个节点要多。
更新
正如指出的那样下面的答案,remember
可以用来消除aboveNode
计数器。add
计数器也可以类似地消除吗?
答案1
更新您可以使用remember
key 来访问最后一个节点的名称,并使用count
key 来替换add
计数器。对于仍在使用 PGF 2.10 的用户,将变量列表从 更改{b,c,d,e,f}
为{b,...,f}
将解决该版本中的错误。
平均能量损失
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\tikzset{memory/.style={draw,minimum width = 100pt, minimum height = 25pt, node distance = 0}}
% Draw memory cells with addresses.
\node [memory, label=left:0x{202}] (a) {a};
\foreach \n[remember=\n as \lastn (initially a), count=\ctr from 203] in {b,...,f} {
\node [memory, label=left:0x\ctr, below = of \lastn] (\n) {\n};
}
\end{tikzpicture}
\end{document}