数组中定义的形状的名称

数组中定义的形状的名称

我正在尝试使用 tikz 在数组中定义的标签来绘制两个形状之间的路径。我尝试过使用,pgfmathparse但字符串似乎定义得不太好。我的语法可能是错误的。

梅威瑟:

\documentclass[]{standalone}
\usepackage{tikz}

\begin{document}
\def\stA {AA}
\def\stB {BB}
\def\stC{{"AA","BB"}}
\begin{tikzpicture}
\node at (0,0) (AA){coucou};
\node at (2,0) (BB){ahah};

\draw (\stA)--(\stB);

\draw (\pgfmathparse{\stC[2]}\pgfmathresult)--(\pgfmathparse{\stC[1]}\pgfmathresult);
\end{tikzpicture}
\end{document}

答案1

这里有两种方法。第一种方法是\pgfextra先求数组的值,然后再使用\pgfmathresult。第二种方法是使用math库来求数组的值。

\documentclass[tikz]{standalone}
\usetikzlibrary{math}

\begin{document}
  \def\stC{{"AA","BB"}}

  \begin{tikzpicture}
    \node at (0,0) (AA){coucou};
    \node at (2,0) (BB){ahah};
    \draw (AA)--(BB);

    % method one
    \draw[red,bend left] \pgfextra{\pgfmathparse{\stC[0]}}(\pgfmathresult)
                         \pgfextra{\pgfmathparse{\stC[1]}} to (\pgfmathresult);

    % method two
    \tikzmath{\first= \stC[0]; \second = \stC[1];}
    \draw[blue, bend right] (\first) to (\second);
  \end{tikzpicture}
\end{document}

在此处输入图片描述

笔记:数组索引从 0 开始。

答案2

TikZ 需要完全可扩展的坐标和类似输入。
例如(可能还有更多):


使用.evaluated键处理程序和node明确使用的坐标系,您可以执行以下操作:

\draw (node cs: name/.evaluated=\stC[1])
   -- (node cs: name/.evaluated=\stC[0]);

对于实际坐标(即没有节点名称),TikZ 无论如何都会将所有内容抛出 PGFmath,您只需执行

\newcommand*\stDA{{.5,2,3.4,-1.5}}
\newcommand*\stDB{{2,1.5,3,-1}}
\foreach \da in {0,2}
  \foreach \db in {0,2}
    \draw (\stDA[\da], \stDB[\db]) -- (\stDA[\da+1], \stDB[\db+1]);

相关内容