我有一套 Ti钾Zpic
定义为
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\tikzset{
shape/.pic = {
\node [draw] (xx) {};
\coordinate (-right) at (xx.east);
\coordinate (-left) at (xx.west);
}
}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,...,10}{
\pic at (\i*1cm,0) (n-\i) {shape};
}
\end{tikzpicture}
\end{document}
假设我想按顺序连接这些pic
s。例如,我想连接n-1-right
到n-2-left
和n-2-right
等等n-3-left
。我可以用标签做这样的“加 1”操作吗?例如,我正在寻找这样的代码
\foreach \i in {1,2,...,9}{
\draw (n-\i-right) -- (n-\i+1-left);
}
请注意,我的问题不是将这些pic
s 相互连接起来(即,这个特定示例是不是我的问题),而是用标签进行数学运算。
答案1
您可以使用该count
选项并执行以下操作:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\tikzset{
shape/.pic = {
\node [draw] (xx) {};
\coordinate (-right) at (xx.east);
\coordinate (-left) at (xx.west);
}
}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,...,10} {
\pic at (\i*1cm,0) (n-\i) {shape};
}
\foreach \i [count=\j from 2] in {1,2,...,9} {
\draw (n-\i-right) -- (n-\j-left);
}
\end{tikzpicture}
\end{document}
对于更复杂的计算,你可以使用类似如下的方法:
\foreach \i in {1,2,...,9} {
\pgfmathtruncatemacro{\j}{\i+1}
\draw (n-\i-right) -- (n-\j-left);
}