![使用计数器值作为 pgfmathparse 的输入](https://linux22.com/image/412054/%E4%BD%BF%E7%94%A8%E8%AE%A1%E6%95%B0%E5%99%A8%E5%80%BC%E4%BD%9C%E4%B8%BA%20pgfmathparse%20%E7%9A%84%E8%BE%93%E5%85%A5.png)
我有一个命令,可以根据计数器值打印数字。我试图用这个数字进行进一步的数学计算。
\documentclass[]{article}
\begin{document}
\newcommand{\foo}{
\newcounter{bar}
\setcounter{bar}{0}
\stepcounter{bar}
\thebar
}
% This does not work, but results in an endless loop
\pgfmathparse{\foo{}*0.3}
\end{document}
显然,这是不可能的。不幸的是,我无法将 \foo 的输出作为数值存储在其他变量中,然后供 \pgfmathparse 使用。
有什么建议么?
答案1
以 MWE 答案的形式总结我的评论。
要点:不要在 内步进计数器\pgfmathparse
;此外,计数器在 LaTeX 中是全局的,因此\thebar
即使在组内步进后, 也始终可用;如果您需要\foo
之外的打印版本\pgfmathparse
,则创建两个宏,例如\foo
和\silentfoo
。
额外提示:除非有特殊原因,否则不要在宏中声明固定计数器。您不能多次调用宏。
\documentclass[]{article}
\usepackage{pgf}
\newcounter{bar}
\newcommand{\silentfoo}{\stepcounter{bar}}
\newcommand{\foo}{\silentfoo\thebar}
\begin{document}
{\foo,\foo{} inside a group}
\silentfoo\pgfmathparse{\thebar*0.3}
\pgfmathresult{} should be 3*0.3
\end{document}