我正在尝试使用 TikZ 在 LaTeX 中生成交错矩形网格:(x,y),其中 1<=y<=5 且 y<=x<=y+5。我尝试了以下方法:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \y in {1,...,5} {
\foreach \x in {\y, ...,10} {
%%\if (\x <= \y+5)
\draw (\x,-\y) +(-.5,-.5) rectangle ++(.5,.5);
\draw (\x,-\y) node{$a_{\x}^{\y}$};
%%\fi
}
}
\end{tikzpicture}
\end{document}
这让我开始有点不顺畅。但是,如果我将第二个 foreach 中的“10”限制更改为“\y+5”,则会收到错误“!非法测量单位(pt 插入)。”如果我删除注释标记并应用 if 测试,则图表为空。(如果我尝试更简单的“\if \x < 8”,我会得到 x==11 的列,我不明白。)
我很容易相信我的语法不正确——这是我第一次尝试使用 TikZ。因此,除了简单的修复之外,我还希望得到一些元建议:如何调试这个问题?你能推荐一个替代包吗?这样我就不用费力做这么简单的事情了?谢谢。
答案1
您的尝试未能完全满足您的要求有两个原因:
- 您不能在 的参数中进行计算
\foreach
。 - 该
\if
子句并非如此。由于这些是整数,因此您可以使用\ifnum
,例如\ifnum\x<8
或 之类的。
这是一个可以完成我认为您想要做的事情的版本。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \y [evaluate=\y as \xmax using {int(\y+5)}] in {1,...,5} {
\foreach \x in {\y, ...,\xmax} {
\draw (\x,-\y) +(-.5,-.5) rectangle ++(.5,.5);
\draw (\x,-\y) node{$a_{\x}^{\y}$};
}
}
\end{tikzpicture}
\end{document}