使用计数器值作为 pgfmathparse 的输入

使用计数器值作为 pgfmathparse 的输入

我有一个命令,可以根据计数器值打印数字。我试图用这个数字进行进一步的数学计算。

\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}

在此处输入图片描述

相关内容