Changes in version 0.2-2 - The source code of the exams2forms package is now hosted on Codeberg at https://codeberg.org/zeileis/exams2forms where bugs can be reported in the issues and pull requests can be made etc. Development versions of the package can be conveniently installed from R-universe via: install.packages("exams2forms", repos = "https://zeileis.R-universe.dev") Changes in version 0.2-1 (2026-05-05) - Answer entered in string forms were not processed correctly if the correct solution could be mapped to a number. Fixed now in webex.js. (Reported by Chad Worley in https://stackoverflow.com/questions/79934347) - Small fix in webex.js for the setting with show_tolerance = TRUE and n > 1. - The converter argument in exams2forms() was not used and has hence been dropped. Changes in version 0.2-0 (2025-05-02) - Based on the package vignette, the R/exams web page has a tutorial for exams2forms: https://www.R-exams.org/tutorials/exams2forms/. - Some small improvements in webex.css and webex.js so that exams2forms output also renders correctly in jekyll projects, in particular with the feeling responsive theme used on https://www.R-exams.org/. - All exercise template pages on the R/exams web page now feature an interactive preview generated with exams2forms using three random variations of each exercise. See https://www.R-exams.org/templates/boxplots/ or https://www.R-exams.org/templates/lm2/ for two examples. - The function exams2forms() as well as all underlying forms_*() functions gained an argument obfuscate = TRUE which provides some basic obfuscation of the correct answers for all forms in the underlying HTML code. Thus, all correct answers are still stored in the HTML but, by default, they are not easily readable anymore. - The function exams2forms() gained additional arguments auto, show_filename, and show_tolerance, which are useful for inspecting exercises during their development. See exams2webquiz("lm2.Rmd", auto = TRUE) to see the results: all forms are pre-filled with check enabled and the display includes solution, tolerances, and the file name. - In forms_num() the correct answer is now assured to be formatted without scientific notation. - In the answer lists of single- and multiple-choice exercises single quotes are no longer escaped by forms_schoice() and forms_mchoice() so that expressions like $f'(x)$ render correctly. - The package now ships with some example exercises that illustrate a feature of exams2forms that is not (or not easily) available in other exams2xyz interfaces: regular expressions for the correct answers of string exercises. To generate a demo quiz with these you can use: exams2webquiz(c("geography2.Rmd", "email.Rmd"), regex = TRUE, n = 3, edir = system.file(package = "exams2forms")) - The exercise geography2.Rmd simply lists several solutions that are accepted using "or" regular expressions: ^(answer1|answer2|answer3)$ - The exercise email.Rmd has a more complex regular expression for checking the validity of e-mail addresses. - Furthermore, geography.Rmd is a multiple-choice version of the geography2.Rmd exercise. Changes in version 0.1-0 (2024-11-06) - New R/exams (https://www.R-exams.org/) interface for embedding exercises as (interactive) forms in R/Markdown or Quarto documents. - For an introduction see the package vignette: vignette("exams2forms", package = "exams2forms") - The idea and original code for inserting interactions into R/Markdown documents along with CSS and Javascript is adapted from the webexercises package, authored by Dale Barr and Lisa DeBruine. - The main function is exams2forms() which is typically used within R/Markdown or Quarto documents. The package provides two demo documents. - questions.Rmd: All questions set up indvidually. - quiz.Rmd: An entire quiz set up in one go. - Additionally, the function exams2webquiz() can be used to quickly set up and render a quiz document interactively based on a set of R/exams exercises. For example: exams2webquiz(c("swisscapital.Rmd", "capitals.Rmd", "fruit.Rmd", "function.Rmd", "lm2.Rmd"))