我想绘制一个节点“列”,类似于以下内容(除了我希望所有节点都有相同的尺寸)。
我使用以下代码创建:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node[draw] (10) {10};
\node[draw, below= 0cm of 10] (9) {9};
\node[draw, below= 0cm of 9] (8) {8};
\node[draw, below= 0cm of 8] (7) {7};
\node[draw, below= 0cm of 7] (6) {6};
\node[draw, below= 0cm of 6] (5) {5};
\node[draw, below= 0cm of 5] (4) {4};
\node[draw, below= 0cm of 4] (3) {3};
\node[draw, below= 0cm of 3] (2) {2};
\node[draw, below= 0cm of 2] (1) {1};
\end{tikzpicture}
\end{document}
我尝试了以下操作:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\node[draw] (10) {10};
\foreach \x [count=\xi] in {9, 8, 7, 6, 5, 4, 3, 2, 1} {
\node[draw, below= 0cm of 10-\xi+1 ] (\x) {\x};
}
\end{tikzpicture}
\end{document}
但我收到了错误:
! Package pgf Error: No shape named 10-1+1 is known.
知道我做错了什么吗?
编辑:我应该提到,我希望能够处理每个节点,如(10),(9)等,因为这个形状是更大图形的一部分,这将是有用的。
答案1
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains, % <---
positioning}
\begin{document}
\begin{tikzpicture}[
node distance = 0pt, % <---
start chain = A going below % <---
]
\foreach \x in {10, 9,..., 1} % <---
{
\node[draw, minimum width=2em, minimum height=3ex, on chain] {\x}; % <---
}
\draw (A-1.east) -- ++ (1,0);
\end{tikzpicture}
\end{document}
给出:
我的建议中您的 MWE 之间的差异用 标记% <---
。节点名称为A-1
(包含数字 10),... A-10
(包含数字 1)。您可以反向绘制节点,从上到下再从下到上。在这种情况下,节点内容中的数字等于节点标签中的数字:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains,
positioning}
\begin{document}
\begin{tikzpicture}[
node distance = 0pt,
start chain = A going above
]
\foreach \x in {1, 2,..., 10}
{
\node[draw, minimum width=2em, minimum height=3ex, on chain] {\x};
}
\draw (A-10.east) -- ++ (1,0);
\end{tikzpicture}
\end{document}
上面的例子给出与第一个示例相同的结果。