动机
在尝试回答时饼图以角度而非百分比表示值,我坚持将字符串传递给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