我有以下源代码,可生成有关从阿拉伯数字到罗马数字的转换的随机问题。我希望在练习结束后将解决方案打印在新页面上。我尝试在\printsolutions
循环内部和外部插入命令。在循环外部,它会重复打印最后一个练习的解决方案。我猜这是因为这是循环结束后存储在内存中的最后一个数字。这是我的代码:
\documentclass[12pt,leqno]{article}
\usepackage{amsmath, amsfonts, amssymb,amsthm}
\usepackage{forloop}
\usepackage[first=1, last=100]{lcg}
\newcommand{\random}{\rand\arabic{rand}}
\usepackage[auto-label=true]{exsheets}
\title{\textbf{Converting Arabic to Roman Numerals}}
\begin{document}
\maketitle
\newcounter{s}
\forloop[1]{s}{1}{\value{s}< 10}
{
\begin{question}
Convert \random \ to a Roman Numeral
\end{question}
\begin{solution}
\MakeUppercase{\textbf{\roman{rand}}
}
\end{solution}
}
\printsolutions
\end{document}
答案1
这是一个解决方案。使用每个问题的将答案保存在宏中id
。
\documentclass[12pt,leqno]{article}
\usepackage{amsmath, amsfonts, amssymb,amsthm}
\usepackage{forloop}
\usepackage[first=1, last=100]{lcg}
\newcommand{\random}{\rand\arabic{rand}}
\usepackage[auto-label=true]{exsheets}
\title{\textbf{Converting Arabic to Roman Numerals}}
\begin{document}
\maketitle
\newcounter{s}
\forloop[1]{s}{1}{\value{s}< 10}
{
\begin{question}
Convert \random\ to a Roman Numeral
\expandafter\xdef\csname answer\CurrentQuestionID\endcsname{%
\roman{rand}}
\end{question}
\begin{solution}
\MakeUppercase{\textbf{\csname answer\CurrentQuestionID\endcsname}}
\end{solution}
}
\newpage
\printsolutions
\end{document}
答案2
这是一个扩展问题;使用您的代码,只是\roman{rand}
存储,而不是其当前扩展。
\documentclass[twocolumn]{article}
\usepackage{amsmath, amsfonts, amssymb,amsthm}
\usepackage[first=1, last=100]{lcg}
\newcommand{\random}{\rand\arabic{rand}}
\usepackage[auto-label=true]{exsheets}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\replicate}{mm}% I prefer this to \forloop
{
\prg_replicate:nn { #1 } { #2 }
}
\ExplSyntaxOff
\begin{document}
\title{Converting Arabic to Roman Numerals}
\author{1028}
\maketitle
\replicate{10}{%
\begin{question}
Convert \random \ to a Roman Numeral
\end{question}
\begingroup\edef\x{\endgroup
\noexpand\begin{solution}
\noexpand\textbf{\Roman{rand}}
\noexpand\end{solution}
}\x
}
\newpage
\printsolutions
\end{document}
我twocolumn
只是用它来减少输出的大小。