不同页面上的打印解决方案

不同页面上的打印解决方案

我有以下源代码,可生成有关从阿拉伯数字到罗马数字的转换的随机问题。我希望在练习结束后将解决方案打印在新页面上。我尝试在\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只是用它来减少输出的大小。

在此处输入图片描述

相关内容