使用两个 \foreach 循环的计数器值操作来引用 tikz 中的数组元素

使用两个 \foreach 循环的计数器值操作来引用 tikz 中的数组元素

我想使用 tikz 脚本中两个嵌套 \foreach 循环的 \x 和 \y 变量来引用列表的元素。代码如下所示:

\documentclass{minimal}
\usepackage{tikz}
\usepackage{calc}
\RequirePackage{etoolbox} % defines lists and their operations

\pgfsetxvec{\pgfpoint{.866cm}{.5cm}}
\pgfsetyvec{\pgfpoint{.866cm}{-.5cm}}
\pgfsetzvec{\pgfpoint{0cm}{-1cm}}

\begin{document}

\begin{tikzpicture}

\newcount\tmpnum
\def\storedata#1#2{\tmpnum=0 \edef\tmp{\string#1}\storedataA#2\end}
\def\storedataA#1{\advance\tmpnum by1
   \ifx\end#1\else
      \expandafter\def\csname data:\tmp:\the\tmpnum\endcsname{#1}%
      \expandafter\storedataA\fi
}
\def\getdata[#1]#2{\csname data:\string#2:#1\endcsname}

\storedata\List{{$0$}{$1$}{$\ast$}{$\times$}
                          {$0$}{$1$}{$\ast$}{$\times$}
                          {$0$}{$1$}{$\ast$}{$\times$}
                          {$0$}{$1$}{$\ast$}{$\times$}}


  \foreach \x in {1,...,4}
  \foreach \y in {1,...,4}
    \draw (\x,\y,0) -- (\x+1,\y,0) --(\x+1,\y+1,0)--(\x,\y+1,0) -- (\x,\y,0)  node [midway,sloped,above,xslant=0.5]{\getdata[\x+\y]\List};
        

\end{tikzpicture}

\end{document}

我有些不明白为什么它实际上不执行两个变量的加法。此外,我尝试仅打印 \x+y 值,结果看起来像是在执行字符串连接,例如:

\x+\y = "x + y" 作为

很抱歉提出这个愚蠢的问题,我希望一些 tikz-ninjas 和 TeX-samurais 可以提供帮助。

答案1

我是非常不确定你想实现什么,但你可能只需要 TiZ 代表:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
    x=({.866cm,.5cm}),
    y=({.866cm,-.5cm})
]

\newcommand{\mylist}{
    1/1/*/$\times$,
    2/2/+/$+$,
    3/3/-/$-$,
    4/4/{/}/$\div$%
}

\foreach \va/\vb/\oc/\op [count=\x] in \mylist {
  \foreach \y in {0,...,3} {
    \draw (-\x,\y) -- ({-\x+1},\y) -- 
      ({-\x+1},{\y+1}) -- (-\x,{\y+1}) -- cycle;
    \path ({-\x+0.5},\y) -- ({-\x+0.5},{\y+1})
      node[midway, sloped, xslant=0.5] {%
        \ifcase\y\relax
          \va\or
          \op\or
          \vb\or
          \pgfmathparse{int(\va \oc \vb)}\pgfmathresult
        \fi%
      };
  }
}

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容