我正在尝试创建带有随机数和的练习表xsim
。但是,每次生成随机数时,变量都会被覆盖以创建新的练习(期望),但也会被覆盖,以便所有解决方案仅包含来自最终练习的值(不希望)。
在生成解决方案时,如何“保存”它们的值?
我知道这可能有点类似于我之前的一个帖子,但我尝试遵循\edef...
那里的语法建议,但似乎不起作用。
\documentclass{article}
\usepackage{multicol}
\usepackage{pgf}
\usepackage{pgffor}
\pgfmathsetseed{\number\pdfrandomseed}
\usepackage{xsim}
\setlength{\parindent}{0pt}
\newcommand{\InitVariables}
{ \pgfmathrandominteger{\PartA}{0}{10}
\edef\PartA{\PartA}
\pgfmathrandominteger{\PartB}{0}{10}
\edef\PartB{\PartB}
\pgfmathsetmacro{\Sum}{int(\PartA + \PartB)}
\edef\Sum{\Sum}
}
\newcommand{\Exercise}{$\PartA+\PartB=?$}
\newcommand{\Solution}{$\PartA+\PartB=\Sum$}
\begin{document}
\begin{multicols}{2}
\InitVariables
\begin{exercise}
\Exercise
\end{exercise}
\begin{solution}
\Solution
\end{solution}
\InitVariables
\begin{exercise}
\Exercise
\end{exercise}
\begin{solution}
\Solution
\end{solution}
\printallsolutions
\end{multicols}
\end{document}
答案1
您只需添加一个计数器并使用该计数器创建唯一的宏名称。此计数器需要在之前重置\printallsolutions
。
\documentclass{article}
\usepackage{multicol}
\usepackage{pgf}
\usepackage{pgffor}
\pgfmathsetseed{\number\pdfrandomseed}
\usepackage{xsim}
\setlength{\parindent}{0pt}
\newcounter{myex}
\newcommand{\InitVariables}{%
\stepcounter{myex}%
\pgfmathrandominteger{\PartA}{0}{10}%
\expandafter\edef\csname PartA\number\value{myex}\endcsname{\PartA}%
\pgfmathrandominteger{\PartB}{0}{10}%
\expandafter\edef\csname PartB\number\value{myex}\endcsname{\PartB}%
\pgfmathsetmacro{\Sum}{int(\PartA + \PartB)}%
\expandafter\edef\csname Sum\number\value{myex}\endcsname{\Sum}%
}
\newcommand{\Exercise}{$\csname PartA\number\value{myex}\endcsname+\csname PartB\number\value{myex}\endcsname=?$}
\newcommand{\Solution}{\stepcounter{myex}%
$\csname PartA\number\value{myex}\endcsname+\csname PartB\number\value{myex}\endcsname=
\csname Sum\number\value{myex}\endcsname$}
\begin{document}
\begin{multicols}{2}
\InitVariables
\begin{exercise}
\Exercise
\end{exercise}
\begin{solution}
\Solution
\end{solution}
\InitVariables
\begin{exercise}
\Exercise
\end{exercise}
\begin{solution}
\Solution
\end{solution}
\setcounter{myex}{0}
\printallsolutions
\end{multicols}
\end{document}