考虑以下 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}