我正在尝试创建一个三角形的数字网格,如下所示:
这是在 Ti 中创建的钾Z 通过对每个点进行硬编码,但我想以程序方式生成网格,以便我可以轻松地使用大量点进行调整。以下代码是我解决问题的方法:
\documentclass{article}
\usepackage{tikz}
\begin{tikzpicture}[scale=1.5]
\foreach \s in {2,...,4} {
\foreach \m in {1,...,\numexpr\s-1} {
\def\n{\s-\m}
\draw (\n,-\m) node {$a_{\m\n}$};
}
}
\end{tikzpicture}
然而,这会产生以下不良结果:
我解决这个问题的想法是\numexpr
在节点\n
定义中或之前添加\n
。然而这会产生错误you can't use '\numexpr' in math mode
。
我不知道下一步该做什么。如何在 Ti 的数学模式下评估此类变量钾Z 图片?
进一步说明一下,如果我出于测试目的忽略数学模式的需要而只是简单地输入\numexpr\n
节点文本,我反而会收到类似的错误消息you can't use '\numexpr' in restricted horizontal mode
。
此外,如果可能的话,我想保留这个\foreach
迭代结构,因为它对于我在完整应用程序中使用的其他注释来说是理想的。
答案1
答案2
已经有一个关于如何使用的答案\numexpr
,一个关于如何重写循环以避免这种情况的答案,这里还有另一种可能性:您可以使用提供的工具foreach
进行计算。您可以使用count
和evaluate
:
\documentclass[tikz,border=7pt]{standalone}
\begin{document}
\begin{tikzpicture}[scale=1.5]
\foreach[count=\t from 1] \s in {2,...,4} {
\foreach[evaluate={\n=int(\s-\m)}] \m in {1,...,\t} {
\draw (\n,-\m) node {$a_{\m\n}$};
}
}
\end{tikzpicture}
\end{document}