将先前连接的字符串传递给 foreach 时出错

将先前连接的字符串传递给 foreach 时出错

动机

在尝试回答时饼图以角度而非百分比表示值,我坚持将字符串传递给foreach

上下文

为了说明问题,我简要介绍了一下背景。这个问题要求在图表中输入度数而不是百分比,所以我的想法是将角度转换为百分比,然后\pie调用pgf-pie

问题

代码:

\documentclass[tikz,border=10pt]{standalone}

%\usepackage{pgf-pie}

\newcommand{\anglepie}[1]{%
  \gdef\elements{}
  \foreach \ang/\lab[count=\xi] in {#1}{
     \pgfmathtruncatemacro\perc{(\ang*100)/360}
     \ifnum\xi=1
       \xdef\elements{\perc/\lab}
     \else
       \xdef\elements{\elements, \perc/\lab}
     \fi
  }
  %\pie{\elements} % ideally call this
  \node{\elements};
%  \foreach \x/\y in {\elements}
%  \node[draw] at (\x/10,-1) {\y};
}

\begin{document}
\begin{tikzpicture}
\anglepie{10/A, 20/V, 30/C, 40/D}
\end{tikzpicture}
\end{document}

原则上有效,因为宏\elements包含一个正确形式的字符串,可以传递给foreach(遵循相同的推理凸包方法中的爱好路径实现)。这已得到验证,感谢\node{\elements};

在此处输入图片描述

但是,取消注释:

\foreach \x/\y in {\elements}
\node[draw] at (\x/10,-1) {\y};

出现错误:

! Package PGF Math Error: Unknown function `A' (in '2/A').
! Package PGF Math Error: Unknown function `V' (in '5/V').
! Package PGF Math Error: Unknown function `C' (in '8/C').

我的感觉是\elements无法正确解释该字符串foreach,但我不知道背后的动机。那里发生了什么?

答案1

在此处输入图片描述

你需要\expandafter

  \expandafter\pie\expandafter{\elements} % ideally call this

相关内容