exams2nops(r-exams)的介绍页面

Introduction page for exams2nops (r-exams)

我想使用您出色的 r-exams 软件包来创建具有自动评分功能的纸笔考试。我过去曾使用 exams2nops 来做一系列的选择题和选择题。

但是,我现在需要参加一个带有介绍页面的考试,在该页面上我给出 table 数据和统计软件的一些输出(比如正态性检验、Levene 等...我可以生成它与 Rmd) 并讲述有关数据和收集数据所涉及实验的小历史。

所以我的考试结构是:

第 1 页。学生姓名、编号和答案框 sheet

第 2 页。包含数据集的介绍性页面,并选择了 figures/outputs 用于测试假设(没有问题)

第3页.问题1.1

第4页,问题1.2。 ... 第 k 页:问题 n.

这可以吗。我想新奇之处在于“介绍”页面……之后就是一个 exams2nops 文件……

提前感谢任何想法或想法...

若昂

如何实现这一点取决于介绍页面是否对所有参与者都相同,或者它是否应该包含每个考试的不同data/graphics/information。

每个人的信息相同

您可以使用 exams2pdf(..., intro = ...).

intro: character. Either a single string with the path to a .tex file or a vector with with LaTeX code for optional introduction text on the first page of the exam.

请注意,如果此 LaTeX 代码包含图形(或其他文件),则需要将其包含在完整路径中,因为 LaTeX 代码是在不同的(临时)目录中编译的。

随机信息

如果每次考试都随机生成不同的data/graphics/information,那么实现这一点的最佳方法是将其放入第一题。您可以通过在第一个练习中构建“问题”环境的内容来强调材料的不同作用,例如:

  • 以粗体的“一般信息”开头。
  • 然后data/graphics/information.
  • 然后用粗体包括“第一个问题”and/or 一个分页符,例如,通过 \newpage
  • 然后才是真正的第一题。

如果您这样做,那么与您的理想结构的主要偏差是第一个分项点“1”。是在一般信息的开头,而不是实际的第一个问题。但我认为不值得为 exams2nops().

设置一种全新类型的“随机介绍文本”

如果您想向参与者强调这一点,以免有人忽略第一个问题,您可以将其与一般性的 intro 结合起来,例如:

intro <- paste(c(
  "\textbf{\large Important information}",
  "",
  "Please note that the first question a data set is introduced that is also used in subsequent questions. The actual first question is included below the general introducation.",
  "\newpage"),
  collapse = "\n")
exams2nops(..., intro = intro)

我们的解决方案 - 比方说 - 5 个不同的版本:

使用随机生成的数据准备您自己的介绍(即 Intro.Rmd)。我们的 Intro.Rmd 还将生成的数据帧保存在名为 Databases 的文件夹中。然后由对应循环 (i) 的每个练习调用。

将 rmd 文件渲染为 pdf 时,您必须在 rmd 的 yaml 中调用正确的 LaTeX 包 header。我们的案例:

  - \usepackage{booktabs}
  - \usepackage{longtable}
  - \usepackage{array}
  - \usepackage{multirow}
  - \usepackage{wrapfig}
  - \usepackage{float}
  - \usepackage{colortbl}
  - \usepackage{pdflscape}
  - \usepackage{tabu}
  - \usepackage{threeparttable}
  - \usepackage{threeparttablex}
  - \usepackage[normalem]{ulem}
  - \usepackage{makecell}
  - \usepackage{xcolor}

创建了几个文件夹:

  • 一个用于生成的介绍(即 Intros);
  • 一个用于 exams2nops 生成的 PDF(即 nops_pdf);
  • 一个用于吐出的文件(即 subsets);
  • 一个用于最终合并版本(即 exams)。

循环:

for (i in 1:5) {


rmarkdown::render(input = "Intro.Rmd",output_file = paste0("Intros/Intro_v",i,".pdf"))
  
exams2nops(questions, n = 1, nsamp = 1, intro = "Leia as questões com atenção e MARQUE TODAS AS SUAS RESPOSTAS NA FOLHA DE RESPOSTAS! Este exame tem a duração de 60 minutos. Boa sorte!", language = "pt-PT", institution = "Análise Estatística II", title = "Época Normal: Métodos Tipo I - ",dir = "nops_pdf", name = paste0("Ex_AEII_MTI_v",i,"_"), date = "2020-12-01",encoding = "UTF-8",  blank = 0,  nchoice = 5, duplex = T, reglength = 7L, points = 4, replacement = T,schoice = list(eval = ee))

pdf_subset(input = paste0("nops_pdf/Ex_AEII_MTI_v",i,"_1.pdf"),pages = c(1,3),
           output = paste0("subsets/subset_",i,"_part1.pdf"))

pdf_subset(input = paste0("nops_pdf/Ex_AEII_MTI_v",i,"_1.pdf"),pages = c(5:pdf_length(paste0("nops_pdf/Ex_AEII_MTI_v",i,"_1.pdf"))),
           output = paste0("subsets/subset_",i,"_part2.pdf"))

pdf_combine(input = c(paste0("subsets/subset_",i,"_part1.pdf"),
                      paste0("Intros/Intro_v",i,".pdf"),
                      paste0("subsets/subset_",i,"_part2.pdf")), 
            output = paste0("exams/exams_v",i,".pdf"))

}

Achim,你说 Intro.Rmd 生成的 pdf 可以使用 exams2nops 合并,你能举例说明如何吗?