水平模式下的宏参数

水平模式下的宏参数

我读了很多关于“水平模式下的宏参数”的页面,但不知道它是什么意思。

但它阻止我编译以下内容。我读过它并对其进行了大量修改,但它看起来与我制作的许多其他文件类似,并且运行良好。

这是怎么回事?

\documentclass{article}

\usepackage{pgf}
\usepackage{pgffor}

\pgfmathsetseed{\number\pdfrandomseed}

\newcommand{\InitVariables}
{%
\pgfmathsetmacro{\A}{int(random(0,10))}
\pgfmathsetmacro{\B}{int(10-\A)}
\pgfmathsetmacro{\C}{int(\A+\B)}
\pgfmathsetmacro{\D}{int(random(0,9))}
\pgfmathsetmacro{\E}{int(9-\D)}
\pgfmathsetmacro{\F}{int(\D+\E)}
\pgfmathsetmacro{\r}{int(1,6)}
}

\newcommand{\Variables}
{%
\InitVariables

\A

\B

\C

\D

\E

\F
}

\begin{document}

\Variables

\end{document}

答案1

LaTeX 预定义\r使用一个字母的宏名称除非你确定它们没有被定义。使用宏名作为参数,\pgfmathsetmacro除非你知道它是免费的1

1\pgfmathsetmacro如果您在循环内使用\foreach,那么就不必担心,因为每个循环都是在一个组中执行的,并且值将在该组结束时恢复。

可以使用以下命令重现该错误

\documentclass{article}

\usepackage{pgf}

\begin{document}

\pgfmathsetmacro{\r}{int(1,6)}

\end{document}

每当参数\pgfmathsetmacro是已经存在的用其定义的宏\DeclareRobustCommand(或等效方法)时,也会发生同样的情况。

相关内容