如何使用嵌套的 foreach 构建网格,为每次迭代定义一个节点?
如果我使用 Python 编写代码,我会写:
nodes = {}
for i in range(10):
for j in range(5):
node = nodes[(i, j)] = create_node(location=(i, j), text="node text")
if (i-1, j) in nodes:
add_path(nodes[(i-1, j)], node, style=hstyle)
if (i, j-1) in nodes:
add_path(nodes[(i, j-1)], node, style=vstyle)
我的代码需要比这更复杂(它不是一个简单的网格),但这样做将是一个很好的开始。
答案1
我不完全确定 Python 代码的作用(是否add_path(<node>)
将当前节点链接到参数中指定的节点?),但我还是尝试了一下。
这是我的解释:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
every node/.style={draw,text width=0.5cm},
x=1.1cm,
y=1.1cm]
\foreach \i in {1,...,10} {
\foreach \j [
evaluate=\j as \jprev using int(\j-1),
evaluate=\i as \iprev using int(\i-1)] in {1,...,5} {
\node (\i-\j) at (\i,-\j) {\i\,\j};
\ifnum \jprev = \i
\draw [red, very thick] (\i-\jprev) -- (\i-\j);
\fi
\ifnum \iprev = \j
\draw [red, very thick] (\iprev-\j) -- (\i-\j);
\fi
}
}
\end{tikzpicture}
\end{document}