我有一个关于设置 LaTeX 文档的问题。我不确定在这里发布这样的问题是否合适,但我想这里很多人都有使用该系统的经验,也许可以提供帮助。
我被要求写一份包含多项选择答案的问题列表。使用它的人对 TeX 了解不多,所以我需要尽量让代码变得健壮。我编写了一个命令来自动生成多项选择选项:命令
\mc{2}{3}{5}{7}{11}
大致输出
(A) 2 (B) 3 (C) 5 (D) 7 (E) 11
我想做的是添加第六个参数,该参数将获取问题的答案,然后自动将其附加到文档末尾的列表中,本质上是创建答案键。问题是我不清楚如何将每个\mc
命令的第六个参数调用到\enumerate
文档末尾的环境中。
我将非常感激任何人对这个项目提出的任何提示或建议。
答案1
您可以采用以下解决方案如何保存字符串的运行列表,然后逐个处理它们以此目的:
代码:
\documentclass{article}
\usepackage{pgffor}
\usepackage{enumitem}
\newcommand\AnswersList{}
\newcommand\AddAnswer[1]{\edef\AnswersList{\AnswersList#1\endgraf}}
\newcommand*{\mc}[6]{%
% code to display the multiple choice for #1...#5
\AddAnswer{#6,}%
}%
\begin{document}
\mc{2}{3}{5}{7}{11}{3}
\mc{2}{3}{5}{7}{11}{5}
The list of answers are:
\begin{enumerate}[label=(\arabic*)]
\foreach \answer in \AnswersList {%
\item \answer
}%
\end{enumerate}
\end{document}
答案2
以下是使用以下功能提供的可能解决方案exam
文档类和answers
包裹:
\documentclass{exam}
\usepackage{answers}
\Newassociation{sol}{Solution}{ans}
\newtheorem{ex}{}{}
\renewcommand\questionlabel{}
\renewcommand\questionshook{\leftmargin0pt}
\begin{document}
\Opensolutionfile{ans}[ans1]
\section{Problems}
\begin{ex}
\begin{questions}
\question
One of these things is not like the others; one of these things is not
the same. Which one is different?
\begin{oneparchoices}
\choice John
\choice Paul
\choice George
\choice Ringo
\choice Socrates
\end{oneparchoices}
\begin{sol}
Socrates
\end{sol}
\end{questions}
\end{ex}
\begin{ex}
\begin{questions}
\stepcounter{question}
\question
One of these numbers is perfect.
\begin{oneparchoices}
\choice $2$
\choice $28$
\choice $5$
\choice $3$
\choice $7$
\end{oneparchoices}
\end{questions}
\begin{sol}
$7$
\end{sol}
\end{ex}
\Closesolutionfile{ans}
\section{Solutions}
\input{ans1}
\end{document}