我该如何设置以便当随机数生成练习时,它们也自动生成答案表的答案?
我是否需要重新设计整个内容或者可以做一些较小的调整?
\documentclass{article}
\usepackage{ifthen}
\usepackage{pgf}
\usepackage{pgffor}
\pgfmathsetseed{\number\pdfrandomseed}
\newcommand{\InitVariables}
{
\pgfmathsetmacro{\PartA}{int(random(0,9))}
\pgfmathsetmacro{\PartB}{int(random(0,9))}
\pgfmathsetmacro{\Sum}{int(\PartA+\PartB)}
\pgfmathtruncatemacro{\Structure}{random(1,3)}
}
\newcommand{\Blank}{\rule[-3pt]{15pt}{.5pt}}
\newcommand{\onefact}
{
\InitVariables
\ifcase\Structure\relax %
\or
\def\Question{$\PartA+\PartB=\Blank$}
\def\Answer{$\PartA+\PartB=\Sum$}
\or
\def\Question{$\PartA+\Blank=\Sum$}
\def\Answer{$\PartA+\PartB=\Sum$}
\or
\def\Question{$\Blank+\PartB=\Sum$}
\def\Answer{$\PartA+\PartB=\Sum$}
\fi
}
\begin{document}
\section{Exercises}
\begin{tabular}{lll}
\onefact \Question & \onefact \Question & \onefact \Question \\
\end{tabular}
\section{Answers to the Above Exercises}
\begin{tabular}{lll}
\onefact \Answer & \onefact \Answer & \onefact \Answer\\
\end{tabular}
\end{document}
该代码产生以下内容。当然,我不希望生成随机数第二次对于答案,我只希望练习中完成的方程式作为答案。
理想情况下,我也不必输入单独的答案表。
答案1
如果你的答案部分将始终跟随你的问题部分,那么以下内容就足够了。解决方案背后的原理是用 标记每个\NewQuestion{<tag>}
。<tag>
这会将与 相关的答案存储<tag>
在宏中,您可以稍后调用它。
\documentclass{article}
\usepackage{pgf}
\pgfmathsetseed{\number\pdfrandomseed}
\newcommand{\InitVariables}
{%
\pgfmathsetmacro{\PartA}{int(random(0,9))}%
\pgfmathsetmacro{\PartB}{int(random(0,9))}%
\pgfmathsetmacro{\Sum}{int(\PartA+\PartB)}%
\pgfmathtruncatemacro{\Structure}{random(0,2)}%
}
\DeclareRobustCommand{\Blank}{\rule[-3pt]{15pt}{.5pt}}
\newcommand{\Answer}[1]{$\csname Answer_#1\endcsname$}
\newcommand{\NewQuestion}[1]
{%
\InitVariables
\expandafter\xdef\csname Answer_#1\endcsname{\PartA + \PartB = \Sum}%
\ifcase\Structure\relax %
\let\PartA\Blank
\or
\let\PartB\Blank
\or
\let\Sum\Blank
\fi
$\PartA + \PartB = \Sum$
}
\begin{document}
\section{Exercises}
\begin{tabular}{ @{}lll }
\NewQuestion{first} & \NewQuestion{2} & \NewQuestion{last}
\end{tabular}
\section{Answers to the Above Exercises}
\begin{tabular}{ @{}lll }
\Answer{first} & \Answer{2} & \Answer{last}
\end{tabular}
\end{document}
我删除了一些冗余代码,因为有一些重复是不需要的。还有一些虚假空间已删除。
如果你想参考答案 前这问题,可以使用\label
-\ref
系统来检索该内容。