我已经使用该类examdesign
来创建考试,它几乎可以完成我想要的一切。但我发现,当我将旧考试重复用作练习考试和测验问题时,我一直在重复做自己的事情。我想创建一个测试问题库,似乎可以使用\InsertChunk
该类提供的功能来完成examdesign
,但似乎有一个小错误。
如果我将以下内容放入主 LaTeX 文件中,我几乎可以实现我的目标:
\documentclass{examdesign}
\IncludeFromFile{foo.tex}
\begin{examtop}
Exam Instructions
\end{examtop}
\begin{document}
\begin{multiplechoice}
\begin{question}
Question text goes here.
\choice[!]{0.31}
\end{question}
\InsertChunk{chunk name}
\end{multiplechoice}
\end{document}
文件中的内容如下foo.tex
:
\begin{chunk}{chunk name}
\begin{question}
Question 2 text goes here.
\choice[!]{0.31}
\end{question}
\end{chunk}
然而,如果我删除第一个问题,这个设置就会被破坏。
我想知道是否有人对该examdesign
课程有足够的了解,可以提出修改或解决方法,以便我可以将所有问题保留在foo.tex
。
答案1
examdesign
使用一种对我来说很奇怪的方法来查找“问题之前的内容”。它实际上收集了第一个问题之前的所有内容,\begin
并将其标记为说明。
% \begin{macro}{\get@instructions}
% This macro collects everything between it and the next |\begin| token. It then
% calls the |\find@instructions@end| macro to check whether the |\begin| token
% belongs to the \textsf{question} environment or some other environment.
% \begin{macrocode}
\long\def\get@instructions#1\begin{\@toklist=\expandafter{\the\@toklist#1}%
\find@instructions@end}
% \end{macrocode}
% \end{macro}
我认为可以重写它来定义指令环境,但这可能会使问题变得不必要地冗长。
非常特殊,只有当它找到或\find@instructions@end
时才会停止吞噬。只是延迟了问题的解决,因为它使用类似的方法来查找块的指令。\begin{question}
\begin{block}
\begin{block}
换句话说,我看不出有什么简单的方法可以在不改变包所要求的语法的情况下做到这一点。当然,对我来说,这看起来像是包作者的问题。