如何使用 tikz 中的坐标标签进行数学运算?

如何使用 tikz 中的坐标标签进行数学运算?

我有一套 TiZpic定义为

\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}

假设我想按顺序连接这些pics。例如,我想连接n-1-rightn-2-leftn-2-right等等n-3-left。我可以用标签做这样的“加 1”操作吗?例如,我正在寻找这样的代码

\foreach \i in {1,2,...,9}{
                           \draw (n-\i-right) -- (n-\i+1-left);
                          }

请注意,我的问题不是将这些pics 相互连接起来(即,这个特定示例是不是我的问题),而是用标签进行数学运算。

答案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);
}

相关内容