使用 For 循环绘制一列节点

使用 For 循环绘制一列节点

我想绘制一个节点“列”,类似于以下内容(除了我希望所有节点都有相同的尺寸)。

在此处输入图片描述

我使用以下代码创建:

\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}

上面的例子给出与第一个示例相同的结果。

相关内容