我正在尝试使用 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]);