通过 probsoln 包访问随机选择的问题

通过 probsoln 包访问随机选择的问题

我有两个数据集,每个数据集都包含与特定主题相关的问题。这些问题存储在外部文件中(同样,每个主题一个文件),并以随机顺序加载到数据集中。我需要生成具有以下基本格式的文档:

测验 1

  • 问题 1:显示 topic1 数据集中列出的第一个问题
  • 问题 2:显示 topic2 数据集中列出的第一个问题

测验 2

  • 问题 1:显示 topic1 数据集中列出的第二个问题
  • 问题 2:显示 topic2 数据集中列出的第二个问题

继续...

我仔细阅读了文档,但怀疑自己并没有完全理解。唯一的示例似乎侧重于一次显示一个数据集中的所有问题。唯一的其他选择似乎是提前知道每个问题的标签是什么,但这没有帮助,因为问题是以随机顺序加载的。

如果您能提供任何帮助,我们将不胜感激。如果这个问题已经得到解决,轻轻地推到正确的地方会很棒。

答案1

由于您没有提供任何代码片段,因此并不完全清楚您希望它如何工作,但下面是我将如何执行此操作。

主题目录:

我将为每个主题创建目录。例如AlgebraQuestions/,和 TrigQuestions/包含所有文件,这些文件是这些主题的所有可能问题。这将定义如下:

\newcommand*{\ListOfTopics}{%
    AlgebraQuestions,%  MUST have trailing % here
    TrigQuestions%
}%

此主题列表决定了测验中将有多少个问题,因为您似乎希望测验中每个主题都有一个问题。如果您将所有主题目录组织为子目录,则\ListOfTopics可以根据子目录的名称自动生成。

每个主题的问题列表:

对于每个主题目录,我将定义一个pgfmathdeclarerandomlist。因此,例如,如果主题有三个名为、和的AlgebraQuestions/文件,我将定义:filefile2file3

\pgfmathdeclarerandomlist{AlgebraQuestions}{{file1}{file2}{file3}}

在下面的 MWE 中,我对这个列表进行了硬编码,但它当然可以根据目录中现有的文件动态自动生成。

测验次数:

唯一需要手动设置(或在命令行上指定)的变量是您想要生成的测验数量:

\newcommand*{\NumberOfQuizes}{4}%

输出:

因此假设目录 AlgebraQuestions/包含名为的文件AlgebraQ1,...,AlgebraQ6,并且 TrigQuestions/目录包含名为的文件,TrigQ1,...,TrigQ9我们得到:

在此处输入图片描述

但是,您不需要像下面这样打印文件名\item,而是需要导入在 中定义的文件名\RandomQuestion

笔记:

  • 由于问题是随机选择的,因此有些测验可能会有相同的问题(例如下面的测验 3 和 4)。但是,随着问题数量的增加,这种可能性会降低。如果不希望出现这种情况,可以通过额外的编码来防止这种情况,以确保每个列表先前选择的随机数不会被重复使用。

  • 如果每个主题的问题都在一个文件中,则可以调整解决方案在 LaTeX 文档中自动引用,挑选出特定的命名环境。其用法取决于问题的具体定义方式,并要求为每个问题指定一个名称以用于解决它。

    然而,我会高度建议将每个问题放在单独的文件中(也许使用包裹standalone)如下

    1. 大大简化了这一过程的管理(特别是当问题数量增加时),
    2. 允许人们轻松添加新问题,而不必担心为其提供唯一的名称,因为文件系统将确保每个问题的名称都是唯一的,
    3. 允许每个文件自行编译和校对,并且
    4. 如果需要,可以轻松创建一个包含所有问题的文档。请参阅参考资料部分以了解这方面的一些选项。

参考:

代码:

\documentclass{article}
%\usepackage[paperheight=3.0cm, paperwidth=12.0cm, margin=0.1cm]{geometry}% Simplify image capture

\usepackage{enumitem}
\usepackage{tikz}% Easy way to get all the pgf functions

% The list of topics determines how many questions will be in the quiz
% since it appears that you want one question per topic in a quiz.
% This could be auto generated.
\newcommand*{\ListOfTopics}{%
    AlgebraQuestions,%  MUST have trailing % here
    TrigQuestions%
}%


% These list of files names from each question can be auto generated
% but for example purposes I am just using the file names as the
% content in the file. The number of questions in each topic do not
% need to be the same.  I would create directories with the topic 
% names and auto generate this based on the directory and file names.

\pgfmathdeclarerandomlist{AlgebraQuestions}{%
    {AlgebraQ1}%
    {AlgebraQ1}%
    {AlgebraQ3}%
    {AlgebraQ4}%
    {AlgebraQ5}%
    {AlgebraQ6}%    
}%
\pgfmathdeclarerandomlist{TrigQuestions}{%
    {TrigQ1}%
    {TrigQ2}%
    {TrigQ3}%
    {TrigQ4}%
    {TrigQ5}%
    {TrigQ6}%
    {TrigQ7}%
    {TrigQ8}%
    {TrigQ9}%
}%




\newcommand*{\NumberOfQuizes}{4}%

\begin{document}
\foreach \QuizNumber in {1,...,\NumberOfQuizes} {%
    \clearpage% Start each quiz on a new page
   \noindent\textbf{\Large Quiz Number \QuizNumber}%
    \begin{enumerate}
    \foreach \Topic in \ListOfTopics {%
        % Determine random question to use form list
        \pgfmathrandomitem{\RandomQuestion}{\Topic} 
        % The following should import the file named in \RandomQuestion
        \item Random Question from Topic='\Topic': 
            \textbf{\Large\RandomQuestion}%
    }%
    \end{enumerate}
}%

\end{document}

相关内容