我想使用 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
我是非常不确定你想实现什么,但你可能只需要 Ti钾Z 代表:
\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}