给定一个具有 x 和 y 坐标的两条线的图形,我想复制该图形并将所有 x 坐标增加相同的整数(在此示例中为 3)。我尝试使用 foreach 循环,但它不起作用。
\documentclass[tikz]{standalone}
\usetikzlibrary{math}
\begin{document}
\begin{tikzpicture}
\draw[gray!40!] (-0.5,-0.5) grid (6.5,4.5);
\tikzmath{
int \x1; int \x2;
\x1 = 0; \x2 = 2;
}
\draw[black,thick] (\x1,2) -- (\x2,2);
\foreach \X in {\x1,\x2}{
\X=\X+3;
}
\draw[black,thick] (\x1,2) -- (\x2,2);
\end{tikzpicture}
\end{document}
我猜我使用的语法不对。但是我希望有一个代码,我只需要更改一个数字(这里是 3),然后我的所有 x 坐标都会根据这个数字进行更改。
答案1
您尝试的方法不起作用,因为在该上下文中没有求值。您应该做的是使用第二个\tikzmath
,如以下示例所示:
\documentclass[tikz]{standalone}
\usetikzlibrary{math}
\begin{document}
\begin{tikzpicture}
\draw[gray!40!] (-0.5,-0.5) grid (6.5,4.5);
\tikzmath{
int \x1; int \x2;
\x1 = 0; \x2 = 2;
}
\draw[black,thick] (\x1,2) -- (\x2,2);
\tikzmath{
for \X in {1,2}{
\x\X=\x\X+3;
};
}
\draw[black,thick] (\x1,2) -- (\x2,2);
\end{tikzpicture}
\end{document}
移动一条(或多条)路径的更常见方式是使用shift={(x,y)}
,作为特定路径的选项,或者作为scope
环境的选项,如下所示(这些declare function
内容只是制作常量的另一种方式,您也可以使用这些\tikzmath
内容):
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[
declare function={
x1=0;
x2=2;
}
]
\draw[gray!40!] (-0.5,-0.5) grid (6.5,4.5);
\draw[black,thick] (x1,2) -- (x2,2);
\begin{scope}[shift={(3,0)}]
\draw[black,thick] (x1,2) -- (x2,2);
\end{scope}
\end{tikzpicture}
\end{document}
两个示例都给出相同的输出: