CRAN Release of R/exams 2.3-3 and 2.3-4
R/exams on CRAN screenshot (CC-BY).

CRAN Release of R/exams 2.3-3 and 2.3-4

New minor releases of the R/exams package to CRAN, containing a new dedicated function for online quizzes/exams in the Canvas learning management system. Moreover, the update provides a range of smaller improvements and bug fixes.

Version 2.3-3 and subsequently 2.3-4 of the one-for-all exams generator R/exams have been published on the Comprehensive R Archive Network at In the next days this will propagate to other CRAN mirrors along with Windows and OS X binary packages. Version 2.3-4 was necessary in addition to 2.3-3 to avoid CRAN check problems on platforms where pandoc is not available (currently, OS X and Solaris). The development version of the package is now version 2.3-5 on R-Forge at

Canvas support

A new interface exams2canvas() for the open-source Canvas learning management system has been added. This is the first dedicated Canvas interface after previously some indirect support was available through either exams2blackboard() or exams2qti12(). However, both of these had certain limitations for Canvas that the new function aims to overcome. The function has only received limited testing so far and is likely to improve in future version. Please report any problems to the package maintainer.

Essentially, exams2canvas() is a wrapper function to exams2qti12() along with a few Canvas-specific modifications of the QTI XML specification. Supported exercise types are: single-choice, multiple-choice, numeric, and string (but not yet cloze). Embedding mathematical notation, graphics, and data supplements also works.

Mathematical notation in Moodle

The default converter in exams2moodle() has been changed to "pandoc-mathjax". Thus, instead of relying on the browser to render mathematical notation from MathML, the MathJax plugin is now assumed to be enabled on the Moodle server (which is the default when setting up a new Moodle server). To employ MathML as in previous versions one can use converter = NULL. This either selects "pandoc-mathml" (or equivalently "pandoc") or "ttm" depending on the markup used in the exercises.

Written exams (NOPS)

  • Assure in nops_scan() that scanned image file names contain no spaces.
  • Added \usepackage[...]{babel} support to language specification of exams2nops(). In addition to a new Babel: ... field, the language .dcf can also provide a Header: ... field, e.g., for changing the font encoding or adding further options.
  • In nops_eval() duplicated sheets (original + replacement) were sometimes omitted even if the student ID was just 000000 (i.e., not read correctly by nops_scan()). A check has been added that avoids this.

Improvements and bug fixes

  • exams_skeleton() has been updated. The new default is markup = "markdown" as this appears to be the more common choice for newcomers to R/exams. Furthermore, the list of exercises in the demo-*.R scripts has been updated to use newer exercises as well (along with links to the web page:
  • Fixed bugs in exams2qti21() (and hence exams2openolat()) for certain combinations of maxchars specifications in string exercises.
  • For convenience, when exams2html(..., converter = "pandoc-mathjax"), mathjax = TRUE is added automatically (unless explicitly switched off).
  • The print() method for exams_metainfo objects received a new block argument so that print(exams_metainfo(x), which = 1, block = 5) prints the metainformation (type/solution) of the first exam in the object x (output from any exams2xyz() function) in blocks of 5 exercises. Implemented for the blog about R/exams at Texas A&M International University.
  • For exams2openolat() the handling of the internal pandoc fixups was extended to replace align="right" in tables with style="text-align: right;" (and analogously for “left” and “center”).
  • Changed the default of fix_choice in exams2arsnova(). Current versions of the official ARSnova server have the LaTeX rendering in the choice options switched off. Hence, by setting fix_choice = TRUE by default the LaTeX math markup is removed.
  • Add \setkeys{Gin}{keepaspectratio} in the default exams2pdf() template for pandoc (plain8.tex) and in exams2nops(). This is necessitated by a change in pandoc that now always sets height=\textheight when width= is specified, see the pandoc FAQ.
  • Added an envir argument in exams2moodle() that is passed on to xweave().