Changes in Version 2.1-0

  o Exercises can now either be in .Rnw format (R/LaTeX, as in previous versions)
    or in .Rmd format (R/Markdown). A new function xweave() is provided for
    weaving either format by either calling utils::Sweave() for .Rnw and
    knitr::knit() for .Rmd. If .Rmd exercises are used, the weaved exercises
    require conversion by pandoc (see below).

  o The vignettes have not yet been updated to incorporate the R/Markdown
    information or the new interfaces described below. For examples and some
    introductory comments, exams_skeleton() can generate demo scripts.

  o Added new make_exercise_transform_pandoc() transfomer generator, interfacing
    rmarkdown::pandoc_convert(). This provides an additional option for generating
    HTML output and additionally enables Markdown output (e.g., for ARSnova, see
    below).

  o Added new interface exams2nops() for generating PDF exams that can be
    printed, scanned, and automatically evaluated. Accompanying functions
    nops_scan() (using the png package) and nops_eval() are provided as well.
    The "nops" exams can be internationalized. So far there is language support
    for English (en), Dutch (nl, contributed by Niels Smits), French (fr,
    contributed by Arthur Allignol), German (de), Italian (it, contributed by
    Domenico Zambella), Portuguese (pt, contributed by Fabian Petutschnig),
    Romanian (ro, contributed by Cristian Gatu), Spanish (es, contributed by
    Maria Kogelnik).

  o Added new interface exams2arsnova() for exporting exams/quizzes to the
    interactive audience response system ARSnova (https://arsnova.eu/). This
    can either create JSON output files (via RJSONIO::toJSON) that need to be
    manually imported into ARSnova - or the JSON string can directly be imported
    into an active ARSnova session (via RCurl).

  o Added first development version of exams2blackboard(). This is still
    experimental and likely to change in future versions. It essentially
    behaves as exams2qti12() but with some additional processing for Blackboard.

  o Added "abstention" option in schoice/mchoice questions in exams2moodle().
    This can also be set directly through an \exabstention{} tag in the
    corresponding .Rnw exercise.

  o Added various convenience functions for creating single- or multiple-choice
    questions from either a single numeric result (num_to_schoice) or from a
    matrix solution (matrix_to_schoice, matrix_to_mchoice, det_to_schoice).

  o Added various convenience functions for formatting numbers within exercises:
    fmt() for conveniently displaying a certain number of digits, round2()
    for rounding away from zero, char_with_braces() for adding braces to negative
    numbers, and a toLatex() method for "matrix" objects.

  o tex2image() now also supports format="svg" via pdfcrop followed by pdf2svg
    (instead of ImageMagick's convert).

  o Fixed bug in file paths created for "media" supplements in QTI XML formats.
    File names had an unnecessary trailing slash which lead to unrecognized
    suffixes in some browsers.


Changes in Version 2.0-2

  o Added an optional transform = NULL argument in exams2pdf().
  
  o Avoid require(...) calls for suggested packages.


Changes in Version 2.0-1

  o The default encoding in exams2moodle() is now ensured to be "UTF-8" rather
    than "utf8" for improved cross-platform compatibility.

  o \exshuffle{TRUE} is now also used in read_exercise() so that schoice/mchoice
    exercises (or schoice/mchoice components in cloze exercises) are shuffled
    upon reading exercises. This facilitates static schoice/mchoice exercises.

  o New cloze type "verbatim" which is not processed further (e.g., to include
    Moodle control structures).

  o Empty questionlists for readily prepared Moodle cloze exercises can now
    be handled in exams2pdf().

  o Functions from non-imported packages (e.g., only suggested) are now always
    called with package::function to make R-devel checks happy.

  o Bug fix in processing of "duration" in exams2qti12().


Changes in Version 2.0-0

  o New version accompanying publication of exams version 2 in the
    Journal of Statistical Software, 58(1), 1-36. See
    vignette("exams2", package = "exams") for more details.

  o License extended from GPL-2 to GPL-2 | GPL-3.

  o New exams2qti21() interface for generating QTI 2.1 (rather than QTI 1.2)
    XML. So far this was only tested with the ONYX Player within
    OpenOLAT. Currently, some switches do not appear to fully work, yet,
    at least within ONYX. The function still needs further thorough
    testing and might be further improved in future versions.

  o Added verbose = FALSE option to xexams() and exams2xyz() interfaces.
    If set to TRUE, progress information on the exam generation is
    printed.

  o The XML output in exams2qti12() sometimes did not yield fully correct
    QTI 1.2 output. This has been fixed now and test output was validated
    against the QTI 1.2 DTD.

  o Added a new pluginfile = TRUE option in exams2moodle(). By default,
    supplementary files (graphics, data files, etc.) are now included using
    Moodle's Pluginfile mechanism. This may not work with older versions of
    Moodle (< 2.5) but in newer versions it is better and more robust than
    using data URIs.

  o Added fix_num = TRUE option in exams2qti12() interface.
    Because OLAT does not display the correct answer of response_num
    items with tolerances (vargt/varlt), a workaround was added:
    In addition to the version with tolerances an exact equality
    is checked (varequal), adding and removing a 0.00001 points.
    Thus, evaluation of the exams is not affected but the display
    in OLAT is fixed.

  o The {answerlist} in the {solution} environment can now also be
    omitted (in mchoice, schoice, cloze exercises). It is still recommended
    to include it but all exams2xyz() interfaces can process exercises
    correctly that do not provide it.


Changes in Version 1.9-6

  o Changed tests/encodings.R to use 'encoding = "Latin-9"' (rather
    than "latin9" which does not work on Solaris, see ?iconv).


Changes in Version 1.9-5

  o The new function exams_skeleton() helps users to create their first
    exam. It creates a directory with a demo.R script illustrating the
    use of the various exams2xyz() interfaces. Subdirectories with
    copies of all demonstration exercise .Rnw files and templates for
    different output formats (LaTeX, HTML, or XML) are also created.
  
  o Encodings are now explicitly supported by all exams2xyz() interfaces.
    Essentially, the encoding argument is just passed on to Sweave()
    and the user has to make sure that the template (for LaTeX, HTML,
    or XML output) has the appropriate encoding. exams_skeleton()
    also supports this and especially the encoding UTF-8 is now fully
    integrated. The encodings ISO-8859-1 (aka latin1) or ISO-8859-15
    (aka latin9) have also been tested while other encodings may need
    further touch-ups. Furthermore, the developers recommend to _not_
    rely on encodings but to code special characters with their
    LaTeX commands because these work in all locales on all platforms.
  
  o The new function exams_eval() captures various types of evaluation
    policies for exams (with/without partial credits for multiple choice,
    with/without negative points). The resulting functions aid generation
    of e-learning exams or evaluation of an exam "by hand".

  o If the "edir" argument is specified in exams2xyz(), then all
    files in edir _and_ its subdirectories are searched recursively.

  o Asymmetric tolerance intervals are not supported in the exams2xyz()
    interfaces anymore. Instead, vectors of solutions in "cloze"
    exercises can have vectors of tolerances.

  o The original exam.tex/solution.tex templates have been renamed to
    oexam.tex/osolution.tex. The function exams() needs to be used
    with oexam/osolution while exam/solution are now optimized for
    exams2pdf(). The reason is that the questionnaire command has
    been changed. For a multiple-choice question with five answers
    and correct solutions 1 and 4, say, exams() produces
    \exmchoice{X}{ }{ }{X}{ } while exams2pdf now uses
    \exmchoice{X}[ ][ ][X][ ], i.e., with optional instead of required
    arguments. The latter solution is not restricted to multiple-choice
    questions with exactly five answers anymore.


Changes in Version 1.9-4

  o Several functions now use find.package() rather than .find.package()
    internally (as the latter will be deprecated soon).


Changes in Version 1.9-3

  o Enforced .tex suffix in LaTeX files used internally by exams2pdf().
    The lack of .tex suffixes led to errors on certain Windows systems.


Changes in Version 1.9-2

  o New demo exercises:
    - confint2.Rnw shows how a confidence interval can be embedded into a
      "cloze" question (for all version 2 interfaces).
    - dist.Rnw is a very short and simple example that is intelligible
      across a wide range of disciplines (not for statistics audiences only).
    - dist2.Rnw is an extension of dist.Rnw that is written as a "cloze".

  o Questions in exams2moodle() were forced to be <pre>-formatted,
    now embedded in normal HTML (without <pre> tags).
  

Changes in Version 1.9-1

  o Supplementary files had not been correctly inferred on Solaris
    systems. This has been fixed now so that the package behaves the
    same across different platforms.
    
  o The code underlying the old "exams" vignette now avoids opening PDF
    viewers.


Changes in Version 1.9-0

  o Major revision of the "exams" package, adding flexible support for
    generation of exams in different formats including PDF, HTML,
    Moodle XML, and QTI 1.2 (for OLAT). This new version of the exams
    package (called "version 2") is described in a new vignette:
    vignette("exams2", package = "exams")


Changes in Version 1.0-4

  o Added an {answerlist} environment in the LaTeX templates (inst/tex)
    so that each \item in the {answerlist} is automatically labeled
    with (a), (b), (c), ...

  o Replaced the old {itemize} environments with {answerlist} in
    anova.Rnw, boxplots.Rnw, relfreq.Rnw, scatterplot.Rnw, ttest.Rnw.
    (The resulting PDFs do not change.)


Changes in Version 1.0-3

  o Small improvements in solution string formatting.


Changes in Version 1.0-2

  o The argument "nsamp" was added to exams() in order to allow
    sampling more than one exercise from each element of the
    argument "file".


Changes in Version 1.0-1
  
  o The man page of exams was modified to use suitable markup commands.

  o The questions in the ANOVA example were slightly changed to more
    explicitly indicate which hypothesis is tested. A typo in the
    vignette was fixed.


Changes in Version 1.0-0

  o New version accompanying publication in the Journal of
    Statistical Software. See vignette("exams", package = "exams")
    for more details.
    
  o New CITATION file pointing to the JSS paper, see
    citation("exams").


Changes in Version 0.9-5

  o The possible types of questions were extended to allow also text
    results. The new type is specified by "string".

  o To specify the allowed tolerance for numeric solutions now
    different tolerances can be supplied for falling below or
    exceeding the true value via \extol{lower}{upper}.

  o The "discussion" section in the vignette was extended to include
    several remarks and pointers on strategies for exercise
    generation.


Changes in Version 0.9-0

  o First CRAN release version.
  
  o New vignette "exams" that explains how to use the package.
  
  o New set of exercises for illustation in examples and vignette.
  

Changes in Version 0.2-0

  o First stable version for internal use at WU Wien.

