Automatic generation of exams in QTI 2.1 (or 1.2) with some tweaks optimized for OpenOlat.
exams2openolat(file, n = 1L, dir = ".", name = "olattest",
qti = "2.1", config = TRUE, converter = "pandoc-mathjax", table = TRUE,
maxattempts = 1, cutvalue = NULL, ...) openolat_config(cancel = FALSE, suspend = FALSE, scoreprogress = FALSE,
questionprogress = FALSE, maxscoreitem = TRUE, menu = TRUE,
titles = TRUE, notes = FALSE, hidelms = TRUE, hidefeedbacks = FALSE,
blockaftersuccess = FALSE, attempts = 1, anonym = FALSE,
manualcorrect = FALSE)
exams2openolat
returns a list of exams as generated by xexams
.
character. A specification of a (list of) exercise files.
integer. The number of copies to be compiled from file
.
character. The default is the current working directory.
character. A name prefix for resulting exercises and ZIP file.
character indicating whether QTI "1.2"
or "2.1"
(default) should be generated.
logical or named list with arguments to be passed to
function openolat_config
, for adding an OpenOlat-specifc configuration
file QTI21PackageConfig.xml
to the exam. If set to config = FALSE
,
no configuration file is added (which was the default behavior up to R/exams 2.3.6).
Setting config = TRUE
is equivalent to config = list()
or
config = openolat_config()
(which is the current default, starting from R/exams 2.4.0).
Custom configurations can be specified using the syntax config = list(...)
,
see the details on the possible arguments below.
character passed on to make_exercise_transform_html
,
indicating the type of converter from LaTeX/Markdown to HTML. Defaults
to HTML with MathJax (and OpenOlat-specific fixups).
logical or character. Should a dedicated table class be used in the HTML for OpenOlat? For details see below.
integer. The maximum attempts for one question within an exam.
Set to Inf
or 0
for unlimited attempts. For a finite number of attempts this
must be smaller than 100000
. See also attempts
below for allowing more
than one attempt for the exam as a whole.
numeric. The number of points at which the exam is passed. If set to
NULL
(default) or equivalently NA
, no cutvalue is set and the result
of the exam is just the number of points.
arguments passed on to exams2qti21
(or
exams2qti12
, respectively). See the corresponding
manual pages for further important arguments such as
solutionswitch
, casesensitive
, cloze_schoice_display
navigation
, shufflesections
, eval
, selection
,
among many others.
logical. Are participants allowed to cancel an exam after starting it?
(Default: FALSE
.)
logical. Are participants allowed to suspend an exam after starting it
(in order to continue it later)? (Default: FALSE
.)
logical. Should the progress of the score/points achieved so far
be displayed during the exam? (Default: FALSE
.)
logical. Should the number of questions solved so far be
displayed during the exam? (Default: FALSE
.)
logical. Should the maximum score of a question/item be displayed?
(Default: TRUE
.)
logical. Should the menu be displayed during the exam? (Default: TRUE
.)
logical. Should question titles be displayed during the exam?
(Default: TRUE
.)
logical. Should participants be enabled to take notes in OpenOlat during
the exam? (Default: FALSE
.)
logical. Should access to the OpenOlat learning management system be
hidden during the exam? (Default: TRUE
.)
logical. Should feedbacks be hidden? (Default: FALSE
.)
logical. Should the exam be blocked after successful completion?
(Default: FALSE
.)
integer. How many attempts are allowed for the exam as a whole?
Note that this should not be confused with the maxattempts
for a question
within the exam (see above).
logical. Should anonymous users be allowed to take the exam? (Default: FALSE
.)
logical. Should the points and pass/fail status from the exam
be evaluated manually? (Default: FALSE
.)
exams2openolat
is a convenience interface to exams2qti12
and exams2qti21
for generating either QTI 1.2 or 2.1
(default) output with some small tweaks for OpenOlat. Specifically, the MathJax
and table output from pandoc is post-processed as expected by OpenOlat. See the
corresponding manual page for many more arguments that are supported by
exams2openolat
.
Dedicated table
classes currently include: Full-width tables with borders
("b_grid"
, "b_border"
) or without ("b_full"
, "b_borderless"
).
Or regular tables without background color ("b_middle"
) or with white grid
and color background ("b_gray"
, "b_red"
, "b_green"
, "b_blue"
,
"b_yellow"
). Setting table = TRUE
corresponds to table = "b_gray"
.
In addition to controlling the behavior of the exam and its questions via the standard
QTI 2.1 options (see exams2qti21
), it is possible to specify
certain OpenOlat-specific configurations via an additional XML file to be added to the
ZIP output. This is why these options are not part of exams2qti21
but are provided in the
separate wrapper function openolat_config
. As the resulting XML configuration file
is not part of the official OpenOlat interface, it may be subject to more changes in the future.
exams2qti12
,
exams2qti21
## load package and enforce par(ask = FALSE)
library("exams")
options(device.ask.default = FALSE)
## define an exams (= list of exercises)
myexam <- list(
"boxplots.Rmd",
c("tstat.Rmd", "ttest.Rmd", "confint.Rmd"),
c("regression.Rmd", "anova.Rmd"),
c("scatterplot.Rmd", "boxhist.Rmd"),
"relfreq.Rmd"
)
## output directory
dir.create(mydir <- tempfile())
## generate .zip with OpenOlat test in temporary directory
exams2openolat(myexam, n = 3, dir = mydir)
dir(mydir)
Run the code above in your browser using DataLab