我读了很多关于“水平模式下的宏参数”的页面,但不知道它是什么意思。
但它阻止我编译以下内容。我读过它并对其进行了大量修改,但它看起来与我制作的许多其他文件类似,并且运行良好。
这是怎么回事?
\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
(或等效方法)时,也会发生同样的情况。