Tikz 数组索引作为节点文本值

Tikz 数组索引作为节点文本值

我想使用存储在数组中的数字作为节点文本值,但这对我来说不起作用:

    \begin{tikzpicture}
        \foreach \x [count=\xi] in {0,...,5} {
            \node (a\x) at (\x*1.75,0) [regular polygon,regular polygon sides=4,draw] {\xi};
        }
        \def\firstSums{{3, 7, 11}}
        \foreach \x [count=\xi] in {0, 2, 4} {
            \node (b\x) at (\x*1.75,-1.75) [circle,draw] {\firstSums[\xi - 1]};
        }
    \end{tikzpicture}

我没有得到包含 3、7 和 11 作为文本的圆圈,而是得到了包含3,7,11[1-1]3,7,11[2-1]3,7,11[3-1]作为文本的圆圈。

我在这里做错了什么?

答案1

通过使用\pgfmathsetmacro循环和第二行节点的相对定位:

\documentclass[margin=3mm]{standalone}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}[
node distance = 12mm, 
C/.style = {circle, draw, minimum size=1.7em,inner sep=0pt}
                        ]
\foreach \x [count=\i]in {0,...,5}
{
\node (a\i) [draw] at (1.2*\x,0)  {\i};
\ifodd \x\else
\pgfmathsetmacro{\j}{int(2*\i+1)}
\node[C, below of=a\i] {\j};
\fi
}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

为了通过索引引用数组的元素,您需要通过 tikz/pgf 引擎解析表达式

\pgfmathparse{\firstSums[\xi - 1]}

但是这不会打印结果,所以你需要一个额外的\pgfmathresult,这样

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\begin{tikzpicture}
    \foreach \x [count=\xi] in {0,...,5} {
        \node (a\x) at (\x*1.75,0) [regular polygon,regular polygon sides=4,draw] {\xi};
    }
    \def\firstSums{{3, 7, 11}}
    \foreach \x [count=\xi] in {0, 2, 4} {
        \node (b\x) at (\x*1.75,-1.75) [circle,draw] {\pgfmathparse{\firstSums[\xi - 1]}\pgfmathresult};
    }
\end{tikzpicture}

\end{document}

在此处输入图片描述


另外,里面有一个eveluate语法。我个人建议使用这种方法,这样可以避免使用像和这样foreach的长宏,从而使代码更短。\pgfmathparse\pgfmathresult

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\begin{tikzpicture}
    \foreach \x [count=\xi] in {0,...,5} {
        \node (a\x) at (\x*1.75,0) [regular polygon,regular polygon sides=4,draw] {\xi};
    }
    \def\firstSums{{3, 7, 11}}
    \foreach \x [count=\xi, evaluate={\elem=\firstSums[\xi - 1]}] in {0, 2, 4} {
        \node (b\x) at (\x*1.75,-1.75) [circle,draw] {\elem};
    }
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容