tikz 子程序中的 pgfmathparse 不起作用

tikz 子程序中的 pgfmathparse 不起作用

考虑以下 MWE:

\documentclass{article}
\usepackage{pgf, tikz}
\begin{document}
\begin{tikzpicture}
\node {} child foreach \i in {1,2,3} {node {$\i$}};
\end{tikzpicture}
\end{document}

如果我\pgfmathparse{}在子括号内添加一个,像这样

\node {} child foreach \i in {1,2,3} {\pgfmathparse{1+1} node {$\i$}};

发生以下错误:

! Package tikz Error: Giving up on this path. Did you forget a semicolon?.

编辑

本质上我想制作儿童的条件画,就像

\node (O) {} child foreach \i in {1,2,3} {
    \ifthenelse{\i=2}{}{node {$\i$}}
};

但我\pgfmathparse首先需要一些命令来评估更复杂的情况。

答案1

TikZ 有自己的用于创建路径的解析器,以及用于树中子元素的略微不同的解析器。因此不可能将任意代码粘贴到任何地方。

在正常路径中,代码可以包装在\pgfextra命令中,但在树中不允许这样做。如果只是需要评估,那么evaluate可以在 foreach 循环中使用(可能仍未记录)键:

\documentclass[tikz,border=5]{standalone}
\begin{document}
\begin{tikzpicture}
\node {} child foreach \i [evaluate={\j=int(\i*3);}] in {1,2,3} { node {$\i:\j$}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容