![在 TikZ 中操作变量](https://linux22.com/image/287765/%E5%9C%A8%20TikZ%20%E4%B8%AD%E6%93%8D%E4%BD%9C%E5%8F%98%E9%87%8F.png)
要在 TikZ 中的坐标 (1,0), (2,0), ..., (8,0) 处创建名称为 P1, P2, ..., P8 的点,我可以使用
\begin{tikzpicture}[scale=1]
\foreach \i in {1,...,8}
{
\path (\i,0) coordinate (P\i);
\fill (P\i) circle (2pt);
}
\end{tikzpicture}
现在,如果我想创建相同的八个点,但将它们命名为 P2、P3、...、P9,该怎么办?
我尝试将其改为
\path (\i,0) coordinate (P(\i+1));
但它不起作用。
答案1
这会起作用。使用一个附加变量 \t,通过公式将其与 \i 关联,如下所示。这里添加了一个节点来打印标签,以便进行视觉表达。
[evaluate=\i as \t using int(\i+1)]
更多:由 percusse 提议,通过
[count=\t from 2]
意思是从 2,3,4 开始数……
代码
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\begin{document}
Before:
\bigskip
\begin{tikzpicture}[scale=1]
\foreach \i in {1,...,8}
{
\path (\i,0) coordinate (P\i) node[above]{P\i};
\fill (P\i) circle (2pt);
}
\end{tikzpicture}
\bigskip
After:
\bigskip
\begin{tikzpicture}[scale=1]
\foreach \i[evaluate=\i as \t using int(\i+1)] in {1,...,8}
{
\draw (\i,0) coordinate (P\t) node[above]{P\t};
\fill (P\t) circle (2pt);
}
\end{tikzpicture}
\bigskip
More: proposed by percusse.
\bigskip
\begin{tikzpicture}[scale=1]
\foreach \i[count=\t from 2] in {1,...,8}
{
\draw (\i,0) coordinate (P\t) node[above]{P\t};
\fill (P\t) circle (2pt);
}
\end{tikzpicture}
\end{document}