exams2moodle | R Documentation |
Automatic generation of exams in Moodle XML format.
exams2moodle(file, n = 1L, nsamp = NULL, dir = ".", name = NULL, quiet = TRUE, edir = NULL, tdir = NULL, sdir = NULL, verbose = FALSE, rds = FALSE, resolution = 100, width = 4, height = 4, svg = FALSE, encoding = "UTF-8", iname = TRUE, stitle = NULL, testid = FALSE, zip = FALSE, num = NULL, mchoice = NULL, schoice = mchoice, string = NULL, cloze = NULL, points = NULL, rule = NULL, pluginfile = TRUE, forcedownload = FALSE, converter = "pandoc-mathjax", envir = NULL, table = NULL, css = NULL, ...) make_question_moodle(name = NULL, solution = TRUE, shuffle = FALSE, penalty = 0, answernumbering = "abc", usecase = FALSE, cloze_mchoice_display = NULL, cloze_schoice_display = NULL, truefalse = c("True", "False"), enumerate = TRUE, abstention = NULL, eval = list(partial = TRUE, negative = FALSE, rule = "false2"), essay = NULL, numwidth = NULL, stringwidth = NULL, css = NULL)
file |
character. A specification of a (list of) exercise files. |
n |
integer. The number of copies to be compiled from |
nsamp |
integer. The number(s) of exercise files sampled from each
list element of |
dir |
character. The default is the current working directory. |
name |
character. A name prefix for resulting exercises and ZIP file. |
quiet |
logical. Should output be suppressed when calling
|
edir |
character specifying the path of the directory (along with its
sub-directories) in which the files in |
tdir |
character specifying a temporary directory, by default
this is chosen via |
sdir |
character specifying a directory for storing supplements, by
default this is chosen via |
verbose |
logical. Should information on progress of exam generation be reported? |
rds |
logical indicating whether the return list should also be saved as an RDS data file. |
resolution, width, height |
numeric. Options for rendering PNG (or SVG)
graphics passed to |
svg |
logical. Should graphics be rendered in SVG or PNG (default)? |
encoding |
character, ignored. The encoding is always assumed to be UTF-8. |
envir |
passed to |
table |
character. An optional class assigned to |
css |
character. A character string (or vector) containing the path(s) to
CSS style file(s). Alternatively, a string (or vector) with a |
iname |
logical. Should the exam |
stitle |
character. For the questions specified in argument |
testid |
logical. Should an unique test id be added to the exam |
zip |
logical. Should the resulting XML file be zipped? |
num |
function or named list applied to numerical (i.e., type |
mchoice, schoice, string, cloze |
function or named list applied to multiple choice,
single choice, string, and cloze questions (i.e., type |
points |
integer. How many points should be assigned to each exercise? Note that this
argument overules any exercise points that are provided within an |
rule |
character specifying which rule to use for negative partial credits. see function
|
pluginfile |
logical. Should supplements be included in the Moodle XML file via Moodle's
Pluginfile mechanism? This is the default but may not work with older versions of Moodle (<2.5).
If set to |
forcedownload |
logical. Should all supplementary links be forced to download when clicked
(as opposed to opening in the browser)? Only supported if |
solution |
logical. Should the question solution, if available, be added in the question XML? |
shuffle |
For |
penalty |
numeric. Specifies the penalty tag for a question. |
answernumbering |
character. Specifies how choice questions should be numbered,
allowed values are: |
usecase |
logical. Should string questions be case sensitive or not. |
cloze_mchoice_display, cloze_schoice_display |
character. In |
truefalse |
character of length 2. For single choice answers in |
enumerate |
logical. In |
abstention |
character or logical. Should an explicit abstention option be added in single/multiple choice exercises? The character text specified is used for an extra button in Moodle which (when selected) always leads to zero points. |
eval |
named list, specifies the settings for the evaluation policy, see function
|
essay |
logical. Should |
numwidth, stringwidth |
logical, numeric, or character. Should the width of
all |
converter, ... |
arguments passed on to |
exams2moodle
produces an XML file that may be uploaded into Moodle. It proceeds by (1)
calling xweave
on each exercise, (2) reading the resulting LaTeX code, (3)
transforming the LaTeX code to HTML, and (4) embedding the HTML code in a XML file using the
Moodle standards for exams/quizzes.
For steps (1) and (2) the standard drivers in xexams
are used. In step (3), a suitable
transformation function is set up on the fly using make_exercise_transform_html
, see also
the details section in exams2html
.
For step (4), the function will cycle through all questions and exams to generate the final XML
file in Moodle standard. The structure of the resulting XML file is such that one category
will be set for the exam/quiz using the exam/quiz name
(or this category may be
suppressed (i.e., not included in the XML) by setting iname = FALSE
), followed by one
category/section for each question, while the replicates of each question will be included in the
corresponding category/section. Note that category/section names may also be provided in the
\exsection{}
tag in the .Rnw
files, or within argument stitle
in
exams2moodle
. This may be useful when questions should automatically be added to already
existing Moodle question banks. (See also the argument descriptions above.)
The XML code for each question is then generated using function make_question_moodle
.
Note that for each question type, either the arguments of make_question_moodle
may be set
within num
, mchoice
, schoice
, string
and cloze
in
exams2moodle
, by providing a named list of specifications that should be used, or for each
questiontype, a function that produces the question XML code may be provided to num
,
mchoice
, schoice
, string
and cloze
. E.g., to suppress the solution
for numeric questions one may set num = list(solution = FALSE)
.
When specifying cloze exercises, two approaches are possible: Either a answerlist
with
all questions is provided within the question
or, alternatively, the answer fields can
be placed anywhere in the question
text. For the latter, the strings ##ANSWER1##
,
##ANSWER2##
, etc., have to be used, see the exercises "boxhist2.Rnw"
and
"fourfold2.Rnw"
for illustration and Appendix C in Zeileis et al. (2014) for further
details.
To fix the width of numeric answer fields withing cloze exercises (in order not to convey any
clues about the length of the correct solution), the \exextra[numwidth]
metainformation
command can be used in the .Rnw
exercise. For example, it can be set to
\exextra[numwidth,logical]{TRUE}
, \exextra[numwidth,numeric]{5}
, or
\exextra[numwidth,character]{100.0}
.
In order to generate free text questions in moodle one may
specify extra parameters
via \exextra
. Currently the following options are supported:
essay
: logical. Enables the essay function.
format
: character. Type of text field (one of: plain
, editor
, editorfilepicker monospaced noinline)
required
: logical. Whether an answer is required.
attachments
: numeric. How many attachments can be uploaded.
attachmentsrequired
: numeric. The number of required attachments.
exams2moodle
returns a list of exams as generated by xexams
.
make_question_moodle
returns a function that generates the XML code
for the question in Moodle's XML standard.
Dougiamas M, et al. (2019). Moodle, Version 3.6. https://moodle.org/.
MoodleDocs (2019). Moodle XML Format. https://docs.moodle.org/en/Moodle_XML
Zeileis A, Umlauf N, Leisch F (2014). Flexible Generation of E-Learning Exams in R: Moodle Quizzes, OLAT Assessments, and Beyond. Journal of Statistical Software, 58(1), 1–36. doi: 10.18637/jss.v058.i01.
Zeileis A (2019). Mathematical Notation in Online R/exams. https://www.R-exams.org/tutorials/math/
xexams
,
ttm
,
tth
,
tex2image
,
make_exercise_transform_html
,
## 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 moodle quiz in temporary directory ## using a few customization options exams2moodle(myexam, n = 3, dir = mydir, num = list(solution = FALSE), mchoice = list(shuffle = TRUE) ) dir(mydir)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.