texlive[65672] Master/texmf-dist: moodle (29jan23)

commits+karl at tug.org commits+karl at tug.org
Sun Jan 29 22:21:06 CET 2023


Revision: 65672
          http://tug.org/svn/texlive?view=revision&revision=65672
Author:   karl
Date:     2023-01-29 22:21:06 +0100 (Sun, 29 Jan 2023)
Log Message:
-----------
moodle (29jan23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/moodle/README.md
    trunk/Master/texmf-dist/doc/latex/moodle/moodle.pdf
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_autopoints-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_calculated_python-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_circuitikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_multi-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_numerical-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_shortanswer-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_commands-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_description-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_environments-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_fancyvrb-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_generalfeedback-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_handout-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_via_tikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_with_svg-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_matching-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_math-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_mathenv-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_minted-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_multi-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_paragraph_breaks-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_shortanswer-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tags-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz_with_svg-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_truefalse-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_verbatim-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/makefile
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_autopoints.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_lua.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_python.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_multi.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_numerical.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_shortanswer.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_commands.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_description.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_environments.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_escaping_right_braces_in_cloze.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_fancyvrb.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_french.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_german.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_includegraphics_with_svg.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_matching.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_multi.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_paragraph_breaks.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_shortanswer.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_verbatim.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_autopoints-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_lua-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_python-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_circuitikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_multi-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_numerical-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_shortanswer-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_commands-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_description-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_environments-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_fancyvrb-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_generalfeedback-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_german-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_handout-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_via_tikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_with_svg-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_matching-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_math-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_mathenv-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_minted-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_multi-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_paragraph_breaks-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_shortanswer-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tags-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tikz-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_truefalse-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_verbatim-moodle.ref
    trunk/Master/texmf-dist/source/latex/moodle/makefile
    trunk/Master/texmf-dist/source/latex/moodle/moodle.dtx
    trunk/Master/texmf-dist/source/latex/moodle/moodle.ins
    trunk/Master/texmf-dist/tex/latex/moodle/moodle.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/moodle/test/check_babel.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/check_polyglossia.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.SVG
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_diacritics_and_ligatures-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_horizontal_spacing-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_numerical-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_points-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_punctuation_and_symbols-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_samepage-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_sanction-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_turkish-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_diacritics_and_ligatures.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_horizontal_spacing.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_numerical.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_points.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_punctuation_and_symbols.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_samepage.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_sanction.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_turkish.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_diacritics_and_ligatures-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_horizontal_spacing-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_numerical-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_points-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_punctuation_and_symbols-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_samepage-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_sanction-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_turkish-moodle.ref

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/moodle/test/fig/MoodlE_logo.SVG
    trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.png
    trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.svg
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_macros-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_point_points-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_special_characters-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_macros.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_point_points.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/test_special_characters.tex
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_macros-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_point_points-moodle.ref
    trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_special_characters-moodle.ref

Modified: trunk/Master/texmf-dist/doc/latex/moodle/README.md
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/moodle/moodle.pdf
===================================================================
(Binary files differ)

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/check_babel.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/check_babel.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/check_babel.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,78 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp,draft]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\def\FullSupportList{british,french,ngerman,german,italian,spanish}
+\def\PartialSupportList{catalan,croatian,czech,danish,dutch,
+estonian,finnish,hungarian,icelandic,lithuanian,norsk,polish,portuguese,
+romanian,swedish,turkish}
+\def\ExtraList{}% the shortands of Turkish are particularly 
+%dangerous
+\usepackage[\PartialSupportList,\FullSupportList]{babel}
+\babelprovide{foobar}
+%\usepackage{translations} % overides "translator"
+%\DeclareLanguage{foobar}
+\AfterEndPreamble{
+  \DeclareTranslation{foobar}{True}{Foo}%
+  \DeclareTranslation{foobar}{False}{Bar}%
+}
+\begin{document}
+% Fix dangerous shorthands due to 'turkish' option of babel
+\shorthandoff{=:!}
+\section*{Introduction}
+This document is intended to check the support of 
+internationalization with \textsf{babel}. No language is 
+set as option to \textsf{babel}.
+
+Internationalization only matters for the PDF typesetting. 
+It has no impact on the XML file generated.
+
+\def\do#1{
+\begin{otherlanguage}{#1}
+\begin{abstract}#1/\languagename\end{abstract}
+\begin{quiz}{#1}
+\begin{description}[tags={#1}]{Description}Text\end{description}
+\begin{cloze}{Cloze}
+\begin{multi}[shuffle]{Multichoice}?\item* A\item B\end{multi}
+\begin{multi}[multiple,shuffle=false]{Multianswer}?\item* A\item B\end{multi}
+\begin{numerical}{Numerical}?\item0\end{numerical}
+\begin{shortanswer}[usecase]{Shortanswer}?\item0\end{shortanswer}
+\begin{shortanswer}[usecase=false]{Shortanswer}?\item0\end{shortanswer}
+\end{cloze}
+\begin{essay}[template={Default}]{Essay}Text\item Info\end{essay}
+\begin{essay}[response format=html+file]{Essay}Text\end{essay}
+\begin{essay}[response format=text]{Essay}Text\end{essay}
+\begin{essay}[response format=monospaced]{Essay}Text\end{essay}
+\begin{essay}[response format=file]{Essay}Text\end{essay}
+\begin{matching}[dd]{Matching}?\item A\answer1\item B\answer2\item 
+C\answer3\end{matching}
+\begin{multi}[shuffle]{Multichoice}?\item* A\item B\end{multi}
+\begin{multi}[multiple,shuffle=false]{Multianswer}?\item* A\item B\end{multi}
+\begin{multi}[allornothing]{All-or-nothing}?\item* A\item B\end{multi}
+\begin{numerical}{Numerical}?\item0\end{numerical}
+\begin{shortanswer}[usecase]{Shortanswer}?\item0\end{shortanswer}
+\begin{shortanswer}[usecase=false]{Shortanswer}?\item0\end{shortanswer}
+\begin{truefalse}{Truefalse}?\item*\end{truefalse}
+\end{quiz}
+\end{otherlanguage}
+}
+\expandafter\docsvlist\expandafter{\FullSupportList}
+
+\def\do#1{
+\begin{otherlanguage}{#1}
+\begin{abstract}#1/\languagename\end{abstract}
+\begin{quiz}{True/False in  #1}
+\begin{truefalse}{#1}?\item*\end{truefalse}
+\end{quiz}
+\end{otherlanguage}
+}
+\expandafter\docsvlist\expandafter{\PartialSupportList,foobar}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/check_babel.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moodle/test/check_polyglossia.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/check_polyglossia.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/check_polyglossia.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,71 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp,draft]{moodle}
+\usepackage{fontspec}% works only with XeTeX and LuaTeX
+\usepackage{polyglossia}% works only with XeTeX and LuaTeX
+\def\FullSupportList{british,french,ngerman,german,italian,spanish}%
+\def\PartialSupportList{catalan,croatian,czech,danish,dutch,%
+estonian,finnish,hungarian,icelandic,lithuanian,norsk,polish,portuguese,%
+romanian,swedish,turkish}
+\def\do#1{\setmainlanguage{#1}\let\do=\setotherlanguage}
+\expandafter\docsvlist\expandafter{\FullSupportList}
+\expandafter\docsvlist\expandafter{\PartialSupportList}
+%\usepackage{translations} % overides "translator"
+%\AfterEndPreamble{
+%  \DeclareTranslation{foobar}{True}{Foo}%
+%  \DeclareTranslation{foobar}{False}{Bar}%
+%}
+\begin{document}
+\section*{Introduction}
+This document is intended to check the support of 
+internationalization with \textsf{polyglossia}. This 
+package requires the languages to be specified in the 
+preamble.
+
+Internationalization only matters for the PDF typesetting. 
+It has no impact on the XML file generated.
+
+\def\do#1{
+\begin{#1}
+\begin{abstract}#1/\languagename\end{abstract}
+\begin{quiz}{#1}
+\begin{description}[tags={#1}]{Description}Text\end{description}
+\begin{cloze}{Cloze}
+\begin{multi}[shuffle]{Multichoice}?\item* A\item B\end{multi}
+\begin{multi}[multiple,shuffle=false]{Multianswer}?\item* A\item B\end{multi}
+\begin{numerical}{Numerical}?\item0\end{numerical}
+\begin{shortanswer}[usecase]{Shortanswer}?\item0\end{shortanswer}
+\begin{shortanswer}[usecase=false]{Shortanswer}?\item0\end{shortanswer}
+\end{cloze}
+\begin{essay}[template={Default}]{Essay}Text\item Info\end{essay}
+\begin{essay}[response format=html+file]{Essay}Text\end{essay}
+\begin{essay}[response format=text]{Essay}Text\end{essay}
+\begin{essay}[response format=monospaced]{Essay}Text\end{essay}
+\begin{essay}[response format=file]{Essay}Text\end{essay}
+\begin{matching}[dd]{Matching}?\item A\answer1\item B\answer2\item 
+C\answer3\end{matching}
+\begin{multi}[shuffle]{Multichoice}?\item* A\item B\end{multi}
+\begin{multi}[multiple,shuffle=false]{Multianswer}?\item* A\item B\end{multi}
+\begin{multi}[allornothing]{All-or-nothing}?\item* A\item B\end{multi}
+\begin{numerical}{Numerical}?\item0\end{numerical}
+\begin{shortanswer}[usecase]{Shortanswer}?\item0\end{shortanswer}
+\begin{shortanswer}[usecase=false]{Shortanswer}?\item0\end{shortanswer}
+\begin{truefalse}{Truefalse}?\item*\end{truefalse}
+\end{quiz}
+\end{#1}
+}
+\expandafter\docsvlist\expandafter{\FullSupportList}
+
+\def\do#1{
+\begin{#1}
+\begin{abstract}#1/\languagename\end{abstract}
+\begin{quiz}{True/False in  #1}
+\begin{truefalse}{#1}?\item*\end{truefalse}
+\end{quiz}
+\end{#1}
+}
+\expandafter\docsvlist\expandafter{\PartialSupportList}
+
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/check_polyglossia.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/fig/MoodlE_logo.SVG
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/fig/MoodlE_logo.SVG	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/fig/MoodlE_logo.SVG	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg version="1.1" viewBox="0 0 327 100" xmlns="http://www.w3.org/2000/svg">
-<g fill="#f98012">
-<path d="m72.4 77.45v-27.07c0-5.65-2.35-8.5-7-8.5-4.674 0-7.024 2.826-7.024 8.5v27.07h-13.77v-27.07c0-5.65-2.301-8.5-6.899-8.5-4.676 0-7 2.826-7 8.5v27.07h-13.78v-28.68c0-5.9 2.051-10.37 6.151-13.4 3.599-2.701 8.5-4.076 14.65-4.076 6.225 0 10.82 1.6 13.77 4.801 2.549-3.201 7.174-4.801 13.9-4.801 6.15 0 11.02 1.35 14.62 4.076 4.1 3.025 6.15 7.5 6.15 13.4v28.68z"/>
-<path d="m136.1 22.75-3.094-2.117-7.492 12.05c-5.375-1.792-10.59-1.792-11.56-1.792-17.1 0-26.55 10.59-26.55 24.43 0 6.351 2.443 14.98 11.73 19.87l-7.328 11.89 3.095 1.954 7.653-12.21c5.212 1.792 10.1 1.792 11.4 1.792 17.43 0 26.55-10.59 26.55-23.29 0-7.98-3.421-16.45-11.73-20.85zm-33.71 47.23c-3.095-3.746-3.095-9.609-3.095-14.82 0-7.817 0-20.52 14.66-20.52 3.095 0 6.189 0.651 8.794 2.443zm23.13-30.29c2.932 4.072 3.095 9.772 3.095 15.47 0 7.816 0 19.71-14.66 19.71-1.302 0-5.211 0-8.631-2.28z"/>
-<path d="m165.6 78.55c-6.975 0-12.75-2.224-17.3-6.65-4.551-4.424-6.826-10.12-6.826-17.12 0-6.975 2.275-12.67 6.826-17.1 4.549-4.424 10.32-6.65 17.3-6.65s12.77 2.225 17.35 6.65c4.6 4.426 6.899 10.15 6.899 17.1 0 6.975-2.299 12.68-6.899 17.12-4.6 4.426-10.37 6.65-17.35 6.65zm0-36.45c-3.324 0-5.875 1.25-7.674 3.775-1.775 2.525-2.676 5.5-2.676 8.975 0 3.475 0.8256 6.4 2.5 8.774 1.901 2.725 4.526 4.076 7.85 4.076 3.326 0 5.926-1.35 7.85-4.076 1.75-2.4 2.625-5.326 2.625-8.774 0-3.475-0.8256-6.4-2.5-8.774-1.924-2.651-4.576-3.975-7.975-3.975z"/>
-<path d="m227.2 77.32v-4.551c-1.225 1.65-3.326 2.951-6.276 3.951-2.625 0.8996-5.125 1.35-7.5 1.35-6.574 0-11.85-2.25-15.82-6.776-3.975-4.5-5.975-10.1-5.975-16.75 0-6.574 1.951-12.07 5.85-16.5 3.449-3.924 9.1-6.65 15.57-6.65 7.301 0 11.58 2.75 14.15 5.9v-37.3h13.42v77.32zm0-25.75c0-2.451-1.176-4.826-3.5-7.075-2.326-2.25-4.75-3.375-7.2-3.375-3.525 0-6.326 1.451-8.375 4.299-1.799 2.551-2.701 5.676-2.701 9.35 0 3.625 0.9013 6.7 2.701 9.225 2.049 2.951 4.85 4.424 8.375 4.424 2.125 0 4.451-1 6.95-3.025 2.5-2 3.75-4.074 3.75-6.225z"/>
-<path d="m244.8 0h13.8v77.32h-13.8z"/>
-<path d="m327 73.83h-2.774c-2.772 15.57-5.324 23-24.29 23h-14.64c-5.212 0-5.435-0.712-5.435-4.07v-27.07h9.872c10.76 0 11.98 3.257 11.98 11.91h2.773v-26.87h-2.773c0 8.649-1.22 11.8-11.98 11.8h-9.872v-24.32c0-3.358 0.2227-4.072 5.435-4.072h14.2c16.97 0 19.85 5.598 21.63 19.74h2.773l-3.105-22.8h-62.11v3.053h2.552c8.539 0 8.762 1.12 8.762 4.783v53.12c0 3.663-0.2216 4.782-8.762 4.782h-2.552v3.155h63.67l4.659-26.15z"/>
-</g>
-<path d="m43.67 29.22 13.68-10-0.176-0.6003c-24.67 3.025-35.9 5.174-57.17 17.5l0.2007 0.5493 1.699 0.0263c-0.1497 1.699-0.4243 5.9-0.074 12.25-2.35 6.824-0.051 11.47 2.099 16.52 0.3503-5.25 0.301-11-1.299-16.72-0.3257-6.275-0.0493-10.42 0.1003-12.02l14.1 0.125s-0.1003 4.25 0.4243 8.274c12.6 4.424 25.27-0.0247 32-10.92-1.9-2.125-5.576-4.975-5.576-4.975z" fill="#333"/>
-</svg>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.SVG
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.SVG	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.SVG	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 299.7 99.977" xmlns="http://www.w3.org/2000/svg">
+<g fill="#f98012">
+<path d="m108.79 22.756-3.094-2.117-7.492 12.05c-5.375-1.792-10.59-1.792-11.56-1.792-17.1 0-26.55 10.59-26.55 24.43 0 6.351 2.443 14.98 11.73 19.87l-7.328 11.89 3.095 1.954 7.653-12.21c5.212 1.792 10.1 1.792 11.4 1.792 17.43 0 26.55-10.59 26.55-23.29 0-7.98-3.421-16.45-11.73-20.85zm-33.71 47.23c-3.095-3.746-3.095-9.609-3.095-14.82 0-7.817 0-20.52 14.66-20.52 3.095 0 6.189 0.651 8.794 2.443zm23.13-30.29c2.932 4.072 3.095 9.772 3.095 15.47 0 7.816 0 19.71-14.66 19.71-1.302 0-5.211 0-8.631-2.28z"/>
+<path d="m138.29 78.556c-6.975 0-12.75-2.224-17.3-6.65-4.551-4.424-6.826-10.12-6.826-17.12 0-6.975 2.275-12.67 6.826-17.1 4.549-4.424 10.32-6.65 17.3-6.65s12.77 2.225 17.35 6.65c4.6 4.426 6.899 10.15 6.899 17.1 0 6.975-2.299 12.68-6.899 17.12-4.6 4.426-10.37 6.65-17.35 6.65zm0-36.45c-3.324 0-5.875 1.25-7.674 3.775-1.775 2.525-2.676 5.5-2.676 8.975s0.8256 6.4 2.5 8.774c1.901 2.725 4.526 4.076 7.85 4.076 3.326 0 5.926-1.35 7.85-4.076 1.75-2.4 2.625-5.326 2.625-8.774 0-3.475-0.8256-6.4-2.5-8.774-1.924-2.651-4.576-3.975-7.975-3.975z"/>
+<path d="m199.89 77.326v-4.551c-1.225 1.65-3.326 2.951-6.276 3.951-2.625 0.8996-5.125 1.35-7.5 1.35-6.574 0-11.85-2.25-15.82-6.776-3.975-4.5-5.975-10.1-5.975-16.75 0-6.574 1.951-12.07 5.85-16.5 3.449-3.924 9.1-6.65 15.57-6.65 7.301 0 11.58 2.75 14.15 5.9v-37.3h13.42v77.32zm0-25.75c0-2.451-1.176-4.826-3.5-7.075-2.326-2.25-4.75-3.375-7.2-3.375-3.525 0-6.326 1.451-8.375 4.299-1.799 2.551-2.701 5.676-2.701 9.35 0 3.625 0.9013 6.7 2.701 9.225 2.049 2.951 4.85 4.424 8.375 4.424 2.125 0 4.451-1 6.95-3.025 2.5-2 3.75-4.074 3.75-6.225z"/>
+<path d="m217.49 6e-3h13.8v77.32h-13.8z"/>
+<path d="m299.69 73.836h-2.774c-2.772 15.57-5.324 23-24.29 23h-14.64c-5.212 0-5.435-0.712-5.435-4.07v-27.07h9.872c10.76 0 11.98 3.257 11.98 11.91h2.773v-26.87h-2.773c0 8.649-1.22 11.8-11.98 11.8h-9.872v-24.32c0-3.358 0.2227-4.072 5.435-4.072h14.2c16.97 0 19.85 5.598 21.63 19.74h2.773l-3.105-22.8h-62.11v3.053h2.552c8.539 0 8.762 1.12 8.762 4.783v53.12c0 3.663-0.2216 4.782-8.762 4.782h-2.552v3.155h63.67l4.659-26.15z"/>
+<path d="m58.372 48.433v29.07h-13.77v-27.07c0-5.65-2.301-8.5-6.899-8.5-4.676 0-7 2.826-7 8.5v27.07h-13.78v-28.68c0-5.9 2.051-10.37 6.151-13.4 3.599-2.701 8.5-4.076 14.65-4.076 6.225 0 10.046 1.6771 13.77 4.801 3.5957 3.016 6.9631 7.0008 6.878 12.285z"/>
+</g>
+<path d="m43.666 29.273 13.68-10-0.176-0.6003c-24.67 3.025-35.9 5.174-57.17 17.5l0.2007 0.5493 1.699 0.0263c-0.1497 1.699-0.4243 5.9-0.074 12.25-2.35 6.824-0.051 11.47 2.099 16.52 0.3503-5.25 0.301-11-1.299-16.72-0.3257-6.275-0.0493-10.42 0.1003-12.02l14.1 0.125s-0.1003 4.25 0.4243 8.274c12.6 4.424 25.27-0.0247 32-10.92-1.9-2.125-5.576-4.975-5.576-4.975z" fill="#333"/>
+</svg>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.png
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.svg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.svg	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/fig/NoodlE_logo.svg	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<svg version="1.1" viewBox="0 0 299.7 99.977" xmlns="http://www.w3.org/2000/svg">
-<g fill="#f98012">
-<path d="m108.79 22.756-3.094-2.117-7.492 12.05c-5.375-1.792-10.59-1.792-11.56-1.792-17.1 0-26.55 10.59-26.55 24.43 0 6.351 2.443 14.98 11.73 19.87l-7.328 11.89 3.095 1.954 7.653-12.21c5.212 1.792 10.1 1.792 11.4 1.792 17.43 0 26.55-10.59 26.55-23.29 0-7.98-3.421-16.45-11.73-20.85zm-33.71 47.23c-3.095-3.746-3.095-9.609-3.095-14.82 0-7.817 0-20.52 14.66-20.52 3.095 0 6.189 0.651 8.794 2.443zm23.13-30.29c2.932 4.072 3.095 9.772 3.095 15.47 0 7.816 0 19.71-14.66 19.71-1.302 0-5.211 0-8.631-2.28z"/>
-<path d="m138.29 78.556c-6.975 0-12.75-2.224-17.3-6.65-4.551-4.424-6.826-10.12-6.826-17.12 0-6.975 2.275-12.67 6.826-17.1 4.549-4.424 10.32-6.65 17.3-6.65s12.77 2.225 17.35 6.65c4.6 4.426 6.899 10.15 6.899 17.1 0 6.975-2.299 12.68-6.899 17.12-4.6 4.426-10.37 6.65-17.35 6.65zm0-36.45c-3.324 0-5.875 1.25-7.674 3.775-1.775 2.525-2.676 5.5-2.676 8.975s0.8256 6.4 2.5 8.774c1.901 2.725 4.526 4.076 7.85 4.076 3.326 0 5.926-1.35 7.85-4.076 1.75-2.4 2.625-5.326 2.625-8.774 0-3.475-0.8256-6.4-2.5-8.774-1.924-2.651-4.576-3.975-7.975-3.975z"/>
-<path d="m199.89 77.326v-4.551c-1.225 1.65-3.326 2.951-6.276 3.951-2.625 0.8996-5.125 1.35-7.5 1.35-6.574 0-11.85-2.25-15.82-6.776-3.975-4.5-5.975-10.1-5.975-16.75 0-6.574 1.951-12.07 5.85-16.5 3.449-3.924 9.1-6.65 15.57-6.65 7.301 0 11.58 2.75 14.15 5.9v-37.3h13.42v77.32zm0-25.75c0-2.451-1.176-4.826-3.5-7.075-2.326-2.25-4.75-3.375-7.2-3.375-3.525 0-6.326 1.451-8.375 4.299-1.799 2.551-2.701 5.676-2.701 9.35 0 3.625 0.9013 6.7 2.701 9.225 2.049 2.951 4.85 4.424 8.375 4.424 2.125 0 4.451-1 6.95-3.025 2.5-2 3.75-4.074 3.75-6.225z"/>
-<path d="m217.49 6e-3h13.8v77.32h-13.8z"/>
-<path d="m299.69 73.836h-2.774c-2.772 15.57-5.324 23-24.29 23h-14.64c-5.212 0-5.435-0.712-5.435-4.07v-27.07h9.872c10.76 0 11.98 3.257 11.98 11.91h2.773v-26.87h-2.773c0 8.649-1.22 11.8-11.98 11.8h-9.872v-24.32c0-3.358 0.2227-4.072 5.435-4.072h14.2c16.97 0 19.85 5.598 21.63 19.74h2.773l-3.105-22.8h-62.11v3.053h2.552c8.539 0 8.762 1.12 8.762 4.783v53.12c0 3.663-0.2216 4.782-8.762 4.782h-2.552v3.155h63.67l4.659-26.15z"/>
-<path d="m58.372 48.433v29.07h-13.77v-27.07c0-5.65-2.301-8.5-6.899-8.5-4.676 0-7 2.826-7 8.5v27.07h-13.78v-28.68c0-5.9 2.051-10.37 6.151-13.4 3.599-2.701 8.5-4.076 14.65-4.076 6.225 0 10.046 1.6771 13.77 4.801 3.5957 3.016 6.9631 7.0008 6.878 12.285z"/>
-</g>
-<path d="m43.666 29.273 13.68-10-0.176-0.6003c-24.67 3.025-35.9 5.174-57.17 17.5l0.2007 0.5493 1.699 0.0263c-0.1497 1.699-0.4243 5.9-0.074 12.25-2.35 6.824-0.051 11.47 2.099 16.52 0.3503-5.25 0.301-11-1.299-16.72-0.3257-6.275-0.0493-10.42 0.1003-12.02l14.1 0.125s-0.1003 4.25 0.4243 8.274c12.6 4.424 25.27-0.0247 32-10.92-1.9-2.125-5.576-4.975-5.576-4.975z" fill="#333"/>
-</svg>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_autopoints-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_autopoints-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_autopoints-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -37,7 +37,7 @@
     <text><![CDATA[Auto sanction]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Without the star, an error shall be issued because correct answers should sum up to 100%. </p>]]></text>
+    <text><![CDATA[<p>Without the star, an error shall be issued because correct answers should add up to 100%. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -49,19 +49,19 @@
   <answer fraction="100" format="html">
     <text><![CDATA[<p>A</p>]]></text>
   </answer>
-  <answer fraction="-50" format="html">
+  <answer fraction="-100" format="html">
     <text><![CDATA[<p>B</p>]]></text>
   </answer>
-  <answer fraction="-50" format="html">
+  <answer fraction="-100" format="html">
     <text><![CDATA[<p>C</p>]]></text>
   </answer>
 </question>
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[All correct but sum \(\geq 100\)]]></text>
+    <text><![CDATA[All correct but total \(\geq 100\)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A warning shall be issued because correct answers must sum up to 100%. </p>]]></text>
+    <text><![CDATA[<p>A warning shall be issued because correct answers must add up to 100%. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -106,12 +106,87 @@
   <answer fraction="-50" format="html">
     <text><![CDATA[<p>1</p>]]></text>
   </answer>
-  <answer fraction="-25" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>6</p>]]></text>
   </answer>
-  <answer fraction="-25" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>8</p>]]></text>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Fruits (automatic scores)]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the fruits </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Apple</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Burger</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Hot dog</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Pizza</p>]]></text>
+  </answer>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Orange</p>]]></text>
+  </answer>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Banana</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Vegetables (advanced scores)]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the vegetables </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="10" format="html">
+    <text><![CDATA[<p>Radish</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>Good</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>Chocolate</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>Biscuit</p>]]></text>
+  </answer>
+  <answer fraction="-10" format="html">
+    <text><![CDATA[<p>Cheese</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>Carrot</p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Embedded questions]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the fruits {1:MULTIRESPONSE_S:=Apple~Burger~Hot dog~Pizza~=Orange~=Banana}Select the vegetables {1:MULTIRESPONSE_S:%10%Radish#Good~%-20%Chocolate~%-20%Biscuit~%-10%Cheese~=Carrot}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_calculated_python-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_calculated_python-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_calculated_python-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Arithmetic Quiz (3, 2)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 =\){1:NUMERICAL:=5:0}\(3 - 2 =\){1:NUMERICAL:=1:0}\(3 * 2 =\){1:NUMERICAL:=6:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 =\){2:NUMERICAL:=5:0}\(3 - 2 =\){2:NUMERICAL:=1:0}\(3 * 2 =\){2:NUMERICAL:=6:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>
@@ -41,7 +41,7 @@
     <text><![CDATA[Arithmetic Quiz (4, 3)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 =\){1:NUMERICAL:=7:0}\(4 - 3 =\){1:NUMERICAL:=1:0}\(4 * 3 =\){1:NUMERICAL:=12:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 =\){2:NUMERICAL:=7:0}\(4 - 3 =\){2:NUMERICAL:=1:0}\(4 * 3 =\){2:NUMERICAL:=12:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_circuitikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_circuitikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_circuitikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -15,34 +15,34 @@
   <questiontext format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,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 
-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 
+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 
+2uzgc8tZfxi/l7zSaxwGd1ju3Kl6u1HdlE9yaOVqY1L9SabuJa99/mOivvSiyHknbQ506kWa5X0e 
+gXwJTjeqarZONlPXhvbRE7cdTosHdDo92dkvGW+CP2C22T7b2S+tCNjLi6ru+hfbFzhtHh/fK0WF 
+J2D/9/B5oB1Oq5cbdwdKdhP14c5A6ZP3KH31ts9p+eqt0uKF+dXU/bB5hqc5F9M3b12dVfEvpe7H 
+LT7m5LKchssWPlMf3jN1ZxbV5DntFtUY14eiqTuz5CvLabbky7w+lE3dmQWJOU6jBYkl6kPZ1J0u 
+l81weuPl8Wl9KL+rffvq7dNHuphb08U36Ar3vfJbXPuDtrgmWw1uE1oo2Vi+/t6DZCPMthfMBXt6 
+U2XvwcFDitrbtDZZ8wTbhatvIhQ51Xbh/S2uU5nrO9N24RW04gbsM20X/nFRlT4PcKrtwtsbVv7j 
+FefaLpw7Cn5a5WTbhetytvFcmwgrc55ui2tdzvNtwK6cO4/eefZk1KKbwsp+5ev01aj0R9NOtGn4 
+HTgvb8AqRI046aekG18jqvP80PmxUclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJ 
+TnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+/iycET/R8RLnfyXLxoFm+P5zAAAAAElFTkSuQmCC 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -55,34 +55,34 @@
   <answer fraction="100" format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,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 
-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 
+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 
+2uzgc8tZfxi/l7zSaxwGd1ju3Kl6u1HdlE9yaOVqY1L9SabuJa99/mOivvSiyHknbQ506kWa5X0e 
+gXwJTjeqarZONlPXhvbRE7cdTosHdDo92dkvGW+CP2C22T7b2S+tCNjLi6ru+hfbFzhtHh/fK0WF 
+J2D/9/B5oB1Oq5cbdwdKdhP14c5A6ZP3KH31ts9p+eqt0uKF+dXU/bB5hqc5F9M3b12dVfEvpe7H 
+LT7m5LKchssWPlMf3jN1ZxbV5DntFtUY14eiqTuz5CvLabbky7w+lE3dmQWJOU6jBYkl6kPZ1J0u 
+l81weuPl8Wl9KL+rffvq7dNHuphb08U36Ar3vfJbXPuDtrgmWw1uE1oo2Vi+/t6DZCPMthfMBXt6 
+U2XvwcFDitrbtDZZ8wTbhatvIhQ51Xbh/S2uU5nrO9N24RW04gbsM20X/nFRlT4PcKrtwtsbVv7j 
+FefaLpw7Cn5a5WTbhetytvFcmwgrc55ui2tdzvNtwK6cO4/eefZk1KKbwsp+5ev01aj0R9NOtGn4 
+HTgvb8AqRI046aekG18jqvP80PmxUclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJ 
+TnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+/iycET/R8RLnfyXLxoFm+P5zAAAAAElFTkSuQmCC 
 "></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -89,34 +89,34 @@
     <text><![CDATA[<p>toast</p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU4AAACyCAMAAAAaqtaNAAAAUVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
-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 
+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 
+2uzgc8tZfxi/l7zSaxwGd1ju3Kl6u1HdlE9yaOVqY1L9SabuJa99/mOivvSiyHknbQ506kWa5X0e 
+gXwJTjeqarZONlPXhvbRE7cdTosHdDo92dkvGW+CP2C22T7b2S+tCNjLi6ru+hfbFzhtHh/fK0WF 
+J2D/9/B5oB1Oq5cbdwdKdhP14c5A6ZP3KH31ts9p+eqt0uKF+dXU/bB5hqc5F9M3b12dVfEvpe7H 
+LT7m5LKchssWPlMf3jN1ZxbV5DntFtUY14eiqTuz5CvLabbky7w+lE3dmQWJOU6jBYkl6kPZ1J0u 
+l81weuPl8Wl9KL+rffvq7dNHuphb08U36Ar3vfJbXPuDtrgmWw1uE1oo2Vi+/t6DZCPMthfMBXt6 
+U2XvwcFDitrbtDZZ8wTbhatvIhQ51Xbh/S2uU5nrO9N24RW04gbsM20X/nFRlT4PcKrtwtsbVv7j 
+FefaLpw7Cn5a5WTbhetytvFcmwgrc55ui2tdzvNtwK6cO4/eefZk1KKbwsp+5ev01aj0R9NOtGn4 
+HTgvb8AqRI046aekG18jqvP80PmxUclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJ 
+TnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+/iycET/R8RLnfyXLxoFm+P5zAAAAAElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_multi-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_multi-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_multi-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
+    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%11%chop~%-31%chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~%-103%chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_numerical-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_numerical-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_numerical-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -4,7 +4,7 @@
  
 <question type="category">
   <category>
-    <text>$course$/top/Close Short Answer</text>
+    <text>$course$/top/Close Numerical</text>
   </category>
 </question>
  
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). {1:NUMERICAL:%10%0:0.001#study difference between \(<\) and \(\leq \)~=1:0.01#good!~=2:0.1#OK}</p>]]></text>
+    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). {1:NUMERICAL:%10%0:0.001#study difference between \(<\) and \(\leq \)~=1:0.01#good!~=2:0.1#OK~3:0#No!}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_shortanswer-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_shortanswer-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_cloze_shortanswer-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Who? {1:SHORTANSWER_C:=chip~%10%chop#yes~%-30%chap#no.}what? {1:SHORTANSWER:=chip~%10%chop#yes~%-30%chap#no.}</p>]]></text>
+    <text><![CDATA[<p>Who? {1:SHORTANSWER_C:=chip~%10%chop#yes~%-30%chap#no.}what? {1:SHORTANSWER:=chip~%11%chop#yes~%-31%chap#no.}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_commands-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_commands-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_commands-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -23,9 +23,12 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><EM>emphasis</EM></p>]]></text>
+    <text><![CDATA[<p>\(\rm\TeX\) and<BR/>\(\rm\LaTeX\)</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
+    <text><![CDATA[<p>word with <EM>emphasis</EM> catches the eye</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
     <text><![CDATA[<p><B>bold</B></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -38,9 +41,12 @@
     <text><![CDATA[<p><SPAN STYLE="font-variant: small-caps;">Small Capitals</SPAN></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><SPAN STYLE="text-decoration: underline;">underlined</SPAN></p>]]></text>
+    <text><![CDATA[<p><SPAN STYLE="text-decoration: underline;">underlined</SPAN> in text</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(\underline{underlined}\) in math</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>M<SUP>me</SUP></p>]]></text>
   </answer>
   <answer fraction="0" format="html">

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_description-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_description-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_description-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Requirements]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>This is a description. Not really a question. We can include environments and math. <UL><LI>This</LI><LI>That</LI></UL> \[\mathrm {e}^{2\mathrm {i}\pi }+1=0.\]</p>]]></text>
+    <text><![CDATA[<p>This is a description. Not really a question. We can include environments and math. <UL><LI>This</LI><LI>That</LI></UL> <CENTER>\[\mathrm {e}^{2\mathrm {i}\pi }+1=0.\]</CENTER></p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html">

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_diacritics_and_ligatures-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_diacritics_and_ligatures-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_diacritics_and_ligatures-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Diacritical marks and ligatures</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Å Æ Ð Đ IJ Ł Ŋ Ø Œ ẞ Þ ]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Ä Ë Ï Ö Ü Á É Í Ó Ú Ċ Ė Ġ İ Ż Ā Ē Ḡ Ī Ō Ū Ȳ Â Ê Î Ô Û À È Ì Ò Ù Ã Ñ Õ Ḇ Ḏ Ḵ Ḻ Ṉ Ṯ Ẕ Ç Ş Ţ Ạ Ḅ Ő Ű Ą Ę Į Ǫ Ų Å Ů Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>ä ë ï ö ü ÿ á é í ó ú ċ ė ġ i ż ā ē ḡ ī ō ū ȳ â ê î ô û à è ì ò ù ã ñ õ ḇ ḏ ḵ ḻ ṉ ṯ ẕ ç ş ţ ạ ḅ ő ű ą ę į ǫ ų å ů ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>å æ ð đ ı ij ȷ ł ŋ ø œ ß þ </p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_environments-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_environments-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_environments-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[LaTeX Environments]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><CENTER><SPAN STYLE="font-variant: small-caps;">This is a question</SPAN></CENTER> Select the numbered list </p>]]></text>
+    <text><![CDATA[<p><CENTER><SPAN STYLE="font-variant: small-caps;">This is a question</SPAN></CENTER> <BLOCKQUOTE>and this is a quote</BLOCKQUOTE> <BR/>Select the numbered list </p>]]></text>
   </questiontext>
   <defaultgrade>1</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -30,6 +30,9 @@
     <text><![CDATA[<p><UL><LI>E <OL><LI>X</LI><LI>Y</LI><LI>Z</LI></OL></LI><LI>F</LI></UL></p>]]></text>
     <feedback format="html"><text><![CDATA[<p>Example of numbered list:<BR/><OL><LI>first item</LI><LI>second item</LI></OL></p>]]></text></feedback>
   </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><BLOCKQUOTE>this is a quotation.</BLOCKQUOTE></p>]]></text>
+  </answer>
 </question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_fancyvrb-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_fancyvrb-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_fancyvrb-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -10,7 +10,7 @@
  
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[Multi]]></text>
+    <text><![CDATA[LaTeX]]></text>
   </name>
   <questiontext format="html">
     <text><![CDATA[<p>Pick up the code decorated with line numbering on both sides. </p>]]></text>
@@ -35,5 +35,29 @@
     <feedback format="html"><text><![CDATA[<p>yes!</p>]]></text></feedback>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[C]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark>#include <stdio.h></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><mark>int main() {</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark>    char c='\0', *pc=&c;</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><mark>    printf("Hello world!\n");</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span>    return *pc;<BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span>}<BR/></CODE></PRE> <BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>“&test"</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>’toast’</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><\(<a>\)></p>]]></text>
+  </answer>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_generalfeedback-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_generalfeedback-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_generalfeedback-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -103,15 +103,15 @@
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>æ</p>]]></text>
-    <answer><text>oui </text></answer>
+    <answer format="html"><text><![CDATA[oui ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>œ</p>]]></text>
-    <answer><text>non </text></answer>
+    <answer format="html"><text><![CDATA[non ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>\xC5</text></answer>
+    <answer format="html"><text><![CDATA[Å]]></text></answer>
   </subquestion>
 </question>
 <question type="essay">

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_handout-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_handout-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_handout-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -297,19 +297,19 @@
   <shuffleanswers>0</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>A</p>]]></text>
-    <answer><text>1 </text></answer>
+    <answer format="html"><text><![CDATA[1 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer><text>2 </text></answer>
+    <answer format="html"><text><![CDATA[2 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>C</p>]]></text>
-    <answer><text>3 </text></answer>
+    <answer format="html"><text><![CDATA[3 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>4</text></answer>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
   </subquestion>
   <tags>
     <tag><text><![CDATA[tag]]></text></tag>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_horizontal_spacing-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_horizontal_spacing-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_horizontal_spacing-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Horizontal spacing</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[LaTeX Commands]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the nut. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mnnm  \(mnnm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\,nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \( mn\thinspace nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn~nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\ nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(mn\>nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp14;nm  \(mn\:nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp14;nm  \(mn\:nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp13;nm  \(mn\;nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp13;nm  \(mn\;nm\)</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\enspace nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\quad nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn  nm  \(mn\qquad nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn␣nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Math spacing]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Dummy text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a+\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a+b\)</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>\(a+{}\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a\ +\)</p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -62,115 +62,118 @@
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
 "></p>]]></text>
-    <feedback format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <feedback format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
+gg== 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
@@ -208,115 +211,118 @@
   <hidden>0</hidden>
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
+gg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/gif;base64,R0lGODlhCwARAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O 
 Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh 
@@ -352,7 +358,7 @@
 KPCfwYMHByJcqHChwYYOISKUSBBAxIoOExbM+E8iw40XLWb0+LCiSZEnRXY0iTAgACH5BAEKAP8A 
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQIAIwAjAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK 
@@ -369,7 +375,7 @@
 XjyAprE9qqzkUqTFmNqPLTFg9p8auR3T313pGd9XeCKi135RzKtlvRJbIcbVL05WoFJPAslXMqIB 
 +Djue+tYiw9hLOc5YzcpjuRdtKxJCQka2ChqhlTC6aidrX3GR4+uIKFJUB9lDS5fX1uW/wDl/wD2 
 zqsTPyW/1H81/9k= 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/gif;base64,R0lGODlhCwARAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O 
@@ -407,115 +413,118 @@
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
 "></p>]]></text>
-    <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHsAAADICAQAAABikFYvAAAYf0lEQVR42u1d6Xrrug0crXbObfv+ 
+T1rHtiT2BwliAEJOco6321b6sseWRgCxDECygx4devQYMWDEhBEzJsw4YMYBBxxxqOcRBxzLKX+Z 
+MWPGVF6b32VAjwF9Obty8pGQkLBhw4oNK5ZyXnHFFZdynnHGGZ/4xAkn/LueJ5xwwifOOOOKKxas 
+WLFhK+8LpHIV0E8ARuwdHVBusjNfO/oL376A4IskfOfQW0zmdf7VHd2VP3v3s7xzF9/DGLw1f771 
+xvz29majSyX3oBSwSFy+6gPQu+oC0H35nDUpf82v7MxVA/CRtL2cW9A9PdPOwWAwkczkpuQ/t/p5 
+o+9TAx3uDuw5YC2wN/QANqeHX0i7vYx9mnaUZugWKt9yamSvTz4BFSaftyF7sHL2GMprh/KKzVz1 
+W7BbNRrKRTz4WGEj+BmuqlwiKa8OOsP3Osd3o+foXqPAb0q7o+c31nMgmzyaZ2vtso5PPtf6QAYk 
+bDv6of+9YS2WOJY365zCHTFW6y0gOwLeV7knhj0AVaryVpM7R/Mo1ClZ4CI5D67HRtqh/4/yitQA 
+X8kFqVD4DvM5YcGIqfw3KuSVrrORLammbcRsRg3Dzn5Yvmf4InMrbbl5AZ1H2hZ6ba/mLHOr5jzk 
+GPRUvXSqMuYzQ9+q1DsYv300CqRvmmHnQEQCkgM9gCx1K++1ylODEDWJKmtvCzYHXk4BY9V6aoKS 
+2JerEW2c2IjjTWnPFJux9DP0/BpRpq08Y/mpL6A7RBGaHd8qd9UbhZTt9HjD5PXV1PHg67CU63TF 
+cVYl/8u9UENTgT2TrNuR3pF0dZRHkFnaCV85vq3Y/w49EnoM7j/Q3PdgYLMZs54EwIhfgbRZyfVD 
+x7e36aDoKhswdX4esiobe/YmajbmTL2xmi1r09XmRKZW7oHG9j9MKKCwORGZKdHwz7UnaacCOQpi 
+o9DUfxZI/P8dUG2IvJsNWERMoxGEBkQb2XMDG2TSrLRngj1VB9Y3UkzVWkYfgIftpSqaEAfDyYWl 
+AxnfsWR9ClsVXP1EX03bF9JW2DMp+AD2wJx33QwGQzlbpY1jbaAPlZpBT5hwwbnAtuot3sQpegR7 
+IG89NwruVcjmUHujNe0AtlmVjbMBYKh/TeWvm3GyE+aSkYtQ8v+mGvSuGAp8si0edm+kPVXIc1Vw 
+aypyCJoax2JTihQ8gBZyZySZ/6+HRBV61QEbFkxYcMWEK2ZcMOFC9yeg9eyLqU0i7b9C2MKtTMaC 
+i5eWMFTkqdE0w98C+Azcy1mvvVV/vDngKP57JOhXTJhwJtByP5mp0QQqibtVvx0HLFMNUUb3tuq0 
+tkIHrQR+DcF7JY9BTyY+05BF7Ylccy0EVL7DAb0Dfa3AN5L1Boz4INgdBvRu5EyBrLsSiqo65cuz 
+WnF8LcB5tHe7j3trgpHeQAdYjReKGeW+lI27YsSIpZIQJbIYcQhMisJW0NlKyo135bltdJH8ZFXu 
+cWKRQlmLKZXkAuAkM5kHodAFuNgdFsEFF0yYcMVQUlMabiOmHWWzYUnvzAormT7ZxUG3EvdZdCtr 
+Bm0dmlpz8ekyztdynx1QQF9xwRlzMXVZ2lnNB9HWsZiM/QxGrbZ8r3CZ2PXAWdmVJ8Mu7KyKPo3k 
+qL7lcPvi1sTmLDjg4iINJSLUlKaIVLKch6QaGxmMhVjsc/m44lJH+OIMnI7vGPaAAUvNsOzYt8SE 
+JxIThU8rZlyrw51q9HYtsOXVG7axBJUdJOhPABZ6BFk5BoL/E9hs0/eVfHBKzuaPhcDQU8PXrFhw 
+Md5HgC9Y6ZUb0lgy5K78oituPXvGFSuG4vm6Mno87AzaKnlr1tI3ldyanoijU+jihYcCm8OsyQBf 
+qqxz2JJGXOstWJexBDksj2yFfSmyvmXL92F3pOQ25FHvLH7YjlC1QUMxbzKaLRO4RLAvbiT1YK7C 
+Ju4W9rXAtaCtOYvseApgi/+wkR5DXjCTtDmfz5Jn+pP5oXxfEuoWmz7iXG+iBd47hyGwV3JaF+O+ 
+rOtaq8xa0OyHM2zVkLWBrA9UOJeuDMiu5Gl9JbZb5nctj2pBnx/oiE+CzcAtP8IGzruvaw0DVyx0 
+21a992Crbi2VHhSVlqvIZ+vVfQQ3EHCGPlfYvdyVwmaZWzehZKuNhf0ttSFKDNqnIlbeI9mG9hpM 
+GWa1zuEmYON6Bi6v6xn2qfHbnXkATCdsSFUBl0b92vFsrTICaStZPVQ1V8iqSVccXNg6lFxNcjTl 
+0Qdj3OYCuyPYKYJtD2VQuGK1VplEkNNNOUdqrvJeMNaHOVU5i4pb0DmItmqvBSxV880pecpK3vKV 
+vjzv/ac1Ol8p9h7LwlnYWmAPRotYn+Tmhf9ZihyVWPZMqlj1rUh7wZBfwdJuOxIsYRSVbaLsOpJx 
+ctewai63vBZVH6CZtA6irYAeC4t/rS5N9WZw41uCFZX2kKV9NjcTweWi+2a+bvjuSN776rPutdx4 
+Dl5GGkYisbHwZ1f6PeANnSUZ1ZL3+U5b2HsSTjc+x2rtuZQUfKdyYuBrHeVqM7ItHgtkCzrBujTx 
+4arsqRq1TaM0q95ciUqBRP1Hwm173bKlHjZqLiBUX1Z3vS4K6EsFrWmqvFvv5K2KLgOkJCI5Jo9k 
+zYATRVsbrOp/BRm7kH1snhmbrd58m3oMmJyk5ZFIfNE3iq6PQEnJb8L2+U+UI+27qP16CP9GsucM 
+f6uwtarZY3RZnpW26IzvbBmL3sh/bZqBsW/eh92yoLes9S2gt/Rgq2mPfmQ4F8wVOEtb1dwGu5zH 
+i1ZsDPs70k7mIulLsL93KEEpdU71yZNJd9RtslbZbjU2cGzv01iYFO+8vMvaTynuA7e1+qmQWCj+ 
+eAiyed/c0wUWfSixwFj/Iyns77ivnxiuP5U30BGgHF/Z+N+avJa8YMI5k85ST0uZVLJ15gi4fuzH 
+1veWuHab5Dx5RERLttJGo+C9MWlG2vsBi5dzZKtFPtFfflfa2tNqe9Za9p0ffddIW6UuPoEoxL3w 
+9LHjOZa1fs23uaKvMm65WJvW2Czeyp0wWti+n8R7Zr3Eo0a2f6SbMNuU8rA4vJ1pixx9/ZqKfyDY 
+UcrJvlnflpsurILdH3QG3jeB8V4FVe/FA1fWbcsObA0um5oPVqbbYO+tCW3XWqyH9h4YutcBACM2 
+d5EI/mOBfQ08CoRjOSvd2ZnfqoEMYe8xLa89PD/DGeP+0fZJUcvOFr7kVuL4msdwS//2X7FDb+zB 
+/n2gj38o++YzBbqqD4CM9PgGKvwdoGZkms8Kzc5BsfmFO/8OsKOGg86MXHtEAZfrXB5/cv0Xgfap 
+5N6sL8BbfZtDru8L2ztHH2R2DXA+mAv0JAnX2t8Otg+HpAzM+RTDtz02MHJuCxnSR/NWsMUkKZBo 
+vlc0F4271SLgtlz1ptLW7+y8AGXHPHQ9bkEm/u29YHfmuw62xiEsqKg6t+Yp5H3Qy7vCVsB2Qp6d 
+fMfA95Tcg9by4ZvBtv7Yt27Zzkir5hZya8xs1fTNYAt0biKxoMcQetQxaUFrC8Kbwlbo7QQJD72H 
+7VWyKs5ua3lnJVfIUYHey9q3juUjmZis7XWSAtL2TrDj2QQ8q5hHOEPuwlDFt3fRyg3vBJsVvHM2 
+vJX217K2cxrYhb0RbOVBdK5Xf1PN/RxykOvaGgWX2Q1vBrul9r0N99AjaVvgCwG/Vsm/2dgW6PuT 
+3DzoyHPbFl3bNviGSi6gI/c13ZS2bQ5t+5JZyZf3gy1WOXJf0mG2r+aRHV/gO1eLC3sn2AjGtk5e 
+HSvweKY2mmicIV9pdL8V7CgW9/3hVtpt07e344tR8beEHQH3vcLTFyq+H6Fpk3/pMH6PQ6sWfROh 
+MeQJHJP3iPKvNZC1lfbbwFb4nXNf8QowgwONIAFZGvdVm/jeCTYbNN8nzDN+/AoMyaSbK9bQfZk4 
+7X1g+5lJ8awPq+QcouyD5Yb/F8D+qkDcNQbNzvFpQQNZuTukEO6CtfnpyUrOqzncgmyTD6vePKVa 
+ZyHmNpxl5+QZDm9m0mzlo13pp10AhReKSgC2OrnCTrG181jWV/ntSN7cV2RN2WyA86oBeYq6tl7K 
+BGadoHV1MjbTd95B2i1POu6u6MQLY4jLknnb5zrf1M9B1LLf+irYbXHP9o+1K3jJIqN54ZvJwM7v 
+tWLFFWcH/GrSDzON8hXS9sW9ljuzoGU9VZZ3R6CzrC9lJdSzkXi0SsR2ewnIRwPn2kfnVFxhyzKy 
+dqWfPKla12e4VtgC3Lbb2074J8Pm5flsgDI4G+5BHwtoH6isBfQVFwJ9pvHNDfd13slrlFy/9rs2 
+fKZRnVfnU48tZCEvNXLGJ04F+iWYU2Lacl+l5HCStvm1HdeHMrJ5UboVCX6xhE9a05iB2z7Vp8P2 
+7XF++c7RWfHZyHqmMS1OSyGfK2xRc/bcOqnqBbCj5mfPkdp12vicoMvdbFXFrwXw2Sj5mSx51G7/ 
+dCX3KyNHtHCOzngNxmzFe0iLNaqKs/1maV88RWxbNV8RrnhS2EOeXVg6FX8tC8aJosuyGAL80zmw 
+q8bgr5W27fDm2bc2p27j8KmmH2sFzdI+VSVX0Ka0a2PDe8I268aGgD2RYJcOntHmW3Yhq804r2uB 
+fa5Kfq5e+9qMbDxG2l/PH9ireExlJHsZx6tZqr9emiX6dTl+b8UfKO0MbV/ecCPaZtV7uZautqGg 
+Nc28VAlrbOZVPL3OpDEH7t3VVNdJPtL2De2Skww52pLhYsIUL21zPAt2opHtF5k8mEzrWLy0X4aw 
+q2ZMIbOUI9DhuH4E7FskIY/sCbx5h27Z8VGzLQsaEOKIIzOv4j7H3mJZv8KB9WVMzybm1p1KPkoE 
+Lp5aOZQ1hHxxZ2zOXqTkLO2xwv4gCYvEP2riIYxZXiwm1VBUXZYFb1d22mIb/mzYMrZl1RRR6nzK 
+mD7WCFw5FJSPBZZKODsu5VLIQ+4u9SvyvUjaYsXnIu1f+FWBz7Cb8Ag7KoTCUqkEG4Z69qyd8wsP 
+/XkOjPmyrOJZ2gJcRjT77JxycATuQUcKvjZ518PH9l64wgtGKeyPAvtXkbYNU3gJZiUJTzW9/HQh 
+iq68tBKp8MKx7WPwuUr7Fz7wF37ho1rvkUJRKelx2nFydIJfkHB1Y/pJY7uVd5RkqvvisS1yBnSZ 
+sizDC6n4iVKPPKpt39kGWV0Z7vNDpW2Be9pICaNj9dQfRdpa3RJF9QHKKQDNNS953RezD38C++tF 
+CJQp88s7eSrBsqLHShup9YZhwDXBVGlfKNuyC1V8OeXy59Jus2ruFuWfxZBlOUtCyQkmk0ZCG6GO 
+S82pL5Uts5L2K25mWfuJ9nL8cQbWhb/hlRMtSaiempNLXnZ3IpeFClpNmYL+NAHp1UDmdVAVbMAE 
+3GNsR8tGerYsx2X2ZIfFO5TYnPpiIjKOzdh6W1r4S+D3ZFd0fem20iHjWQNRrmlZ+71RTn1xyv1p 
+EpCrG9N7I7oB/uewmUCwPJnuEjkZ2ApcQLcLrXvIDLzNs76at/8QB7bXNunpwQNF4Qy7o/ql0kV2 
+PJ+qUfOFvRt51v7xp7B5TdS2WMsMigQoHwa2LdFrgedsHNYJp/LzxYzrHcro0bCtMeNUQ2j+A+we 
+UxKeaDFPqARtvBHlPtFp863rnwL/E9jsrz3oA+bGclv6SHNq3YxQEg5WbobNCebV8WU/gv574Qr/ 
+ZM2ZhiZckj9Wl8WftZgnhVhNLk/u5DHdkglPVXJfxmvTSlHoj9JyE228BEckaOXSw7bx9xds2X1h 
+t8u3tB46j2vJrn4Vh6XdJ9InzM0YqcbfnwFkUXEff9s9LB4sbW+942z6ULkTsdyHWsTz7ZNayjuH 
+kNVba561U+94FGwfivaB21LuRP300VU6fCBq65enqui2ttWuebm/wtLdYPOK9WLI2nItt1981PNQ 
+Ntfi2JvLeJJp8Xky1HBUuv35kkMB7NulWoHsq9RDGI9xeUf89ADbOOl3KWkL9JxveZfFxx9L++vm 
+Z003BvSNKZt3fLaSwFze4fK8TTtszeNauxOiFRB/fHxXyf3EU+1GaPsGOS6z9WqljMSUcUZ9MYDP 
+aPnvJfDSCb8B/adj228Grc023Et2aEBrZzDP4GESwRIJ7KctfxId6afAvwtbNqrBju1WEvjDxWVR 
+R4LQ/Zp2fKLlT1rFTjfu78HSjrcwZjaUaxxM98sN2q3KMh+qaaVtull/P8u6H2zuSGi3OD04/kRl 
+zR0JFrL45pORuTosphHuCPx3whUbe3urfSxe+gDfiCEksHInNjQ5O3N21cmJr5V2u4+vppI2rWzZ 
+E003rrVlkqPvc+i0lh0//UTYdmRPFHmzEVNbLuyJEgnMfDOV8O+m779ly+56fB92Z8Z1lF7anHoG 
+c99Rn+ipgs5q7pkT3kblzvKOYO9NWuKGSa5kfVCOJdNYLCuq8bcn+31GfQ0z6hdJO557OZvSnZox 
+Jv07E6AsNQj9dPK2RHC09PoTxraVd5te6sg+ONg8IdFuQL8SK6qg9bOmlndKLr8Luwu/3wPdFms1 
+QBkaGkH6ES5NRGYjs8WFKHcHHEu7a37ynKjvHlSS8IjZKDdI0jYq04rWp4vMtEa902xzb9id+4iq 
+llFjrC3lMegUgr6Am6G508hPc3jgIbAtVeSXsvcsmValbeF2CtkTLuTZPlFbsuWdgG7p4F2lDVju 
+pJ3Y4JPLI9r0cq8j+GIgt/m0rp8QpZY/Tiy/C1vfuK1dcq51qMHJEbYNmvfo1pUSLGTlyi44N1Je 
+d/Ppu4/v1qR1pVtQa5cTgZ6DhkmuU8vC58mAZglHPOjd/fL3YScwjWCZEzubmklg30THLksyrc/A 
+djPw3c7QZ8C2svaWW02ZJYF9Vi0x2RoEovZ7y4XePfz8CWzrsPz8u2OV9rGq+SGQtYCWCae2gU7l 
+3qaWT4MeSbt3+TQXZy33fWxkvRlPzTMvT4EVf5qf3oftlwCZTPjJObWdzCIWXOIyDkQ5xdQWOhue 
+vAS4h+3LtYdgLHNm3U5lsbTR2am53aTcs2VPhx0HJ23P9+yiMk082ilLF6fkcZfobzbd3AM21zjs 
+1PEjVS0/TFw2OVPGsvZx2Wdjv5UweoGsgTFMLEey4EdTruX5l3Z62mZk7QMVO9P26z3cHg57rOpt 
+Z+JFxdrcaDOX4rxEZcyf8HoJOifPT0/zk1i+dl93j8nHWru0sbfPp2VsR+yJn3Kqc/NkJuaFfrOE 
+HJkuNRX3L98Z9mxgTy6lPBp3ZSc22ASTl13UzcI1t4pm41nA0S6CDwENjDjuuC1NLZUBnyt/wm0Y 
+7dbzi0kldd/NdiaHgu6eObpHfLixrbPxjgay5b5b/oTn2F7hc+g1CEE7k+6ylJ8g7V8BbCb9Obm0 
+HcFpx4S1bMnaGK12nsGt3ccewK78ZRyYTkP8ZQLS2YxqADtyFnbsCt/tzXttWtB2k4ynHCP+2dCE 
+M7ktz5947nup1vpMfnqPG5MAWEngeIurB8o5gs1GLapTc3IZ8WRMENqtwXXeX/4+GYP29INh62QW 
+DVTskl23Yu/LjaRSJD2U71Ljr58O+1+wu5RLYBotGTCQf20JQj+bWhVc3j3D3Iw1188vkXZHZs1P 
+XlIVz4c3ZixnX9QBJNWpO+TetOlPk3bbGm0nOjDxr7KOx7btF8zg+gq633FlL5O2dpCKG9NVjXg+ 
+NZwd5+j7CmVMlgKQx3SPFQM8S/oCg5ZhR8voaiZmgxSZ3sDZ1mLSDGmzUfs9lK9bAW03OX7JkcOV 
+duEfXfLej2upW7RrRPvMSt1VH1Sr9XiJA2PY0Rpm3AG+mQKu30xQfgY4MMmgowUDfqtb9F6wf9Ft 
+aiFItqwZTOohTZhdc7s2iRQ5W8C8rfXLpX2ssD2RaPfnETpBN6Ti2Zw9vRKQXbOtUu8uGfAK2AdE 
+09iEUOyNrLsCm7eXVNpxIyPm2dDf7PJ/LOx2zjXvmanZNTBgc/3Fi4vGxl0K+FZLxtPDlZkuLL0q 
+vNKs7p8oSm4XbVTQPYZmLkd7PLxT4XuwJ7q4bd3we+ll2AO2qtarcVb8EHwF8/a6Di+I0iZzcQ+8 
+3XFLpM1EYM7drlgCrowf6VOYk+/B9p1pdiKMws7wEgakCjohUbGw7SjzsF/uuBT24G6iC878+4QN 
+fZG37tstefqyI2tLHr04Fm9h+/FtQQvEPLpZgWWcW2P2c4r/qY+BYTN0XpdU5NRho4ybQ9mpUfCf 
+KPNLorTe/OynM9p8uDdKmgPZsal1PKmg8wjYaCArdAHdo8eKDSPNsE0h7LcD7mEz6Ij5yIrelXxM 
+wlDNv5QKjuX9Jo9jDEl663TsX/rqtiQssWllVNJ5u2NP2haufySpevEW8N8ANNBhvfG3+Eg3Pt4c 
+rkLbdn5/60g7X/8moG/N1v6vPvo/f4u/4/F/2P9Lx/9h/y8d/wHgOFZSyxibTAAAAABJRU5ErkJg 
+gg== 
 "></p>]]></text></answer>
   </subquestion>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_via_tikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_via_tikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_via_tikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -28,9 +28,10 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="100" format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOCAYAAAD9lDaoAAAAcUlEQVQokcWPMRWAMAxEf0FBLWCh 
-FrpiAy1FE0gACa0EkABDj0eXlpGbknc/yaXn1QBMwKg+FR4OWIALOICoOsoDIAhyxaDXwMaHgja6 
-rgGdT9GCBoF7DfA6FWqAJQeuhi4B+xNgZDpgruRMhvxqS+sNlq0d/BTebEoAAAAASUVORK5CYII= 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOCAYAAAD9lDaoAAAAdUlEQVQokbXP0Q3CMAxF0VM2yApd 
+IStkFmYJI3QFZoERYAQYoXzUrSrUhC+eZMnSvZZtlhRcMUc9UJGCqwGm6Ev0cwyCHPWddfiIbSkh 
+nU8dab3n2ZMK3rj/WlVbQsYLt5Yw7oR0JKSAfxSGgBmX1qGD5dVuPsdrHam6kjRaAAAAAElFTkSu 
+QmCC 
 "></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -67,7 +68,7 @@
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAjAQMAAABFDwNYAAAABlBMVEX///8AAABVwtN+AAAAAXRS 
 TlMAQObYZgAAADdJREFUCNdj+P+/gYGB/QEEM/6A4n9Q/AOBoWr4gcJgDNTHj00vQwUqRjHjHxj/ 
 //8AgoFcJAwAXTsqcaGGnVkAAAAASUVORK5CYII= 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAMAAAANmfvwAAAA0lBMVEX///8AAAABAQECAgIDAwME 
@@ -90,7 +91,7 @@
 E3GuFKUcHHw8O5um1Iq53SeuuOj7B0fKkUdSK04N2wYpV956GL6IXlnpnBulw2deSq06Kh2WNsLk 
 7to7qVVnlh06Uxhs8kudzMKoWFfFz3BdatVQRkVP+OM1j6VWfe7eDRdU4zevvNmzK/1XsLOzvy+C 
 +8fHwxCffP1s7r29m267tW2SWn8B1wBQQBxcN+IAAAAASUVORK5CYII= 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAABHAQMAAABCjOfmAAAABlBMVEX///8AAABVwtN+AAAAAXRS 

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_with_svg-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_with_svg-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_includegraphics_with_svg-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -14,57 +14,55 @@
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEi 
-IHZpZXdCb3g9IjAgMCAzMjcgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci 
-Pgo8ZyBmaWxsPSIjZjk4MDEyIj4KPHBhdGggZD0ibTcyLjQgNzcuNDV2LTI3LjA3YzAtNS42NS0y 
-LjM1LTguNS03LTguNS00LjY3NCAwLTcuMDI0IDIuODI2LTcuMDI0IDguNXYyNy4wN2gtMTMuNzd2 
-LTI3LjA3YzAtNS42NS0yLjMwMS04LjUtNi44OTktOC41LTQuNjc2IDAtNyAyLjgyNi03IDguNXYy 
-Ny4wN2gtMTMuNzh2LTI4LjY4YzAtNS45IDIuMDUxLTEwLjM3IDYuMTUxLTEzLjQgMy41OTktMi43 
-MDEgOC41LTQuMDc2IDE0LjY1LTQuMDc2IDYuMjI1IDAgMTAuODIgMS42IDEzLjc3IDQuODAxIDIu 
-NTQ5LTMuMjAxIDcuMTc0LTQuODAxIDEzLjktNC44MDEgNi4xNSAwIDExLjAyIDEuMzUgMTQuNjIg 
-NC4wNzYgNC4xIDMuMDI1IDYuMTUgNy41IDYuMTUgMTMuNHYyOC42OHoiLz4KPHBhdGggZD0ibTEz 
-Ni4xIDIyLjc1LTMuMDk0LTIuMTE3LTcuNDkyIDEyLjA1Yy01LjM3NS0xLjc5Mi0xMC41OS0xLjc5 
-Mi0xMS41Ni0xLjc5Mi0xNy4xIDAtMjYuNTUgMTAuNTktMjYuNTUgMjQuNDMgMCA2LjM1MSAyLjQ0 
-MyAxNC45OCAxMS43MyAxOS44N2wtNy4zMjggMTEuODkgMy4wOTUgMS45NTQgNy42NTMtMTIuMjFj 
-NS4yMTIgMS43OTIgMTAuMSAxLjc5MiAxMS40IDEuNzkyIDE3LjQzIDAgMjYuNTUtMTAuNTkgMjYu 
-NTUtMjMuMjkgMC03Ljk4LTMuNDIxLTE2LjQ1LTExLjczLTIwLjg1em0tMzMuNzEgNDcuMjNjLTMu 
-MDk1LTMuNzQ2LTMuMDk1LTkuNjA5LTMuMDk1LTE0LjgyIDAtNy44MTcgMC0yMC41MiAxNC42Ni0y 
-MC41MiAzLjA5NSAwIDYuMTg5IDAuNjUxIDguNzk0IDIuNDQzem0yMy4xMy0zMC4yOWMyLjkzMiA0 
-LjA3MiAzLjA5NSA5Ljc3MiAzLjA5NSAxNS40NyAwIDcuODE2IDAgMTkuNzEtMTQuNjYgMTkuNzEt 
-MS4zMDIgMC01LjIxMSAwLTguNjMxLTIuMjh6Ii8+CjxwYXRoIGQ9Im0xNjUuNiA3OC41NWMtNi45 
-NzUgMC0xMi43NS0yLjIyNC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYt 
-MTcuMTIgMC02Ljk3NSAyLjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYu 
-NjUgMTcuMy02LjY1czEyLjc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1 
-IDYuODk5IDE3LjEgMCA2Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAu 
-MzcgNi42NS0xNy4zNSA2LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43 
-NzUtMS43NzUgMi41MjUtMi42NzYgNS41LTIuNjc2IDguOTc1IDAgMy40NzUgMC44MjU2IDYuNCAy 
-LjUgOC43NzQgMS45MDEgMi43MjUgNC41MjYgNC4wNzYgNy44NSA0LjA3NiAzLjMyNiAwIDUuOTI2 
-LTEuMzUgNy44NS00LjA3NiAxLjc1LTIuNCAyLjYyNS01LjMyNiAyLjYyNS04Ljc3NCAwLTMuNDc1 
-LTAuODI1Ni02LjQtMi41LTguNzc0LTEuOTI0LTIuNjUxLTQuNTc2LTMuOTc1LTcuOTc1LTMuOTc1 
-eiIvPgo8cGF0aCBkPSJtMjI3LjIgNzcuMzJ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUx 
-LTYuMjc2IDMuOTUxLTIuNjI1IDAuODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEu 
-ODUtMi4yNS0xNS44Mi02Ljc3Ni0zLjk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYu 
-NTc0IDEuOTUxLTEyLjA3IDUuODUtMTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1 
-IDcuMzAxIDAgMTEuNTggMi43NSAxNC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVj 
-MC0yLjQ1MS0xLjE3Ni00LjgyNi0zLjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0z 
-LjM3NS0zLjUyNSAwLTYuMzI2IDEuNDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUu 
-Njc2LTIuNzAxIDkuMzUgMCAzLjYyNSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUx 
-IDQuODUgNC40MjQgOC4zNzUgNC40MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIg 
-My43NS00LjA3NCAzLjc1LTYuMjI1eiIvPgo8cGF0aCBkPSJtMjQ0LjggMGgxMy44djc3LjMyaC0x 
-My44eiIvPgo8cGF0aCBkPSJtMzI3IDczLjgzaC0yLjc3NGMtMi43NzIgMTUuNTctNS4zMjQgMjMt 
-MjQuMjkgMjNoLTE0LjY0Yy01LjIxMiAwLTUuNDM1LTAuNzEyLTUuNDM1LTQuMDd2LTI3LjA3aDku 
-ODcyYzEwLjc2IDAgMTEuOTggMy4yNTcgMTEuOTggMTEuOTFoMi43NzN2LTI2Ljg3aC0yLjc3M2Mw 
-IDguNjQ5LTEuMjIgMTEuOC0xMS45OCAxMS44aC05Ljg3MnYtMjQuMzJjMC0zLjM1OCAwLjIyMjct 
-NC4wNzIgNS40MzUtNC4wNzJoMTQuMmMxNi45NyAwIDE5Ljg1IDUuNTk4IDIxLjYzIDE5Ljc0aDIu 
-NzczbC0zLjEwNS0yMi44aC02Mi4xMXYzLjA1M2gyLjU1MmM4LjUzOSAwIDguNzYyIDEuMTIgOC43 
-NjIgNC43ODN2NTMuMTJjMCAzLjY2My0wLjIyMTYgNC43ODItOC43NjIgNC43ODJoLTIuNTUydjMu 
-MTU1aDYzLjY3bDQuNjU5LTI2LjE1eiIvPgo8L2c+CjxwYXRoIGQ9Im00My42NyAyOS4yMiAxMy42 
-OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQtNTcuMTcgMTcuNWwwLjIw 
-MDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0MyA1LjktMC4wNzQgMTIu 
-MjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1MDMtNS4yNSAwLjMwMS0x 
-MS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAuMTAwMy0xMi4wMmwxNC4x 
-IDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQyNCAyNS4yNy0wLjAyNDcg 
-MzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1eiIgZmlsbD0iIzMzMyIv 
-Pgo8L3N2Zz4K 
+IHZpZXdCb3g9IjAgMCAyOTkuNyA5OS45NzciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw 
+L3N2ZyI+CjxnIGZpbGw9IiNmOTgwMTIiPgo8cGF0aCBkPSJtMTA4Ljc5IDIyLjc1Ni0zLjA5NC0y 
+LjExNy03LjQ5MiAxMi4wNWMtNS4zNzUtMS43OTItMTAuNTktMS43OTItMTEuNTYtMS43OTItMTcu 
+MSAwLTI2LjU1IDEwLjU5LTI2LjU1IDI0LjQzIDAgNi4zNTEgMi40NDMgMTQuOTggMTEuNzMgMTku 
+ODdsLTcuMzI4IDExLjg5IDMuMDk1IDEuOTU0IDcuNjUzLTEyLjIxYzUuMjEyIDEuNzkyIDEwLjEg 
+MS43OTIgMTEuNCAxLjc5MiAxNy40MyAwIDI2LjU1LTEwLjU5IDI2LjU1LTIzLjI5IDAtNy45OC0z 
+LjQyMS0xNi40NS0xMS43My0yMC44NXptLTMzLjcxIDQ3LjIzYy0zLjA5NS0zLjc0Ni0zLjA5NS05 
+LjYwOS0zLjA5NS0xNC44MiAwLTcuODE3IDAtMjAuNTIgMTQuNjYtMjAuNTIgMy4wOTUgMCA2LjE4 
+OSAwLjY1MSA4Ljc5NCAyLjQ0M3ptMjMuMTMtMzAuMjljMi45MzIgNC4wNzIgMy4wOTUgOS43NzIg 
+My4wOTUgMTUuNDcgMCA3LjgxNiAwIDE5LjcxLTE0LjY2IDE5LjcxLTEuMzAyIDAtNS4yMTEgMC04 
+LjYzMS0yLjI4eiIvPgo8cGF0aCBkPSJtMTM4LjI5IDc4LjU1NmMtNi45NzUgMC0xMi43NS0yLjIy 
+NC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYtMTcuMTIgMC02Ljk3NSAy 
+LjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYuNjUgMTcuMy02LjY1czEy 
+Ljc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1IDYuODk5IDE3LjEgMCA2 
+Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAuMzcgNi42NS0xNy4zNSA2 
+LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43NzUtMS43NzUgMi41MjUt 
+Mi42NzYgNS41LTIuNjc2IDguOTc1czAuODI1NiA2LjQgMi41IDguNzc0YzEuOTAxIDIuNzI1IDQu 
+NTI2IDQuMDc2IDcuODUgNC4wNzYgMy4zMjYgMCA1LjkyNi0xLjM1IDcuODUtNC4wNzYgMS43NS0y 
+LjQgMi42MjUtNS4zMjYgMi42MjUtOC43NzQgMC0zLjQ3NS0wLjgyNTYtNi40LTIuNS04Ljc3NC0x 
+LjkyNC0yLjY1MS00LjU3Ni0zLjk3NS03Ljk3NS0zLjk3NXoiLz4KPHBhdGggZD0ibTE5OS44OSA3 
+Ny4zMjZ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUxLTYuMjc2IDMuOTUxLTIuNjI1IDAu 
+ODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEuODUtMi4yNS0xNS44Mi02Ljc3Ni0z 
+Ljk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYuNTc0IDEuOTUxLTEyLjA3IDUuODUt 
+MTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1IDcuMzAxIDAgMTEuNTggMi43NSAx 
+NC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVjMC0yLjQ1MS0xLjE3Ni00LjgyNi0z 
+LjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0zLjM3NS0zLjUyNSAwLTYuMzI2IDEu 
+NDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUuNjc2LTIuNzAxIDkuMzUgMCAzLjYy 
+NSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUxIDQuODUgNC40MjQgOC4zNzUgNC40 
+MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIgMy43NS00LjA3NCAzLjc1LTYuMjI1 
+eiIvPgo8cGF0aCBkPSJtMjE3LjQ5IDZlLTNoMTMuOHY3Ny4zMmgtMTMuOHoiLz4KPHBhdGggZD0i 
+bTI5OS42OSA3My44MzZoLTIuNzc0Yy0yLjc3MiAxNS41Ny01LjMyNCAyMy0yNC4yOSAyM2gtMTQu 
+NjRjLTUuMjEyIDAtNS40MzUtMC43MTItNS40MzUtNC4wN3YtMjcuMDdoOS44NzJjMTAuNzYgMCAx 
+MS45OCAzLjI1NyAxMS45OCAxMS45MWgyLjc3M3YtMjYuODdoLTIuNzczYzAgOC42NDktMS4yMiAx 
+MS44LTExLjk4IDExLjhoLTkuODcydi0yNC4zMmMwLTMuMzU4IDAuMjIyNy00LjA3MiA1LjQzNS00 
+LjA3MmgxNC4yYzE2Ljk3IDAgMTkuODUgNS41OTggMjEuNjMgMTkuNzRoMi43NzNsLTMuMTA1LTIy 
+LjhoLTYyLjExdjMuMDUzaDIuNTUyYzguNTM5IDAgOC43NjIgMS4xMiA4Ljc2MiA0Ljc4M3Y1My4x 
+MmMwIDMuNjYzLTAuMjIxNiA0Ljc4Mi04Ljc2MiA0Ljc4MmgtMi41NTJ2My4xNTVoNjMuNjdsNC42 
+NTktMjYuMTV6Ii8+CjxwYXRoIGQ9Im01OC4zNzIgNDguNDMzdjI5LjA3aC0xMy43N3YtMjcuMDdj 
+MC01LjY1LTIuMzAxLTguNS02Ljg5OS04LjUtNC42NzYgMC03IDIuODI2LTcgOC41djI3LjA3aC0x 
+My43OHYtMjguNjhjMC01LjkgMi4wNTEtMTAuMzcgNi4xNTEtMTMuNCAzLjU5OS0yLjcwMSA4LjUt 
+NC4wNzYgMTQuNjUtNC4wNzYgNi4yMjUgMCAxMC4wNDYgMS42NzcxIDEzLjc3IDQuODAxIDMuNTk1 
+NyAzLjAxNiA2Ljk2MzEgNy4wMDA4IDYuODc4IDEyLjI4NXoiLz4KPC9nPgo8cGF0aCBkPSJtNDMu 
+NjY2IDI5LjI3MyAxMy42OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQt 
+NTcuMTcgMTcuNWwwLjIwMDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0 
+MyA1LjktMC4wNzQgMTIuMjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1 
+MDMtNS4yNSAwLjMwMS0xMS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAu 
+MTAwMy0xMi4wMmwxNC4xIDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQy 
+NCAyNS4yNy0wLjAyNDcgMzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1 
+eiIgZmlsbD0iIzMzMyIvPgo8L3N2Zz4K 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -143,57 +141,55 @@
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><IMG width=81 SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEi 
-IHZpZXdCb3g9IjAgMCAzMjcgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci 
-Pgo8ZyBmaWxsPSIjZjk4MDEyIj4KPHBhdGggZD0ibTcyLjQgNzcuNDV2LTI3LjA3YzAtNS42NS0y 
-LjM1LTguNS03LTguNS00LjY3NCAwLTcuMDI0IDIuODI2LTcuMDI0IDguNXYyNy4wN2gtMTMuNzd2 
-LTI3LjA3YzAtNS42NS0yLjMwMS04LjUtNi44OTktOC41LTQuNjc2IDAtNyAyLjgyNi03IDguNXYy 
-Ny4wN2gtMTMuNzh2LTI4LjY4YzAtNS45IDIuMDUxLTEwLjM3IDYuMTUxLTEzLjQgMy41OTktMi43 
-MDEgOC41LTQuMDc2IDE0LjY1LTQuMDc2IDYuMjI1IDAgMTAuODIgMS42IDEzLjc3IDQuODAxIDIu 
-NTQ5LTMuMjAxIDcuMTc0LTQuODAxIDEzLjktNC44MDEgNi4xNSAwIDExLjAyIDEuMzUgMTQuNjIg 
-NC4wNzYgNC4xIDMuMDI1IDYuMTUgNy41IDYuMTUgMTMuNHYyOC42OHoiLz4KPHBhdGggZD0ibTEz 
-Ni4xIDIyLjc1LTMuMDk0LTIuMTE3LTcuNDkyIDEyLjA1Yy01LjM3NS0xLjc5Mi0xMC41OS0xLjc5 
-Mi0xMS41Ni0xLjc5Mi0xNy4xIDAtMjYuNTUgMTAuNTktMjYuNTUgMjQuNDMgMCA2LjM1MSAyLjQ0 
-MyAxNC45OCAxMS43MyAxOS44N2wtNy4zMjggMTEuODkgMy4wOTUgMS45NTQgNy42NTMtMTIuMjFj 
-NS4yMTIgMS43OTIgMTAuMSAxLjc5MiAxMS40IDEuNzkyIDE3LjQzIDAgMjYuNTUtMTAuNTkgMjYu 
-NTUtMjMuMjkgMC03Ljk4LTMuNDIxLTE2LjQ1LTExLjczLTIwLjg1em0tMzMuNzEgNDcuMjNjLTMu 
-MDk1LTMuNzQ2LTMuMDk1LTkuNjA5LTMuMDk1LTE0LjgyIDAtNy44MTcgMC0yMC41MiAxNC42Ni0y 
-MC41MiAzLjA5NSAwIDYuMTg5IDAuNjUxIDguNzk0IDIuNDQzem0yMy4xMy0zMC4yOWMyLjkzMiA0 
-LjA3MiAzLjA5NSA5Ljc3MiAzLjA5NSAxNS40NyAwIDcuODE2IDAgMTkuNzEtMTQuNjYgMTkuNzEt 
-MS4zMDIgMC01LjIxMSAwLTguNjMxLTIuMjh6Ii8+CjxwYXRoIGQ9Im0xNjUuNiA3OC41NWMtNi45 
-NzUgMC0xMi43NS0yLjIyNC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYt 
-MTcuMTIgMC02Ljk3NSAyLjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYu 
-NjUgMTcuMy02LjY1czEyLjc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1 
-IDYuODk5IDE3LjEgMCA2Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAu 
-MzcgNi42NS0xNy4zNSA2LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43 
-NzUtMS43NzUgMi41MjUtMi42NzYgNS41LTIuNjc2IDguOTc1IDAgMy40NzUgMC44MjU2IDYuNCAy 
-LjUgOC43NzQgMS45MDEgMi43MjUgNC41MjYgNC4wNzYgNy44NSA0LjA3NiAzLjMyNiAwIDUuOTI2 
-LTEuMzUgNy44NS00LjA3NiAxLjc1LTIuNCAyLjYyNS01LjMyNiAyLjYyNS04Ljc3NCAwLTMuNDc1 
-LTAuODI1Ni02LjQtMi41LTguNzc0LTEuOTI0LTIuNjUxLTQuNTc2LTMuOTc1LTcuOTc1LTMuOTc1 
-eiIvPgo8cGF0aCBkPSJtMjI3LjIgNzcuMzJ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUx 
-LTYuMjc2IDMuOTUxLTIuNjI1IDAuODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEu 
-ODUtMi4yNS0xNS44Mi02Ljc3Ni0zLjk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYu 
-NTc0IDEuOTUxLTEyLjA3IDUuODUtMTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1 
-IDcuMzAxIDAgMTEuNTggMi43NSAxNC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVj 
-MC0yLjQ1MS0xLjE3Ni00LjgyNi0zLjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0z 
-LjM3NS0zLjUyNSAwLTYuMzI2IDEuNDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUu 
-Njc2LTIuNzAxIDkuMzUgMCAzLjYyNSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUx 
-IDQuODUgNC40MjQgOC4zNzUgNC40MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIg 
-My43NS00LjA3NCAzLjc1LTYuMjI1eiIvPgo8cGF0aCBkPSJtMjQ0LjggMGgxMy44djc3LjMyaC0x 
-My44eiIvPgo8cGF0aCBkPSJtMzI3IDczLjgzaC0yLjc3NGMtMi43NzIgMTUuNTctNS4zMjQgMjMt 
-MjQuMjkgMjNoLTE0LjY0Yy01LjIxMiAwLTUuNDM1LTAuNzEyLTUuNDM1LTQuMDd2LTI3LjA3aDku 
-ODcyYzEwLjc2IDAgMTEuOTggMy4yNTcgMTEuOTggMTEuOTFoMi43NzN2LTI2Ljg3aC0yLjc3M2Mw 
-IDguNjQ5LTEuMjIgMTEuOC0xMS45OCAxMS44aC05Ljg3MnYtMjQuMzJjMC0zLjM1OCAwLjIyMjct 
-NC4wNzIgNS40MzUtNC4wNzJoMTQuMmMxNi45NyAwIDE5Ljg1IDUuNTk4IDIxLjYzIDE5Ljc0aDIu 
-NzczbC0zLjEwNS0yMi44aC02Mi4xMXYzLjA1M2gyLjU1MmM4LjUzOSAwIDguNzYyIDEuMTIgOC43 
-NjIgNC43ODN2NTMuMTJjMCAzLjY2My0wLjIyMTYgNC43ODItOC43NjIgNC43ODJoLTIuNTUydjMu 
-MTU1aDYzLjY3bDQuNjU5LTI2LjE1eiIvPgo8L2c+CjxwYXRoIGQ9Im00My42NyAyOS4yMiAxMy42 
-OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQtNTcuMTcgMTcuNWwwLjIw 
-MDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0MyA1LjktMC4wNzQgMTIu 
-MjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1MDMtNS4yNSAwLjMwMS0x 
-MS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAuMTAwMy0xMi4wMmwxNC4x 
-IDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQyNCAyNS4yNy0wLjAyNDcg 
-MzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1eiIgZmlsbD0iIzMzMyIv 
-Pgo8L3N2Zz4K 
+IHZpZXdCb3g9IjAgMCAyOTkuNyA5OS45NzciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw 
+L3N2ZyI+CjxnIGZpbGw9IiNmOTgwMTIiPgo8cGF0aCBkPSJtMTA4Ljc5IDIyLjc1Ni0zLjA5NC0y 
+LjExNy03LjQ5MiAxMi4wNWMtNS4zNzUtMS43OTItMTAuNTktMS43OTItMTEuNTYtMS43OTItMTcu 
+MSAwLTI2LjU1IDEwLjU5LTI2LjU1IDI0LjQzIDAgNi4zNTEgMi40NDMgMTQuOTggMTEuNzMgMTku 
+ODdsLTcuMzI4IDExLjg5IDMuMDk1IDEuOTU0IDcuNjUzLTEyLjIxYzUuMjEyIDEuNzkyIDEwLjEg 
+MS43OTIgMTEuNCAxLjc5MiAxNy40MyAwIDI2LjU1LTEwLjU5IDI2LjU1LTIzLjI5IDAtNy45OC0z 
+LjQyMS0xNi40NS0xMS43My0yMC44NXptLTMzLjcxIDQ3LjIzYy0zLjA5NS0zLjc0Ni0zLjA5NS05 
+LjYwOS0zLjA5NS0xNC44MiAwLTcuODE3IDAtMjAuNTIgMTQuNjYtMjAuNTIgMy4wOTUgMCA2LjE4 
+OSAwLjY1MSA4Ljc5NCAyLjQ0M3ptMjMuMTMtMzAuMjljMi45MzIgNC4wNzIgMy4wOTUgOS43NzIg 
+My4wOTUgMTUuNDcgMCA3LjgxNiAwIDE5LjcxLTE0LjY2IDE5LjcxLTEuMzAyIDAtNS4yMTEgMC04 
+LjYzMS0yLjI4eiIvPgo8cGF0aCBkPSJtMTM4LjI5IDc4LjU1NmMtNi45NzUgMC0xMi43NS0yLjIy 
+NC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYtMTcuMTIgMC02Ljk3NSAy 
+LjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYuNjUgMTcuMy02LjY1czEy 
+Ljc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1IDYuODk5IDE3LjEgMCA2 
+Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAuMzcgNi42NS0xNy4zNSA2 
+LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43NzUtMS43NzUgMi41MjUt 
+Mi42NzYgNS41LTIuNjc2IDguOTc1czAuODI1NiA2LjQgMi41IDguNzc0YzEuOTAxIDIuNzI1IDQu 
+NTI2IDQuMDc2IDcuODUgNC4wNzYgMy4zMjYgMCA1LjkyNi0xLjM1IDcuODUtNC4wNzYgMS43NS0y 
+LjQgMi42MjUtNS4zMjYgMi42MjUtOC43NzQgMC0zLjQ3NS0wLjgyNTYtNi40LTIuNS04Ljc3NC0x 
+LjkyNC0yLjY1MS00LjU3Ni0zLjk3NS03Ljk3NS0zLjk3NXoiLz4KPHBhdGggZD0ibTE5OS44OSA3 
+Ny4zMjZ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUxLTYuMjc2IDMuOTUxLTIuNjI1IDAu 
+ODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEuODUtMi4yNS0xNS44Mi02Ljc3Ni0z 
+Ljk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYuNTc0IDEuOTUxLTEyLjA3IDUuODUt 
+MTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1IDcuMzAxIDAgMTEuNTggMi43NSAx 
+NC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVjMC0yLjQ1MS0xLjE3Ni00LjgyNi0z 
+LjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0zLjM3NS0zLjUyNSAwLTYuMzI2IDEu 
+NDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUuNjc2LTIuNzAxIDkuMzUgMCAzLjYy 
+NSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUxIDQuODUgNC40MjQgOC4zNzUgNC40 
+MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIgMy43NS00LjA3NCAzLjc1LTYuMjI1 
+eiIvPgo8cGF0aCBkPSJtMjE3LjQ5IDZlLTNoMTMuOHY3Ny4zMmgtMTMuOHoiLz4KPHBhdGggZD0i 
+bTI5OS42OSA3My44MzZoLTIuNzc0Yy0yLjc3MiAxNS41Ny01LjMyNCAyMy0yNC4yOSAyM2gtMTQu 
+NjRjLTUuMjEyIDAtNS40MzUtMC43MTItNS40MzUtNC4wN3YtMjcuMDdoOS44NzJjMTAuNzYgMCAx 
+MS45OCAzLjI1NyAxMS45OCAxMS45MWgyLjc3M3YtMjYuODdoLTIuNzczYzAgOC42NDktMS4yMiAx 
+MS44LTExLjk4IDExLjhoLTkuODcydi0yNC4zMmMwLTMuMzU4IDAuMjIyNy00LjA3MiA1LjQzNS00 
+LjA3MmgxNC4yYzE2Ljk3IDAgMTkuODUgNS41OTggMjEuNjMgMTkuNzRoMi43NzNsLTMuMTA1LTIy 
+LjhoLTYyLjExdjMuMDUzaDIuNTUyYzguNTM5IDAgOC43NjIgMS4xMiA4Ljc2MiA0Ljc4M3Y1My4x 
+MmMwIDMuNjYzLTAuMjIxNiA0Ljc4Mi04Ljc2MiA0Ljc4MmgtMi41NTJ2My4xNTVoNjMuNjdsNC42 
+NTktMjYuMTV6Ii8+CjxwYXRoIGQ9Im01OC4zNzIgNDguNDMzdjI5LjA3aC0xMy43N3YtMjcuMDdj 
+MC01LjY1LTIuMzAxLTguNS02Ljg5OS04LjUtNC42NzYgMC03IDIuODI2LTcgOC41djI3LjA3aC0x 
+My43OHYtMjguNjhjMC01LjkgMi4wNTEtMTAuMzcgNi4xNTEtMTMuNCAzLjU5OS0yLjcwMSA4LjUt 
+NC4wNzYgMTQuNjUtNC4wNzYgNi4yMjUgMCAxMC4wNDYgMS42NzcxIDEzLjc3IDQuODAxIDMuNTk1 
+NyAzLjAxNiA2Ljk2MzEgNy4wMDA4IDYuODc4IDEyLjI4NXoiLz4KPC9nPgo8cGF0aCBkPSJtNDMu 
+NjY2IDI5LjI3MyAxMy42OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQt 
+NTcuMTcgMTcuNWwwLjIwMDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0 
+MyA1LjktMC4wNzQgMTIuMjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1 
+MDMtNS4yNSAwLjMwMS0xMS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAu 
+MTAwMy0xMi4wMmwxNC4xIDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQy 
+NCAyNS4yNy0wLjAyNDcgMzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1 
+eiIgZmlsbD0iIzMzMyIvPgo8L3N2Zz4K 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_macros-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_macros-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_macros-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/LaTeX Macros</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[LaTeX Macros]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>The following commands should not be placed in items: <BR/> and <BR/>Find the \(\rm\LaTeX\) logo </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>\(\rm\TeX\) and \(\rm\LaTeX\)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(tilde) and #</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>$ and &</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>& and §</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>{ and }</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(space) and (relax)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(space) and (thinspace)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>… and …</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>€ and €</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(\rm\TeX\) and \(\rm\LaTeX\)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>_ and \</p>]]></text>
-  </answer>
-</question>
- 
-</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_matching-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_matching-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_matching-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -21,20 +21,20 @@
   <hidden>0</hidden>
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p>A</p>]]></text>
+    <text><![CDATA[<p>A<BR/>B</p>]]></text>
     <answer format="html"><text><![CDATA[<p>1</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer format="html"><text><![CDATA[<p>2</p>]]></text></answer>
+    <answer format="html"><text><![CDATA[<p>very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long text</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
-    <text><![CDATA[<p>C</p>]]></text>
-    <answer format="html"><text><![CDATA[<p>3</p>]]></text></answer>
+    <text><![CDATA[<p>very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long text</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>1</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer format="html"><text><![CDATA[<p>4</p>]]></text></answer>
+    <answer format="html"><text><![CDATA[<p>3</p>]]></text></answer>
   </subquestion>
 </question>
 <question type="matching">
@@ -50,20 +50,24 @@
   <hidden>0</hidden>
   <shuffleanswers>0</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-    <answer><text>1</text></answer>
+    <text><![CDATA[<p>A<BR/>B</p>]]></text>
+    <answer format="html"><text><![CDATA[1]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer><text>2</text></answer>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>C</p>]]></text>
-    <answer><text>3</text></answer>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
   </subquestion>
   <subquestion format="html">
+    <text><![CDATA[<p>D</p>]]></text>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
     <text></text>
-    <answer><text>4</text></answer>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
   </subquestion>
 </question>
  

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_math-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_math-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_math-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Derivative]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\frac {\partial ^{3} f}{\partial ^{3} x}(x).\] </p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\frac {\partial ^{3} f}{\partial ^{3} x}(x).\]</CENTER> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -23,13 +23,13 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(f’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f'(x)\)</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(f’’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f''(x)\)</p>]]></text>
   </answer>
   <answer fraction="100" format="html">
-    <text><![CDATA[<p>\(f’’’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f'''(x)\)</p>]]></text>
   </answer>
 </question>
 <question type="cloze">
@@ -37,7 +37,7 @@
     <text><![CDATA[Other derivatives]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\frac {\partial ^{2} g}{\partial ^{2} t}(t).\] {1:MULTICHOICE_VS:\(g’(t)\)~=\(g’’(t)\)~\(g’’’(t)\)}</p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\frac {\partial ^{2} g}{\partial ^{2} t}(t).\]</CENTER> {1:MULTICHOICE_VS:\(g'(t)\)~=\(g''(t)\)~\(g'''(t)\)}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_mathenv-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_mathenv-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_mathenv-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Multiple Choice]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\(\begin {array}{c}$1\\2\end {array}\) </p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/>\(\begin {array}{c}$1\\2\end {array}\) </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -30,7 +30,7 @@
   </answer>
   <answer fraction="100" format="html">
     <text><![CDATA[<p>7</p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>\[$\sqrt {25}\]</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p><CENTER>\[$\sqrt {25}\]</CENTER></p>]]></text></feedback>
   </answer>
   <answer fraction="10" format="html">
     <text><![CDATA[<p>8</p>]]></text>
@@ -41,7 +41,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\(\begin {array}{c}$1\\2\end {array}\) {1:MULTICHOICE_VS:=\($\sqrt {25\}\)~6~=7#\[$\sqrt {25\}\]~%10%8}</p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/>\(\begin {array}{c}$1\\2\end {array}\) {1:MULTICHOICE_VS:=\($\sqrt {25\}\)~6~=7#<CENTER>\[$\sqrt {25\}\]</CENTER>~%10%8}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_minted-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_minted-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_minted-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -58,7 +58,7 @@
     <feedback format="html"><text><![CDATA[<p>No. This is Perl code.</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">1</span><span style="color: #204a87; font-weight: bold">long</span> <span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">calling_function</span><span style="color: #000000; font-weight: bold">()</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><span style="color: #000000; font-weight: bold">{</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span>    <span style="color: #204a87; font-weight: bold">long</span> <span style="color: #000000">test1</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span><mark>    <span style="color: #204a87; font-weight: bold">register</span> <span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">te!
 st2</span><span style="color: #000000; font-weight: bold">;</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">8</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">9</span>    <span style="color: #000000">test1</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">10</span>    <span style="color: #204a87; font-weight: bold">if</span> <span style="color: #000000; font-weight: bold">(</span><span style="color: #000000">test1</span> <span style="color: #ce5c00; font-weight: bold">></span> <span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">)</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">11</span>          <span style="color: #000000">test2</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">12</span>    <span style="color: #204a87; font-weight: bold">else</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">13</span>          <span style="color: #000000">test2</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color:!
  #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">14</span>    <span style="color: #204a87; font-weight: bold">return</span> <span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">15</span><span style="color: #000000; font-weight: bold">}</span><BR/></CODE></PRE></p>]]></text>
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">1</span><span style="color: #204a87; font-weight: bold">long</span><span style="color: #f8f8f8"> </span><span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">calling_function</span><span style="color: #000000; font-weight: bold">()</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><span style="color: #000000; font-weight: bold">{</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">long</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test1</span><span style="color: #000000; font-weight: bold">;!
 </span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span><mark><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">register</span><span style="color: #f8f8f8"> </span><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">8</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">9</span><span style="color: #f8f8f8">    </span><span style="color: #000000">test1</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">10</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">if</span><span style="color: #f8f8f8"> </span><span style="color: #000000; font-weight: bold">(</span><span style="color: #000000">test1</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">></span><span style="color: #f8f8f8"> </span><span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">)</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">11</span><span style="color!
 : #f8f8f8">          </span><span style="color: #000000">test2</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">12</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">else</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">13</span><span style="color: #f8f8f8">          </span><span style="color: #000000">test2</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">14</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">return</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">15</span><span style="color: #000000; font-weight: bold">}</span><span style="color: #f8f8f8"></span><BR/></CODE></PRE></p>]]></text>
     <feedback format="html"><text><![CDATA[<p>No. This is C code.</p>]]></text></feedback>
   </answer>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_multi-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_multi-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_multi-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -37,6 +37,222 @@
     <text><![CDATA[Multiple Choice]]></text>
   </name>
   <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>ABCD</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>ABCD</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>123</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>123</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>iii</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>iii</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>IIII</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>IIII</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
     <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -47,7 +263,7 @@
   <hidden>0</hidden>
   <single>false</single>
   <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
+  <answernumbering>none</answernumbering>
   <answer fraction="70" format="html">
     <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
   </answer>
@@ -61,7 +277,7 @@
   <answer fraction="-70" format="html">
     <text><![CDATA[<p>8</p>]]></text>
   </answer>
-  <answer fraction="-20" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p><CODE>nothing</CODE></p>]]></text>
   </answer>
 </question>
@@ -80,7 +296,7 @@
   <hidden>0</hidden>
   <single>true</single>
   <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
+  <answernumbering>none</answernumbering>
   <answer fraction="100" format="html">
     <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
   </answer>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_numerical-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_numerical-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_numerical-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Numerical</text>
+  </category>
+</question>
+ 
+<question type="numerical">
+  <name format="html">
+    <text><![CDATA[Numerical]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <answer fraction="10" format="plain_text">
+    <text>0</text>
+    <tolerance>0.001</tolerance>
+    <feedback format="html"><text><![CDATA[<p>study difference between \(<\) and \(\leq \)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>1</text>
+    <tolerance>0.01</tolerance>
+    <feedback format="html"><text><![CDATA[<p>good!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>2</text>
+    <tolerance>0.1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>OK</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>3</text>
+    <tolerance>0</tolerance>
+    <feedback format="html"><text><![CDATA[<p>No!</p>]]></text></feedback>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_paragraph_breaks-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_paragraph_breaks-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_paragraph_breaks-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -34,7 +34,7 @@
     <text><![CDATA[Close-multi]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A {1:MULTICHOICE_VS:=B <BR/>C~D}</p>]]></text>
+    <text><![CDATA[<p><CENTER>A <BR/>Z</CENTER> {1:MULTICHOICE_VS:=B <BR/>C~D}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>
@@ -45,7 +45,7 @@
     <text><![CDATA[Essay]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A </p>]]></text>
+    <text><![CDATA[<p><CENTER>A <BR/>Z</CENTER> </p>]]></text>
   </questiontext>
   <defaultgrade>1</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_point_points-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_point_points-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_point_points-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/Ifnum</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>1.0</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>.5</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>3.2</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
- 
-</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_points-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_points-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_points-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Ifnum</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>.5</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>3.2</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[The question]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>{3:SHORTANSWER:=abc}{1:SHORTANSWER:=abc}{1:NUMERICAL:=0:0}{2:MULTICHOICE_S:=A~B}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_punctuation_and_symbols-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_punctuation_and_symbols-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_punctuation_and_symbols-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Punctuation and Other Symbols</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Symbols]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the symbol standing for “paragraph”. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>%</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>#</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>_</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>$</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>&</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>§</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>{</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>}</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>€</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>…</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>…</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>¡</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>¿</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>–</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>€</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>=</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Quotation Marks]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the French quotes </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‘and’</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‘and’</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>“and”</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>“and”</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>'</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>‹ and ›</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‚</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>„</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>‹ and ›</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‚and‘</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>„and“</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[The question]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the symbol “equal”. {1:MULTICHOICE:<~>~==}{1:MULTICHOICE_V:\(<\)~\(>\)~=\(=\)}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_samepage-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_samepage-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_samepage-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Option Handout with Samepage</text>
+  </category>
+</question>
+ 
+<question type="description">
+  <name format="html">
+    <text><![CDATA[Description]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="essay">
+  <name format="html">
+    <text><![CDATA[Essay]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <responserequired>0</responserequired>
+  <responseformat>editor</responseformat>
+  <responsefieldlines>15</responsefieldlines>
+  <attachments>0</attachments>
+  <attachmentsrequired>0</attachmentsrequired>
+  <graderinfo format="html"><text><![CDATA[
+    <ul>
+      <li>A </li>
+      <li>B </li>
+      <li>C</li>
+    </ul>
+  ]]></text></graderinfo>
+  <responsetemplate format="html"><text/></responsetemplate>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multi Single]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="10" format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>CCC</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multi Multiple]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="50" format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-50" format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <answer fraction="50" format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>CCC</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-50" format="html">
+    <text><![CDATA[<p>D Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>DDD</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 1]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="0" format="plain_text">
+    <text>true</text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>false</text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 2]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="100" format="plain_text">
+    <text>true</text>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>false</text>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 3]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="0" format="plain_text">
+    <text>true</text>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>false</text>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="numerical">
+  <name format="html">
+    <text><![CDATA[Numerical]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <answer fraction="100" format="plain_text">
+    <text>1</text>
+    <tolerance>1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>1</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>3</text>
+    <tolerance>1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>3</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="shortanswer">
+  <name format="html">
+    <text><![CDATA[Short Answer]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <usecase>0</usecase>
+  <answer fraction="100" format="plain_text">
+    <text>aaa</text>
+    <feedback format="html"><text><![CDATA[<p>1</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>bbb</text>
+    <feedback format="html"><text><![CDATA[<p>3</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="ddmatch">
+  <name format="html">
+    <text><![CDATA[Matching]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <shuffleanswers>1</shuffleanswers>
+  <subquestion format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>1 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>2 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>3 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text></text>
+    <answer format="html"><text><![CDATA[<p>4</p>]]></text></answer>
+  </subquestion>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="matching">
+  <name format="html">
+    <text><![CDATA[Matching]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <shuffleanswers>0</shuffleanswers>
+  <subquestion format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[1 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[2 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[3 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text></text>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
+  </subquestion>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Cloze]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><BR/>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>{1:MULTICHOICE_H:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_V:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_HS:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_VS:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_S:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:NUMERICAL:=1:1#1~3:1#3}<BR/>Question text {1:SHORTANSWER:=aaa#1~bbb#3}<BR/></p>]]></text>
+  </questiontext>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_sanction-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_sanction-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_sanction-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Example Quiz</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="-100" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="-100" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>abc<BR/>def \(\sqrt {2}\)</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="70" format="html">
+    <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
+  </answer>
+  <answer fraction="-10" format="html">
+    <text><![CDATA[<p><B>68</B></p>]]></text>
+  </answer>
+  <answer fraction="30" format="html">
+    <text><![CDATA[<p>7</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-70" format="html">
+    <text><![CDATA[<p>8</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><CODE>nothing</CODE></p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>abc<BR/>def \(\sqrt {2}\)</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
+  </answer>
+  <answer fraction="-40" format="html">
+    <text><![CDATA[<p>6</p>]]></text>
+  </answer>
+  <answer fraction="-30" format="html">
+    <text><![CDATA[<p>9</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-40" format="html">
+    <text><![CDATA[<p><OL><LI>False</LI><LI>Wrong</LI></OL></p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Cloze]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_shortanswer-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_shortanswer-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_shortanswer-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Short Answer]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter the string <CODE>”40%”</CODE>. </p>]]></text>
+    <text><![CDATA[<p>Enter the string <CODE>"40%"</CODE>. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -38,7 +38,7 @@
     <text><![CDATA[Short Answer in Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter the string <CODE>”40%”</CODE>. {1:SHORTANSWER:=40%#correct \((1+\sqrt {5\})/2\)~%50%40#incomplete \((1+\sqrt {5\})/2\)~%50%%#incomplete \((1+\sqrt {5\})/2\)}</p>]]></text>
+    <text><![CDATA[<p>Enter the string <CODE>"40%"</CODE>. {1:SHORTANSWER:=40%#correct \((1+\sqrt {5\})/2\)~%50%40#incomplete \((1+\sqrt {5\})/2\)~%50%%#incomplete \((1+\sqrt {5\})/2\)}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_special_characters-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_special_characters-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_special_characters-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/Diacritical marks and ligatures</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[\xC5 \xC0 \xC2 \xC3 \xC9 \xC8 \xCB \xCA \xCE \xCF \xD1 \xD5 \xD4 \xD6 \xD9 \xDC \xDB \xC7 ]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>\xE5 \xE0 \xE2 \xE3 \xE9 \xE8 \xEB \xEA \xEE \xEF \xF1 \xF5 \xF4 \xF6 \xF9 \xFC \xFB \xE7 <BR/> \xC5 \xC0 \xC2 \xC3 \xC9 \xC8 \xCB \xCA \xCE \xCF \xD1 \xD5 \xD4 \xD6 \xD9 \xDC \xDB \xC7 <BR/> </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>\xE5 \xE0 \xE2 \xE3 \xE9 \xE8 \xEB \xEA \xEE \xEF \xF1 \xF5 \xF4 \xF6 \xF9 \xFC \xFB \xE7 </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>\xC5 \xC0 \xC2 \xC3 \xC9 \xC8 \xCB \xCA \xCE \xCF \xD1 \xD5 \xD4 \xD6 \xD9 \xDC \xDB \xC7 </p>]]></text></feedback>
-  </answer>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>\xC5 \xC0 \xC2 \xC3 \xC9 \xC8 \xCB \xCA \xCE \xCF \xD1 \xD5 \xD4 \xD6 \xD9 \xDC \xDB \xC7 </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>\xE5 \xE0 \xE2 \xE3 \xE9 \xE8 \xEB \xEA \xEE \xEF \xF1 \xF5 \xF4 \xF6 \xF9 \xFC \xFB \xE7 </p>]]></text></feedback>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž ]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž <BR/> Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž <BR/> œ æ ß Œ Æ ẞ Ø Ł «  ø ł  » ¿ ¡ </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text></feedback>
-  </answer>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text></feedback>
-  </answer>
-</question>
- 
-</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tags-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tags-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tags-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -31,7 +31,7 @@
     <feedback format="html"><text><![CDATA[<p>tac</p>]]></text></feedback>
   </answer>
   <tags>
-    <tag><text><![CDATA[multi\xE9\xE0\xEE]]></text></tag>
+    <tag><text><![CDATA[multiéàî]]></text></tag>
     <tag><text><![CDATA[Åæœ]]></text></tag>
   </tags>
 </question>
@@ -53,7 +53,7 @@
   </answer>
   <answer fraction="100" format="plain_text">
     <text>C</text>
-    <feedback format="html"><text><![CDATA[<p>«  »</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>«»</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="plain_text">
     <text>*</text>
@@ -83,7 +83,7 @@
   <answer fraction="100" format="plain_text">
     <text>2</text>
     <tolerance>0</tolerance>
-    <feedback format="html"><text><![CDATA[<p>«  »</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>«»</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="plain_text">
     <text>3</text>
@@ -104,15 +104,15 @@
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>æ</p>]]></text>
-    <answer><text>oui </text></answer>
+    <answer format="html"><text><![CDATA[oui]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>œ</p>]]></text>
-    <answer><text>non </text></answer>
+    <answer format="html"><text><![CDATA[non]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>\xC5</text></answer>
+    <answer format="html"><text><![CDATA[Å]]></text></answer>
   </subquestion>
   <tags>
     <tag><text><![CDATA[måtchïng]]></text></tag>
@@ -187,7 +187,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>ÅŒ{1:MULTICHOICE:=chip~%10%chop#yes~chap#no.} »Å{1:SHORTANSWER:=B#toc~=C#«  »~*}« Å{1:NUMERICAL:=1:0~=2:0#«  »~3:0}Œ{1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Œ{1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/></p>]]></text>
+    <text><![CDATA[<p>ÅŒ{1:MULTICHOICE:=chip~%10%chop#yes~chap#no.}»Å{1:SHORTANSWER:=B#toc~=C#«»~*}«Å{1:NUMERICAL:=1:0~=2:0#«»~3:0}Œ{1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Œ{1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/></p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,9 +13,9 @@
     <text><![CDATA[Multi]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -27,27 +27,28 @@
   <answernumbering>abc</answernumbering>
   <answer fraction="100" format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvM3Uwh 
-kGcAAABYSURBVAjXY2DABBIdkxgYmCYy9AUwcDxlkDvAwP6Mge8CSMavAUSuEWBgYOleAGIyrRYA 
-UUA1QMD9lIHnIgP3Cwa+RyA2twGD3gYGxmUup4FqmMsNsNgEAJkrErcirjVRAAAAAElFTkSuQmCC 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
+XhgAAABbSURBVAjXY2DABOKrChkYGKcy7jVgYH/BEDeBgf0lg98CBgZHhroGkPxpAQYGlu4FICbj 
+agMQJXcRRHI/Y5A5yMD1gsHvCZidwGC3gYF5uesuBQYG1g4DLDYBAP0fFFl+WGIRAAAAAElFTkSu 
+QmCC 
 "></p>]]></text>
-    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
+    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAKlBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAESIzRFVmd4iqu8zuDY55BwAA 
-AFNJREFUCNdjYMAE01w8AhgY7t69AWTvaFcAkgvA4hBySUchkDzG4AOUMGDgBgtyXGJgCWDguMLA 
-cwFEchUwcB1g4DBg0E1gYGh3XQ5UwVQqgMUmALNqEhN3PGWqAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
+0mEAAABXSURBVAjXY2DABK0MagEMDPvevRZgYJi1KwEo0gAWh5AtHY1AchlDrQIDgwMD3waQGPcj 
+BpYEBu4nDHyPQSTPBAbeCwwcBgx+BQyMK9xuAFWwtCtgsQkAx3wTJimum5IAAAAASUVORK5CYII= 
 "></p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -56,9 +57,9 @@
     <text><![CDATA[Matching]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -67,39 +68,41 @@
   <hidden>0</hidden>
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAKlBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAESIzRGaImaq7zN3uKN6begAA 
-AFVJREFUCNdjYMAEYplJDAxMkxhrDBg4FBhkNjDwHmLguMzAdYiB7QpInusiiPRNAJGrBIAE+0QQ 
-MxxEsBYwGDMwmDEwBDEwn0ibeYCB++7duxMYcAAA6VQQhImgcD0AAAAASUVORK5CYII= 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRGZ3iJmqu8zd7gKj 
+CLQAAABYSURBVAjXY2DABGKrEhkYmCYz7TVg4BBg0DvAwHeJgfsxA+9jBq4nDIwKDDyPQKr8GkDk 
+bgEgwbERxMwAMVkbGIwZGCIYGAoZmG+tWnWBgffdu3cLGHAAAI4xEyqt9erAAAAAAElFTkSuQmCC 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvM3Uwh 
-kGcAAABYSURBVAjXY2DABBIdkxgYmCYy9AUwcDxlkDvAwP6Mge8CSMavAUSuEWBgYOleAGIyrRYA 
-UUA1QMD9lIHnIgP3Cwa+RyA2twGD3gYGxmUup4FqmMsNsNgEAJkrErcirjVRAAAAAElFTkSuQmCC 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
+XhgAAABbSURBVAjXY2DABOKrChkYGKcy7jVgYH/BEDeBgf0lg98CBgZHhroGkPxpAQYGlu4FICbj 
+agMQJXcRRHI/Y5A5yMD1gsHvCZidwGC3gYF5uesuBQYG1g4DLDYBAP0fFFl+WGIRAAAAAElFTkSu 
+QmCC 
 "> </p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAJFBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMAESIzRGZ3iLvM3aXhim4AAAA+SURBVAjX 
-Y2DABjxABOMKEMk+A0SadYDIAhDJpgAizRhAZAGIZFMAkWoMINK9vHxXKUjpDgY42bm7nQEHAADc 
-tQymVD9SLAAAAABJRU5ErkJggg== 
+AAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMAETNEVWaImbvM3VunJNkAAABBSURBVAjX 
+Y2DABjRABOMMEMm2A0SagEjGBBDJJgAiTRiAJGMBiGQTAJFuxsY7jRjM0tJ2pYI0gHVByM7dbQw4 
+AAA49g4oxsjpawAAAABJRU5ErkJggg== 
 "></p>]]></text>
-    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAKlBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAESIzRFVmd4iqu8zuDY55BwAA 
-AFNJREFUCNdjYMAE01w8AhgY7t69AWTvaFcAkgvA4hBySUchkDzG4AOUMGDgBgtyXGJgCWDguMLA 
-cwFEchUwcB1g4DBg0E1gYGh3XQ5UwVQqgMUmALNqEhN3PGWqAAAAAElFTkSuQmCC 
+    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
+0mEAAABXSURBVAjXY2DABK0MagEMDPvevRZgYJi1KwEo0gAWh5AtHY1AchlDrQIDgwMD3waQGPcj 
+BpYEBu4nDHyPQSTPBAbeCwwcBgx+BQyMK9xuAFWwtCtgsQkAx3wTJimum5IAAAAASUVORK5CYII= 
 "> </p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvM3Uwh 
-kGcAAABYSURBVAjXY2DABBIdkxgYmCYy9AUwcDxlkDvAwP6Mge8CSMavAUSuEWBgYOleAGIyrRYA 
-UUA1QMD9lIHnIgP3Cwa+RyA2twGD3gYGxmUup4FqmMsNsNgEAJkrErcirjVRAAAAAElFTkSuQmCC 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
+XhgAAABbSURBVAjXY2DABOKrChkYGKcy7jVgYH/BEDeBgf0lg98CBgZHhroGkPxpAQYGlu4FICbj 
+agMQJXcRRHI/Y5A5yMD1gsHvCZidwGC3gYF5uesuBQYG1g4DLDYBAP0fFFl+WGIRAAAAAElFTkSu 
+QmCC 
 "></p>]]></text>
-    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAKlBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAESIzRGaImaq7zN3uKN6begAA 
-AFVJREFUCNdjYMAEYplJDAxMkxhrDBg4FBhkNjDwHmLguMzAdYiB7QpInusiiPRNAJGrBIAE+0QQ 
-MxxEsBYwGDMwmDEwBDEwn0ibeYCB++7duxMYcAAA6VQQhImgcD0AAAAASUVORK5CYII= 
+    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRGZ3iJmqu8zd7gKj 
+CLQAAABYSURBVAjXY2DABGKrEhkYmCYz7TVg4BBg0DvAwHeJgfsxA+9jBq4nDIwKDDyPQKr8GkDk 
+bgEgwbERxMwAMVkbGIwZGCIYGAoZmG+tWnWBgffdu3cLGHAAAI4xEyqt9erAAAAAAElFTkSuQmCC 
 "></p>]]></text></answer>
   </subquestion>
 </question>
@@ -108,9 +111,9 @@
     <text><![CDATA[Short]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -120,11 +123,11 @@
   <usecase>0</usecase>
   <answer fraction="100" format="plain_text">
     <text>3</text>
-    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
+    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
@@ -131,8 +134,8 @@
     <text>5</text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -141,9 +144,9 @@
     <text><![CDATA[Numerical]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -153,11 +156,11 @@
   <answer fraction="100" format="plain_text">
     <text>3</text>
     <tolerance>0</tolerance>
-    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
+    <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
@@ -165,8 +168,8 @@
     <tolerance>0</tolerance>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -175,50 +178,51 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
 "> {1:MULTICHOICE_HS:=<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvM3Uwh 
-kGcAAABYSURBVAjXY2DABBIdkxgYmCYy9AUwcDxlkDvAwP6Mge8CSMavAUSuEWBgYOleAGIyrRYA 
-UUA1QMD9lIHnIgP3Cwa+RyA2twGD3gYGxmUup4FqmMsNsNgEAJkrErcirjVRAAAAAElFTkSuQmCC 
-">#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
+XhgAAABbSURBVAjXY2DABOKrChkYGKcy7jVgYH/BEDeBgf0lg98CBgZHhroGkPxpAQYGlu4FICbj 
+agMQJXcRRHI/Y5A5yMD1gsHvCZidwGC3gYF5uesuBQYG1g4DLDYBAP0fFFl+WGIRAAAAAElFTkSu 
+QmCC 
+">#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
+">~<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
-">~<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAKlBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmU0mKAAAADXRSTlMAESIzRFVmd4iqu8zuDY55BwAA 
-AFNJREFUCNdjYMAE01w8AhgY7t69AWTvaFcAkgvA4hBySUchkDzG4AOUMGDgBgtyXGJgCWDguMLA 
-cwFEchUwcB1g4DBg0E1gYGh3XQ5UwVQqgMUmALNqEhN3PGWqAAAAAElFTkSuQmCC 
+0mEAAABXSURBVAjXY2DABK0MagEMDPvevRZgYJi1KwEo0gAWh5AtHY1AchlDrQIDgwMD3waQGPcj 
+BpYEBu4nDHyPQSTPBAbeCwwcBgx+BQyMK9xuAFWwtCtgsQkAx3wTJimum5IAAAAASUVORK5CYII= 
 ">#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
-">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
-"> {1:SHORTANSWER:=3#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
+">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
+"> {1:SHORTANSWER:=3#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
 ">~=5#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
-">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAIVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAADdcGRXAAAACnRSTlMAESIziJm7zN3u5dSV+AAAACNJREFUCNdjYMAC 
-RIGYybUKSDIaeIFFyCQVgETarDYHBhwAAGGpBhwPdrFnAAAAAElFTkSuQmCC 
-"> {1:NUMERICAL:=3:0#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENrECKg6mA8wKQ185gVwDSwHwN 
-rC/KAERqJYCFNjIwBDAwSAswsAH5M1oVYgQYGDdov7vCwMBkwOCugN1mABiqEeALUM2PAAAAAElF 
-TkSuQmCC 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
+">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESIzRIi73e4mCPIjAAAAJElEQVQI12NgwAJYDRgY 
+mEIrHRgYGJ0jHUAiFJBpnWUBDDgAAGE/CdJCY3DPAAAAAElFTkSuQmCC 
+"> {1:NUMERICAL:=3:0#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAXUlEQVQI12NgwAEy2kAkhwN3A5BqV+D4wMDAeKABRLEVNHABKQ4zB7kLQF4HQ78D 
+SCnbUxDJ2K0AorwhQgcZWA0YGLQFGLiBortaBGYzMDBt8P3/CEg5MKYLYLcZAIIuE1q9mCyAAAAA 
+AElFTkSuQmCC 
 ">~=5:0#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAU0lEQVQI12NgQIAICLUTTDJ+BVNsD8AUVwOY0lcAU50QFZfAFCdEypsDRDNu5EsA 
-UtIG9kCVjKcc64Ac7pDMO+VgNS8cQCTzZzCH/QKY4mhgQAMAKiMPa9oLlkgAAAAASUVORK5CYII= 
+3e5GKvWZAAAAVElEQVQI12NgQIAKCPUSTDJ/A1McH8EU7wQw5e8AplZDVHwCU9wNYKqGpwAkdsk+ 
+AUjJGNQrMDAwnUpcC+RIh2S9bQVr+GEAotgh+rguQKgGBjQAAOCNEa+cVlFEAAAAAElFTkSuQmCC 
 ">}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz_with_svg-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz_with_svg-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_tikz_with_svg-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -19,9 +19,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -38,9 +38,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
@@ -49,8 +49,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
@@ -60,9 +60,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
@@ -71,8 +71,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -87,9 +87,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -104,9 +104,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
@@ -114,9 +114,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
@@ -126,9 +126,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
@@ -136,9 +136,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
@@ -148,9 +148,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
@@ -158,9 +158,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></answer>
   </subquestion>
 </question>
@@ -175,9 +175,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -194,8 +194,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
@@ -207,8 +207,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -223,9 +223,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -242,8 +242,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
@@ -256,8 +256,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -272,9 +272,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> {1:MULTICHOICE_HS:=<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
 OnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0 
@@ -281,9 +281,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjM8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -291,8 +291,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">~<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
 OnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0 
@@ -299,9 +299,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjU8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -309,8 +309,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">}<BR/><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
 OnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0 
@@ -317,9 +317,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> {1:SHORTANSWER:=3#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -327,8 +327,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">~=5#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -336,8 +336,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">}<BR/><IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi42NCIg 
 aGVpZ2h0PSIxMy4yOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNi42NCAxMy4yOCIgeG1s 
 OnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyB0 
@@ -344,9 +344,9 @@
 cmFuc2Zvcm09Im1hdHJpeCgxLjMzMzMgMCAwIC0xLjMzMzMgMCAxMy4yOCkiPjxnIHRyYW5zZm9y 
 bT0idHJhbnNsYXRlKDIuNDksNC45OCkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yLjQ5LC0y 
 LjQ5MSkiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTIuNDg5KSI+PHRleHQgdHJhbnNmb3Jt 
-PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJT 
-RlJNMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFu 
-PjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+PSJtYXRyaXgoMSwwLDAsLTEsMCwxLjc4NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJB 
+cmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjE8L3RzcGFuPjwv 
+dGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 "> {1:NUMERICAL:=3:0#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -354,8 +354,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwxLjg5NSkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjI8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">~=5:0#<IMG SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNi43ODgi 
 IGhlaWdodD0iMTMuNTc2IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA2Ljc4OCAxMy41NzYi 
 IHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ 
@@ -363,8 +363,8 @@
 bnNmb3JtPSJ0cmFuc2xhdGUoMi41NDUsNS4wOTEpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgt 
 Mi41NDUsLTIuNDkxKSI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMi42KSI+PHRleHQgdHJh 
 bnNmb3JtPSJtYXRyaXgoMSwwLDAsLTEsMCwyLjg2NCkiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFt 
-aWx5PSJTRlRJMTAwMCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8 
-L3RzcGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
+aWx5PSJBcmlhbCIgZm9udC1zaXplPSI5Ljk2MjZweCI+PHRzcGFuIHg9IjAiIHk9IjAiPjQ8L3Rz 
+cGFuPjwvdGV4dD48L2c+PC9nPjwvZz48L2c+PC9zdmc+Cg== 
 ">}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_truefalse-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_truefalse-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_truefalse-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -23,11 +23,11 @@
   <hidden>0</hidden>
   <answer fraction="0" format="plain_text">
     <text>true</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”true”</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "true"</p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
     <text>false</text>
-    <feedback format="html"><text><![CDATA[<p> Feedback for students choosing ”false” </p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p> Feedback for students choosing "false" </p>]]></text></feedback>
   </answer>
 </question>
 <question type="truefalse">
@@ -45,11 +45,11 @@
   <hidden>0</hidden>
   <answer fraction="0" format="plain_text">
     <text>true</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”true” </p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "true" </p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
     <text>false</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”false”</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "false"</p>]]></text></feedback>
   </answer>
 </question>
 <question type="truefalse">
@@ -57,7 +57,7 @@
     <text><![CDATA[Truefalse Test 3]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Please answer ”True”. </p>]]></text>
+    <text><![CDATA[<p>Please answer "True". </p>]]></text>
   </questiontext>
   <defaultgrade>3</defaultgrade>
   <generalfeedback format="html">
@@ -77,7 +77,7 @@
     <text><![CDATA[Truefalse Test 4]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Please answer ”False”. </p>]]></text>
+    <text><![CDATA[<p>Please answer "False". </p>]]></text>
   </questiontext>
   <defaultgrade>3</defaultgrade>
   <generalfeedback format="html">

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_turkish-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_turkish-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_turkish-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Turkish Issues</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Test Turkish]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p> <SPAN STYLE="text-decoration: underline;">Pangramm</SPAN> :</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>Pijamalı hasta yağız şoföre çabucak güvendi.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p></p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>Saf ve haydut kız çocuğu bin plaj görmüş.</p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_verbatim-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_verbatim-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/latin1ref/test_verbatim-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -10,7 +10,7 @@
  
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[Multi]]></text>
+    <text><![CDATA[LaTeX]]></text>
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE>% !TeX encoding = UTF-8<BR/>% !TeX spellcheck = en_US<BR/>% !TEX TS-program = xelatex<BR/>\documentclass{article}<BR/>\usepackage[nostamp]{moodle}<BR/>\newif\iffvextra<BR/>\fvextratrue<BR/>\ifxetex % FOR XELATEX<BR/> \usepackage{fontspec}<BR/>\else %% FOR PDFLATEX<BR/> \usepackage[utf8]{inputenc} % necessary<BR/> \usepackage[T1]{fontenc} % necessary<BR/>\fi<BR/></CODE></PRE> </p>]]></text>
@@ -29,5 +29,29 @@
     <text><![CDATA[<p>toast</p>]]></text>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[C]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE>#include <stdio.h><BR/>int main() {<BR/>    char c='\0', *pc=&c;<BR/>    printf("Hello world!\n");<BR/>    return *pc;<BR/>}<BR/></CODE></PRE> </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>"&test"</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>’toast’</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><\(<a>\)></p>]]></text>
+  </answer>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/makefile	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/makefile	2023-01-29 21:21:06 UTC (rev 65672)
@@ -4,7 +4,7 @@
 XETEX_EXCLUDED_TEST_FILES=test_includegraphics_via_tikz.tex test_includegraphics_via_tikz_and_svg.tex test_tikz_with_svg.tex
 GENERIC_TEST_FILES=$(filter-out $(LUATEX_ONLY_TEST_FILES) $(XETEX_EXCLUDED_TEST_FILES),$(wildcard $(PREFIX)_*.tex))
 TEX_ENGINES=pdflatex lualatex xelatex
-LATEXFLAGS=-interaction=nonstopmode -shell-escape
+LATEXFLAGS=-halt-on-error -shell-escape
 DIFFTOOL=diff -abBwZ
 FILE_CLEAN=*.log *.aux *.auxlock *.out *.blg *.bbl *.toc *.xml *.bcf *.synctex.gz *~ *.nav *.snm *.idx *.ilg *.ind _minted-* *.glo *.gls *.dpth *-tikztemp-*.pdf fig/*-converted-to.*
 ifndef DEBUG

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_autopoints.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_autopoints.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_autopoints.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -9,36 +9,34 @@
 \else % assuming XELATEX or LUALATEX
 	\usepackage{fontspec}
 \fi
-\def\myequation{$(1+\sqrt{5})/2$}
-\htmlregister{\myequation}
 \begin{document}
 
 \section*{Introduction}
 
-This document is intended to check the support of autopoints in multi answers 
-questions.
+This document is intended to check the scoring strategies in multi-choice
+questions with multiple answers allowed.
 
-\begin{quiz}{Example Quiz}
-\begin{multi}[multiple]{All correct}
+\begin{quiz}[multiple]{Example Quiz}
+\begin{multi}{All correct}
 100\% is distributed uniformly.
 \item* A
 \item* B
 \item* C
 \end{multi}
-\begin{multi}[multiple]{Auto sanction}
-Without the star, an error shall be issued because correct answers should sum 
+\begin{multi}{Auto sanction}
+Without the star, an error shall be issued because correct answers should add
 up to 100\%.
 \item* A
 \item B
 \item C
 \end{multi}
-\begin{multi}[multiple]{All correct but sum $\geq 100$}
-A warning shall be issued because correct answers must sum up to 100\%.
+\begin{multi}{All correct but total $\geq 100$}
+A warning shall be issued because correct answers must add up to 100\%.
 \item[fraction=50] A
 \item[fraction=50] B
 \item[fraction=50] C
 \end{multi}
-\begin{multi}[multiple]{Multiple Choice}
+\begin{multi}{Multiple Choice}
 Select the following numbers that are prime.
 \item[fraction=20] 2
 \item* 5
@@ -47,5 +45,43 @@
 \item 6
 \item 8
 \end{multi}
+\begin{multi}{Fruits (automatic scores)}
+Select the fruits
+\item* Apple% (100% scaled to +1/3)
+\item Burger% (-100% scaled to -1/3)
+\item Hot dog% (-100% scaled to -1/3)
+\item Pizza% (-100% scaled to -1/3)
+\item* Orange% (100% scaled to +1/3)
+\item* Banana% (100% scaled to +1/3)
+\end{multi}
+\begin{multi}{Vegetables (advanced scores)}
+Select the vegetables
+\item[fraction=10,feedback={Good}] Radish% (10% scaled to 1/11=9.1%)
+\item[fraction=-20] Chocolate% (-20% unchanged)
+\item[fraction=-20] Biscuit% (-30% unchanged)
+\item[fraction=-10] Cheese% (-10% unchanged)
+\item[fraction=100] Carrot% (100% scaled to 10/11=91%)
+%\item* Test
+\end{multi}
+\begin{cloze}{Embedded questions}
+\begin{multi}%{Fruits (automatic scores)}
+Select the fruits
+\item* Apple% (100% scaled to +1/3)
+\item Burger% (-100% scaled to -1/3)
+\item Hot dog% (-100% scaled to -1/3)
+\item Pizza% (-100% scaled to -1/3)
+\item* Orange% (100% scaled to +1/3)
+\item* Banana% (100% scaled to +1/3)
+\end{multi}
+\begin{multi}%{Vegetables (advanced scores)}
+Select the vegetables
+\item[fraction=10,feedback={Good}] Radish% (10% scaled to 1/11=9.1%)
+\item[fraction=-20] Chocolate% (-20% unchanged)
+\item[fraction=-20] Biscuit% (-30% unchanged)
+\item[fraction=-10] Cheese% (-10% unchanged)
+\item[fraction=100] Carrot% (100% scaled to 10/11=91%)
+%\item* Test
+\end{multi}
+\end{cloze}
 \end{quiz}
-\end{document}
+\end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_lua.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_lua.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_lua.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -67,7 +67,7 @@
 for x = 2,4 do
   for y = 2,4 do
     if x>y then
-      if x/y==math.floor(x/y) then points=4 else points=3 end
+      if x/y==math.floor(x/y) then points=1 else points=2 end
       cloze_print({x,y},points)
     end
   end

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_python.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_python.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_calculated_python.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -43,9 +43,9 @@
   for y in range(2,5):
     if x > y:
       if x/y == x//y:
-        points=4
+        points=1
       else:
-        points=3  
+        points=2  
       cloze_print([x,y],points)
 \end{python}
 \end{quiz}

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_multi.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_multi.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_multi.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -2,7 +2,7 @@
 % !TeX spellcheck = en_US
 % !TEX TS-program = lualatex
 \documentclass{article}
-\usepackage[nostamp]{moodle}
+\usepackage[LMS=3.11,nostamp]{moodle}
 \ifPDFTeX % FOR LATEX and PDFLATEX
 	\usepackage[utf8]{inputenc} % necessary
 	\usepackage[T1]{fontenc} % necessary
@@ -28,15 +28,15 @@
 \begin{multi}[shuffle=false]
 Regular, single, no shuffle
 \item[feedback={yes}]* chip 
-\item[fraction=10] \textit{chop} 
-\item[feedback={no.},fraction=-30] \textbf{chap}
+\item[fraction=10.4999] \textit{chop} 
+\item[feedback={no.},fraction=-30.4999] \textbf{chap}
 \end{multi}
 
 \begin{multi}[shuffle=false,vertical]
 Vertical, single, no shuffle
 \item[feedback={yes}]* chip
-\item[fraction=10] chop
-\item[feedback={no.}] chap
+\item[fraction=10.5001] chop
+\item[feedback={no.},fraction=-30.5001] chap
 \end{multi}
 
 \begin{multi}[shuffle=false,horizontal]
@@ -72,7 +72,7 @@
 	Regular, multiple, no shuffle
 	\item* chip
 	\item[feedback={yes}]* chop
-	\item[feedback={no.}] chap
+	\item[feedback={no.},fraction=-103.000] chap
 \end{multi}
 
 %\begin{multi}[multiple,shuffle=false,vertical]

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_numerical.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_numerical.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_numerical.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -17,15 +17,16 @@
 This document is intended to check the support of numerical questions 
 embedded in cloze questions.
 
-\begin{quiz}{Close Short Answer}
+\begin{quiz}{Close Numerical}
 
 \begin{cloze}{Cloze}
 \begin{numerical}
 Enter an integer $n$ such that $0< n\leq 2$.
-\item[tolerance=0.001,fraction={10},feedback={study difference between $<$ and 
-$\leq$}] 0
+\item[tolerance=0.001,fraction={10.4999},feedback={study difference between $<$ 
+and $\leq$}] 0
 \item[tolerance=0.01,feedback={good!}] 1
 \item[tolerance=0.1,feedback={OK}] 2
+\item[tolerance=0,feedback={No!},fraction=-.4999] 3
 \end{numerical}
 \end{cloze}
 

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_shortanswer.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_shortanswer.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_cloze_shortanswer.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -22,14 +22,14 @@
 \begin{shortanswer}[usecase]
 Who?
 \item chip
-\item[feedback={yes},fraction=10] chop
-\item[feedback={no.},fraction=-30] chap
+\item[feedback={yes},fraction=10.4999] chop
+\item[feedback={no.},fraction=-30.4999] chap
 \end{shortanswer}
 \begin{shortanswer}
 what?
 \item chip
-\item[feedback={yes},fraction=10] chop
-\item[feedback={no.},fraction=-30] chap
+\item[feedback={yes},fraction=10.5001] chop
+\item[feedback={no.},fraction=-30.5001] chap
 \end{shortanswer}
 \end{cloze}
 

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_commands.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_commands.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_commands.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -21,12 +21,14 @@
 \begin{quiz}[points=1]{LaTeX Commands}
 \begin{multi}{LaTeX Commands}
 Find the answer with small capitals
-\item \emph{emphasis}
+\item \TeX{} and\\\relax \LaTeX% no-ops {} and \relax are tested here
+\item word with \emph{emphasis} catches the eye
 \item \textbf{bold}
 \item \textit{italic}
 \item \texttt{typewriter}
 \item* \textsc{Small Capitals}
-\item \underline{underlined}
+\item \underline{underlined} in text
+\item $\underline{underlined}$ in math
 \item M\textsuperscript{me}
 \item H\textsubscript{2}O
 \item \url{http://192.0.0.256}

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_description.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_description.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_description.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -16,6 +16,11 @@
 This document is intended to check the support of the description 
 question type.
 
+\begin{description}
+\item Foo
+\item Bar
+\end{description}
+
 \begin{quiz}{Example Quiz}
 \begin{description}[tags={descr},feedback={here is a feedback}]{Requirements}
 This is a description. Not really a question. We can include environments and 
@@ -27,4 +32,10 @@
 \[\mathrm{e}^{2\mathrm{i}\pi}+1=0.\]
 \end{description}
 \end{quiz}
+
+\begin{description}
+\item Foo
+\item Bar
+\end{description}
+
 \end{document}

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_diacritics_and_ligatures.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_diacritics_and_ligatures.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_diacritics_and_ligatures.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,60 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+	\usepackage{libertine} % includes the "großes Eszett" ß
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+	\setmainfont[Ligatures=TeX]{Linux Libertine O}
+\fi
+
+\newcommand{\NewGlyphLC}[2]{\appto\DiacriticsLC{#1#2\ }}%
+\newcommand{\NewGlyphUC}[2]{\appto\DiacriticsUC{#1#2\ }}%
+\newcommand{\NewDiac}[3]{%
+  \forcsvlist{\NewGlyphLC{#1}}{#2}
+  \forcsvlist{\NewGlyphUC{#1}}{#3}
+}%
+
+\moodleregisternewcommands
+
+\newcommand{\DiacriticsLC}{}
+\newcommand{\DiacriticsUC}{}
+\NewDiac{\"}{a,e,i,o,u,y}{A,E,I,O,U}%
+\NewDiac{\'}{a,e,i,o,u}{A,E,I,O,U}%
+\NewDiac{\.}{c,e,g,i,z}{C,E,G,I,Z}%
+\NewDiac{\=}{a,e,g,i,o,u,y}{A,E,G,I,O,U,Y}%
+\NewDiac{\^}{a,e,i,o,u}{A,E,I,O,U}%
+\NewDiac{\`}{a,e,i,o,u}{A,E,I,O,U}%
+\NewDiac{\~}{a,n,o}{A,N,O}%
+\NewDiac{\b}{b,d,k,l,n,t,z}{B,D,K,L,N,T,Z}%
+\NewDiac{\c}{c,s,t}{C,S,T}%
+\NewDiac{\d}{a,b}{A,B}%
+\NewDiac{\H}{o,u}{O,U}%
+\NewDiac{\k}{a,e,i,o,u}{A,E,I,O,U}%
+\NewDiac{\r}{a,u}{A,U}%
+\NewDiac{\u}{a,e,g,i,\i,o,u}{A,E,G,I,O,U}%
+\NewDiac{\v}{c,d,e,l,n,r,s,t,z}{C,D,E,L,N,R,S,T,Z}%
+\newcommand\OtherGlyphsLC{\aa\ \ae\ \dh\ \dj\ \i\ \ij\ \j\ \l\ \ng\ \o\ \oe\ %
+\ss\ \th\ }%
+\newcommand\OtherGlyphsUC{\AA\ \AE\ \DH\ \DJ\ \IJ\ \L\ \NG\ \O\ \OE\ %
+\SS\ \TH\ }%
+
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of diacritical marks (accents) 
+and ligatures found in different languages written with the Latin alphabet.
+
+\begin{quiz}[points=1]{Diacritical marks and ligatures}
+\begin{multi}{\OtherGlyphsUC}
+\DiacriticsUC
+\item* \DiacriticsLC
+\item \OtherGlyphsLC
+\end{multi}
+\end{quiz}
+\end{document}
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_diacritics_and_ligatures.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_environments.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_environments.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_environments.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -23,6 +23,10 @@
 \begin{center}
 \textsc{This is a question}
 \end{center}
+\begin{quote}
+and this is a quote
+\end{quote}
+
 Select the numbered list
 \item[feedback={yes}]* \begin{enumerate}
          \item C
@@ -46,6 +50,9 @@
          \end{enumerate}
          \item F
       \end{itemize}
+\item \begin{quotation}
+this is a quotation.
+\end{quotation}
 \end{multi}
 \end{quiz}
 \end{document}

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_escaping_right_braces_in_cloze.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_escaping_right_braces_in_cloze.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_escaping_right_braces_in_cloze.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -25,7 +25,7 @@
 
 \begin{quiz}{Cloze: Escaping Characters}
 
-\begin{cloze}[points=2]{Cloze}
+\begin{cloze}{Cloze}
 No escaping here: $\myequation$
 
 \begin{multi}[points=4,vertical,shuffle=false]

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_fancyvrb.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_fancyvrb.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_fancyvrb.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -57,7 +57,7 @@
 
 % To avoid collision of line and item numbers in PDF, force `left-right' mode:
 \RecustomVerbatimCommand{\VerbatimInput}{LVerbatimInput}{}
-\begin{multi}{Multi}
+\begin{multi}{LaTeX}
 Pick up the code decorated with line numbering on both sides.
 \item[feedback={No. Here, line numbers lie on the left side.}] 
 \VerbatimInput{test.log}
@@ -67,6 +67,22 @@
 \VerbatimInput[numbers=left,firstline=9,firstnumber=4,lastline=23]{test.log}
 \end{multi}
 
+\begin{filecontents*}[overwrite]{test.log}
+#include <stdio.h>
+int main() {
+    char c='\0', *pc=&c;
+    printf("Hello world!\n");
+    return *pc;
+}
+\end{filecontents*}
+\begin{multi}{C}
+\VerbatimInput[gobble=0,numbers=left,firstline=1,lastline=6]{test.log}
+
+\item[feedback={}]* ``\&test"
+\item[feedback={}] 'toast'
+\item <$<a>$>
+\end{multi}
+
 \end{quiz}
 
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_french.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_french.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_french.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -14,22 +14,26 @@
 % pangramme conçu par Gilles Esposito-Farèse et cité dans "Petites leçons de 
 % typographie" de Jacques André: https://jacques-andre.fr/faqtypo/lessons.pdf
 \ifPDFTeX
-  \def\myquestiontext{ \underline{Pangramme} con\c{c}u par Gilles 
-  \textsc{Esposito-Far\`ese}\,:}
-  \def\pangramme{D\`es No\"el o\`u un z\'ephyr ha\"i me v\^et de 
-gla\c{c}ons w\"urmiens je d\^ine d'exquis r\^otis de b\oe uf au kir \`a l'a\"y 
-d'\^age m\^ur \& c\ae tera\,!}
+  \def\myquestiontext{ \underline{Pangramme} con\c{c}u par 
+  Gilles \textsc{Esposito-Far\`ese}\,:}
+  \def\pangramme{D\`es No\"el o\`u un z\'ephyr ha\"i me 
+  v\^et de gla\c{c}ons w\"urmiens je d\^ine d'exquis 
+  r\^otis de b\oe uf au kir \`a l'a\"y d'\^age m\^ur \& 
+  c\ae tera\,!}
   \def\myfeedback{cit\'e dans 
-\og\,\href{https://jacques-andre.fr/faqtypo/lessons.pdf}{Petites 
-  le\c{c}ons de typographie}\,\fg\ de Jacques \textsc{Andr\'e}.}
+\og\,\href{https://jacques-andre.fr/faqtypo/lessons.pdf}{Petites
+ le\c{c}ons de typographie}\,\fg\ de Jacques 
+ \textsc{Andr\'e}.}
 \else % assuming XELATEX or LUALATEX
-  \def\myquestiontext{ \underline{Pangramme} conçu par Gilles 
-  \textsc{Esposito-Farèse}:}
-  \def\pangramme{Dès Noël où un zéphyr haï me vêt de glaçons würmiens je dîne 
-d’exquis rôtis de bœuf au kir à l’aÿ d’âge mûr \& cætera\,!}
+  \def\myquestiontext{ \underline{Pangramme} conçu par 
+  Gilles \textsc{Esposito-Farèse}:}
+  \def\pangramme{Dès Noël où un zéphyr haï me vêt de 
+  glaçons würmiens je dîne d’exquis rôtis de bœuf au kir à 
+  l’aÿ d’âge mûr \& cætera\,!}
   \def\myfeedback{cité dans 
-  \og\href{https://jacques-andre.fr/faqtypo/lessons.pdf}{Petites 
-  leçons de typographie}\fg\ de Jacques \textsc{André}.}
+  \og\href{https://jacques-andre.fr/faqtypo/lessons.pdf}
+  {Petites leçons de typographie}\fg\ de Jacques 
+  \textsc{André}.}
 \fi
 \htmlregister{\myquestiontext}
 \htmlregister{\pangramme}

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_german.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_german.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_german.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -6,28 +6,33 @@
 \ifPDFTeX % FOR LATEX and PDFLATEX
 	\usepackage[utf8]{inputenc} % necessary
 	\usepackage[T1]{fontenc} % necessary
-	\usepackage{babel}
 \else % assuming XELATEX or LUALATEX
 	\usepackage{fontspec}
-	\usepackage[ngerman]{babel}
 \fi
+\usepackage[ngerman]{babel}
 
 \ifPDFTeX
   \def\myquestiontext{ \underline{Pangramm} :}
   \def\pangramme{\glqq Fix, Schwyz!\grqq, qu\"akt J\"urgen bl\"od vom Pa\ss.}
-  \def\pangrammeother{Wie schon Carl-Friedrich Gau\ss\ sagte: \glqq Nicht 
-  alles \"Uble in \"Osterreich ist \"osterreichischer Herkunft -- aber 
-  manches, was als \glq \"ubel\grq\ empfunden wird, k\"onnte durch 
-  entsprechende \"Anderungen zum Guten ver\"andert werden\grqq.}
+  \def\pangrammeother{Wie schon Carl-Friedrich Gau\ss\ %
+  sagte: \glqq Nicht alles \"Uble in \"Osterreich ist 
+  \"osterreichischer Herkunft -- aber manches, was als \glq 
+  \"ubel\grq\ empfunden wird, k\"onnte durch entsprechende 
+  \"Anderungen zum Guten ver\"andert werden\grqq.}
   \def\myfeedback{}
 \else % assuming XELATEX or LUALATEX
   \def\myquestiontext{ \underline{Pangramm} :}
   \def\pangramme{„Fix, Schwyz!“, quäkt Jürgen blöd vom Paß.}
-  \def\pangrammeother{Wie schon Carl-Friedrich Gauß sagte: „Nicht alles Üble in 
-  Österreich ist österreichischer Herkunft – aber manches, was als ‚übel‘ 
-  empfunden wird, könnte durch entsprechende Änderungen zum Guten verändert 
+  \def\pangrammeother{Wie schon Carl-Friedrich Gauß sagte: 
+  „Nicht alles Üble in Österreich ist österreichischer 
+  Herkunft – aber manches, was als ‚übel‘ empfunden wird, 
+  könnte durch entsprechende Änderungen zum Guten verändert 
   werden“.}
-  \def\myfeedback{}
+  \def\myfeedback{Wie schon Carl-Friedrich Gau\ss\ %
+  sagte: \glqq Nicht alles \"Uble in \"Osterreich ist 
+  \"osterreichischer Herkunft -- aber manches, was als \glq 
+  \"ubel\grq\ empfunden wird, k\"onnte durch entsprechende 
+  \"Anderungen zum Guten ver\"andert werden\grqq.}
 \fi
 \htmlregister{\myquestiontext}
 \htmlregister{\pangramme}
@@ -38,14 +43,28 @@
 \section*{Introduction}
 
 This document is intended to check the support of the \texttt{babel} package 
-with option \texttt{ngerman} that causes problems during \texttt{pdfLaTeX} 
-compilation, due to the special meaning given to \verb|"|.
+with option \texttt{ngerman} that might cause problems during compilation, due 
+to the special meaning given to \verb|"|.
 
 \begin{quiz}[points=1]{German Issues}
+\shorthandoff{"}%preserves pdftex compilation and fixes the use of \" for 
+%other engines
 \begin{multi}[feedback={}]{Test German}
 \myquestiontext
 \item[feedback={\myfeedback}]* \pangramme
 \item \pangrammeother
 \end{multi}
+
+\ifTUTeX
+  \shorthandon{"} % This time we use " as an active character for Umlauts
+  \begin{description}{Additionnal test}
+    Wie schon Carl-Friedrich Gau\ss\ %
+    sagte: \glqq Nicht alles "Uble in "Osterreich ist 
+    "osterreichischer Herkunft -- aber manches, was als \glq 
+    "ubel\grq\ empfunden wird, k"onnte durch entsprechende 
+    "Anderungen zum Guten ver"andert werden\grqq.
+  \end{description}
+\fi
+
 \end{quiz}
 \end{document}

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_horizontal_spacing.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_horizontal_spacing.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_horizontal_spacing.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,58 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\usepackage{amsmath}% for \:, \medspace, \; and \thickspace
+
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of some \LaTeX\ commands for 
+horizontal spacing.
+
+The list of horizontal spacings is inspired from 
+\texttt{https://tex.stackexchange.com/a/74354/228515}.
+
+\begin{quiz}[points=1]{Horizontal spacing}
+\begin{multi}[shuffle=false]{LaTeX Commands}
+Find the nut.
+\item mnnm \quad $mnnm$
+\item mn\space nm \quad $mn\space nm$
+\item mn nm \quad $mn nm$
+\item mn\,nm \quad $mn\,nm$
+\item mn\thinspace nm \quad $ mn\thinspace nm$
+\item mn~nm \quad $mn~nm$
+\item mn\ nm \quad $mn\ nm$
+\item $mn\>nm$ % defined only in math-mode
+\item mn\:nm \quad $mn\:nm$
+\item mn\medspace nm \quad $mn\medspace nm$
+\item mn\;nm \quad $mn\;nm$
+\item mn\thickspace nm \quad $mn\thickspace nm$
+\item* mn\enspace nm \quad $mn\enspace nm$
+\item mn\quad nm \quad $mn\quad nm$
+\item mn\qquad nm \quad $mn\qquad nm$
+\item mn\textvisiblespace nm
+\item mn\\nm
+\item mn\newline nm
+\item mn%
+
+nm
+\item mn\par nm
+\end{multi}
+\begin{multi}[shuffle=false]{Math spacing}
+Dummy text{}
+\item $a+$
+\item $a+b$
+\item* $a+{}$
+\item $a\ +$
+\end{multi}
+\end{quiz}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_horizontal_spacing.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_includegraphics_with_svg.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_includegraphics_with_svg.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_includegraphics_with_svg.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -26,7 +26,7 @@
 \begin{quiz}{Scalable Vector Graphics}
 
 \begin{multi}{Picture}
-\includegraphics{fig/MoodlE_logo.SVG}
+\includegraphics{fig/NoodlE_logo.SVG}
 \item[feedback={\includegraphics{fig/2 2.pdf}}]* \includegraphics{fig/3.gif}
 \item[feedback={\includegraphics{fig/4.jpg}}] \includegraphics{fig/5.jpeg}
 \end{multi}
@@ -34,8 +34,8 @@
 \graphicspath{{./fig/}}
 
 \begin{matching}[dd]{Picture}
-\includegraphics[width=2cm]{MoodlE_logo.SVG}
-% on Linux, if .SVG is omitted moodle tries to manipulate "MoodlE_logo.svg"
+\includegraphics[width=2cm]{NoodlE_logo.SVG}
+% on Linux, if .SVG is omitted moodle tries to manipulate "NoodlE_logo.svg"
 \item \includegraphics{2 2} \answer \includegraphics{3}
 \item \includegraphics{4} \answer \includegraphics{5}
 \item \includegraphics{3} \answer \includegraphics[width=2em]{2 2}
@@ -43,4 +43,4 @@
 
 \end{quiz}
 
-\end{document}
\ No newline at end of file
+\end{document}

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/test_macros.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_macros.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_macros.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,39 +0,0 @@
-% !TeX encoding = UTF-8
-% !TeX spellcheck = en_US
-% !TEX TS-program = lualatex
-\documentclass{article}
-\usepackage[nostamp]{moodle}
-\ifPDFTeX % FOR LATEX and PDFLATEX
-	\usepackage[utf8]{inputenc} % necessary
-	\usepackage[T1]{fontenc} % necessary
-\else % assuming XELATEX or LUALATEX
-	\usepackage{fontspec}
-\fi
-\usepackage{eurosym,textcomp} % for Euro symbol
-
-\begin{document}
-
-\section*{Introduction}
-
-This document is intended to check the support of some \LaTeX\ macros for 
-conversion to HTML.
-
-\begin{quiz}[points=1]{LaTeX Macros}
-\begin{multi}{LaTeX Macros}
-The following commands should not be placed in items: \\ and \par
-Find the \LaTeX\ logo
-\item* \TeX\ and \LaTeX
-\item (tilde)~and \#
-\item \$ and \&
-\item \& and \S
-\item \{ and \}
-\item (space)\ and \relax (relax)
-\item (space)\,and\thinspace(thinspace)
-\item \dots\ and \ldots
-\item \euro\ and \texteuro
-\item \TeX\ and \LaTeX
-\item \_ and \textbackslash
-\end{multi}
-
-\end{quiz}
-\end{document}

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_matching.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_matching.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_matching.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -9,28 +9,34 @@
 \else % assuming XELATEX or LUALATEX
 	\usepackage{fontspec}
 \fi
-%\RLsetrandomseed{3}
+%\RLsetrandomseed{59}
 \begin{document}
 
 \section*{Introduction}
 
-This document is intended to check the support of the matching question type.
+This document is intended to check the support of the matching question 
+type.
 
 \begin{quiz}{Matching}
 
 \begin{matching}[dd]{Matching}
 Question text
-\item A \answer 1
-\item B \answer 2
-\item C \answer 3
-\item   \answer 4
+\item A\\B \answer 1
+\item B \answer very very very very very very very very very very very very 
+very very very very very very very very very very very very very very very very 
+very very long text 
+\item very very very very very very very very very very very very 
+very very very very very very very very very very very very very very very very 
+very very long text \answer 1
+\item   \answer 3
 \end{matching}
 
 \begin{matching}[shuffle=false]{Matching}
 Question text
-\item A \answer 1
+\item A\\B \answer 1
 \item B \answer 2
-\item C \answer 3
+\item C \answer 2
+\item D \answer 2
 \item   \answer 4
 \end{matching}
 

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_multi.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_multi.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_multi.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -20,18 +20,23 @@
 \begin{itemize}
 	\item Single or multiple correct answer
 	\item Shuffling or no shuffling
+	\item Numbering
 \end{itemize}
 
-\begin{quiz}{Example Quiz}
+\begin{quiz}[numbering=none]{Example Quiz}
 
-\begin{multi}{Multiple Choice}
+\renewcommand\do[1]{
+\begin{multi}[numbering=#1]{Multiple Choice}
 Text
 \item* A
 \item B
 \item C
 \end{multi}
+}
+\docsvlist{alph,abc,Alph,ABCD,arabic,123,roman,iii,Roman,IIII}
 
-\begin{multi}[multiple,feedback={abc\\def $\sqrt{2}$}]{Multiple Choice}
+\begin{multi}[multiple,feedback={abc\\def 
+$\sqrt{2}$}]{Multiple Choice}
 Select the following numbers that are prime.
 \item[fraction=70] $\sqrt{25}$
 \item[fraction=-10] \textbf{68}
@@ -40,7 +45,8 @@
 \item \texttt{nothing}
 \end{multi}
 
-\begin{multi}[shuffle,feedback={abc\\def $\sqrt{2}$}]{Multiple Choice}
+\begin{multi}[shuffle,feedback={abc\\def $\sqrt{2}$}]{Multiple 
+Choice}
 Select the following numbers that are prime.
 \item* $\sqrt{25}$
 \item[fraction=-30] 6

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_numerical.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_numerical.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_numerical.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,32 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of numerical questions.
+
+\begin{quiz}{Numerical}
+
+\begin{numerical}{Numerical}
+Enter an integer $n$ such that $0< n\leq 2$.
+\item[tolerance=0.001,fraction={10},feedback={study difference between $<$ and 
+$\leq$}] 0
+\item[tolerance=0.01,feedback={good!}] 1
+\item[tolerance=0.1,feedback={OK}] 2
+\item[tolerance=0,feedback={No!},fraction=0] 3
+\end{numerical}
+
+\end{quiz}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_numerical.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_paragraph_breaks.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_paragraph_breaks.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_paragraph_breaks.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -28,7 +28,11 @@
 
 \begin{cloze}{Close-multi}
 \begin{multi}[vertical]
+\begin{center}
 A
+
+Z
+\end{center}
 \item* B
 
 C
@@ -37,7 +41,11 @@
 \end{cloze}
 
 \begin{essay}{Essay}
+\begin{center}
 A
+
+Z
+\end{center}
 \item B
 
 C

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/test_point_points.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_point_points.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_point_points.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,27 +0,0 @@
-% !TeX encoding = UTF-8
-% !TeX spellcheck = en_US
-% !TEX TS-program = lualatex
-\documentclass{article}
-\usepackage[nostamp]{moodle}
-\ifPDFTeX % FOR LATEX and PDFLATEX
-	\usepackage[utf8]{inputenc} % necessary
-	\usepackage[T1]{fontenc} % necessary
-\else % assuming XELATEX or LUALATEX
-	\usepackage{fontspec}
-\fi
-\begin{document}
-\begin{quiz}{Ifnum}
-\begin{multi}{MWE}
-\item* A
-\item B
-\end{multi}
-\begin{multi}[points=.5]{MWE}
-\item* A
-\item B
-\end{multi}
-\begin{multi}[points=3.2]{MWE}
-\item* A
-\item B
-\end{multi}
-\end{quiz}
-\end{document}

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_points.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_points.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_points.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,33 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\begin{document}
+\begin{quiz}{Ifnum}
+\begin{multi}{MWE}
+\item* A
+\item B
+\end{multi}
+\begin{multi}[points=.5]{MWE}
+\item* A
+\item B
+\end{multi}
+\begin{multi}[points=3.2]{MWE}
+\item* A
+\item B
+\end{multi}
+\begin{cloze}{The question}
+\begin{shortanswer}[points=3]\item abc\end{shortanswer}
+\begin{shortanswer}[points=-0.49]\item abc\end{shortanswer}
+\begin{numerical}[points=1.49]\item 0\end{numerical}
+\begin{multi}[default grade=1.51]\item* A\item B\end{multi}
+\end{cloze}
+\end{quiz}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_points.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_punctuation_and_symbols.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_punctuation_and_symbols.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_punctuation_and_symbols.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,92 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\usepackage[main=french,german]{babel}
+\usepackage{eurosym}
+
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of some \LaTeX\ commands for 
+punctuation and other symbols.
+
+Note that Xe\LaTeX\ and Lua\LaTeX\ will typeset \verb|"| and \verb|\dq| as the 
+right double quote, while \verb|"| is what pdf\LaTeX\ typesets and is rendered 
+by Moodle.
+
+The typesetting of \verb|\og| and \verb|\fg| depends on 
+\textsf{babel}'s current language (French or other). Regardless, 
+\textsf{moodle} passes the French \og \emph{guillemets}\fg\ to the XML.
+
+\begin{quiz}[points=1,shuffle=false]{Punctuation and Other Symbols}
+\ifPDFTeX
+  \NoAutoSpacing% this option preserves pdflatex compilation
+\fi
+\begin{multi}{Symbols}
+Find the symbol standing for ``paragraph''.
+\item \%
+\item \#
+\item \_
+\item \textbackslash
+\item \$
+\item \&
+\item* \S
+\item \{
+\item \}
+\item \texteuro
+\item \dots
+\item \ldots
+\item \textexclamdown
+\item \textquestiondown
+\item --
+\item \euro
+\item =
+\end{multi}
+
+\begin{multi}[multiple]{Quotation Marks}
+Find the French quotes
+\item `and'
+\item \textquoteleft and\textquoteright
+\item ``and''
+\item \textquotedblleft and\textquotedblright
+\item \textquotesingle
+\item "
+\item \textquotedbl
+\item[feedback={le fameux chevron!}]* \guilsinglleft\,and\,\guilsinglright
+\item[feedback={le fameux double chevron!}]* 
+\guillemotleft\,and\,\guillemotright
+\item[feedback={these quotes are German!}] \quotesinglbase
+\item[feedback={these are German!}] \quotedblbase 
+\item[feedback={le fameux chevron!}]* \flq\,and\,\frq
+\item[feedback={le fameux double chevron!}]* \flqq\,and\,\frqq
+\item[feedback={le fameux double chevron!}]* \og and\fg
+\item[feedback={these quotes are German!}] \glq and\grq
+\item[feedback={these quotes are German!}] \dq
+\item[feedback={these quotes are German!}] \glqq and\grqq
+\end{multi}
+
+\begin{cloze}{The question}
+Find the symbol ``equal''.
+\begin{multi}
+\item <
+\item >
+\item* =
+\end{multi}
+\begin{multi}[vertical]
+\item $<$
+\item $>$
+\item* $=$
+\end{multi}
+\end{cloze}
+
+\end{quiz}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_punctuation_and_symbols.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_samepage.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_samepage.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_samepage.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,185 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = pdflatex
+\documentclass{article}
+\usepackage[nostamp,handout,samepage]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\moodleregisternewcommands
+\newcommand{\longtext}{Lorem ipsum dolor sit amet, consectetuer adipiscing 
+elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. 
+Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer 
+id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant 
+morbi tristique senectus et netus et malesuada fames ac turpis egestas.}
+\newcommand{\longtexts}{\longtext\par\longtext\par\longtext}
+
+%\RLsetrandomseed{3}
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of the package option
+\texttt{samepage}; it is used in conjunction with the option \texttt{handout}.
+With these options, the PDF file is clean from teacher-only
+information (answers, points, penalty, feedback, tags) and in addition
+the questions are never split across pages.  Hence, it can be given
+to students for classroom work or even as a written form of the test.
+Notice that this is still experimental, works for a subset of question types,
+and it should be checked.
+
+In particular, as would Moodle do, answers in \texttt{matching} questions are 
+shuffled and the option \texttt{shuffle} triggers the shuffling of choices 
+offered (\texttt{multi} and \texttt{matching}). The XML file is generated as 
+usual.
+
+\begin{quiz}[points=1,tags={tag},feedback={General feedback},shuffle]{Option
+Handout with Samepage}
+
+\begin{description}{Description}
+\longtexts
+\end{description}
+
+\begin{essay}{Essay}
+Question text
+
+\longtexts
+
+\item A
+\item B
+\item C
+\end{essay}
+
+\begin{multi}[shuffle=false]{Multi Single}
+Question text
+
+\longtexts
+
+\item[feedback={AAA}]* A \longtext
+\item[feedback={BBB},fraction=10] B \longtext
+\item[feedback={CCC}] C \longtext
+\end{multi}
+
+\begin{multi}[multiple]{Multi Multiple}
+Question text
+
+\longtexts
+
+\item[feedback={AAA}]* A \longtext
+\item[feedback={BBB}] B \longtext
+\item[feedback={CCC}]* C \longtext
+\item[feedback={DDD}] D \longtext
+\end{multi}
+
+\begin{truefalse}{True/False 1}
+\longtexts
+\item[feedback={AAA}]
+\item[feedback={BBB}]*
+\end{truefalse}
+
+\begin{truefalse}{True/False 2}
+\longtexts
+\item*
+\end{truefalse}
+
+\begin{truefalse}{True/False 3}
+\longtexts
+\item
+\item*
+\end{truefalse}
+
+\begin{numerical}[tolerance=1]{Numerical}
+\longtexts
+\item[feedback={1}] 1
+\item[feedback={3},fraction=0] 3
+\end{numerical}
+
+\begin{shortanswer}[tolerance=1]{Short Answer}
+\longtexts
+\item[feedback={1}] aaa
+\item[feedback={3},fraction=0] bbb
+\end{shortanswer}
+
+\begin{matching}[dd]{Matching}
+\longtexts
+\item A \longtext \answer 1
+\item B \longtext \answer 2
+\item C \longtext \answer 3
+\item   \answer 4
+\end{matching}
+
+\begin{matching}[shuffle=false]{Matching}
+\longtexts
+\item A \longtext \answer 1
+\item B \longtext \answer 2
+\item C \longtext \answer 3
+\item   \answer 4
+\end{matching}
+
+\begin{cloze}{Cloze}
+
+\begin{multi}[horizontal,shuffle=false]
+Question text
+
+\longtexts
+
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{multi}[vertical,shuffle=false]
+Question text
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{multi}[inline,shuffle=false]
+Question text
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{multi}[horizontal]
+Question text
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{multi}[vertical]
+Question text
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{multi}[inline]
+Question text
+\item[feedback={AAA}]* A
+\item[feedback={BBB},fraction=10] B
+\item[feedback={CCC}] C
+\end{multi}
+
+\begin{numerical}[tolerance=1]
+Question text
+\item[feedback={1}] 1
+\item[feedback={3},fraction=0] 3
+\end{numerical}
+
+\begin{shortanswer}[tolerance=1]
+Question text
+\item[feedback={1}] aaa
+\item[feedback={3},fraction=0] bbb
+\end{shortanswer}
+
+\end{cloze}
+
+\end{quiz}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_samepage.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_sanction.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_sanction.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_sanction.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,143 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\def\myequation{$(1+\sqrt{5})/2$}
+\htmlregister{\myequation}
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of the \textsc{sanction} option 
+in multi answers questions. By default, this value is 0. It matters only when 
+\texttt{single=true} and \texttt{allornothing=false}
+
+\begin{quiz}[sanction=40]{Example Quiz}
+
+\begin{multi}[sanction=100]{Multiple Choice}
+Text
+\item* A
+\item B
+\item C
+\end{multi}
+
+\begin{multi}[sanction=10,multiple,feedback={abc\\def 
+$\sqrt{2}$}]{Multiple Choice}
+Select the following numbers that are prime.
+\item[fraction=70] $\sqrt{25}$
+\item[fraction=-10] \textbf{68}
+\item[fraction=30,feedback={$\sqrt{25}$}] 7
+\item[fraction=-70] 8
+\item \texttt{nothing}
+\end{multi}
+
+\begin{multi}[shuffle,feedback={abc\\def $\sqrt{2}$}]{Multiple 
+Choice}
+Select the following numbers that are prime.
+\item* $\sqrt{25}$
+\item 6
+\item[fraction=-30,feedback={$\sqrt{25}$}] 9
+\item \begin{enumerate}
+\item False
+\item Wrong
+\end{enumerate}
+\end{multi}
+
+\begin{cloze}{Cloze}
+%% SINGLE
+\begin{multi}[shuffle=false]
+Regular, single, no shuffle
+\item[feedback={yes}]* chip 
+\item[fraction=10] \textit{chop} 
+\item[feedback={no.},fraction=-30] \textbf{chap}
+\end{multi}
+
+\begin{multi}[shuffle=false,vertical]
+Vertical, single, no shuffle
+\item[feedback={yes}]* chip
+\item[fraction=10] chop
+\item[feedback={no.}] chap
+\end{multi}
+
+\begin{multi}[sanction=10,shuffle=false,horizontal]
+Horizontal, single, no shuffle
+\item[feedback={yes}]* chip
+\item[fraction=10] chop
+\item[feedback={no.}] chap
+\end{multi}
+
+\begin{multi}[shuffle=true]
+	Regular, single, shuffle
+	\item[]* chip
+	\item[feedback={yes}] chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+\begin{multi}[shuffle=true,vertical]
+	Vertical, single, shuffle
+	\item[feedback={yes}]* chip
+	\item[fraction=10] chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+\begin{multi}[shuffle=true,horizontal]
+	Horizontal, single, shuffle
+	\item[feedback={yes}]* chip
+	\item chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+%% MULTIPLE
+\begin{multi}[multiple,shuffle=false]
+	Regular, multiple, no shuffle
+	\item* chip
+	\item[feedback={yes}]* chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+%\begin{multi}[multiple,shuffle=false,vertical]
+%	Vertical, multiple, no shuffle
+%	\item[feedback={yes}]* chip
+%	\item* chop
+%	\item[feedback={no.}] chap
+%\end{multi}
+
+\begin{multi}[sanction=33.33333,multiple,shuffle=false,horizontal]
+	Horizontal, multiple, no shuffle
+	\item[feedback={yes}]* chip
+	\item* chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+\begin{multi}[multiple,shuffle=true]
+	Regular, multiple, shuffle
+	\item[]* chip
+	\item[feedback={yes}]* chop
+	\item[feedback={no.}] chap
+\end{multi}
+%
+%\begin{multi}[multiple,shuffle=true,vertical]
+%	Vertical, multiple, shuffle
+%	\item[feedback={yes}]* chip
+%	\item* chop
+%	\item[feedback={no.}] chap
+%\end{multi}
+%
+\begin{multi}[multiple,shuffle=true,horizontal]
+	Horizontal, multiple, shuffle
+	\item[feedback={yes}]* chip
+	\item* chop
+	\item[feedback={no.}] chap
+\end{multi}
+
+\end{cloze}
+
+\end{quiz}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_sanction.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_shortanswer.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_shortanswer.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_shortanswer.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,6 +1,6 @@
 % !TeX encoding = UTF-8
 % !TeX spellcheck = en_US
-% !TEX TS-program = pdflatex
+% !TEX TS-program = lualatex
 \documentclass{article}
 \usepackage[nostamp]{moodle}
 \ifPDFTeX % FOR LATEX and PDFLATEX

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/test_special_characters.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_special_characters.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_special_characters.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,90 +0,0 @@
-% !TeX encoding = UTF-8
-% !TeX spellcheck = en_US
-% !TEX TS-program = lualatex
-\documentclass{article}
-\usepackage[nostamp]{moodle}
-\ifPDFTeX % FOR LATEX and PDFLATEX
-	\usepackage[utf8]{inputenc} % necessary
-	\usepackage[T1]{fontenc} % necessary
-\else % assuming XELATEX or LUALATEX
-	\usepackage{fontspec}
-\fi
-\usepackage{libertine} % includes the "großes Eszett" ß
-
-\def\UTFdiacriticLC{å à â ã é è ë ê î ï ñ õ ô ö ù ü û ç }
-\def\UTFdiacriticUC{Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ô Ö Ù Ü Û Ç }
-\def\UTFligaturesLC{}
-\def\UTFligaturesUC{}
-\def\UTFotherLC{}
-\def\UTFotherUC{}
-\def\UFTextend{
-  \newcommand\addtomacro[2]{\expandafter\def\expandafter##1\expandafter{##1##2}}%
-  \addtomacro{\UTFdiacriticLC}{ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ŏ ŭ č ď ě ľ ň ř š ť 
-  ž }%
-  \addtomacro{\UTFdiacriticUC}{Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť 
-  Ž }%
-  \addtomacro{\UTFligaturesLC}{œ æ ß }%
-  \addtomacro{\UTFligaturesUC}{Œ Æ ẞ }%
-  \addtomacro{\UTFotherLC}{« ø ł » ¿ ¡ }%
-  \addtomacro{\UTFotherUC}{Ø Ł }%
-}
-\ifTUTeX % xetex and luatex compile fine the following in the XML
-  \UFTextend
-\fi
-\def\LaTeXdiacriticLC
-{\aa\ \`a \^a \~a \'e \`e \"e \^e \^i \"i \~n \~o \"o \^o \`u \"u \^u \c{c}
-\c{s} \c{t} \H{o} \H{u} \"y \k{a} \k{e} \k{i} \k{o} \k{u} \u{a} \u{e} \u{g} 
-\u{i} \u{\i} \u{o} \u{u} \v{c} \v{d} \v{e} \v{l} \v{n} \v{r} \v{s} \v{t} \v{z} }
-\def\LaTeXdiacriticUC
-{\AA\ \`A \^A \~A \'E \`E \"E \^E \^I \"I \~N \~O \"O \^O \`U \"U \^U \c{C}
-\c{S} \c{T} \H{O} \H{U} \"Y \k{A} \k{E} \k{I} \k{O} \k{U} \u{A} \u{E} \u{G} 
-\u{I} \u{O} \u{U} \v{C} \v{D} \v{E} \v{L} \v{N} \v{R} \v{S} \v{T} \v{Z} }
-\def\LaTeXligaturesLC{\oe\ \ae\ \ss\ }
-\def\LaTeXligaturesUC{\OE\ \AE\ \SS\ }
-\def\LaTeXotherLC{\guillemotleft\ \o\ \l\ \guillemotright\ \textquestiondown\ %
-\textexclamdown\ }
-\def\LaTeXotherUC{\O\ \L\ }
-
-\htmlregister{\UTFdiacriticLC}
-\htmlregister{\UTFdiacriticUC}
-\htmlregister{\LaTeXdiacriticLC}
-\htmlregister{\LaTeXdiacriticUC}
-\htmlregister{\UTFligaturesLC}
-\htmlregister{\UTFligaturesUC}
-\htmlregister{\LaTeXligaturesLC}
-\htmlregister{\LaTeXligaturesUC}
-\htmlregister{\UTFotherLC}
-\htmlregister{\UTFotherUC}
-\htmlregister{\LaTeXotherLC}
-\htmlregister{\LaTeXotherUC}
-
-\begin{document}
-
-\section*{Introduction}
-
-This document is intended to check the support of diacritical marks (accents) 
-and ligatures found in different languages written with the Latin alphabet.
-
-For most of them, two ways of encoding are tested: UTF8 et \LaTeX{} syntax.
-
-\begin{quiz}[points=1]{Diacritical marks and ligatures}
-
-\begin{multi}{\UTFdiacriticUC}
-\UTFdiacriticLC\\
-\UTFdiacriticUC\\
-\UTFligaturesLC \UTFligaturesUC \UTFotherUC \UTFotherLC
-\item[feedback={\UTFdiacriticUC}] \UTFdiacriticLC
-\item[feedback={\UTFdiacriticLC}]* \UTFdiacriticUC
-\end{multi}
-
-\begin{multi}{\LaTeXdiacriticUC}
-\LaTeXdiacriticLC\\
-\LaTeXdiacriticUC\\
-\LaTeXligaturesLC \LaTeXligaturesUC \LaTeXotherUC \LaTeXotherLC
-\item[feedback={\LaTeXdiacriticUC}] \LaTeXdiacriticLC 
-\item[feedback={\LaTeXdiacriticLC}]* \LaTeXdiacriticUC
-\end{multi}
-
-\end{quiz}
-
-\end{document}

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/test_turkish.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_turkish.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_turkish.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,47 @@
+% !TeX encoding = UTF-8
+% !TeX spellcheck = en_US
+% !TEX TS-program = lualatex
+\documentclass{article}
+\usepackage[nostamp]{moodle}
+\ifPDFTeX % FOR LATEX and PDFLATEX
+	\usepackage[utf8]{inputenc} % necessary
+	\usepackage[T1]{fontenc} % necessary
+\else % assuming XELATEX or LUALATEX
+	\usepackage{fontspec}
+\fi
+\usepackage[turkish]{babel}
+
+\ifPDFTeX
+  \def\myquestiontext{ \underline{Pangramm} :}
+  \def\pangramme{Pijamal\i\ hasta ya\u{g}\i z \c{s}of\"ore \c{c}abucak 
+  g\"uvendi.}
+  \def\pangrammeother{Saf ve haydut k\i z \c{c}ocu\u{g}u bin plaj 
+  g\"orm\"u\c{s}.}
+  \def\myfeedback{}
+\else % assuming XELATEX or LUALATEX
+  \def\myquestiontext{ \underline{Pangramm} :}
+  \def\pangramme{Pijamalı hasta yağız şoföre çabucak güvendi.}
+  \def\pangrammeother{Saf ve haydut kız çocuğu bin plaj görmüş.}
+  \def\myfeedback{}
+\fi
+\htmlregister{\myquestiontext}
+\htmlregister{\pangramme}
+\htmlregister{\pangrammeother}
+\htmlregister{\myfeedback}
+\begin{document}
+
+\section*{Introduction}
+
+This document is intended to check the support of the \texttt{babel} package 
+with option \texttt{turkish} that causes problems during \texttt{pdfLaTeX} 
+compilation, due to shorthands.
+
+\begin{quiz}[points=1]{Turkish Issues}
+\shorthandoff{=:!}% this preserves compilation (pdflatex, xelatex, lualatex)
+\begin{multi}[feedback={}]{Test Turkish}
+\myquestiontext
+\item[feedback={\myfeedback}]* \pangramme
+\item \pangrammeother
+\end{multi}
+\end{quiz}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moodle/test/test_turkish.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/test_verbatim.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/test_verbatim.tex	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/test_verbatim.tex	2023-01-29 21:21:06 UTC (rev 65672)
@@ -37,12 +37,27 @@
 \fi
 \end{filecontents*}
 
-\begin{multi}{Multi}
+\begin{multi}{LaTeX}
 \verbatiminput{test.log}
 \item[feedback={}]* test
 \item[feedback={}] toast
 \end{multi}
 
+\begin{filecontents*}[overwrite]{test.log}
+#include <stdio.h>
+int main() {
+    char c='\0', *pc=&c;
+    printf("Hello world!\n");
+    return *pc;
+}
+\end{filecontents*}
+\begin{multi}{C}
+\verbatiminput{test.log}
+\item[feedback={}]* "\&test"
+\item[feedback={}] 'toast'
+\item <$<a>$>
+\end{multi}
+
 \end{quiz}
 
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_autopoints-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_autopoints-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_autopoints-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -37,7 +37,7 @@
     <text><![CDATA[Auto sanction]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Without the star, an error shall be issued because correct answers should sum up to 100%. </p>]]></text>
+    <text><![CDATA[<p>Without the star, an error shall be issued because correct answers should add up to 100%. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -49,19 +49,19 @@
   <answer fraction="100" format="html">
     <text><![CDATA[<p>A</p>]]></text>
   </answer>
-  <answer fraction="-50" format="html">
+  <answer fraction="-100" format="html">
     <text><![CDATA[<p>B</p>]]></text>
   </answer>
-  <answer fraction="-50" format="html">
+  <answer fraction="-100" format="html">
     <text><![CDATA[<p>C</p>]]></text>
   </answer>
 </question>
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[All correct but sum \(\geq 100\)]]></text>
+    <text><![CDATA[All correct but total \(\geq 100\)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A warning shall be issued because correct answers must sum up to 100%. </p>]]></text>
+    <text><![CDATA[<p>A warning shall be issued because correct answers must add up to 100%. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -106,12 +106,87 @@
   <answer fraction="-50" format="html">
     <text><![CDATA[<p>1</p>]]></text>
   </answer>
-  <answer fraction="-25" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>6</p>]]></text>
   </answer>
-  <answer fraction="-25" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>8</p>]]></text>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Fruits (automatic scores)]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the fruits </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Apple</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Burger</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Hot dog</p>]]></text>
+  </answer>
+  <answer fraction="-33.33333" format="html">
+    <text><![CDATA[<p>Pizza</p>]]></text>
+  </answer>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Orange</p>]]></text>
+  </answer>
+  <answer fraction="33.33333" format="html">
+    <text><![CDATA[<p>Banana</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Vegetables (advanced scores)]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the vegetables </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="10" format="html">
+    <text><![CDATA[<p>Radish</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>Good</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>Chocolate</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>Biscuit</p>]]></text>
+  </answer>
+  <answer fraction="-10" format="html">
+    <text><![CDATA[<p>Cheese</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>Carrot</p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Embedded questions]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the fruits {1:MULTIRESPONSE_S:=Apple~Burger~Hot dog~Pizza~=Orange~=Banana}Select the vegetables {1:MULTIRESPONSE_S:%10%Radish#Good~%-20%Chocolate~%-20%Biscuit~%-10%Cheese~=Carrot}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_lua-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_lua-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_lua-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Arithmetic Quiz (3, 2)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 = \){1:NUMERICAL:=5:0}\(3 - 2 = \){1:NUMERICAL:=1:0}\(3 * 2 = \){1:NUMERICAL:=6:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 = \){2:NUMERICAL:=5:0}\(3 - 2 = \){2:NUMERICAL:=1:0}\(3 * 2 = \){2:NUMERICAL:=6:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>
@@ -41,7 +41,7 @@
     <text><![CDATA[Arithmetic Quiz (4, 3)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 = \){1:NUMERICAL:=7:0}\(4 - 3 = \){1:NUMERICAL:=1:0}\(4 * 3 = \){1:NUMERICAL:=12:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 = \){2:NUMERICAL:=7:0}\(4 - 3 = \){2:NUMERICAL:=1:0}\(4 * 3 = \){2:NUMERICAL:=12:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_python-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_python-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_calculated_python-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Arithmetic Quiz (3, 2)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 =\){1:NUMERICAL:=5:0}\(3 - 2 =\){1:NUMERICAL:=1:0}\(3 * 2 =\){1:NUMERICAL:=6:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(3 + 2 =\){2:NUMERICAL:=5:0}\(3 - 2 =\){2:NUMERICAL:=1:0}\(3 * 2 =\){2:NUMERICAL:=6:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>
@@ -41,7 +41,7 @@
     <text><![CDATA[Arithmetic Quiz (4, 3)]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 =\){1:NUMERICAL:=7:0}\(4 - 3 =\){1:NUMERICAL:=1:0}\(4 * 3 =\){1:NUMERICAL:=12:0}</p>]]></text>
+    <text><![CDATA[<p>Solve the following tasks!<BR/> \(4 + 3 =\){2:NUMERICAL:=7:0}\(4 - 3 =\){2:NUMERICAL:=1:0}\(4 * 3 =\){2:NUMERICAL:=12:0}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_circuitikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_circuitikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_circuitikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -15,34 +15,34 @@
   <questiontext format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,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 
-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 
+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 
+/Y3D4E7LnQdV7zCqm/JJDq3cHUyqf5OpR8nrmP+cqG89KHLeSZsDnXqRZvmcJZCKnK8XVTeqarZO 
+NlPXhvbBAt0jTosFOp1eHOy3jDfB9wUH+60XATjIi6ru/ov6BqfN8vGjUlT4BuxHPz4/2g84rR5u 
+PJwolVwe+OE2Sh+9HXNaPnqrtHlhfjd1P+2e4WXOxfTJW1dnV/xbqft5j4+57JnlNNy28D314TNT 
+d2ZTTZ7TblONcX0omrrdnKlGGU6zLV/m9aFs6s5sSMxxGm1ILFEfyqbuLt2OlHJ64+3xaX0ofma4 
+HTP7Br/jMyTXrl73mugKj73yR1z7kw7WJkcN9gktlOwslc4eDOftOEsOwmxHwVxwpDdVzh6cPKWo 
+fUxrkzUvcFzYTZUPEYpc6rhw9SOuZyavj1gsqHkA+0rHhf/7UZVeD3Cp48LbBiv/8opKB2EKVr2C 
+r1a52HHhupxtvNYhwsqclzviWpez6gFsdznO80+evRi16KGwsm/5unw1Kv3StIqHhks8nCr/Drpm 
+PNxoYT2Tv+arpBtfI6rzfNH5uVHJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+kpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcv4s 
+nBE/0ectzn8AAc62smkBa3AAAAAASUVORK5CYII= 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -55,34 +55,34 @@
   <answer fraction="100" format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,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 
-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 
+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 
+/Y3D4E7LnQdV7zCqm/JJDq3cHUyqf5OpR8nrmP+cqG89KHLeSZsDnXqRZvmcJZCKnK8XVTeqarZO 
+NlPXhvbBAt0jTosFOp1eHOy3jDfB9wUH+60XATjIi6ru/ov6BqfN8vGjUlT4BuxHPz4/2g84rR5u 
+PJwolVwe+OE2Sh+9HXNaPnqrtHlhfjd1P+2e4WXOxfTJW1dnV/xbqft5j4+57JnlNNy28D314TNT 
+d2ZTTZ7TblONcX0omrrdnKlGGU6zLV/m9aFs6s5sSMxxGm1ILFEfyqbuLt2OlHJ64+3xaX0ofma4 
+HTP7Br/jMyTXrl73mugKj73yR1z7kw7WJkcN9gktlOwslc4eDOftOEsOwmxHwVxwpDdVzh6cPKWo 
+fUxrkzUvcFzYTZUPEYpc6rhw9SOuZyavj1gsqHkA+0rHhf/7UZVeD3Cp48LbBiv/8opKB2EKVr2C 
+r1a52HHhupxtvNYhwsqclzviWpez6gFsdznO80+evRi16KGwsm/5unw1Kv3StIqHhks8nCr/Drpm 
+PNxoYT2Tv+arpBtfI6rzfNH5uVHJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+kpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcv4s 
+nBE/0ectzn8AAc62smkBa3AAAAAASUVORK5CYII= 
 "></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -89,34 +89,34 @@
     <text><![CDATA[<p>toast</p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,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 
-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 
+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 
+/Y3D4E7LnQdV7zCqm/JJDq3cHUyqf5OpR8nrmP+cqG89KHLeSZsDnXqRZvmcJZCKnK8XVTeqarZO 
+NlPXhvbBAt0jTosFOp1eHOy3jDfB9wUH+60XATjIi6ru/ov6BqfN8vGjUlT4BuxHPz4/2g84rR5u 
+PJwolVwe+OE2Sh+9HXNaPnqrtHlhfjd1P+2e4WXOxfTJW1dnV/xbqft5j4+57JnlNNy28D314TNT 
+d2ZTTZ7TblONcX0omrrdnKlGGU6zLV/m9aFs6s5sSMxxGm1ILFEfyqbuLt2OlHJ64+3xaX0ofma4 
+HTP7Br/jMyTXrl73mugKj73yR1z7kw7WJkcN9gktlOwslc4eDOftOEsOwmxHwVxwpDdVzh6cPKWo 
+fUxrkzUvcFzYTZUPEYpc6rhw9SOuZyavj1gsqHkA+0rHhf/7UZVeD3Cp48LbBiv/8opKB2EKVr2C 
+r1a52HHhupxtvNYhwsqclzviWpez6gFsdznO80+evRi16KGwsm/5unw1Kv3StIqHhks8nCr/Drpm 
+PNxoYT2Tv+arpBtfI6rzfNH5uVHJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5y 
+kpOc5CQnOclJTnKSk5zkJCc5yUlOcpKTnOQkJznJSU5ykpOc5CQnOclJTnKSk5zkJCc5yUlOcv4s 
+nBE/0ectzn8AAc62smkBa3AAAAAASUVORK5CYII= 
 "></p>]]></text></feedback>
   </answer>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_multi-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_multi-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_multi-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
+    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%11%chop~%-31%chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~%-103%chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_numerical-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_numerical-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_numerical-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -4,7 +4,7 @@
  
 <question type="category">
   <category>
-    <text>$course$/top/Close Short Answer</text>
+    <text>$course$/top/Close Numerical</text>
   </category>
 </question>
  
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). {1:NUMERICAL:%10%0:0.001#study difference between \(<\) and \(\leq \)~=1:0.01#good!~=2:0.1#OK}</p>]]></text>
+    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). {1:NUMERICAL:%10%0:0.001#study difference between \(<\) and \(\leq \)~=1:0.01#good!~=2:0.1#OK~3:0#No!}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_shortanswer-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_shortanswer-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_cloze_shortanswer-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Who? {1:SHORTANSWER_C:=chip~%10%chop#yes~%-30%chap#no.}what? {1:SHORTANSWER:=chip~%10%chop#yes~%-30%chap#no.}</p>]]></text>
+    <text><![CDATA[<p>Who? {1:SHORTANSWER_C:=chip~%10%chop#yes~%-30%chap#no.}what? {1:SHORTANSWER:=chip~%11%chop#yes~%-31%chap#no.}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_commands-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_commands-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_commands-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -23,9 +23,12 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><EM>emphasis</EM></p>]]></text>
+    <text><![CDATA[<p>\(\rm\TeX\) and<BR/>\(\rm\LaTeX\)</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
+    <text><![CDATA[<p>word with <EM>emphasis</EM> catches the eye</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
     <text><![CDATA[<p><B>bold</B></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -38,9 +41,12 @@
     <text><![CDATA[<p><SPAN STYLE="font-variant: small-caps;">Small Capitals</SPAN></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><SPAN STYLE="text-decoration: underline;">underlined</SPAN></p>]]></text>
+    <text><![CDATA[<p><SPAN STYLE="text-decoration: underline;">underlined</SPAN> in text</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(\underline{underlined}\) in math</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
     <text><![CDATA[<p>M<SUP>me</SUP></p>]]></text>
   </answer>
   <answer fraction="0" format="html">

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_description-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_description-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_description-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Requirements]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>This is a description. Not really a question. We can include environments and math. <UL><LI>This</LI><LI>That</LI></UL> \[\mathrm {e}^{2\mathrm {i}\pi }+1=0.\]</p>]]></text>
+    <text><![CDATA[<p>This is a description. Not really a question. We can include environments and math. <UL><LI>This</LI><LI>That</LI></UL> <CENTER>\[\mathrm {e}^{2\mathrm {i}\pi }+1=0.\]</CENTER></p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html">

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_diacritics_and_ligatures-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_diacritics_and_ligatures-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_diacritics_and_ligatures-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Diacritical marks and ligatures</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Å Æ Ð Đ IJ Ł Ŋ Ø Œ ẞ Þ ]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Ä Ë Ï Ö Ü Á É Í Ó Ú Ċ Ė Ġ İ Ż Ā Ē Ḡ Ī Ō Ū Ȳ Â Ê Î Ô Û À È Ì Ò Ù Ã Ñ Õ Ḇ Ḏ Ḵ Ḻ Ṉ Ṯ Ẕ Ç Ş Ţ Ạ Ḅ Ő Ű Ą Ę Į Ǫ Ų Å Ů Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>ä ë ï ö ü ÿ á é í ó ú ċ ė ġ i ż ā ē ḡ ī ō ū ȳ â ê î ô û à è ì ò ù ã ñ õ ḇ ḏ ḵ ḻ ṉ ṯ ẕ ç ş ţ ạ ḅ ő ű ą ę į ǫ ų å ů ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>å æ ð đ ı ij ȷ ł ŋ ø œ ß þ </p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_environments-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_environments-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_environments-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[LaTeX Environments]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p><CENTER><SPAN STYLE="font-variant: small-caps;">This is a question</SPAN></CENTER> Select the numbered list </p>]]></text>
+    <text><![CDATA[<p><CENTER><SPAN STYLE="font-variant: small-caps;">This is a question</SPAN></CENTER> <BLOCKQUOTE>and this is a quote</BLOCKQUOTE> <BR/>Select the numbered list </p>]]></text>
   </questiontext>
   <defaultgrade>1</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -30,6 +30,9 @@
     <text><![CDATA[<p><UL><LI>E <OL><LI>X</LI><LI>Y</LI><LI>Z</LI></OL></LI><LI>F</LI></UL></p>]]></text>
     <feedback format="html"><text><![CDATA[<p>Example of numbered list:<BR/><OL><LI>first item</LI><LI>second item</LI></OL></p>]]></text></feedback>
   </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><BLOCKQUOTE>this is a quotation.</BLOCKQUOTE></p>]]></text>
+  </answer>
 </question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_fancyvrb-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_fancyvrb-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_fancyvrb-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -10,7 +10,7 @@
  
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[Multi]]></text>
+    <text><![CDATA[LaTeX]]></text>
   </name>
   <questiontext format="html">
     <text><![CDATA[<p>Pick up the code decorated with line numbering on both sides. </p>]]></text>
@@ -35,5 +35,29 @@
     <feedback format="html"><text><![CDATA[<p>yes!</p>]]></text></feedback>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[C]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark>#include <stdio.h></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><mark>int main() {</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark>    char c='\0', *pc=&c;</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><mark>    printf("Hello world!\n");</mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span>    return *pc;<BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span>}<BR/></CODE></PRE> <BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>“&test"</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>’toast’</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><\(<a>\)></p>]]></text>
+  </answer>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_generalfeedback-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_generalfeedback-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_generalfeedback-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -103,15 +103,15 @@
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>æ</p>]]></text>
-    <answer><text>oui </text></answer>
+    <answer format="html"><text><![CDATA[oui ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>œ</p>]]></text>
-    <answer><text>non </text></answer>
+    <answer format="html"><text><![CDATA[non ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>Å</text></answer>
+    <answer format="html"><text><![CDATA[Å]]></text></answer>
   </subquestion>
 </question>
 <question type="essay">

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_german-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_german-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_german-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -24,11 +24,23 @@
   <answernumbering>abc</answernumbering>
   <answer fraction="100" format="html">
     <text><![CDATA[<p>„Fix, Schwyz!“, quäkt Jürgen blöd vom Paß.</p>]]></text>
-    <feedback format="html"><text><![CDATA[<p></p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Wie schon Carl-Friedrich Gauß sagte: „Nicht alles Üble in Österreich ist österreichischer Herkunft – aber manches, was als ‚übel‘ empfunden wird, könnte durch entsprechende Änderungen zum Guten verändert werden“.</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
     <text><![CDATA[<p>Wie schon Carl-Friedrich Gauß sagte: „Nicht alles Üble in Österreich ist österreichischer Herkunft – aber manches, was als ‚übel‘ empfunden wird, könnte durch entsprechende Änderungen zum Guten verändert werden“.</p>]]></text>
   </answer>
 </question>
+<question type="description">
+  <name format="html">
+    <text><![CDATA[Additionnal test]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Wie schon Carl-Friedrich Gauß sagte: „Nicht alles Üble in Österreich ist österreichischer Herkunft – aber manches, was als ‚übel‘ empfunden wird, könnte durch entsprechende Änderungen zum Guten verändert werden“.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_handout-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_handout-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_handout-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -297,19 +297,19 @@
   <shuffleanswers>0</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>A</p>]]></text>
-    <answer><text>1 </text></answer>
+    <answer format="html"><text><![CDATA[1 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer><text>2 </text></answer>
+    <answer format="html"><text><![CDATA[2 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>C</p>]]></text>
-    <answer><text>3 </text></answer>
+    <answer format="html"><text><![CDATA[3 ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>4</text></answer>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
   </subquestion>
   <tags>
     <tag><text><![CDATA[tag]]></text></tag>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_horizontal_spacing-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_horizontal_spacing-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_horizontal_spacing-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Horizontal spacing</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[LaTeX Commands]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the nut. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mnnm  \(mnnm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\,nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \( mn\thinspace nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn~nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\ nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(mn\>nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp14;nm  \(mn\:nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp14;nm  \(mn\:nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp13;nm  \(mn\;nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn&emsp13;nm  \(mn\;nm\)</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\enspace nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn nm  \(mn\quad nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn  nm  \(mn\qquad nm\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn␣nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>mn<BR/>nm</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Math spacing]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Dummy text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a+\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a+b\)</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>\(a+{}\)</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\(a\ +\)</p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -62,115 +62,118 @@
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
 "></p>]]></text>
-    <feedback format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <feedback format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
+gg== 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
@@ -208,115 +211,118 @@
   <hidden>0</hidden>
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p><IMG  SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHsAAADICAQAAABikFYvAAAX6klEQVR42u1d2XbjSK4EV8nu7vn/ 
-H71lSdzuQyYSEUBSLlVr85khj+0qLxKDQAIBJAA2gkcrnXTSSy+9DDLKIKMcZJSDHOWQz2P50FN/ 
-Msoggwz577t8tuVspJVG6scmqyyyyCKTzDLJJJNc8nkuH+k8yVlO+fO5/HSSS/67WWaZZZFZFlll 
-kTWfGwKtH400lc/6L/0eX/gmW/m6le8K/GuTexx4Nftn7Rq/hc03IL6glM8MVQHjd/7siDdOwo1v 
-ywd+tuu0q/wt2A28SVPegD8bfAS+5o/N3Yp7yNmA2DUo3DaA9kL6BjarNL+4fvYvh6C3CvD7HXhN 
-6ezgawc3wAMn8P03b9AC3Na9KEPeiulY8//aP4C+0b/tL21ZRdDJdK7lY5U1/3QFNHQNBltfpKez 
-y7a9ZpcZuEJenCnZZJNWNliHrCv210s+Z1my/WWdsRWtkNO16Tv3BfYiXYGe/jrdrM1gt3T/zH3p 
-V3VJHUFvALiBXkgT0vfTBay0QJrqAlHQcwG+FOis4gq6DxqWbEuf/93md24i7DHA7jLYsXjioQK/ 
-Bhq/h7cCNaSl1bbRK6xZ1grd+9sGpKyg7bawWdVbUJV3L0cHuytSHmWUsVCRsdyGvkgdgSPoVdaw 
-KNDOSlgGa1B0A46X3eYV3JNzvKZDZmeacqOll49d2MbR9MPkbsouBTQD7sDONuI9Kl6gB75W1jjK 
-epUBpN9I3dqY+rcFNMD+yxmKpOR9kfaYZX2QQcay6lXaCraRBUwTSzn6U7PNdfVcQPJrNmcKeqOb 
-gErfOv0z8Kbo2aZH2Cxtg544el/sepKkvoXIJq2s0ua13BBglnOkD0hrVsHVqUqe/q4rKq1gZ/A6 
-BtvLe80mVf3B1stfwT52ABuhK2jvxPQymccxo9slDiRzvgGoA0m6ptqLLNJJL7Ms0ssgk1yyvNNh 
-y6XL7mzLgmmSkv/teE8Hrstg24ruJJJTJBX1kIBXdBMg7x3I8/UmqlvUZTDILFORtxlVg77mxaFm 
-TXr5R5DWtyRtdmN9WT/oeph9M5/CaK25Co9Z2N6takRgYW0Z0iyzTDJkDoKw023pYX0nTcjSlgC7 
-B9jms73RWGkNxZjrahQUYCP/b5xlEKn5gFW2EqVPhXqZK5xllj4r+QpauRnsulFjooJ3cykSN0a1 
-OsnX13D8mQ8wOsHQogML4cPKrQC8lOtj2rMIUt0C+y+SdkP5FSSnvHIMtL4JsqoIftv5zPbAQose 
-Pm/5c5OtuepBckZbfv+k5HgjkuoneTPb23r5zPeuhTdG2D3wMr2XTXZaSdYzJHL0Dbzcax9e1vre 
-XXFJyUrzDWqB/TV5ra4yywTXN5fElLE9ZHRbYmm4rvStBwpJlIVv0sqSHb8An0pvshSFrycbxN0I 
-BGNkyfQsvcaQf68V9tld4dnJcLVlyVk+Lsl7EfP+S4J9qKytnhS9g3Wt/tnUe8npPr23i2DSbhX0 
-xLVkE8pa33WWIRDTBghHUxZAkyW8SJd1UCV9kYuM+aoUdnqVVbZeere6LA5DZbL4BWOrhbKcqFJR 
-2b+D3eX3HTIJWeCWSZF3Vy6/BYknB5VkPckFKNYFpK26ssraF9VhohHTAJLvJkZIE9zZurwZdkw1 
-YrYkSVv9LJtG/d1Olhx96W1o83UlZUdOOWYHrLALaFl72QQTLgowrYGlOCzziEnCmMPWLDbDXoBd 
-11OKPmOiZHNw2W077fag9JTErDIDwVKGOckoi2yS8kdZi/oMTd+eM2AaRnKImWCfKV1/DtLeg82G 
-jWEnZ7M4fbFT4AaZkWqlydfpg6hBxmxopcBeE+y5qJpXuFYwoDPYaTXrPoWCvsjFubF9JY9rW23K 
-ArAXd1pI0hX3hrGZxWIGXQ1akxlJgX0h0iBAUjkBK07alyJxVfXkwrwtN2nLTbCXwrD03wYb7YDq 
-TAyaBzlk2Gl5TEZcejmF4AGB1xnRBMAvZQ+KDdpSUW9PYLzf7gi4ZdVmsO2NYJy4SAer3MePkxzg 
-rzpzir2cypv7TRaf/zLYCNys+CTLFfcllZUtRVJNXnkJ+Cx9/hgK7UivjEqeiGdyXuz7hwJ7yn+V 
-LAfA/gL3wMA5SbBl4rcW5zWVfcbf99ketFfzJV/6LL10mVXvw1YGuQX1H8h5JdcHUUMvvwi2DwHN 
-hyfYG3ltk8TkQK87im2QYyii2tUVdZ0yAH31LcsNI8QlRwko7y7nAvGvZjCMBLse7GOyz+JbW3OT 
-W30R9PVARNxtbmWGlZ6gJwArwEY7veSsnjF2NGxpZXd0fQ62V3Yh0HHTZpYY1dZCT5YxBqN4o9VN 
-toK2vZe+KPlGoA/5dvT5hph7U+AjGLQe4+4abANrB1MY9qexaiBa7Fqk7W/0StYFTZQqa/qOgr7A 
-ml8LyUbDNgPsBZcfmjSpXtR+JnuBzxxz1VfxXnaFHSjeiLYYuLkYpiFDtuBnyfGXFN5tim5mkLYT 
-1YFtAahfjX5/CXOTdXdVg7iXJ1XoeKM0Mkv+Nq3rXgY5EBleirStGAEzRGoR1hpsliyuZp8ftX1F 
-+7rtyPka0Dp0js+avCqVjyfQFyrOMV1Ts4b5flTyLl+lGDn1cKUKmGXOgcZKF/wdWPbb+H0ONSWH 
-iskaX0pkb5IGt1T4Gm8Fb6Iha0l79DJVYV8DvVesseeevjt8BQMfxsT74C45e4eWAT14CllTbFlg 
-z04hfwf2tajqvrUq6arm7HlnYbaO0VpbFgnLO92UlmKEK7C/A17n2PcHzdfGlmUlX2JpL1b1VSQl 
-Di1NpfH25l5croKNGdBHg8Zriztci2j5iNoYEYzKpOTb8mv0JdGPF1+H7cF6F/VI0MweDLopeSdL 
-UXMMRVtING8m7cW98L7EvZ2u+fpHHxHykgPVRWxbEN1fW3bFwUsYbA/dp3ev865nAbbddExaLzlf 
-ttEKVuhNuR1isFd6aYMtATBDfh7gCN4btASef8cSlLpzBxgY9h7w9wJdD4is8GsL0m6KMROV9t46 
-vWa8XnPY1ZiaG+wuJ48807NUyZY/xCs5g67FyFJe7BW3ILowBB+r0gy4u+5e9uzxd564kVdIP7ow 
-K+dqCTgC1aC0HAi7Hmnjv7yMnwX9eghsN4BXd8zQlnxOVPI96LUb89yjHhdigqN1tGb36H8LyvYH 
-P3nGLajTZ/6NajD8e7DfBSy+d404bfTTGsHa/g3sVx5c9LVf+uXpNd2k/aaJn3DsVzYy6FWcvH8a 
-bOwOqpd6evC44wpK/nMOhoxnLM/3pMYZtp8D228d4K4ZVyeiE+PibODkP+Hg5KDfM2Pw9RwMu7If 
-AtvfBC4nqzVpGXTegf1R0o6Aa5C55FsoSnN09SfBxs5T34mInUrp8Nk28uA/CXasp/KlRSlfZsGI 
-AXc7sT8LtkJvnaRxZdf6B4K8fxps7699gx2ycuwisCgt58l/xhEJSu3U3xSn4ou35z8DNhswrpDE 
-5jcRLe4391XtbPgZsKN0O/fVKiV9wy3L+wfBNnjYTI1fbWWbC2PI1ia7vpuS1zNzWKnG/fl4C2ru 
-ixujSM3fCXYC6ZOUUdJ44hyBRtZCT+MWAlnz94FtYaUB15adCLUnyOkUEQJujfBzrnVa3lPamM/W 
-YumWAPcE2rrFzH1JBm2WPHb/vxlsu3CuS+tKU5YB7stXvSmpEAtljSpOgy7eCTYXfFoPYkfQ+wrk 
-tP61bsUz8lgT+1awfZEvNtpaO4QfjmJkBauV2KSlkuC3hV1rcsX+Dw+8L+ta5y9E0FYHbSHJ+k6w 
-OSXIw28GgB4nwWiszXycK6Gx8eKNYFsSAbk3dvoo6Chp7knkcSYzKHlyYm9k0vZB89SAMcg6dnRv 
-jpTOwai9DWwF7dtceVDCKNxGjz1qCnkLbNz6HN4Qti+R7SSOQTFZ9yRpD3mtQJ6Qqb0H7MaB7qQr 
-xssmvxzceKO2Ahkb52ay4zSu6J1g42yIQXoYf3IIgyZtKogUIxbX8xQ+vxFs312alHgkOR8B+ljk 
-jaA3UGps1DLQOk3gTRwY05OuNMGMRcIK+4Ngq5KvGb7vTkPortfg9bD9rADr0Dzkaao8V/WQJ3lZ 
-w3rKny0BcLwBb6bkbNAU9JHOQ5b3UUYZ80CUJOUlV4zX+05jX+LTYce0EQce1sg0FpgfBFul3ZeV 
-rT0qSwB9EZ51a5NCXiBtzJ74rR1rSx0L6I8M/UCT+nT4jSb8V5mhpxyho8yXV6xtnzbybdNdkPVR 
-PuSTYCtBNWkv2YpPAPm8o+gvXtu+HKPdVfFP+ZTPrNwjMXKdn5SM2iwTTItIN4CHOU+v5eSYzcYN 
-W+6zH7OsUdo6s613REUjrDMB90punUQv8Nt+jhoTUuzWPRDwY1ZtP8fLQF8qsG10wksjsJgt4yTh 
-AB7bHNiHfBSSgnJWZqaOi5X84iT9Ith+8AVLmhV8JNC6snmy0yI6OQBBn0DaUdIvkbYvoatly8YK 
-F1e3pYlCc1prkfU5zIDBURazWCPNKvLsXZG4Qx0DD5ykexCMtLviqbUgJ86AYYPGyl1APw+2rxn0 
-a3q8ctokxuSy0IJPZMwiMeWu31I7/2y6Esds68MdDo6A+oc4qKyVpPixN6zk6LCwBPMFsOWqGTMG 
-fqiQE1vXNUmf8hnNGW/nvwC2KbhPBI/Ayo4lqlbglhhOh41AUQt+AuAnB9rKdOh4lbQZsqaNlJqo 
-yxrIV4vo9MU5KDdLG1f1ynJ+HWw0Y5w/wXgLk0c445IVPMH92gXOZXgvge2HPamMj5A9+YDAQ6cm 
-m6R5kJVK+ktO8lVugZm0ONb1BbAbp+I1Jnak6BozZlhuFU3ZyT1MB7PiWw34c/22Dy6PAPSY1RxX 
-tk1XlSoVZSX3VOXl0vY7HhZwfDgzdnTr2geYEwUeJumvKhe3SakvkfZ+IuEIZgxpyuhAb8C/0X6f 
-ScG9x8Z5LA81abVOX8/LPEFReRsPR16W6KiOnvTsG4GjBdfdrqcoOY6U0+80lZjaXJcZtKOjoyzr 
-OhVFp8WkFAeObo81adyHh1F13KvGvQ6MqX2uzKbOT8GYnSVGXZGQVltc7we7qX5YtZF/iMOBAo9j 
-WdEDEBSVdPLWmhn1YDGFFEHLM6SNwwQtPeiVWwnpoZBT5d8eNFKUM0nbBo5WU8IA9oHSxvaVGFWj 
-9fb7lxZr4YqWsotpKcJLZTVPwsmjpRp+PNSSI1weqJ9kfZARtncOxYjxisb8N48CP19h3/EpA1c7 
-le/vwGop4OiyOODwZkzlrHPlLyXE/JJfBfr+eHAcR/FQ2JvgFh7Whdo8YYX9SbwMGRnmRT0nU9jp 
-rE/Jjn5apzE8lKXp9EJOIgxgwvxOB2bKeBg4x9RGRhX2KcN21aQV9X6wA7O50ba7gbb7EJTcIq04 
-Ad3vcxgjU2n7IZC/saYfJ+1UMompIsx3W6DJ4aXWJhhsZGJGTk5k0i6QTLgB9L2ljV7a1yNgZpSp 
-qIWXPO2+njnh+ffotH4b9D39tt+aVwN2dPGV99fsq3HEvxmwL/LV/FRezpc9WdpxPrhK+5Pcle13 
-DIWK2qr2sk7u6hfA5vS/9oB8O17mMbCxt5ZBf2SHZcVVNYKSJO2NWZLz/+WvvLsV9jBvkfXtsG1+ 
-NcrZ1/nXyMlHhYj6Z07NpOIm7V/kpzGNsJsbvSfsOOOkFk/jfqUlEmo7HY0zZZg/MR+tvIyfVFN7 
-RM9DYNdmSnM2lDfmjwD8GMiJPu+Hc6IxifCVP870CI/aJPSHwOZH2MUiul5iyaQ/kZHphEJ8fttF 
-/Ba9+eyTTHLhjo8STcujTVqtj1rVO0KuBZd+RTMVPYvPmZwLPZ0kpoGxSf1BJo1n2tSaGw6BotiD 
-bj1oTSLMpVr0EljYmQyZPXEsbufdOD35z6TNTYhcHMucm4PLrmRDsYVF1dsoCtLPS4ipWdLWMHHD 
-cbslRw/t+zkw4f8RQPcEGvMmU1ZmH2Glorop2G8v5++fHHkHaSvv9s9jOpQiuk8KLccroSVG00xI 
-ea+aHZY/bp759mewzXLjDjWGlp8g7eFKaBmDyy8ILc/V0PIOx+0mDfcsa85K/bTyMl7VCDqp9TkE 
-lra2LyXYWO4J+va13QbefdgJLNOpu1mdI6ETSRdtt+1sYWh5Yzx9P9i+NU3LYTFpYKlgzIr2wMhW 
-YmO4jk9ylnMIML31vtPxu7A99zYv/VmU+kjKPoZ4OoaWyri/KLRU5cZSjLuCvg12TcU/KqXuMc6q 
-506+cnT1i3KhChm7O/6Qed8Cu97P4ckJpgQ/KxX+nPtuYIfDx1gK/LRDTuwpfw+Utu1aGgdqhRvT 
-MNnPO9SaK+0FM9+1x+X5wPIX5EL98yHRht9pUjbDjnND9ztsDxW7jaki34xYL7f5Aj992Qkt11sD 
-jdtgx+eAxUIbLIr1wL2X5nga97IsmDwBC7c0Qu1p3g8yafGZb/VCm714eoR4upPGhRwYWtqOlt+0 
-xSI6P6TzrhKvmbT6Vu2QnRbWAR+FK74NdG1/muuL9loc6vH0zaHlLbD9Vm0tR8adeD7G6kG5Vxdn 
-pR3qL8fMfAp4n5w8ZG1vYMRixXdf1nNtq5YrgZmacKnNSU4VghJbluLU+7se0YHxQ6WwgfwAsD8r 
-8XTMm6SKE460lKR8UbjBG/MPlHMdtgQfzRu1vgWRq0OvbdUibJN2rdL/CUd9bV+z3Fw5iNt317Zq 
-eccS8ycTMe+ngK757Va4CpiLn2MJXa06VOPpuDV7ct+55CTwfubkCbB9QRW3MhwrN4G3akU2wY5L 
-lCxG1KbyWOz+xAPpStyqHSVWHzBFGb4NLX8Jl12gp764KOvpsH3eG7d0uNoE29J8aFnbqrVQ4xSo 
-CcfTTwTeE+iY97ZM6CdkQutbtbqusWcnwrbQ0p7X/QIlZ0/tk/0WWH5SAtg4mYWWuJuF8j6VRIIp 
-Nj6O/gHx9PewO8e866XPullbrxm0Iei1bupajxbPFdYj7p4/DPZQ3bU0Tsb9HDr8w7ekeTJaz4Jz 
-YxpG0xrz2YBWvhV3hz1e2axll3WUY0gWWUDIcwcnAs8TMXw7gw4uaKFmkPfRHwD74OjoSDXeXFWG 
-jAyfoLcSYP8A+tkxbp9CCA8pe/zRy0eQNmdMLMri2VUinC6anXzjeAB8nq7fr8RHJTwF9mcpg7b8 
-t4+pMR9aSxdhUexlJ4L2pTU8kUM150lHL3+XkkmrSfBNaYcKNdmLqLkbC2Wsh5WB2Hfw+KYo+n6w 
-kZ8lgxbLYdGU4ZCAGaRcbx3n+u5WttyJbeAeCHAP9j+VwhusMOJtna4K2ro4LuCqPOhGWknPRPe+ 
-+jvYD8iu/ANNDlh6c3T5Ey7BqA+EYCVPqV99bLjeWn2YqNnwW+Vde37jzbD/s1Mme4CIegxNDVgq 
-eQ6nruwIWgD070r7AUtAYXN6ARMMPrzUmSfWnWVZbw4oLS/WFMj2hOw/l/ZdYP9DsK0a3Agqj1zE 
-sMM7Lp8bszWtoNtQXPUik/YfkSBvHLZp88nUhtfKq+K0k7WsX1PulmRtsPHrk2D/XcKA1ik6DkzW 
-aXSr8GaeMbQ50JOthLRNtuIdyNrT0idL+2/hDSBMFvcuruYJ4Ah9CQRUb6VII6u01F8r4snpk49e 
-/pLaTEIchs02HAcl4/NxfZuKQV4Fn6+4x7yf+oznXj4Idu0xB/iwkq0wcjxiWf0G/+Lz1U/6zbCP 
-tIFvj5vqCkHhdlO9NX6TUPVEDVksfa4+LVdeoui9HMtbW/uxPYvH5r3rheNTXXg6kt2UpaLS8fNL 
-YY+hekEV3T5bYLhJJ4uDOxRiklrUbdrJez3I2sGul23wYyKbIjnMsQ7FQ6t/9g+Yk/LKbwZ7IMLA 
-s+tsFQvAVs+Oe9GNtNK7WoQnxM3/BrZdmgeOT781c7RKL6ssMpQAUkHvNR6+HfAetoMYOIM2v9pK 
-l4FvATQWxfpg460Og43QuSvEEnytSHZRlvVM/dq1RDDSzzcD3hc7bZcXn2udfrLJKq1sBTjOPxt2 
-e3beEngvHUEW8XVpeMFtAa6/l0DbZJu9Dry3Ap2k7S/LQMdouC2/g+UetW7LW+z4C+LtPdhSgd0A 
-GIONBbFMUrZ3k7KHbYDtK9ef6tEKMrkYfb1JsHELbA86aoHuZjSyUQzN9vtHwka4zc5PmxyE+hrg 
-G9vHXwc7Amuu/C99Z5OGJBul/ObAmz8ugNt2vv7u3/nreDLsN5fLY47237/ETzz+B/u/6fgf7P+m 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
+gg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/gif;base64,R0lGODlhCwARAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O 
 Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh 
@@ -352,7 +358,7 @@
 KPCfwYMHByJcqHChwYYOISKUSBBAxIoOExbM+E8iw40XLWb0+LCiSZEnRXY0iTAgACH5BAEKAP8A 
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQIAIwAjAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK 
@@ -369,7 +375,7 @@
 XjyAprE9qqzkUqTFmNqPLTFg9p8auR3T313pGd9XeCKi135RzKtlvRJbIcbVL05WoFJPAslXMqIB 
 +Djue+tYiw9hLOc5YzcpjuRdtKxJCQka2ChqhlTC6aidrX3GR4+uIKFJUB9lDS5fX1uW/wDl/wD2 
 zqsTPyW/1H81/9k= 
-"> </p>]]></text></answer>
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/gif;base64,R0lGODlhCwARAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O 
@@ -407,115 +413,118 @@
 LAAAAAALABEAAAgyAAEIHCjwn8GDBwciXKhwoUGCDv81ZFgwIUSKFyNOdLgRY0SJFTEC4Eiw5EWT 
 IVEiDAgAOw== 
 "></p>]]></text>
-    <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
-4/8BfX6FOOHA2dwAAAAASUVORK5CYII= 
+    <answer format="html"><text><![CDATA[<p><IMG  SRC="data:image/png;base64,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 
+gg== 
 "></p>]]></text></answer>
   </subquestion>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_via_tikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_via_tikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_via_tikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -28,9 +28,10 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="100" format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOCAYAAAD9lDaoAAAAcUlEQVQokcWPMRWAMAxEf0FBLWCh 
-FrpiAy1FE0gACa0EkABDj0eXlpGbknc/yaXn1QBMwKg+FR4OWIALOICoOsoDIAhyxaDXwMaHgja6 
-rgGdT9GCBoF7DfA6FWqAJQeuhi4B+xNgZDpgruRMhvxqS+sNlq0d/BTebEoAAAAASUVORK5CYII= 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOCAYAAAD9lDaoAAAAeElEQVQokcXPyxEBURCF4W9GBCME 
+QrhSsLSUglgIQSyEQAgzIRDCWDiFBXeWTlVXdff5qx8zby2wwyb18OEpOGHEDX3yPp4W28ArzLHE 
+Or2jCe0zsbQV6HVTDSq441oDxqz8qg6XxCTQ/QloYhYcftw5NJ6v1nR+AHXfHBUWBFz2AAAAAElF 
+TkSuQmCC 
 "></p>]]></text>
   </answer>
   <answer fraction="0" format="html">
@@ -59,10 +60,10 @@
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAM1BMVEUAAAD///8AAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5/q5AAAAEHRSTlMAABEiM0RVZneI 
-maq7zN3uf6QJ9gAAAKhJREFUOMu90sESwiAMRVGkVEpb4P7/17pQKJhAZ1yYJe8MyUDM46bMX4Ap 
-5dbFyCrAhgSkMAIu8a5oVbBmyOcJcGjAZQjWmOUAvAJiPQ6QJPBQhrMZngIkch3teeEKXNcXzm8Q 
-oHmhKMEOzUEgixbb1gHUp/4NLDfA46fAA+sEeGCf3PDJh6DkI1DzAbhyHTS5CtpcBW0+AGH+F93e 
-CmBjv9cCGNst7QvN2wpURq09lgAAAABJRU5ErkJggg== 
+maq7zN3uf6QJ9gAAAKtJREFUOMu90tsSwxAUheEdkSAV/vd/2l6khDpketN1x/qGPYMsD5G/AEnR 
+m5Y2CSgXgeBGQAeunKoLtgjRewDfAzqCUyLqBdgOOMFcSwehBQbScCrA3oBAzKPtN85A5wtERL7H 
+XBZxsN4bvgUHFBuuWl1XWDsHdX4C6wMwmCkwwDYBBjgmJ3z6IUj9COR+AO6+D4q+C8q+C8p+ANz8 
+Lcr/0wJ1Vn0LRFWf9g3VEwpWNowe2wAAAABJRU5ErkJggg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAjAQMAAABFDwNYAAAABlBMVEX///8AAABVwtN+AAAAAXRS 
 TlMAQObYZgAAADdJREFUCNdj+P+/gYGB/QEEM/6A4n9Q/AOBoWr4gcJgDNTHj00vQwUqRjHjHxj/ 
@@ -99,12 +100,12 @@
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAA2BAMAAAC/7D1CAAAAMFBMVEUAAAAAAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaPxwLAAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAABBUlEQVQ4y62SMUoDURRFbyKIQQKzAIvUIsQVmCZFUiiW6XQHugSTBTh2diKphICm 
-sFMwrsAlKFhaJIiKRjPHYj7j//OETJFbHu7j3X/fF3lNtEh04+sWeFKgNUg2A1J6gOd5pqVHY9qy 
-pjHcG9NPtBDTjjEtY0wHBU1Jbh0FXze3J93Be0hWgP0Q7cFnSEpjOA9RBWZhTDXgLSS6MnNloGYi 
-fOfmqianGjCRqWqYQzGc2AxHMjUUQPG/aCTT1qvXlCTVYfpHziJJq37N24zc7T8cWYcvl4KuJKkN 
-sJueGi6azc4lwDRyt86UHEqSNjzUd5vjjFxn9R+nYNbzntAawMtp+lV+Afb0PN8sFBDMAAAAAElF 
-TkSuQmCC 
+3e5GKvWZAAABAUlEQVQ4y7WSsUpCYRiGX5UiI+JcQEGzS11A1OLQEjnmlHegl6DdwHFrc3ASgmpo 
+K8i6AW9BanQwUoSkfBrO0f7/fIIg+o4P78f//e/7iaQ+tUr05OoZ6MrTHkyOPJLqwMciU6YPb77p 
+BH4CY3pdl6lsTJusyrQBvJud5kSQyGnfmGTD3AJKPrqCkU9Sfaj7aNusqQsY+EQvZi4DHPgoC9+J 
+uV0YJtCpORaF8GBR1e6wHLq3KIS2TF9fTlKSdAjjf9IIJO24MZ/Tjruf5pyLI+gANUlSEaAQVQ2t 
+fP7yDmAcxF3PNKlIko4d1IxfDmfkcfp0uhGB32vnC2e30LuJTuUP+B49SQrumwsAAAAASUVORK5C 
+YII= 
 "></p>]]></text></answer>
   </subquestion>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_with_svg-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_with_svg-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_includegraphics_with_svg-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -14,57 +14,55 @@
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><IMG  SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEi 
-IHZpZXdCb3g9IjAgMCAzMjcgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci 
-Pgo8ZyBmaWxsPSIjZjk4MDEyIj4KPHBhdGggZD0ibTcyLjQgNzcuNDV2LTI3LjA3YzAtNS42NS0y 
-LjM1LTguNS03LTguNS00LjY3NCAwLTcuMDI0IDIuODI2LTcuMDI0IDguNXYyNy4wN2gtMTMuNzd2 
-LTI3LjA3YzAtNS42NS0yLjMwMS04LjUtNi44OTktOC41LTQuNjc2IDAtNyAyLjgyNi03IDguNXYy 
-Ny4wN2gtMTMuNzh2LTI4LjY4YzAtNS45IDIuMDUxLTEwLjM3IDYuMTUxLTEzLjQgMy41OTktMi43 
-MDEgOC41LTQuMDc2IDE0LjY1LTQuMDc2IDYuMjI1IDAgMTAuODIgMS42IDEzLjc3IDQuODAxIDIu 
-NTQ5LTMuMjAxIDcuMTc0LTQuODAxIDEzLjktNC44MDEgNi4xNSAwIDExLjAyIDEuMzUgMTQuNjIg 
-NC4wNzYgNC4xIDMuMDI1IDYuMTUgNy41IDYuMTUgMTMuNHYyOC42OHoiLz4KPHBhdGggZD0ibTEz 
-Ni4xIDIyLjc1LTMuMDk0LTIuMTE3LTcuNDkyIDEyLjA1Yy01LjM3NS0xLjc5Mi0xMC41OS0xLjc5 
-Mi0xMS41Ni0xLjc5Mi0xNy4xIDAtMjYuNTUgMTAuNTktMjYuNTUgMjQuNDMgMCA2LjM1MSAyLjQ0 
-MyAxNC45OCAxMS43MyAxOS44N2wtNy4zMjggMTEuODkgMy4wOTUgMS45NTQgNy42NTMtMTIuMjFj 
-NS4yMTIgMS43OTIgMTAuMSAxLjc5MiAxMS40IDEuNzkyIDE3LjQzIDAgMjYuNTUtMTAuNTkgMjYu 
-NTUtMjMuMjkgMC03Ljk4LTMuNDIxLTE2LjQ1LTExLjczLTIwLjg1em0tMzMuNzEgNDcuMjNjLTMu 
-MDk1LTMuNzQ2LTMuMDk1LTkuNjA5LTMuMDk1LTE0LjgyIDAtNy44MTcgMC0yMC41MiAxNC42Ni0y 
-MC41MiAzLjA5NSAwIDYuMTg5IDAuNjUxIDguNzk0IDIuNDQzem0yMy4xMy0zMC4yOWMyLjkzMiA0 
-LjA3MiAzLjA5NSA5Ljc3MiAzLjA5NSAxNS40NyAwIDcuODE2IDAgMTkuNzEtMTQuNjYgMTkuNzEt 
-MS4zMDIgMC01LjIxMSAwLTguNjMxLTIuMjh6Ii8+CjxwYXRoIGQ9Im0xNjUuNiA3OC41NWMtNi45 
-NzUgMC0xMi43NS0yLjIyNC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYt 
-MTcuMTIgMC02Ljk3NSAyLjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYu 
-NjUgMTcuMy02LjY1czEyLjc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1 
-IDYuODk5IDE3LjEgMCA2Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAu 
-MzcgNi42NS0xNy4zNSA2LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43 
-NzUtMS43NzUgMi41MjUtMi42NzYgNS41LTIuNjc2IDguOTc1IDAgMy40NzUgMC44MjU2IDYuNCAy 
-LjUgOC43NzQgMS45MDEgMi43MjUgNC41MjYgNC4wNzYgNy44NSA0LjA3NiAzLjMyNiAwIDUuOTI2 
-LTEuMzUgNy44NS00LjA3NiAxLjc1LTIuNCAyLjYyNS01LjMyNiAyLjYyNS04Ljc3NCAwLTMuNDc1 
-LTAuODI1Ni02LjQtMi41LTguNzc0LTEuOTI0LTIuNjUxLTQuNTc2LTMuOTc1LTcuOTc1LTMuOTc1 
-eiIvPgo8cGF0aCBkPSJtMjI3LjIgNzcuMzJ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUx 
-LTYuMjc2IDMuOTUxLTIuNjI1IDAuODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEu 
-ODUtMi4yNS0xNS44Mi02Ljc3Ni0zLjk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYu 
-NTc0IDEuOTUxLTEyLjA3IDUuODUtMTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1 
-IDcuMzAxIDAgMTEuNTggMi43NSAxNC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVj 
-MC0yLjQ1MS0xLjE3Ni00LjgyNi0zLjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0z 
-LjM3NS0zLjUyNSAwLTYuMzI2IDEuNDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUu 
-Njc2LTIuNzAxIDkuMzUgMCAzLjYyNSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUx 
-IDQuODUgNC40MjQgOC4zNzUgNC40MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIg 
-My43NS00LjA3NCAzLjc1LTYuMjI1eiIvPgo8cGF0aCBkPSJtMjQ0LjggMGgxMy44djc3LjMyaC0x 
-My44eiIvPgo8cGF0aCBkPSJtMzI3IDczLjgzaC0yLjc3NGMtMi43NzIgMTUuNTctNS4zMjQgMjMt 
-MjQuMjkgMjNoLTE0LjY0Yy01LjIxMiAwLTUuNDM1LTAuNzEyLTUuNDM1LTQuMDd2LTI3LjA3aDku 
-ODcyYzEwLjc2IDAgMTEuOTggMy4yNTcgMTEuOTggMTEuOTFoMi43NzN2LTI2Ljg3aC0yLjc3M2Mw 
-IDguNjQ5LTEuMjIgMTEuOC0xMS45OCAxMS44aC05Ljg3MnYtMjQuMzJjMC0zLjM1OCAwLjIyMjct 
-NC4wNzIgNS40MzUtNC4wNzJoMTQuMmMxNi45NyAwIDE5Ljg1IDUuNTk4IDIxLjYzIDE5Ljc0aDIu 
-NzczbC0zLjEwNS0yMi44aC02Mi4xMXYzLjA1M2gyLjU1MmM4LjUzOSAwIDguNzYyIDEuMTIgOC43 
-NjIgNC43ODN2NTMuMTJjMCAzLjY2My0wLjIyMTYgNC43ODItOC43NjIgNC43ODJoLTIuNTUydjMu 
-MTU1aDYzLjY3bDQuNjU5LTI2LjE1eiIvPgo8L2c+CjxwYXRoIGQ9Im00My42NyAyOS4yMiAxMy42 
-OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQtNTcuMTcgMTcuNWwwLjIw 
-MDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0MyA1LjktMC4wNzQgMTIu 
-MjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1MDMtNS4yNSAwLjMwMS0x 
-MS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAuMTAwMy0xMi4wMmwxNC4x 
-IDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQyNCAyNS4yNy0wLjAyNDcg 
-MzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1eiIgZmlsbD0iIzMzMyIv 
-Pgo8L3N2Zz4K 
+IHZpZXdCb3g9IjAgMCAyOTkuNyA5OS45NzciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw 
+L3N2ZyI+CjxnIGZpbGw9IiNmOTgwMTIiPgo8cGF0aCBkPSJtMTA4Ljc5IDIyLjc1Ni0zLjA5NC0y 
+LjExNy03LjQ5MiAxMi4wNWMtNS4zNzUtMS43OTItMTAuNTktMS43OTItMTEuNTYtMS43OTItMTcu 
+MSAwLTI2LjU1IDEwLjU5LTI2LjU1IDI0LjQzIDAgNi4zNTEgMi40NDMgMTQuOTggMTEuNzMgMTku 
+ODdsLTcuMzI4IDExLjg5IDMuMDk1IDEuOTU0IDcuNjUzLTEyLjIxYzUuMjEyIDEuNzkyIDEwLjEg 
+MS43OTIgMTEuNCAxLjc5MiAxNy40MyAwIDI2LjU1LTEwLjU5IDI2LjU1LTIzLjI5IDAtNy45OC0z 
+LjQyMS0xNi40NS0xMS43My0yMC44NXptLTMzLjcxIDQ3LjIzYy0zLjA5NS0zLjc0Ni0zLjA5NS05 
+LjYwOS0zLjA5NS0xNC44MiAwLTcuODE3IDAtMjAuNTIgMTQuNjYtMjAuNTIgMy4wOTUgMCA2LjE4 
+OSAwLjY1MSA4Ljc5NCAyLjQ0M3ptMjMuMTMtMzAuMjljMi45MzIgNC4wNzIgMy4wOTUgOS43NzIg 
+My4wOTUgMTUuNDcgMCA3LjgxNiAwIDE5LjcxLTE0LjY2IDE5LjcxLTEuMzAyIDAtNS4yMTEgMC04 
+LjYzMS0yLjI4eiIvPgo8cGF0aCBkPSJtMTM4LjI5IDc4LjU1NmMtNi45NzUgMC0xMi43NS0yLjIy 
+NC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYtMTcuMTIgMC02Ljk3NSAy 
+LjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYuNjUgMTcuMy02LjY1czEy 
+Ljc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1IDYuODk5IDE3LjEgMCA2 
+Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAuMzcgNi42NS0xNy4zNSA2 
+LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43NzUtMS43NzUgMi41MjUt 
+Mi42NzYgNS41LTIuNjc2IDguOTc1czAuODI1NiA2LjQgMi41IDguNzc0YzEuOTAxIDIuNzI1IDQu 
+NTI2IDQuMDc2IDcuODUgNC4wNzYgMy4zMjYgMCA1LjkyNi0xLjM1IDcuODUtNC4wNzYgMS43NS0y 
+LjQgMi42MjUtNS4zMjYgMi42MjUtOC43NzQgMC0zLjQ3NS0wLjgyNTYtNi40LTIuNS04Ljc3NC0x 
+LjkyNC0yLjY1MS00LjU3Ni0zLjk3NS03Ljk3NS0zLjk3NXoiLz4KPHBhdGggZD0ibTE5OS44OSA3 
+Ny4zMjZ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUxLTYuMjc2IDMuOTUxLTIuNjI1IDAu 
+ODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEuODUtMi4yNS0xNS44Mi02Ljc3Ni0z 
+Ljk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYuNTc0IDEuOTUxLTEyLjA3IDUuODUt 
+MTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1IDcuMzAxIDAgMTEuNTggMi43NSAx 
+NC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVjMC0yLjQ1MS0xLjE3Ni00LjgyNi0z 
+LjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0zLjM3NS0zLjUyNSAwLTYuMzI2IDEu 
+NDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUuNjc2LTIuNzAxIDkuMzUgMCAzLjYy 
+NSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUxIDQuODUgNC40MjQgOC4zNzUgNC40 
+MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIgMy43NS00LjA3NCAzLjc1LTYuMjI1 
+eiIvPgo8cGF0aCBkPSJtMjE3LjQ5IDZlLTNoMTMuOHY3Ny4zMmgtMTMuOHoiLz4KPHBhdGggZD0i 
+bTI5OS42OSA3My44MzZoLTIuNzc0Yy0yLjc3MiAxNS41Ny01LjMyNCAyMy0yNC4yOSAyM2gtMTQu 
+NjRjLTUuMjEyIDAtNS40MzUtMC43MTItNS40MzUtNC4wN3YtMjcuMDdoOS44NzJjMTAuNzYgMCAx 
+MS45OCAzLjI1NyAxMS45OCAxMS45MWgyLjc3M3YtMjYuODdoLTIuNzczYzAgOC42NDktMS4yMiAx 
+MS44LTExLjk4IDExLjhoLTkuODcydi0yNC4zMmMwLTMuMzU4IDAuMjIyNy00LjA3MiA1LjQzNS00 
+LjA3MmgxNC4yYzE2Ljk3IDAgMTkuODUgNS41OTggMjEuNjMgMTkuNzRoMi43NzNsLTMuMTA1LTIy 
+LjhoLTYyLjExdjMuMDUzaDIuNTUyYzguNTM5IDAgOC43NjIgMS4xMiA4Ljc2MiA0Ljc4M3Y1My4x 
+MmMwIDMuNjYzLTAuMjIxNiA0Ljc4Mi04Ljc2MiA0Ljc4MmgtMi41NTJ2My4xNTVoNjMuNjdsNC42 
+NTktMjYuMTV6Ii8+CjxwYXRoIGQ9Im01OC4zNzIgNDguNDMzdjI5LjA3aC0xMy43N3YtMjcuMDdj 
+MC01LjY1LTIuMzAxLTguNS02Ljg5OS04LjUtNC42NzYgMC03IDIuODI2LTcgOC41djI3LjA3aC0x 
+My43OHYtMjguNjhjMC01LjkgMi4wNTEtMTAuMzcgNi4xNTEtMTMuNCAzLjU5OS0yLjcwMSA4LjUt 
+NC4wNzYgMTQuNjUtNC4wNzYgNi4yMjUgMCAxMC4wNDYgMS42NzcxIDEzLjc3IDQuODAxIDMuNTk1 
+NyAzLjAxNiA2Ljk2MzEgNy4wMDA4IDYuODc4IDEyLjI4NXoiLz4KPC9nPgo8cGF0aCBkPSJtNDMu 
+NjY2IDI5LjI3MyAxMy42OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQt 
+NTcuMTcgMTcuNWwwLjIwMDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0 
+MyA1LjktMC4wNzQgMTIuMjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1 
+MDMtNS4yNSAwLjMwMS0xMS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAu 
+MTAwMy0xMi4wMmwxNC4xIDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQy 
+NCAyNS4yNy0wLjAyNDcgMzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1 
+eiIgZmlsbD0iIzMzMyIvPgo8L3N2Zz4K 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -143,57 +141,55 @@
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><IMG width=81 SRC="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEi 
-IHZpZXdCb3g9IjAgMCAzMjcgMTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci 
-Pgo8ZyBmaWxsPSIjZjk4MDEyIj4KPHBhdGggZD0ibTcyLjQgNzcuNDV2LTI3LjA3YzAtNS42NS0y 
-LjM1LTguNS03LTguNS00LjY3NCAwLTcuMDI0IDIuODI2LTcuMDI0IDguNXYyNy4wN2gtMTMuNzd2 
-LTI3LjA3YzAtNS42NS0yLjMwMS04LjUtNi44OTktOC41LTQuNjc2IDAtNyAyLjgyNi03IDguNXYy 
-Ny4wN2gtMTMuNzh2LTI4LjY4YzAtNS45IDIuMDUxLTEwLjM3IDYuMTUxLTEzLjQgMy41OTktMi43 
-MDEgOC41LTQuMDc2IDE0LjY1LTQuMDc2IDYuMjI1IDAgMTAuODIgMS42IDEzLjc3IDQuODAxIDIu 
-NTQ5LTMuMjAxIDcuMTc0LTQuODAxIDEzLjktNC44MDEgNi4xNSAwIDExLjAyIDEuMzUgMTQuNjIg 
-NC4wNzYgNC4xIDMuMDI1IDYuMTUgNy41IDYuMTUgMTMuNHYyOC42OHoiLz4KPHBhdGggZD0ibTEz 
-Ni4xIDIyLjc1LTMuMDk0LTIuMTE3LTcuNDkyIDEyLjA1Yy01LjM3NS0xLjc5Mi0xMC41OS0xLjc5 
-Mi0xMS41Ni0xLjc5Mi0xNy4xIDAtMjYuNTUgMTAuNTktMjYuNTUgMjQuNDMgMCA2LjM1MSAyLjQ0 
-MyAxNC45OCAxMS43MyAxOS44N2wtNy4zMjggMTEuODkgMy4wOTUgMS45NTQgNy42NTMtMTIuMjFj 
-NS4yMTIgMS43OTIgMTAuMSAxLjc5MiAxMS40IDEuNzkyIDE3LjQzIDAgMjYuNTUtMTAuNTkgMjYu 
-NTUtMjMuMjkgMC03Ljk4LTMuNDIxLTE2LjQ1LTExLjczLTIwLjg1em0tMzMuNzEgNDcuMjNjLTMu 
-MDk1LTMuNzQ2LTMuMDk1LTkuNjA5LTMuMDk1LTE0LjgyIDAtNy44MTcgMC0yMC41MiAxNC42Ni0y 
-MC41MiAzLjA5NSAwIDYuMTg5IDAuNjUxIDguNzk0IDIuNDQzem0yMy4xMy0zMC4yOWMyLjkzMiA0 
-LjA3MiAzLjA5NSA5Ljc3MiAzLjA5NSAxNS40NyAwIDcuODE2IDAgMTkuNzEtMTQuNjYgMTkuNzEt 
-MS4zMDIgMC01LjIxMSAwLTguNjMxLTIuMjh6Ii8+CjxwYXRoIGQ9Im0xNjUuNiA3OC41NWMtNi45 
-NzUgMC0xMi43NS0yLjIyNC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYt 
-MTcuMTIgMC02Ljk3NSAyLjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYu 
-NjUgMTcuMy02LjY1czEyLjc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1 
-IDYuODk5IDE3LjEgMCA2Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAu 
-MzcgNi42NS0xNy4zNSA2LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43 
-NzUtMS43NzUgMi41MjUtMi42NzYgNS41LTIuNjc2IDguOTc1IDAgMy40NzUgMC44MjU2IDYuNCAy 
-LjUgOC43NzQgMS45MDEgMi43MjUgNC41MjYgNC4wNzYgNy44NSA0LjA3NiAzLjMyNiAwIDUuOTI2 
-LTEuMzUgNy44NS00LjA3NiAxLjc1LTIuNCAyLjYyNS01LjMyNiAyLjYyNS04Ljc3NCAwLTMuNDc1 
-LTAuODI1Ni02LjQtMi41LTguNzc0LTEuOTI0LTIuNjUxLTQuNTc2LTMuOTc1LTcuOTc1LTMuOTc1 
-eiIvPgo8cGF0aCBkPSJtMjI3LjIgNzcuMzJ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUx 
-LTYuMjc2IDMuOTUxLTIuNjI1IDAuODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEu 
-ODUtMi4yNS0xNS44Mi02Ljc3Ni0zLjk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYu 
-NTc0IDEuOTUxLTEyLjA3IDUuODUtMTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1 
-IDcuMzAxIDAgMTEuNTggMi43NSAxNC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVj 
-MC0yLjQ1MS0xLjE3Ni00LjgyNi0zLjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0z 
-LjM3NS0zLjUyNSAwLTYuMzI2IDEuNDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUu 
-Njc2LTIuNzAxIDkuMzUgMCAzLjYyNSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUx 
-IDQuODUgNC40MjQgOC4zNzUgNC40MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIg 
-My43NS00LjA3NCAzLjc1LTYuMjI1eiIvPgo8cGF0aCBkPSJtMjQ0LjggMGgxMy44djc3LjMyaC0x 
-My44eiIvPgo8cGF0aCBkPSJtMzI3IDczLjgzaC0yLjc3NGMtMi43NzIgMTUuNTctNS4zMjQgMjMt 
-MjQuMjkgMjNoLTE0LjY0Yy01LjIxMiAwLTUuNDM1LTAuNzEyLTUuNDM1LTQuMDd2LTI3LjA3aDku 
-ODcyYzEwLjc2IDAgMTEuOTggMy4yNTcgMTEuOTggMTEuOTFoMi43NzN2LTI2Ljg3aC0yLjc3M2Mw 
-IDguNjQ5LTEuMjIgMTEuOC0xMS45OCAxMS44aC05Ljg3MnYtMjQuMzJjMC0zLjM1OCAwLjIyMjct 
-NC4wNzIgNS40MzUtNC4wNzJoMTQuMmMxNi45NyAwIDE5Ljg1IDUuNTk4IDIxLjYzIDE5Ljc0aDIu 
-NzczbC0zLjEwNS0yMi44aC02Mi4xMXYzLjA1M2gyLjU1MmM4LjUzOSAwIDguNzYyIDEuMTIgOC43 
-NjIgNC43ODN2NTMuMTJjMCAzLjY2My0wLjIyMTYgNC43ODItOC43NjIgNC43ODJoLTIuNTUydjMu 
-MTU1aDYzLjY3bDQuNjU5LTI2LjE1eiIvPgo8L2c+CjxwYXRoIGQ9Im00My42NyAyOS4yMiAxMy42 
-OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQtNTcuMTcgMTcuNWwwLjIw 
-MDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0MyA1LjktMC4wNzQgMTIu 
-MjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1MDMtNS4yNSAwLjMwMS0x 
-MS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAuMTAwMy0xMi4wMmwxNC4x 
-IDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQyNCAyNS4yNy0wLjAyNDcg 
-MzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1eiIgZmlsbD0iIzMzMyIv 
-Pgo8L3N2Zz4K 
+IHZpZXdCb3g9IjAgMCAyOTkuNyA5OS45NzciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw 
+L3N2ZyI+CjxnIGZpbGw9IiNmOTgwMTIiPgo8cGF0aCBkPSJtMTA4Ljc5IDIyLjc1Ni0zLjA5NC0y 
+LjExNy03LjQ5MiAxMi4wNWMtNS4zNzUtMS43OTItMTAuNTktMS43OTItMTEuNTYtMS43OTItMTcu 
+MSAwLTI2LjU1IDEwLjU5LTI2LjU1IDI0LjQzIDAgNi4zNTEgMi40NDMgMTQuOTggMTEuNzMgMTku 
+ODdsLTcuMzI4IDExLjg5IDMuMDk1IDEuOTU0IDcuNjUzLTEyLjIxYzUuMjEyIDEuNzkyIDEwLjEg 
+MS43OTIgMTEuNCAxLjc5MiAxNy40MyAwIDI2LjU1LTEwLjU5IDI2LjU1LTIzLjI5IDAtNy45OC0z 
+LjQyMS0xNi40NS0xMS43My0yMC44NXptLTMzLjcxIDQ3LjIzYy0zLjA5NS0zLjc0Ni0zLjA5NS05 
+LjYwOS0zLjA5NS0xNC44MiAwLTcuODE3IDAtMjAuNTIgMTQuNjYtMjAuNTIgMy4wOTUgMCA2LjE4 
+OSAwLjY1MSA4Ljc5NCAyLjQ0M3ptMjMuMTMtMzAuMjljMi45MzIgNC4wNzIgMy4wOTUgOS43NzIg 
+My4wOTUgMTUuNDcgMCA3LjgxNiAwIDE5LjcxLTE0LjY2IDE5LjcxLTEuMzAyIDAtNS4yMTEgMC04 
+LjYzMS0yLjI4eiIvPgo8cGF0aCBkPSJtMTM4LjI5IDc4LjU1NmMtNi45NzUgMC0xMi43NS0yLjIy 
+NC0xNy4zLTYuNjUtNC41NTEtNC40MjQtNi44MjYtMTAuMTItNi44MjYtMTcuMTIgMC02Ljk3NSAy 
+LjI3NS0xMi42NyA2LjgyNi0xNy4xIDQuNTQ5LTQuNDI0IDEwLjMyLTYuNjUgMTcuMy02LjY1czEy 
+Ljc3IDIuMjI1IDE3LjM1IDYuNjVjNC42IDQuNDI2IDYuODk5IDEwLjE1IDYuODk5IDE3LjEgMCA2 
+Ljk3NS0yLjI5OSAxMi42OC02Ljg5OSAxNy4xMi00LjYgNC40MjYtMTAuMzcgNi42NS0xNy4zNSA2 
+LjY1em0wLTM2LjQ1Yy0zLjMyNCAwLTUuODc1IDEuMjUtNy42NzQgMy43NzUtMS43NzUgMi41MjUt 
+Mi42NzYgNS41LTIuNjc2IDguOTc1czAuODI1NiA2LjQgMi41IDguNzc0YzEuOTAxIDIuNzI1IDQu 
+NTI2IDQuMDc2IDcuODUgNC4wNzYgMy4zMjYgMCA1LjkyNi0xLjM1IDcuODUtNC4wNzYgMS43NS0y 
+LjQgMi42MjUtNS4zMjYgMi42MjUtOC43NzQgMC0zLjQ3NS0wLjgyNTYtNi40LTIuNS04Ljc3NC0x 
+LjkyNC0yLjY1MS00LjU3Ni0zLjk3NS03Ljk3NS0zLjk3NXoiLz4KPHBhdGggZD0ibTE5OS44OSA3 
+Ny4zMjZ2LTQuNTUxYy0xLjIyNSAxLjY1LTMuMzI2IDIuOTUxLTYuMjc2IDMuOTUxLTIuNjI1IDAu 
+ODk5Ni01LjEyNSAxLjM1LTcuNSAxLjM1LTYuNTc0IDAtMTEuODUtMi4yNS0xNS44Mi02Ljc3Ni0z 
+Ljk3NS00LjUtNS45NzUtMTAuMS01Ljk3NS0xNi43NSAwLTYuNTc0IDEuOTUxLTEyLjA3IDUuODUt 
+MTYuNSAzLjQ0OS0zLjkyNCA5LjEtNi42NSAxNS41Ny02LjY1IDcuMzAxIDAgMTEuNTggMi43NSAx 
+NC4xNSA1Ljl2LTM3LjNoMTMuNDJ2NzcuMzJ6bTAtMjUuNzVjMC0yLjQ1MS0xLjE3Ni00LjgyNi0z 
+LjUtNy4wNzUtMi4zMjYtMi4yNS00Ljc1LTMuMzc1LTcuMi0zLjM3NS0zLjUyNSAwLTYuMzI2IDEu 
+NDUxLTguMzc1IDQuMjk5LTEuNzk5IDIuNTUxLTIuNzAxIDUuNjc2LTIuNzAxIDkuMzUgMCAzLjYy 
+NSAwLjkwMTMgNi43IDIuNzAxIDkuMjI1IDIuMDQ5IDIuOTUxIDQuODUgNC40MjQgOC4zNzUgNC40 
+MjQgMi4xMjUgMCA0LjQ1MS0xIDYuOTUtMy4wMjUgMi41LTIgMy43NS00LjA3NCAzLjc1LTYuMjI1 
+eiIvPgo8cGF0aCBkPSJtMjE3LjQ5IDZlLTNoMTMuOHY3Ny4zMmgtMTMuOHoiLz4KPHBhdGggZD0i 
+bTI5OS42OSA3My44MzZoLTIuNzc0Yy0yLjc3MiAxNS41Ny01LjMyNCAyMy0yNC4yOSAyM2gtMTQu 
+NjRjLTUuMjEyIDAtNS40MzUtMC43MTItNS40MzUtNC4wN3YtMjcuMDdoOS44NzJjMTAuNzYgMCAx 
+MS45OCAzLjI1NyAxMS45OCAxMS45MWgyLjc3M3YtMjYuODdoLTIuNzczYzAgOC42NDktMS4yMiAx 
+MS44LTExLjk4IDExLjhoLTkuODcydi0yNC4zMmMwLTMuMzU4IDAuMjIyNy00LjA3MiA1LjQzNS00 
+LjA3MmgxNC4yYzE2Ljk3IDAgMTkuODUgNS41OTggMjEuNjMgMTkuNzRoMi43NzNsLTMuMTA1LTIy 
+LjhoLTYyLjExdjMuMDUzaDIuNTUyYzguNTM5IDAgOC43NjIgMS4xMiA4Ljc2MiA0Ljc4M3Y1My4x 
+MmMwIDMuNjYzLTAuMjIxNiA0Ljc4Mi04Ljc2MiA0Ljc4MmgtMi41NTJ2My4xNTVoNjMuNjdsNC42 
+NTktMjYuMTV6Ii8+CjxwYXRoIGQ9Im01OC4zNzIgNDguNDMzdjI5LjA3aC0xMy43N3YtMjcuMDdj 
+MC01LjY1LTIuMzAxLTguNS02Ljg5OS04LjUtNC42NzYgMC03IDIuODI2LTcgOC41djI3LjA3aC0x 
+My43OHYtMjguNjhjMC01LjkgMi4wNTEtMTAuMzcgNi4xNTEtMTMuNCAzLjU5OS0yLjcwMSA4LjUt 
+NC4wNzYgMTQuNjUtNC4wNzYgNi4yMjUgMCAxMC4wNDYgMS42NzcxIDEzLjc3IDQuODAxIDMuNTk1 
+NyAzLjAxNiA2Ljk2MzEgNy4wMDA4IDYuODc4IDEyLjI4NXoiLz4KPC9nPgo8cGF0aCBkPSJtNDMu 
+NjY2IDI5LjI3MyAxMy42OC0xMC0wLjE3Ni0wLjYwMDNjLTI0LjY3IDMuMDI1LTM1LjkgNS4xNzQt 
+NTcuMTcgMTcuNWwwLjIwMDcgMC41NDkzIDEuNjk5IDAuMDI2M2MtMC4xNDk3IDEuNjk5LTAuNDI0 
+MyA1LjktMC4wNzQgMTIuMjUtMi4zNSA2LjgyNC0wLjA1MSAxMS40NyAyLjA5OSAxNi41MiAwLjM1 
+MDMtNS4yNSAwLjMwMS0xMS0xLjI5OS0xNi43Mi0wLjMyNTctNi4yNzUtMC4wNDkzLTEwLjQyIDAu 
+MTAwMy0xMi4wMmwxNC4xIDAuMTI1cy0wLjEwMDMgNC4yNSAwLjQyNDMgOC4yNzRjMTIuNiA0LjQy 
+NCAyNS4yNy0wLjAyNDcgMzItMTAuOTItMS45LTIuMTI1LTUuNTc2LTQuOTc1LTUuNTc2LTQuOTc1 
+eiIgZmlsbD0iIzMzMyIvPgo8L3N2Zz4K 
 "> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_macros-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_macros-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_macros-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/LaTeX Macros</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[LaTeX Macros]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>The following commands should not be placed in items: <BR/> and <BR/>Find the \(\rm\LaTeX\) logo </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>\(\rm\TeX\) and \(\rm\LaTeX\)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(tilde) and #</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>$ and &</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>& and §</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>{ and }</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(space) and (relax)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>(space) and (thinspace)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>… and …</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>€ and €</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(\rm\TeX\) and \(\rm\LaTeX\)</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>_ and \</p>]]></text>
-  </answer>
-</question>
- 
-</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_matching-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_matching-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_matching-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -21,20 +21,20 @@
   <hidden>0</hidden>
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p>A</p>]]></text>
+    <text><![CDATA[<p>A<BR/>B</p>]]></text>
     <answer format="html"><text><![CDATA[<p>1</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer format="html"><text><![CDATA[<p>2</p>]]></text></answer>
+    <answer format="html"><text><![CDATA[<p>very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long text</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
-    <text><![CDATA[<p>C</p>]]></text>
-    <answer format="html"><text><![CDATA[<p>3</p>]]></text></answer>
+    <text><![CDATA[<p>very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long text</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>1</p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer format="html"><text><![CDATA[<p>4</p>]]></text></answer>
+    <answer format="html"><text><![CDATA[<p>3</p>]]></text></answer>
   </subquestion>
 </question>
 <question type="matching">
@@ -50,20 +50,24 @@
   <hidden>0</hidden>
   <shuffleanswers>0</shuffleanswers>
   <subquestion format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-    <answer><text>1</text></answer>
+    <text><![CDATA[<p>A<BR/>B</p>]]></text>
+    <answer format="html"><text><![CDATA[1]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>B</p>]]></text>
-    <answer><text>2</text></answer>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>C</p>]]></text>
-    <answer><text>3</text></answer>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
   </subquestion>
   <subquestion format="html">
+    <text><![CDATA[<p>D</p>]]></text>
+    <answer format="html"><text><![CDATA[2]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
     <text></text>
-    <answer><text>4</text></answer>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
   </subquestion>
 </question>
  

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_math-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_math-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_math-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Derivative]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\frac {\partial ^{3} f}{\partial ^{3} x}(x).\] </p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\frac {\partial ^{3} f}{\partial ^{3} x}(x).\]</CENTER> </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -23,13 +23,13 @@
   <shuffleanswers>1</shuffleanswers>
   <answernumbering>abc</answernumbering>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(f’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f'(x)\)</p>]]></text>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p>\(f’’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f''(x)\)</p>]]></text>
   </answer>
   <answer fraction="100" format="html">
-    <text><![CDATA[<p>\(f’’’(x)\)</p>]]></text>
+    <text><![CDATA[<p>\(f'''(x)\)</p>]]></text>
   </answer>
 </question>
 <question type="cloze">
@@ -37,7 +37,7 @@
     <text><![CDATA[Other derivatives]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\frac {\partial ^{2} g}{\partial ^{2} t}(t).\] {1:MULTICHOICE_VS:\(g’(t)\)~=\(g’’(t)\)~\(g’’’(t)\)}</p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\frac {\partial ^{2} g}{\partial ^{2} t}(t).\]</CENTER> {1:MULTICHOICE_VS:\(g'(t)\)~=\(g''(t)\)~\(g'''(t)\)}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_mathenv-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_mathenv-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_mathenv-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Multiple Choice]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\(\begin {array}{c}$1\\2\end {array}\) </p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/>\(\begin {array}{c}$1\\2\end {array}\) </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -30,7 +30,7 @@
   </answer>
   <answer fraction="100" format="html">
     <text><![CDATA[<p>7</p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>\[$\sqrt {25}\]</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p><CENTER>\[$\sqrt {25}\]</CENTER></p>]]></text></feedback>
   </answer>
   <answer fraction="10" format="html">
     <text><![CDATA[<p>8</p>]]></text>
@@ -41,7 +41,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\[\begin {array}{c}$1\\2\end {array}\] <BR/>\(\begin {array}{c}$1\\2\end {array}\) {1:MULTICHOICE_VS:=\($\sqrt {25\}\)~6~=7#\[$\sqrt {25\}\]~%10%8}</p>]]></text>
+    <text><![CDATA[<p><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/><CENTER>\[\begin {array}{c}$1\\2\end {array}\]</CENTER> <BR/>\(\begin {array}{c}$1\\2\end {array}\) {1:MULTICHOICE_VS:=\($\sqrt {25\}\)~6~=7#<CENTER>\[$\sqrt {25\}\]</CENTER>~%10%8}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_minted-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_minted-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_minted-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -58,7 +58,7 @@
     <feedback format="html"><text><![CDATA[<p>No. This is Perl code.</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">1</span><span style="color: #204a87; font-weight: bold">long</span> <span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">calling_function</span><span style="color: #000000; font-weight: bold">()</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><span style="color: #000000; font-weight: bold">{</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span>    <span style="color: #204a87; font-weight: bold">long</span> <span style="color: #000000">test1</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span><mark>    <span style="color: #204a87; font-weight: bold">register</span> <span style="color: #8f5902; font-style: italic">/* int */</span> <span style="color: #000000">te!
 st2</span><span style="color: #000000; font-weight: bold">;</span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">8</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">9</span>    <span style="color: #000000">test1</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">10</span>    <span style="color: #204a87; font-weight: bold">if</span> <span style="color: #000000; font-weight: bold">(</span><span style="color: #000000">test1</span> <span style="color: #ce5c00; font-weight: bold">></span> <span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">)</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">11</span>          <span style="color: #000000">test2</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">12</span>    <span style="color: #204a87; font-weight: bold">else</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">13</span>          <span style="color: #000000">test2</span> <span style="color: #ce5c00; font-weight: bold">=</span> <span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><BR/><span style="font-size: 80%; background-color:!
  #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">14</span>    <span style="color: #204a87; font-weight: bold">return</span> <span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">15</span><span style="color: #000000; font-weight: bold">}</span><BR/></CODE></PRE></p>]]></text>
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">1</span><span style="color: #204a87; font-weight: bold">long</span><span style="color: #f8f8f8"> </span><span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">2</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">3</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">4</span><mark><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">calling_function</span><span style="color: #000000; font-weight: bold">()</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">5</span><span style="color: #000000; font-weight: bold">{</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">6</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">long</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test1</span><span style="color: #000000; font-weight: bold">;!
 </span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">7</span><mark><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">register</span><span style="color: #f8f8f8"> </span><span style="color: #8f5902; font-style: italic">/* int */</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span></mark><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">8</span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">9</span><span style="color: #f8f8f8">    </span><span style="color: #000000">test1</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #000000">some_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">10</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">if</span><span style="color: #f8f8f8"> </span><span style="color: #000000; font-weight: bold">(</span><span style="color: #000000">test1</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">></span><span style="color: #f8f8f8"> </span><span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">)</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">11</span><span style="color!
 : #f8f8f8">          </span><span style="color: #000000">test2</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #0000cf; font-weight: bold">0</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">12</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">else</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">13</span><span style="color: #f8f8f8">          </span><span style="color: #000000">test2</span><span style="color: #f8f8f8"> </span><span style="color: #ce5c00; font-weight: bold">=</span><span style="color: #f8f8f8"> </span><span style="color: #000000">other_function</span><span style="color: #000000; font-weight: bold">();</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">14</span><span style="color: #f8f8f8">    </span><span style="color: #204a87; font-weight: bold">return</span><span style="color: #f8f8f8"> </span><span style="color: #000000">test2</span><span style="color: #000000; font-weight: bold">;</span><span style="color: #f8f8f8"></span><BR/><span style="font-size: 80%; background-color: #f0f0f0; padding: 0 5px 0 5px; display: inline-block; width: 16pt; text-align: right">15</span><span style="color: #000000; font-weight: bold">}</span><span style="color: #f8f8f8"></span><BR/></CODE></PRE></p>]]></text>
     <feedback format="html"><text><![CDATA[<p>No. This is C code.</p>]]></text></feedback>
   </answer>
 </question>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_multi-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_multi-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_multi-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -37,6 +37,222 @@
     <text><![CDATA[Multiple Choice]]></text>
   </name>
   <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>ABCD</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>ABCD</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>123</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>123</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>iii</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>iii</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>IIII</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>IIII</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
     <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
@@ -47,7 +263,7 @@
   <hidden>0</hidden>
   <single>false</single>
   <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
+  <answernumbering>none</answernumbering>
   <answer fraction="70" format="html">
     <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
   </answer>
@@ -61,7 +277,7 @@
   <answer fraction="-70" format="html">
     <text><![CDATA[<p>8</p>]]></text>
   </answer>
-  <answer fraction="-20" format="html">
+  <answer fraction="0" format="html">
     <text><![CDATA[<p><CODE>nothing</CODE></p>]]></text>
   </answer>
 </question>
@@ -80,7 +296,7 @@
   <hidden>0</hidden>
   <single>true</single>
   <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
+  <answernumbering>none</answernumbering>
   <answer fraction="100" format="html">
     <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
   </answer>
@@ -92,7 +308,7 @@
     <feedback format="html"><text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text></feedback>
   </answer>
   <answer fraction="-70" format="html">
-    <text><![CDATA[<p><OL><LI>False </LI><LI>Wrong</LI></OL></p>]]></text>
+    <text><![CDATA[<p><OL><LI>False</LI><LI>Wrong</LI></OL></p>]]></text>
   </answer>
 </question>
  

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_numerical-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_numerical-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_numerical-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Numerical</text>
+  </category>
+</question>
+ 
+<question type="numerical">
+  <name format="html">
+    <text><![CDATA[Numerical]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Enter an integer \(n\) such that \(0< n\leq 2\). </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <answer fraction="10" format="plain_text">
+    <text>0</text>
+    <tolerance>0.001</tolerance>
+    <feedback format="html"><text><![CDATA[<p>study difference between \(<\) and \(\leq \)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>1</text>
+    <tolerance>0.01</tolerance>
+    <feedback format="html"><text><![CDATA[<p>good!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>2</text>
+    <tolerance>0.1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>OK</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>3</text>
+    <tolerance>0</tolerance>
+    <feedback format="html"><text><![CDATA[<p>No!</p>]]></text></feedback>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_paragraph_breaks-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_paragraph_breaks-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_paragraph_breaks-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -34,7 +34,7 @@
     <text><![CDATA[Close-multi]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A {1:MULTICHOICE_VS:=B <BR/>C~D}</p>]]></text>
+    <text><![CDATA[<p><CENTER>A <BR/>Z</CENTER> {1:MULTICHOICE_VS:=B <BR/>C~D}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>
@@ -45,7 +45,7 @@
     <text><![CDATA[Essay]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>A </p>]]></text>
+    <text><![CDATA[<p><CENTER>A <BR/>Z</CENTER> </p>]]></text>
   </questiontext>
   <defaultgrade>1</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_point_points-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_point_points-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_point_points-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/Ifnum</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>1.0</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>.5</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[MWE]]></text>
-  </name>
-  <questiontext format="html"><text/></questiontext>
-  <defaultgrade>3.2</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>A</p>]]></text>
-  </answer>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>B</p>]]></text>
-  </answer>
-</question>
- 
-</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_points-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_points-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_points-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Ifnum</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>.5</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[MWE]]></text>
+  </name>
+  <questiontext format="html"><text/></questiontext>
+  <defaultgrade>3.2</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[The question]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>{3:SHORTANSWER:=abc}{1:SHORTANSWER:=abc}{1:NUMERICAL:=0:0}{2:MULTICHOICE_S:=A~B}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_punctuation_and_symbols-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_punctuation_and_symbols-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_punctuation_and_symbols-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Punctuation and Other Symbols</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Symbols]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the symbol standing for “paragraph”. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>%</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>#</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>_</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>\</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>$</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>&</p>]]></text>
+  </answer>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>§</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>{</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>}</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>€</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>…</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>…</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>¡</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>¿</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>–</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>€</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>=</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Quotation Marks]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the French quotes </p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‘and’</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‘and’</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>“and”</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>“and”</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>'</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>‹ and ›</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‚</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>„</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>‹ and ›</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="20" format="html">
+    <text><![CDATA[<p>« and »</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>le fameux double chevron!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>‚and‘</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>"</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-20" format="html">
+    <text><![CDATA[<p>„and“</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>these quotes are German!</p>]]></text></feedback>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[The question]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Find the symbol “equal”. {1:MULTICHOICE:<~>~==}{1:MULTICHOICE_V:\(<\)~\(>\)~=\(=\)}</p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_samepage-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_samepage-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_samepage-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Option Handout with Samepage</text>
+  </category>
+</question>
+ 
+<question type="description">
+  <name format="html">
+    <text><![CDATA[Description]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="essay">
+  <name format="html">
+    <text><![CDATA[Essay]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <responserequired>0</responserequired>
+  <responseformat>editor</responseformat>
+  <responsefieldlines>15</responsefieldlines>
+  <attachments>0</attachments>
+  <attachmentsrequired>0</attachmentsrequired>
+  <graderinfo format="html"><text><![CDATA[
+    <ul>
+      <li>A </li>
+      <li>B </li>
+      <li>C</li>
+    </ul>
+  ]]></text></graderinfo>
+  <responsetemplate format="html"><text/></responsetemplate>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multi Single]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>0</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="10" format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>CCC</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multi Multiple]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/></p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="50" format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-50" format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <answer fraction="50" format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>CCC</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-50" format="html">
+    <text><![CDATA[<p>D Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>DDD</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 1]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="0" format="plain_text">
+    <text>true</text>
+    <feedback format="html"><text><![CDATA[<p>AAA</p>]]></text></feedback>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>false</text>
+    <feedback format="html"><text><![CDATA[<p>BBB</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 2]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="100" format="plain_text">
+    <text>true</text>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>false</text>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="truefalse">
+  <name format="html">
+    <text><![CDATA[True/False 3]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>1</penalty>
+  <hidden>0</hidden>
+  <answer fraction="0" format="plain_text">
+    <text>true</text>
+  </answer>
+  <answer fraction="100" format="plain_text">
+    <text>false</text>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="numerical">
+  <name format="html">
+    <text><![CDATA[Numerical]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <answer fraction="100" format="plain_text">
+    <text>1</text>
+    <tolerance>1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>1</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>3</text>
+    <tolerance>1</tolerance>
+    <feedback format="html"><text><![CDATA[<p>3</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="shortanswer">
+  <name format="html">
+    <text><![CDATA[Short Answer]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <usecase>0</usecase>
+  <answer fraction="100" format="plain_text">
+    <text>aaa</text>
+    <feedback format="html"><text><![CDATA[<p>1</p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="plain_text">
+    <text>bbb</text>
+    <feedback format="html"><text><![CDATA[<p>3</p>]]></text></feedback>
+  </answer>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="ddmatch">
+  <name format="html">
+    <text><![CDATA[Matching]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <shuffleanswers>1</shuffleanswers>
+  <subquestion format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>1 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>2 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[<p>3 </p>]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text></text>
+    <answer format="html"><text><![CDATA[<p>4</p>]]></text></answer>
+  </subquestion>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="matching">
+  <name format="html">
+    <text><![CDATA[Matching]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <shuffleanswers>0</shuffleanswers>
+  <subquestion format="html">
+    <text><![CDATA[<p>A Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[1 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>B Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[2 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text><![CDATA[<p>C Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>]]></text>
+    <answer format="html"><text><![CDATA[3 ]]></text></answer>
+  </subquestion>
+  <subquestion format="html">
+    <text></text>
+    <answer format="html"><text><![CDATA[4]]></text></answer>
+  </subquestion>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Cloze]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><BR/>Question text <BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.<BR/>{1:MULTICHOICE_H:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_V:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_HS:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_VS:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:MULTICHOICE_S:=A#AAA~%10%B#BBB~C#CCC}<BR/>Question text {1:NUMERICAL:=1:1#1~3:1#3}<BR/>Question text {1:SHORTANSWER:=aaa#1~bbb#3}<BR/></p>]]></text>
+  </questiontext>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>General feedback</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <tags>
+    <tag><text><![CDATA[tag]]></text></tag>
+  </tags>
+</question>
+ 
+</quiz>

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_sanction-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_sanction-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_sanction-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Example Quiz</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Text </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>A</p>]]></text>
+  </answer>
+  <answer fraction="-100" format="html">
+    <text><![CDATA[<p>B</p>]]></text>
+  </answer>
+  <answer fraction="-100" format="html">
+    <text><![CDATA[<p>C</p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>abc<BR/>def \(\sqrt {2}\)</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>false</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="70" format="html">
+    <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
+  </answer>
+  <answer fraction="-10" format="html">
+    <text><![CDATA[<p><B>68</B></p>]]></text>
+  </answer>
+  <answer fraction="30" format="html">
+    <text><![CDATA[<p>7</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-70" format="html">
+    <text><![CDATA[<p>8</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><CODE>nothing</CODE></p>]]></text>
+  </answer>
+</question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Multiple Choice]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Select the following numbers that are prime. </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html">
+    <text><![CDATA[<p>abc<BR/>def \(\sqrt {2}\)</p>]]></text>
+  </generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text>
+  </answer>
+  <answer fraction="-40" format="html">
+    <text><![CDATA[<p>6</p>]]></text>
+  </answer>
+  <answer fraction="-30" format="html">
+    <text><![CDATA[<p>9</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p>\(\sqrt {25}\)</p>]]></text></feedback>
+  </answer>
+  <answer fraction="-40" format="html">
+    <text><![CDATA[<p><OL><LI>False</LI><LI>Wrong</LI></OL></p>]]></text>
+  </answer>
+</question>
+<question type="cloze">
+  <name format="html">
+    <text><![CDATA[Cloze]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p>Regular, single, no shuffle {1:MULTICHOICE:=chip#yes~%10%<I>chop</I>~%-30%<B>chap</B>#no.}<BR/>Vertical, single, no shuffle {1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, no shuffle {1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/>Regular, single, shuffle {1:MULTICHOICE_S:=chip~chop#yes~chap#no.}<BR/>Vertical, single, shuffle {1:MULTICHOICE_VS:=chip#yes~%10%chop~chap#no.}<BR/>Horizontal, single, shuffle {1:MULTICHOICE_HS:=chip#yes~chop~chap#no.}<BR/>Regular, multiple, no shuffle {1:MULTIRESPONSE:=chip~=chop#yes~chap#no.}<BR/><BR/>Horizontal, multiple, no shuffle {1:MULTIRESPONSE_H:=chip#yes~=chop~chap#no.}<BR/>Regular, multiple, shuffle {1:MULTIRESPONSE_S:=chip~=chop#yes~chap#no.}Horizontal, multiple, shuffle {1:MULTIRESPONSE_HS:=chip#yes~=chop~chap#no.}<BR/></p>]]></text>
+  </questiontext>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_shortanswer-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_shortanswer-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_shortanswer-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -13,7 +13,7 @@
     <text><![CDATA[Short Answer]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter the string <CODE>”40%”</CODE>. </p>]]></text>
+    <text><![CDATA[<p>Enter the string <CODE>"40%"</CODE>. </p>]]></text>
   </questiontext>
   <defaultgrade>1.0</defaultgrade>
   <generalfeedback format="html"><text/></generalfeedback>
@@ -38,7 +38,7 @@
     <text><![CDATA[Short Answer in Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Enter the string <CODE>”40%”</CODE>. {1:SHORTANSWER:=40%#correct \((1+\sqrt {5\})/2\)~%50%40#incomplete \((1+\sqrt {5\})/2\)~%50%%#incomplete \((1+\sqrt {5\})/2\)}</p>]]></text>
+    <text><![CDATA[<p>Enter the string <CODE>"40%"</CODE>. {1:SHORTANSWER:=40%#correct \((1+\sqrt {5\})/2\)~%50%40#incomplete \((1+\sqrt {5\})/2\)~%50%%#incomplete \((1+\sqrt {5\})/2\)}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Deleted: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_special_characters-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_special_characters-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_special_characters-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<quiz>
- 
-<question type="category">
-  <category>
-    <text>$course$/top/Diacritical marks and ligatures</text>
-  </category>
-</question>
- 
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ô Ö Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž ]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ô ö ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž <BR/> Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ô Ö Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž <BR/> œ æ ß Œ Æ ẞ Ø Ł « ø ł » ¿ ¡ </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ô ö ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ô Ö Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text></feedback>
-  </answer>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ô Ö Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ô ö ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text></feedback>
-  </answer>
-</question>
-<question type="multichoice">
-  <name format="html">
-    <text><![CDATA[Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž ]]></text>
-  </name>
-  <questiontext format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž <BR/> Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž <BR/> œ æ ß Œ Æ ẞ Ø Ł «  ø ł  » ¿ ¡ </p>]]></text>
-  </questiontext>
-  <defaultgrade>1</defaultgrade>
-  <generalfeedback format="html"><text/></generalfeedback>
-  <penalty>0.10</penalty>
-  <hidden>0</hidden>
-  <single>true</single>
-  <shuffleanswers>1</shuffleanswers>
-  <answernumbering>abc</answernumbering>
-  <answer fraction="0" format="html">
-    <text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text></feedback>
-  </answer>
-  <answer fraction="100" format="html">
-    <text><![CDATA[<p>Å À Â Ã É È Ë Ê Î Ï Ñ Õ Ö Ô Ù Ü Û Ç Ş Ţ Ő Ű Ÿ Ą Ę Į Ǫ Ų Ă Ĕ Ğ Ĭ Ŏ Ŭ Č Ď Ě Ľ Ň Ř Š Ť Ž </p>]]></text>
-    <feedback format="html"><text><![CDATA[<p>å à â ã é è ë ê î ï ñ õ ö ô ù ü û ç ş ţ ő ű ÿ ą ę į ǫ ų ă ĕ ğ ĭ ĭ ŏ ŭ č ď ě ľ ň ř š ť ž </p>]]></text></feedback>
-  </answer>
-</question>
- 
-</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tags-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tags-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tags-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -53,7 +53,7 @@
   </answer>
   <answer fraction="100" format="plain_text">
     <text>C</text>
-    <feedback format="html"><text><![CDATA[<p>«  »</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>«»</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="plain_text">
     <text>*</text>
@@ -83,7 +83,7 @@
   <answer fraction="100" format="plain_text">
     <text>2</text>
     <tolerance>0</tolerance>
-    <feedback format="html"><text><![CDATA[<p>«  »</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>«»</p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="plain_text">
     <text>3</text>
@@ -104,15 +104,15 @@
   <shuffleanswers>1</shuffleanswers>
   <subquestion format="html">
     <text><![CDATA[<p>æ</p>]]></text>
-    <answer><text>oui </text></answer>
+    <answer format="html"><text><![CDATA[oui ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p>œ</p>]]></text>
-    <answer><text>non </text></answer>
+    <answer format="html"><text><![CDATA[non ]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text></text>
-    <answer><text>Å</text></answer>
+    <answer format="html"><text><![CDATA[Å]]></text></answer>
   </subquestion>
   <tags>
     <tag><text><![CDATA[måtchïng]]></text></tag>
@@ -187,7 +187,7 @@
     <text><![CDATA[Cloze]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>ÅŒ{1:MULTICHOICE:=chip~%10%chop#yes~chap#no.} »Å{1:SHORTANSWER:=B#toc~=C#«  »~*}« Å{1:NUMERICAL:=1:0~=2:0#«  »~3:0}Œ{1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Œ{1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/></p>]]></text>
+    <text><![CDATA[<p>ÅŒ{1:MULTICHOICE:=chip~%10%chop#yes~chap#no.}»Å{1:SHORTANSWER:=B#toc~=C#«»~*}«Å{1:NUMERICAL:=1:0~=2:0#«»~3:0}Œ{1:MULTICHOICE_V:=chip#yes~%10%chop~chap#no.}<BR/>Œ{1:MULTICHOICE_H:=chip#yes~%10%chop~chap#no.}<BR/></p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>
   <penalty>0.10</penalty>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tikz-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tikz-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_tikz-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -28,27 +28,27 @@
   <answer fraction="100" format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVUlEQVQI12NgwAQSHU0MDIyNDPUBDBxfGfgPMLB/B5FAYN8AItcIMDCwdE8EMZlW 
-C4AoObAs91cGnosM3D8Y+D+B2FwODPIHGBinuZwGqmGuMMBiEwCKERKuaM1mNQAAAABJRU5ErkJg 
-gg== 
+3e5GKvWZAAAAWElEQVQI12NgwATiHU0MDIyNDHUBDBxfGfgPMLB/Z+C/AJKxnwAi1wgwMLB0TwQx 
+mVYLgCi5AyCS+ysDz0UG7h8M/J9AbC4HBvkDDIzTXE4D1TBXGGCxCQCThRLMM486tAAAAABJRU5E 
+rkJggg== 
 "></p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
   <answer fraction="0" format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
-XhgAAABTSURBVAjXY2DABNMc3QMYGN69ewFk7+hQAJILwOIQcklFIZC8xpADlHBg4AYLcjxiYHFg 
-4HjCwPsARHIVMHBeYOAwYJAtYGBoc90BVMHcpoDFJgDhHRLk6uL+ygAAAABJRU5ErkJggg== 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAVElEQVQI12NgwATTDNwDGBj+//8BZN/oUACSG8DiEHJzRSGQfMaQI8DA4MDAAxbk 
++MTA4sDA8YWB7wOI5C5g4HrAwGHAIFfAwNDmegKogrlNAYtNAB06E8lsIFP8AAAAAElFTkSuQmCC 
 "></p>]]></text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -70,39 +70,41 @@
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVElEQVQI12NgwAUkZjcxMDAuYpxnwMApwCB3gYHvEQPXFwaeRwwcX0DyPJ9ApH4D 
-iNwDIjgOgshMEME6gUGJgcGCgaGIgflGR+cFBt7///9vwLQDABVCEvmq/3YdAAAAAElFTkSuQmCC 
+3e5GKvWZAAAAWElEQVQI12NgwAUkVhcxMDBOYpxnwMCpwCB3gYHvIQPXFwaeRwwcXxgYBBh4PoFU 
+6TeAyD0CQILjIIiZCSJYJzAoMTBYMDAUMTDf6Oi4wMD7////DZh2AAAcVhMXUf/oTQAAAABJRU5E 
+rkJggg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVUlEQVQI12NgwAQSHU0MDIyNDPUBDBxfGfgPMLB/B5FAYN8AItcIMDCwdE8EMZlW 
-C4AoObAs91cGnosM3D8Y+D+B2FwODPIHGBinuZwGqmGuMMBiEwCKERKuaM1mNQAAAABJRU5ErkJg 
-gg== 
-"> </p>]]></text></answer>
+3e5GKvWZAAAAWElEQVQI12NgwATiHU0MDIyNDHUBDBxfGfgPMLB/Z+C/AJKxnwAi1wgwMLB0TwQx 
+mVYLgCi5AyCS+ysDz0UG7h8M/J9AbC4HBvkDDIzTXE4D1TBXGGCxCQCThRLMM486tAAAAABJRU5E 
+rkJggg== 
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
-    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMAESIzRGZ3iLvM3e4/H40nAAAAPUlE 
-QVQI12NgwA08QATjChDJPgNEmnaAyAIQyaYAIs0YQGQBiGRTAJFmDCDSvbz8VClI6QkGONlxuh3T 
-BgCaoQz0SHFqtgAAAABJRU5ErkJggg== 
+    <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAJFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMAIjNEZneIu8zd7j7uKHUAAAA8SURBVAjX 
+Y2DADczB5HQQwdoOIlXLQWQCiGQVAJGqDCAyAUSyCoBIUQYQaZaWtjMFpHQ7A5ws31WGaQMANe0L 
+GQYW+I8AAAAASUVORK5CYII= 
 "></p>]]></text>
-    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
-XhgAAABTSURBVAjXY2DABNMc3QMYGN69ewFk7+hQAJILwOIQcklFIZC8xpADlHBg4AYLcjxiYHFg 
-4HjCwPsARHIVMHBeYOAwYJAtYGBoc90BVMHcpoDFJgDhHRLk6uL+ygAAAABJRU5ErkJggg== 
-"> </p>]]></text></answer>
+    <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAVElEQVQI12NgwATTDNwDGBj+//8BZN/oUACSG8DiEHJzRSGQfMaQI8DA4MDAAxbk 
++MTA4sDA8YWB7wOI5C5g4HrAwGHAIFfAwNDmegKogrlNAYtNAB06E8lsIFP8AAAAAElFTkSuQmCC 
+"></p>]]></text></answer>
   </subquestion>
   <subquestion format="html">
     <text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVUlEQVQI12NgwAQSHU0MDIyNDPUBDBxfGfgPMLB/B5FAYN8AItcIMDCwdE8EMZlW 
-C4AoObAs91cGnosM3D8Y+D+B2FwODPIHGBinuZwGqmGuMMBiEwCKERKuaM1mNQAAAABJRU5ErkJg 
-gg== 
+3e5GKvWZAAAAWElEQVQI12NgwATiHU0MDIyNDHUBDBxfGfgPMLB/Z+C/AJKxnwAi1wgwMLB0TwQx 
+mVYLgCi5AyCS+ysDz0UG7h8M/J9AbC4HBvkDDIzTXE4D1TBXGGCxCQCThRLMM486tAAAAABJRU5E 
+rkJggg== 
 "></p>]]></text>
     <answer format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVElEQVQI12NgwAUkZjcxMDAuYpxnwMApwCB3gYHvEQPXFwaeRwwcX0DyPJ9ApH4D 
-iNwDIjgOgshMEME6gUGJgcGCgaGIgflGR+cFBt7///9vwLQDABVCEvmq/3YdAAAAAElFTkSuQmCC 
+3e5GKvWZAAAAWElEQVQI12NgwAUkVhcxMDBOYpxnwMCpwCB3gYHvIQPXFwaeRwwcXxgYBBh4PoFU 
+6TeAyD0CQILjIIiZCSJYJzAoMTBYMDAUMTDf6Oi4wMD7////DZh2AAAcVhMXUf/oTQAAAABJRU5E 
+rkJggg== 
 "></p>]]></text></answer>
   </subquestion>
 </question>
@@ -125,8 +127,8 @@
     <text>3</text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
@@ -134,8 +136,8 @@
     <text>5</text>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -158,8 +160,8 @@
     <tolerance>0</tolerance>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
 "></p>]]></text></feedback>
   </answer>
@@ -168,8 +170,8 @@
     <tolerance>0</tolerance>
     <feedback format="html"><text><![CDATA[<p><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 "></p>]]></text></feedback>
   </answer>
 </question>
@@ -183,46 +185,46 @@
 tRJIMhp4gkXIJAWARFpnmQOmFQA1jwXeV/vvCgAAAABJRU5ErkJggg== 
 "> {1:MULTICHOICE_HS:=<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAVUlEQVQI12NgwAQSHU0MDIyNDPUBDBxfGfgPMLB/B5FAYN8AItcIMDCwdE8EMZlW 
-C4AoObAs91cGnosM3D8Y+D+B2FwODPIHGBinuZwGqmGuMMBiEwCKERKuaM1mNQAAAABJRU5ErkJg 
-gg== 
+3e5GKvWZAAAAWElEQVQI12NgwATiHU0MDIyNDHUBDBxfGfgPMLB/Z+C/AJKxnwAi1wgwMLB0TwQx 
+mVYLgCi5AyCS+ysDz0UG7h8M/J9AbC4HBvkDDIzTXE4D1TBXGGCxCQCThRLMM486tAAAAABJRU5E 
+rkJggg== 
 ">#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
-">~<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iqu8zd7v+y 
-XhgAAABTSURBVAjXY2DABNMc3QMYGN69ewFk7+hQAJILwOIQcklFIZC8xpADlHBg4AYLcjxiYHFg 
-4HjCwPsARHIVMHBeYOAwYJAtYGBoc90BVMHcpoDFJgDhHRLk6uL+ygAAAABJRU5ErkJggg== 
+">~<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
+3e5GKvWZAAAAVElEQVQI12NgwATTDNwDGBj+//8BZN/oUACSG8DiEHJzRSGQfMaQI8DA4MDAAxbk 
++MTA4sDA8YWB7wOI5C5g4HrAwGHAIFfAwNDmegKogrlNAYtNAB06E8lsIFP8AAAAAElFTkSuQmCC 
 ">#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 ">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESJEiJm7zO6nttlqAAAAIklEQVQI12NgwAlEgJjJ 
 tRJIMhp4gkXIJAWARFpnmQOmFQA1jwXeV/vvCgAAAABJRU5ErkJggg== 
 "> {1:SHORTANSWER:=3#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
 ">~=5#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 ">}<BR/><IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAVBAMAAACNnGLAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAESJEiJm7zO6nttlqAAAAIklEQVQI12NgwAlEgJjJ 
 tRJIMhp4gkXIJAWARFpnmQOmFQA1jwXeV/vvCgAAAABJRU5ErkJggg== 
 "> {1:NUMERICAL:=3:0#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAALVBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAESIzRFVmd4iZqrvd7qAo 
-0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEgtaABRbAENLECKQyiB8wIDA2s7g10CSAPz 
-NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABJmEbBCn/VAAAAAAElF 
+0mEAAABeSURBVAjXY2DAASI6BIAkhwP7BiAVqsD4AEhNaABRrAENLECKQ6iA8wIDA1s7g10CSAPz 
+NbC+KAMQqQUR2sjAEMDAICXAwAbkd7QK+AgwMC7QfneFgYHJgCFCAbvNABFoEbCGdzZUAAAAAElF 
 TkSuQmCC 
 ">~=5:0#<IMG SRC="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAVBAMAAABiXgn+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA 
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAESIzRFVmd4iZqrvM 
-3e5GKvWZAAAAUElEQVQI12NgwAAREGolmGT8CqbYHoAprglgSl8BTHVCVFwCUxwNYMobTDNe5CsA 
-UtIG9gZAzinHOiCHOyTzThpYzQsHEMn8Gcxhf4CsHQQAyX8PqblssX8AAAAASUVORK5CYII= 
+3e5GKvWZAAAAUElEQVQI12NgwAAREGolhPoKJlkfgCmuCWBKXwFMdYJJxktgiqMBTHmDacaDvAVA 
+StrA3gDIOeVYB+Rwh2TeSQOreeEAIpk/gznsD5C1gwAAxKUPlrA6s8cAAAAASUVORK5CYII= 
 ">}</p>]]></text>
   </questiontext>
   <generalfeedback format="html"><text/></generalfeedback>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_truefalse-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_truefalse-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_truefalse-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+
 <quiz>
  
 <question type="category">
@@ -22,11 +23,11 @@
   <hidden>0</hidden>
   <answer fraction="0" format="plain_text">
     <text>true</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”true”</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "true"</p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
     <text>false</text>
-    <feedback format="html"><text><![CDATA[<p> Feedback for students choosing ”false” </p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p> Feedback for students choosing "false" </p>]]></text></feedback>
   </answer>
 </question>
 <question type="truefalse">
@@ -44,11 +45,11 @@
   <hidden>0</hidden>
   <answer fraction="0" format="plain_text">
     <text>true</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”true” </p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "true" </p>]]></text></feedback>
   </answer>
   <answer fraction="100" format="plain_text">
     <text>false</text>
-    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing ”false”</p>]]></text></feedback>
+    <feedback format="html"><text><![CDATA[<p>Feedback for students choosing "false"</p>]]></text></feedback>
   </answer>
 </question>
 <question type="truefalse">
@@ -56,7 +57,7 @@
     <text><![CDATA[Truefalse Test 3]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Please answer ”True”. </p>]]></text>
+    <text><![CDATA[<p>Please answer "True". </p>]]></text>
   </questiontext>
   <defaultgrade>3</defaultgrade>
   <generalfeedback format="html">
@@ -76,7 +77,7 @@
     <text><![CDATA[Truefalse Test 4]]></text>
   </name>
   <questiontext format="html">
-    <text><![CDATA[<p>Please answer ”False”. </p>]]></text>
+    <text><![CDATA[<p>Please answer "False". </p>]]></text>
   </questiontext>
   <defaultgrade>3</defaultgrade>
   <generalfeedback format="html">

Added: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_turkish-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_turkish-moodle.ref	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_turkish-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<quiz>
+ 
+<question type="category">
+  <category>
+    <text>$course$/top/Turkish Issues</text>
+  </category>
+</question>
+ 
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[Test Turkish]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p> <SPAN STYLE="text-decoration: underline;">Pangramm</SPAN> :</p>]]></text>
+  </questiontext>
+  <defaultgrade>1</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>Pijamalı hasta yağız şoföre çabucak güvendi.</p>]]></text>
+    <feedback format="html"><text><![CDATA[<p></p>]]></text></feedback>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>Saf ve haydut kız çocuğu bin plaj görmüş.</p>]]></text>
+  </answer>
+</question>
+ 
+</quiz>

Modified: trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_verbatim-moodle.ref
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_verbatim-moodle.ref	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/doc/latex/moodle/test/utf8ref/test_verbatim-moodle.ref	2023-01-29 21:21:06 UTC (rev 65672)
@@ -10,7 +10,7 @@
  
 <question type="multichoice">
   <name format="html">
-    <text><![CDATA[Multi]]></text>
+    <text><![CDATA[LaTeX]]></text>
   </name>
   <questiontext format="html">
     <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE>% !TeX encoding = UTF-8<BR/>% !TeX spellcheck = en_US<BR/>% !TEX TS-program = xelatex<BR/>\documentclass{article}<BR/>\usepackage[nostamp]{moodle}<BR/>\newif\iffvextra<BR/>\fvextratrue<BR/>\ifxetex % FOR XELATEX<BR/> \usepackage{fontspec}<BR/>\else %% FOR PDFLATEX<BR/> \usepackage[utf8]{inputenc} % necessary<BR/> \usepackage[T1]{fontenc} % necessary<BR/>\fi<BR/></CODE></PRE> </p>]]></text>
@@ -29,5 +29,29 @@
     <text><![CDATA[<p>toast</p>]]></text>
   </answer>
 </question>
+<question type="multichoice">
+  <name format="html">
+    <text><![CDATA[C]]></text>
+  </name>
+  <questiontext format="html">
+    <text><![CDATA[<p><PRE style="border-top: thin solid; border-bottom: thin solid"><CODE>#include <stdio.h><BR/>int main() {<BR/>    char c='\0', *pc=&c;<BR/>    printf("Hello world!\n");<BR/>    return *pc;<BR/>}<BR/></CODE></PRE> </p>]]></text>
+  </questiontext>
+  <defaultgrade>1.0</defaultgrade>
+  <generalfeedback format="html"><text/></generalfeedback>
+  <penalty>0.10</penalty>
+  <hidden>0</hidden>
+  <single>true</single>
+  <shuffleanswers>1</shuffleanswers>
+  <answernumbering>abc</answernumbering>
+  <answer fraction="100" format="html">
+    <text><![CDATA[<p>"&test"</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p>’toast’</p>]]></text>
+  </answer>
+  <answer fraction="0" format="html">
+    <text><![CDATA[<p><\(<a>\)></p>]]></text>
+  </answer>
+</question>
  
 </quiz>

Modified: trunk/Master/texmf-dist/source/latex/moodle/makefile
===================================================================
--- trunk/Master/texmf-dist/source/latex/moodle/makefile	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/source/latex/moodle/makefile	2023-01-29 21:21:06 UTC (rev 65672)
@@ -2,7 +2,7 @@
 FILE_CLEAN=*.sty *.log *.aux *.auxlock *.out *.blg *.bbl *.toc *.xml *.bcf *.synctex.gz *~ *.nav *.snm *.idx *.ilg *.ind _minted-* *.glo *.gls *.dpth
 LATEX=latex
 PDFLATEX=lualatex
-LATEXFLAGS=-interaction=nonstopmode -shell-escape
+LATEXFLAGS=-halt-on-error -shell-escape
 DIFFTOOL=meld
 MAKEINDEX=makeindex
 TESTDIR=test
@@ -64,13 +64,16 @@
 
 $(PROJECT_NAME).sty: $(PROJECT_NAME).dtx
 
-$(PROJECT_NAME).pdf: $(PROJECT_NAME).dtx $(PROJECT_NAME).gls
+$(PROJECT_NAME).pdf: $(PROJECT_NAME).dtx $(PROJECT_NAME).gls $(PROJECT_NAME).ind
 
-%.glo: %.dtx
+%.glo %.idx: %.dtx
 	$(PDFLATEX) $(LATEXFLAGS) $< $(DEBUG)
 
 %.gls: %.glo
 	$(MAKEINDEX) -s gglo.ist -o $@ $< $(DEBUG)
+	
+%.ind: %.idx
+	$(MAKEINDEX) -s gind.ist -o $@ $< $(DEBUG)
 
 %.pdf: %.tex
 	$(PDFLATEX) $(LATEXFLAGS) $< $(DEBUG)

Modified: trunk/Master/texmf-dist/source/latex/moodle/moodle.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/moodle/moodle.dtx	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/source/latex/moodle/moodle.dtx	2023-01-29 21:21:06 UTC (rev 65672)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
 % moodle.dtx
-% Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail.com)
-% and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans.org).
+% Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail DOT com)
+% and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans DOT org).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -13,7 +13,7 @@
 % version 2005/12/01 or later.
 %
 % This work has the LPPL maintenance status `maintained'.
-% 
+%
 % The Current Maintainer of this work is Matthieu Guerquin-Kern.
 %
 % This work consists of the files moodle.dtx and moodle.ins
@@ -28,38 +28,45 @@
 %<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<package>\ProvidesPackage{moodle}
 %<*package>
-    [2021/02/07 v0.9 Moodle quiz XML generation]
+    [2023/01/28 v1.0 Moodle quiz XML generation]
 %</package>
 %
 %<*driver>
-\documentclass[a4paper]{ltxdoc}
+\documentclass[10pt,a4paper]{ltxdoc}
+%\usepackage[draft]{moodle}
 \usepackage{iftex}
 \ifPDFTeX
   \usepackage[utf8]{inputenc} % necessary
   \usepackage[T1]{fontenc} % necessary
-  \usepackage[protrusion=true,expansion]{microtype}
-  \usepackage[ttscale=.875]{libertine}
+  \usepackage{libertine}
+  \usepackage[scaled=0.83]{beramono}
 \else % assuming LuaLaTeX or XeLaTeX
   \usepackage{fontspec}
-  \setmainfont[Mapping=tex-text]{Linux Libertine O}
+  \setmainfont{Linux Libertine O}
 \fi
-%\usepackage{moodle}[2020/07/09]
-\usepackage{amssymb,metalogo,multirow,threeparttable,booktabs}
-\usepackage{hyperref,tikz,minted,changelog}
-\usetikzlibrary{arrows,positioning,decorations.text}
+\usepackage{microtype}
+\usepackage{dtxdescribe,varioref}
+\addtolength\marginparwidth{30pt}
+\addtolength\oddsidemargin{20pt}
+\addtolength\evensidemargin{20pt}
+\usepackage[main=english,french,german]{babel}
+\usepackage{amssymb,threeparttable,booktabs}
+\usepackage{eurosym,longtable,tikz,minted,changelog}
+%\usepackage[pdfpagelabels]{hyperref}% now loaded by ltxdoc
+\usetikzlibrary{arrows,positioning,decorations.text,calc}
 %\usemintedstyle{Wombat}
-\EnableCrossrefs         
+\EnableCrossrefs
 \CodelineIndex
 \OnlyDescription
 \RecordChanges
+\setcounter{IndexColumns}{2}
 \begin{document}
   \DocInput{moodle.dtx}
-  %\PrintChanges
 \end{document}
 %</driver>
 % \fi
 %
-% \CheckSum{7729} ^^A Comment \OnlyDescription above to adjust
+% \CheckSum{10269} ^^A Comment \OnlyDescription above to adjust
 %
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -81,170 +88,199 @@
 % \GetFileInfo{\jobname.dtx}
 %
 % \DoNotIndex{\newcommand,\newenvironment,\def}
-% 
 %
-% \title{The \textsf{moodle} package: \\
-%        generating Moodle quizzes via \LaTeX%
-%        \thanks{This document
-%                corresponds to \textsf{moodle.sty}~\fileversion, dated \filedate.}}
-% \author{Anders Hendrickson\footnote{original author of the package (\texttt{v0.5}), inactive.}\\	
-% \texttt{anders.o.f.hendrickson AT gmail.com} \and
-% Matthieu Guerquin-Kern\footnote{current maintainer, author of the updates (\texttt{v0.6}
-% to \texttt{v0.9}), partially funded in 2019 by \href{https://www.ensea.fr/en/}{ENSEA Graduate School}, France.}\\
-% \href{mailto:guerquin-kern AT crans.org}{guerquin-kern AT crans.org}}
-% \date{February 7, 2021}
-% 
+% \providecommand\TikZ{\mbox{Ti\emph{k}Z}}%
+% \providecommand\Moodle{\mbox{\brand{Moodle}}}%
+% \providecommand\LMS{\mbox{\acro{LMS}}}%
+% \providecommand\XML{\mbox{\acro{XML}}}%
+%
+% \title{%
+%   The \pkg{moodle} package: \\
+%   generating \Moodle\ quizzes via \LaTeX%
+%   \thanks{This document corresponds to \pkg{moodle.sty}~\fileversion, dated \filedate.}
+% }%
+%
+% \author{%
+%   Anders Hendrickson\footnote{original author of the package (\texttt{v0.5}), inactive.}\\
+%  \texttt{anders.o.f.hendrickson AT gmail DOT com} \and
+%  Matthieu Guerquin-Kern\footnote{current maintainer, %
+%  author of the updates (\texttt{v0.6} to \texttt{\fileversion}).}\\
+%  \href{mailto:guerquin-kernATcransDOTorg}{\texttt{guerquin-kern AT crans DOT org}}%
+% }%
+%
+% \date{\today}
+%
 % \maketitle
 %
-% \providecommand\TikZ{Ti\emph{k}Z}
+% \begin{abstract}
+% This document describes the \pkg{moodle} package, made for writing \Moodle\
+% quizzes in \LaTeX. In addition to typesetting the quizzes for proofreading or
+% giving to students as handout, the package generates an \XML\ file to be uploaded
+% to a \Moodle\ server.
+% \end{abstract}
 %
-% \section{Motivation}
+% \tableofcontents
 %
-% The acronym Moodle stands for ``Modular Object-Oriented Dynamic Learning Environment.''
-% It is an open source learning management system (LMS) employed by many universities,
+% \section{Introduction}
+% \subsection{Motivation}
+%
+% The acronym \acro{Moodle} stands for ``Modular Object-Oriented Dynamic Learning Environment.''
+% It is an open source learning management system (\LMS) employed by many universities,
 % colleges, and high schools to provide digital access to course materials, such as
 % notes, video lectures, forums, and the like; see
-% \url{https://moodle.com/moodle-lms/} for more information. 
+% \url{https://moodle.com/moodle-lms/} for more information.
 % One of the many useful
-% features of Moodle is that mathematical and scientific notation can be entered in
+% features of \Moodle\ is that mathematical and scientific notation can be entered in
 % \LaTeX\ or \TeX\ code, which will be typeset either through a built-in \TeX\ filter
 % or by invoking MathJax.
-% 
+%
 % For instructors who want to give students frequent feedback,
-% but lack the time to do so, a particularly valuable module in Moodle
-% is the \emph{quiz}.  A Moodle quiz can consist of several different types of
-% questions---not only multiple choice or true/false questions, but also 
-% questions requiring a short phrase or numerical answer, and even essay 
-% questions.  All but the essay questions are automatically graded by the 
-% system, and the instructor has full control over how often the quiz may be 
+% but lack the time to do so, a particularly valuable module in \Moodle\
+% is the \emph{quiz}.  A \Moodle\ quiz can consist of several different types of
+% questions---not only multiple choice or true/false questions, but also
+% questions requiring a short phrase or numerical answer, and even essay
+% questions.  All but the essay questions are automatically graded by the
+% system, and the instructor has full control over how often the quiz may be
 % attempted, its duration, and so forth.  Feedback can be tailored to specific
 % mistakes the student makes.
-% 
-% All these features make Moodle quizzes very useful tools for instructors 
+%
+% All these features make \Moodle\ quizzes very useful tools for instructors
 % who have access to them.
-% Unfortunately, the primary way to create or edit a Moodle quiz 
+% Unfortunately, the primary way to create or edit a \Moodle\ quiz
 % is through a web-based interface that can be slow to operate.
 % To users of \LaTeX, accustomed to the speed of typing source code on
 % a keyboard alone, the agonizing slowness of switching between mouse and keyboard
 % to navigate a web form with its myriad dropdown boxes, radio buttons,
-% compounded with a perceptible time lag as one's Moodle server responds to requests,
-% can produce a very frustrating experience.  Moreover, editing is entirely 
+% compounded with a perceptible time lag as one's \Moodle\ server responds to requests,
+% can produce a very frustrating experience.  Moreover, editing is entirely
 % impossible without network access.
-% 
-% Once the quiz is written, there is no easy way to view and proofread all the 
+%
+% Once the quiz is written, there is no easy way to view and proofread all the
 % information of which it is made.  Each question is edited on a separate webpage,
-% which is so full of options that it cannot be viewed on a single screen.  
-% An instructor has to spend much time checking over the newly created quiz in 
+% which is so full of options that it cannot be viewed on a single screen.
+% An instructor has to spend much time checking over the newly created quiz in
 % order to be confident there are no errors.
-% 
+%
 % Added to all this is the frustration of managing graphics.
 % If a question requires an image---say, asking a calculus student to interpret
 % the graph of a function---the image must first be produced as a standalone file
-% (e.g., in JPG or PNG format), uploaded to Moodle, and then chosen in a web-based
-% HTML editor.  Great is the vexation of the instructor who decided to alter a 
-% question, as there are more and more possibilities of error whenever multiple 
+% (e.g., in \JPG\ or \PNG\ format), uploaded to \Moodle, and then chosen in a web-based
+% \HTML\ editor.  Great is the vexation of the instructor who decided to alter a
+% question, as there are more and more possibilities of error whenever multiple
 % files must be kept synchronized.
-% 
-% Users of \LaTeX\ are also accustomed to the speed and flexibility that 
+%
+% Users of \LaTeX\ are also accustomed to the speed and flexibility that
 % comes from defining their own macros, which may be as brief as writing
-% |\R| instead of |\mathbb{R}|
+% \cmd{\R} instead of |\mathbb{R}|
 % or as complex as macros that generate entire paragraphs of text.
-% The Moodle editor, by contrast, requires you to type |\mathbb{R}|
+% The \Moodle\ editor, by contrast, requires you to type |\mathbb{R}|
 % every single time you want $\mathbb{R}$.
-% 
+%
 % Finally, there is the question of archiving and reusing one's work.
-% Much, much work goes into creating Moodle quizzes, which then reside
-% on a Moodle server somewhere in the cloud in a format neither easily browsable
+% Much, much work goes into creating \Moodle\ quizzes, which then reside
+% on a \Moodle\ server somewhere in the cloud in a format neither easily browsable
 % nor easily modifiable.
-% 
-% \LaTeX\ itself has the power to solve all these difficulties: 
+%
+% \LaTeX\ itself has the power to solve all these difficulties:
 % it is swift to edit and swifter to compile a \LaTeX\ document,
-% and the PDF may be previewed onscreen or printed out for ease of proofreading.
+% and the \PDF\ may be previewed onscreen or printed out for ease of proofreading.
 % Mathematical graphics can be integrated within the main file through \TikZ,
 % and of course \LaTeX\ macros can be customized.
-% Using the present \textsf{moodle} package,
-% a quiz author can type a quiz using familiar \LaTeX\ syntax and document 
+% Using the present \pkg{moodle} package,
+% a quiz author can type a quiz using familiar \LaTeX\ syntax and document
 % structure.  Upon compilation, \LaTeX\ will generate both a well-organized
-% PDF that is easy to proofread and an XML file that can be uploaded directly
-% to Moodle.  The entire process is far faster than using Moodle's own
-% web-based editor, makes it easier to catch one's mistakes, 
-% and the ultimate source code of one's work is a human-readable |.tex| file 
+% \PDF\ that is easy to proofread and an \XML\ file that can be uploaded directly
+% to \Moodle.  The entire process is far faster than using \Moodle's own
+% web-based editor, makes it easier to catch one's mistakes,
+% and the ultimate source code of one's work is a human-readable \filenm{.tex} file
 % that can be archived, versioned, browsed, and edited offline.
-% 
-% Strictly speaking, the \textsf{moodle} package does not generate quizzes:
-% it generates question banks that can be imported in the LMS. The teacher
+%
+% Strictly speaking, the \pkg{moodle} package does not generate quizzes:
+% it generates question banks that can be imported in the \LMS. The teacher
 % still needs to compose manually a quiz from the question banks. Hopefully,
-% two Moodle features supported by the package make this task easier:
+% two \Moodle\ features supported by the package make this task easier:
 % categories and tags.
 %
-% In this documentation the LMS is referred to as Moodle (uppercase M and
-% roman font) while the \LaTeX\ package that is documented here is referred
-% to as \textsf{moodle} (all lower case and sans serif font).
-% 
-% \section{Workflow}
-% The process of creating a quiz in Moodle using this package is depicted in
-% Figure~\ref{fig:workflow}. It follows a few steps:
-% \begin{enumerate}
-%   \item Write a \LaTeX\ document using |\usepackage{moodle}| as described 
-% below.
-%   \item Compile the document to PDF using pdf\LaTeX\, \XeLaTeX\ or \LuaLaTeX.
-% This will also produce the file \meta{jobname}|-moodle.xml|.
-%   \item Open Moodle, navigate to the desired course,
-%         and under ``Question bank'' select ``Import.''
-%   \item Select ``Moodle XML format,'' choose the XML file to upload, and press ``Import.''
-%   \item After Moodle verifies that the questions have been imported correctly,
-%         you may add them to your quizzes.
-% \end{enumerate}
-% \begin{figure}[tbp]
+% In this documentation the \LMS\ is referred to as \Moodle\
+% (uppercase letters and roman font) while the \LaTeX\ package
+% is referred to as \pkg{moodle} (lower case and sans serif font).
+%
+% \subsection{Workflow}
+%
+%% \begin{figure}[bp]
 % \centering
-% \begin{tikzpicture}[node distance=1,auto,bend 
-% angle=45,box/.style={rectangle,draw=blue!50,rounded corners=3,top 
-% 	color=white,bottom color=black!20,thick,align=center,text 
+% \begin{tikzpicture}[node distance=1,auto,bend
+% angle=45,box/.style={rectangle,draw=blue!50,rounded corners=3,top
+% 	color=white,bottom color=black!20,thick,align=center,text
 % 	width=2.5cm},elmt/.style={font=\itshape,align=left},
 % cmnt/.style={font=\footnotesize,align=center},
 % bigcmnt/.style={font=\normalsize,align=center},pre/.style={<-,>=stealth',thick},
 % post/.style={->,>=stealth',thick}, prepost/.style={<->,>=stealth',thick}]
 % \draw[white,fill=orange!20,rounded corners=10]
-% (-1.5,-.7)--++(0,1.4)--++(10.3,0)--++(0,-3.3)--++(-6.7,0)--++(-.25,1.725)--cycle;
-% \node[orange!80!black,above] (dev) at (7.5,-2.6) {\textit{Developpement}};
+% (-1.5,-.7)--++(0,1.4)--++(10.3,0)--++(0,-2.3)--++(-6.7,0)--++(-.25,.725)--cycle;
+% \node[orange!80!black,above] (dev) at (7.5,-1.6) {\textit{Development}};
 % \fill[green,fill opacity=.2,rounded corners=10]
-% (-1.5,.7)--++(3,0)--++(0.5,-3.4)--++(6.8,0)--++(0,-2)--++(-10.3,0)--cycle;
-% \node[green!80!black,below] (dev) at (7.5,-2.7) {\textit{Publishing}}; 
-% \node[box,text width=2cm] (tex) {\texttt{.tex} source file};
-% \node[rectangle,fill=white,draw,align=center,text 
+% (-1.5,.7)--++(3,0)--++(0.5,-2.4)--++(6.8,0)--++(0,-3)--++(-10.3,0)--cycle;
+% \node[green!80!black,below] (dev) at (7.5,-1.7) {\textit{Publishing}};
+% \node[box,text width=2cm] (tex) {\filenm{.tex} source file};
+% \node[rectangle,fill=white,draw,align=center,text
 % width=1.5cm,below=of tex] (compfinal) {\LaTeX{}\\ engine};
 % \node[rectangle,fill=white,draw,align=center,text width=1.5cm,right=of tex,xshift=4.5cm]
 % (compdraft) {\LaTeX{}\\ engine};
-% \node[box,right=of compfinal,xshift=.5cm] (pdf) {\texttt{.pdf} file for proofreading};
-% \node[rectangle,fill=white,draw,align=center,text width=2cm,below=of compfinal] (extern) 
+% \draw ($(tex)!.5!(compdraft)+(0,-.7)$) node[box] (pdf) {\filenm{.pdf} file for proofreading};
+% \node[box,below=of pdf,yshift=.1cm] (pdfhandout) {\filenm{.pdf} file for students};
+% \node[rectangle,fill=white,draw,align=center,text width=2cm,below=of compfinal] (extern)
 % {Picture\\processing};
-% \draw (pdf|-extern) node[box,anchor=center] (xml) {\texttt{.xml} file\\\footnotesize(pictures embedded)};
+% \draw (pdf|-extern) node[box,anchor=center] (xml) {\filenm{.xml} file\\\footnotesize(pictures embedded)};
+% \draw (compdraft|-pdfhandout)
+% node[rectangle,fill=white,draw,align=center,text width=1.5cm,anchor=center] (students)
+% {Students};
 % \draw (compdraft|-xml)
-% node[rectangle,fill=white,draw,align=center,text width=1.5cm,anchor=center] (moodle) 
-% {Moodle\\Server};
-% \draw (tex) edge [post,bend right=10] node[cmnt,pos=.5,left] {\texttt{final}} (compfinal);
-% \draw (tex) edge [post,bend left=10] node[cmnt,pos=.5,below] {\texttt{draft}} (compdraft);
+% node[rectangle,fill=white,draw,align=center,text width=1.5cm,anchor=center] (moodle)
+% {\Moodle\ \\Server};
+% \draw (tex) edge [post,bend right=10] node[cmnt,pos=.5,left] {\optn{final}}
+% node[cmnt,pos=.5,right] {\optn{handout}} (compfinal);
+% \draw (tex) edge [post,bend left=10] node[cmnt,pos=.5,below] {\optn{draft}} (compdraft);
 % \draw (compdraft) edge [post,bend left=10] (pdf);
-% \draw (compfinal) edge [post] (pdf);
-% \draw (compfinal) edge [post,bend left=10] (xml);
-% \draw (compfinal) edge [post,bend right=30] node[cmnt,black!40,pos=.5,text width=1cm,left]
-% {\texttt{tikz}, \texttt{.png}, \texttt{.jpg}} (extern);
-% \draw (extern) edge [post,green,bend right=30] node[cmnt,black!40,pos=.5,below,right]
-% {\texttt{base64}} (compfinal);
-% \draw (pdf) edge [post,red,bend right=15] node[sloped,cmnt,pos=.5,above] {improve} (tex);
+% \draw (compfinal) edge [post] node[cmnt,pos=.5,above,sloped]
+% {\footnotesize(\optn{handout})} (pdfhandout);
+% \draw[dashed] (compfinal) edge [post] (pdf);
+% \draw (compfinal) edge [post,bend left=0] node[cmnt,pos=.55,below,sloped]
+% {\footnotesize(\optn{final})} (xml);
+% \draw (compfinal) edge [post,bend right=15] node[cmnt,black!40,pos=.5,text width=1cm,left]
+% {\optn{tikz}, \filenm{.png}, \filenm{.jpg}} (extern);
+% \draw (extern) edge [post,green,bend right=15] node[cmnt,black!40,pos=.5,below,right]
+% {\prog{base64}} (compfinal);
+% \draw (pdf) edge [post,red,bend left=15] node[sloped,cmnt,pos=.5,above] {improve} (tex);
+% \draw (pdfhandout) edge [post,red] node[cmnt,pos=.5,below] {distribute} (students);
 % \draw (xml) edge [post,red] node[cmnt,pos=.5,below] {import} (moodle);
 % \end{tikzpicture}
-% \caption{Block diagram describing a typical workflow using the \textsf{moodle} package.}
+% \caption{Block diagram describing a typical workflow using the \pkg{moodle} package.}
 % \label{fig:workflow}
 % \end{figure}
 %
+% The process of creating a quiz in \Moodle\ using this package is depicted in
+% Figure~\vref{fig:workflow}. It follows a few
+% steps:
+% \begin{enumerate}
+%   \item Write a \LaTeX\ document using |\usepackage{moodle}| as described
+% below.
+%   \item Compile the document to \PDF\ using pdf\LaTeX\ (\acro{ASCII} characters only),
+%         \XeLaTeX, or \LuaLaTeX.
+% This will also produce the file \meta{jobname}\filenm{-moodle.xml}.
+%   \item navigate to your course on \Moodle\ and, under ``Question bank'', select ``Import.''
+%   \item Select ``Moodle \XML\ format,'' choose the \XML\ file to upload, and press ``Import.''
+%   \item After \Moodle\ verifies that the questions have been imported correctly,
+%         you may add them to your quizzes.
+% \end{enumerate}
+%
 % \section{Usage}\label{sect:usage}
 % The following pages presume the reader already has some familiarity with creating
-% and editing Moodle quizzes through the web interface.
-% Users that are not familiar with Moodle quizzes can learn more in the Moodle
-% documentation. For instance, \url{https://docs.moodle.org/310/en/Question_types}.
+% and editing \Moodle\ quizzes through the web interface.
+% Users that are not familiar with \Moodle\ quizzes can learn more in the \Moodle\
+% documentation. For instance, \url{https://docs.moodle.org/en/Question_types}.
 %
-% The |xkeyval| package is used to provide a key-value interface.
+% The \pkg{xkeyval} package is used to provide a key-value interface.
 %
 % \subsection{Example Document}
 %
@@ -256,6 +292,8 @@
 %   \newcommand\monomial[1]{x^{#1}}
 %   \newcommand\sillyanswer{What!?}
 %   \begin{document}
+%   Quiz generated \LaTeX's \textsf{moodle} (\moodleversion, \moodledate).
+%   Import the derived file \texttt{\jobname-moodle.xml} on Moodle.
 %   \begin{quiz}{My first quiz}
 %     \begin{numerical}[points=2]{Basic addition}
 %       What is $8+3$?
@@ -277,103 +315,132 @@
 %   \end{document}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% Key features to note in this first example are that a |quiz| environment
+% Key features to note in this first example are that a \env{quiz} environment
 % contains several question environments.
-% Each question takes a name as a mandatory argument, 
+% Each question takes a name as a mandatory argument,
 % and it may also take optional key-value arguments within brackets.
 % The question environments resemble list environments
-% such as |itemize| or |enumerate|, in that answers are set off by 
-% |\item|'s, but the question itself is the text that occurs before
-% the first |\item|.
+% such as \env{itemize} or \env{enumerate}, in that answers are set off by
+% \cmd{\item}'s, but the question itself is the text that occurs before
+% the first \cmd{\item}.
 %
-%^^A \DescribeMacro{\moodleregisternewcommands}\DescribeMacro{\htmlregister}
-%^^A Calling |\moodleregisternewcommands| tells the package to treat
+%^^A \DescribeMacro[moodle]{\moodleregisternewcommands}
+%^^A \DescribeMacro[moodle]{\htmlregister}
+%^^A Calling \cmb{\moodleregisternewcommands} tells the package to treat
 %^^A specifically the macros defined subsequently.
-%^^A This way, the macros that Moodle's \LaTeX\ renderer does not know
-%^^A about can be properly expanded in the XML file.
-%^^A This mechanism applies only to the macros defined using |\newcommand|
+%^^A This way, the macros that \Moodle's \LaTeX\ renderer does not know
+%^^A about can be properly expanded in the \XML\ file.
+%^^A This mechanism applies only to the macros defined using \cmd{\newcommand}
 %^^A and \emph{without} optional argument.
-%^^A Using |\htmlregister|\marg{macroname}, lets you declare a specific
+%^^A Using \cmd{\htmlregister}\marg{macroname}, lets you declare a specific
 %^^A macro for expansion. This mechanism, instead, also applies to the
-%^^A macros defined using \TeX's primitive |\def|.
-% 
+%^^A macros defined using \TeX's primitive \cmd{\def}.
+%
 % \subsection{Package Options}
-% \DescribeMacro{draft}
-% \DescribeMacro{final}
-% If the package option |draft| is invoked, by calling
-% |\usepackage[draft]{moodle}| or |\documentclass[draft]{...}|, then no
-% XML file will be generated. This is especially useful while editing a
-% quiz containing graphics, so as to avoid the time spent converting
-% image files. The package option |final| might be useful if one wants
-% to avoid the option |draft| to be inherited from the |documentclass|.
 %
-% \DescribeMacro{handout}
-% If the package option |handout| is invoked (|\usepackage[handout]{moodle}|),
-% the PDF file is generated clean from teacher-only information (answers,
-% points, penalty, feedback, tags) and, hence, can be given  to students for
-% classroom work. In particular, as would Moodle do, answers in
-% \texttt{matching} questions are shuffled and the option \texttt{shuffle}
-% triggers the shuffling of choices offered (\texttt{multi} and 
-% \texttt{matching}). This is achieved thanks to the package
-% \texttt{randomlist}, loaded if the option is invoked.
-% The XML file is generated as usual.
+% \DescribeOption[moodle]{draft} If the package option \optn{draft} is invoked,
+% by calling |\usepackage[draft]{moodle}| or |\documentclass[draft]{...}|,
+% then no \XML\ file will be generated. This is especially useful while
+% editing a quiz containing graphics, so as to avoid the time spent
+% converting image files.
+% \DescribeOption[moodle]{final} The package option \optn{final} might be
+% useful if one wants to avoid the option \optn{draft} to be inherited from
+% the \cmd{\documentclass}.
 %
-% \DescribeMacro{nostamp}
+% \DescribeOption[moodle]{handout}
+% If the package option \optn{handout} is invoked (|\usepackage[handout]{moodle}|),
+% the \PDF\ file is generated clean from teacher-only information (answers,
+% points, penalty, feedback, tags) and, hence, can be given  to students
+% for classroom work. In particular, as would \Moodle\ do, answers in
+% \env{matching} questions are shuffled and the option \optn{shuffle}
+% triggers the shuffling of choices offered (\env{multi} and
+% \env{matching}). This is achieved thanks to the package
+% \pkg{randomlist}, loaded if the option is invoked. The seed of its
+% random generator is controlled by the macro \cmd{\RLsetrandomseed}\marg{integer}
+% \DescribeMacro[randomlist]{\RLsetrandomseed}.
+% This option does not interfere with the generation of the \XML\ file.
+%
+% \DescribeOption[moodle]{samepage}^^A\watchout[experimental]
+% If the package option \optn{samepage} is invoked, preferably used together
+% with \optn{handout} (|\usepackage[handout,samepage]{moodle}|), the package
+% will try to keep every question on the same page. Very bad spacing
+% can result from this.
+% This option is experimental. Subquestions inside a \env{cloze} question
+% are protected but the \env{cloze} question itself is not protected.
+%
+% \DescribeOption[moodle]{nostamp}
 % By default, the package will output a stamp as a comment in the XML
-% file. This stamp contains information gathered about the TeX engine,
-% the operating system used and the package version. For instance:
+% file. This stamp contains information gathered about the \TeX\ engine,
+% the platform used and the package version. For instance:%
 % \begin{quote}\small
-% |<!-- This file was generated on 2021-01-07 by LuaLaTeX -->|\\
-% |<!-- running on Linux with the package moodle |\texttt{\fileversion}| -->|
+% \makeatletter\def\today{\the\year-\two at digits\month-\two at digits\day}\makeatother
+% \newcount\hour\hour=\time
+% \divide\hour by 60\relax
+% \newcount\minute\minute=\hour
+% \multiply\minute by -60\relax
+% \advance\minute by \time\relax
+% |<!-- This XML file is a question bank made for Moodle. -->|\\
+% |<!-- It was generated on |\texttt{\today\space\the\hour:\the\minute}| by LuaLaTeX running -->|\\
+% |<!-- on Linux with the package moodle |\texttt{\fileversion}| (|\texttt{\filedate}|) -->|
 % \end{quote}
-% The package option
-% |nostamp| prevents this stamp to be written in the XML file.
+% The package option |nostamp| prevents this
+% stamp from being written in the \XML\ file.
 %
-% \DescribeMacro{section}
-% \DescribeMacro{section*}
-% \DescribeMacro{subsection}
-% \DescribeMacro{subsection*}
-% If the package option |section| is invoked (|\usepackage[section]{moodle}|),
-% then each quiz is represented by a different \LaTeX\ section. Starred
-% variants correspond to unnumbered sections or subsections. To preserve
-% compatibility with Version 0.5 of this package, the default is |subsection*|.
-% Consequently, |\usepackage{moodle}| is equivalent to
-% |\usepackage[subsection*]{moodle}|.
+% \DescribeOption[moodle]{section}\DescribeOption[moodle]{subsection}
+% \DescribeOption[moodle]{section*}\DescribeOption[moodle]{subsection*}
+% The package options \optn{section} and \optn{subsection} place each quiz as a
+% new section or subsection, respectively. Starred variants
+% correspond to unnumbered sections or subsections. To preserve
+% compatibility with Version 0.5 of this package, the default is
+% \optn{subsection*}. Consequently, |\usepackage[subsection*]{moodle}| is equivalent
+% to |\usepackage{moodle}| .
 %
-% \DescribeMacro{tikz} The package option \texttt{tikz} is described in section
-% \ref{subsec:tikz}.
+% \DescribeOption[moodle]{tikz}
+% The package option \optn{tikz} is described in Section~\vref{subsec:tikz}.
 %
-% \DescribeMacro{svg} The package option \texttt{svg} is described in section
-% \ref{subsec:svg}.
+% \DescribeOption[moodle]{svg}^^A\watchout[experimental]
+% The package option \optn{svg} is described in Section~\vref{subsec:svg}.
 %
+% \DescribeOption[moodle]{LMS}\texttt{=}\meta{\texttt{X.Y}}
+% \DescribeDefault{warn only} lets you specify version numbers
+% for the target \Moodle\ LMS instance (\texttt{X} and \texttt{Y} are
+% major and minor version integers). When version numbers are provided,
+% the use of recent quiz features is secured by a compatibility
+% check and \pkg{moodle} raises relevant errors. The XML stamp
+% (see \optn{nostamp} above) also mentions \Moodle's target version.
+% By default, \pkg{moodle} will just issue warnings when recent quiz
+% features are used.
+%
 % \subsection{Quiz and Question Environments}
-% 
-% \DescribeMacro{quiz}
-% A |.tex| document to generate Moodle quizzes contains one or more
-% |quiz| environments, within which various question environments are nested.
-% The required argument to the |quiz| environment names a category for Moodles
+%
+% A \filenm{.tex} document to generate \Moodle\ quizzes contains one or more
+% \env{quiz} environments.
+%
+% \DescribeEnv[moodle]{quiz}\oarg{common options}\marg{category name}
+% defines a quiz, within which various question environments are nested.
+% The mandatory argument, \meta{category name}, names a category for \Moodle's
 % ``question bank'': after import, the questions defined in this environment
 % will be gathered in this category.
-% \begin{center}
-% |\begin{quiz}|\oarg{options}\marg{category name}%
-% \end{center}
-% There are no |quiz|-specific options,
-% but any \meta{options} set with |\begin{quiz}|
-% will be inherited by all questions contained within that |quiz| environment.
-% 
-% \DescribeMacro{\moodleset}
-% Options may also be set outside question environments with
-% |\moodleset|\marg{options}; these changes are local to \TeX-groups.
+% Using the optional argument, options can be set at the quiz level.
+% Although there are no \env{quiz}-specific options, any \meta{common options} set
+% with the quiz will be inherited by all questions contained within that environment.
 %
-% \DescribeMacro{\setcategory}\DescribeMacro{\setsubcategory}
-% Although the |quiz| environment defines a category by its own, one can change
-% the current category inside the quiz environment and in between questions,
-% using the macro |\setcategory|\marg{category name}. A subcategory can also be
-% defined with |\setsubcategory|\marg{subcategory name}. The categories and
-% subcategories are reflected in the PDF file as sections, subsections, or
-% subsubsections, in accordance to the package setting |section|, |section*|,
-% |subsection|, or |subsection*|.
-% 
+% \DescribeMacro[moodle]{\moodleset}\marg{options}
+% is to be used to set options outside question environments; the option
+% settings are local to \TeX-groups.
+%
+% \DescribeMacro[moodle]{\setcategory}\marg{category name}
+% is to be used to change the current category inside a quiz environment and
+% in between questions. Note that the \env{quiz} environment defines a category
+% by its own.
+%
+% \DescribeMacro[moodle]{\setsubcategory}\marg{subcategory name}
+% does the same with subcategories.
+
+% The categories and subcategories are reflected in the \PDF\ file as sections, subsections, or
+% subsubsections, in accordance to the package setting \optn{section}, \optn{section*},
+% \optn{subsection}, or \optn{subsection*}.
+%
 % The syntax for each question environment is
 % \begin{quote}
 %   |\begin|\marg{question type}\oarg{question options}\marg{question name} \\
@@ -386,28 +453,29 @@
 % The meaning of the \meta{item}s varies depending on the question type,
 % but they usually are answers to the question.
 % Details will be given below.
-% 
+%
 % The following key-value options may be set for all questions:
-% 
-% \DescribeMacro{points}\DescribeMacro{default grade}
+%
+% \DescribeKey[quiz,question]{points}\DescribeDefault{1}
+% \DescribeKey[quiz,question]{default grade}
 % By default, each question is worth 1 point on the quiz.
-% This may be changed with the |points| key or its synonym, |default grade|;
-% for example, |points=2| makes that question worth two points.
-% 
-% \DescribeMacro{penalty}
-% The |penalty| is the fraction of points that is taken off for each wrong attempt;
+% This setting may be changed with the \optn{points} key or its synonym, \optn{default grade}.
+% For example, \optn{points=2} makes that question worth two points.
+%
+% \DescribeKey[quiz,question]{penalty}\DescribeDefault{0.1}
+% The \optn{penalty} is the fraction of points that is taken off for each wrong attempt;
 % it may be set to any value between 0 and 1.
-% The default is |penalty=0.10|.
-% 
-% \DescribeMacro{fraction}
+%
+% \DescribeKey[answer]{fraction}^^A\DescribeDefault{0}
 % In most question types, it is possible to designate some answers as being
 % worth partial credit---that is, some fraction of a completely correct answer.
-% The |fraction| key may be set to any of the values given in Table~\ref{tab:fraction}, 
-% from |0| (entirely wrong) to |100| (entirely correct).
-% 
+% The \optn{fraction} key may be set to any of the values given in Table~\vref{tab:fraction},
+% from \texttt{0} (entirely wrong) to \texttt{100} (entirely correct).
+%
 % \begin{table}[tbp]
 % \centering
-% \caption{\href{https://github.com/moodle/moodle/blob/MOODLE\_310\_STABLE/question/engine/bank.php\#L339}{Valid positive options} for the \texttt{fraction} key: $100\cdot(p/q)$.}
+% \caption{\href{https://github.com/moodle/moodle/blob/MOODLE\_310\_STABLE/question/engine/bank.php\#L339}
+%     {Admissible positive values} for the \optn{fraction} key outside \env{cloze} environments: $100\cdot(p/q)$.}
 % \label{tab:fraction}
 % \footnotesize
 % \begin{tabular}{l*{10}{l}}
@@ -432,38 +500,41 @@
 % \bottomrule
 % \end{tabular}
 % \end{table}
-% In questions where several choices can be selected (see |multi| with the option
-% |multiple|), positive fractions must sum up to exactly 100. It is also possible to set
+%
+% In questions where several choices can be selected (see \env{multi} with option
+% \optn{multiple}), positive fractions must add up to exactly 100. It is also possible to set
 % negative fractions (from -100 to 0) for wrong choices, in order to prevent the
 % selection of all choices from leading to a good grade.
 % In this case, the value ranging from -100 to 0 must be the opposite of one of the
-% values listed in Table~\ref{tab:fraction}.
-% 
-% \DescribeMacro{fractiontol}
-% The package tries to match the |fraction| key to one of the admissible values.
-% To this end, the tolerance is controlled by the |fractiontol| key. It defaults
-% to |0.01| but may be changed. When no admissible fraction value is matched, the
-% package throws an error.
+% values listed in Table~\vref{tab:fraction}.
 %
-% \DescribeMacro{feedback}
-% The |feedback| key sets text that will appear to the student after completing the quiz.
-% For example, one might set 
+% \DescribeKey[answer]{fractiontol}\DescribeDefault{0.01}
+% The package tries to match the \optn{fraction} key to one of the admissible values.
+% To this end, the tolerance is controlled by the \optn{fractiontol} key. The default
+% value, \texttt{0.01}, may be changed. When no admissible fraction value is matched, the
+% package raises an error.
+%
+% \DescribeKey{feedback}
+% The \optn{feedback} key sets text that will appear to the student after completing the quiz.
+% For example, one might set
 % \begin{center}
 %   |feedback={This question might show up in the final exam.}|
 % \end{center}
 % The desired feedback should be included in braces.
-% 
-% Two kinds of feedback can be given.  If the |feedback| key is set for a 
-% question, then that feedback will appear to each student regardless of the student's answer.
+%
+% \DescribeKey[question]{feedback}If the \optn{feedback} key is set for a question,
+% then that feedback will appear to each student regardless of the student's answer.
+%
+% \DescribeKey[answer]{feedback}
 % Answer-specific feedback (perhaps explaining a common mistake)
-% may also be given by setting the |feedback| key \emph{at the individual answer}.
+% may also be given by setting the \optn{feedback} key \emph{at the individual answer}.
 %
-% \DescribeMacro{tags}
-% The |tags| key sets a list of keywords for the question that will be taken into account
-% by Moodle for filtering purposes or classification of questions inside the question bank.
+% \DescribeKey{tags}
+% The \optn{tags} key sets a list of keywords for the question that will be taken into account
+% by \Moodle\ for filtering purposes or classification of questions inside the question bank.
 % It is possible for instance to build a quiz with questions cherry-picked among the set of
 % questions holding a particular tag.
-% For example, one might set 
+% For example, one might set
 % \begin{center}
 %   |tags={easy}|
 % \end{center}
@@ -473,22 +544,27 @@
 %   |tags={tag1,tag2,{ leading whitespace},{including, comma}}|
 % \end{center}
 %
-% Tags can be assigned at two levels. If the |tags| key is set at the quiz level,
+% \DescribeKey[quiz]{tags}
+% If the \optn{tags} key is set at the quiz level,
 % then that tag list will serve as a default for each question of the quiz.
-% Question-specific tags can be assigned by setting the |tags| key \emph{at the question level}.
-% The question-level |tags| key overrides eventual quiz-level tags.
-% 
+%
+% \DescribeKey[question]{tags}
+% Question-specific tags can be assigned by setting the \optn{tags} key \emph{at the question level}.
+% The question-level \optn{tags} key overrides eventual quiz-level tags.
+%
 % Users willing to specify a same tag for all questions of the quiz could
-% also rely on Moodle's category mechanism.
-% 
+% also consider relying on \Moodle's category mechanism.
+%
 % \subsection{\href{https://docs.moodle.org/en/Question_types}{Question Types}}
-% 
-% We next discuss the various question types supported by \textsf{moodle}
+%
+% We next discuss the various question types supported by \pkg{moodle}
 % and the options that may be set.
 %
 %\subsubsection{\href{https://docs.moodle.org/en/True/False_question_type}{True/False}}
-% 
-% \DescribeMacro{truefalse}
+%
+% \DescribeEnv[quiz]{truefalse}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{True/False} question.
+%
 % The syntax for a True/False question is as follows:
 % \begin{quote}
 %   |\begin{truefalse}|\oarg{question options}\marg{question name} \\
@@ -497,7 +573,7 @@
 %   \rule{2em}{0pt}|\item| \meta{feedback when ``false" is chosen} \\
 %   |\end{truefalse}|
 % \end{quote}
-% The correct answer is designated by the asterisk |*| after the |\item|;
+% The correct answer is designated by the asterisk \texttt{*} after the \cmd{\item};
 % it need not appear first in the list.
 %
 % Answer-specific feedback can also be defined as an item option, similarly to
@@ -510,47 +586,67 @@
 % \end{quote}
 % Note that, in this example, no feedback is defined for the incorrect answer
 % ``False": the corresponding item can be omitted.
-% 
+%
 % With the True/False question type, the |penalty| key has no effect.
 %
-% \subsubsection{\href{https://docs.moodle.org/310/Multiple_Choice_question_type}{Multiple Choice}}
-% 
-% \DescribeMacro{multi}
+% \subsubsection{\href{https://docs.moodle.org/en/Multiple_Choice_question_type}{Multiple Choice}}
+% \label{subsec:multi}
+%
+% \DescribeEnv[quiz]{multi}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{Multiple Choice} question.
+%
 % The syntax for a classic multiple choice question,
 % with only one correct answer, is as follows:
 % \begin{quote}
 %   |\begin{multi}|\oarg{question options}\marg{question name} \\
 %   \rule{2em}{0pt}\meta{question text} \\
-%   \rule{2em}{0pt}|\item*| \meta{correct answer} \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{wrong answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options}|*| \meta{correct answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options} \meta{wrong answer} \\
 %   \rule{2em}{0pt}\quad$\vdots$ \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{wrong answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options} \meta{wrong answer} \\
 %   |\end{multi}|
 % \end{quote}
-% The correct answer is designated by the asterisk |*| after the |\item|;
+% The correct answer is designated by the asterisk \texttt{*} after the \cmd{\item};
 % it need not appear first in the list.
-% 
-% 
-% \DescribeMacro{shuffle}
-% The boolean key |shuffle| determines whether Moodle will
+%
+%
+% \DescribeBoolean[multi]{shuffle}\DescribeDefault{true}
+% The Boolean key \optn{shuffle} determines whether \Moodle\ will
 % rearrange the possible answers in a random order.
-% Setting |shuffle=false| will guarantee that the answer appear
-% in the order they were typed; the default is |shuffle=true|.
-% 
-% \DescribeMacro{numbering}
-% Moodle offers different options for numbering the possible answers.
-% You may set the |numbering| key to any of the following values,
-% which mirror the usual \LaTeX\ syntax:
-% |alph|, |Alph|, |arabic|, |roman|, |Roman|, and |none|.
-% Calling |numbering=none| produces an unnumbered list of answers.
-% The Moodle syntax of |abc|, |ABCD|, |123|, |iii|, and |IIII| is also 
-% acceptable,
-% but note that it requires \emph{four} capital letters to obtain
-% upper-case Roman or alphabetic numerals this way.
-% 
-% \DescribeMacro{fraction}
-% The |fraction| key can be used to designate some wrong answers
-% as being worth partial credit.  For example, a question might read thus:
+% Setting \optn{shuffle=false} will guarantee that the answers will
+% be presented to the student in the order they were typed.
+%
+% \DescribeKey[multi]{numbering}\DescribeDefault{abc}
+% \Moodle\ offers different options for numbering the possible answers.
+% You may set the \optn{numbering} key to any of the values listed in
+% Table~\vref{tab:numbering_options}.
+% \begin{table}[tbp]
+% \centering
+% \caption{Numbering modalities offered for \env{multi} questions.}
+% \label{tab:numbering_options}
+% \begin{tabular}{rllllll}
+% \toprule
+% Sample & a., b., \dots & A., B., \dots & 1., 2., \dots & i., ii., \dots &
+% I., II., \dots & $\bullet$ \\
+% \cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(lr){4-4}\cmidrule(lr){5-5}\cmidrule(lr){6-6}
+% \cmidrule(lr){7-7}
+% \LaTeX\ syntax & \optn{alph} & \optn{Alph} & \optn{arabic} & \optn{roman} & \optn{Roman} & \optn{none}\\
+% \Moodle\ syntax & \optn{abc} & \optn{ABCD} & \optn{123} & \optn{iii} & \optn{IIII} & \optn{none} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+% \optn{numbering=none} produces an unnumbered list of answers.
+% Note the \emph{four} capital letters required by \Moodle's syntax
+% to obtain upper-case Roman or alphabetic numerals.
+%
+% \DescribeKey[item]{fraction}\DescribeDefault{0}
+% \DescribeKey[item*]{fraction}\DescribeDefault{100}
+% The \optn{fraction} key may be automatically set depending on the
+% presence of an asterisk \texttt{*} right after the \cmd{\item}. By default,
+% Starred items designate correct answers (\optn{fraction=100}) while
+% bare items designate incorrect answers (\optn{fraction=0}).
+% The key can be used to designate some wrong answers as being worth
+% partial credit or sanction.  For example, a question might read
 % \begin{VerbatimOut}[gobble=1]{minted.doc.out}
 %   \begin{multi}{my question}
 %     Compute $\int 4x^3\,dx$.
@@ -560,87 +656,116 @@
 %   \end{multi}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% Thus the asterisk |*| is shorthand for |fraction=100|, 
-% whereas a bare |\item| sets |fraction=0|.
-% 
-% \DescribeMacro{single}
-% By default, the |multi| environment produces
-% a multiple choice question with only one correct answer;
-% this is called |single| mode, and on Moodle it appears with radio buttons.
 %
-% \DescribeMacro{multiple}
-% It is also possible to write questions with possibly more than one correct answer,
-% asking the user to check all correct answers. To do this, use the key |multiple|
-% or |single=false|.
-% The worth of each correct answers in |multiple| mode may be set by |fraction|,
-% but Moodle asks that all the fractions add up to \emph{exactly} 100.
-% If you simply designate each correct answer with |\item*|, then \textsf{moodle}
-% will divide equally among those answers the points lefts for a sum of 100\%.
-% Items that are not given a |fraction| are considered incorrect and selecting them
-% results in negative points such that the sum of all incorrect answers is -100\%.
+% \DescribeBoolean[multi]{single}\DescribeDefault{true}
+% By default, the \env{multi} environment produces a multiple choice
+% question where only one answer can be selected. This is called
+% \optn{single} mode.
+%^^A On \Moodle, the choices are displayed with radio
+%^^A buttons and only one of them can be selected by the student.
+%
+% In \optn{single} mode, the teacher can set negative fractions for
+% incorrect choices. This way, the expected grade of a student
+% picking up choices randomly across a quiz is lowered.
+% By default, incorrect answers that do not have a fraction
+% specified correspond to \optn{fraction=0}.
+% \DescribeKey[quiz,multi]{sanction}\DescribeDefault{0} However,
+% if the \optn{sanction} key is set to a positive value, at quiz or
+% question levels, such incorrect answers are sanctioned as if
+% \optn{fraction=-}\meta{sanction value} was set for each of them.
+%
+% \DescribeKey[multi]{multiple}
+% It is also possible to write questions with possibly more than
+% one correct answer, asking the user to check all correct answers.
+% To do this, use the key \optn{multiple} or \optn{single=false}.
+% For this kind of question, the student gets a grade that
+% corresponds to the total of the weights of the answers selected.
+% Users may rely on two modalities to set the weights of the answers:
+% \begin{enumerate}
+% \item the \emph{advanced mode} applies whenever a \optn{fraction} key
+% is set among the proposed answers. In this case, it is recommended
+% that the user sets manually everything. Answers that are left with
+% no fraction set are considered as neutral, selecting them will
+% not change the grade. If \cmd{\item*} is used to designate some correct
+% answers, \pkg{moodle} will distribute equally among those answers
+% the points that are left for a total of 100\% (only positive
+% fractions count here). Note that doing so will easily yield
+% situations where the weights are inadmissible (see
+% Table~\vref{tab:fraction}).
+% \item the \emph{automatic mode} applies when correct answers are
+% designated using \cmd{\item*} and no answer has a \optn{fraction} key set.
+% In this case, each correct answer is weighted to bring the same
+% fraction of the maximum grade and each incorrect answer is
+% weighted to cancel the benefits of the selection of one correct
+% answer.
+% \end{enumerate}
 % For example, the following two examples are equivalent:
 % \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   \begin{multi}[multiple]{my question}
+%   \begin{multi}[multiple]{Automatic Mode}
 %     Which numbers are prime?
-%     \item[fraction=20] 2
+%     \item 2
 %     \item* 5
 %     \item* 7
-%     \item[fraction=-10] 1 
+%     \item 1
 %     \item 6
-%     \item 8
 %   \end{multi}
-%   
-%   \begin{multi}[multiple]{my question}
+%   \begin{multi}[multiple]{Advanced Mode}
 %     Which numbers are prime?
-%     \item[fraction=20] 2
-%     \item[fraction=40] 5
-%     \item[fraction=40] 7
-%     \item[fraction=-10] 1
-%     \item[fraction=-45] 6
-%     \item[fraction=-45] 8
+%     \item[fraction=-50] 2
+%     \item[fraction=50] 5
+%     \item[fraction=50] 7
+%     \item[fraction=-50] 1
+%     \item[fraction=-50] 6
 %   \end{multi}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% Note that, in this example, negative fractions are set for wrong choices. This
-% prevents students selecting all options to obtain a good grade with no merit.
-% 
-% \DescribeMacro{allornothing}
+% Note that, in this example, negative fractions are set for wrong
+% choices. This prevents students from obtaining a good grade with
+% no merit if they select all answers.
+%
+% Contrarily to the \optn{single} mode where questions with negative fractions may
+% lead to a overall negative grade, when multiple choices can be selected, the
+% lowest grade \Moodle\ will take into account for the question is 0.
+%
+% \DescribeKey[multi]{allornothing}
 % There also exists a \href{https://moodle.org/plugins/qtype_multichoiceset}
-% {``All-or-Nothing Multiple Choice''} plugin for Moodle that introduces a
+% {``All-or-Nothing Multiple Choice''} plugin for \Moodle\ that introduces a
 % question type similar to a multiple choice with multiple correct answers,
 % with the specificity that the points are given if and only if the student
 % selects all correct answers. This kind of question is set up using the
-% |allornothing| key.
-% The recommended way for designating correct answers is with |\item*|. If instead
-% the |fraction| is used, \textsf{moodle} moodle will consider that non-negative
+% \optn{allornothing} key.
+% The recommended way for designating correct answers is with \cmd{\item*}. If instead
+% the \optn{fraction} is used, \pkg{moodle} will consider that non-negative
 % fractions ($>0$) designate correct answers and negative fractions ($\leq 0$)
 % designate incorrect choices.
-% The option |allornothing| supersedes the options |multiple| and |single|.
-% To the best of our knowledge, Moodle does not offer the all-or-nothing behavior
-% for multiple choice questions embedded inside a cloze question.
-% 
+% The option \optn{allornothing} supersedes the options \optn{multiple} and \optn{single}.
+% To the best of our knowledge, \Moodle\ does not offer the all-or-nothing behavior
+% for multiple choice questions embedded inside a \env{cloze} question.
+%
 % \subsubsection{\href{https://docs.moodle.org/en/Numerical_question_type}{Numerical}}
 %
-% A numerical question in Moodle requires the student
+% \DescribeEnv[quiz]{numerical}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{Numerical} question which, in \Moodle, requires the student
 % to input a real number in decimal form.
-% Its typical format is
+%
+% The typical format for this question type is:
 % \begin{quote}
 %   |\begin{numerical}|\oarg{question options}\marg{question name} \\
 %   \rule{2em}{0pt}\meta{question text} \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{correct answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options} \meta{correct answer} \\
 %   |\end{numerical}|
 % \end{quote}
-% If there is more than one correct answer, additional |\item|'s may be included.
+% If there is more than one correct answer, additional \cmd{\item}'s may be included.
 % Because this is not a multiple choice question, there is no need to provide
-% incorrect answers.  There may nevertheless be reasons to include incorrect answers.
-% For example, partially correct answers may be specified by setting the |fraction| key.
+% incorrect answers. There may nevertheless be reasons to include incorrect answers.
+% For example, partially correct answers may be specified by setting the \optn{fraction} key.
 % Feedback for a common mistake may be given by including the incorrect answer like this:
 % \begin{quote}\footnotesize
-%   |\item[fraction=0,feedback={You forgot to antidifferentiate!}]| \meta{incorrect answer}
+%   |\item[fraction=0,feedback={Forgot to antidifferentiate?}]| \meta{incorrect answer}
 % \end{quote}
 %
-% \DescribeMacro{tolerance} 
-% The |tolerance| key can be used to specify the validity of answers within some margin.
+% \DescribeKey[numerical]{tolerance}\DescribeDefault{0}
+% The \optn{tolerance} key can be used to specify the validity of answers within some margin.
 % This key can be set at different levels: quiz, question, item.
 % For example, with the question
 % \begin{VerbatimOut}[gobble=1]{minted.doc.out}
@@ -662,31 +787,34 @@
 % \end{itemize}
 %
 % When feedback is to be given for any non-specified answer, one can add a \emph{last} answer
-% item containing the wilcard character |*| only. In this case, the |tolerance| key is irrelevant.
-% 
-% Both answers and tolerance can be specified with the comma (|,|) as a decimal separator.
-% Exponent notation is accepted. After import, Moodle will recognize indifferently |0.000165|,
-% |0,000165|, |1.65E-4|, |1.65e-4|, |1,65E-4|, and |1,65e-4|.
+% item containing the wildcard character \texttt{*} only. In this case, the \optn{tolerance} key is irrelevant.
 %
-% If the \textsf{siunitx} package is loaded, \textsf{moodle} will detect it and
-% numbers will be rendered nicely in the PDF output.
-% 
-% Units, unit-handling and multipliers are currently unsupported.
+% Both answers and tolerance can be specified with the comma (\texttt{,}) as a decimal separator.
+% Exponent notation is accepted. After import, \Moodle\ will recognize indifferently \texttt{0.000165},
+% \texttt{0,000165}, \texttt{1.65E-4}, \texttt{1.65e-4}, \texttt{1,65E-4}, and \texttt{1,65e-4}.
 %
+% If the \pkg{siunitx} package is loaded, \pkg{moodle} will detect it and
+% numbers will be rendered nicely in the \PDF\ output.
+%
+% Units, unit-handling and multipliers are currently unsupported.\watchout
+%
 % \subsubsection{\href{https://docs.moodle.org/en/Short-Answer_question_type}{Short Answer}}
-% A short answer question resembles a numerical question: the student is to fill
-% in a text box with a missing word or phrase.
+%
+% \DescribeEnv[quiz]{shortanswer}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{Short Answer} question. It resembles
+% a \env{numerical} question: the student is to fill in a text box with a
+% missing word or phrase.
 % \begin{quote}
 %   |\begin{shortanswer}|\oarg{question options}\marg{question name} \\
 %   \rule{2em}{0pt}\meta{question text} \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{correct answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options} \meta{correct answer} \\
 %   \rule{2em}{0pt}\quad$\vdots$ \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{correct answer} \\
+%   \rule{2em}{0pt}|\item|\oarg{answer options} \meta{correct answer} \\
 %   |\end{shortanswer}|
 % \end{quote}
-% You can make the text box appear as part of the question with the 
-% control sequence |\blank|.  For example,
-% your question might read 
+% You can make the text box appear as part of the question with the
+% control sequence \cmd{\blank}.  For example,
+% your question might read
 % \begin{VerbatimOut}[gobble=1]{minted.doc.out}
 %   \begin{shortanswer}{Leibniz}
 %     Newton's rival was Gottfried Wilhelm \blank.
@@ -695,146 +823,176 @@
 %   \end{shortanswer}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% Note that as the blank occurred at the end of a sentence, 
-% we included two answers, 
+% Note that as the blank occurred at the end of a sentence,
+% we included two answers,
 % lest students get the question wrong merely by
 % including or omitting a period.
-% 
-% \DescribeMacro{case sensitive}\DescribeMacro{usecase}
-% The default setting when creating a Short Answer question in Moodle
+%
+% \DescribeBoolean[shortanswer]{case sensitive}\DescribeDefault{false}
+% The default setting when creating a Short Answer question in \Moodle\
 % is to ignore the distinction between upper- and lower-case letters
 % when grading a short answer question. This default is preserved by
-% \textsf{moodle}.
-% You can make a question case-sensitive with the key |case sensitive| 
-% or its shorter synonym |usecase|.
+% \pkg{moodle}.
+% You can make a question case-sensitive with the Boolean key
+% \optn{case sensitive} or its shorter synonym \optn{usecase}\DescribeBoolean[shortanswer]{usecase}.
 %
-% The wildcard character |*| can used to grab answers that match 
-% a specific pattern. For instance:
-% \begin{itemize}
-%   \item ``\emph{Sir Isaac Newton}'', ``\emph{Isaac Newton}'' and
-%         ``\emph{Newton}'' will match the pattern |*Newton|,
-%   \item ``\emph{Gaston}'' and ``\emph{Wellington}'' will match the
-%          pattern |*ton|,
-%   \item ``\emph{Isaac}'' and ``\emph{Isaac Newton}'' will match the
-%          pattern |Isaac*|,
-%   \item any non empty answer will match the pattern |*| (wildcard alone).
+% The \href{https://docs.moodle.org/en/Short-Answer_question_type#Wildcard_usage}%
+% {wildcard character} \texttt{*} can used to grab answers that match
+% a specific pattern. Following the order of answers, the first match will lead
+% to the corresponding score and eventual feedback. As an example, take the
+% following question
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   \begin{shortanswer}[usecase]{Newton's name}
+%     What was Newton's first name?
+%     \item Isaac
+%     \item[fraction=0,feedback={Simply Isaac!}] Isaa*
+%     \item[fraction=0,feedback={This one is Leibniz!}] *Gottfried*
+%     \item[fraction=0,feedback={First name, not title!}] Sir*
+%     \item[fraction=0,feedback={No\dots}] *
+%   \end{shortanswer}
+% \end{VerbatimOut}
+% \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
+% \begin{itemize}\def\answ#1{\framebox{\texttt{#1}}}%
+%   \item the answer \answ{Isaac} is the only one that gets rewarded,
+%   \item answers \answ{Isaac Leibniz}, \answ{Isaac Newton}, and \answ{Isaak} yield
+%   the feedback \emph{Simply Isaac!},
+%   \item answers \answ{Sir Gottfried Wilhelm}, \answ{Sir Gottfried},
+%         \answ{Gottfried Wilhem}, and \answ{Gottfried} yield
+%         the feedback \emph{This one is Leibniz!},
+%   \item answers \answ{Sir Isaac}, and \answ{Sir} yield
+%         the feedback \emph{First name, not title!},
+%   \item any answer that does not match the previous patterns
+%         yields the feedback \emph{No\dots}.
 % \end{itemize}
-% 
+%
 % \subsubsection{\href{https://docs.moodle.org/en/Essay_question_type}{Essay}}\label{subsubsect:essay}
-% Instructors may ask essay questions on a Moodle quiz,
-% although Moodle's software is not up to the task of grading them!
-% Instead each essay question answer must be graded manually by the
+%
+% \DescribeEnv[quiz]{essay}\oarg{question options}\marg{question name}
+% is an environment that defines an \emph{Essay} question.
+%
+% Instructors may ask essay questions on a \Moodle\ quiz,
+% although \Moodle's software is not up to the task of grading them!
+% Instead, each essay question answer must be graded manually by the
 % instructor or a teaching assistant.
 % \begin{quote}
 %   |\begin{essay}|\oarg{question options}\marg{question name} \\
 %   \rule{2em}{0pt}\meta{question text} \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{notes for grader} \\
+%   \rule{2em}{0pt}|\item| \meta{information 1 for grader} \\
 %   \rule{2em}{0pt}\quad$\vdots$ \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{notes for grader} \\
+%   \rule{2em}{0pt}|\item| \meta{information $n$ for grader} \\
 %   |\end{essay}|
 % \end{quote}
-% Instead of containing answers, the |\item| tags for the |essay| question 
-% contain notes that will appear to whoever is grading the question manually.
-% 
-% \DescribeMacro{response required}
-% Although Moodle cannot grade the content of an essay question,
+% Instead of containing answers, the \cmd{\item} entries included in the \env{essay}
+% question contain notes that will appear to whoever is grading the question manually.
+% Contrarily to other question types, \cmd{\item} in \env{essay} questions
+% do not take options.
+%
+% \DescribeBoolean[essay]{response required}\DescribeDefault{false}
+% Although \Moodle\ cannot grade the content of an essay question,
 % it can at least determine whether the question has been left blank.
-% If the |response required| key is set, Moodle will insist that the student
+% If the \optn{response required} key is set, \Moodle\ will insist that the student
 % enter something in the blank before accepting the quiz as completed.
-% 
-% \DescribeMacro{response format}
-% Moodle offers five different ways for students to enter and/or upload their
-% answers to an essay question.  You may choose one of these five options:
+%
+% \DescribeKey[essay]{response format}\DescribeDefault{html}
+% \Moodle\ offers five different ways for students to enter and/or upload their
+% answers to an essay question. You may choose one of these five options:
 % \begin{description}
-%   \item[{\ttfamily html}] An editor with the ability to format HTML responses
+%   \ItemDescribeOther[response format]{html} An editor with the ability to format \HTML\ responses
 %         including markup for italics, boldface, etc.  This is the default.
-%   \item[{\ttfamily file}] A file picker allowing the student to upload a 
-%         file, such as a PDF or DOC file, containing the essay.
-%   \item[{\ttfamily html+file}] The same HTML editor as above, but with the 
-%         ability to upload files as well.  This permits some students to type 
-%         answers directly into the web form, and others to compose their 
+%   \ItemDescribeOther[response format]{file} A file picker allowing the student to upload a
+%         file, such as a \PDF\ or DOC file, containing the essay.
+%   \ItemDescribeOther[response format]{html+file} The same \HTML\ editor as above, but with the
+%         ability to upload files as well.  This permits some students to type
+%         answers directly into the web form, and others to compose their
 %         essays in another program first.
-%   \item[{\ttfamily text}] This editor allows only for entering plain text 
+%   \ItemDescribeOther[response format]{text} This editor allows only for entering plain text
 %         without any markup.
-%   \item[{\ttfamily monospaced}] This yields a plain text editor, without any 
-%         markup, and with a fixed-width font.  This could be useful for 
+%   \ItemDescribeOther[response format]{monospaced} This yields a plain text editor, without any
+%         markup, and with a fixed-width font.  This could be useful for
 %         entering code snippets, for example.
 % \end{description}
-% 
-% \DescribeMacro{response field lines}
-% The key |response field lines| controls the height of the input box.
-% For Moodle, the admissible values are: 5, 10, 15, 20, 25, 30, 35, and 40.
-% If the value set is not admissible, \textsf{moodle} will approximate the value:
+%
+% \DescribeKey[essay]{response field lines}\DescribeDefault{15}
+% The key \optn{response field lines} controls the height of the input box.
+% For \Moodle, the admissible values are: 5, 10, 15, 20, 25, 30, 35, and 40.
+% If the value set is not admissible, \pkg{moodle} will approximate the value:
 % \begin{itemize}
 %   \item with either 5 or 40 if the value set was out of range, or
 %   \item with the next multiple of 5 otherwise.
 % \end{itemize}
-% The default is |response field lines=15|.
-% 
-% \DescribeMacro{attachments allowed}
-% The |attachments allowed| key controls \emph{how many} attachments a student is
-% allowed to upload.  Permissible values are |0|, |1|, |2|, |3|, or |unlimited|.
-% 
-% \DescribeMacro{attachments required}
+%
+% \DescribeKey[essay]{attachments allowed}\DescribeDefault{0}
+% The \optn{attachments allowed} key controls \emph{how many} attachments a student is
+% allowed to upload. Admissible values are \texttt{0}, \texttt{1}, \texttt{2},
+% \texttt{3}, or \texttt{unlimited}.
+%
+% \DescribeKey[essay]{attachments required}\DescribeDefault{0}
 % You may also require the student to upload a certain number of attachments
-% by setting |attachments required| to |0|, |1|, |2|, or |3|.
-% 
-% \DescribeMacro{template}
+% by setting \optn{attachments required} to \texttt{0}, \texttt{1}, \texttt{2}, or \texttt{3}.
+%
+% \DescribeKey[essay]{template}
 % Finally, you may preload the essay question with a template that the student
-% will edit and/or type over, with the key |template=|\marg{template}.
+% will edit and/or type over, with the key \optn{template=}\marg{template}.
 % The \meta{template} should be enclosed in braces.
-% 
+%
 % \subsubsection{\href{https://docs.moodle.org/en/Matching_question_type}{Matching}}
-% 
-% A matching question offers a series of subquestions
-% and a set of possible answers from which to choose.
-% If there are $m$ questions and $n\geq m$ possible answers,
-% a matching question will look like this:
-% 
+%
+% \DescribeEnv[quiz]{matching}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{Matching} question. It typically
+% looks like this:
 % \begin{quote}
 %   |\begin{matching}|\oarg{question options}\marg{question name} \\
 %   \rule{2em}{0pt}\meta{question text} \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{question 1} |\answer| \meta{answer 1}\\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{question 2} |\answer| \meta{answer 2}\\
+%   \rule{2em}{0pt}|\item| \meta{item 1} |\answer| \meta{match 1}\\
+%   \rule{2em}{0pt}|\item| \meta{item 2} |\answer| \meta{match 2}\\
 %   \rule{2em}{0pt}\quad$\vdots$ \\
-%   \rule{2em}{0pt}|\item|\oarg{options} \meta{question $m$} |\answer| \meta{answer $m$}\\
-%   \rule{2em}{0pt}|\item|\oarg{options} |\answer| \meta{answer $m+1$}\\
+%   \rule{2em}{0pt}|\item| \meta{item $m$} |\answer| \meta{match $m$}\\
+%   \rule{2em}{0pt}|\item| |\answer| \meta{no match $1$}\\
 %   \rule{2em}{0pt}\quad$\vdots$ \\
-%   \rule{2em}{0pt}|\item|\oarg{options} |\answer| \meta{answer $n$}\\
+%   \rule{2em}{0pt}|\item| |\answer| \meta{no match $n$}\\
 %   |\end{matching}|
 % \end{quote}
-% Answers $1$ through $m$ correspond to questions $1$ through $m$;
-% answers $m+1$ through $n$ are ``decoy'' answers.
-% If multiple questions should have the same answer,
-% be sure your typed answer match exactly, so that Moodle will not
-% create duplicate copies of the same answer!
-% 
-% \DescribeMacro{shuffle}
-% The |matching| question accepts the option of |shuffle| to randomly
-% permute the questions and answers; by default |shuffle=true|.
-% 
-% \DescribeMacro{drag and drop}\DescribeMacro{dd}
-% The standard matching question offered by Moodle corresponds to
-% a dropdown box for choosing the answer to each question.
-% There also exists a \href{https://docs.moodle.org/310/en/Drag_and_drop_matching_question_type}
-% {``drag and drop matching''} plugin for Moodle that
-% shows all questions in one column,
-% all answers in a second column, and allows students to drag the correct
-% answer to the question using a mouse.
+% \meta{match}es $1$ through $m$ are separated from their corresponding
+% \meta{item}s by the command \cmd{\answer}\DescribeMacro[matching]{\answer}.
+% Answers that match no item can be proposed at the end of the list,
+% preceded by an empty item.
+%
+% After import, \Moodle\ will recognize matches that are \emph{exact}
+% duplicates. If you intend multiple questions to have the same match,
+% make sure that they are entered identically.
+%
+% \DescribeBoolean[matching]{shuffle}\DescribeDefault{true}
+% When students take a matching question, \Moodle\ always displays
+% the proposed matches in random order.
+% The \env{matching} question accepts the option |shuffle| to also
+% randomly permute the items.
+%
+% \DescribeBoolean[matching]{drag and drop}\DescribeDefault{false}
+% The standard matching question offered by \Moodle\ corresponds to
+% a dropdown box for choosing the match for each item.
+% There also exists a \href{https://docs.moodle.org/en/Drag_and_drop_matching_question_type}
+% {``drag and drop matching''} plugin for \Moodle\ that
+% shows all items in a column (left), all proposed matches in a second column
+% (right), and asks students to drag the correct
+% match to each item with the mouse.
 % In this package, to enable drag-and-drop matching, use the key
-% `|drag and drop|' or `|dd|' for short.  The default is |dd=false|.
-% If you choose the standard format, then due to the limitations of
-% dropdown boxes, no \LaTeX\ or HTML code can be used in the answers.
-% 
+% \optn{drag and drop} or \optn{dd}\DescribeKey[matching]{dd}\ for short.
+% Beware that, with the standard format (\optn{drag and drop=false}), due
+% to the limitations of dropdown boxes, \Moodle\ will not render \LaTeX\
+% or \HTML\ code passed in the answers.
+%
 % \subsubsection{\href{https://docs.moodle.org/en/Embedded_Answers_(Cloze)_question_type}
 % {Cloze Questions and Subquestions}}
-% 
-% A ``cloze question'' has one or more subquestions embedded within a passage of text.  
+%
+% \DescribeEnv[quiz]{cloze}\oarg{question options}\marg{question name}
+% is an environment that defines a \emph{Cloze} question.
+%
+% A ``cloze question'' has one or more subquestions embedded within a passage of text.
 % For example, you might ask students to fill in several missing words within
 % a sentence, or calculate several coefficients of a polynomial.
 % To encode cloze questions in \LaTeX\ using this package is easy:
-% you simply nest one or more |multi|, |shortanswer|, or |numerical| environments
-% within a |cloze| environment, as in the following example:
+% you simply nest one or more \env{multi}, \env{numerical}, or \env{shortanswer} environments
+% within a \env{cloze} environment, as in the following example:
 % \begin{VerbatimOut}[gobble=1]{minted.doc.out}
 %   \begin{cloze}{my cloze question}
 %     Thanks to calculus, invented by Isaac
@@ -855,45 +1013,85 @@
 %   \end{cloze}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% Note that when used as a subquestion within a cloze question,
-% |\begin{multi}| is \emph{not} followed by name in braces;
-% the same is true for the |shortanswer| and |numerical|
-% environments.
-% 
-% \DescribeMacro{single=true}\DescribeMacro{single=false}\DescribeMacro{multiple}
-% Before Moodle version 3.5, within a cloze question, a multiple choice question
-% was necessarily of type |single|, i.e. with a single good answer. If you intend
-% to export your quiz to Moodle 3.5+, the option |multiple| can be used, when
-% multiple good answers are to be found.
 %
-% \DescribeMacro{vertical}\DescribeMacro{horizontal}\DescribeMacro{inline}
-% Within a cloze question, by default, a multiple choice question is implemented
-% as an |inline| dropdown box. This is visually compact, but it also prevents
-% the use of mathematical or HTML formatting.
-% Adding the option |vertical| displays the subquestion as a vertical column
-% of radio buttons instead; likewise the option |horizontal| creates a horizontal 
-% row of radio buttons.
-% The option |inline| is incompatible with |multiple| or |single=false|
+% Note that, when used as a subquestion within a \env{cloze} question,
+% the question environments are \emph{not} followed by a question
+% name in braces.
+% \begin{description}
+% \ItemDescribeEnv[cloze]{multi}\oarg{subquestion options} defines a
+%             Multiple Choice question inside a Cloze question,
+% \ItemDescribeEnv[cloze]{numerical}\oarg{subquestion options} defines a
+%             Numerical question inside a Cloze question, and
+% \ItemDescribeEnv[cloze]{shortanswer}\oarg{subquestion options} defines a
+%             Shortanswer question inside a Cloze question,
+% \end{description}
+%
+% \DescribeKey[cloze]{points}\DescribeDefault{1}
+% \DescribeKey[cloze]{default grade}
+% Inside \env{cloze} environments, the \optn{points} or \optn{default grade}
+% keys can be used to weight the worth of each subquestion. A specific
+% constraint applies: the values should be positive integers.
+%
+% \DescribeKey[cloze]{fraction}
+% Inside \env{cloze} environments, the \optn{fraction} key can be used to give
+% partial credit or sanction for certain answers. The values
+% specified must be integers and are independent of the admissible
+% values listed in Table~\vref{tab:fraction}.
+%
+% \DescribeBoolean[cloze]{single}\DescribeDefault{true}
+% \DescribeKey[cloze]{multiple}
+% Prior to \Moodle\ version 3.5, within a \env{cloze} question, a multiple choice question
+% was necessarily of type \optn{single}, i.e. with a single good answer. If you intend
+% to export your quiz to \Moodle\ 3.5+, the option \optn{multiple} can be used for
+% questions where students must be able to select several answers.
+% The modalities described in Section~\vref{subsec:multi} for setting the
+% weight of answers apply. The only difference occurs in \emph{advanced mode}:
+% the sum of positive fractions may not be 100\%. In this case, after
+% importing the \XML\ file, \Moodle\ will automatically scale the positive
+% fractions for a total of 100\% and leave intact the negative fractions.
+% ^^A\footnote{\url{https://tracker.moodle.org/browse/MDL-3782?focusedCommentId=421564\#comment-421564}}.
+%
+% ^^A\DescribeKey[cloze]{vertical}\DescribeKey[cloze]{horizontal}\DescribeKey[cloze]{inline}
+% ^^A\DescribeDefault{inline}
+% Within a \env{cloze} question, a multiple choice question may be displayed in three
+% different modes:
+% \begin{description}
+% \ItemDescribeKey[cloze]{inline} The inline dropdown box is the default choice
+% when only one answer is to be selected (option \optn{single}). The dropdown box
+% is visually compact, but also prevents the use of mathematical or \HTML\ formatting.
+% This option is incompatible\watchout\ with \optn{multiple} or \optn{single=false}
 % (dropdown boxes don't let you pick up several answers!).
+% \ItemDescribeKey[cloze]{vertical} displays the subquestion as a vertical column
+% of radio buttons instead. This is the default when several items can
+% be selected (options \optn{multiple} or \optn{single=false}).
+% \ItemDescribeKey[cloze]{horizontal} creates a horizontal row of radio buttons.
+% This option works well when the possible answers are short. The result is more
+% compact than what \optn{vertical} gives.
+% \end{description}
 %
-% \DescribeMacro{shuffle}
-% Starting from Moodle version 3.0, within a cloze question, the items of a
-% multiple choice question can be shuffled. Setting |shuffle=false| will
+% \DescribeBoolean[cloze]{shuffle}
+% Starting from \Moodle\ version 3.0, within a \env{cloze} question, the items of a
+% multiple choice question can be shuffled. Setting \optn{shuffle=false} will
 % guarantee that the answer appear in the order they were typed; the
-% default is |shuffle=true|.
+% default is \optn{shuffle=true}.
 %
-% \DescribeMacro{case sensitive}\DescribeMacro{usecase}
-% Within a cloze question, the short answer question can be made case sensitive.
-% This option, disabled by default, is selected with |case sensitive| or |usecase|.
-% 
+% \DescribeBoolean[cloze]{case sensitive}\DescribeDefault{false}
+% \DescribeBoolean[cloze]{usecase}
+% Within a \env{cloze} question, the \env{shortanswer} question can be made case sensitive.
+% This option, disabled by default, is selected with \optn{case sensitive} or \optn{usecase}.
+%
 %\subsubsection{\href{https://docs.moodle.org/en/Description_question_type}{Description}}
-% 	
-% The Moodle description type is not really a question. It is more like a label.
-% One can set a |feedback| that the student gets when reviewing the submission.
+%
+% \DescribeEnv[quiz]{description}\oarg{question options}\marg{question name}
+% is an environment that defines a so-called \emph{Description} question.
+%
+% The \Moodle\ description type is not really a question. It is more like a label.
+% One can set a \optn{feedback} that the student gets when reviewing the submission.
 % Tags can be set as well.
-% 
-% For descriptions, \textsf{moodle} redefines the existing |description| environment.
 %
+% For descriptions, \pkg{moodle} redefines \LaTeX's \env{description} environment.
+% The scope of this redefinition is limited to the \env{quiz} environment.
+%
 % The syntax for a Description question is as follows:
 % \begin{quote}
 %   |\begin{description}|\oarg{question options}\marg{question name} \\
@@ -902,11 +1100,11 @@
 % \end{quote}
 %
 % \subsection{Summary of the Key Options}
-% 
-% Table~\ref{tab:key-options} summarizes the key options available at the question
-% and answer levels depending on the question type. For the essay questions,
-% please refer to section~\ref{subsubsect:essay}.
-% 
+%
+% Table~\vref{tab:key-options}, summarizes
+% the key options available at the question and answer levels depending on the
+% question type. For the essay questions, please refer to Section~\vref{subsubsect:essay}.
+%
 % \begin{table}[tbp]
 % \centering
 % \caption{Options offered at the question and answer levels for each question type.}
@@ -916,17 +1114,17 @@
 % \toprule
 % & \multicolumn{11}{l}{Question} & \multicolumn{3}{l}{Answer}\\
 % \cmidrule(lr){2-12}\cmidrule(lr){13-15}
-% Question type & \rotatebox{90}{points} & 
-% \rotatebox{90}{penalty} & \rotatebox{90}{feedback} & \rotatebox{90}{tags} & 
+% Question type & \rotatebox{90}{points} &
+% \rotatebox{90}{penalty} & \rotatebox{90}{feedback} & \rotatebox{90}{tags} &
 % \rotatebox{90}{shuffle} & \rotatebox{90}{numbering} & \rotatebox{90}{multiple} &
 % \rotatebox{90}{allornothing} &\rotatebox{90}{usecase} & \rotatebox{90}{tolerance} &
-% \rotatebox{90}{dd} & \rotatebox{90}{fraction} & \rotatebox{90}{feedback} & 
+% \rotatebox{90}{dd} & \rotatebox{90}{fraction} & \rotatebox{90}{feedback} &
 % \rotatebox{90}{tolerance}\\\cmidrule(lr){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}
 % \cmidrule(lr){4-4}\cmidrule(lr){5-5}\cmidrule(lr){6-6}\cmidrule(lr){7-7}
 % \cmidrule(lr){8-8}\cmidrule(lr){9-9}\cmidrule(lr){10-10}\cmidrule(lr){11-11}
 % \cmidrule(lr){12-12}\cmidrule(lr){13-13}\cmidrule(lr){14-14}\cmidrule(lr){15-15}
-% \href{https://docs.moodle.org/35/en/Multiple_Choice_question_type} 
-% {Multichoice} & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & 
+% \href{https://docs.moodle.org/35/en/Multiple_Choice_question_type}
+% {Multichoice} & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ &
 % $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & & & & $\bullet$ & $\bullet$ \\
 % \href{https://docs.moodle.org/35/en/Numerical_question_type}{Numerical}
 % & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & & & &
@@ -935,12 +1133,12 @@
 % Answer} & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & & & &
 % & $\bullet$ & & & $\bullet$ & $\bullet$ \\
 % \href{https://docs.moodle.org/35/en/Matching_question_type}{Matching}
-% & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & & & 
-% & & & $\bullet$ & $\bullet$ & \\
+% & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & $\bullet$ & & &
+% & & & $\bullet$ & & \\
 % \href{https://docs.moodle.org/35/en/True/False_question_type}
 % {True/False} & $\bullet$ & & $\bullet$ & $\bullet$ & & & &
 % & & & & & $\bullet$ \\
-% \href{https://docs.moodle.org/35/en/Description_question_type} 
+% \href{https://docs.moodle.org/35/en/Description_question_type}
 % {Description} & & & $\bullet$ & $\bullet$ & & & &
 % & & & & & \\
 % ^^A\href{https://docs.moodle.org/35/en/Essay_question_type}{Essay} & \\\hline%
@@ -953,322 +1151,779 @@
 % & $\bullet$ & & & $\bullet$ & $\bullet$ \\
 % \hspace{1em}Multi (inline) & $\bullet$ & & & & $\bullet$ & & &
 % & & & & $\bullet$ & $\bullet$ \\
-% \hspace{1em}Multi (horizontal)& $\bullet$ & & & & $\bullet$ & & $\bullet$ 
+% \hspace{1em}Multi (horiz.) & $\bullet$ & & & & $\bullet$ & & $\bullet$
 % & & & & & $\bullet$ & $\bullet$ \\
-% \hspace{1em}Multi (vertical)& $\bullet$ & & & & $\bullet$ & & $\bullet$ 
+% \hspace{1em}Multi (vert.) & $\bullet$ & & & & $\bullet$ & & $\bullet$
 % & & & & & $\bullet$ & $\bullet$ \\
 % \bottomrule
 % \end{tabular}
 % \end{table}
+%
+% \subsection{Automated Generation of Questions}
 % 
-% \section{Conversion to HTML}
+% \Moodle's \href{https://docs.moodle.org/en/Calculated_question_type}
+% {Calculated Questions} types are not supported by this package.
+%
+% However, much more flexibly, a scripting language can be used in
+% combination with \pkg{moodle} to generate a large set of questions,
+% based on a prototype.
 % 
-% Questions should be typed as usual for \LaTeX,
-% including |\$| to obtain dollar signs, |$|'s or |\(|...|\)| for math shifts,
-% |$$|'s or |\[|...|\]| for display math, et cetera.
-% The package \textsf{moodle.sty} automatically converts
-% this \LaTeX\ code into HTML for web display.
+% In this case, the teacher building a quiz often wants one of the questions
+% to be randomly picked up and presented to the student. To achieve this,
+% we suggest to apply a specific tag to the questions sharing the same prototype.
+% After import in \Moodle, when creating a quiz, this tag can be selected to
+% narrow down a random selection of questions.
+%
+% This way, the feature of calculated questions can be reproduced, while 
+% benefiting from the flexibility given by your favorite scripting language.
+%
+% In this Section, two possible approaches are presented.
 % 
-% Table~\ref{tab:html} lists \LaTeX\ macros, commands, and environments that 
-% are specifically converted to HTML.
+% \subsubsection{Script Generating \TeX\ Code}
+%
+% Here are two examples inspired from the work of
+% \href{https://github.com/avohns/python-latex-moodle-quiz}{A. Vohns}.
+% The first one relies on the
+% native \prog{Lua} capabilities of \LuaLaTeX.
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   \begin{quiz}[tags={calculated}]{Example Quiz}
+%   \directlua{
+% \end{VerbatimOut}
+% \inputminted[gobble=2,frame=topline]{latex}{minted.doc.out}
+% \vspace{-.7cm}
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   function clozenum_print(pair,op,result)
+%     tex.print("\\begin{numerical}$"..pair[1].." "..op.." "..pair[2].."
+%     =$".."\\item ",result,"\\end{numerical}")
+%   end
+%   function cloze_print(pair,points)
+%     tex.print("\\begin{cloze}[points="..points.."]{Arithmetic Quiz
+%     ("..pair[1]..", "..pair[2]..")}Solve the following tasks!\\\\")
+%     clozenum_print(pair,"+",pair[1]+pair[2])
+%     clozenum_print(pair,"-",pair[1]-pair[2])
+%     clozenum_print(pair,"*",pair[1]*pair[2])
+%     if pair[1]/pair[2]==math.floor(pair[1]/pair[2]) then
+%       clozenum_print(pair,":",math.floor(pair[1]/pair[2]))
+%     end
+%     tex.print("\\end{cloze}")
+%   end
+%   for x = 2,4 do
+%     for y = 2,4 do
+%       if x>y then
+%         if x/y==math.floor(x/y) then points=1 else points=2 end
+%         cloze_print({x,y},points)
+%       end
+%     end
+%   end
+% \end{VerbatimOut}
+% \inputminted[]{lua}{minted.doc.out}
+% \vspace{-.7cm}
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   }
+%   \end{quiz}
+% \end{VerbatimOut}
+% \inputminted[gobble=2,frame=bottomline]{latex}{minted.doc.out}
+% The second example makes use of the \pkg{python} package (|\usepackage{python}|).
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   \begin{quiz}[tags={calculated}]{Example Quiz}
+%   \begin{python}
+% \end{VerbatimOut}
+% \inputminted[gobble=2,frame=topline]{latex}{minted.doc.out}
+% \vspace{-.7cm}
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   def clozenum_print(pair,op,result):
+%     print(rf"""\begin{{numerical}}
+%   ${pair[0]} {op} {pair[1]} =$\item {result}
+%   \end{{numerical}}""")
+%   def cloze_print(pair,points):
+%     print(rf"""\begin{{cloze}}[points={points}]{{Arithmetic Quiz
+%     {(pair[0],pair[1])}}}Solve the following tasks!\\""")
+%     clozenum_print([x,y],"+",x+y)
+%     clozenum_print([x,y],"-",x-y)
+%     clozenum_print([x,y],"*",x*y)
+%     if pair[0]/pair[1] == pair[0]//pair[1]:
+%       clozenum_print([x,y],":",x//y)
+%     print("\end{cloze}")
+%   for x in range(2,5):
+%     for y in range(2,5):
+%       if x > y:
+%         if x/y == x//y:
+%           points=1
+%         else:
+%           points=2
+%         cloze_print([x,y],points)
+% \end{VerbatimOut}
+% \inputminted[]{python}{minted.doc.out}
+% \vspace{-.7cm}
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+%   \end{python}
+%   \end{quiz}
+% \end{VerbatimOut}
+% \inputminted[gobble=2,frame=bottomline]{latex}{minted.doc.out}
+% These two example codes yield the same \XML\ content.
+%
+% \subsubsection{\TeX\ Code As a Template}
+%
+% Instead of mixing \TeX\ and scripting code into the same file, it is probably
+% a better practice to write a |.tex| template file with predefined variables and
+% manipulate the latter using an external script.
+%
+% The \pkg{moodle} package facilitates the development of question templates.
+% Specific control sequences (e.g.~\TeX\ commands) can be used in place of answers
+% or other parameters to the questions. In \optn{draft} mode, this should be
+% possible even where \pkg{moodle} expects numerical values (e.g.~answers of
+% numerical questions).
+% After drafting and question development, the control sequences can then be
+% substituted, by means of a scripting language, with instances of the variables
+% pulled from a database (e.g. |*.csv| file).
+% This way, complex quizzes, with parameterized TikZ pictures for instance, can be produced.
+%
+% This approach, briefly presented in the rest of this section, is demonstrated by
+% C. Caprani in \href{https://github.com/ccaprani/genquiz}{genquiz},
+% with Python for scripting and Jinja as a templating engine.
+%
+% The specific control sequence of the template is the \TeX\ command |\VAR|, taking 
+% the variable name to be substituted from the database as an argument. In order to
+% highlight the fields for template development, in \optn{draft} mode, this command is
+% defined to typeset the variable name in bold red font. When generating the \XML\
+% question bank, in \optn{final} mode, the variable values are substituted for the
+% specific control sequence. Variables can be used to define numerical answers,
+% tolerances, and even parameterize TikZ pictures.
+% 
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+% \documentclass{article}
+% \usepackage[draft]{moodle}
+% \usepackage{tikz}
+% \newcommand*{\VAR}[1]{\textcolor{red}{\textbf{#1}}}
+% \begin{document}
+%   \begin{quiz}{Disk or Square}		
+%     \begin{cloze}[tags={disk area}]
+%                  {Area of the Disk QID00\VAR{qidx}} 
+%       \begin{tikzpicture}					
+%         \draw[fill=black!20] circle[radius=1];
+%         \draw[<->] (0,0)--(1,0)node[above,midway]{\VAR{radius}};				
+%       \end{tikzpicture}
+%       A disk has radius \VAR{radius}, what is its area?
+%       \begin{numerical}[points=1,penalty=0]
+%         \item[tolerance = \VAR{areatol}] \VAR{area}
+%         \item[fraction=0,feedback={Note the units.}] * % incorrect
+%       \end{numerical}		
+%       Provide your answers to 3 significant digits.
+%     \end{cloze}
+%   \end{quiz}
+% \end{document}
+% \end{VerbatimOut}
+% \inputminted[gobble=1,frame=lines]{latex}{minted.doc.out}
+%
+% A small python code that reads the template and renders the actual |*.tex| file
+% is shown below. In this example, the template file is called |quiz_template.tex| and  
+% the variables are hard-coded as a list of Python dictionaries. But nothing prevents
+% you from generating them on-the-fly or picking them from a database.
+% It is worth noting that \prog{jinja2} will process all |\VAR{|\meta{name}|}| occurrences,
+% regardless of \TeX\ comments.
+%
+% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
+% import os
+% import jinja2
+%
+% # Tell jinja what to look for in the template
+% # (from web.archive.org/web/20121024021221/http://e6h.de/post/11/)
+% latex_jinja_env = jinja2.Environment(
+%     variable_start_string=r"\VAR{",
+%     variable_end_string=r"}",
+%     comment_start_string=r"\#{",
+%     comment_end_string="}",
+%     loader=jinja2.FileSystemLoader(os.path.abspath(".")),
+% )
+%
+% # Load the template
+% template = latex_jinja_env.get_template("quiz_template.tex")
+%
+% # Prepare the variables or read from a database
+% database = [
+%     {"qidx": 1, "radius": 2, "areatol": 0.1, "area": 12.57},
+%     {"qidx": 2, "radius": 3, "areatol": 0.2, "area": 28.27},
+%     {"qidx": 3, "radius": 4, "areatol": 0.4, "area": 50.26},
+% ]
+%
+% for row in database:
+%     # combine template and variables
+%     document = template.render(**row)
+%
+%     # XML files are generated by moodle.sty in "final" mode
+%     document = document.replace(r"\usepackage[draft]{moodle}",
+%                                 r"\usepackage{moodle}")
+%
+%     # write document
+%     with open(f"{row['qidx']}.tex","w",encoding="utf-8") as outfile:
+%         outfile.write(document)
+% \end{VerbatimOut}
+% \inputminted[gobble=1,frame=lines]{python}{minted.doc.out}
+%
+% Executing this Python code will result in three new |.tex| files in the current directory.
+% These can then be compiled with a \TeX\ engine to produce the individual \XML\ files.
+% Of course, for a large number of quizzes it is preferable to automate this compilation,
+% and to combine the large number of resulting \XML\ files into a single \XML\ file for upload
+% to Moodle. See \href{https://github.com/ccaprani/genquiz}{genquiz} for more details.
+%
+% Naturally, the concept of templating, demonstrated here with Python, may be orchestrated
+% using other scripting languages.
+%
+% \section{Conversion to HTML}
+%
+% \subsection{Level of Support}
+%
+% The package \pkg{moodle.sty} tries to automatically
+% convert the \LaTeX\ code included in the questions
+% into \HTML\ for web display.
+%
+% With this aim, a number of \TeX\ and \LaTeX\ macros,
+% commands, and environments undergo a tailored treatment
+% when \pkg{moodle} generates the \XML\ file. A few tables
+% describe the current level of support:
+% \begin{enumerate}
+% \item text mode diacritic macros (e.g.~|\"u|) in Table~\vref{tab:diacritics},
+% \item text mode macros for ligatures (e.g.~\cmd{\oe}) and other glyphs (e.g.~\cmd{\aa}) in
+%       Table~\vref{tab:ligatures_and_glyphs},
+% \item horizontal spacing (e.g.~\cmd{\quad}) and line breaking (e.g.~\cmd{\\}) macros in
+%       Table~\vref{tab:spacing},
+% \item text mode symbols (e.g.~\cmd{\$}) and punctuation (e.g.~\cmd{\textexclamdown}) macros in
+%       Table~\vref{tab:symbols_and_punctuation}, and finally
+% \item other \LaTeX\ commands (e.g.~\cmd{\emph}) and environments (e.g.~\env{center})
+%       in Table~\vref{tab:commands_and_environments}.
+% \end{enumerate}
+%^^A \pagebreak
+%
+%^^A Inspired by https://tex.stackexchange.com/a/163717/228515
 % \begin{table}[tbp]
 % \centering
-% \caption{Conversion of \LaTeX\ material to HTML.}
-% \label{tab:html}
-% \begin{tabular}{llll}
+% \caption{Text mode diacritic macros undergoing a tailored conversion to \HTML.}
+% \label{tab:diacritics}
+% \begin{threeparttable}
+% \begin{tabular}{clll}
 % \toprule
-% \multicolumn{2}{l}{Macros} & Commands & Environnments \\
-% \cmidrule(lr){1-2}\cmidrule(lr){3-3}\cmidrule(lr){4-4}
-% |\%| & |\#| &|\emph{}| & |\begin{center}|\\
-% |\$| & |\&| &|\textbf{}| & |\begin{enumerate}|\\
-% |\\| & |\par| &|\textit{}| & |\begin{itemize}|\\
-% |\&| & |\S| & |\texttt{}| & |\begin{tikzpicture}|\\
-% |\{| & |\}| & |\textsc{}| & \\
-% |\|\textvisiblespace & |\relax| & |\underline{}| &\\
-% |\,| & |\thinspace| & |\textsuperscript{}| & \\
-% |\dots| & |\ldots| & |\up{}| & \\
-% |\euro| & |\texteuro| & |\fup{}| & \\
-% |\TeX| & |\LaTeX|& |\textsubscript{}| & \\
-% |\_| & |\textbackslash| & |\url{}| & \\
-% |~| & & |\href{}{}| & \\
-% & & |\tikz[]{}| & \\
-% & & |\includegraphics[]{}| & \\
-% & & |\verbatiminput{}| & \\
-% & & |\VerbatimInput[]{}| & \\
-% & & |\LVerbatimInput[]{}| & \\
-% & & |\BVerbatimInput[]{}| & \\
-% & & |\inputminted[]{}{}| & \\
+% Definition & Letter List\tnote{1} & Description & Samples\\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(lr){4-4}
+% \cmd{\"}\marg{letter} & a, e, i, o, u, y &
+% \href{https://en.wikipedia.org/wiki/Diaeresis_(diacritic)}{umlaut or diaeresis}
+% & \"{a} \"{A} \"{e} \"{E} \"{i} \"{I} \"{o} \"{O} \dots\ \"{Y}\\
+% \cmd{\'}\marg{letter} & a, e, i, o, u &
+% \href{https://en.wikipedia.org/wiki/Acute\_accent}{acute accent}
+% & \'{a} \'{A} \'{e} \'{E} \'{i} \'{I} \'{o} \'{O} \'{u} \'{U}\\
+% \cmd{\.}\marg{letter} & c, e, g, i, z &
+% \href{https://en.wikipedia.org/wiki/Dot_(diacritic)#Overdot}{overdot}
+% & \.{c} \.{C} \.{e} \.{E} \.{g} \.{G} \.{i} \.{I} \.{z} \.{Z}\\
+% \cmd{\=}\marg{letter} & a, e, g, i, o, u, y &
+% \href{https://en.wikipedia.org/wiki/Macron_(diacritic)}{macron}
+% & \={a} \={A} \={e} \={E} \={g} \={G} \={i} \={I} \dots\ \={Y}\\
+% \cmd{\^}\marg{letter} & a, e, i, o, u &
+% \href{https://en.wikipedia.org/wiki/Circumflex}{circumflex} &
+% \^{a} \^{A} \^{e} \^{E} \^{i} \^{I} \^{o} \^{O} \^{u} \^{U}\\
+% \cmd{\`}\marg{letter} & a, e, i, o, u &
+% \href{https://en.wikipedia.org/wiki/Grave\_accent}{grave accent}
+% & \`{a} \`{A} \`{e} \`{E} \`{i} \`{I} \`{o} \`{O} \`{u} \`{U}\\
+% \cmd{\~}\marg{letter} & a, n, o &
+% \href{https://en.wikipedia.org/wiki/Tilde}{tilde}
+% & \~{a} \~{A} \~{n} \~{N} \~{o} \~{O}\\
+% \cmd{\b}\marg{letter} & b, d, k, l, n, t, z &
+% \href{https://en.wikipedia.org/wiki/Macron_below}{macron below}
+% & \b{b} \b{B} \b{d} \b{D} \b{k} \b{K} \b{l} \dots\ \b{Z}\\
+% \cmd{\c}\marg{letter} & c, s, t &
+% \href{https://en.wikipedia.org/wiki/Cedilla}{cedilla}
+% & \c{c} \c{C} \c{s} \c{S} \c{t} \c{T}\\
+% \cmd{\d}\marg{letter} & a, b &
+% \href{https://en.wikipedia.org/wiki/Dot_(diacritic)#Underdot}{underdot}
+% & \d{a} \d{A} \d{b} \d{B}\\
+% \cmd{\H}\marg{letter} & o, u &
+% \href{https://en.wikipedia.org/wiki/Double\_acute\_accent}{double acute accent}
+% & \H{o} \H{O} \H{u} \H{U}\\
+% \cmd{\k}\marg{letter} & a, e, i, o, u &
+% \href{https://en.wikipedia.org/wiki/Ogonek}{ogonek}
+% & \k{a} \k{A} \k{e} \k{E} \k{i} \k{I} \k{o} \k{O} \k{u} \k{U}\\
+% \cmd{\r}\marg{letter} & a, u &
+% \href{https://en.wikipedia.org/wiki/Ring_(diacritic)#Overring}{overring}
+% & \r{a} \r{A} \r{u} \r{U} \\
+%^^A \cmd{\t}\marg{letter} & a, b, c & tie-after accent & \t{oo}\\
+% \cmd{\u}\marg{letter} & a, e, g, i\tnote{2}, \i, o, u &
+% \href{https://en.wikipedia.org/wiki/Breve}{breve}
+% & \u{a} \u{A} \u{e} \u{E} \u{i} \u{\i} \u{I} \u{o} \u{O} \u{u} \u{U}\\
+% \cmd{\v}\marg{letter} & c, d, e, l, n, r, s, t, z &
+% \href{https://en.wikipedia.org/wiki/Caron}{caron or h\'a\v{c}ek}
+% & \v{c} \v{C} \v{d} \v{D} \v{e} \v{E} \v{l} \dots\ \v{Z}\\
 % \bottomrule
 % \end{tabular}
+% \begin{tablenotes}
+%  \item[1]  The lowercase letters listed also stand for their uppercase
+%  equivalent.
+%  \item[2] pdf\TeX\ v3.14159265 typesets |\u{i}| with an objectionable tittle.
+%  Use |\u{\i}|.
+% \end{tablenotes}
+% \end{threeparttable}
 % \end{table}
-% Single and double quotation marks (with german variants), french quotation marks,
-% inverted exclamation and question marks, and the diacritical 
-% commands  |\^|, |\'|, |\`|, |\"|, |\~|, |\c|, |\H|, |\k|, |\u| and |\v| are
-% also handled, as are the characters |\aa|, |\ae|, |\l|, |\oe|,
-% |\o|, |\ss|, and their capitalizations. See Tables~\ref{tab:diacritical},
-% \ref{tab:ligatures}, and \ref{tab:other} for more details.
-%   
-% In addition, |<| and |>| will be converted to |<| and |>| \emph{within math mode only}.
-% If they should be typed outside of math mode, they will be passed as typed to
-% the HTML, and probably interpreted by students' browsers as HTML tags
-% or other unpredicated results.
+%
+% \begin{table}[tbp]
+% \centering
+% \caption{Text mode ligature and glyph macros undergoing a tailored conversion
+% to \HTML.}
+% \label{tab:ligatures_and_glyphs}
+% \begin{threeparttable}
+% \begin{tabular}{cccc}
+% \toprule
+% \multicolumn{2}{c}{Lowercase} & \multicolumn{2}{c}{Uppercase} \\
+% \cmidrule(lr){1-2}\cmidrule(lr){3-4}
+% Definition & Sample & Definition & Sample \\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}\cmidrule(lr){4-4}
+% \cmd{\aa} & \aa & \cmd{\AA} & \AA \\
+% \cmd{\ae} & \ae & \cmd{\AE} & \AE \\
+% \cmd{\dh} & \dh & \cmd{\DH} & \DH \\
+% \cmd{\dj} & \dj & \cmd{\DJ} & \DJ \\
+% \cmd{\i} & \i &  &  \\
+% \cmd{\ij} & \ij & \cmd{\IJ} & \IJ \\
+% \cmd{\j} & \j &  &  \\
+% \cmd{\l} & \l & \cmd{\L} & \L \\
+% \cmd{\ng} & \ng & \cmd{\NG} & \NG \\
+% \cmd{\o} & \o & \cmd{\O} & \O \\
+% \cmd{\oe} & \oe & \cmd{\OE} & \OE \\
+% \cmd{\ss} & \ss & \cmd{\SS}\tnote{1} & \SS\tnote{2} \\
+% \cmd{\th} & \th & \cmd{\TH} & \TH \\
+% \bottomrule
+% \end{tabular}
+% \begin{tablenotes}
+%  \item[1] Contrarily to most fonts, Libertine, used in this documentation and
+%  available for instance via the package \pkg{libertine}, defines the glyph
+%  \SS.
+%  \item[2] \LaTeX\ defines the \cmd{\SS} macro but pdf\TeX\ renders it as a
+%  doubled capital S.
+% \end{tablenotes}
+% \end{threeparttable}
+% \end{table}
+%
+% \begin{table}[tbp]
+% \centering
+% \caption{Text mode horizontal spacing and line breaking macros undergoing a
+% tailored conversion to \HTML.}
+% \label{tab:spacing}
+%^^A Inspired by https://tex.stackexchange.com/a/74354/228515
+% \begin{threeparttable}
+% \begin{tabular}{ll}
+% \toprule
+% Definition & Description \\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}
+% \cmd{\,} or \cmd{\thinspace} & narrow non-breaking space \\
+% |~| or \texttt{\textbackslash\textvisiblespace} & non-breaking space \\
+% \cmd{\>}\tnote{1},{ } \cmd{\:}{}\tnote{2}{ } or \cmd{\medspace}\tnote{2} & mid space \\
+% \cmd{\;}\tnote{2}{ } or \cmd{\thickspace}\tnote{2} & thick space \\
+% \cmd{\enspace} & nut (1en wide space)\\
+% \cmd{\quad} & mutton (1em wide space)\\
+% \cmd{\qquad} & doubled mutton (2em wide space)\\
+% \cmd{\textvisiblespace} & sample: \textvisiblespace \\
+% \cmd{\\} or \cmd{\newline} & start a new line \\
+% |\par| or \meta{blank line} & start a new paragraph \\
+% \bottomrule
+% \end{tabular}
+% \begin{tablenotes}
+%  \item[1] \cmd{\>} is defined in math-mode only.
+%  \item[2] \cmd{\:}, \cmd{\medspace}, \cmd{\;}, and \cmd{\thickspace} require the package
+%  \pkg{amsmath}.
+% \end{tablenotes}
+% \end{threeparttable}
+% \end{table}
+%
+% \begin{table}[tbp]
+% \centering
+% \caption{Text mode punctuation marks and symbol macros undergoing a tailored
+% conversion to \HTML. A baseline is represented in the samples of quotations
+% marks, in order to draw attention to their vertical positioning.}
+% \label{tab:symbols_and_punctuation}
+% \newsavebox\textbox
+% \newcommand\showbaseline[1]{\leavevmode\sbox\textbox{#1}
+% \rlap{\rule{\wd\textbox}{.1pt}}\usebox\textbox}
+% \begin{threeparttable}
+% \begin{tabular}{llc}
+% \toprule
+% Package & Definition & Sample \\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}
+% \LaTeX\ base & \cmd{\%} & \% \\
+% & \cmd{\#} & \# \\
+% & \cmd{\_} & \_ \\
+% & \cmd{\textbackslash} & \textbackslash \\
+% & \cmd{\$} & \$ \\
+% & \cmd{\&} & \& \\
+% & \cmd{\S} & \S \\
+% & |\{| & \{ \\
+% & |\}| & \} \\
+% & \cmd{\texteuro} & \texteuro \\
+% & \cmd{\dots} or \cmd{\ldots} & \dots \\
+% & \cmd{\textexclamdown} & \textexclamdown \\
+% & \cmd{\textquestiondown} & \textquestiondown \\
+% & |--| & -- \\
+% & |=| & = \\
+% & |`| and |'|\tnote{1} & \showbaseline{` '} \\
+% & \cmd{\textquoteleft} and \cmd{\textquoteright}
+% & \showbaseline{\textquoteleft\ \textquoteright} \\
+% & |``| and |''|\tnote{1,2} & \showbaseline{`` ''} \\
+% & \cmd{\textquotedblleft} and \cmd{\textquotedblright}
+% & \showbaseline{\textquotedblleft\ \textquotedblright} \\
+% & \cmd{\textquotesingle} & \showbaseline{\textquotesingle\ } \\
+% & |"| & \showbaseline{" }\tnote{2} \\
+% & \cmd{\textquotedbl} & \showbaseline{\textquotedbl\ }\\
+% & \cmd{\guilsinglleft} and \cmd{\guilsinglright}
+% & \showbaseline{\guilsinglleft\ \guilsinglright} \\
+% & \cmd{\guillemotleft} and \cmd{\guillemotright}
+% & \showbaseline{\guillemotleft\ \guillemotright}\\
+% & \cmd{\quotesinglbase} & \showbaseline{\quotesinglbase\ }\\
+% & \cmd{\quotedblbase} & \showbaseline{\quotedblbase\ } \\
+% \cmidrule(lr){1-1}
+% \pkg{eurosym} & \cmd{\euro} & \euro\\
+% \cmidrule(lr){1-1}
+% \pkg{babel} & \cmd{\flq} and \cmd{\frq} & \showbaseline{\flq\ \frq} \\
+% & \cmd{\flqq} and \cmd{\frqq} & \showbaseline{\flqq\ \frqq} \\
+% \cmidrule(lr){1-1}
+% \pkg{babel}, opt. \optn{french} & \cmd{\og} and \cmd{\fg}\tnote{3}
+% & \showbaseline{\flqq\ \frqq} \\
+% \cmidrule(lr){1-1}
+% \pkg{babel}, opt. \optn{german} & \cmd{\glq} and \cmd{\grq}
+% & \showbaseline{\glq\ \grq} \\
+% & \cmd{\dq} & \showbaseline{\dq\ }\tnote{2} \\
+% & \cmd{\glqq} and \cmd{\grqq} & \showbaseline{\glqq\ \grqq} \\
+% \bottomrule
+% \end{tabular}
+% \begin{tablenotes}
+%  \item[1] When placed in math mode, the single straight quote (\texttt{'}) is
+%           passed as-is to the \XML, even when doubled (double prime symbol).
+%  \item[2] In roman type, \LuaLaTeX\ and \XeLaTeX\ typeset the double straight
+%  quote symbol (\texttt{"}) and the command \cmd{\dq} as a double right quote
+%  (\textquotedblright). Instead,  \pkg{moodle} follows pdf\LaTeX: whatever
+%  the \TeX\ engine used, the double straight quote (\texttt{"}) is passed to the \XML.
+%   \item[3] The way \cmd{\og} and \cmd{\fg} are typeset in the \PDF\ depends on the
+%   current babel language. Regardless, \pkg{moodle} passes the symbols
+%   \texttt{\guillemotleft} and \texttt{\guillemotright} to the \XML.
+% \end{tablenotes}
+% \end{threeparttable}
+% \end{table}
+%
+% \begin{table}[tbp]
+% \centering
+% \caption{\LaTeX\ commands and environments undergoing a tailored conversion
+% to \HTML.}
+% \label{tab:commands_and_environments}
+% \begin{tabular}{lll}
+% \toprule
+% Package & Commands & Environments \\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}\cmidrule(lr){3-3}
+% \LaTeX\ base & |{}|& |$|$\cdots$|$| (inline math) \\
+% & \cmd{\relax} & |\(|$\cdots$|\)| (inline math) \\
+% & \cmd{\LaTeX} &  |$$|$\cdots$|$$| (display math) \\
+% & \cmd{\TeX} & \cmd{\[}$\cdots$\cmd{\]} (display math) \\
+% & \cmd{\emph}\marg{\dots} & \env{center} \\
+% & \cmd{\textbf}\marg{\dots} & \env{enumerate} \\
+% & \cmd{\textit}\marg{\dots} & \env{itemize} \\
+% & \cmd{\textsc}\marg{\dots} & \env{quote} \\
+% & \cmd{\textsuperscript}\marg{\dots} & \env{quotation}\\
+% & \cmd{\textsubscript}\marg{\dots} &\\
+% & \cmd{\texttt}\marg{\dots} &\\
+% & \cmd{\underline}\marg{\dots} &\\
+% \cmidrule(lr){1-1}
+% \pkg{hyperref} & \cmd{\href}\marg{\dots}\marg{\dots} &\\
+% \pkg{url} or \pkg{hyperref} & \cmd{\url}\marg{\dots} &\\
+% \cmidrule(lr){1-1}
+% \pkg{babel}, opt. \optn{french} & \cmd{\fup}\marg{\dots} &\\
+% & \cmd{\up}\marg{\dots} &\\
+% \cmidrule(lr){1-1}
+% \pkg{graphics} or \pkg{graphicx} &
+% \cmd{\includegraphics}\oarg{\dots}\marg{\dots} \\
+% \cmidrule(lr){1-1}
+% \pkg{tikz} & \cmd{\tikz}\oarg{\dots}\marg{\dots} & \env{tikzpicture}\oarg{\dots} \\
+% \cmidrule(lr){1-1}
+% \pkg{verbatim} & \cmd{\verbatiminput}\marg{\dots} &\\
+% \cmidrule(lr){1-1}
+% \pkg{fancyverb} or
+% \pkg{fvextra}& \cmd{\VerbatimInput}\oarg{\dots}\marg{\dots} &\\
+% & \cmd{\LVerbatimInput}\oarg{\dots}\marg{\dots} &\\
+% & \cmd{\BVerbatimInput}\oarg{\dots}\marg{\dots}& \\
+% \cmidrule(lr){1-1}
+% \pkg{minted} & \cmd{\inputminted}\oarg{\dots}\marg{\dots}\marg{\dots} &\\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+% 
+% In addition, |<| and |>| will be converted to their HTML equivalents |<|
+% and |>| in the \XML\ file. This prevents  portions of the code to be
+% interpreted by \Moodle\ as \HTML\ tags.
+% 
 % A doubled dash will be converted to en-dash |–| \emph{outside math mode}.
-% 
-% Be aware that \emph{\textsf{moodle} does not know how to convert any 
-% other \TeX\ or \LaTeX\ commands to HTML.}
-% If other sequences are used, they may be passed verbatim to the XML file
+% Empty groups |{}| will be passed to the XML only \emph{in math mode}.
+%
+% Be aware that, apart what is described previously, \pkg{moodle} \emph{does
+% not know how to convert any other \TeX\ or \LaTeX\ commands to \HTML.}
+% If other sequences are used, they may be passed verbatim to the \XML\ file
 % or may cause unpredicted results.
-% 
-% \DescribeMacro{\htmlonly}The |\htmlonly|\oarg{Content for traditional output}
-% \marg{HTML content} command is to be used inside question environments (text,
-% answers, or feedback). It lets you pass directly code to the XML file while being
-% ignored for the traditional output (PDF). The HTML content passed as an argument
+%
+% If you think of another \LaTeX\ command that should be changed to an HTML
+% equivalent, please have a look at Section~\vref{sec:dev}.
+%
+% \DescribeMacro[question,answer,feedback]{\htmlonly}\oarg{Content for traditional output}
+% \marg{HTML content} is a command to be used inside question environments (text,
+% answers, or feedback). It lets you pass directly code to the \XML\ file while being
+% ignored for the traditional output (\PDF). The \HTML\ content passed as an argument
 % is subject to no particular processing and users should not expect to be able to
 % pass dangerous characters like |\|, |%|, or |#|. An optional argument allows to
 % pass contents to be processed for the traditional output. This argument is
-% ignored for the XML output.
+% ignored for the \XML\ output.
 % For instance, one can write code like this in a question environment
 % \begin{quote}
 %   |\htmlonly[\fbox{PDF contents}]{|\\
-%   |<div style="border: 1px solid green; display: inline-block;">|\\
+%   |<div style="border: 1px solid; display: inline-block;">|\\
 %   \rule{10em}{0pt}|HTML contents</div>|\\
 %   |}|
 % \end{quote}
 %
-% \DescribeMacro{\htmlregister}The |\htmlregister| command lets you specify
-% the macros that must be expanded in the XML file. It works only when no
-% optional argument is used.
-% 
-% \DescribeMacro{\moodleregisternewcommands} 
-% When the list of macros is long, it becomes cumbersome to record them
-% individually for expansion.
-% Calling |\moodleregisternewcommands| triggers the automatic
-% expansion of macros defined subsequently using |\newcommand|,
-% |\renewcommand|, |\providecommand|, or their starred variants.
+% \DescribeMacro[moodle]{\htmlregister}\marg{command} is a command that lets you
+% specify a macro that must be expanded in the \XML\ file. It works only when
+% the macro is defined without optional argument.\watchout
+%
+% \DescribeMacro[moodle]{\moodleregisternewcommands}
+% When the list of user-defined macros is long, it becomes cumbersome to
+% record them individually for expansion. Calling \cmd{\moodleregisternewcommands}
+% watches for subsequent calls to \cmd{\newcommand}, \cmd{\renewcommand},
+% \cmd{\providecommand}, and their starred variants such that the corresponding
+% commands are automatically expanded by \pkg{moodle}.
 % Again, this works only if the macros are defined \emph{without} optional
-% argument.
-% 
-% If you think of another \LaTeX\ command that should be changed to an HTML
-% equivalent, please have a look at Section~\ref{sec:dev}.
-% 
-% \section{Graphics}
-% The \textsf{moodle} package can handle two kinds of graphics seamlessly.
-% External graphics files may be included with the |\includegraphics| command
-% from the |graphicx| package, and graphics may be generated internally using \TikZ. 
+% argument.\watchout
+%
+% \subsection{Graphics}
+% The \pkg{moodle} package can handle two kinds of graphics seamlessly.
+% External graphics files may be included with the \cmd{\includegraphics} command
+% from the \pkg{graphicx} package, and graphics may be generated internally using \TikZ.
 % In either case, the graphics will be embedded in base-64 encoding directly within
-% the Moodle~XML produced.  This prevents the hassle of managing separate
-% graphics files on the Moodle server, as Moodle will store the picture 
+% the \Moodle\ \XML\ produced.  This prevents the hassle of managing separate
+% graphics files on the \Moodle\ server, as \Moodle\ will store the picture
 % within the question in the question bank.
-% 
-% \subsection{Default \texttt{includegraphics}}
-% \DescribeMacro{\includegraphics}\DescribeMacro{height}\DescribeMacro{width}
-% When using |\includegraphics|, the only options currently supported 
-% are |height| and |width|.  Attempts to use other |\includegraphics| options,
-% such as |scale| or |angle|, will affect the PDF but not the XML output.
-% The dimensions set by |height| and |width| are \TeX\ dimensions such as \texttt{4\,in}
-% or \texttt{2.3\,cm}.
-% In order to prepare the image for web viewing, this package converts those 
-% dimensions to pixels using a default of 
+%
+% \subsubsection{Default \texttt{includegraphics}}
+%
+% \DescribeMacro[graphics,graphicx]{\includegraphics}\oarg{options}\marg{file} can be used to
+% include graphic files in both \PDF\ and the \XML\ outputs.
+% The only options currently supported are \optn{height}\DescribeKey[includegraphics]{height}\
+% and \optn{width}\DescribeKey[includegraphics]{width}.  Attempts to use other
+% \cmd{\includegraphics} options, such as \optn{scale} or \optn{angle}, will affect the \PDF\
+% but not the \XML\ output.
+% The dimensions set by \optn{height} and \optn{width} are \TeX\ dimensions such as
+% \texttt{4\,in} or \texttt{2.3\,cm}.
+% In order to prepare the image for web viewing, this package converts those
+% dimensions to pixels using a default of
 % 103 pixels per inch.\footnote{This
-%   number was selected because an image with 
-%   |<IMG HEIGHT=103 WIDTH=103 SRC="...">| showed up as almost exactly 1 inch 
-%   tall and 1 inch wide on several of this author's devices and browsers 
+%   number was selected because an image with
+%   |<IMG HEIGHT=103 WIDTH=103 SRC="...">| showed up as almost exactly 1 inch
+%   tall and 1 inch wide on several of this author's devices and browsers
 %   as of January 2016.}
-% \DescribeMacro{ppi}
-% That value may be changed by setting the |ppi| key (e.g., |ppi=72|); 
-% this is probably best done for the entire document with a |\moodleset| command,
+% \DescribeKey[includegraphics]{ppi}
+% That value may be changed by setting the \optn{ppi} key (e.g., \texttt{ppi=72});
+% this is probably best done for the entire document with a \cmd{\moodleset} command,
 % rather than image-by-image.
-% \DescribeMacro{\graphicspath}
-% You can use |\graphicspath{{|\emph{path}|}}| to specify a directory where the
-% pictures to be included are located.
 %
-% A special rule was added for the inclusion of GIF pictures (|.gif| extension).
-% These files are passed as-is to the XML, preserving potential animations.
-% However, as pdf\TeX\ engines do not support the GIF format, the picture is
-% passed to the PDF output after a conversion to the PNG format. When the GIF
-% file is animated, only its first frame is passed to the PDF.
+% \DescribeMacro[graphics,graphicx]{\graphicspath}|{{|\meta{path1}|},{|\meta{path2}|},...}| can be
+% used to specify the locations of the pictures to be included.
 %
-%^^A \DescribeMacro{\DeclareGraphicsAlien} Users may declare other graphic
-%^^A formats with the command |\DeclareGraphicsAlien|\marg{alien extension}
+% A special rule was added for the inclusion of \GIF\ pictures (\filenm{.gif} extension).
+% These files are passed as-is to the \XML, preserving potential animations.
+% However, as pdf\TeX\ engines do not support the \GIF\ format, the picture is
+% passed to the \PDF\ output after a conversion to the \PNG\ format. When the \GIF\
+% file is animated, only its first frame is passed to the \PDF.
+%
+%^^A \DescribeMacro[moodle]{\DeclareGraphicsAlien} Users may declare other graphic
+%^^A formats with the command \cmd{\DeclareGraphicsAlien}\marg{alien extension}
 %^^A \marg{native extension}\marg{command line for conversion}.
 %
-% \subsection{\TikZ\ Pictures}
-% \TikZ\ is a user-friendly syntax layer for PGF, the macro \LaTeX\ package for creating
-% graphics. Users that are not familiar with TikZ\ can learn more here:
-% \url{https://ctan.org/pkg/pgf}.
-% 
-% When \TikZ\ is loaded and used to define pictures, \textsf{moodle} invokes
-% the |external| \TikZ\ library, so that each |tikzpicture| environment is compiled
-% to a freestanding PDF file.
+% \subsubsection{\TikZ\ Pictures}
+% \TikZ\ is a user-friendly syntax layer for \acro{PGF}, the macro \LaTeX\ package for creating
+% graphics. More information on \TikZ\ can be found at \url{https://ctan.org/pkg/pgf}.
 %
-% \subsection{Package Option \texttt{tikz}}\label{subsec:tikz}
-% \DescribeMacro{tikz}
-% The \textsf{moodle} package admits a \texttt{tikz} option which has the following effects:
+% When \TikZ\ is loaded and used to define pictures, \pkg{moodle} invokes
+% the \pkg{external} \TikZ\ library, so that each \env{tikzpicture} environment is compiled
+% to a freestanding \PDF\ file.
+%
+% \subsubsection{Package Option \optn{tikz}}\label{subsec:tikz}
+% \DescribeOption[moodle]{tikz}
+% The \pkg{moodle} package admits a \optn{tikz} option which has the following effects:
 % \begin{itemize}
-% \item the package \texttt{tikz} is loaded.
-% \item \texttt{includegraphics} is embedded in a \TikZ\ picture. Consequences are that
+% \item the package \pkg{tikz} is loaded.
+% \item \DescribeMacro[tikz]{\includegraphics}\cmd{\includegraphics} embeds graphics in a \TikZ\ picture. Consequences are that
 %   \begin{itemize}
-%     \item the pictures encoded in the XML file are resampled. This prevents encoding
-%           images at a higher resolution than rendered by Moodle.
-%     \item the full set of \texttt{includegraphics} options is accessible,
-% e.g.~|scale=.5|, |angle=90|, or |width=.2\textwidth|.
+%     \item the pictures encoded in the \XML\ file are resampled. This prevents encoding
+%           images at a higher resolution than rendered by \Moodle.
+%     \item the full set of \cmd{\includegraphics} options is accessible,
+% e.g.~\optn{scale=.5}, \optn{angle=90}, or |width=.2\textwidth|.
 %   \end{itemize}
-% \item \DescribeMacro{\embedaspict} a macro |\embedaspict{...}| is provided for the
-% inclusion of inline \LaTeX\ material as images. This can serve as a workaround to
-% overcome limitations of this package---like the conversion of tabulars to HTML---
-% or limitations of Moodle itself.
-% For the definition of this macro, the package \texttt{varwidth} is loaded.
-% \item optimizations of the \TikZ-external library are disabled. Compilation might get
+% \item \DescribeMacro[tikz]{\embedaspict} a macro \cmd{\embedaspict}\marg{\LaTeX\ contents}
+% is provided for the conversion of inline \LaTeX\ material as images. This can serve
+% as a workaround to overcome limitations of this package---like the conversion of
+% \emph{tabular}s to HTML--- or limitations of \Moodle\ itself.
+% For the definition of this macro, the package \pkg{varwidth} is loaded.
+% \item optimizations of the \TikZ-external library are disabled: compilation might get
 % sensibly slower.
 % \end{itemize}
 %
-% \subsection{External Tools}
+
+% \subsubsection{External Tools}
 % The mechanisms used for handling graphics are somewhat fragile and rely upon
 % three free external programs.
 % \begin{enumerate}
-%   \item GhostScript (\url{www.ghostscript.com}) is used to convert the PDF output
-%         from \TikZ\ into a PNG raster graphics file.
-%         The default command line is presumed to be |gswin64c.exe| 
-%         (if |\ifwindows| from the |ifplatform| package returns true)
-%         or |gs| (if |\ifwindows| returns false).
-%         If your system requires a different command line to invoke Ghostscript,
-%         \DescribeMacro{\ghostscriptcommand}
+%   \item \prog{GhostScript} (\url{www.ghostscript.com}) is used to convert the \PDF\ output
+%         from \TikZ\ into a \PNG\ raster graphics file.
+%         The default command line is presumed to be \prog{gswin64c.exe}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%         (if |\ifwindows| from the \pkg{ifplatform} package returns true)
+%         or \prog{gs} (if |\ifwindows| returns false).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%         If your system requires a different command line to invoke \prog{Ghostscript},
+%         \DescribeMacro[moodle]{\ghostscriptcommand}
 %         you may change it by invoking:
 %            \begin{quote}
 %             |\ghostscriptcommand|\marg{executable filename}
 %            \end{quote}
-%   \item When external graphics files such as PDF are included,
-%         the open-source ImageMagick software (\url{www.imagemagick.org})
-%         converts each file to PNG format.
-%         The command line for ImageMagick is the nondescript word |convert|,
-%         \DescribeMacro{\imagemagickcommand}
-%         but may be changed by invoking |\imagemagickcommand|\marg{executable filename}.
-%   \item OptiPNG (\url{http://optipng.sourceforge.net/}) is used to optimize the PNG images.
-%         The command line is presumed to be |optipng|, but can be changed with
-%         \DescribeMacro{\optipngcommand} |\optipngcommand|\marg{executable filename}.
+%   \item When external graphics files such as \PDF\ are included,
+%         the \prog{ImageMagick} software (\url{www.imagemagick.org})
+%         converts each file to \PNG\ format.
+%         The command line for \prog{ImageMagick} is the nondescript word \progcode{convert},
+%         \DescribeMacro[moodle]{\imagemagickcommand}
+%         but may be changed by invoking \cmd{\imagemagickcommand}\marg{executable filename}.
+%   \item \prog{OptiPNG} (\url{http://optipng.sourceforge.net/}) is used to optimize the \PNG\ images.
+%         The command line is presumed to be \prog{optipng}, but can be changed with
+%         \DescribeMacro[moodle]{\optipngcommand}\cmd{\optipngcommand}\marg{executable filename}.
 % \end{enumerate}
-% 
+
+%
 % Please note the following vital points to make the graphics handling work:
 % \begin{itemize}
-%   \item As of now, graphics are only supported when compiling directly to a PDF
-%         with |pdflatex|. Including PS graphics or using \TikZ\ with the DVI$\to$PS workflow is not
+%   \item As of now, graphics are only supported when compiling directly to a \PDF\
+%         with (\prog{pdf}$\mid$\prog{xe}$\mid$\prog{lua})\prog{latex}. Including \acro{PS} graphics or using \TikZ\ with the \DVI$\to$\acro{PS} workflow is not
 %         yet supported.
 %^^A   \item Filenames should not contains spaces or, under windows, special characters like |_| or |\|.
-%   \item You must have Ghostscript and ImageMagick installed on your system
-%         to fully use the graphics-handling capabilities of \textsf{moodle}.
-%   \item If OptiPNG is not installed, the corresponding system calls will fail with otherwise no
-%         impact on the compilation process: PNG files are passed unoptimized to the XML output.
-%   \item \LaTeX\ must be able to call system commands; that is, |\write18| must be enabled.
-%         For Mik\TeX, this means adding |--enable-write18| to the command line of |pdflatex|;
-%         for \TeX Live, this means adding |--shell-escape=true|.
-%   \item Due to security issues with old versions of Ghostcript, some systems default to a
-%         policy that prevents the conversion of PDF and PS to PNG. Assuming that, as a user of
-%         \textsf{moodle} which requires shell escape capabilities, you either use a sandboxed
+%   \item You must have \prog{Ghostscript} and \prog{ImageMagick} installed on your system
+%         to fully use the graphics-handling capabilities of \pkg{moodle}.
+%   \item If \prog{OptiPNG} is not installed, the corresponding system calls will fail with otherwise no
+%         impact on the compilation process: \PNG\ files are passed unoptimized to the \XML\ output.
+%   \item \LaTeX\ must be able to call system commands; that is, \cmd{\write18} must be enabled.
+%         For Mik\TeX, this means adding \progcode{--enable-write18} to the command line of
+%         (\prog{pdf}$\mid$\prog{xe}$\mid$\prog{lua})\prog{latex}; for \TeX\ Live, this means adding \progcode{--shell-escape=true}.
+%   \item Due to security issues with old versions of \prog{Ghostcript}, some systems default to a
+%         policy that prevents the conversion of \PDF\ and \acro{PS} to \PNG. Assuming that, as a user of
+%         \pkg{moodle} which requires shell escape capabilities, you either use a sandboxed
 %         environment or trust the files handled at the system-level, you may want to disable this
-%         over-zelous security policy. For example,
+%         over-zealous security policy. For example,
 %         \href{https://stackoverflow.com/a/52661288/14608059}{see this}.
-%   \item Users of the |circuitikz| package (\url{https://www.ctan.org/pkg/circuitikz}) must
+%   \item Users of the \pkg{circuitikz} package (\url{https://www.ctan.org/pkg/circuitikz}) must
 %         enclose their circuits' \TikZ\ code in the |tikzpicture| environment instead of
-%         the historical |circuitikz| environment. That is required, as of \TikZ\ 2.1,
-%         by the |external| library.
+%         the historical \env{circuitikz} environment. That is required, as of \TikZ\ 2.1,
+%         by the \pkg{external} library.
 % \end{itemize}
 %
-% \subsection{Package Option \texttt{svg}}\label{subsec:svg}
+% \subsubsection{Package Option \optn{svg}}\label{subsec:svg}
 %
-% \paragraph{Important Notice} \emph{The \texttt{svg} option is an experimental feature
-% introduced in \textsf{moodle} v0.8. It has been tested exclusively under Linux, with
-% TeXLive 2020, Inkscape v1.0.1 and Scour 0.38.2.}
-% 
-% \DescribeMacro{svg} The \textsf{moodle} package admits an experimental \texttt{svg}
-% option which has the following effects:
+% \paragraph{Important Notice}\watchout[experimental] \emph{The \optn{svg} option is
+% an experimental feature introduced in \pkg{moodle} v0.8. It has been tested only
+% under Linux and Windows, with TeX Live 2020, Inkscape v1.0.1 and Scour 0.38.2.}
+%
+% \DescribeOption[moodle]{svg} The \pkg{moodle} package admits an experimental
+% \optn{svg} option which has the following effects:
 % \begin{itemize}
-% \item |\includegraphics| can be used to import SVG graphic files directly
-% (extension |.svg| or |.SVG|). In this case, the SVG file is passed as-is to the
-% XML output and is converted using \href{https://inkscape.org/}
-% {Inkscape} (must be installed) for inclusion in the PDF output.
-% \item the graphic files in PDF format are converted to the SVG format using
-% \href{https://inkscape.org/}{Inkscape} (must be installed), rather than beeing
-% rasterized. Before inclusion to the XML output, the SVG file is optimized using
+% \item \DescribeMacro[svg]{\includegraphics}\cmd{\includegraphics} can be used to import
+% \SVG\ graphic files directly (extension \filenm{.svg} or \filenm{.SVG}). In this case, the \SVG\ file
+% is passed as-is to the \XML\ output and is converted using \href{https://inkscape.org/}
+% {\prog{Inkscape}} (must be installed) for inclusion in the \PDF\ output.
+% \item the graphic files in \PDF\ format are converted to the \SVG\ format using
+% \href{https://inkscape.org/}{Inkscape} (must be installed), rather than being
+% rasterized. Before inclusion to the \XML\ output, the \SVG\ file is optimized using
 % the \href{https://github.com/scour-project/scour}{Scour} utility. This
 % optimization step is optional in the sense that, if the Scour call fails,
-% the unoptimized SVG file will be passed to the XML output.
-% Two processes benefit from this PDF$\to$SVG conversion:
+% the un-optimized \SVG\ file will be passed to the \XML\ output.
+% Two processes benefit from this \PDF$\to$\SVG\ conversion:
 %   \begin{itemize}
-%     \item inclusion of PDF graphics with |\includegraphics|, and
-%     \item Tikz pictures that are externalized.
+%     \item inclusion of \PDF\ graphics with \cmd{\includegraphics}, and
+%     \item \TikZ\ pictures that are externalized.
 %   \end{itemize}
 % \end{itemize}
 %
-% \DescribeMacro{\PDFtoSVGcommand}\DescribeMacro{\SVGtoPDFcommand}
-% \DescribeMacro{\optiSVGcommand} The call of external tools can be changed using
-% the macros |\PDFtoSVGcommand| \marg{\dots}, |\SVGtoPDFcommand|\marg{\dots} and
-% |\optiSVGcommand|\marg{\dots}.
 %
-% \section{Verbatim Code}
-% Because, for HTML translation, \textsf{moodle} parses the body of questions, the use of 
+% The call of external \SVG\ manipulation utilities can be modified using the macros:
+% \begin{description}
+%   \item \ItemDescribeMacro[svg]{\PDFtoSVGcommand}\ for conversion
+%         from \PDF\ to \SVG,
+%   \item \ItemDescribeMacro[svg]{\SVGtoPDFcommand}\ for conversion
+%         from \SVG\ to \PDF, and
+%   \item \ItemDescribeMacro[svg]{\optiSVGcommand}\ for the
+%         optimization of \SVG\ files.
+% \end{description}
+%
+% \subsection{Verbatim Code}
+%
+% Because, for \HTML\ translation, \pkg{moodle} parses the body of questions, the use of
 % verbatim code results in compilation errors. This is why the use of |\verb|,
-% |\begin{verbatim}| and other standard utilities is not supported.
+% \env{verbatim} and other standard utilities is not supported.
 %
 % However, using the following three utilities, verbatim code can be imported from an external file:
 % \begin{enumerate}
-%   \item \DescribeMacro{\verbatiminput}|\verbatiminput|\marg{filename} from the \textsf{verbatim}
-%         package inserts verbatim code in both the PDF and the XML for moodle, without fancy additions.
-%   \item \DescribeMacro{\VerbatimInput}The macro |\VerbatimInput|\marg{options}\marg{filename} from
-%         \textsf{fancyvrb} or \textsf{fvextra} does more, with several options and settings offered
-%         (see below).
-%         The variants \DescribeMacro{\BVerbatimInput}|\VBerbatimInput| and
-%         \DescribeMacro{\LVerbatimInput}|\LVerbatimInput| are also supported, with identical
-%         effect on the XML output.
+%   \item \cmd{\verbatiminput}\marg{filename}\DescribeMacro[verbatim]{\verbatiminput}\
+%         from the \pkg{verbatim} package inserts verbatim code in both the \PDF\ and the
+%         \acro{XML} for \Moodle, without fancy additions.
+%   \item The macro \cmd{\VerbatimInput}\marg{options}\marg{filename}
+%         \DescribeMacro[fancyvrb,fvextra]{\VerbatimInput}\ from
+%         \pkg{fancyvrb} or \pkg{fvextra} does more, with several options and settings
+%         offered (see below).
+%         The variants \DescribeMacro[fancyvrb,fvextra]{\BVerbatimInput}\cmd{\VBerbatimInput} and
+%         \DescribeMacro[fancyvrb,fvextra]{\LVerbatimInput}\cmd{\LVerbatimInput} are also supported,
+%         with no difference on the \XML\ output.
 %         The variants with a star are unsupported and result in errors when used.
-%   \item \DescribeMacro{\inputminted}On top of that |\inputminted|\oarg{options}\marg{lang}
-%         \marg{filename}from the \textsf{minted} package offers syntaxic highlighting tailored to the
-%         specified language.
+%   \item On top of that \cmd{\inputminted}\oarg{options}\marg{lang}\marg{filename}\
+%         \DescribeMacro[minted]{\inputminted} from the \pkg{minted} package offers syntax
+%         highlighting tailored to the specified language.
 % \end{enumerate}
-% The \textsf{moodle} package handles these three commands to pass the code in the output XML.
-% With |\inputminted|, an external Python tool, \textsc{pygmentize}, performs syntax analysis and
-% its HTML formatter is used to populate the XML. With the other commands, the contents of the
-% file is passed as-is to the XML. A drawback of this approach, is that characters |<|, |>|,
-% |&|, |'|, and |"| are likely to mislead the web browser rendering the question on Moodle.
+% The \pkg{moodle} package handles these three commands to pass the code in the output \XML.
+% With \cmd{\inputminted}, an external Python tool, \prog{pygmentize}, performs syntax analysis and
+% its \HTML\ formatter is used to populate the \XML. With the other commands, the contents of the
+% file is passed almost as-is to the XML: in order to survive \Moodle\ import and \HTML\ rendering,
+% characters |<|, |>|, |&|, |'|, and |"| are converted to \HTML\ equivalents.
 %
-% With |\VerbatimInput| and |\inputminted|, the options that are taken care of for XML
-% generation are listed in Table~\ref{tab:verbatim-options}. Using |\fvset|\marg{key=value,...},
-% options can be set globally. Equivalently, with \textsf{minted},
-% |\setminted|\oarg{lang}\marg{key=value,...} is available.
+% With \cmd{\VerbatimInput} and \cmd{\inputminted}, the options that are taken care of for XML
+% generation are listed in Table~\vref{tab:verbatim-options}.
+% Using \cmd{\fvset}\marg{key=value,\dots}, options can be set globally. Equivalently, with \pkg{minted},
+% \cmd{\setminted}\oarg{lang}\marg{key=value,\dots} is available.
 %
 % \begin{table}[tbp]
 % \centering
 % \begin{threeparttable}[b]
-% \caption{Options and corresponding values considered for XML generation of verbatim material
-% with \texttt{VerbatimInput} and \texttt{inputminted}.}
+% \caption{Options and corresponding values considered for \XML\ generation of verbatim material
+% with \cmd{\VerbatimInput} and \cmd{\inputminted}.}
 % \label{tab:verbatim-options}
 % \begin{tabular}{ll}
 % \toprule
 % Option keys & Possible values\\\cmidrule(lr){1-1}\cmidrule(lr){2-2}
-% ^^A\texttt{commentchar} & \meta{character}\\
-% \texttt{gobble} & \meta{integer}\\
-% \texttt{autogobble}\tnote{1} & \texttt{true} or \texttt{false}\\
-% \texttt{tabsize} & \meta{integer}\\
-% \texttt{numbers} & \texttt{none}, \texttt{left}, \texttt{right}, or \texttt{both}\tnote{2}\\
-% \texttt{firstnumber} & \texttt{auto}, \texttt{last}, or \meta{integer}\\
-% \texttt{firstline} & \meta{integer}\\
-% \texttt{lastline} & \meta{integer}\\
-% \texttt{numberblanklines} & \texttt{true} or \texttt{false}\\
-% \texttt{highlightlines}\tnote{2} & \marg{coma-separated list of integers or ranges}\\
-% \texttt{style}\tnote{1} & \meta{string}\\
+% ^^A\optn{commentchar} & \meta{character}\\
+% \optn{gobble} & \meta{integer}\\
+% \optn{autogobble}\tnote{1} & \texttt{true} or \texttt{false}\\
+% \optn{tabsize} & \meta{integer}\\
+% \optn{numbers} & \texttt{none}, \texttt{left}, \texttt{right}, or \texttt{both}\tnote{2}\\
+% \optn{firstnumber} & \texttt{auto}, \texttt{last}, or \meta{integer}\\
+% \optn{firstline} & \meta{integer}\\
+% \optn{lastline} & \meta{integer}\\
+% \optn{numberblanklines} & \texttt{true} or \texttt{false}\\
+% \optn{highlightlines}\tnote{2} & \marg{coma-separated list of integers or ranges}\\
+% \optn{style}\tnote{1} & \meta{string}\\
 % \bottomrule
 % \end{tabular}
 %\begin{tablenotes}
-%\item[1] \texttt{autogobble}, \texttt{numbers=both}, and \texttt{style} are offered only by \textsf{minted}.
-%\item[2] line highlighting is offered only with \textsf{fvextra} or \textsf{minted} loaded.
+%\item[1] \optn{autogobble}, \optn{numbers=both}, and \optn{style} are from \pkg{minted}.
+%\item[2] line highlighting is offered only with \pkg{fvextra} or \pkg{minted} loaded.
 %\end{tablenotes}
 %\end{threeparttable}
 %\end{table}
 %
 % In order to define the verbatim code from the \LaTeX\ document itself, it is still possible
-% to use, outside the scope of the \textsf{moodle} questions, the environments |filecontents*|  (from the
-% \textsf{filecontents} package or \LaTeX\ kernel itself since 2019) or |VerbatimOut|
-% (from the \textsf{fancyvrb} and \textsf{fvextra} packages).
-% 
+% to use, outside the scope of the \pkg{moodle} questions, the environments \env{filecontents*}
+% (from the \pkg{filecontents} package or \LaTeX\ kernel itself since 2019) or \env{VerbatimOut}
+% (from the \pkg{fancyvrb} and \pkg{fvextra} packages).
+%
 % Here is an example:
 % \begin{VerbatimOut}[gobble=2]{minted.doc.out}
 %   \documentclass[12pt,a4paper]{article}
@@ -1294,12 +1949,9 @@
 %       \inputminted[numbers=left]{latex}{excerpt.tex}
 %       On which line is the class loaded?
 %       \item[feedback={
-%            yes! \inputminted[highlightlines={4}]{latex}{excerpt.tex}
-%                      } ] 4
-%       \item[feedback={No. On line 3, there is only a comment.},
-%             fraction=0] 3
-%       \item[feedback={No. On line 5, the package \texttt{moodle} is loaded.},
-%             fraction=0] 5
+%            yes! \inputminted[highlightlines={4}]{latex}{excerpt.tex} }] 4
+%       \item[feedback={Line 3 is just a comment.},fraction=0] 3
+%       \item[feedback={Line 5 loads the package \texttt{moodle}},fraction=0] 5
 %     \end{numerical}
 %     \begin{multi}[single]{IDE}
 %       Consider the following \LaTeX\ code excerpt.\\
@@ -1315,117 +1967,184 @@
 %   \end{document}
 % \end{VerbatimOut}
 % \inputminted[gobble=2,frame=lines]{latex}{minted.doc.out}
-% 
-% When code decorated with left-side line numbers is placed in question items, the output PDF could
-% show a collision between numbers of the item and the first line. To avoid this, |\LVerbatimInput| or
-% |\BVerbatimInput| can be used. Instead, when \textsf{minted} is used, the ``left-right'' mode can be
+%
+% When code decorated with left-side line numbers is placed in question items, the output \PDF\ could
+% show a collision between numbers of the item and the first line. To avoid this, \cmd{\LVerbatimInput} or
+% \cmd{\BVerbatimInput} can be used. Instead, when \pkg{minted} is used, the ``left-right'' mode can be
 % enforced with the \LaTeX\ command:
 % \begin{quote}
 %   |\RecustomVerbatimEnvironment{Verbatim}{LVerbatim}{}|
 %  \end{quote}
 %
-% When using utilities from \textsf{fancyvrb}, \textsf{fvextra}, or \textsf{minted}, \textsf{moodle}
-% sets framing options for the display of code in the output PDF:
+% When using utilities from \pkg{fancyvrb}, \pkg{fvextra}, or \pkg{minted}, \pkg{moodle}
+% sets framing options for the display of code in the output \PDF:
 % \begin{quote}
 %   |\fvset{frame=lines,label={[Beginning of code]End of code},|\\
 %   |       framesep=3mm,numbersep=9pt}|
 % \end{quote}
-% These settings can be overidden using |\fvset| after the preamble.
+% These settings can be overridden using \cmd{\fvset} after the preamble.
 %
-% \section{Calculated Questions}
-% Moodle's calculated questions are not supported by this package.
-% 
-% However, as \href{https://github.com/avohns/python-latex-moodle-quiz}{demonstrated by A.
-% Vohns}, an advanced scripting language may be used to generate a series of questions sharing
-% the same prototype.
-% 
-% We suggest to apply a specific tag to these questions. After import in Moodle, when creating
-% a quizz, this tag can be selected to narrow down a random selection of questions.
-% This would mimic the behavior of calculated questions while bringing the flexibility of your
-% favorite scripting language.
-% 
-% Here are two examples inspired from the work of A. Vohns. The first one relies on the
-% native Lua capabilities of \LuaLaTeX.
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   \begin{quiz}[tags={calculated}]{Example Quiz}
-%   \directlua{
-% \end{VerbatimOut}
-% \inputminted[gobble=2,frame=topline]{latex}{minted.doc.out}
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   function clozenum_print(pair,op,result)
-%     tex.print("\\begin{numerical}$"..pair[1].." "..op.." "..pair[2].." 
-%     =$".."\\item ",result,"\\end{numerical}")
-%   end
-%   function cloze_print(pair,points)
-%     tex.print("\\begin{cloze}[points="..points.."]{Arithmetic Quiz 
-%     ("..pair[1]..", "..pair[2]..")}Solve the following tasks!\\\\")
-%     clozenum_print(pair,"+",pair[1]+pair[2])
-%     clozenum_print(pair,"-",pair[1]-pair[2])
-%     clozenum_print(pair,"*",pair[1]*pair[2])
-%     if pair[1]/pair[2]==math.floor(pair[1]/pair[2]) then
-%       clozenum_print(pair,":",math.floor(pair[1]/pair[2]))
-%     end
-%     tex.print("\\end{cloze}")
-%   end
-%   for x = 2,4 do
-%     for y = 2,4 do
-%       if x>y then
-%         if x/y==math.floor(x/y) then points=4 else points=3 end
-%         cloze_print({x,y},points)
-%       end
-%     end
-%   end
-% \end{VerbatimOut}
-% \inputminted[]{lua}{minted.doc.out}
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   }
-%   \end{quiz}
-% \end{VerbatimOut}
-% \inputminted[gobble=2,frame=bottomline]{latex}{minted.doc.out}
-% The second example makes use of the \textsf{python} package (|\usepackage{python}|).
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   \begin{quiz}[tags={calculated}]{Example Quiz}
-%   \begin{python}
-% \end{VerbatimOut}
-% \inputminted[gobble=2,frame=topline]{latex}{minted.doc.out}
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   def clozenum_print(pair,op,result):
-%     print(rf"""\begin{{numerical}}
-%   ${pair[0]} {op} {pair[1]} =$\item {result} 
-%   \end{{numerical}}""")
-%   def cloze_print(pair,points):
-%     print(rf"""\begin{{cloze}}[points={points}]{{Arithmetic Quiz 
-%     {(pair[0],pair[1])}}}Solve the following tasks!\\""")
-%     clozenum_print([x,y],"+",x+y)
-%     clozenum_print([x,y],"-",x-y)
-%     clozenum_print([x,y],"*",x*y)
-%     if pair[0]/pair[1] == pair[0]//pair[1]:
-%       clozenum_print([x,y],":",x//y)
-%     print("\end{cloze}")
-%   for x in range(2,5):
-%     for y in range(2,5):
-%       if x > y:
-%         if x/y == x//y:
-%           points=4
-%         else:
-%           points=3  
-%         cloze_print([x,y],points)
-% \end{VerbatimOut}
-% \inputminted[]{python}{minted.doc.out}
-% \begin{VerbatimOut}[gobble=1]{minted.doc.out}
-%   \end{python}
-%   \end{quiz}
-% \end{VerbatimOut}
-% \inputminted[gobble=2,frame=bottomline]{latex}{minted.doc.out}
-% These two codes yield the same XML content.
-% 
-% \section{Known Limitations and Call for Bug Reports}
-% Table~\ref{tab:support-limitations} lists some features supported, limitations, and
-% bugs.
+% \section{Internationalization}
+%
+% This section is intended for authors of \Moodle\ quizzes writing in one or several
+% languages other than English. It seems reasonable to assume that those users have heard
+% of the packages \pkg{babel} or \pkg{polyglossia} (\XeTeX\ or \LuaTeX\ only), that
+% both aim at enforcing language-related rules to \LaTeX\ documents.
+%
+% The contents of the \XML\ file that is generated by \pkg{moodle} depends entirely
+% on the user input and \Moodle's \XML\ syntax: there is little room for \pkg{moodle} to
+% internationalize something here. Instead, the focus of this section  is the \PDF\
+% typesetting that is determined by \pkg{moodle}, where some internalization
+% efforts can be of help.
+%
+% Both \pkg{babel} and \pkg{polyglossia} provide ways of specifiying a language for
+% the document or a part of it. If one of these packages is loaded in the preamble,
+% \pkg{moodle} will automatically load the package \pkg{translator} and rely on it
+% to provide translations of its keys (see Table~\vref{tab:language_keys}) in
+% different languages, with some knowledge on aliases. The package
+% \pkg{translations} does a very similar job and can be loaded in the preamble
+% to serve, if desired, as a replacement for \pkg{translator}.
+%
+% Currently, full-support is provided for English, French, German, Italian, and
+% Spanish. Very limited support is provided for Catalan, Croatian, Czech, Danish, Dutch,
+% Estonian, Finnish, Hungarian, Icelandic, Lithuanian, Norsk, Polish, Portuguese,
+% Romanian, Swedish, and Turkish.
+%
+% Users may define their own translations in the preamble. For instance
+% \begin{quote}
+%   |\AfterEndPreamble{|\\
+%     |  \DeclareTranslation|\marg{babel language name}|{True}{Foo}%|\\
+%     |  \DeclareTranslation|\marg{babel language name}|{False}{Bar}%|\\
+%   |}|
+% \end{quote}
+% Note that, when the package \pkg{translations} is loaded,
+% \cmd{\AfterEndPreamble} must not be used.
+%
+% Contributions to improve or broaden the linguistic support are very welcome.
+%
+% \begin{center}
+% \begin{longtable}{ l p{.55\textwidth} }
+% \caption{\pkg{moodle}'s language keys for internationalization of the \PDF\ typesetting.}
+% \label{tab:language_keys}\\
+% \toprule
+% Key & Context\\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}
+% \endfirsthead
+% \multicolumn{2}{c}%
+% {\tablename\ \thetable\ -- \textit{Continued from previous page}} \\
+% \hline
+% Key & Context\\
+% \cmidrule(lr){1-1}\cmidrule(lr){2-2}
+% \endhead
+% \hline\multicolumn{2}{r}{\textit{Continued on next page}} \\
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% \optn{True} & indicates option ``True'' in a True/False question.\\
+% \optn{False} & indicates option ``False'' in a True/False question.\\
+% \optn{cloze} & tag indicating a ``cloze'' question.\\
+% \optn{description} & tag indicating a ``description'' question.\\
+% \optn{essay} & tag indicating an ``essay'' question.\\
+% \optn{matching} & tag indicating a ``matching'' question.\\
+% \optn{multi} & tag indicating a ``multichoice'' question.\\
+% \optn{numerical} & tag indicating a ``numerical'' question.\\
+% \optn{shortanswer} & tag indicating a ``shortanswer'' question.\\
+% \optn{truefalse} & tag indicating a ``true/false'' question.\\
+% \optn{Shuffle} & tag indicating that options offered will be shuffled in a
+% ``multichoice'' or ``matching'' question.\\
+% \optn{Single} & tag indicating that only one option can be selected in a
+% ``multichoice'' question.\\
+% \optn{Multiple} & tag indicating that several options can be selected in a
+% ``multichoice'' question.\\
+% \optn{marked out of} & tag indicating the weight of the question (maximum
+% number of points), followed by a number.\\
+% \optn{penalty} & tag indicating the penalty factor applied for each wrong
+%  attempt in adaptive mode.\\
+% \optn{tags} & indicates the beginning of a tag list characterizing the
+% question.\\
+% \optn{All-or-nothing} & tag indicating that all correct options must be
+% selected to get credited a good answer.\\
+% \optn{Case-Sensitive} & tag indicating that the case of characters matters
+% for a ``Shortanswer'' question.\\
+% \optn{Case-Insensitive} & tag indicating that the case of characters
+% does not matter for a ``Shortanswer'' question.\\
+% \optn{Drag and drop} & tag indicating that a ``matching'' question relies
+% on the Drag-and-drop plugin.\\
+% \optn{Information for graders} & indicates the beginning of a paragraph
+% where instructions for the graders of an ``essay'' question are given.\\
+% \optn{Response template} & indicates the beginning of a paragraph where
+% the answer template of an ``essay'' question is represented.\\
+% \optn{editor} & tag indicating that, for answering an essay question, an
+% editor with \HTML\ support will be proposed.\\
+% \optn{editorfilepicker} & tag indicating that, for answering an essay question,
+% an editor with \HTML\ support and a file picker will be proposed.\\
+% \optn{plain} & tag indicating that, for answering an essay question, an
+% editor with no markup support will be proposed.\\
+% \optn{monospaced} & tag indicating that, for answering an essay question,
+% an editor with fixed-width font and no markup support will be proposed.\\
+% \optn{noinline} & tag indicating that, for answering an essay question, a file
+% picker will be proposed.\\
+% \optn{Total of marks} & at the end of the quiz, indicates the sum of the
+% weights of all questions, followed by a colon and a number. \\
+% \end{longtable}
+% \end{center}
+%
+% \section{Package Development}\label{sec:dev}
+%
+% \subsection{Feature Requests, Bug Reports, and Contributions}
+%
+% This package is developed as a collaborative project, currently hosted
+% on the Gitlab server instance \url{https://framagit.org/mattgk/moodle}.
+% The project's activity can be monitored there: reported issues, last
+% modifications, \dots
+%
+% Contributions, either bug reports or fixes, are welcome. Users willing to
+% help can either sign-in with an existing \brand{GitHub}, \brand{Gitlab.com}, or
+% \brand{Bitbucket} account or register a new account.
+%
+% Of course, getting in touch with the package maintainer by
+% \href{mailto:guerquin-kernATcrans.org}{email} works as well.
+%
+% The authors have used this package together with a limited number of colleagues
+% for a few semesters of teaching. If other users adopt this package, we fully expect them
+% to find bugs.
+%
+% When experiencing a problem and before reporting it, please check whether
+% or not something similar has already been filed as an issue
+% \href{https://framagit.org/mattgk/moodle/-/issues?scope=all&state=all}{here}.
+% If the problem appears to be new, please report it by following these steps:
+% \begin{enumerate}
+% \item Prepare a \emph{minimal} working example, i.e. a \filenm{.tex} file shrunk down
+% to the strict minimum (loaded packages, code, \dots) while still showing the
+% faulty behavior upon compilation.
+% \item Gather and send the \filenm{*.tex}, \filenm{*.log} and \filenm{*-moodle.xml} files together
+% with an explanation about
+%   \begin{itemize}
+%     \item your local working environment (\TeX\ engine and distribution, platform,
+%           external tools used, \dots),
+%     \item the version of the \Moodle\ instance you are using
+%           (for instance see the file |https://|\meta{server-domain}|/lib/upgrade.txt| )
+%     \item the faulty behavior, and
+%     \item what you expected instead.
+%   \end{itemize}
+% \end{enumerate}
+%
+% \subsection{Known Limitations}
+%
+% When using with pdf\TeX\ for compilation, \pkg{moodle} supports
+% question contents with \acro{ASCII} characters only. The use of
+% non-\acro{ASCII} characters may work in some cases but will most
+% probably yield compilation errors or undesired \XML\ contents.
+%
+% Instead, \pkg{moodle} will work flawlessly when \XeTeX\ and
+% \LuaTeX\ are used to compile \UTF-8 encoded documents.
+%
+% Table~\vref{tab:support-limitations} lists
+% some features supported, limitations, and bugs.
 %\begin{table}[tbp]
 %\centering
 %\begin{threeparttable}[b]
-%\caption{Content enrichment (pictures, equations) support after XML import in Moodle v3.5.7,
+%\caption{Content enrichment (pictures, equations) support after \XML\ import in \Moodle\ v3.5.7,
 % depending on the question type.}
 %\label{tab:support-limitations}
 %\begin{tabular}{lccc}
@@ -1433,23 +2152,23 @@
 % & \multicolumn{3}{l}{XML rendering in\dots}\\\cmidrule(lr){2-4}
 %Question type & Question & Answer & Feedback\\\cmidrule(lr){1-1}\cmidrule(lr){2-2}
 %\cmidrule(lr){3-3}\cmidrule(lr){4-4}
-% \href{https://docs.moodle.org/35/en/Multiple_Choice_question_type}{Multichoice}
+% \href{https://docs.moodle.org/en/Multiple_Choice_question_type}{Multichoice}
 %& yes & yes & yes \\
-% \href{https://docs.moodle.org/35/en/Numerical_question_type}{Numerical}
+% \href{https://docs.moodle.org/en/Numerical_question_type}{Numerical}
 %& yes & no\tnote{1} & yes \\
-% \href{https://docs.moodle.org/35/en/Short-Answer_question_type}{Short Answer}
+% \href{https://docs.moodle.org/en/Short-Answer_question_type}{Short Answer}
 % & yes & no\tnote{1} & yes \\
-% Matching (\href{https://docs.moodle.org/35/en/Matching_question_type}{std})
+% Matching (\href{https://docs.moodle.org/en/Matching_question_type}{std})
 %& yes & no\tnote{2} & no\tnote{3} \\
-% Matching (\href{https://docs.moodle.org/35/en/Drag_and_drop_matching_question_type}{dd})
+% Matching (\href{https://docs.moodle.org/en/Drag_and_drop_matching_question_type}{dd})
 % & yes & yes\tnote{4} & no\tnote{3} \\
-% \href{https://docs.moodle.org/35/en/Essay_question_type}{Essay}
+% \href{https://docs.moodle.org/en/Essay_question_type}{Essay}
 %& yes & yes\tnote{5,6} & yes\tnote{5} \\
-% \href{https://docs.moodle.org/35/en/True/False_question_type}{True/False}
+% \href{https://docs.moodle.org/en/True/False_question_type}{True/False}
 %& yes & no & yes \\
-% \href{https://docs.moodle.org/35/en/Description_question_type}{Description}
+% \href{https://docs.moodle.org/en/Description_question_type}{Description}
 %& yes & $\varnothing$ & yes \\
-%\href{https://docs.moodle.org/35/en/Embedded_Answers_(Cloze)_question_type}{Cloze} &
+%\href{https://docs.moodle.org/en/Embedded_Answers_(Cloze)_question_type}{Cloze} &
 %yes & $\varnothing$& $\varnothing$ \\\cmidrule(lr){1-1}
 %\hspace{1em}Numerical & yes & no\tnote{1} & yes \\
 %\hspace{1em}Short Answer & yes & no\tnote{1} & yes\tnote{7} \\
@@ -1458,258 +2177,189 @@
 %\hspace{1em}Multi (vertical) & yes & yes & yes \\\bottomrule
 %\end{tabular}
 %\begin{tablenotes}
-%\item[1] Moodle prompts the student for an answer and then compares it to the 
+%\item[1] \Moodle\ prompts the student for an answer and then compares it to the
 %solutions provided. This is text-only.
-%\item[2] Moodle uses a dropdown list to let one choose among the possible 
+%\item[2] \Moodle\ uses a dropdown list to let one choose among the possible
 %answers. This forbids either picture inclusion and \LaTeX\ rendering.
-%\item[3] Not supported by Moodle (in this context, answer-specific feedback 
+%\item[3] Not supported by \Moodle\ (in this context, answer-specific feedback
 %represents lots of possible combinations).
-%\item[4] The drag-and-drop-matching plugin seems broken before version 1.6 
-%20190409. Moodle's XML import fails with a \textsf{dmlwriteexception} when 
-%the field content exceeds few hundreds characters. This prevents the inclusion 
+%\item[4] The drag-and-drop-matching plugin seems broken before version 1.6
+%20190409. \Moodle's \XML\ import fails with a \texttt{dmlwriteexception} when
+%the field content exceeds few hundreds characters. This prevents the inclusion
 %of most base64 images and maybe some complicated equations.
-%\item[5] For this question type and in the context of XML generation, the 
-%Answer column represents the ``template" while the Feedback column represents 
-%the ``notes for the grader". Obviously, the grading process is not automatic 
+%\item[5] For this question type and in the context of \XML\ generation, the
+%Answer column represents the ``template" while the Feedback column represents
+%the ``notes for the grader". Obviously, the grading process is not automatic
 %and there is no answer-specific feedback.
-%\item[6] Picture and \LaTeX\ rendering could be done, but only after 
+%\item[6] Picture and \LaTeX\ rendering could be done, but only after
 %submission and only if the keyval ``response format" is set to ``html".
-%\item[7] Moodle only reveals the feedback when hovering the checkmark or X 
+%\item[7] \Moodle\ only reveals the feedback when hovering the checkmark or X
 %mark with the mouse.
 %\end{tablenotes}
 %\end{threeparttable}
 %\end{table}
-% Tables~\ref{tab:diacritical}, \ref{tab:ligatures}, and \ref{tab:other} describe the current
-% state of support special characters, accents and other diacritical marks.
-%\begin{table}[tbp]
-% \centering
-% \caption{Support for diacritical marks 
-% in a UTF8-coded \TeX~document compiled with (pdf)\LaTeX\ (packages 
-% \texttt{inputenc} with option \texttt{utf8} and \texttt{fontenc} with option \texttt{T1}),
-% \LuaLaTeX\ or \XeLaTeX\ (package \texttt{fontspec}).}
-% \label{tab:diacritical}
-% \begin{threeparttable}[t]
-% \begin{tabular}{*{6}{l}}
-% \toprule
-% \multicolumn{4}{l}{Input type} & \multicolumn{2}{l}{Engine support}\\
-% \cmidrule(lr){1-4}\cmidrule(lr){5-6}
-% \multicolumn{2}{l}{Unicode} & \multicolumn{2}{l}{\LaTeX} & \XeLaTeX\ or \LuaLaTeX & (pdf)\LaTeX \\
-% \cmidrule(lr){1-2}\cmidrule(lr){3-4}\cmidrule(lr){5-5}\cmidrule(lr){6-6}
-% \aa & \AA & \verb|\aa| & \verb|\AA| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \`a & \`A & \verb|\`a| & \verb|\`A| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \^a & \^A & \verb|\^a| & \verb|\^A| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \~a & \~A & \verb|\~a| & \verb|\~A| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \'e & \'E & \verb|\'e| & \verb|\'E| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \`e & \`E & \verb|\`e| & \verb|\`E| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \"e & \"E & \verb|\"e| & \verb|\"E| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \^e & \^E & \verb|\^e| & \verb|\^E| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \^i & \^I & \verb|\^i| & \verb|\^I| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \"i & \"I & \verb|\"i| & \verb|\"I| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \~n & \~N & \verb|\~n| & \verb|\~N| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \~o & \~O & \verb|\~o| & \verb|\~O| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \"o & \"O & \verb|\"o| & \verb|\"O| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \^o & \^O & \verb|\^o| & \verb|\^O| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \`u & \`U & \verb|\`u| & \verb|\`U| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \"u & \"U & \verb|\"u| & \verb|\"U| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \^u & \^U & \verb|\^u| & \verb|\^U| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \c{c} & \c{C} & \verb|\c{c}| & \verb|\c{C}| & Unicode and \LaTeX & Unicode and \LaTeX \\
-% \c{s} & \c{S} & \verb|\c{s}| & \verb|\c{S}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \c{t} & \c{T} & \verb|\c{t}| & \verb|\c{T}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \H{o} & \H{O} & \verb|\H{o}| & \verb|\H{O}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \H{u} & \H{U} & \verb|\H{u}| & \verb|\H{U}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \"y & \"Y & \verb|\"y| & \verb|\"Y| & Unicode and \LaTeX & \LaTeX only\\
-% \k{a} & \k{A} & \verb|\k{a}| & \verb|\k{A}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \k{e} & \k{E} & \verb|\k{e}| & \verb|\k{E}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \k{i} & \k{I} & \verb|\k{i}| & \verb|\k{I}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \k{o} & \k{O} & \verb|\k{o}| & \verb|\k{O}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \k{u} & \k{U} & \verb|\k{u}| & \verb|\k{U}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \u{a} & \u{A} & \verb|\u{a}| & \verb|\u{A}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \u{e} & \u{E} & \verb|\u{e}| & \verb|\u{E}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \u{g} & \u{G} & \verb|\u{g}| & \verb|\u{G}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \u{\i} & \u{I} & \verb|\u{\i}| & \verb|\u{I}| & Unicode and \LaTeX & \LaTeX\ only\tnote{1}\\
-% \u{o} & \u{O} & \verb|\u{o}| & \verb|\u{O}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{c} & \v{C} & \verb|\v{c}| & \verb|\v{C}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{d} & \v{D} & \verb|\v{d}| & \verb|\v{D}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{e} & \v{E} & \verb|\v{e}| & \verb|\v{E}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{l} & \v{L} & \verb|\v{l}| & \verb|\v{L}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{n} & \v{N} & \verb|\v{n}| & \verb|\v{N}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{r} & \v{R} & \verb|\v{r}| & \verb|\v{R}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{s} & \v{S} & \verb|\v{s}| & \verb|\v{S}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{t} & \v{T} & \verb|\v{t}| & \verb|\v{T}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \v{z} & \v{Z} & \verb|\v{z}| & \verb|\v{Z}| & Unicode and \LaTeX & \LaTeX\ only\\
-% \bottomrule
-% \end{tabular}
-% \begin{tablenotes}
-%   \item[1] The rendering of |\u{i}| is flawed in (pdf)\LaTeX's traditional output.
-% ^^A \XeLaTeX\ renders correctly |\u{i}|, that is, without a superscript dot.
-% ^^A        Instead, with (pdf)\LaTeX\ the rendering of |\u{i}| is flawed by the
-% ^^A        superposition of the superscript dot and the breve diacritical mark.
-% ^^A        Both engines render |\u{\i}| as expected.
-% \end{tablenotes}
-% \end{threeparttable}
-% \end{table}
 %
-%\begin{table}[tbp]
-% \centering
-% \begin{threeparttable}[t]
-% \caption{Support for ligatures in a UTF8-coded \TeX~document compiled with (pdf)\LaTeX\ (packages 
-% \texttt{inputenc} with option \texttt{utf8}, \texttt{fontenc} with option \texttt{T1}),
-% \LuaLaTeX\ or \XeLaTeX\ (package \texttt{fontspec}).}
-% \label{tab:ligatures}
-% \begin{tabular}{llllll}
-% \toprule
-% \multicolumn{4}{l}{Input type} & \multicolumn{2}{l}{Engine support}\\
-% \cmidrule(lr){1-4}\cmidrule(lr){5-6}
-% \multicolumn{2}{l}{Unicode} & \multicolumn{2}{l}{\LaTeX} & \XeLaTeX \ or \LuaLaTeX& (pdf)\LaTeX \\
-% \cmidrule(lr){1-2}\cmidrule(lr){3-4}\cmidrule(lr){5-6}\cmidrule(lr){6-6}
-% \ae & \AE & \verb|\ae| & \verb|\AE| & Unicode and \LaTeX & \LaTeX\ only\\
-% \oe & \OE & \verb|\oe| & \verb|\OE| & Unicode and \LaTeX & \LaTeX\ only\\
-% \ss & \SS & \verb|\ss| & \verb|\SS| & Unicode and \LaTeX\tnote{1} & \LaTeX\ only\tnote{2}\\
-% \bottomrule
-% \end{tabular}
-% \begin{tablenotes}[b]
-%   \item[1] the Libertine font, used in this documentation and available for instance via the
-%            package |libertine|, defines the glyph \SS. Most fonts do not define this glyph.
-%   \item[2] \LaTeX\ defines the \verb|\SS| macro but (pdf)\LaTeX\ renders it as a doubled capital S.
-% \end{tablenotes}
-% \end{threeparttable}
-% \end{table}
-%
-%\begin{table}[tbp]
-% \centering
-% \begin{threeparttable}[b]
-% \caption{Support for other glyphs and punctuation marks in a UTF8-coded \TeX~document compiled
-% with (pdf)\LaTeX\ (packages \texttt{inputenc} with option \texttt{utf8}, \texttt{fontenc} with
-% option \texttt{T1}), \LuaLaTeX\ or \XeLaTeX\ (package \texttt{fontspec}).}
-% \label{tab:other}
-% \begin{tabular}{llllll}
-% \toprule
-% \multicolumn{4}{l}{Input type} & \multicolumn{2}{l}{Engine support}\\
-% \cmidrule(lr){1-4}\cmidrule(lr){5-6}
-% \multicolumn{2}{l}{Unicode} & \multicolumn{2}{l}{\LaTeX} & \XeLaTeX\ or \LuaLaTeX & (pdf)\LaTeX \\
-% \cmidrule(lr){1-2}\cmidrule(lr){3-4}\cmidrule(lr){5-5}\cmidrule(lr){6-6}
-% \l & \L & \verb|\l| & \verb|\L| & Unicode and \LaTeX & \LaTeX\ only\\
-% \o & \O & \verb|\o| & \verb|\O| & Unicode and \LaTeX & \LaTeX\ only\\
-% « & & \verb|\guillemotleft|\tnote{1} & & Unicode and \LaTeX & \LaTeX\ only\\
-% » & & \verb|\guillemotright|\tnote{1} & & Unicode and \LaTeX & \LaTeX\ only\\
-% ¿ & & \verb|\textquestiondown| & & Unicode and \LaTeX & \LaTeX\ only\\
-% ¡ &  & \verb|\textexclamdown| & & Unicode and \LaTeX & \LaTeX\ only\\
-% \bottomrule
-% \end{tabular}
-% \begin{tablenotes}
-%   \item[1] for the same symbols the package |babel| defines |\flqq| and |\frqq|, and
-%            if loaded with option |french| defines |\og| and |\fg|. These commands
-%            are also supported by \textsf{moodle}.
-% \end{tablenotes}
-% \end{threeparttable}
-% \end{table}
-%
-% Some features of Moodle quizzes have not yet been implemented in \textsf{moodle}.
+% Some features of \Moodle\ quizzes have not yet been implemented in \pkg{moodle}.
 % Here is a non-exhaustive list.
 % \begin{itemize}
-%   \item Moodle's feature of designating feedback for correct, 
+%   \item \Moodle's feature of designating feedback for correct,
 %         partially correct, and incorrect answers.
-%^^A   \item Calculated questions; that is, automatically generated numerical questions 
+%^^A   \item Calculated questions; that is, automatically generated \env{numerical} questions
 %^^A         using randomly chosen numbers.
 %   \item Hints
-%   \item Units handling in numerical questions
+%   \item Units handling in \env{numerical} questions
 % \end{itemize}
-% The authors have used this package together with a limited number of colleagues
-% for a few semesters of teaching. If other users adopt this package, we fully expect them
-% to find bugs. If you run into a problem, please have a look at Section~\ref{sec:dev}.
-% 
-% \section{Compatibility}
-% This package has been originally written for and tested with the implementation of 
-% Moodle 2.9 run by Moodlerooms for St.~Norbert College in January 2016.
-% Since then, it has been successfully combined with Moodle 3.5.
-% Future versions of this package might include some support for
-% specifying your version of Moodle in the |.tex| file to help ensure compatibility.
-% 
-% As the ultimate purpose of this package is the generation of XML files,
-% future versions of \textsf{moodle} will attempt to maintain backwards 
-% compatibility with earlier versions regarding the XML output, apart from
+%
+% \subsection{Compatibility}
+% This package has been originally written for and tested with the implementation of
+% \Moodle\ 2.9 run by Moodlerooms for St.~Norbert College in January 2016.
+% Since then, it has been successfully combined with \Moodle\ 3.5.
+%
+% The package option \optn{LMS} lets you specify the targeted \Moodle\ version
+% and helps ensuring compatibility.
+%
+% As the ultimate purpose of this package is the generation of \XML\ files,
+% future versions of \pkg{moodle} will attempt to maintain backwards
+% compatibility with earlier versions regarding the \XML\ output, apart from
 % bug fixes.
-% Backwards compatibility of the PDF output is not yet guaranteed, however,
-% in case the author or users discover better ways for the PDF to display 
-% the underlying XML data to be proofread.
-% 
-% In other words, compiling your current |.tex| file with a future version 
-% of \textsf{moodle} should produce the same XML file it does now 
+% Backwards compatibility of the \PDF\ output is not yet guaranteed, however,
+% in case the author or users discover better ways for the \PDF\ to display
+% the underlying \XML\ data to be proofread.
+%
+% In other words, compiling your current \filenm{.tex} file with a future version
+% of \pkg{moodle} should produce the same \XML\ file it does now
 % (apart from bug fixes),
 % but it might produce a more informative, and hence different,
-% PDF output.
-% 
-% 
-% \section{Unrelated Tip: Quality of Moodle \TeX\ Images}
-% This has nothing to do with \textsf{moodle}, but is a Frequently Asked Question
+% \PDF\ output.
+%
+% \subsection{Unrelated Tip: Quality of \Moodle\ \TeX\ Images}
+% This has nothing to do with \pkg{moodle}, but is a Frequently Asked Question
 % in is own right.
-% On some servers, at least, Moodle's default ``\TeX\ Filter'' for 
+% On some servers, at least, \Moodle's default ``\TeX\ Filter'' for
 % displaying mathematical notation is of abysmally poor quality, rending mathematics
-% as low-resolution PNG's.  One solution that has worked for me is to go 
+% as low-resolution \PNG's.  One solution that has worked for me is to go
 % to ``Course Administration $\to$ Filters,'' turn ``\TeX\ Notation'' \emph{off},
 % but turn ``MathJax'' \emph{on}.  This forces \TeX\ code to be rendered by MathJax
-% instead of Moodle, producing much higher-quality results.
-% 
-% \clearpage
-% \section{Package Development}\label{sec:dev}
-% This package is developed as a collaborative project, currently hosted
-% on the Gitlab server instance \url{https://framagit.org/mattgk/moodle}.
-% The project's activity can be monitored there: reported issues, last
-% modifications, \dots
+% instead of \Moodle, producing much higher-quality results.
 %
-% Contributions, either bug reports or fixes, are welcome. Users willing to
-% help can either sign-in with an existing \textsf{GitHub}, \textsf{Gitlab.com}, or
-% \textsf{Bitbucket} account or register a new account.
-%
-% Of course, getting in touch with the package maintainer by
-% \href{mailto:guerquin-kernATcrans.org}{email} works as well.
-%
-% When experiencing a problem and before reporting it, please check whether
-% or not something similar has already been filed as an issue
-% \href{https://framagit.org/mattgk/moodle/-/issues?scope=all&state=all}{here}.
-% If the problem appears to be new, please report it by following these steps:
-% \begin{enumerate}
-% \item Prepare a \emph{minimal} working example, i.e. a |.tex| file shunk down
-% to the strict minimum (loaded packages, code, \dots) while still showing the
-% faulty behavior upon compilation.
-% \item Gather and send the |*.tex|, |*.log| and |*-moodle.xml| files together
-% with an explanation about
-%   \begin{itemize}
-%     \item your working environment (\TeX\ engine and distribution, operating
-%        system, \dots),
-%     \item the faulty behavior, and
-%     \item what you expected instead.
-%   \end{itemize}
-% \end{enumerate}
-% 
 % ^^A\clearpage
 % \changes{v0.5}{2016/01/05}{Initial version}
-% \changes{v0.6}{2019/02/18}{Bux-fixing release}
+% \changes{v0.6}{2019/02/18}{Bug-fixing release}
 % \changes{v0.7}{2020/07/09}{Feature extensions}
 % \changes{v0.8}{2021/01/04}{Bug fixes and feature extensions}
 % \changes{v0.9}{2021/02/07}{Bug fixes and feature extensions}
-% \begin{changelog}[title={Version History},author={Matthieu Guerquin-Kern}]
+% \changes{v1.0}{2023/01/28}{Bug fixes and feature extensions}
+% \begin{changelog}[title={Version History},sectioncmd=\section*,author={Matthieu Guerquin-Kern}]
+% ^^A \begin{version}[version=\fileversion,]^^Adate=]
+% ^^A \end{version}
+% \begin{version}[version=1.0,date=2023-01-28]
+%     \added
+% ^^A      \item A section describing the use of templates for generating large number
+% ^^A            of quizzes has been added (courtesy of Colin Caprani).
+%       \item For templating purposes, in \optn{draft} mode, general TeX code can
+%             now be used in items and |tolerance| key of numerical questions
+%             (courtesy of Colin Caprani).
+%       \item Support for the \env{quote} and \env{quotation} environments in the HTML  
+%             conversion process (courtesy of Gerald Teschl).
+%       \item Experimental package option \optn{pluginfile} mimics the way
+%             \Moodle\ embeds pictures in the \XML.
+%       \item Answer box for Essay questions with \optn{handout}.
+%       \item Key-value package option \optn{LMS} to target a specific version
+%             of \Moodle.
+%       \item Support for more text mode diacritic and horizontal spacing
+%             commands.
+%       \item Macros \cmd{\moodleversion} and \cmd{\moodledate} are defined.
+%       \item Experimental package option \optn{samepage} to avoid splitting
+%             questions across multiple pages.
+%       \item \optn{sanction} key to set default mark for incorrect answers.
+%       \item Started the internationalization of the package based on
+%             \pkg{translator} (optionally \pkg{translations}). English,
+%             French, German, Italian, and Spanish
+%             are fully supported (with help from J\"urgen Vollmer for German
+%             and Romano Giannetti for Italian and Spanish). Contributions are welcome.
+%       \item Warn user of the \pkg{babel} package set for Turkish
+%             that using the shorthands will not play well with \pkg{moodle}.
+%       \item Support for \cmd{\i} in conversion to \HTML.
+%       \item \SVG\ option support for Windows (courtesy of Wolf M\"uller).
+%     \changed
+%       \item In Cloze \env{multi} subquestions, the default mode is
+%             \optn{inline} when only one answer is to be selected and
+%             \optn{vertical} when several answers can be selected.
+%       \item Single straight quotes (apostrophe) in math mode are passed as-is
+%             to the \XML\ (with help from Keno Wehr).
+%       \item Empty groups |{}| in math-mode are passed as-is to the \XML\
+%             (with help from Keno Wehr).
+%       \item Inside \env{cloze} subquestions, \optn{points} are forced to the
+%             nearest positive integer. ^^AA warning is issued when the user setting
+%             ^^Ais modified.
+%       \item \XML\ stamp exposes compilation time.
+%       \item Labels of proposed answers now following \Moodle's convention
+%             (\emph{1., 2., \dots}) in the \PDF\ typesetting of \env{multi} questions.
+%       \item Automatic sanction mechanism for incorrect choices in \env{multi}
+%             questions with multiple answers allowed. Now applies also inside
+%             \env{cloze} questions.
+%       \item In \env{cloze} subquestions, non-integer fractions are rounded.
+%       \item Rewording of some indications in the \PDF, related to internationalization.
+%       \item The answers of \env{matching} questions are now converted to \HTML\
+%              (accents and \cmd{\htmlonly} in mind).
+%     \removed
+%       \item Support for non-\acro{ASCII} characters abandoned when compiling
+%             with \prog{pdflatex}.
+%     \fixed
+%       \item In math-mode, \cmd{\underline} is no longer translated to \HTML.
+%       \item Preexisting pictures no longer get deleted when including graphics
+%             without specifying the extension (courtesy of Colin Caprani).
+%       \item In answers of \env{matching} questions, some \TeX\ macros will not
+%             break compilation. A problem with curly braces persists.
+%       \item The cloze subquestions now inherit \optn{points} set at
+%             the higher levels.
+%       \item Option \optn{single=false} now works in Cloze \env{multi} questions.
+%       \item Undesired trailing spaces are removed from offered answers in
+%             \env{matching} question.
+%       \item Compatibility with \pkg{siunitx} version 3.
+%       \item Compatibility with \pkg{minted} starting from 2021/12/24 v2.6.
+%       \item Different issues with graphics handling on Windows (\prog{magick},
+%             \prog{del}, \prog{move},\dots).
+%       \item Symbols |<| and |>| are translated to \HTML\ equivalents, also in
+%             text-mode.
+%       \item Warning german-writing and (Xe$\mid$Lua)\TeX\ users about troubles
+%             caused by text-mode umlauts.
+%       \item In \env{cloze} subquestions items and outside math environments,
+%             the equal symbol (|=|) no longer interferes with the Cloze syntax.
+%       \item A pagebreak occuring inside cloze shortanswers would reset page numbers.
+%       \item The redefinition of the \env{description} environment is limited to
+%             the scope of the \env{quiz}.
+%       \item PDF typesetting of matching answers (line breaks, repeated matches).
+%       \item Symbols \cmd{\%} found inside math mode are escaped for \HTML.
+%       \item The \optn{fraction} keys specified inside \env{cloze} questions are
+%             forced to integer values as required by \Moodle's \XML\ format.
+%       \item True/False no longer broken when \pkg{hyperref} is loaded.
+%       \item Tolerances in \env{numerical} answers now correctly displayed in \PDF.
+%       \item Warning for users running a too old version of \pkg{graphics}.
+%       \item In the code included with \pkg{verbatim}, \pkg{fancyvrb}, or
+%             \pkg{fvextra}, characters that matter for \HTML\ are escaped.
+%   \end{version}
 %   \begin{version}[version=0.9,date=2021-02-07]
 %     \added
-%       \item Support for \href{https://docs.moodle.org/310/en/All_or_nothing_multiple_choice_question_type}
+%       \item Support for \href{https://docs.moodle.org/en/All_or_nothing_multiple_choice_question_type}
 %             {all-or-nothing multiple choice} questions.
-%       \item Support for the ogonek diacritical mark via |\k|\marg{\dots}.
-%       \item Warn user of the \texttt{babel} package set for a German-related language
-%             that using the character |"| will not play well with \textsf{moodle}.
-%       \item Support for \textsf{babel} commands related to German quotes.
+%       \item Support for the ogonek diacritical mark via \cmd{\k}\marg{\dots}.
+%       \item Warn user of the \pkg{babel} package set for a German-related language
+%             that using the character |"| will not play well with \pkg{moodle}.
+%       \item Support for \pkg{babel} commands related to German quotes.
 %       \item Support for en-dash (--) outside of math mode.
-%       \item Support for |\%| in conversion to HTML.
-%       \item Command |\htmlonly[]{}| to pass HTML contents directly to the XML file.
+%       \item Support for \cmd{\%} in conversion to \HTML.
+%       \item Command |\htmlonly[]{}| to pass \HTML\ contents directly to the \XML\ file.
 %     \changed
 %       \item An error is issued when a graphics conversion step fails.
-%       \item Irrelevant points are no longer written at the cloze question level in PDF and XML.
-%       \item The total number of marks is shown in the PDF at the end of each quiz.
-%       \item The |tags| key can now be used to specify a comma-separated list of tags.
+%       \item Irrelevant points are no longer written at the \env{cloze} question level in \PDF\ and \XML.
+%       \item The total number of marks is shown in the \PDF\ at the end of each quiz.
+%       \item The \optn{tags} key can now be used to specify a comma-separated list of tags.
 %     \fixed
-%       \item Answer text of shortanswer questions is converted to HTML.
-%       \item Paragraph breaks in multi and essay items no longer break compilation.
-%       \item Question text in Essays was not shown in PDF file.
-%       \item Commands |\textsc|, |\underline|, |\url|, and |\href| yielded HTML code with
+%       \item Answer text of \env{shortanswer} questions is converted to \HTML.
+%       \item Paragraph breaks in \env{multi} and \env{essay} items no longer break compilation.
+%       \item Question text in Essays was not shown in \PDF\ file.
+%       \item Commands \cmd{\textsc}, \cmd{\underline}, \cmd{\url}, and \cmd{\href} yielded \HTML\ code with
 %             inadequate double quotation marks.
 %       \item Broken base64-encoding pipeline for images under Windows (thanks to Andreas Vohns).
 %       \item Repeated single right quotation marks no longer merged in math mode
@@ -1717,64 +2367,64 @@
 %   \end{version}
 %   \begin{version}[version=0.8,date=2021-01-04]
 %     \added
-%       \item Support for inclusion of GIF pictures.
-%       \item Added package option |svg| to avoid the rasterization of vector graphics.
-%       \item New macro |\setsubcategory| to define subcategories, reflected in PDF and XML.
-%       \item Package option |handout| for sharing PDF with students.
+%       \item Support for inclusion of \GIF\ pictures.
+%       \item Added package option \optn{svg} to avoid the rasterization of vector graphics.
+%       \item New macro \cmd{\setsubcategory} to define subcategories, reflected in \PDF\ and \XML.
+%       \item Package option \optn{handout} for sharing \PDF\ with students.
 %       \item Extensions can be omitted when including pictures.
 %       \item Description question type.
-%       \item \LuaLaTeX\ is now supported (and recommended for UTF8-coded sources).
+%       \item \LuaLaTeX\ is now supported (and recommended for \UTF-8 coded sources).
 %       \item Examples of ways to reproduce the behavior of calculated questions.
 %       \item Command to trigger the automatic recording of new commands.
-%       \item Mechanism to match |fraction| key to values accepted by Moodle.
-%       \item A |fractiontol| key to control the tolerance in this mechanism.
+%       \item Mechanism to match \optn{fraction} key to values accepted by \Moodle.
+%       \item A \optn{fractiontol} key to control the tolerance in this mechanism.
 %       \item Support for inverted punctuation marks |¿| and |¡|.
-%       \item Support for |\_| and |\textbackslash|.
-%       \item Support for the wildcard character as an answer in numerical questions.
+%       \item Support for \cmd{\_} and \cmd{\textbackslash}.
+%       \item Support for the wildcard character as an answer in \env{numerical} questions.
 %     \changed
-%       \item Template of Essay questions is now shown in PDF.
-%       \item The macro |\setcategory| is reflected by a new section in PDF.
-%       \item In matching questions, warnings are raised if the number of items is insufficient.
-%       \item Improved display of matching questions in PDF.
-%       \item The package \textsf{iftex} is now required.
-%       \item An error is thrown when |fraction| is set to an invalid value.
-%       \item In numerical questions, the tolerance can be set in exponent form.
-%       \item Nicer PDF rendering of numbers in numerical questions if \textsf{siunitx} is loaded.
-%       \item Included PNG and JPEG files are now directly converted to base64.
+%       \item Template of Essay questions is now shown in \PDF.
+%       \item The macro \cmd{\setcategory} is reflected by a new section in \PDF.
+%       \item In \env{matching} questions, warnings are raised if the number of items is insufficient.
+%       \item Improved display of \env{matching} questions in \PDF.
+%       \item The package \pkg{iftex} is now required.
+%       \item An error is thrown when \optn{fraction} is set to an invalid value.
+%       \item In \env{numerical} questions, the tolerance can be set in exponent form.
+%       \item Nicer \PDF\ rendering of numbers in \env{numerical} questions if \pkg{siunitx} is loaded.
+%       \item Included \PNG\ and \acro{JPEG} files are now directly converted to base64.
 %     \fixed
-%       \item TeX's inline math (|$...$|) can now contain escaped dollar signs (|\$|).
-%       \item Closing braces escaped in cloze subquestions outside math environment.
-%       \item The scope of the |tolerance| key is now respected.
+%       \item TeX's inline math (\texttt{$...$}) can now contain escaped dollar signs (\cmd{\$}).
+%       \item Closing braces escaped in \env{cloze} subquestions outside math environment.
+%       \item The scope of the \optn{tolerance} key is now respected.
 %   \end{version}
 %   \begin{version}[version=0.7,date=2020-09-06]
 %     \added
 %       \item Support for inclusion of verbatim code.
-%       \item Package option \texttt{tikz}.
-%       \item Support for |\"Y| and |\"y|.
-%       \item New commands converted to XML.
-%       \item Adding a stamp comment in XML, package option offered to disable
+%       \item Package option \optn{tikz}.
+%       \item Support for \cmd{\"Y} and \cmd{\"y}.
+%       \item New commands converted to \XML.
+%       \item Adding a stamp comment in \XML, package option offered to disable
 %             this behavior.
-%       \item Support for the |\tikz| command.
+%       \item Support for the \cmd{\tikz} command.
 %       \item A different directory can be specified for picture inclusion.
-%       \item Warn user of the \texttt{babel} package set for french that autospacing
+%       \item Warn user of the \pkg{babel} package set for French that autospacing
 %             must be deactivated.
 %       \item Square bracket math delimiters are recognized and converted properly.
 %       \item Support of breve and caron diacritical marks.
 %     \changed
-%       \item In multi with multiple answers allowed, choosing all options no longer
+%       \item In \env{multi} with multiple answers allowed, choosing all options no longer
 %             results in a good grade. An automatic penalty mechanism is introduced.
 %             Can be overridden by manually setting fractions.
 %     \removed
-%       \item Irrelevant \texttt{penalty} tag in cloze subquestions.
+%       \item Irrelevant \optn{penalty} tag in \env{cloze} subquestions.
 %     \fixed
-%       \item Non-integer fractions can now be specified in cloze subquestions.
-%       \item Significantly squeeze PNG images size by skipping ancillary data.
+%       \item Non-integer fractions can now be specified in \env{cloze} subquestions.
+%       \item Significantly squeeze \PNG\ images size by skipping ancillary data.
 %       \item Enumerate or itemize environment can now be nested in question items.
 %       \item Several pictures can be included in a question without being mixed
-%             in the XML file.
+%             in the \XML\ file.
 %       \item Management and rendering of fraction in questions.
 %       \item Correctly handling a \LaTeX\ command starting the last item of a question.
-%       \item Closing braces escaped in cloze subquestions. This allows \LaTeX\
+%       \item Closing braces escaped in \env{cloze} subquestions. This allows \LaTeX\
 %             equations or images to be included.
 %       \item Image inclusion with macOS.
 %   \end{version}
@@ -1782,48 +2432,52 @@
 %     \added
 %       \item New package options to set section or subsection at the quiz level.
 %       \item True/False question type is now supported.
-%       \item Moodle tags can now be specified for questions (and rendered in PDF
+%       \item \Moodle\ tags can now be specified for questions (and rendered in \PDF\
 %             as well).
-%       \item In cloze questions, the \texttt{multiresponse} subquestion type is
+%       \item In \env{cloze} questions, the multiresponse subquestion type is
 %             now supported.
 %     \removed
-%       \item External dependency on \texttt{OpenSSL}.
-%       \item Irrelevant tags were written in XML for matching questions.
+%       \item External dependency on \prog{OpenSSL}.
+%       \item Irrelevant tags were written in \XML\ for \env{matching} questions.
 %     \fixed
 %       \item \TikZ\ externalization now works when using \XeLaTeX.
 %       \item It is now possible to set points manually among several correct
 %             answers in multichoice questions.
-%       \item General feedbacks can now contain backslashes.
+%       \item General feedback can now contain backslashes.
 %       \item Several quizzes can now be defined in a single source file, each
-%             specifying a category for Moodle's question bank.
-%       \item Correct encoding information is now written in XML depending on
+%             specifying a category for \Moodle's question bank.
+%       \item Correct encoding information is now written in \XML\ depending on
 %             the \LaTeX\ compiler used.
 %   \end{version}
 %   \begin{version}[version=0.6a,date=2019-06-21]
 %     \added
-%       \item \XeLaTeX\ is now recommended when using UTF8-encoded sources (support
+%       \item \XeLaTeX\ is now recommended when using \UTF-8 encoded sources (support
 %             of accents).
-%       \item Feedbacks are now displayed in the PDF file produced.
-%       \item The \texttt{optipng} utility is used to reduce the size
-%             of images embedded in the XML file.
-%       \item Question options and settings are now displayed in the PDF file
+%       \item Feedbacks are now displayed in the \PDF\ file produced.
+%       \item The \prog{OptiPNG} utility is used to reduce the size
+%             of images embedded in the \XML\ file.
+%       \item Question options and settings are now displayed in the \PDF\ file
 %       \item Supporting more \LaTeX\ macros for symbols and accents (mostly
 %             diacritical marks and ligatures).
 %       \item Introduce shuffle options in cloze-multi subquestions.
-%       \item Package option \texttt{final}.
+%       \item Package option \optn{final}.
 %     \changed
 %       \item In draft mode, \TikZ\ externalization is no longer triggered.
 %     \fixed
 %       \item In the different question types, the feedback fields are now converted
-%             for HTML allowing \LaTeX\ equation and images.
+%             for \HTML\ allowing \LaTeX\ equations and images.
 %       \item Documentation improvements (limitations and previously undocumented
 %             features).
 %   \end{version}
 %   \shortversion{version=0.5,date=2016-01-05,simple,changes=Initial version,author={Anders O.F. Hendrickson}}
 % \end{changelog}
+% \addcontentsline{toc}{section}{Version History}%
+% \PrintIndex
+% \addcontentsline{toc}{section}{Index}%
+% \StopEventually{%
+%^^A \PrintChanges
+% }
 %
-% \StopEventually{}
-%
 % \section{Implementation}
 % \subsection{Packages, Options, and Utilities}
 %    \begin{macrocode}
@@ -1836,18 +2490,36 @@
 \newif\ifmoodle at section
 \newif\ifmoodle at subsection
 \newif\ifmoodle at numbered
+\newif\ifmoodle at international
+\newif\ifmoodle at feedbackLeft% contribution of Juergen Vollmer, 2021-03-05
+\newif\ifmoodle at samepage% contribution of Romano Giannetti, 2021-03-07
+\newif\ifmoodle at pluginfile%
 
+%% Moodle version
+\RequirePackage{xkeyval}%For key-handling
+\newcount\moodle at LMSmajor% major version number of the LMS targeted
+\newcount\moodle at LMSminor% minor version number of the LMS targeted
+
 %%DECLARATION OF OPTIONS
-\DeclareOption{draft}{\moodle at draftmodetrue}
-\DeclareOption{handout}{\moodle at handouttrue}
-\DeclareOption{final}{\moodle at draftmodefalse}
-\DeclareOption{nostamp}{\moodle at stampmodefalse}
-\DeclareOption{tikz}{\moodle at tikztrue}
-\DeclareOption{svg}{\moodle at svgtrue}
-\DeclareOption{section}{\moodle at sectiontrue\moodle at numberedtrue}
-\DeclareOption{section*}{\moodle at sectiontrue\moodle at numberedfalse}
-\DeclareOption{subsection}{\moodle at sectionfalse\moodle at numberedtrue}
-\DeclareOption{subsection*}{\moodle at sectionfalse\moodle at numberedfalse}
+\DeclareOptionX{draft}{\moodle at draftmodetrue}%
+\DeclareOptionX{handout}{\moodle at handouttrue}%
+\DeclareOptionX{final}{\moodle at draftmodefalse}%
+\DeclareOptionX{nostamp}{\moodle at stampmodefalse}%
+\DeclareOptionX{tikz}{\moodle at tikztrue}%
+\DeclareOptionX{svg}{\moodle at svgtrue}%
+\DeclareOptionX{section}{\moodle at sectiontrue\moodle at numberedtrue}%
+\DeclareOptionX{section*}{\moodle at sectiontrue\moodle at numberedfalse}%
+\DeclareOptionX{subsection}{\moodle at sectionfalse\moodle at numberedtrue}%
+\DeclareOptionX{subsection*}{\moodle at sectionfalse\moodle at numberedfalse}%
+\DeclareOptionX{feedbackleft}{\moodle at feedbackLefttrue}% contribution of Juergen Vollmer, 2021-03-05
+\DeclareOptionX{feedbackright}{\moodle at feedbackLeftfalse}% default
+\DeclareOptionX{samepage}{\moodle at samepagetrue}% contribution of Romano Giannetti, 2021-03-07
+\DeclareOptionX{LMS}[0.0]{%
+  \filename at parse{#1}%
+  \moodle at LMSmajor=\filename at base
+  \moodle at LMSminor=\filename at ext
+}%
+\DeclareOptionX{pluginfile}{\moodle at pluginfiletrue}%
 
 \moodle at draftmodefalse
 \moodle at handoutfalse
@@ -1857,16 +2529,27 @@
 \moodle at svgfalse
 \moodle at subsectiontrue
 \moodle at numberedfalse
+\moodle at feedbackLeftfalse% contribution of Juergen Vollmer, 2021-03-05
+\moodle at samepagefalse% contribution of Romano Giannetti, 2021-03-07
+\moodle at pluginfilefalse
 
-\ProcessOptions
+\ProcessOptionsX*% the star allows to inherit 'draft' and 'final' from the class
 
+\ifmoodle at samepage
+    \def\moodle at begin@samepage{\minipage[t]{\linewidth}}
+    \def\moodle at end@samepage{\endminipage\vskip 0pt plus 50pt\relax}
+\else
+    % defining to relax is safer versus adding spurious spaces
+    \def\moodle at begin@samepage{\relax}
+    \def\moodle at end@samepage{\relax}
+\fi
+
 \RequirePackage{environ} %To be able to take environment body as a macro argument
-\RequirePackage{xkeyval} %For key-handling
 \RequirePackage{amssymb} %For \checkmark symbol
 %\RequirePackage{trimspaces} %To remove extra spaces from strings (loaded by environ)
 \@ifpackageloaded{iftex}{}{\RequirePackage{iftex}}
 % iftex already required by recent versions of ifplatform. Needed to know:
-%     1) whether we can convert output from PDF to PNG (ifpdf), 
+%     1) whether we can convert output from PDF to \PNG\ (ifpdf),
 %     2) when output pdf is latin1-encoded (ifpdf)
 %     3) when output xml is utf8-encoded (if?tex)
 \@ifundefined{ifeTeX}{% version of 'iftex' prior to November 2019.
@@ -1878,11 +2561,12 @@
   \fi
 }
 \RequirePackage{etoolbox}%List management
-\RequirePackage{xpatch}  %To patch commands easily in HTML mode
+\RequirePackage{xpatch}  %To patch commands easily in \HTML\ mode
 \RequirePackage{array}   %For formatting tables in the LaTeX mode of Clozes
 \RequirePackage{ifplatform} % To choose Ghostscript commands
 \@ifundefined{ifpdf}{\RequirePackage{ifpdf}}{}% old iftex would not define the conditional
 \RequirePackage{shellesc} %Luatex-compatible way of getting system access
+\RequirePackage{readprov} %To gather information on the package (version, date, ...)
 \RequirePackage{fancybox} %For fancy LaTeX tags
 \RequirePackage{getitems} %To gather the header and items
 \ifmoodle at handout
@@ -1892,6 +2576,10 @@
   \RequirePackage{graphicx} %To include graphics
 \fi
 
+\GetFileInfo{moodle.sty}%
+\edef\moodledate{\filedate}%
+\edef\moodleversion{\fileversion}%
+
 \let\xa=\expandafter
 \def\@star{*}%
 \def\@hundred{100}%
@@ -1903,12 +2591,12 @@
 % Taken from https://tex.stackexchange.com/questions/47576/combining-ifxetex-and-ifluatex-with-the-logical-or-operation
 \@ifundefined{ifTUTeX}{
   \newif\ifTUTeX % a new conditional starts as false
-  \ifnum 0\ifXeTeX 1\fi\ifLuaTeX 1\fi>0%
+  \ifnum 0\ifXeTeX 1\fi\ifLuaTeX 1\fi>0\relax
     \TUTeXtrue
   \fi
 }{}%
 \newif\ifpdfoutput % a new conditional starts as false
-\ifnum 0\ifTUTeX 1\fi\ifPDFTeX\ifpdf 1\fi\fi>0%
+\ifnum 0\ifTUTeX 1\fi\ifPDFTeX\ifpdf 1\fi\fi>0\relax
    \pdfoutputtrue
 \fi
 %    \end{macrocode}
@@ -1942,7 +2630,7 @@
 
 \jobnamewithsuffixtomacro{\outputfilename}{-moodle.xml}
 %    \end{macrocode}
-% Next, we create macros to open and close the Moodle XML file
+% Next, we create macros to open and close the Moodle \XML\ file
 % we will be writing.
 %    \begin{macrocode}
 \newwrite\moodle at outfile
@@ -1959,7 +2647,17 @@
     \fi
   \fi
   \ifmoodle at stampmode
-    \def\moodle at stamp{This file was generated on \the\year-\two at digits\month-\two at digits\day}
+    \def\moodle at stamp{This is a question bank made for Moodle }
+    \ifnum\the\moodle at LMSmajor\the\moodle at LMSminor=\z@\else
+      \g at addto@macro{\moodle at stamp}{\the\moodle at LMSmajor.\the\moodle at LMSminor.\space}
+    \fi
+    \writetomoodle{<!-- \moodle at stamp -->}%
+    \newcount\hour\hour=\time
+    \divide\hour by 60\relax
+    \newcount\minute\minute=\hour
+    \multiply\minute by -60\relax
+    \advance\minute by \time\relax
+    \def\moodle at stamp{It was generated on \the\year-\two at digits\month-\two at digits\day\space \the\hour:\the\minute}
     \ifPDFTeX % pdflatex or latex
       \ifpdf % pdflatex
         \g at addto@macro{\moodle at stamp}{ by pdfLaTeX }%
@@ -1977,10 +2675,10 @@
         \fi
       \fi
     \fi
+    \writetomoodle{<!-- \moodle at stamp running -->}%
+    \def\moodle at stamp{on \platformname}%
+    \g at addto@macro{\moodle at stamp}{ with the package moodle \moodleversion\space (\moodledate) }%
     \writetomoodle{<!-- \moodle at stamp -->}%
-    \def\moodle at stamp{running on \platformname}%
-    \g at addto@macro{\moodle at stamp}{ with the package moodle v0.9 }%
-    \writetomoodle{<!-- \moodle at stamp -->}%
   \fi
   \immediate\write\moodle at outfile{}%
   \writetomoodle{<quiz>}%
@@ -1991,30 +2689,31 @@
   \immediate\closeout\moodle at outfile
 }%
 %    \end{macrocode}
-% 
-% To both make this |.sty| file and the XML output more readable,
+%
+% To both make this \filenm{.sty} file and the \XML\ output more readable,
 % we create a mechanism for writing to the output file with indents.
-% The macro |\calculateindent|\marg{$n$} globally defines 
+% The macro |\calculateindent|\marg{$n$} globally defines
 % |\moodle at indent| to be a string of \meta{$n$} |\otherspace|'s.
 %    \begin{macrocode}
+\newcount\moodle at indentnum
 \def\calculateindent#1{%
   \bgroup
-    \count0=\number#1\relax
+    \moodle at indentnum=\number#1\relax
     \gdef\moodle at indent{}%
     \calculateindent at int
   \egroup
 }%
 \def\calculateindent at int{%
-  \ifnum\count0>0\relax
+  \ifnum\moodle at indentnum>0\relax
     \g at addto@macro{\moodle at indent}{\otherspace}%
-    \advance\count0 by -1\relax
+    \advance\moodle at indentnum by -1\relax
     \expandafter
     \calculateindent at int
   \fi
 }%
 %    \end{macrocode}
-% Now the command |\writetomoodle|\oarg{n}\marg{stuff} adds the line 
-% ``\meta{stuff}'' to the XML file
+% Now the command |\writetomoodle|\oarg{n}\marg{stuff} adds the line
+% ``\meta{stuff}'' to the \XML\ file
 % preceded by an indent of \meta{n} spaces.
 % Note that this command |\edef|'s its second argument.
 %    \begin{macrocode}
@@ -2029,7 +2728,7 @@
 }%
 %    \end{macrocode}
 % We now create the main |quiz| environment that will contain
-% the questions we write.  It outputs to XML as a |<question type="category">| tag.
+% the questions we write.  It outputs to \XML\ as a |<question type="category">| tag.
 %    \begin{macrocode}
 {\catcode`\$=12\catcode`\ =12% in this context we cannot indent with spaces...
 \gdef\moodle at write@category at xml#1{%
@@ -2044,7 +2743,8 @@
 }{}%
 }}%
 \newcommand*\@enumeratename{enumerate}%
-\newdimen\moodle at totalmarks \moodle at totalmarks=0pt%
+\newdimen\moodle at totalmarks
+\gdef\moodle at currentcategory{}%
 \newenvironment{quiz}[2][]{%
   \setkeys{moodle}{#1}%
   \gdef\setcategory##1{%
@@ -2069,7 +2769,7 @@
         \subsection*{##1}%
       \fi
     \fi
-    \begin{enumerate}%
+    \begin{enumerate}\renewcommand\labelenumi{(\theenumi)}%
   }%
   \gdef\setsubcategory##1{%
     \def\@noitemerr{}%\@latex at warning{Empty question list}
@@ -2088,17 +2788,18 @@
         \subsubsection*{##1}%
       \fi
     \fi
-    \begin{enumerate}%
+    \begin{enumerate}\renewcommand\labelenumi{(\theenumi)}%
   }%
   \setcategory{#2}%
+   \moodle at totalmarks=0pt%
 }{%
   \end{enumerate}%
-  \emph{Total of marks: \strip at pt\moodle at totalmarks}%
+  \emph{\GetTranslation{Total of marks}: \strip at pt\moodle at totalmarks}%
   \let\setcategory\relax
   \let\setsubcategory\relax
 }%
 
-%    \end{macrocode}                       
+%    \end{macrocode}
 % The next utility takes a single macro control sequence |#1|,
 % and allows that macro's current value to persist
 % after the next |\egroup|, |}|, or |\endgroup|.
@@ -2107,17 +2808,17 @@
   \xa\xa\xa\gdef\xa\xa\csname moodle at remember@\string#1\endcsname\xa{\xa\def\xa#1\xa{#1}}%
   \xa\aftergroup\csname moodle at remember@\string#1\endcsname
 }
-%    \end{macrocode}                       
+%    \end{macrocode}
 %
-% \subsubsection{Main Switch: to create XML or not}
-% 
+% \subsubsection{Main Switch: to create \XML\ or not}
+%
 %    \begin{macrocode}
 \long\def\@moodle at ifgeneratexml#1#2{%
-  % If we are generating XML, do #1; otherwise do #2.
+  % If we are generating \XML, do #1; otherwise do #2.
   \tikzifexternalizing{%
-    % This run of LaTeX is currently ONLY generating a Tikz image
+    % This run of LaTeX is currently ONLY generating a TikZ image
     % to be saved in an external file.  We do NOT want to waste time
-    % generating XML, and moreover trying to do so would cause errors
+    % generating \XML, and moreover trying to do so would cause errors
     % because of file dependencies.
     #2%
   }{%
@@ -2144,7 +2845,7 @@
 %    \end{macrocode}
 %
 % \subsection{Key-Value Pairs for Quiz Questions}
-% 
+%
 % The various options are set using key-value syntax of |xkeyval|.
 %    \begin{macrocode}
 \def\moodleset#1{\setkeys{moodle}{#1}}%
@@ -2153,13 +2854,13 @@
 % Calling |\generate at moodle@write at code|\marg{name}|<|\meta{HTML tag}|>|\marg{text to write}
 % creates a macro |\moodle at write|\meta{name}, taking no parameters,
 % which writes the code |<|\meta{HTML tag}|>...</|\meta{HTML tag}|>|
-% to the output XML file.
-% 
+% to the output \XML\ file.
+%
 % The ordinary version |\generate at moodle@write at code| passes its output text |#3|
-% through the HTMLizer, producing HTML code, while the starred variant
+% through the HTMLizer, producing \HTML\ code, while the starred variant
 % |\generate at moodle@write at code*| passes |#3| verbatim as text.
-% 
-% For example, 
+%
+% For example,
 % |\generate at moodle@write at code{excuse}<EXC>{\theexcuse}|
 % would expand to
 % \begin{Verbatim}[gobble=4,frame=single]
@@ -2175,7 +2876,7 @@
 %     \fi
 %   }%
 % \end{Verbatim}
-% but 
+% but
 % |\generate at moodle@write at code*{excuse}<EXC>{\theexcuse}|
 % would expand only to
 % \begin{Verbatim}[gobble=4,frame=single]
@@ -2190,7 +2891,7 @@
 
 \def\generate at moodle@write at html#1<#2>#3{%
   % #1 = NAME for \moodle at writeNAME
-  % #2 = HTML tag
+  % #2 = \HTML\ tag
   % #3 = what, exactly, to write
   \xa\gdef\csname moodle at write#1\endcsname{%
     \xa\def\xa\test at iii\xa{#3}%
@@ -2200,6 +2901,9 @@
       \xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
       \writetomoodle[2]{  <#2 format="html">}%
       \writetomoodle[4]{    <text><![CDATA[<p>\moodle at htmltowrite</p>]]></text>}%
+      \ifmoodle at pluginfile
+        \writetomoodle[0]{\htmlize at embeddedfiletags}%
+      \fi
       \writetomoodle[2]{  </#2>}%
     \fi
   }%
@@ -2206,26 +2910,29 @@
 }%
 
 \def\generate at moodle@write at html@noptag#1<#2>#3{%
-	% No <P>..</P> introduced
-	% #1 = NAME for \moodle at writeNAME
-	% #2 = HTML tag
-	% #3 = what, exactly, to write
-	\xa\gdef\csname moodle at write#1\endcsname{%
-		\xa\def\xa\test at iii\xa{#3}%
-		\ifx\test at iii\@moodle at empty
-		\writetomoodle[2]{  <#2 format="html"><text/></#2>}%
-		\else
-		\xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
-		\writetomoodle[2]{  <#2 format="html">}%
-		\writetomoodle[4]{    <text><![CDATA[\moodle at htmltowrite]]></text>}%
-		\writetomoodle[2]{  </#2>}%
-		\fi
-	}%
+  % No <P>..</P> introduced
+  % #1 = NAME for \moodle at writeNAME
+  % #2 = \HTML\ tag
+  % #3 = what, exactly, to write
+  \xa\gdef\csname moodle at write#1\endcsname{%
+    \xa\def\xa\test at iii\xa{#3}%
+    \ifx\test at iii\@moodle at empty
+      \writetomoodle[2]{  <#2 format="html"><text/></#2>}%
+    \else
+      \xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
+      \writetomoodle[2]{  <#2 format="html">}%
+      \writetomoodle[4]{    <text><![CDATA[\moodle at htmltowrite]]></text>}%
+      \ifmoodle at pluginfile
+        \writetomoodle[0]{\htmlize at embeddedfiletags}%
+      \fi
+      \writetomoodle[2]{  </#2>}%
+    \fi
+  }%
 }%
 
 \def\generate at moodle@write at data*#1<#2>#3{%
   % #1 = NAME for \moodle at writeNAME
-  % #2 = HTML tag
+  % #2 = \HTML\ tag
   % #3 = what, exactly, to write
   \xa\gdef\csname moodle at write#1\endcsname{%
     \writetomoodle[2]{  <#2>#3</#2>}%
@@ -2250,7 +2957,7 @@
 \def\moodle at latex@writetags{%
   \xa\xdef\xa\test at iii\xa{\moodle at tags}%
   \ifx\test at iii\@moodle at empty\relax\else
-    \hfill tags: %
+    \hfill \GetTranslation{tags}: %
     \renewcommand*{\do}[1]{\ifmoodle at firsttag\moodle at firsttagfalse\else, \fi\texttt{##1}}%
     \xa\docsvlist\xa{\test at iii}%
   \fi
@@ -2291,8 +2998,8 @@
       % and feedback tailored to each right or wrong answer.
       % We shall use the key 'feedback' to record both kinds of feedback,
       % relying on TeX's grouping mechanism to keep them apart.
-      % When it comes time to write them to XML,
-      % \moodle at writegeneralfeedback uses the HTML tag <generalfeedback>
+      % When it comes time to write them to \XML,
+      % \moodle at writegeneralfeedback uses the \HTML\ tag <generalfeedback>
       % whereas \moodle at writefeedback uses the tag <feedback>.
       % Note that the general feedback is NOT inherited by each answer!
       \define at cmdkey{moodle}[moodle@]{feedback}[]{}%
@@ -2306,7 +3013,7 @@
       %Key calls like [default grade=7] set \moodle at defaultgrade.
       \define at cmdkey{moodle}[moodle@]{default grade}[1.0]{}%
       %Next, makes 'points' a synonym for 'default grade'
-      \define at key{moodle}{points}[1.0]{\xa\def\csname moodle at default grade\endcsname{#1}} 
+      \define at key{moodle}{points}[1.0]{\xa\def\csname moodle at default grade\endcsname{#1}}%
       \generate at moodle@write at code*{defaultgrade}<defaultgrade>{\csname moodle at default grade\endcsname}%
       \moodleset{default grade=1.0} %This sets the default.
 
@@ -2337,7 +3044,7 @@
 %% FRACTION -- how much this answer is worth out of 100 percent
       \define at cmdkey{moodle}[moodle@]{fraction}[100]{}%
       %We do not create \moodle at writefraction, because the fraction occurs in
-      %the XML within the answer tag, like <answer fraction="75">.
+      %the \XML\ within the answer tag, like <answer fraction="75">.
       \moodleset{fraction=100} %This sets the default.
 %    \end{macrocode}
 %    \begin{macrocode}
@@ -2365,6 +3072,10 @@
       \define at boolkey{moodle}[moodle@]{allornothing}[true]{}%
       \moodleset{allornothing=false}%
 
+%% SANCTION -- how much shall incorrect choices by sanctioned in multichoice questions (single)
+      \define at cmdkey{moodle}[moodle@]{sanction}[]{}%
+      \moodleset{sanction=0} %This sets the default.
+
 %% TODO: CORRECTFEEDBACK
 %% TODO: PARTIALLYCORRECTFEEDBACK
 %% TODO: INCORRECTFEEDBACK
@@ -2392,11 +3103,11 @@
                           \def\moodle at numbering{IIII}\fi
                         }%
       %'answer numbering' will be a synonym to 'numbering'
-      \define at key{moodle}{answer numbering}[abc]{\setkeys{moodle}{numbering={#1}}}% 
+      \define at key{moodle}{answer numbering}[abc]{\setkeys{moodle}{numbering={#1}}}%
       \generate at moodle@write at code*{answernumbering}<answernumbering>{\moodle at numbering}%
       %N.B. if we did not set the default here, then \moodle at numbering would be undefined, causing problems.
-      \moodleset{answer numbering=abc}% 
-      
+      \moodleset{answer numbering=abc}%
+
       \def\@moodle at alpha{alpha}%
       \def\@moodle at Alpha{Alpha}%
       \def\@moodle at alph{alph}%
@@ -2403,7 +3114,7 @@
       \def\@moodle at Alph{Alph}%
       \def\@moodle at arabic{arabic}%
       \def\@moodle at roman{roman}%
-      \def\@moodle at Roman{Roman}%      
+      \def\@moodle at Roman{Roman}%
       \def\@moodle at abc{abc}%
       \def\@moodle at ABCD{ABCD}%
       \def\@moodle at arabicnumbers{123}%
@@ -2411,6 +3122,7 @@
       \def\@moodle at IIII{IIII}%
       \def\@moodle at none{none}%
       \def\moodle at obeynumberingstyle{%
+        \renewcommand\labelenumii{\theenumii.}% follow Moodle's labeling convention
         \ifx\moodle at numbering\@moodle at abc
           \renewcommand\theenumii{\alph{enumii}}%
         \fi
@@ -2430,14 +3142,14 @@
           \renewcommand\labelenumii{$\bullet$~}%
         \fi
       }
-      %TODO: * In the PDF, how should 'none' in a multi look different from 
+      %TODO: * In the PDF, how should 'none' in a multi look different from
       %         short answer or numerical options?
       %       * Instead of \theenumi and \labelenumi,
       %         use \@enumdepth to automatically set the correct depth.
-      
+
 %% DISPLAY MODE -- affects Cloze multiple choice questions only.
       % 0 = inline, 1 = vertical, 2 = horizontal
-      \def\moodle at multi@mode{0}%
+      \def\moodle at multi@mode{\ifmoodle at single 0\else 1\fi}%
       \define at key{moodle}{inline}[]{\def\moodle at multi@mode{0}}%
       \define at key{moodle}{vertical}[]{\def\moodle at multi@mode{1}}%
       \define at key{moodle}{horizontal}[]{\def\moodle at multi@mode{2}}%
@@ -2447,7 +3159,7 @@
 %% TOLERANCE
       \define at cmdkey{moodle}[moodle@]{tolerance}[0]{}%
       \moodleset{tolerance=0}%
-      %There is no \moodle at writetolerance, because in the XML the
+      %There is no \moodle at writetolerance, because in the \XML\ the
       %tolerance is given within the answer tag,
       %like <answer fraction=100 tolerance=0.03>.
 
@@ -2456,17 +3168,17 @@
 % \subsubsection{Keys for short answer questions}
 %    \begin{macrocode}
 %% CASE SENSITIVE
-      \define at boolkey{moodle}[moodle@]{case sensitive}[true]{}%
-      \generate at moodle@write at code*{usecase}<usecase>{\csname ifmoodle at case sensitive\endcsname 1\else 0\fi}%
-      % We make 'usecase' a synonym for 'case sensitive'.
-      \define at boolkey{moodle}[moodle@]{usecase}[true]{\ifmoodle at usecase\csname moodle at case sensitivetrue\endcsname\else\csname moodle at case sensitivefalse\endcsname\fi}%
-      \moodleset{case sensitive=false}%
+      \define at boolkey{moodle}[moodle@]{usecase}[true]{}%
+      \generate at moodle@write at code*{usecase}<usecase>{\ifmoodle at usecase 1\else 0\fi}%
+      % We make 'case sensitive' a synonym for 'usecase'.
+      \define at boolkey{moodle}[moodle@]{case sensitive}[true]{\ifcsname moodle at case sensitive\endcsname \moodle at usecasetrue\else\moodle at usecasefalse\fi}%
+      \moodleset{usecase=false}%
 %    \end{macrocode}
 % \subsubsection{Keys for matching questions}
 %    \begin{macrocode}
 %% DRAG-AND-DROP FORMAT
       \define at boolkey{moodle}[moodle@]{draganddrop}[true]{}%
-      % We make 'dd' and 'dragdrop' and 'drag and drop' synonyms for 'draganddrop'.
+      % We make 'dd' and 'draganddrop' and 'drag and drop' synonyms for 'draganddrop'.
       \define at boolkey{moodle}[moodle@]{dd}[true]{\ifmoodle at dd\moodle at draganddroptrue\else\moodle at draganddropfalse\fi}%
       \define at boolkey{moodle}[moodle@]{drag and drop}[true]{\moodle at ddsynonym}%
       \def\moodle at ddsynonym{%
@@ -2492,11 +3204,11 @@
                        {html,html+file,text,monospaced,file}[html]%
                        {\def\test at i{#1}%
                         \ifx\test at i\@moodle at html
-                          % HTML Editor
-                          \def\moodle at responseformat{editor}% 
+                          % \HTML\ Editor
+                          \def\moodle at responseformat{editor}%
                         \fi
                         \ifx\test at i\@moodle at htmlfile
-                          % HTML Editor with File Picker
+                          % \HTML\ Editor with File Picker
                           \def\moodle at responseformat{editorfilepicker}%
                         \fi
                         \ifx\test at i\@moodle at text
@@ -2521,7 +3233,7 @@
                         \fi
                        }%
       \generate at moodle@write at code*{responseformat}<responseformat>{\moodle at responseformat}%
-      \moodleset{response format=html}% 
+      \moodleset{response format=html}%
       %N.B. if we did not set a default, then \moodle at responseformat would be undefined, causing problems.
 
 %% RESPONSE REQUIRED
@@ -2584,12 +3296,12 @@
 %    \end{macrocode}
 %
 % \subsection{Answer handling}
-% 
+%
 %    \begin{macrocode}
-%The Answers XML depends heavily on the question type.
+%The Answers \XML\ depends heavily on the question type.
 %Each type of question defines how it obtains answers from the LaTeX input,
-%how it typesets those in a PDF or DVI, and how it writes them as XML code.
-%It will write that XML to the macro \moodle at answers@xml,
+%how it typesets those in a \PDF\ or \DVI, and how it writes them as \XML\ code.
+%It will write that \XML\ to the macro \moodle at answers@xml,
 %which them gets written to the file when \moodle at writeanswers
 %is invoked.
 
@@ -2600,8 +3312,8 @@
 
 \newcommand\addto at xml[3][0]{%
   % #1 = spaces to indent (default=0)
-  % #2 = macro containing XML code (possibly empty)
-  % #3 = XML text to be appended to that macro (will be \edef'd)
+  % #2 = macro containing \XML\ code (possibly empty)
+  % #3 = \XML\ text to be appended to that macro (will be \edef'd)
   \calculateindent{#1}%
   \edef\xml at to@add{\moodle at indent\trim at pre@space{#3}}%
   \ifx#2\@moodle at empty
@@ -2614,7 +3326,7 @@
 %    \end{macrocode}
 %
 % \subsubsection{Not yet implemented}
-% 
+%
 %    \begin{macrocode}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2623,25 +3335,36 @@
 % TODO: I don't think I really want to handle this.  Not now.
 
 %    \end{macrocode}
-
+%
+% \subsection{Typesetting options}
+% This section provides the tools to allow on to control how the quiz gets typeset
+% in the resulting PDF file.
+%    \begin{macrocode}
+\ifmoodle at feedbackLeft% contribution of Juergen Vollmer, 2021-03-05
+  \newcommand{\moodle at preFeedback}{\\}%
+\else%
+  \newcommand{\moodle at preFeedback}{\hfill}%
+\fi
+%    \end{macrocode}
+%
 % \subsection{Front Ends}
 % This section creates the user interface for the various question types.
-% First, we define a generic command to create 
+% First, we define a generic command to create
 % a front-end environment for a Moodle question type.
 % In order to function, the following macros must be hard-coded:
 % \begin{itemize}
-%   \item |\moodle@|\meta{type}|@latexprocessing|: 
+%   \item |\moodle@|\meta{type}|@latexprocessing|:
 %     Loops through the saved |\item|'s to typeset them in LaTeX,
 %     usually inside an itemize or enumerate environment.
-%   \item |\save|\meta{type}|answer#1|: 
+%   \item |\save|\meta{type}|answer#1|:
 %     Processes the text of a single |\item| to save the information to memory,
 %     usually inside |\moodle at answers@xml|.
 %   \item |\write|\meta{type}|question|:
 %     Writes the information, hitherto saved only in macros,
-%     into the XML file.
+%     into the \XML\ file.
 % \end{itemize}
 % For example, to create the `shortanswer' question type,
-% we shall call 
+% we shall call
 % \begin{Verbatim}[gobble=5,frame=single]
 %    \moodle at makefrontend{shortanswer}
 %    \def\moodle at shortanswer@latexprocessing{...}
@@ -2648,7 +3371,7 @@
 %    \def\saveshortansweranswer#1{...}
 %    \def\writeshortanswerquestion{...}
 % \end{Verbatim}
-% 
+%
 %    \begin{macrocode}
 
 \def\moodle at makelatextagbox#1{%
@@ -2664,18 +3387,20 @@
 }%
 
 \def\moodle at makelatextag@qtype#1{%
-  \doublebox{\tiny \textsc{#1}}
+  \doublebox{\tiny \textsc{\GetTranslation{#1}}}
 }%
 
 \def\moodle at makelatextag@value#1#2{%
-  \moodle at makelatextagbox{\csname moodle@#1\endcsname~#2}
+  \moodle at makelatextagbox{\GetTranslation{#2}~\csname moodle@#1\endcsname}%
 }%
 
 \def\moodle at makelatextag@key#1{%
-  \moodle at makelatextagbox{\csname moodle@#1\endcsname}
+  \moodle at makelatextagbox{\GetTranslation{#1}}
 }%
 
-\def\moodle at marks#1{point\ifdim#1pt=1pt \else s\fi}
+\def\moodle at makelatextag@other#1{%
+  \moodle at makelatextagbox{\GetTranslation{#1}}
+}%
 
 \def\moodle at makefrontend#1#2{%
   \NewEnviron{#1}[2][]{%
@@ -2685,7 +3410,7 @@
       \expandafter\gatheritems\xa{\BODY}%
       \let\moodle at questionheader=\gatheredheader
       %First, the LaTeX processing
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage \textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{#1}
       \else
@@ -2692,9 +3417,9 @@
         \moodle at latex@writetags
         \par
         \noindent
-        \moodle at makelatextag@qtype{#1}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
-        \moodle at makelatextag@value{penalty}{penalty}
+        \moodle at makelatextag@qtype{#1}%
+        \moodle at makelatextag@value{default grade}{marked out of}
+        \moodle at makelatextag@value{penalty}{penalty}%
       \fi
       #2\par
       \noindent
@@ -2701,6 +3426,7 @@
       \moodle at questionheader
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
       \csname moodle@#1 at latexprocessing\endcsname
+      \moodle at end@samepage
       %Now, writing information to XML
       \@moodle at ifgeneratexml{%
         \xa\questiontext\xa{\moodle at questionheader}% Save the question text.
@@ -2728,10 +3454,9 @@
 % Description blocks can be empty. In this case, nothing is done.
 %
 %    \begin{macrocode}
-\AfterEndPreamble{% in case something like \usepackage[french]{babel} is loaded
+\AtBeginEnvironment{quiz}{% protect existing description outside of quiz
   \let\description\relax% remove the meaning of existing \description and \enddescription
   \let\enddescription\relax
-
   \NewEnviron{description}[2][]{%
     \bgroup
       \setkeys{moodle}{#1,questionname={#2}}%
@@ -2739,7 +3464,7 @@
       \trim at spaces@in\moodle at questiontext
       \ifx\moodle at questiontext\@empty\relax\else%
         %First, the LaTeX processing.
-        \item \textbf{\moodle at questionname}
+        \item \moodle at begin@samepage\textbf{\moodle at questionname}
         \ifmoodle at handout\else
           \moodle at latex@writetags
           \par
@@ -2750,9 +3475,10 @@
         \moodle at questiontext\par
         \ifmoodle at handout\else
           \ifx\moodle at feedback\@empty\relax\else
-            \fbox{\parbox{\linewidth}{\emph{\moodle at feedback}}}%
+            \fbox{\parbox{.96\linewidth}{\emph{\moodle at feedback}}}%
           \fi
         \fi
+        \moodle at end@samepage
         %Now, writing information to memory.
         \@moodle at ifgeneratexml{%
           \writetomoodle{<question type="description">}%
@@ -2769,12 +3495,12 @@
 % \subsubsection{Essay Question Front-End}
 % The front end is not yet created by |\moodle at makefrontend| because of
 % what must must be done with the |\item|'s.
-% 
+%
 %    \begin{macrocode}
 \def\moodle at essay@latexprocessing{%
-  % Moodle cannot automatically grade an essay, 
+  % Moodle cannot automatically grade an essay,
   % but if the user puts \item's in, we can list them in an itemize as notes.
-  \par\noindent \emph{Notes for grader:}
+  \par\noindent \emph{\GetTranslation{Information for graders}:}
   \ifnum\c at numgathereditems>0\relax
     \begin{itemize} \setlength\itemsep{0pt}\setlength\parskip{0pt}%
       \loopthroughitemswithcommand{\moodle at print@essay at answer}%
@@ -2781,7 +3507,7 @@
     \end{itemize}%
   \fi
   \ifx\moodle at generalfeedback\@empty\relax\else%
-    \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+    \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
   \fi
 }
 
@@ -2788,12 +3514,12 @@
 \NewEnviron{essay}[2][]{%
   \bgroup
     \setkeys{moodle}{#1,questionname={#2}}%
-    \global\advance\moodle at totalmarks by \csname moodle at default grade\endcsname pt
+    \global\advance\moodle at totalmarks by \csname moodle at default grade\endcsname pt%
     \moodle at checkresponsefieldlines
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
     %First, the LaTeX processing.
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{essay}
       \else
@@ -2801,9 +3527,9 @@
         \par
         \noindent
         \moodle at makelatextag@qtype{essay}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@value{penalty}{penalty}
-        \moodle at makelatextag@key{responseformat}
+        \xa\moodle at makelatextag@key\xa{\moodle at responseformat}
       \fi
       \par
       \noindent
@@ -2810,13 +3536,17 @@
       \moodle at questionheader
       \long\def\@lempty{}%
       \ifx\moodle at responsetemplate\@lempty\else
-        \par\noindent \emph{Template:}
-        \par\fbox{\parbox{\linewidth}{\moodle at responsetemplate}}\par
+        \par\noindent\emph{\GetTranslation{Response template}:}
+        \par\noindent\fbox{\parbox{.96\linewidth}{\moodle at responsetemplate}}\par
       \fi
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
-      \ifmoodle at handout\else
+      \ifmoodle at handout
+        \par\noindent
+        \fbox{\parbox[t][\csname moodle at response field lines\endcsname\baselineskip]{.96\linewidth}{\phantom{Moodle}}}%
+      \else
         \csname moodle at essay@latexprocessing\endcsname
       \fi
+      \moodle at end@samepage
     %Now, writing information to memory.
     \@moodle at ifgeneratexml{%
       \xa\questiontext\xa{\moodle at questionheader}% Save the question text.
@@ -2840,7 +3570,7 @@
         %
         \passvalueaftergroup{\moodle at answers@xml}%
       \egroup
-      \moodle at writeanswers% The 'answers' XML really contains the grader info.
+      \moodle at writeanswers% The 'answers' \XML\ really contains the grader info.
       \moodle at writeresponsetemplate%
       \moodle at writetags%
       \writetomoodle{</question>}%
@@ -2851,18 +3581,18 @@
 \def\moodle at checkresponsefieldlines{%
   \newcount\a\a=\number\csname moodle at response field lines\endcsname
   \newcount\b\b=5%
-  \ifnum\the\a>40% if the value was more than 40
+  \ifnum\the\a>40\relax% if the value was more than 40
     \a=40%
   \fi
-  \ifnum\the\a<5% if the value was less than 5
+  \ifnum\the\a<5\relax% if the value was less than 5
     \a=5%
   \fi
   \divide\a by\b% integer division by 5
   \multiply\a by\b% multiply by 5
-  \ifnum\a=\csname moodle at response field lines\endcsname% equality holds if we had 5, 10, 15, 20, 25, 30, or 40
+  \ifnum\a=\csname moodle at response field lines\endcsname\relax% equality holds if we had 5, 10, 15, 20, 25, 30, or 40
   \else
-    \ifnum\csname moodle at response field lines\endcsname>5%
-      \ifnum\csname moodle at response field lines\endcsname<40%
+    \ifnum\csname moodle at response field lines\endcsname>5\relax%
+      \ifnum\csname moodle at response field lines\endcsname<40\relax%
         \advance\a by\b% approximate with the next multiple of 5
       \fi
     \fi
@@ -2885,7 +3615,7 @@
 %%%%       1. if \c at numgathereditems=0, we don't do anything.
 %%%%       2. it calls a preamble and postamble around the \loopthroughitemswithcommand.
 %%%%          Like this:
-%%%%            
+%%%%
 %%%%      \@moodle at ifgeneratexml{%
 %%%%        \xa\questiontext\xa{\moodle at questionheader}% Save the question text.
 %%%%        \bgroup
@@ -2904,7 +3634,7 @@
 %%%%        \egroup
 %%%%        \csname write#1question\endcsname
 %%%%      }{}%
-%%%% The \@ifundefined lines should automatically define the 
+%%%% The \@ifundefined lines should automatically define the
 %%%% \... at preamble \... at postamble macros to be \relax if they don't exist already.
 
 \gdef\writeessayquestion{%
@@ -2921,19 +3651,7 @@
     \item #1%
 }%
 
-
 \long\def\moodle at savegraderinfo#1{%
-  %\def\ds{#1}\show\ds
-  \bgroup
-    \moodle at savegraderinfo@int#1\moodle at answer@rdelim
-    \passvalueaftergroup{\moodle at answers@xml}%
-  \egroup
-}%
-\newcommand\moodle at savegraderinfo@int[1][]{%
-  \setkeys{moodle}{fraction=0,#1}%
-  \moodle at savegraderinfo@int at int%
-}%
-\long\def\moodle at savegraderinfo@int at int#1\moodle at answer@rdelim{%
   \def\moodle at answertext{#1}
   \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
   %\trim at spaces@in\moodle at answertext
@@ -2946,12 +3664,8 @@
 %    \end{macrocode}
 %
 % \subsubsection{Short Answer Question Front-End}
-% 
+%
 %    \begin{macrocode}
-\def\blank{\rule{1in}{0.5pt}}%
-% TODO: Make an optional argument for width?  This wouldn't affect Moodle,
-%        only the appearance in the PDF.  It doesn't seem worth it.
-
 %\NewEnviron{shortanswer}[2][]{%
 %   \bgroup
 %     \setkeys{moodle}{#1,questionname={#2}}%
@@ -2973,7 +3687,7 @@
 %       \bgroup
 %         \gdef\moodle at answers@xml{}%
 %         \setkeys{moodle}{feedback={}}%
-%         \xa\loopthroughitemswithcommand\xa{\csname 
+%         \xa\loopthroughitemswithcommand\xa{\csname
 %         saveshortansweranswer\endcsname}%
 %         \passvalueaftergroup{\moodle at answers@xml}%
 %       \egroup
@@ -2987,10 +3701,10 @@
 % LATEX PROCESSING
 
 \def\moodle at makelatextag@shortanswer{%
-  \csname ifmoodle at case sensitive\endcsname
-    \moodle at makelatextagbox{Case-Sensitive}\relax
+  \ifmoodle at usecase
+    \moodle at makelatextag@other{Case-Sensitive}\relax
   \else
-    \moodle at makelatextagbox{Case-Insensitive}\relax
+    \moodle at makelatextag@other{Case-Insensitive}\relax
   \fi
 }
 
@@ -3002,7 +3716,7 @@
       \loopthroughitemswithcommand{\moodle at print@shortanswer at answer}%
     \end{itemize}%
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   }
 \fi
@@ -3023,7 +3737,7 @@
        \item #1$~(\moodle at fraction\%)$%
      \fi
      \ifx\moodle at feedback\@empty\relax\else
-       \hfill \emph{$\rightarrow$ \moodle at feedback}
+       \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}
      \fi
    }%
 
@@ -3045,15 +3759,18 @@
      \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
      \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
      \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext@html</text>}%
+     \ifmoodle at pluginfile
+       \writetomoodle[0]{\htmlize at embeddedfiletags}%
+     \fi
      \ifx\moodle at feedback\@empty\relax\else
        \trim at spaces@in\moodle at feedback
        \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
      \fi
      \addto at xml[2]{\moodle at answers@xml}{</answer>}%
    }%
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writeshortanswerquestion{%
   \writetomoodle{<question type="shortanswer">}%
     \moodle at writecommondata%
@@ -3062,7 +3779,7 @@
 %    \end{macrocode}
 %
 % \subsubsection{Numerical Question Front-End}
-% 
+%
 %    \begin{macrocode}
 \moodle at makefrontend{numerical}{\moodle at makelatextag@numerical}%
 
@@ -3071,7 +3788,8 @@
 \def\moodle at makelatextag@numerical{}
 
 \AtEndPreamble{
-  \@ifpackageloaded{siunitx}{\def\moodle at printnum{\num[omit-uncertainty,copy-decimal-marker]}}{\let\moodle at printnum\trim at spaces}%
+  \@ifpackageloaded{siunitx}{\def\moodle at printnum{\num[omit-uncertainty]}}%,copy-decimal-marker
+  {\let\moodle at printnum\trim at spaces}%
 }
 
 \ifmoodle at handout
@@ -3082,7 +3800,7 @@
       \loopthroughitemswithcommand{\moodle at print@numerical at answer}%
     \end{itemize}%
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   }
 \fi
@@ -3098,13 +3816,14 @@
      \moodle at print@numerical at answer@int at int%
    }%
    \def\moodle at print@numerical at answer@int at int#1\@rdelim{%
-     \xdef\test at i{\trim at spaces{#1}}%
+     \gdef\test at i{#1}%
+     \trim at spaces@in\test at i
      \ifx\test at i\@star
        \item \test at i
      \else
        \item \moodle at printnum{#1}%
-       \ifnum\z@=\moodle at tolerance\else
-         $\,\pm\,$\moodle at printnum{\moodle at tolerance}%
+       \ifx\moodle at tolerance\moodle at zero\else
+         $\,\pm\,$\moodle at printnum{\expandonce\moodle at tolerance}%
        \fi
      \fi
      \ifx\moodle at fraction\@hundred
@@ -3114,7 +3833,7 @@
        $~(\moodle at fraction\%)$%
      \fi
      \ifx\moodle at feedback\@empty\relax\else
-       \hfill \emph{$\rightarrow$ \moodle at feedback}%
+       \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
      \fi
    }%
 
@@ -3135,19 +3854,23 @@
      \moodle at checkfraction
      \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
      \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+
      \ifx\moodle at answertext\@star\else
        \addto at xml[4]{\moodle at answers@xml}{  <tolerance>\moodle at tolerance</tolerance>}%
      \fi
+     \ifmoodle at pluginfile
+       \writetomoodle[0]{\htmlize at embeddedfiletags}%
+     \fi
      \ifx\moodle at feedback\@empty\relax\else
        \trim at spaces@in\moodle at feedback
        \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
      \fi
      \addto at xml[2]{\moodle at answers@xml}{</answer>}%
    }%
 
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writenumericalquestion{%
   \writetomoodle{<question type="numerical">}%
     \moodle at writecommondata%
@@ -3155,7 +3878,7 @@
 %    \end{macrocode}
 %
 % \subsubsection{Multiple Choice Question Front-End}
-% 
+%
 %    \begin{macrocode}
 %Multiple choice has the structure
 % \begin{multi}[options]{name}%
@@ -3175,27 +3898,25 @@
       \PackageError{moodle}{Unsupported option "allornothing" for a multichoice subquestion}
       {Please set "allornothing=false"}%
     \else
-      \moodle at makelatextagbox{All-or-nothing}%
+      \moodle at makelatextag@other{All-or-nothing}%
     \fi
   \else
-    \ifmoodle at multiple
-      \moodle at makelatextagbox{Multiple}%
+    \ifmoodle at single
+      \moodle at makelatextag@other{Single}%
     \else
-      \moodle at makelatextagbox{Single}%
+      \moodle at makelatextag@other{Multiple}%
     \fi
   \fi
   \ifmoodle at handout\else
     \ifmoodle at shuffle
-      \moodle at makelatextagbox{Shuffle}\relax%
+      \moodle at makelatextag@other{Shuffle}\relax%
     \fi
   \fi
 }
 
 \def\moodle at multi@latexprocessing{%
-  \ifmoodle at allornothing
-    \moodle at singletrue
-  \fi
-  \moodle at countcorrectanswers%
+  \ifmoodle at allornothing\moodle at singletrue\fi
+  \ifmoodle at single\relax\else\moodle at InspectMultipleAnswers\fi
   \ifmoodle at handout\NewList{answerlist}\fi
   \begin{enumerate}\moodle at obeynumberingstyle%
     %\renewcommand{\theenumi}{\alph{enumi}}%
@@ -3212,7 +3933,7 @@
   \end{enumerate}%
   \ifmoodle at handout\else
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   \fi
 }
@@ -3234,7 +3955,7 @@
       \ifmoodle at single%
         \setkeys{moodle}{fraction=100}%
       \else
-        \setkeys{moodle}{fraction=\moodle at autopoints}%
+        \setkeys{moodle}{fraction=\moodle at AutoScore}%
       \fi
     \else
       \g at addto@macro\moodle at answertext{#1#2}%
@@ -3244,7 +3965,11 @@
     \ifmoodle at handout\else
       \ifmoodle at single%
         \ifx\moodle at fraction\@empty\relax%
-          \setkeys{moodle}{fraction=0}%
+          \ifdim0pt<\moodle at sanction pt\relax
+            \setkeys{moodle}{fraction=-\moodle at sanction}%
+          \else
+            \setkeys{moodle}{fraction=0}%
+          \fi
         \fi
         \moodle at checkfraction
         \ifx\moodle at fraction\@hundred%
@@ -3257,7 +3982,11 @@
         \fi
       \else% multiple
         \ifx\moodle at fraction\@empty\relax%
-          \setkeys{moodle}{fraction=\moodle at autosanctions}%
+          \ifmoodle at AdvancedScoreMode
+            \setkeys{moodle}{fraction=0}%
+          \else
+            \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+          \fi
         \fi
         \moodle at checkfraction
         \g at addto@macro\moodle at answertext{$~(\moodle at fraction\%)$}%
@@ -3268,142 +3997,142 @@
       \xa\temp\xa{\moodle at answertext}%
     \else
       \ifx\moodle at feedback\@empty\relax\else%
-        \g at addto@macro\moodle at answertext{\hfill \emph{$\rightarrow$ \moodle at feedback}}%
+        \g at addto@macro\moodle at answertext{\moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}}%
       \fi
       \moodle at answertext
     \fi
   }%
 
-% COMMON UTILITY: COUNTING CORRECT ANSWERS (AND A BIT MORE...)
-   \newcounter{moodle at numcorrectanswers}% count the stars
-   \newcounter{moodle at numincorrectanswers}% count the items without fraction key indicated
-   \newlength{\moodle at pointspercorrect}%
-   \newlength{\moodle at pointsperincorrect}%
-   \newlength{\moodle at sumofpositivefractions}% sums user-set positive fractions
-   \newlength{\moodle at sumofnegativefractions}% sums user-set negative fractions
-   \def\moodle at countcorrectanswers{%
-     \setcounter{moodle at numcorrectanswers}{0}%
-     \setcounter{moodle at numincorrectanswers}{0}%
-     \global\setlength{\moodle at pointspercorrect}{100pt}%
-     \global\setlength{\moodle at pointsperincorrect}{-100pt}%
-     \global\setlength{\moodle at sumofpositivefractions}{0pt}%
-     \global\setlength{\moodle at sumofnegativefractions}{0pt}%
-     \loopthroughitemswithcommand{\moodle at countcorrectanswers@a}%
-     \global\advance\moodle at pointspercorrect by-\moodle at sumofpositivefractions\relax%
-     \def\ds{\strip at pt\moodle at sumofpositivefractions}%
-     \ifnum0=\c at moodle@numcorrectanswers\relax%
-       % autopoints will never be used but we check if the sum of positive fractions is 100%
-       \ifdim\moodle at pointspercorrect<-\moodle at fractiontol pt\relax%
-         \PackageWarning{moodle}{Positive fractions sum up to more than 100 (here: \ds)}%
-       \else
-         \ifdim\moodle at pointspercorrect>\moodle at fractiontol pt\relax%
-           \PackageError{moodle}{Positive fractions sum up to less than 100 (here: \ds)}%
-         \fi
-       \fi
-     \else
-       \ifdim0pt<\moodle at pointspercorrect\relax\else%
-         % we have starred items so the sum of user-set positive fractions must be less than 100%
-         % otherwise, starred items would lead to penalties
-         \PackageError{moodle}{Positive fractions sum up to 100 or more (here: \ds):
-                                there is no positive points left to be given to starred items.}%
-       \fi
-       \global\divide\moodle at pointspercorrect by \c at moodle@numcorrectanswers\relax%
-     \fi
-     \gdef\moodle at autopoints{\strip at pt\moodle at pointspercorrect}%
-     \global\advance\moodle at pointsperincorrect by-\moodle at sumofnegativefractions\relax%
-     \def\ds{\strip at pt\moodle at sumofnegativefractions}%
-     \ifnum0=\c at moodle@numincorrectanswers\relax%
-       % autosanctions will never be used and
-       % we do not care about the sum of negative fractions (might be less than -100)
-     \else
-       \ifdim0pt<\moodle at pointsperincorrect\relax%
-         % we have items without fractions set: to prevent auto sanctions from becoming bonuses,
-         % such items are neutralized.
-         \PackageWarning{moodle}{Negative fractions sum up to -100 or less (here: \ds):
-                                  items with no fraction key set will be considered as neutral.}%
-         \global\setlength{\moodle at pointsperincorrect}{0pt}%
-       \fi
-       \global\divide\moodle at pointsperincorrect by \c at moodle@numincorrectanswers\relax%
-     \fi
-     \gdef\moodle at autosanctions{\strip at pt\moodle at pointsperincorrect}%
-   }
-   \long\def\moodle at countcorrectanswers@a#1{%
-     %The grouping is to keep key answer-specific key changes local.
-     \bgroup
-       \moodle at countcorrectanswers@b#1\moodle at answer@rdelim
-     \egroup
-   }%
-   \newcommand\moodle at countcorrectanswers@b[1][]{%
-     %\ifx&#1&%
-       \let\moodle at fraction\@empty%
-       \setkeys{moodle}{#1}%
-       \moodle at countcorrectanswers@c%
-     %\fi
-   }%
-   \long\def\moodle at countcorrectanswers@c#1#2\moodle at answer@rdelim{%
-     \def\test at i{#1}%
-     \ifx\test at i\@star
-       \stepcounter{moodle at numcorrectanswers}%
-     \else
-       \ifx\moodle at fraction\@empty\relax%
-         \stepcounter{moodle at numincorrectanswers}%
-       \else
-         \ifdim0pt<\moodle at fraction pt\relax%
-           \global\addtolength{\moodle at sumofpositivefractions}{\moodle at fraction pt}%
-         \else
-           \global\addtolength{\moodle at sumofnegativefractions}{\moodle at fraction pt}%
-         \fi
-       \fi
-     \fi
-   }%
-   \newlength{\test at fraction}%
-   \newlength{\test at lower}%
-   \newlength{\test at upper}%
-   \def\moodle at fractionerror{%
-     \def\ds{\moodle at fraction}%
-     \PackageError{moodle}{the current fraction is not a valid value (here: \ds)}%
-   }
-   {\catcode`|=3\relax
-   \gdef\moodle at validfractionlist{0|5|10|11.11111|12.5|14.28571|16.66667|20|25|30|33.33333|40|50|60|66.66667|70|75|80|83.33333|90|100}}%
-   \def\moodle at isfractionnear#1{%
-     \setlength{\test at lower}{#1 pt}%
-     \addtolength{\test at lower}{-\moodle at fractiontol pt}%
-     \setlength{\test at upper}{#1 pt}%
-     \addtolength{\test at upper}{\moodle at fractiontol pt}%
-     \ifdim\test at upper>\test at fraction\relax
-       \ifdim\test at lower<\test at fraction\relax
-         \gdef\test at fractionmatched{#1}%
-       \fi
-     \fi
-   }
- \def\moodle at checkfraction{%
-   \ifmoodle at allornothing
-     \ifnum\moodle at fraction>0%
-       \setkeys{moodle}{fraction=100}%
-     \fi
-     \ifnum\moodle at fraction<0%
-       \setkeys{moodle}{fraction=0}%
-     \fi
-   \else
-     %\def\test at i{#1}%
-     \setlength{\test at fraction}{\moodle at fraction pt}%
-     % take the absolute value
-     \ifdim0pt>\test at fraction\relax%
-       \setlength{\test at fraction}{-\moodle at fraction pt}%
-     \fi
-     % test if the fraction is an admissible value
-     \let\test at fractionmatched\@empty
-     \forlistloop{\moodle at isfractionnear}{\moodle at validfractionlist}%
-     \ifx\test at fractionmatched\@empty\relax
-       \moodle at fractionerror%
-     \fi
-     \ifdim\moodle at fraction pt<-\moodle at fractiontol pt\relax%
-       \setkeys{moodle}{fraction=-\test at fractionmatched}%
-     \else
-       \setkeys{moodle}{fraction=\test at fractionmatched}%
-     \fi
-   \fi
- }
+% COMMON UTILITY: Inspecting answers of multiple choice questions (for option 'multiple')
+\newcounter{moodle at NumStarredAnswers}% count the stars
+\newdimen\moodle at autoscore@tmp%
+\newdimen\moodle at TotalPositiveFractions% Total of user-set positive fractions
+\newdimen\moodle at PositiveScoreFactor% scaling factor to impose the fractions of
+%correct answers to add up to 100%
+\newif\ifmoodle at AdvancedScoreMode%
+
+\def\moodle at InspectMultipleAnswers{%
+  \setcounter{moodle at NumStarredAnswers}{0}%
+  \moodle at autoscore@tmp=100pt\relax% temporary variable
+  \moodle at TotalPositiveFractions=0pt\relax%
+  \moodle at PositiveScoreFactor=1pt\relax
+  \moodle at AdvancedScoreModefalse
+  \loopthroughitemswithcommand{\moodle at InspectMultipleAnswers@a}%
+  \ifmoodle at AdvancedScoreMode% advanced mode
+    \ifx\endmulti\endclozemulti% inside cloze
+      \divide\moodle at TotalPositiveFractions by 100\relax
+      \advance\moodle at TotalPositiveFractions by \c at moodle@NumStarredAnswers pt\relax
+      \moodle at PositiveScoreFactor=1 pt\relax
+      \moodle at PositiveScoreFactor=\dimexpr 1 pt * \moodle at PositiveScoreFactor / \moodle at TotalPositiveFractions\relax%
+      \global\def\moodle at OtherScore{% for multianswer questions in cloze, with advanced mode
+        \ifdim0pt<\moodle at fraction pt\relax
+          \moodle at fraction
+        \else
+          \moodle at autoscore@tmp=\moodle at PositiveScoreFactor\relax%
+          \multiply\moodle at autoscore@tmp by \moodle at fraction\relax%
+          \strip at pt\moodle at autoscore@tmp
+        \fi
+      }%
+    \else% outside cloze
+      \advance\moodle at autoscore@tmp by-\moodle at TotalPositiveFractions\relax%
+      \def\ds{\strip at pt\moodle at TotalPositiveFractions}%
+      \ifnum0=\c at moodle@NumStarredAnswers\relax%
+      % autopoints will never be used but we check if the sum of positive fractions is 100%
+        \ifdim\moodle at autoscore@tmp<-\moodle at fractiontol pt\relax%
+          \PackageWarning{moodle}{Positive fractions add up to more than 100 (here: \ds)}%
+          % Here we issue only a warning because Moodle accepts the \XML\ without error.
+        \else
+          \ifdim\moodle at autoscore@tmp>\moodle at fractiontol pt\relax%
+            \PackageError{moodle}{Positive fractions add up to less than 100 (here: \ds)}%
+          \fi
+        \fi
+      \else% there are starred items
+        \ifdim0pt<\moodle at autoscore@tmp\relax\else%
+      % we have starred items so the sum of user-set positive fractions must be less than 100%
+      % otherwise, starred items would lead to penalties
+          \PackageError{moodle}{Positive fractions add up to 100 or more (here: \ds):
+                             there is no positive points left to be given to starred items.}%
+        \fi
+        \divide\moodle at autoscore@tmp by \c at moodle@NumStarredAnswers\relax%
+      \fi
+    \fi
+  \else% automatic score (not in advanced score mode)
+    \global\divide\moodle at autoscore@tmp by \c at moodle@NumStarredAnswers\relax%
+  \fi
+  \xdef\moodle at AutoScore{\strip at pt\moodle at autoscore@tmp}%
+}
+\long\def\moodle at InspectMultipleAnswers@a#1{%
+  %The grouping is to keep key answer-specific key changes local.
+  \bgroup
+    \moodle at InspectMultipleAnswers@b#1\moodle at answer@rdelim
+  \egroup
+}%
+\newcommand\moodle at InspectMultipleAnswers@b[1][]{%
+  %\ifx&#1&%
+    \let\moodle at fraction\@empty%
+    \setkeys{moodle}{#1}%
+    \moodle at InspectMultipleAnswers@c%
+  %\fi
+}%
+\long\def\moodle at InspectMultipleAnswers@c#1#2\moodle at answer@rdelim{%
+  \def\test at i{#1}%
+  \ifx\test at i\@star
+    \stepcounter{moodle at NumStarredAnswers}%
+  \else
+    \ifx\moodle at fraction\@empty\else
+      \global\moodle at AdvancedScoreModetrue
+      \ifdim0pt<\moodle at fraction pt\relax%
+        \global\advance\moodle at TotalPositiveFractions by \moodle at fraction pt\relax%
+      \fi
+    \fi
+  \fi
+}%
+\newdimen\test at fraction%
+\newdimen\test at lower%
+\newdimen\test at upper%
+\def\moodle at fractionerror{%
+  \def\ds{\moodle at fraction}%
+  \PackageError{moodle}{the current fraction is not an admissible value (here: \ds)}%
+}
+{\catcode`|=3\relax
+\gdef\moodle at validfractionlist{0|5|10|11.11111|12.5|14.28571|16.66667|20|25|30|33.33333|40|50|60|66.66667|70|75|80|83.33333|90|100}}%
+\def\moodle at isfractionnear#1{%
+  \test at lower=\dimexpr #1 pt - \moodle at fractiontol pt\relax%
+  \test at upper=\dimexpr #1 pt + \moodle at fractiontol pt\relax%
+  \ifdim\test at upper>\test at fraction\relax
+    \ifdim\test at lower<\test at fraction\relax
+      \gdef\test at fractionmatched{#1}%
+    \fi
+  \fi
+}
+\def\moodle at checkfraction{%
+  \ifmoodle at allornothing
+    \ifnum\moodle at fraction>0\relax
+      \setkeys{moodle}{fraction=100}%
+    \fi
+    \ifnum\moodle at fraction<0\relax
+      \setkeys{moodle}{fraction=0}%
+    \fi
+  \else
+    %\def\test at i{#1}%
+    \test at fraction=\moodle at fraction pt\relax%
+    % take the absolute value
+    \ifdim0pt>\test at fraction\relax%
+      \test at fraction=-\moodle at fraction pt\relax%
+    \fi
+    % test if the fraction is an admissible value
+    \let\test at fractionmatched\@empty
+    \forlistloop{\moodle at isfractionnear}{\moodle at validfractionlist}%
+    \ifx\test at fractionmatched\@empty\relax
+      \moodle at fractionerror%
+    \fi
+    \ifdim\moodle at fraction pt<-\moodle at fractiontol pt\relax%
+      \xdef\moodle at fraction{-\test at fractionmatched}%
+    \else
+      \xdef\moodle at fraction{\test at fractionmatched}%
+    \fi
+  \fi
+}
 % TODO: Put these macros in same order as other sections'.
 
 % SAVING ANSWERS TO MEMORY
@@ -3427,7 +4156,7 @@
       \ifmoodle at single
         \setkeys{moodle}{fraction=100}%
       \else
-        \setkeys{moodle}{fraction=\moodle at autopoints}%
+        \setkeys{moodle}{fraction=\moodle at AutoScore}%
       \fi
       \def\moodle at answertext{#2}%
     \else
@@ -3435,9 +4164,17 @@
     \fi
     \ifx\moodle at fraction\@empty\relax%
       \ifmoodle at single\relax
-        \setkeys{moodle}{fraction=0}%
+        \ifdim0pt<\moodle at sanction pt\relax
+          \setkeys{moodle}{fraction=-\moodle at sanction}%
+        \else
+          \setkeys{moodle}{fraction=0}%
+        \fi
       \else% multiple
-        \setkeys{moodle}{fraction=\moodle at autosanctions}%
+        \ifmoodle at AdvancedScoreMode
+          \setkeys{moodle}{fraction=0}%
+        \else
+          \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+        \fi
       \fi
     \fi
     \trim at spaces@in\moodle at answertext
@@ -3446,17 +4183,19 @@
     \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="html">}%
     \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
     \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at answertext@html</p>]]></text>}%
+    \ifmoodle at pluginfile
+      \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+    \fi
     \ifx\moodle at feedback\@empty\relax\else
       \trim at spaces@in\moodle at feedback
       \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-      \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+      \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
     \fi
     \addto at xml[2]{\moodle at answers@xml}{</answer>}%
   }%
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writemultiquestion{%
-  
     \writetomoodle{<question type="multichoice\ifmoodle at allornothing set\fi">}%
     \moodle at writecommondata%
     \ifmoodle at allornothing\else
@@ -3468,7 +4207,7 @@
 %    \end{macrocode}
 %
 % \subsubsection{True/False Question Front-End}
-% 
+%
 %    \begin{macrocode}
 % True/False has structure
 % \begin{truefalse}[options]{name}%
@@ -3486,7 +4225,7 @@
       \expandafter\gatheritems\xa{\BODY}%
       \let\moodle at questionheader=\gatheredheader
       %First, the LaTeX processing
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{truefalse}
       \else
@@ -3494,7 +4233,7 @@
         \par
         \noindent
         \moodle at makelatextag@qtype{truefalse}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
       \fi
       \par
       \noindent
@@ -3501,6 +4240,7 @@
       \moodle at questionheader
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
       \moodle at truefalse@latexprocessing
+      \moodle at end@samepage
       %Now, writing information to XML
       \@moodle at ifgeneratexml{%
         \setkeys{moodle}{penalty=1}%
@@ -3510,7 +4250,7 @@
           \gdef\moodle at answers@xml{}%
           \setkeys{moodle}{feedback={}}%
           \xa\loopthroughitemswithcommand\xa{\xa\savetruefalseanswer}%
-          \ifnum\c at numgathereditems=1\relax%
+          \ifnum\c at numgathereditems=1\relax
             \setcounter{currentitemnumber}{2}%
             \savetruefalseanswer{}
           \fi
@@ -3529,22 +4269,22 @@
 %  \ifnum\c at numgathereditems>2\relax%
 %    \PackageError{moodle}{Expecting at max two answers with truefalse type}
 %  \fi
-  \setcounter{moodle at numcorrectanswers}{0}%
+  \setcounter{moodle at NumStarredAnswers}{0}%
   \begin{itemize} \setlength\itemsep{0pt}\setlength\parskip{0pt}%
     \loopthroughitemswithcommand{\moodle at print@truefalse at answer}%
-    \ifnum\c at currentitemnumber=2%
-      \item \textbf{False}%
+    \ifnum\c at currentitemnumber=2\relax
+      \item \textbf{\GetTranslation{False}}%
     \fi
   \end{itemize}
   \ifmoodle at handout\else
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   \fi
-  \ifnum\c at moodle@numcorrectanswers=0\relax%
+  \ifnum\c at moodle@NumStarredAnswers=0\relax
     \PackageError{moodle}{No answer is explicitly marked as correct (*). Be sure one answer leads to points.}%
   \fi
-  \ifnum\c at moodle@numcorrectanswers>1\relax%
+  \ifnum\c at moodle@NumStarredAnswers>1\relax
     \PackageError{moodle}{Two answers are explicitly marked as correct (*). Be sure only one answer leads to points.}%
   \fi
 }
@@ -3567,28 +4307,28 @@
      \fi
    }%
    \def\moodle at print@truefalse at answer@int at int@empty{%
-     \ifnum\c at currentitemnumber=1%
-	\def\moodle at answertext{True}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{\GetTranslation{True}}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-	\def\moodle at answertext{False}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{\GetTranslation{False}}%
      \fi
      \item \textbf{\moodle at answertext}%
      \ifmoodle at handout\else
        \ifx\moodle at feedback\@empty\relax\else
-         ~\hfill \emph{$\rightarrow$ \moodle at feedback}%
+         ~\moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
        \fi
      \fi
    }%
    \def\moodle at print@truefalse at answer@int at int@int#1#2\@rdelim{%
-     \ifnum\c at currentitemnumber=1%
-	\def\moodle at answertext{True}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{\GetTranslation{True}}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-	\def\moodle at answertext{False}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{\GetTranslation{False}}%
      \fi
      \item \textbf{\moodle at answertext}%
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \def\test at i{#1}%
        %\trim at spaces@in\test at i
        \ifx\test at i\@star
@@ -3595,7 +4335,7 @@
          \ifmoodle at handout\else
            ~$\checkmark$%
          \fi
-         \stepcounter{moodle at numcorrectanswers}%
+         \stepcounter{moodle at NumStarredAnswers}%
        \else
          ~%
        \fi
@@ -3605,13 +4345,13 @@
            \trim at spaces@in\test at ii
            \ifx\test at ii\@empty\relax\else
              \ifx\test at i\@star%
-               \hfill \emph{$\rightarrow$ #2}%
+               \moodle at preFeedback \emph{$\rightarrow$ #2}%
              \else%
-               \hfill \emph{$\rightarrow$ #1#2}%
+               \moodle at preFeedback \emph{$\rightarrow$ #1#2}%
              \fi
            \fi
          \else
-           \hfill \emph{$\rightarrow$ \moodle at feedback}%
+           \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
          \fi
        \fi
      \fi
@@ -3639,19 +4379,22 @@
    }%
    \def\savetruefalseanswer at int@int at empty{%
      \setkeys{moodle}{fraction=0}%
-     \ifnum\c at currentitemnumber=1%
-	\def\moodle at answertext{true}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{true}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-	\def\moodle at answertext{false}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{false}%
      \fi
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
        \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+       \ifmoodle at pluginfile
+         \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+       \fi
        \ifx\moodle at feedback\@empty\relax\else
          \trim at spaces@in\moodle at feedback
          \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
        \fi
        \addto at xml[2]{\moodle at answers@xml}{</answer>}%
      \fi
@@ -3663,15 +4406,18 @@
      \else
        \setkeys{moodle}{fraction=0}%
      \fi
-     \ifnum\c at currentitemnumber=1%
-	\def\moodle at answertext{true}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{true}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-	\def\moodle at answertext{false}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{false}%
      \fi
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
        \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+       \ifmoodle at pluginfile
+         \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+       \fi
        \ifx\moodle at feedback\@empty\relax
          \def\test at ii{#2}
          \ifx\test at ii\@empty\relax\else
@@ -3680,18 +4426,18 @@
            \else%
              \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{#1#2}%
            \fi%
-           \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+           \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
          \fi
        \else
          \trim at spaces@in\moodle at feedback
          \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
        \fi
        \addto at xml[2]{\moodle at answers@xml}{</answer>}%
      \fi
    }%
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writetruefalsequestion{%
   \writetomoodle{<question type="truefalse">}%
     \moodle at writecommondata%
@@ -3699,7 +4445,7 @@
 %    \end{macrocode}
 %
 % \subsubsection{Matching Question Front-End}
-% 
+%
 %    \begin{macrocode}
 %\let\answer=\hfill
 
@@ -3710,33 +4456,37 @@
 \def\moodle at makelatextag@matching{%
   \ifmoodle at handout\else
     \ifmoodle at draganddrop
-      \moodle at makelatextagbox{Drag and drop}\relax%
+      \moodle at makelatextag@other{Drag and drop}\relax%
     \fi
     \ifmoodle at shuffle
-      \moodle at makelatextagbox{Shuffle}\relax%
+      \moodle at makelatextag@other{Shuffle}\relax%
     \fi
   \fi
 }
-
+\long\def\moodle at matching@left#1{%
+  \parbox[c]{.9\linewidth}{\raggedleft #1}\hfil\vrule width .5pt$\bullet$%
+}%
+\long\def\moodle at matching@right#1{%
+  $\bullet$\vrule width .5pt\hfil\parbox[c]{.9\linewidth}{#1}%
+}%
 \def\moodle at matching@latexprocessing{%
   \bgroup
     %\let\answer=\hfill
-    \par%\noindent
+    \par\noindent
     \ifmoodle at handout
-      \NewList{questionlist}
-      \NewList{answerlist}
+      \NewList{questionlist}%
+      \gdef\matcheslist{}%
+      \NewList{answerlist}%
+    \else
+      \long\def\matching at table@text{}%
     \fi
-    \def\matching at table@text{}%
-    %  \ifnum\c at numgathereditems>2\relax%
-%    \PackageError{moodle}{Expecting at max two answers with truefalse type}
-%  \fi
-    \setcounter{moodle at numcorrectanswers}{0}% Here this counter is for "questions" (items on the left column)
+    \setcounter{moodle at NumStarredAnswers}{0}% Here this counter is for "questions" (items on the left column)
     \loopthroughitemswithcommand{\moodle at print@matching at answer}%
-    \ifnum\c at numgathereditems<3%
-      \PackageWarning{moodle}{Moodle expects at least three "answers" with matching type}%
+    \ifnum\c at numgathereditems<3\relax
+      \PackageWarning{moodle}{Moodle expects at least three proposed matches in matching questions}%
     \fi
-    \ifnum\c at moodle@numcorrectanswers<2%
-      \PackageWarning{moodle}{Moodle expects at least two "questions" with the matching type}%
+    \ifnum\c at moodle@NumStarredAnswers<2\relax
+      \PackageWarning{moodle}{Moodle expects at least two items in matching questions}%
     \fi
     \ifmoodle at handout
       \ifmoodle at shuffle
@@ -3744,23 +4494,25 @@
       \else
         \let\moodle at matching@loop=\ForEachFirstItem
       \fi
-      \moodle at matching@loop{questionlist}{Question}{
-        \xdef\test at i{\Question}%
-        \ExtractRandomItem{answerlist}{Answer}%
-        \ifx\test at i\@empty
-          \xdef\matching at table@text{\expandonce\matching at table@text & & $\bullet$~\expandonce\Answer\\}%
-        \else
-          \xdef\matching at table@text{\expandonce\matching at table@text\expandonce\Question~$\bullet$ & & $\bullet$~\expandonce\Answer\\}%
-        \fi
+      \begin{minipage}{.43\linewidth}%
+      \moodle at matching@loop{questionlist}{Question}{%
+        \moodle at matching@left{\Question}%
+        \vskip 4pt\relax
       }%
-    \fi
-    \begin{tabular}{@{}>{\raggedleft}p{.45\linewidth}p{.1\linewidth}p{.45\linewidth}@{}}%
-      \matching at table@text
-    \end{tabular}%
-    \par
-    \ifmoodle at handout\else
+      \end{minipage}%
+      \hfill
+      \begin{minipage}{.43\linewidth}%
+      \ForEachFirstItem{answerlist}{Answer}{%
+        \moodle at matching@right{\Answer}%
+        \vskip 4pt\relax
+      }%
+      \end{minipage}%
+    \else
+      \begin{tabular}{@{}p{.43\linewidth}@{}p{.1\linewidth}@{}p{.43\linewidth}@{}}%
+        \matching at table@text
+      \end{tabular}%
       \ifx\moodle at generalfeedback\@empty\relax\else%
-        \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+        \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
       \fi
     \fi
   \egroup
@@ -3777,18 +4529,30 @@
   \def\test at i{#1}%
   \trim at spaces@in\test at i
   \ifmoodle at handout
-    \ifx\test at i\@empty
-      \InsertLastItem{questionlist}{\@empty}%
-    \else
+    \ifx\test at i\@empty\else
+      \stepcounter{moodle at NumStarredAnswers}%
       \InsertLastItem{questionlist}{#1}%
     \fi
-    \InsertLastItem{answerlist}{#2}%
+    \edef\test at ii{\detokenize{#2}}%
+    \trim at spaces@in\test at ii
+    \trim at spaces@in\test at ii% don't know why the 2nd call is required
+    % add proposed match only if not already in the list
+    \xifinlist{\expandonce\test at ii}{\matcheslist}{}{%
+      \listeadd\matcheslist{\expandonce\test at ii}%
+      % matches are always proposed shuffled
+      \InsertRandomItem{answerlist}{#2}%
+    }%
   \else
     \ifx\test at i\@empty
-      \g at addto@macro\matching at table@text{&&$\bullet$~#2\\}%
+      \xa\g at addto@macro\xa\matching at table@text\xa{%
+        &&\moodle at matching@right{#2}\\\\\relax%
+      }%
     \else
-      \stepcounter{moodle at numcorrectanswers}%
-      \xa\g at addto@macro\xa\matching at table@text\xa{\test at i~$\bullet$&\leavevmode\cleaders\hb at xt@.44em{\hss$\cdot$\hss}\hfill\kern\z@&$\bullet$~#2\\}%
+      \stepcounter{moodle at NumStarredAnswers}%
+      \xa\g at addto@macro\xa\matching at table@text\xa{%
+        \moodle at matching@left{#1}&\leavevmode\leaders\hb at xt@.44em{\hss$\cdot$\hss}\hfill\kern\z@%
+        &\moodle at matching@right{#2}\\\\\relax
+      }%
     \fi
   \fi
 }%
@@ -3812,33 +4576,34 @@
      \def\moodle at subanswertext{#2}%
      \trim at spaces@in\moodle at subquestiontext
      \xa\converttohtmlmacro\xa\moodle at subquestiontext@htmlized\xa{\moodle at subquestiontext}%
-     \trim at spaces@in\moodle at subanswertext
-     \ifmoodle at draganddrop
-       \xa\converttohtmlmacro\xa\moodle at subanswertext@htmlized\xa{\moodle at subanswertext}%
-     \fi
      \addto at xml[2]{\moodle at answers@xml}{<subquestion format="html">}%
      \ifx\moodle at subquestiontext\@empty
        \addto at xml[4]{\moodle at answers@xml}{  <text></text>}%
      \else
-       \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at subquestiontext@htmlized</p>]]></text>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at subquestiontext@htmlized</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi}%
      \fi
+     \trim at spaces@in\moodle at subanswertext
+     \trim at spaces@in\moodle at subanswertext% don't know why but a second call seems required...
+     %\ifmoodle at draganddrop
+       \xa\converttohtmlmacro\xa\moodle at subanswertext@htmlized\xa{\moodle at subanswertext}%
+     %\fi
      \ifmoodle at draganddrop
 %       \show\moodle at subanswertext@htmlized
-       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[<p>\moodle at subanswertext@htmlized</p>]]></text></answer>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[<p>\moodle at subanswertext@htmlized</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</answer>}%
      \else
-%       \show\moodle at subanswertext
-       \addto at xml[4]{\moodle at answers@xml}{  <answer><text>\moodle at subanswertext</text></answer>}%
+%       \show\moodle at subanswertext@htmlized
+       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[\moodle at subanswertext@htmlized]]></text></answer>}%
      \fi
 %     \ifx\moodle at feedback\@empty\relax\else
 %       \trim at spaces@in\moodle at feedback
 %       \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-%       \addto at xml[4]{\moodle at answers@xml}{  <feedback 
+%       \addto at xml[4]{\moodle at answers@xml}{  <feedback
 %format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
 %     \fi
      \addto at xml[2]{\moodle at answers@xml}{</subquestion>}%
    }%
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writematchingquestion{%
   \ifmoodle at draganddrop
     \writetomoodle{<question type="ddmatch">}%
@@ -3855,17 +4620,17 @@
 % \subsection{Cloze Questions}
 % Because cloze questions are so complicated, they get their own section of code.
 % The cloze strategy is as follows.
-% 
+%
 % All subquestions show up as part of the question body text.
 % For each type of subquestion, we have a cloze-version environment
-% that actually has 2 versions, depending on whether we are doing LaTeX or XML processing.
-% So the main environment is quite typical: 
+% that actually has 2 versions, depending on whether we are doing LaTeX or \XML\ processing.
+% So the main environment is quite typical:
 % \begin{enumerate}
 %   \item Process the body as LaTeX.
 %         During this run, a |\begin{multi}| etc.~will be processed for display onscreen.
-%   \item Then save the body as the questiontext for XML.
+%   \item Then save the body as the questiontext for \XML.
 %         During this run, a |\begin{multi}| etc.~will be parsed and turned into
-%         cloze code as part of the XML questiontext.
+%         cloze code as part of the \XML\ questiontext.
 % \end{enumerate}
 %    \begin{macrocode}
 % LATEX PROCESSING
@@ -3880,7 +4645,7 @@
     % A cloze question won't have any \item's in it, so we just use \BODY.
     \moodle at enableclozeenvironments
     %First, the LaTeX processing.
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{cloze}
       \else
@@ -3897,12 +4662,13 @@
       %\csname moodle at cloze@latexprocessing\endcsname
       \ifmoodle at handout\else
         \ifx\moodle at generalfeedback\@empty\relax\else%
-          \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+          \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
         \fi
       \fi
+      \moodle at end@samepage
     %Now, writing information to memory.
     \@moodle at ifgeneratexml{%
-      \xa\questiontext\xa{\BODY}% Save the question text as HTML.
+      \xa\questiontext\xa{\BODY}% Save the question text as \HTML.
       \writeclozequestion
     }{}%
   \egroup%
@@ -3917,7 +4683,7 @@
   \let\endshortanswer=\endclozeshortanswer
 }
 
-% WRITING QUESTION TO XML FILE
+% WRITING QUESTION TO \XML\ FILE
 \gdef\writeclozequestion{%
   \writetomoodle{<question type="cloze">}%
     \moodle at writequestionname%
@@ -3930,14 +4696,53 @@
 }%
 %    \end{macrocode}
 %
+% Utility to check the validity of fractions and points inside cloze subquestions.
+%    \begin{macrocode}
+\newdimen\moodle at tmpdim
+\def\moodle at checkclozefraction{%
+  \moodle at tmpdim=\moodle at fraction pt\relax
+  % Rounding is performed in three steps:
+  % 1) round(x)=floor(x+1/2)
+  \advance\moodle at tmpdim by .5pt\relax
+  % 2) floor(x)=trunc(x) if x>0, and floor(x)=trunc(x-1) if x<0
+  \ifdim\moodle at tmpdim<0pt\relax\advance\moodle at tmpdim by -1pt\fi
+  % 3) Truncation because the quantum of TeX dimensions is 1/65536-th of a point.
+  \divide\moodle at tmpdim by 65536\relax\multiply\moodle at tmpdim by 65536\relax
+  \def\moodle at tmpval{\strip at pt\moodle at tmpdim}%
+  \ifdim\moodle at tmpdim=\moodle at fraction pt\else
+    \PackageWarning{moodle}{in cloze questions, fractions must be integers. Rounding \moodle at fraction\space to \moodle at tmpval}%
+  \fi
+  \xdef\moodle at fraction{\moodle at tmpval}% in any case, take eventual decimals out (e.g. change 10.0 for 10)
+}%
+
+\def\moodle at checkclozegrade{%
+  \moodle at tmpdim=\csname moodle at default grade\endcsname pt\relax
+  \ifdim\moodle at tmpdim<1 pt\relax
+    \PackageWarning{moodle}{for cloze questions, the default grade must be a positive integer. Changing the default grade from \csname moodle at default grade\endcsname\space to 1}%
+    \csdef{moodle at default grade}{1}%
+  \else % Rounding is performed in three steps:
+    % 1) round(x)=floor(x+1/2)
+    \advance\moodle at tmpdim by .5pt\relax
+    % 2) floor(x)=trunc(x) if x>0, and floor(x)=trunc(x-1) if x<0
+    \ifdim\moodle at tmpdim<0pt\relax\advance\moodle at tmpdim by -1pt\fi
+    % 3) Truncation because the quantum of TeX dimensions is 1/65536-th of a point.
+    \divide\moodle at tmpdim by 65536\relax\multiply\moodle at tmpdim by 65536\relax
+    \def\moodle at tmpval{\strip at pt\moodle at tmpdim}%
+    \ifdim\moodle at tmpdim=\csname moodle at default grade\endcsname pt\else
+      \PackageWarning{moodle}{for cloze questions, the default grade must be a positive integer. Rounding \csname moodle at default grade\endcsname\space to \moodle at tmpval}%
+    \fi
+    \csedef{moodle at default grade}{\moodle at tmpval}% in any case, take eventual decimals out (e.g. change 10.0 for 10)
+  \fi
+}%
+%    \end{macrocode}
+%
 % \subsubsection{Cloze Multiple Choice Questions}
-% 
+%
 %    \begin{macrocode}
-
 \NewEnviron{clozemulti}[1][]{%
   \bgroup
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
+    \moodle at checkclozegrade
     \expandafter\gatheritems\xa{\BODY}%
     \let\moodle at questionheader=\gatheredheader
     \ifhtmlizer at active
@@ -3946,23 +4751,28 @@
       \xa\g at addto@macro\xa\moodle at clozemulti@output\xa{\moodle at questionheader}%
       \def\clozemulti at coding{}%
       \edef\clozemulti at coding{\csname moodle at default grade\endcsname:}%
-      \ifmoodle at multiple
-        \PackageWarning{moodle}{Cloze Multiresponse only supported by Moodle 3.5+}
+      \ifmoodle at single
+        \g at addto@macro{\clozemulti at coding}{MULTICHOICE}%
+      \else
+        \moodle at WarningOrError{3}{5}{Cloze Multiresponse}%
         \g at addto@macro{\clozemulti at coding}{MULTIRESPONSE}%
-      \else
-        \g at addto@macro{\clozemulti at coding}{MULTICHOICE}%
       \fi
       \ifcase\moodle at multi@mode\relax
          % Case 0: dropdown box style
-         \ifmoodle at shuffle
-           \g at addto@macro{\clozemulti at coding}{_}%
-         \fi
+        \ifmoodle at single\else
+           \PackageError{moodle}{Inline mode (dropdown box) incompatible with multiresponse.}
+        \fi
+        \ifmoodle at shuffle
+          \g at addto@macro{\clozemulti at coding}{_}%
+        \fi
       \or
         % Case 1: vertical style
-        \ifmoodle at multiple
-          \PackageError{moodle}{Vertical mode (dropdown box) incompatible with multiresponse.}
+        \ifmoodle at single
+          \g at addto@macro{\clozemulti at coding}{_V}%
         \else
-          \g at addto@macro{\clozemulti at coding}{_V}%
+           \ifmoodle at shuffle
+             \g at addto@macro{\clozemulti at coding}{_}%
+           \fi
         \fi
       \else
         % Case 2: horizontal radio buttons
@@ -3969,7 +4779,7 @@
         \g at addto@macro{\clozemulti at coding}{_H}%
       \fi
       \ifmoodle at shuffle
-        \PackageWarning{moodle}{Cloze Multi Shuffling only supported by Moodle 3.0+}
+        \moodle at WarningOrError{3}{0}{Cloze Multi Shuffling}
         \g at addto@macro{\clozemulti at coding}{S:}%
       \else
         \g at addto@macro{\clozemulti at coding}{:}%
@@ -3991,10 +4801,11 @@
       \noindent
       \moodle at makelatextag@qtype{multi}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@multi
       \fi
       \def\cloze at multichoice@table at text{}%
+      \ifmoodle at single\relax\else\moodle at InspectMultipleAnswers\fi
       \ifmoodle at handout\NewList{answerlist}\fi
       %\let\moodle at feedback=\@empty
       \loopthroughitemswithcommand{\moodle at print@clozemultichoice at answer}%
@@ -4013,7 +4824,7 @@
         \par\noindent
         \ifmoodle at handout
           \begin{tabular}[t]{|p{.45\linewidth}|}
-        \else 
+        \else
           \begin{tabular}[t]{|p{.45\linewidth}|p{.45\linewidth}|}
 %          answer & feedback \\\hline\hline
         \fi
@@ -4039,13 +4850,15 @@
   \egroup%
 }[\endclozemulti at code]%
 
-
 \long\def\moodle at print@clozemultichoice at answer#1{%
+%\bgroup
   \let\moodle at feedback=\@empty
   \moodle at print@clozemultichoice at answer@int#1 \@rdelim%
+%\egroup
 }%
 \newcommand\moodle at print@clozemultichoice at answer@int[1][]{%
-  \setkeys{moodle}{fraction=0,#1}%
+  \let\moodle at fraction\@empty%
+  \setkeys{moodle}{#1}%
   \moodle at print@clozemultichoice at answer@int at int%
 }%
 \long\def\moodle at print@clozemultichoice at answer@int at int#1#2\@rdelim{%
@@ -4070,13 +4883,43 @@
   \trim at spaces@in\moodle at answertext
   \trim at spaces@in\moodle at answertext
   \ifmoodle at handout\else
-    \ifx\moodle at fraction\@hundred
-      \g at addto@macro\moodle at answertext{$~\checkmark$}%
-    \else
-      \moodle at checkfraction
-      \ifdim0pt=\moodle at fraction pt\relax\else
-        \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
+    \ifmoodle at single%
+      \ifx\moodle at fraction\@empty\relax%
+        \ifdim0pt<\moodle at sanction pt\relax
+          \setkeys{moodle}{fraction=-\moodle at sanction}%
+        \else
+          \setkeys{moodle}{fraction=0}%
+        \fi
       \fi
+      \moodle at checkclozefraction
+      \ifx\moodle at fraction\@hundred%
+        \trim at spaces@in\moodle at answertext%
+        \g at addto@macro\moodle at answertext{$~\checkmark$}%
+      \else
+        \ifdim0pt=\moodle at fraction pt\relax\else%
+          \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
+        \fi
+      \fi
+    \else% multiple
+      \ifx\moodle at fraction\@empty\relax%
+        \ifmoodle at AdvancedScoreMode
+          \setkeys{moodle}{fraction=0}%
+        \else
+          \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+        \fi
+      \else
+        \ifmoodle at AdvancedScoreMode
+          \moodle at checkclozefraction
+          \ifdim0pt<\moodle at fraction pt\relax
+            \moodle at autoscore@tmp=\moodle at PositiveScoreFactor\relax%
+            \multiply\moodle at autoscore@tmp by \moodle at fraction\relax%
+            \xdef\moodle at fraction{\strip at pt\moodle at autoscore@tmp}%
+          \fi
+        \else
+          \setkeys{moodle}{fraction=\moodle at AutoScore}%
+        \fi
+      \fi
+      \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
     \fi
   \fi
   \ifcase\moodle at multi@mode\relax
@@ -4088,7 +4931,7 @@
   \or % Case 1
     \ifmoodle at handout\else
       \ifx\moodle at feedback\@empty\relax\else
-        \xdef\moodle at answertext{\expandonce\moodle at answertext \hfill \expandonce\emph{$\rightarrow$ \expandonce\moodle at feedback}}%
+        \xdef\moodle at answertext{\expandonce\moodle at answertext \moodle at preFeedback \expandonce\emph{$\rightarrow$ \expandonce\moodle at feedback}}%
       \fi
     \fi
   \else % otherwise
@@ -4130,9 +4973,9 @@
   \trim at spaces@in\moodle at answertext
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozemulti at coding{=}%
+    \g at addto@macro\clozemulti at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozemulti at coding{\expandonce\clozemulti at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -4145,14 +4988,14 @@
 %    \end{macrocode}
 %
 % \subsubsection{Cloze Numerical Questions}
-% 
+%
 %    \begin{macrocode}
 \NewEnviron{clozenumerical}[1][]{%
   \bgroup
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
+    \moodle at checkclozegrade
     \ifhtmlizer at active
       %HTML version
       \def\moodle at clozenumerical@output{}%
@@ -4175,7 +5018,7 @@
       \noindent
       \moodle at makelatextag@qtype{numerical}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@numerical
         \par
         \noindent
@@ -4205,29 +5048,29 @@
   \setkeys{moodle}{#1}%
   \moodle at print@clozenumerical at answer@int at int%
 }%
+\def\moodle at zero{0}%
 \def\moodle at print@clozenumerical at answer@int at int#1\@rdelim{%
   \ifx\moodle at fraction\@hundred
     \def\moodle at clozenumericalprint@fraction{$~\checkmark$}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \edef\moodle at clozenumericalprint@fraction{$(~\moodle at fraction\%)$}%
   \fi
-  \ifnum\z@=\moodle at tolerance
+  \ifx\moodle at zero\moodle at tolerance%
     \def\moodle at clozenumericalprint@tolerance{}%
   \else
-    \edef\moodle at clozenumericalprint@tolerance{$\,\pm\,$\moodle at printnum{\moodle at tolerance}}%
+    \edef\moodle at clozenumericalprint@tolerance{$\,\pm\,$\moodle at printnum{\expandonce\moodle at tolerance}}%
   \fi
-  \xdef\test at i{\trim at spaces{#1}}%
+  \gdef\test at i{#1}%
+  \trim at spaces@in\test at i
   \ifx\test at i\@star
-    \xdef\moodle at clozenumericalprint@line{#1~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
+    \xdef\moodle at clozenumericalprint@line{\expandonce\test at i~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
   \else
-    \xdef\moodle at clozenumericalprint@line{\moodle at printnum{#1}\moodle at clozenumericalprint@tolerance~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
+    \xdef\moodle at clozenumericalprint@line{\moodle at printnum{\expandonce\test at i}\expandonce\moodle at clozenumericalprint@tolerance~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
   \fi
   \xa\g at addto@macro\xa\cloze at numerical@table at text\xa{\moodle at clozenumericalprint@line \\\hline}%
 }%
 
-
-
 \def\saveclozenumericalanswer#1{%
   \bgroup
     \saveclozenumericalanswer at int#1\moodle at answer@rdelim
@@ -4244,9 +5087,9 @@
   \def\moodle at answertext{#1}%
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozenumerical at coding{=}%
+    \g at addto@macro\clozenumerical at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozenumerical at coding{\expandonce\clozenumerical at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -4264,27 +5107,20 @@
 %    \end{macrocode}
 %
 % \subsubsection{Cloze Short Answer Questions}
-% 
+%
 %    \begin{macrocode}
 \NewEnviron{clozeshortanswer}[1][]{%
   \bgroup
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
-    %Because nesting conditionals built by \csname doesn't work well,
-    %we'll test '\ifmoodle at case sensitive' now and save the result in \count0.
-    \csname ifmoodle at case sensitive\endcsname
-      \count0=1\relax
-    \else
-      \count0=0\relax
-    \fi
+    \moodle at checkclozegrade
     \ifhtmlizer at active
       %HTML version
       \def\moodle at clozeshortanswer@output{}%
       \xa\g at addto@macro\xa\moodle at clozeshortanswer@output\xa{\moodle at questionheader}%
       \def\clozeshortanswer at coding{}%
-      \ifnum\count0=1\relax
+      \ifmoodle at usecase
         \edef\clozeshortanswer at coding{\csname moodle at default grade\endcsname:SHORTANSWER_C:}%
       \else
         \edef\clozeshortanswer at coding{\csname moodle at default grade\endcsname:SHORTANSWER:}%
@@ -4305,7 +5141,7 @@
       \noindent
       \moodle at makelatextag@qtype{shortanswer}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@shortanswer
         \par
         \noindent
@@ -4339,7 +5175,7 @@
   \ifx\moodle at fraction\@hundred
     \def\moodle at clozeshortanswerprint@fraction{$~\checkmark$}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \edef\moodle at clozeshortanswerprint@fraction{$~(\moodle at fraction\%)$}%
   \fi
   \xdef\moodle at clozeshortanswerprint@line{#1~\moodle at clozeshortanswerprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
@@ -4346,8 +5182,6 @@
   \xa\g at addto@macro\xa\cloze at shortanswer@table at text\xa{\moodle at clozeshortanswerprint@line \\\hline}%
 }%
 
-
-
 \def\saveclozeshortansweranswer#1{%
   \bgroup
     \saveclozeshortansweranswer at int#1\moodle at answer@rdelim
@@ -4364,9 +5198,9 @@
   \def\moodle at answertext{#1}%
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozeshortanswer at coding{=}%
+    \g at addto@macro\clozeshortanswer at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozeshortanswer at coding{\expandonce\clozeshortanswer at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -4379,9 +5213,9 @@
 %    \end{macrocode}
 %
 % \section{Converting \LaTeX\ to HTML}
-% A lot of work must now be done to convert the \LaTeX\ code 
-% of a question or answer into HTML code with embedded \TeX\ for math.
-% 
+% A lot of work must now be done to convert the \LaTeX\ code
+% of a question or answer into \HTML\ code with embedded \TeX\ for math.
+%
 % \subsection{Catcode Setup}
 % First, we create versions of the special characters with catcode 12, ``other.''
 %    \begin{macrocode}
@@ -4391,8 +5225,9 @@
  \catcode`\^=12\gdef\othercaret{^}%
  \catcode`\$=12\gdef\otherdollar{$}%
  \catcode`\%=12\gdef\otherpercent{%}
- \catcode`\%=12\gdef\otherlbracket{[}
- \catcode`\%=12\gdef\otherrbracket{]}}%
+ \catcode`\[=12\gdef\otherlbracket{[}
+ \catcode`\]=12\gdef\otherrbracket{]}}%
+{\catcode`\=\string=12\gdef\otherequal{=}}%
 {\catcode`\ =12\gdef\otherspace{ }}%
 {\ttfamily\catcode`\|=0\catcode`\\=12\relax|gdef|otherbackslash{\}}%
 {\catcode`\[=1\catcode`\]=2\catcode`\{=12\catcode`\}=12%
@@ -4407,11 +5242,12 @@
 \edef\@otherdollar{\otherdollar}%
 \edef\@otherbackslash{\otherbackslash}%
 \edef\@othertilde{\othertilde}%
+\edef\@otherequal{\otherequal}%
 %    \end{macrocode}
 %
 % Next, we define commands to change catcodes to a suitable verbatim mode
 % for transcription.
-% 
+%
 %    \begin{macrocode}
 { \catcode`\[=1\relax
   \catcode`\]=2\relax
@@ -4459,17 +5295,17 @@
 %    \end{macrocode}
 %
 % \subsection{Detokenization and Retokenization}
-% 
+%
 % We will be processing a \TeX\ token list.
-% Based on its content, sometimes we will want it to be detokenized to 
+% Based on its content, sometimes we will want it to be detokenized to
 % individual characters, but other times we want it retokenized so that
 % \TeX's own parsing mechanism can gather up the parameters of macros.
 % We use the e\TeX\ primitive command |\scantokens| to do this.
-% 
+%
 % The following code (catcodes, groupings and all) defines a |\scantokens at to@macro| macro.
 % That will assemble and disassemble strings of tokens
 % using any changing schemes of catcodes we desire.
-% 
+%
 % We define |^^A| to be |\gdef\stm at saved|, while |^^B| and |^^C| are substitutes for |{| and |}|, respectively.
 % This permits us to define |\scantokens at to@macro| in a peculiar catcode regime.
 %    \begin{macrocode}
@@ -4486,7 +5322,7 @@
       \catcode`\^^A=13\catcode`\^^B=1\catcode`\^^C=2\relax
       \xa\def\xa\arg\xa{\xa^^A\xa^^B\texttorescan^^C}%
       #2%
-      \catcode\endlinechar=9\relax% 
+      \catcode\endlinechar=9\relax%
       %\scantokens always sees an end-of-line character at its end and converts it to a space.
       %The catcode change sets \scantokens to ignore end-of-line chars.
       %In practice, we're always calling \scantokens on previously scanned text anyway,
@@ -4537,9 +5373,9 @@
 %    \end{macrocode}
 %
 % \subsection{Separation}
-% 
+%
 % This code separates a string of tokens into two parts.
-% Its parameters, |#1#2|, consist of tokenized text, 
+% Its parameters, |#1#2|, consist of tokenized text,
 % plus one terminal |\@htmlize at stop|.
 % We are trying to break up the text into its first group and the remainder.
 % This |\@htmlize at stop| is needed in case |#2| has the form ``|{...}|'',
@@ -4560,7 +5396,7 @@
 %    \end{macrocode}
 %
 % The next line creates the macro |\htmlize at remove@stopcode|,
-% which removes the characters ``|\@htmlize at stop |'' from the end of a 
+% which removes the characters ``|\@htmlize at stop |'' from the end of a
 % detokenized sequence.
 % Its syntax when called is simply |\htmlize at remove@stopcode |\meta{material},
 % with no delimiters, since the ``|\@htmlize at stop |'' is itself the delimiter.
@@ -4567,9 +5403,9 @@
 %    \begin{macrocode}
 \xa\def\xa\htmlize at remove@stopcode\xa#\xa1\@htmlize at stop@detokenized{#1}%
 %    \end{macrocode}
-% 
+%
 % \subsection{Main Code: the HTMLizer}
-% 
+%
 %    \begin{macrocode}
 \newif\ifhtmlizer at active
 \htmlizer at activefalse
@@ -4583,6 +5419,9 @@
 \long\def\converttohtmlmacro#1#2{%
   \grouplevel=0\relax
   \def\htmlize at output{}%
+  \ifmoodle at pluginfile
+    \gdef\htmlize at embeddedfiletags{}%
+  \fi
   \htmlizer at activetrue%
   \converttohtml at int{#2}%
   \htmlizer at activefalse%
@@ -4601,6 +5440,7 @@
 \def\@lt{<}%
 \def\@gt{>}%
 \def\@dash{-}%
+\def\@dq{"}%
 
 \long\def\htmlize at recursive@i#1#2#3\htmlize at rdelim@i{%
   % #1#2#3 is a sequence of tokens.  All should be categories 11 (letter) or 12 (other).
@@ -4612,24 +5452,28 @@
     \let\htmlize at next@i=\relax
   \else
     \ifx\test at i\@otherlbrace%
-      \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
-      \bgroup
-        \normalcatcodes
+      \ifx\test at ii\@otherrbrace%
+        \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherlbrace\otherrbrace}}{}%
+        \def\htmlize at next@i{\htmlize at recursive@i#3\htmlize at rdelim@i}%
+      \else
+        \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
+        \bgroup
+          \normalcatcodes
         %We need to rescan the input as TeX code,
         % so TeX can automatically pull off the first group in braces.
         % First, let's get rid of the terminal \@htmlize at stop codes.
-        {\def\@htmlize at stop{}\xdef\htmlize at scrap{#1#2#3}}%
-        \let\htmlize at text@to at rescan=\htmlize at scrap%
+          {\def\@htmlize at stop{}\xdef\htmlize at scrap{#1#2#3}}%
+          \let\htmlize at text@to at rescan=\htmlize at scrap%
         % Next, we retokenize the code.
-        \xa\retokenizenormal at to@macro\xa\htmlize at rescanned\xa{\htmlize at text@to at rescan}%
+          \xa\retokenizenormal at to@macro\xa\htmlize at rescanned\xa{\htmlize at text@to at rescan}%
         % Now break it up into two pieces.
-        \xa\htmlize at grabblock\htmlize at rescanned\@htmlize at stop\htmlize at rdelim@ii%
+          \xa\htmlize at grabblock\htmlize at rescanned\@htmlize at stop\htmlize at rdelim@ii%
         % The first piece, \htmlize at blockinbraces, will be passed as a unit to \converttohtml at int.
         % The second part, \htmlize at remainder, will continue at this depth of grouping.
         % Therefore we'll detokenize \htmlize at remainder here.
-        \xa\ultradetokenize at to@macro\xa\htmlize at remainder@detokenized\xa{\htmlize at remainder}%
-        \edef\htmlize at remainder@detokenized{\xa\htmlize at remove@stopcode\htmlize at remainder@detokenized}%
-        % 
+          \xa\ultradetokenize at to@macro\xa\htmlize at remainder@detokenized\xa{\htmlize at remainder}%
+          \edef\htmlize at remainder@detokenized{\xa\htmlize at remove@stopcode\htmlize at remainder@detokenized}%
+        %
         % Now build \htmlize at next@i.
         % When done, should look like
         %   \converttohtml at int{\htmlize at blockinbraces}%
@@ -4637,22 +5481,23 @@
         %   \htmlize at recursive@i\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i%
         % but with all three arguments expanded.
         % Note that we are running
-        \gdef\htmlize at scrap{\converttohtml at int}%
-        \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\htmlize at blockinbraces}}%
-        \g at addto@macro\htmlize at scrap{\g at addto@macro\htmlize at output}%
-        \ifmoodle at clozemode
-          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherbackslash\otherrbrace}}%
+          \gdef\htmlize at scrap{\converttohtml at int}%
+          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\htmlize at blockinbraces}}%
+          \g at addto@macro\htmlize at scrap{\g at addto@macro\htmlize at output}%
+          \ifmoodle at clozemode
+            \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherbackslash\otherrbrace}}%
 %          \moodle at ifmathmode{\xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherbackslash}}}%
 %                            {}%
-        \else
-          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherrbrace}}%
-        \fi
-        \g at addto@macro\htmlize at scrap{\htmlize at recursive@i}%
-        \xa\g at addto@macro\xa\htmlize at scrap\xa{\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
+          \else
+            \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherrbrace}}%
+          \fi
+          \g at addto@macro\htmlize at scrap{\htmlize at recursive@i}%
+          \xa\g at addto@macro\xa\htmlize at scrap\xa{\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
         % Okay, that's done.  It's stored in a global macro.
         % Now we get it out of this group.
-      \egroup
-      \let\htmlize at next@i=\htmlize at scrap
+        \egroup
+        \let\htmlize at next@i=\htmlize at scrap
+      \fi
     \else
       \ifx\test at i\@otherdollar%
         % Math shift character.
@@ -4669,7 +5514,7 @@
         \fi% \ifx\test at ii\@otherdollar
         % Now we resume work.
         % The \htmlize at xxxxxxmathshift@replace macro stored the remaining text in \htmlize at remaining@text.
-        % Note that since we never detokenized and retokenized #1#2#3, 
+        % Note that since we never detokenized and retokenized #1#2#3,
         % \htmlize at remaining@text still includes the terminating \@htmlize at stop\@htmlize at stop\@htmlize at stop.
         \def\htmlize at next@i{\xa\htmlize at recursive@i\htmlize at remaining@text\htmlize at rdelim@i}%
       \else
@@ -4687,9 +5532,9 @@
           %    This may involve work in TeX's stomach (e.g., with counters)
           %    or with external files (e.g., image processing).
           %    The command may directly add material to \htmlize at output,
-          %    but it should not typeset anything and should vanish from the 
+          %    but it should not typeset anything and should vanish from the
           %    input stream when it is done.
-          %       When it's done, we somehow need to detokenize and resume 
+          %       When it's done, we somehow need to detokenize and resume
           %    processing the remainder of the input stream.
           %       Only commands explicitly crafted (or modified) to work
           %    with moodle.sty can possibly do all this!
@@ -4701,10 +5546,10 @@
           %    Environments: \begin{array}
           %
           % #2 is only for items on a specific list.
-          % #1 is anything that runs in TeX's mouth.  
+          % #1 is anything that runs in TeX's mouth.
           %    We could keep a list and give users a way to add to it.
           %    I could also try expanding macros, using \ifcsmacro from etoolbox.sty
-          % 
+          %
           % The first step is to figure out what control sequence we're dealing with.
           % First, let's get rid of the terminal \@htmlize at stop codes.
           {\def\@htmlize at stop{}\xdef\htmlize at scrap{#1#2#3}}%
@@ -4744,7 +5589,7 @@
                 %The \bgroup is to active the environments.
                 %The matching \egroup is found in \htmlize at do@actionenv.
               }{%An environment to pass to the HTML
-                %We just pass the backslash from "\begin" and move on. 
+                %We just pass the backslash from "\begin" and move on.
                 \g at addto@macro\htmlize at output{#1}%
                 \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
               }%
@@ -4787,7 +5632,7 @@
                 \xa\ultradetokenize at to@macro\xa\htmlize at remaining@text\xa{\htmlize at scrap}%
                 \def\htmlize at next@i{\xa\htmlize at recursive@i\htmlize at remaining@text\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
               \else
-                % control sequence to be transcribed to XML.
+                % control sequence to be transcribed to \XML.
                 %\edef\ds{Must pass on \xa\string\@htmlize at cs}\show\ds
                 \g at addto@macro\htmlize at output{#1}%
                 \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
@@ -4796,8 +5641,9 @@
           \fi% \ifx\@htmlize at cs\@@begin at cs
         \else%
           \ifx\test at i\@othertilde%
-            % The ~ becomes non-breaking space  
-            \g at addto@macro\htmlize at output{\otherampersand nbsp;}%
+            % The ~ becomes non-breaking space   outside of math mode
+            \moodle at ifmathmode{\g at addto@macro\htmlize at output{\@othertilde}}%
+                              {\g at addto@macro\htmlize at output{\otherampersand nbsp;}}%
             \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
           \else
             \ifx\test at i\@lsinglequote%
@@ -4813,26 +5659,25 @@
               \ifx\test at i\@rsinglequote%
                 \ifx\test at ii\@rsinglequote% Double right quote
                   %AAedit 2021.01.06: in math mode, you should write 2 single right quotes, for second derivatives
-                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand rsquo;\otherampersand rsquo;}}%
+                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{''}}%
                                     {\g at addto@macro\htmlize at output{\otherampersand rdquo;}}%
                   \def\htmlize at next@i{\htmlize at recursive@i#3\htmlize at rdelim@i}%
                 \else% Single right quote
-                  \g at addto@macro\htmlize at output{\otherampersand rsquo;}%
+                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{'}}%
+                                    {\g at addto@macro\htmlize at output{\otherampersand rsquo;}}%
                   \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                 \fi% \ifx\test at ii\@rsinglequote%
               \else
                 \ifx\test at i\@doublequote
-                  \g at addto@macro\htmlize at output{\otherampersand rdquo;}%
+                  \g at addto@macro\htmlize at output{\otherampersand quot;}%
                   \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                 \else
                   \ifx\test at i\@lt
-                    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand lt;}}%
-                                      {\g at addto@macro\htmlize at output{<}}%
+                    \g at addto@macro\htmlize at output{\otherampersand lt;}
                     \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                   \else
                     \ifx\test at i\@gt
-                      \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand gt;}}%
-                                        {\g at addto@macro\htmlize at output{>}}%
+                      \g at addto@macro\htmlize at output{\otherampersand gt;}%
                       \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                     \else
                       \ifx\test at i\@dash
@@ -4845,9 +5690,19 @@
                           \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                         \fi
                       \else
-                        % Default case: write first token to output, call self on remaining tokens.
-                        \g at addto@macro\htmlize at output{#1}%
-                        \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \ifx\test at i\@otherequal
+                          \ifmoodle at clozemode
+                            \moodle at ifmathmode{\g at addto@macro\htmlize at output{=}}%
+                                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 61;}}%
+                          \else
+                            \g at addto@macro\htmlize at output{=}%
+                          \fi
+                          \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \else
+                          % Default case: write first token to output, call self on remaining tokens.
+                          \g at addto@macro\htmlize at output{#1}%
+                          \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \fi% \ifx\test at i\@otherequal
                       \fi% \ifx\test at i\@dash
                     \fi% \ifx\test at i\@gt
                   \fi% \ifx\test at i\@lt
@@ -4866,9 +5721,9 @@
 \def\@rsinglequote{'}%
 \def\@doublequote{"}%
 %    \end{macrocode}
-% 
+%
 % \subsection{Math Mode handling}
-% 
+%
 % In the following, note that the |\|\meta{*}|mathrightdelim|'s gobble an argument.
 % This is so ``|$a$ is...|" can turn into
 %       ``\ldots |a\|\meta{*}|mathrightdelim{} is...|"
@@ -4877,9 +5732,9 @@
 \edef\inlinemathleftdelim{\otherbackslash(}%
 \def\inlinemathrightdelim#1{\advancemathmodecounter{-1}%
                             \g at addto@macro\htmlize at output{\otherbackslash)}}%
-\edef\displaymathleftdelim{\otherbackslash[}%
+\edef\displaymathleftdelim{<CENTER>\otherbackslash[}%
 \def\displaymathrightdelim#1{\advancemathmodecounter{-1}%
-                             \g at addto@macro\htmlize at output{\otherbackslash]}}%
+                             \g at addto@macro\htmlize at output{\otherbackslash]</CENTER>}}%
 \long\def\htmlize at inlinemath@recursive at i#1#2#3\htmlize at rdelim@i{%
   % inspired by \htmlize at recursive@i
   \def\test at i{#1}%
@@ -4926,9 +5781,9 @@
 }
 
 %    \end{macrocode}
-% 
+%
 % \subsection{Engines for Control Sequences}
-% 
+%
 % There are three kinds of control sequences that need special handling:
 % \begin{enumerate}
 %   \item Action environments
@@ -4935,11 +5790,11 @@
 %   \item Action command sequences
 %   \item Expansion macros
 % \end{enumerate}
-% 
+%
 % \subsubsection{Engine for running action environments}
 %    \begin{macrocode}
 \long\def\htmlize at do@actionenv#1#2\@htmlize at stop\htmlize at actionsequence@rdelim{%
-  \bgroup %The corresponding \egroup is given in \htmlize at proceedwiththerest, 
+  \bgroup %The corresponding \egroup is given in \htmlize at proceedwiththerest,
           %to localize the changes to the environment definitions.
     \htmlize at activate@environments
     \gdef\htmlize at afteraction@hook{}%
@@ -4950,7 +5805,6 @@
 
 \def\swaptotrueendenvironment#1#2\if at ignore\@ignorefalse\ignorespaces\fi{#2\if at ignore\@ignorefalse\ignorespaces\fi#1}%
 
-
 \long\def\htmlize at record@environment#1{%
   \listadd{\htmlize at env@actionlist}{#1}%
 }
@@ -4965,14 +5819,13 @@
   }%
 }
 
-
 \def\htmlize at activate@environments{}%
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Engine for running action command sequences}
-% 
+%
 % The following automatically adds the ``engine'' to do the command
-% and then resume processing the \LaTeX\ into HTML.
+% and then resume processing the \LaTeX\ into \HTML.
 % It uses the |xpatch| package, which says it works with anything
 % defined using |\newcommand| etc. and |\newenvironment| etc.
 %    \begin{macrocode}
@@ -4980,7 +5833,7 @@
 
 \long\def\htmlize at do@actioncs#1#2\htmlize at actionsequence@rdelim{%
   % #1#2 contains the current string to be rendered into HTML;
-  %      N.B. it has been tokenized at this point, 
+  %      N.B. it has been tokenized at this point,
   %      so TeX can process it directly.
   % #1 = the command sequence we need to execute
   % #2 = the rest of the string
@@ -5012,7 +5865,7 @@
   %This will contain an extra \@htmlize at stop, so we remove it.
   \xa\xa\xa\def\xa\xa\xa\htmlize at remainder@detokenized\xa\xa\xa{\xa\htmlize at remove@stopcode\htmlize at remainder@detokenized}%
   %Now we get back to work transcribing the remainder.
-  \xa\htmlize at recursive@i\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i%  
+  \xa\htmlize at recursive@i\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i%
 }
 
 \long\def\htmlize at record@action#1{%
@@ -5020,7 +5873,7 @@
 }
 
 \def\htmlize at activate@css{}%
-\def\html at action@def#1{%
+\long\def\html at action@def#1{%
   \htmlize at record@action{#1}%
   \xa\def\xa\htmlize at scrap\xa{\xa\let\xa#1\csname html@\string#1\endcsname}%
   \xa\g at addto@macro\xa\htmlize at activate@css\xa{\htmlize at scrap}%
@@ -5032,7 +5885,7 @@
   \else
     \xa\html at action@def\csname #1\endcsname{\csname moodle@#1 at int\endcsname}%
   \fi
-  % Note that \htmlize at do@actioncs will 'patch' this by putting 
+  % Note that \htmlize at do@actioncs will 'patch' this by putting
   % '\xa\htmlize at proceedwiththerest\htmlize at afteraction@hook'
   % at the end.  We want those 3 tokens to occur instead after
   % the graphics filename.
@@ -5046,18 +5899,18 @@
   }%
 }
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Engine for expansion control sequences}
-% 
+%
 % Calling |\htmlize at redefine@expansionmacros| will redefine
 % the macros for us.  It starts out empty.
 %    \begin{macrocode}
-\def\htmlize at redefine@expansionmacros{}%
+\long\def\htmlize at redefine@expansionmacros{}%
 %    \end{macrocode}
 % If |\mymacro| needs no changes to be suited for expansion,
 % you can simply call |\htmlize at record@expand{\mymacro}|
 % or |\htmlregister{\mymacro}|
-% to record that it should be expanded on its way to the HTML.
+% to record that it should be expanded on its way to the \HTML.
 % Examples would be user-built macros such as |\inv|$\to$|^{-1}|
 % or |\N|$\to$|\mathbb{N}|.
 %    \begin{macrocode}
@@ -5073,7 +5926,7 @@
 % |\renewcommand|, |\providecommand| or their starred variants.
 %    \begin{macrocode}
 \def\moodleregisternewcommands{%
-  %% INSPIRED FROM 
+  %% INSPIRED FROM
   %https://tex.stackexchange.com/questions/73271/how-to-redefine-or-patch-the-newcommand-command
   \newcommand*{\saved at ifdefinable}{}
   \let\saved at ifdefinable\@ifdefinable
@@ -5084,8 +5937,8 @@
   \let\@@ifdefinable\@ifdefinable
 }%
 %    \end{macrocode}
-% On the other hand, if an alternate version of the macro is 
-% needed for HTML purposes, you can define its HTML version with
+% On the other hand, if an alternate version of the macro is
+% needed for \HTML\ purposes, you can define its \HTML\ version with
 % |\html at def\mymacro...|
 % Parameters are okay.
 % An example would be
@@ -5098,15 +5951,15 @@
   \xa\def\csname html@\string#1\endcsname%
 }
 %    \end{macrocode}
-% Note that when |\html at def| expands out, it ends with |\def\html@\oldcsname| 
+% Note that when |\html at def| expands out, it ends with |\def\html@\oldcsname|
 % which abuts directly on the remainder of the definition.
-% 
+%
 % \subsection{Specific Control Sequences for Action and Expansion}
-% 
+%
 % Now that we have that machinery in place,
-% we define specific environments, action control sequences, and macros to 
+% we define specific environments, action control sequences, and macros to
 % expand to accomplish our purposes.
-% 
+%
 % \subsubsection{Action Environments}
 %    \begin{macrocode}
 \htmlize at record@environment{clozemulti}
@@ -5116,8 +5969,12 @@
 \htmlize at record@environment{clozeshortanswer}
 \htmlize at record@environment{shortanswer}
 
-\html at newenvironment{center}{\xdef\htmlize at afteraction@hook{<CENTER>\expandonce\BODY</CENTER>}}%
+\html at newenvironment{center}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{CENTER}\expandonce\BODY\noexpand\HTMLtag{/CENTER}}}%
 
+\html at newenvironment{quote}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{BLOCKQUOTE}\expandonce\BODY\noexpand\HTMLtag{/BLOCKQUOTE}}}%
+
+\html at newenvironment{quotation}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{BLOCKQUOTE}\expandonce\BODY\noexpand\HTMLtag{/BLOCKQUOTE}}}%
+
 \def\moodle at save@getitems at state{%
   \global\xa\xdef\csname moodle at currentitemnumber@level@\the\moodle at listdepth\xa\endcsname\xa{\thecurrentitemnumber}%
   \global\xa\xdef\csname moodle at numgathereditems@level@\the\moodle at listdepth\xa\endcsname\xa{\thenumgathereditems}%
@@ -5129,13 +5986,13 @@
   \moodle at restoreitems{\thenumgathereditems}%
 }%
 \def\moodle at saveitems#1{%
-  \ifnum#1>0%
+  \ifnum#1>0\relax
     \global\csletcs{moodle at level@\the\moodle at listdepth @item@#1}{getitems at item@#1}%
     \xa\moodle at saveitems\xa{\number\numexpr#1-1\expandafter}%
   \fi
 }%
 \def\moodle at restoreitems#1{%
-  \ifnum#1>0%
+  \ifnum#1>0\relax
     \global\csletcs{getitems at item@#1}{moodle at level@\the\moodle at listdepth @item@#1}%
     \global\xa\let\csname moodle at level@\the\moodle at listdepth @item@#1\endcsname=\@undefined
     \xa\moodle at restoreitems\xa{\number\numexpr#1-1\expandafter}%
@@ -5146,9 +6003,9 @@
     \advance\moodle at listdepth by 1\relax
     \moodle at save@getitems at state%
       \xa\gatheritems\xa{\BODY}%
-      \gdef\htmlize at afteraction@hook{<#2>}%
+      \gdef\htmlize at afteraction@hook{\HTMLtag{#2}}%
       \loopthroughitemswithcommand{\moodle at itemtoLI}%
-      \g at addto@macro\htmlize at afteraction@hook{</#2>}%
+      \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{/#2}}%
     \moodle at restore@getitems at state%
     \advance\moodle at listdepth by -1\relax
   }%
@@ -5158,15 +6015,15 @@
 \moodle at makelistenv{itemize}{UL}%
 
 \def\moodle at itemtoLI#1{%
-  \g at addto@macro\htmlize at afteraction@hook{<LI>#1}%
+  \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{LI}#1}%
   \trim at spaces@in\htmlize at afteraction@hook%
-  \g at addto@macro\htmlize at afteraction@hook{</LI>}%
+  \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{/LI}}%
 }%
 
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Action Control Sequences}
-% 
+%
 %    \begin{macrocode}
 \def\advancemathmodecounter#1{%
   \global\advance\moodle at mathmodedepth by #1\relax
@@ -5182,11 +6039,19 @@
 \htmlize at record@action{\endclozemode}%
 \htmlize at record@action{\relax}%
 
-\html at action@def\%{\g at addto@macro\htmlize at output{\otherpercent}}%
+\html at action@def\HTMLtag#1{%
+    \xa\g at addto@macro\xa\htmlize at output\xa{<#1>}%
+  }%
+\html at action@def\%{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherpercent}}%
+                      {\g at addto@macro\htmlize at output{\otherpercent}}%
+  }%
 \html at action@def\#{\g at addto@macro\htmlize at output{\otherhash}}%
 \html at action@def\&{\g at addto@macro\htmlize at output{\otherampersand}}%
-\html at action@def\\{\moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherbackslash}}%
-                                     {\g at addto@macro\htmlize at output{<BR/>}}}%
+\html at action@def\\{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherbackslash}}%
+                      {\g at addto@macro\htmlize at output{<BR/>}}
+  }%
 \html at action@def\{{%
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherlbrace}}%
                       {\g at addto@macro\htmlize at output{\otherlbrace}}%
@@ -5193,15 +6058,15 @@
   }%
 \html at action@def\}{%
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherrbrace}}%
-                      {\ifmoodle at clozemode\g at addto@macro\htmlize at output{\otherbackslash}\fi
-                       \g at addto@macro\htmlize at output{\otherrbrace}}%
+       {\ifmoodle at clozemode\g at addto@macro\htmlize at output{\otherbackslash\otherrbrace}%
+                           \else\g at addto@macro\htmlize at output{\otherrbrace}\fi}%
   }%
 \html at action@def\[{%
     \advancemathmodecounter{1}
-    \g at addto@macro\htmlize at output{\otherbackslash\otherlbracket}%
+    \g at addto@macro\htmlize at output{<CENTER>\otherbackslash\otherlbracket}%
   }%
 \html at action@def\]{%
-    \g at addto@macro\htmlize at output{\otherbackslash\otherrbracket}%
+    \g at addto@macro\htmlize at output{\otherbackslash\otherrbracket</CENTER>}%
     \advancemathmodecounter{-1}
   }%
 \html at action@def\({%
@@ -5224,15 +6089,64 @@
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherspace}}%
                       {\g at addto@macro\htmlize at output{\otherspace}}%
   }%
+\html at action@def\,{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\,}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 8239\othersemicol}}%
+  }%
+\html at action@def\thinspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\thinspace\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 8239\othersemicol}}%
+  }%
+\html at action@def\>{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherampersand gt;}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\:{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\:}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\medspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\:}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\;{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\othersemicol}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp13\othersemicol}}%
+  }%
+\html at action@def\thickspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\othersemicol}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp13\othersemicol}}%
+  }%
+\html at action@def\enspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\enspace\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand ensp\othersemicol}}%
+  }%
+\html at action@def\quad{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\quad\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp\othersemicol}}%
+  }%
+\html at action@def\qquad{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\qquad\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp\othersemicol\otherampersand emsp\othersemicol}}%
+  }%
 \html at action@def\${%
      \g at addto@macro\htmlize at output{\otherdollar}%
   }%
+\html at action@def\textquotesingle{%
+     \g at addto@macro\htmlize at output{'}%
+  }%
 \html at action@def\@dquote{%
      \g at addto@macro\htmlize at output{"}%
   }%
+\html at action@def\textquotedbl{%
+     \g at addto@macro\htmlize at output{"}%
+  }%
 \html at action@def\clozetilde{%
     \xa\g at addto@macro\xa\htmlize at output\xa{\othertilde}%
   }%
+\html at action@def\clozecorrect{%
+    \xa\g at addto@macro\xa\htmlize at output\xa{\otherequal}%
+  }%
 \html at action@def\clozelbrace{%
     \openclozemode
     \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
@@ -5242,10 +6156,10 @@
     \endclozemode
   }%
 \html at action@def\TeX{%
-    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash TeX\otherbackslash)}
+    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash TeX\otherbackslash)}%
   }%
 \html at action@def\LaTeX{%
-    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash LaTeX\otherbackslash)}
+    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash LaTeX\otherbackslash)}%
   }%
 
 {\catcode`;=12\relax\gdef\othersemicol{;}}
@@ -5252,7 +6166,7 @@
 
 %Diacritical marks over vowels
 {\catcode`|=3\relax
- \gdef\htmlize at vowels{a|e|i|o|u|A|E|I|O|U|}}
+ \gdef\htmlize at vowels{a|e|i|o|u|A|E|I|O|U|}}%
 \def\htmlize at define@diacritic#1#2{%
   \htmlize at record@action{#1}%
   \g at addto@macro\htmlize at activate@css{%
@@ -5269,7 +6183,7 @@
 
 %Diaeresis/Tréma/Umlaut
 {\catcode`|=3\relax
- \gdef\htmlize at diaeresis{a|e|i|o|u|y|A|E|I|O|U|Y|}}
+ \gdef\htmlize at diaeresis{a|e|i|o|u|y|A|E|I|O|U|Y|}}%
 \html at action@def\"#1{%
     \ifinlist{#1}{\htmlize at diaeresis}%
       {\g at addto@macro\htmlize at output{\otherampersand#1uml\othersemicol}}%
@@ -5293,7 +6207,7 @@
           \ifx\test at i\@u
             \def\toadd{\otherampersand\otherhash369\othersemicol}%
           \else
-            \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+            \def\toadd{\otherbackslash H\otherlbrace#1\otherrbrace}%
           \fi
         \fi
       \fi
@@ -5305,40 +6219,40 @@
 %Cedilla
 \def\@c{c}\def\@C{C}\def\@s{s}\def\@S{S}\def\@t{t}\def\@T{T}%
 \html at action@def\c#1{%
-	\bgroup
-	  \def\test at i{#1}%
-	  \ifx\test at i\@c
-	    \def\toadd{\otherampersand ccedil\othersemicol}%
-	  \else
-	    \ifx\test at i\@C
-	      \def\toadd{\otherampersand Ccedil\othersemicol}%
-	    \else
-	      \ifx\test at i\@s
-	        \def\toadd{\otherampersand\otherhash351\othersemicol}%
-	      \else
-	        \ifx\test at i\@S
-	          \def\toadd{\otherampersand\otherhash350\othersemicol}%
-	        \else
-	          \ifx\test at i\@t
-	            \def\toadd{\otherampersand\otherhash355\othersemicol}%
-	          \else
-	            \ifx\test at i\@T
-	              \def\toadd{\otherampersand\otherhash354\othersemicol}%
-	            \else
-	              \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
-	            \fi
-	          \fi
-	        \fi
-	      \fi
-	    \fi
-	  \fi
-	  \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
-	\egroup
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@c
+      \def\toadd{\otherampersand ccedil\othersemicol}%
+    \else
+      \ifx\test at i\@C
+        \def\toadd{\otherampersand Ccedil\othersemicol}%
+      \else
+        \ifx\test at i\@s
+          \def\toadd{\otherampersand\otherhash351\othersemicol}%
+        \else
+          \ifx\test at i\@S
+            \def\toadd{\otherampersand\otherhash350\othersemicol}%
+          \else
+            \ifx\test at i\@t
+              \def\toadd{\otherampersand\otherhash355\othersemicol}%
+            \else
+              \ifx\test at i\@T
+                \def\toadd{\otherampersand\otherhash354\othersemicol}%
+              \else
+                \def\toadd{\otherbackslash c\otherlbrace#1\otherrbrace}%
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
 }%
 
 %Tilde over a, n, o
 {\catcode`|=3\relax
- \gdef\htmlize at tilde{A|N|O|a|n|o|}}
+ \gdef\htmlize at tilde{A|N|O|a|n|o|}}%
 \html at action@def\~#1{%
     \ifinlist{#1}{\htmlize at tilde}%
       {\g at addto@macro\htmlize at output{\otherampersand#1tilde\othersemicol}}%
@@ -5347,12 +6261,12 @@
 
 % breve diacritics
 {\catcode`|=3\relax
- \gdef\htmlize at breve{A|G|U|a|g|u|}}
+ \gdef\htmlize at breve{A|G|U|a|g|u|}}%
 \def\@e{e}\def\@E{E}\def\@i{i}\def\@ii{\i}\def\@I{I}\def\@o{o}\def\@O{O}%
 \html at action@def\u#1{%
   \ifinlist{#1}{\htmlize at breve}%
      {\g at addto@macro\htmlize at output{\otherampersand#1breve\othersemicol}}%
-     {
+     {%
       \bgroup
         \def\test at i{#1}%
         \ifx\test at i\@E
@@ -5376,7 +6290,7 @@
                     \ifx\test at i\@o
                       \def\toadd{\otherampersand\otherhash335\othersemicol}%
                     \else
-                      \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+                      \def\toadd{\otherbackslash u\otherlbrace#1\otherrbrace}%
                     \fi
                   \fi
                 \fi
@@ -5391,7 +6305,7 @@
 
 % caron diacritics
 {\catcode`|=3\relax
- \gdef\htmlize at caron{C|D|E|L|N|R|S|T|Z|c|d|e|l|n|r|s|t|z|}}
+ \gdef\htmlize at caron{C|D|E|L|N|R|S|T|Z|c|d|e|l|n|r|s|t|z|}}%
 \html at action@def\v#1{%
     \ifinlist{#1}{\htmlize at caron}%
       {\g at addto@macro\htmlize at output{\otherampersand#1caron\othersemicol}}%
@@ -5400,11 +6314,11 @@
 
 % Ogonek diacritics
 {\catcode`|=3\relax
- \gdef\htmlize at ogonek{A|E|I|U|a|e|i|u|}}
+ \gdef\htmlize at ogonek{A|E|I|U|a|e|i|u|}}%
 \html at action@def\k#1{%
   \ifinlist{#1}{\htmlize at ogonek}%
     {\g at addto@macro\htmlize at output{\otherampersand#1ogon\othersemicol}}%
-    {
+    {%
       \bgroup
         \def\test at i{#1}%
         \ifx\test at i\@O
@@ -5413,7 +6327,7 @@
           \ifx\test at i\@o
             \def\toadd{\otherampersand\otherhash491\othersemicol}%
           \else
-            \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+            \def\toadd{\otherbackslash k\otherlbrace#1\otherrbrace}%
           \fi
         \fi
         \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
@@ -5420,77 +6334,285 @@
       \egroup
     }%
 }%
+
+% macron diacritics
+{\catcode`|=3\relax
+ \gdef\htmlize at macron{A|E|I|O|U|a|e|i|o|u|}}%
+\def\@g{g}\def\@G{G}\def\@y{y}\def\@Y{Y}%
+\html at action@def\=#1{%
+  \ifinlist{#1}{\htmlize at macron}%
+    {\g at addto@macro\htmlize at output{\otherampersand#1macr\othersemicol}}%
+    {%
+      \bgroup
+        \def\test at i{#1}%
+        \ifx\test at i\@g
+          \def\toadd{\otherampersand\otherhash7713\othersemicol}%
+        \else
+          \ifx\test at i\@G
+            \def\toadd{\otherampersand\otherhash7712\othersemicol}%
+          \else
+            \ifx\test at i\@y
+              \def\toadd{\otherampersand\otherhash563\othersemicol}%
+            \else
+              \ifx\test at i\@Y
+                \def\toadd{\otherampersand\otherhash562\othersemicol}%
+              \else
+                \def\toadd{\otherbackslash =\otherlbrace#1\otherrbrace}%
+              \fi
+            \fi
+          \fi
+        \fi
+        \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+      \egroup
+    }%
+}%
+
+% macron below diacritics
+\def\@b{b}\def\@B{B}\def\@d{d}\def\@D{D}\def\@k{k}\def\@K{K}\def\@l{l}%
+\def\@L{L}\def\@n{n}\def\@N{N}\def\@t{t}\def\@T{T}\def\@z{z}\def\@Z{Z}%
+\html at action@def\b#1{%
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@b
+      \def\toadd{\otherampersand\otherhash7687\othersemicol}%
+    \else
+      \ifx\test at i\@B
+        \def\toadd{\otherampersand\otherhash7686\othersemicol}%
+      \else
+        \ifx\test at i\@d
+          \def\toadd{\otherampersand\otherhash7695\othersemicol}%
+        \else
+          \ifx\test at i\@D
+            \def\toadd{\otherampersand\otherhash7694\othersemicol}%
+          \else
+            \ifx\test at i\@k
+              \def\toadd{\otherampersand\otherhash7733\othersemicol}%
+            \else
+              \ifx\test at i\@K
+                \def\toadd{\otherampersand\otherhash7732\othersemicol}%
+              \else
+                \ifx\test at i\@l
+                  \def\toadd{\otherampersand\otherhash7739\othersemicol}%
+                \else
+                  \ifx\test at i\@L
+                    \def\toadd{\otherampersand\otherhash7738\othersemicol}%
+                  \else
+                    \ifx\test at i\@n
+                      \def\toadd{\otherampersand\otherhash7753\othersemicol}%
+                    \else
+                      \ifx\test at i\@N
+                        \def\toadd{\otherampersand\otherhash7752\othersemicol}%
+                      \else
+                        \ifx\test at i\@r
+                          \def\toadd{\otherampersand\otherhash7775\othersemicol}%
+                        \else
+                          \ifx\test at i\@R
+                            \def\toadd{\otherampersand\otherhash7774\othersemicol}%
+                          \else
+                            \ifx\test at i\@t
+                              \def\toadd{\otherampersand\otherhash7791\othersemicol}%
+                            \else
+                              \ifx\test at i\@T
+                                \def\toadd{\otherampersand\otherhash7790\othersemicol}%
+                              \else
+                                \ifx\test at i\@z
+                                  \def\toadd{\otherampersand\otherhash7829\othersemicol}%
+                                \else
+                                  \ifx\test at i\@Z
+                                    \def\toadd{\otherampersand\otherhash7828\othersemicol}%
+                                  \else
+                                    \def\toadd{\otherbackslash b\otherlbrace#1\otherrbrace}%
+                                  \fi
+                                \fi
+                              \fi
+                            \fi
+                          \fi
+                        \fi
+                      \fi
+                    \fi
+                  \fi
+                \fi
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
+}%
+
+% Overdot diacritics
+{\catcode`|=3\relax
+ \gdef\htmlize at dotabove{C|E|G|I|Z|c|e|g|z|}}%
+\def\@i{i}%
+\html at action@def\.#1{%
+  \ifinlist{#1}{\htmlize at dotabove}%
+    {\g at addto@macro\htmlize at output{\otherampersand#1dot\othersemicol}}%
+    {
+      \bgroup
+        \def\test at i{#1}%
+        \ifx\test at i\@i
+          \def\toadd{i}%
+        \else
+          \def\toadd{\otherbackslash .\otherlbrace#1\otherrbrace}%
+        \fi
+        \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+      \egroup
+    }%
+}%
+
+% Underdot diacritics
+\def\@A{A}\def\@a{a}\def\@B{B}\def\@b{b}%
+\html at action@def\d#1{%
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@a
+      \def\toadd{\otherampersand\otherhash7841\othersemicol}%
+    \else
+      \ifx\test at i\@A
+        \def\toadd{\otherampersand\otherhash7840\othersemicol}%
+      \else
+        \ifx\test at i\@b
+          \def\toadd{\otherampersand\otherhash7685\othersemicol}%
+        \else
+          \ifx\test at i\@B
+            \def\toadd{\otherampersand\otherhash7684\othersemicol}%
+          \else
+            \def\toadd{\otherbackslash d\otherlbrace#1\otherrbrace}%
+          \fi
+        \fi
+      \fi
+    \fi
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
+}%
+
+% Overring
+{\catcode`|=3\relax
+ \gdef\htmlize at ring{A|U|a|u|}}%
+\html at action@def\r#1{%
+    \ifinlist{#1}{\htmlize at ring}%
+      {\g at addto@macro\htmlize at output{\otherampersand#1ring\othersemicol}}%
+      {\xa\g at addto@macro\htmlize at output\xa{\string\r#1}}%
+}%
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Command sequences for Expansion}
-% 
+%
+% First, commands defined by this package.
+%   \begin{macrocode}
+\def\blank{\rule{1in}{0.5pt}}%
+% TODO: Make an optional argument for width?  This wouldn't affect Moodle,
+%        only the appearance in the PDF.  It doesn't seem worth it.
+\html at def\blank{____________}%
+\htmlize at record@action\inlinemathrightdelim
+\htmlize at record@action\displaymathrightdelim
+%    \end{macrocode}
+% Second, native \LaTeX\ commands.
 %    \begin{macrocode}
-\html at def\underline#1{<SPAN STYLE=\@dquote text-decoration: underline;\@dquote>#1</SPAN>}%
-\html at def\emph#1{<EM>#1</EM>}%
-\html at def\textit#1{<I>#1</I>}%
-\html at def\textbf#1{<B>#1</B>}%
-\html at def\texttt#1{<CODE>#1</CODE>}%
-\html at def\textsc#1{<SPAN STYLE=\@dquote font-variant: small-caps;\@dquote>#1</SPAN>}%
-\html at def\url#1{<A href=\@dquote #1\@dquote>#1</A>}%
-\html at def\href#1#2{<A href=\@dquote #1\@dquote>#2</A>}%
-\html at def\textsuperscript#1{<SUP>#1</SUP>}%
-\html at def\up#1{<SUP>#1</SUP>}%
-\html at def\fup#1{<SUP>#1</SUP>}%
-\html at def\textsubscript#1{<SUB>#1</SUB>}%
-\html at def\blank{____________}%
-\html at def\par{<BR/>}%
+\html at def\emph#1{\HTMLtag{EM}#1\HTMLtag{/EM}}%
+\html at def\textbf#1{\HTMLtag{B}#1\HTMLtag{/B}}%
+\html at def\textit#1{\HTMLtag{I}#1\HTMLtag{/I}}%
+\html at def\textsc#1{\HTMLtag{SPAN STYLE="font-variant: small-caps;"}#1\HTMLtag{/SPAN}}%
+\html at def\textsuperscript#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}%
+\html at def\textsubscript#1{\HTMLtag{SUB}#1\HTMLtag{/SUB}}%
+\html at def\texttt#1{\HTMLtag{CODE}#1\HTMLtag{/CODE}}%
+\html at action@def\underline#1{%
+  \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\underline{#1}}}%
+                    {\g at addto@macro\htmlize at output{<SPAN STYLE="text-decoration: underline;">#1</SPAN>}}%
+}%
+%    \end{macrocode}
+% Third, popular \LaTeX\ commands from packages.
+%    \begin{macrocode}
+\html at def\url#1{\HTMLtag{A href=\@dq #1\@dq}#1\HTMLtag{/A}}% url or hyperref
+\html at def\href#1#2{\HTMLtag{A href=\@dq #1\@dq}#2\HTMLtag{/A}}% hyperref
+\html at def\up#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}% \pkg{babel}, option \optn{french}
+\html at def\fup#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}% \pkg{babel}, option \optn{french}
+%    \end{macrocode}
+% Fourth, \LaTeX\ commands for ligature and other glyphs.
+%    \begin{macrocode}
 \html at def\aa{\å}%
 \html at def\AA{\Å}%
 \html at def\ae{\æ}%
 \html at def\AE{\Æ}%
+\html at def\dh{\ð}%
+\html at def\DH{\Ð}%
+\html at def\dj{\đ}%
+\html at def\DJ{\Đ}%
+\html at def\i{\ı}%
+\html at def\ij{\ij}%
+\html at def\IJ{\IJ}%
+\html at def\j{\ȷ}%
+\html at def\l{\ł}%
+\html at def\L{\Ł}%
+\html at def\ng{\ŋ}%
+\html at def\NG{\Ŋ}%
+\html at def\o{\ø}%
+\html at def\O{\Ø}%
 \html at def\oe{\œ}%
 \html at def\OE{\Œ}%
-\html at def\S{\§}%
+\html at def\ss{\ß}%
+\html at def\SS{\&\#7838;}%
+\html at def\th{\þ}%
+\html at def\TH{\Þ}%
+%    \end{macrocode}
+% Fifth, \LaTeX\ commands for horizontal spacing and line breaks.
+% In a number of situations, paragraph breaks translated into
+% |</p><p>| would bring trouble in the \HTML\ code. Examples:
+% \begin{itemize}
+% \item fields of cloze subquestions
+% \item inside environments like |center|, |itemize|, or |enumerate|.
+% \end{itemize}
+%    \begin{macrocode}
+\html at def\space{ }%
+\html at def\textvisiblespace{\␣}%
+\html at def\newline{\HTMLtag{BR/}}%
+\html at def\par{\HTMLtag{BR/}}%
+%    \end{macrocode}
+% Sixth, \LaTeX\ commands for various symbols.
+%    \begin{macrocode}
+\html at def\textbackslash{\&\#92;}%
+\html at def\_{\&\#95;}%
+\html at def\textquestiondown{\¿}%
+\html at def\textexclamdown{\¡}%
 \html at def\euro{\€}%
 \html at def\texteuro{\€}%
-\html at def\o{\ø}%
-\html at def\O{\Ø}%
-\html at def\ss{\ß}%
-\html at def\SS{\&\#7838;}%
-\html at def\l{\ł}%
-\html at def\L{\Ł}%
+\html at def\S{\§}%
+%    \end{macrocode}
+% Seventh, \LaTeX\ commands for various quotation marks.
+%    \begin{macrocode}
+\html at def\textquoteleft{\‘}%
+\html at def\textquoteright{\’}%
+\html at def\textquotedblleft{\“}%
+\html at def\textquotedblright{\”}%
+\html at def\guilsinglleft{\‹}%
+\html at def\guilsinglright{\›}%
+\html at def\guillemotleft{\«}%
+\html at def\guillemotright{\»}%
+\html at def\quotesinglbase{\‚}%
+\html at def\quotedblbase{\„}%
+\html at def\flq{\‹}%
+\html at def\frq{\›}%
+\html at def\flqq{\«}%
+\html at def\frqq{\»}%
 \html at def\og{\«\&\#8239;}%
-\html at def\guillemotleft{\«\&\#8239;}%
 \html at def\fg{\&\#8239;\»}%
-\html at def\guillemotright{\&\#8239;\»}%
+\html at def\glq{\‚}%
+\html at def\grq{\‘}%
 \html at def\glqq{\„}%
 \html at def\grqq{\“}%
-\html at def\glq{\‚}%
-\html at def\grq{\‘}%
-\html at def\flqq{\«\&\#8239;}%
-\html at def\frqq{\&\#8239;\»}%
-\html at def\flq{\‹}%
-\html at def\frq{\›}%
 \html at def\dq{\"}%
-\html at def\,{\&\#8239;}%
-\html at def\thinspace{\&\#8239;}%
-\html at def\textbackslash{\&\#92;}%
-\html at def\_{\&\#95;}%
-\html at def\textquestiondown{\¿}%
-\html at def\textexclamdown{\¡}%
-
-% AH CUSTOM MACROS TO EXPAND --- remove these before publishing!
-%\htmlize at record@expand{\inv}%
-%\htmlize at record@expand{\rec}%
-
-\htmlize at record@action\inlinemathrightdelim
-\htmlize at record@action\displaymathrightdelim
-
 %    \end{macrocode}
 %
-% \subsubsection{Passing Code to XML Only}
-% Users may want to include pieces of HTML code to the XML file only.
+% \subsubsection{Passing Code to \XML\ Only}
+% Users may want to include pieces of \HTML\ code to the \XML\ file only.
 % When producing the traditional output, the optional argument, empty
 % by default, is used.
 %    \begin{macrocode}
 \newcommand\htmlonly[2][]{#1}%
 %    \end{macrocode}
-% When producing the XML file, the mandatory argument is passed as-is.
+% When producing the \XML\ file, the mandatory argument is passed as-is.
 %    \begin{macrocode}
 \html at action@newcommand{htmlonly}[2][]{%
   \g at addto@macro\htmlize at output{#2}%
@@ -5498,10 +6620,10 @@
 %    \end{macrocode}
 %
 % \subsection{Graphics via {\ttfamily\string\includegraphics}}
-% 
+%
 % \subsubsection{Finding Media Files}
 % The following code is adapted from the command |\Ginclude at graphics| as
-% found in |graphics.sty|.
+% found in \filenm{graphics.sty}.
 % Calling |\moodle at media@find|\marg{filename} looks for the file the
 % same way |\includegraphics| does, with or without extension provided,
 % in the current folder and in folders specified with |\graphicspath{}|.
@@ -5513,10 +6635,10 @@
 %    \begin{macrocode}
 \AtEndPreamble{%
   \@ifpackageloaded{graphics}{%
-    \@ifpackagelater{graphics}{2019/10/08}{}{%
-      \PackageError{moodle}{`moodle' is made to interact with the `graphics'
-                           package not older than 2019/10/08.}%
-    }%
+    \@ifpackagelater{graphics}{2019/10/08 v1.3c}{}%
+    {\PackageError{moodle}{`moodle' is made to interact with the `graphics'\MessageBreak
+                           package not older than 2019/10/08.}\@eha\endinput}%
+
   }{}%
 }%
 \def\moodle at media@find#1{%
@@ -5574,7 +6696,7 @@
       % begin modified part
        \xdef\moodle at media@base{\detokenize\xa{\Gin at base}}%
        \xdef\moodle at media@ext{\detokenize\xa{\Gin at ext}}%
-      % end modfied part
+      % end modified part
     \fi
   \endgroup
 }
@@ -5635,7 +6757,7 @@
   \htmlize at setexecutable@int
 }
 \def\htmlize at setexecutable@int#1{%
-  \egroup 
+  \egroup
   \expandafter\def\htmlize at executable@macro{#1}%
 }
 
@@ -5647,30 +6769,41 @@
 \def\SVGtoPDFcommand{\htmlize at setexecutable\SVGtoPDF}%
 \def\optiSVGcommand{\htmlize at setexecutable\optiSVG}%
 \def\DeleteFilecommand{\htmlize at setexecutable\DeleteFiles}%
+\def\MoveFilecommand{\htmlize at setexecutable\MoveFiles}%
+\def\DevNullcommand{\htmlize at setexecutable\DevNull}%
 
 \ifwindows%
   \ghostscriptcommand{gswin64c.exe -dBATCH -dNOPAUSE -sDEVICE=pngalpha}%
   \baselxivcommand{certutil}%
+  % Uses scour from inkscape default installation
+  % The \Inkscape\bin  directory has to be in the users path and provides both:
+  % {inkscape,python}.exe the scour-Package which is found by python in Inkscape\lib\python3.x\site-packages\
+  \optiSVGcommand{python -m scour.scour -q --enable-id-stripping --enable-comment-stripping
+                --shorten-ids --indent=none --remove-descriptive-elements}%
   \DeleteFilecommand{del}%
+  \MoveFilecommand{move}%
+  \DevNullcommand{NUL}%
+  \imagemagickcommand{magick -colorspace RGB}%
 \else%
   \ghostscriptcommand{gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha}%
   \baselxivcommand{base64}%
+  \optiSVGcommand{scour -q --enable-id-stripping --enable-comment-stripping
+                --shorten-ids --indent=none --remove-descriptive-elements}%
   \DeleteFilecommand{rm -f}%
+  \MoveFilecommand{mv}%
+  \DevNullcommand{/dev/null}%
+  \imagemagickcommand{convert -colorspace RGB}%
 \fi%
-
-\imagemagickcommand{convert -colorspace RGB}%
 \optipngcommand{optipng -clobber -strip all -quiet}%
 \PDFtoSVGcommand{inkscape --export-type=svg --export-area-page --vacuum-defs}%--pdf-poppler
 % remove the "--pdf-poppler" import option if you want to preserve text (avoid conversion to path)
 \SVGtoPDFcommand{inkscape --export-type=pdf --export-area-page}%
-\optiSVGcommand{scour -q --enable-id-stripping --enable-comment-stripping
-                --shorten-ids --indent=none --remove-descriptive-elements}%
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Conversion and inclusion of non-native formats}
 %    \begin{macrocode}
 \AtEndPreamble{%
-  \@ifpackageloaded{graphicx}{%
+  \@ifpackageloaded{graphics}{%
     \def\@firstofthree#1#2#3{#1}%
     \def\@secondofthree#1#2#3{#2}%
     \newcommand{\DeclareGraphicsAlien}[3]{%
@@ -5690,11 +6823,11 @@
         \csname Gread@\targetfmt\endcsname{\Gin at base\targetext}%
       }%
     }%
-% Support for GIF files: passed as-is in XML but converted in PNG for PDF output.
-% In case the GIF is animated, we pick up the first frame in this conversion.
+% Support for \GIF\ files: passed as-is in \XML\ but converted in \PNG\ for PDF output.
+% In case the \GIF\ is animated, we pick up the first frame in this conversion.
 % While the picture will be animated after Moodle import, it will not be in the PDF
 % output, whatever the viewer is.
-    \DeclareGraphicsAlien{.gif}{.png}{\htmlize at imagemagick@convert\otherspace '\SourceFile[0]' \OutputFile}%
+    \DeclareGraphicsAlien{.gif}{.png}{\htmlize at imagemagick@convert\otherspace \SourceFile[0]\otherspace \OutputFile}%
   }{
     \newcommand\includegraphics[2][]{\PackageError{moodle}{"\string\includegraphics" is not defined}%
                                           {Add "\string\usepackage{graphicx}" to you preamble.}}{}%}%
@@ -5727,7 +6860,7 @@
 }
 \setkeys{moodle at includegraphics}{height=0pt,width=0pt}
 %    \end{macrocode}
-% 
+%
 % \subsubsection{Graphics conversion to HTML}
 % If the |tikz| option is loaded, we define the |embedaspict| command.
 % Furthermore, |includegraphics| is packed into a TikZ node.
@@ -5738,7 +6871,7 @@
 %    \begin{macrocode}
 \ifmoodle at svg
   \AtEndPreamble{%
-% Declaring SVG to PDF conversion rule for includegraphics
+% Declaring \SVG\ to PDF conversion rule for includegraphics
 %      \edef\Gin at extensions{\Gin at extensions,.svg,.SVG}%
 %      \DeclareGraphicsRule{.svg}{pdf}{.pdf}{%
 %        `\SVGtoPDF\otherspace '#1' \noexpand\Gin at base-svg-converted-to.pdf}%
@@ -5745,9 +6878,9 @@
 %      \DeclareGraphicsRule{.SVG}{pdf}{.pdf}{%
 %        `\SVGtoPDF\otherspace '#1' \noexpand\Gin at base-SVG-converted-to.pdf}%
     \DeclareGraphicsAlien{.svg}{.pdf}{%
-      \SVGtoPDF\otherspace '\SourceFile' -o '\OutputFile' 2>/dev/null}%
+      \SVGtoPDF\otherspace \SourceFile\otherspace -o \otherspace\OutputFile\otherspace 2>\DevNull}%
     \DeclareGraphicsAlien{.SVG}{.pdf}{%
-      \SVGtoPDF\otherspace '\SourceFile' -o '\OutputFile' 2>/dev/null}%
+      \SVGtoPDF\otherspace \SourceFile\otherspace -o \otherspace\OutputFile\otherspace 2>\DevNull}%
   }%
 \fi
 \def\moodle at checkconversionsuccess#1#2{%
@@ -5780,8 +6913,8 @@
     \message{moodle.sty: Processing \string\includegraphics[#1]{#2} for HTML...^^J}
     \setkeys*{moodle at includegraphics}{#1}%
     % Height or width should be given in TeX dimensions like cm or pt or in,
-    % and are converted to pixels for web use using the ppi key.  
-    % TODO: Can we modify \includegraphics to accept height or width in 
+    % and are converted to pixels for web use using the ppi key.
+    % TODO: Can we modify \includegraphics to accept height or width in
     %        pixels?
     % TODO: What about \includegraphics[scale=0.7] ?
     %        Other keys: keepaspectratio=true|false, angle (rotation), clip & trim
@@ -5817,10 +6950,10 @@
       % conversion needed
       \edef\moodle at media@pdf{\detokenize{.pdf}}%
       \edef\moodle at media@ext{\detokenize\xa{\moodle at media@ext}}%
-      \ifnum0\ifx\moodle at media@ext\moodle at media@pdf1\fi\ifmoodle at svg1\fi=11% PDF file and SVG option active
-        \def\moodle at media@ext at current{.svg}%
+      \ifnum0\ifx\moodle at media@ext\moodle at media@pdf1\fi\ifmoodle at svg1\fi=11\relax% PDF file and \SVG\ option active
+        \def\moodle at media@ext at current{-moodle.svg}%
         \edef\moodle at media@mime at current{\moodle at media@SVGmime}%
-        \edef\cmdline{\PDFtoSVG\otherspace "\moodle at media@base\moodle at media@ext" -o "\moodle at media@base\moodle at media@ext at current" 2>/dev/null}%
+        \edef\cmdline{\PDFtoSVG\otherspace "\moodle at media@base\moodle at media@ext" -o "\moodle at media@base\moodle at media@ext at current" 2>\DevNull}%
         \message{moodle.sty:   Converting '#2' to SVG...^^J}%
         \xa\ShellEscape\xa{\cmdline}%
         \moodle at checkconversionsuccess{\moodle at media@base\moodle at media@ext at current}{PDFtoSVG conversion}%
@@ -5827,7 +6960,7 @@
         %Next, optimize inline
         \ifwindows\else
           \edef\cmdline{\optiSVG < "\moodle at media@base\moodle at media@ext at current" >
-           "\moodle at media@base.tmp.svg" && mv "\moodle at media@base.tmp.svg"
+           "\moodle at media@base.tmp.svg" && \MoveFiles\otherspace "\moodle at media@base.tmp.svg"
            "\moodle at media@base\moodle at media@ext at current"}%
           \message{moodle.sty:   Optimizing '\moodle at media@base\moodle at media@ext at current'...^^J}%
           \xa\ShellEscape\xa{\cmdline}%
@@ -5834,7 +6967,7 @@
           \moodle at checkconversionsuccess{\moodle at media@base\moodle at media@ext at current}{SVG optimization}%
         \fi
       \else% call ImageMagick
-        \def\moodle at media@ext at current{.png}%
+        \def\moodle at media@ext at current{-moodle.png}%
         \def\moodle at media@mime at current{image/png}%
         \edef\cmdline{\htmlize at imagemagick@convert\otherspace "\moodle at media@base\moodle at media@ext" -resize \moodle at graphics@geometry\otherspace "\moodle at media@base\moodle at media@ext at current"}%
         \message{moodle.sty:   Converting '#2' to PNG...^^J}%
@@ -5852,17 +6985,42 @@
     %Now, save that base64 encoding in a TeX macro
     \def\moodle at newpic@baselxiv{}%
     \message{moodle.sty:   Reading base64 file '\moodle at media@base.enc'...^^J}%
-    \openin\baseLXIVdatafile="\moodle at media@base.enc"
+    \openin\baseLXIVdatafile="\moodle at media@base.enc"\relax
+    \ifeof\baseLXIVdatafile
+      \PackageError{moodle}{reading '\moodle at media@base.enc' failed}%
+        {If the XML file is not of importance to you: use package option "draft"}%
+    \else
       \savebaselxivdata at recursive
+    \fi
     \closein\baseLXIVdatafile
     %Clean up files
     \ifx\moodle at media@ext at current\moodle at media@ext
-      \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc"}%
+      \ifwindows
+        \ShellEscape{powershell.exe "del ""\moodle at media@base.enc"""}%
+      \else
+        \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc"}%
+      \fi
     \else
-      \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc" "\moodle at media@base\moodle at media@ext at current"}%
+      \ifwindows
+        \ShellEscape{powershell.exe "del ""\moodle at media@base.enc"""}%
+        \ShellEscape{powershell.exe "del ""\moodle at media@base\moodle at media@ext at current"""}%
+      \else
+        \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc" "\moodle at media@base\moodle at media@ext at current"}%
+      \fi
     \fi
     \xa\global\xa\let\csname picbaselxiv at graphics@#2\endcsname=\moodle at newpic@baselxiv%
-    \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="data:\moodle at media@mime at current;base64,\csname picbaselxiv at graphics@#2\endcsname">}%
+    \ifmoodle at pluginfile
+      \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="@@PLUGINFILE@@/\moodle at media@base\moodle at media@ext at current">}%
+      \xa\filename at parse\xa{\moodle at media@base}%
+      \xdef\moodle at media@path{\filename at area}%
+      \xdef\moodle at media@base{\filename at base}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\moodle at media@base}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\moodle at media@ext at current"}
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/\moodle at media@path" encoding="base64">}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv at graphics@#2\endcsname</file>}%
+    \else
+      \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="data:\moodle at media@mime at current;base64,\csname picbaselxiv at graphics@#2\endcsname">}%
+    \fi
     \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
     \message{moodle.sty:   <IMG> tag inserted.^^J}%
   \egroup
@@ -5879,7 +7037,7 @@
 }%
 \ifwindows
   \def\ConvertToBaseLXIV at int#1#2{%
-    \def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1.enc" && del tmp.b64}%    
+    \def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1.enc" && powershell.exe "del tmp.b64"}%
   }% Starting from Windows 7, CertUtil is included by default. There should be no windows XP still running
 \else
   \ifmacosx
@@ -5893,7 +7051,7 @@
   \fi
 \fi
 %    \end{macrocode}
-% The following code accomplishes the reading of an |.enc| file into memory.
+% The following code accomplishes the reading of an \filenm{.enc} file into memory.
 % It is also used by the \TikZ\ code below.
 %    \begin{macrocode}
 \newread\baseLXIVdatafile
@@ -5914,12 +7072,12 @@
   \baselxiv at next
 }
 %    \end{macrocode}
-% 
+%
 % \subsection{\TikZ\ Picture Handling}
-% If the user is not using the \TikZ\ package, there is no need to waste time 
+% If the user is not using the \TikZ\ package, there is no need to waste time
 % loading it.  Without \TikZ\ loaded, however, many of the following commands
 % are undefined.
-% Our solution is to wait until |\AtBeginDocument| and then test whether 
+% Our solution is to wait until |\AtBeginDocument| and then test whether
 % \TikZ\ is loaded.  If so, we make the appropriate definitions.
 % \begin{macro}{TikZ}
 % \changes{v0.7}{2020/07/14}{Support \emph{tikz}\ command}
@@ -5943,24 +7101,38 @@
       \def\TikzExportMIME{image/svg+xml}%
       \ifpdfoutput% tex engines defaulting to PDF output (pdflatex, xelatex, lualatex)
         \def\ExportTikz{ \message{moodle.sty: Converting picture '\moodle at basename.pdf' to SVG...^^J}%
-                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.pdf" -o "\moodle at basename\TikzExportExtension" 2>/dev/null}%
+                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.pdf" -o "\moodle at basename\TikzExportExtension" 2>\DevNull}%
+\message{\cmdline}
                          \xa\ShellEscape\xa{\cmdline}%
                          \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{PDFtoSVG conversion}%
                        }%
       \else % latex
         \def\ExportTikz{ \message{moodle.sty: Converting picture '\moodle at basename.ps' to SVG...^^J}%
-                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.ps" -o "\moodle at basename\TikzExportExtension" 2>/dev/null}%
-                         \xa\ShellEscape\xa{\cmdline}%
+                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.ps" -o "\moodle at basename\TikzExportExtension" 2>\DevNull}%
+\message{\cmdline}
+                        \xa\ShellEscape\xa{\cmdline}%
                          \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{PStoSVG conversion}%
                        }%
       \fi
-      \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
+      \ifwindows
+        \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
                            \edef\cmdline{\optiSVG\otherspace < "\moodle at basename\TikzExportExtension" >
-                                         "\moodle at basename.tmp.svg" && mv "\moodle at basename.tmp.svg"
+                                         "\moodle at basename.tmp.svg" && powershell.exe "move ""\moodle at basename.tmp.svg""" %
+                                         """\moodle at basename\TikzExportExtension"""}%
+                           \message{\cmdline}
+                           \xa\ShellEscape\xa{\cmdline}%
+                           \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{SVG optimization}%
+                         }%
+      \else
+        \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
+                           \edef\cmdline{\optiSVG\otherspace < "\moodle at basename\TikzExportExtension" >
+                                         "\moodle at basename.tmp.svg" && \MoveFiles\otherspace "\moodle at basename.tmp.svg"
                                          "\moodle at basename\TikzExportExtension" }%
+                           \message{\cmdline}
                            \xa\ShellEscape\xa{\cmdline}%
                            \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{SVG optimization}%
                          }%
+      \fi
     \else
       \def\TikzExportExtension{.png}%
       \def\TikzExportMIME{image/png}%
@@ -5993,7 +7165,7 @@
       \moodle at oldtikzpicture%
     }{}%
     % However, the tikz externalize library does *not* run \end{tikzpicture}.
-    % In order to run commands after the tikz picture is done compiling, we need to 
+    % In order to run commands after the tikz picture is done compiling, we need to
     % use a hook into \tikzexternal at closeenvironments.
     \g at addto@macro{\tikzexternal at closeenvironments}{%
       \moodle at endtikzpicture@hook
@@ -6027,13 +7199,22 @@
     \fi
     %
     % The HTMLizer version of the tikzpicture environment,
-    % which writes an <IMG> tag to the XML file.
+    % which writes an <IMG> tag to the \XML\ file.
     \htmlize at record@environment{tikzpicture}%
     \g at addto@macro\htmlize at activate@environments{%
       \let\tikzpicture\relax\let\endtikzpicture\relax
       \NewEnviron{tikzpicture}[1][]{%
         \global\advance\numpicturesread by 1\relax
-        \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+        \ifmoodle at pluginfile
+          \edef\htmlize at imagetag{<IMG SRC="@@PLUGINFILE@@/tikz/\tikzexternalrealjob-tikztemp-\the\numpicturesread\TikzExportExtension">}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\tikzexternalrealjob-tikztemp-}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\the\numpicturesread}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\TikzExportExtension"}
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/tikz/" encoding="base64">}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv@\the\numpicturesread\endcsname</file>}%
+        \else
+          \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+        \fi
         \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
       }[\htmlize at patchendenvironment]%
     }%
@@ -6040,7 +7221,16 @@
     \html at action@newcommand{tikz}[2][]{%
 %      \message{>>> Processing \string\tikz[#1]{...} ^^J}
       \global\advance\numpicturesread by 1\relax
-      \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+      \ifmoodle at pluginfile
+        \edef\htmlize at imagetag{<IMG SRC="@@PLUGINFILE@@/tikz/\tikzexternalrealjob-tikztemp-\the\numpicturesread\TikzExportExtension">}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\tikzexternalrealjob-tikztemp-}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\the\numpicturesread}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\TikzExportExtension"}
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/tikz/" encoding="base64">}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv@\the\numpicturesread\endcsname</file>}%
+      \else
+        \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+      \fi
       \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
     }%
   \else
@@ -6063,7 +7253,12 @@
 \def\savebaselxivdata{%
   \def\moodle at newpic@baselxiv{}%
   \openin\baseLXIVdatafile=\tikzexternalrealjob-tikztemp-\the\numconvertedpictures.enc\relax
+  \ifeof\baseLXIVdatafile
+      \PackageError{moodle}{reading '\moodle at media@base.enc' failed}%
+        {If the XML file is not of importance to you: use package option "draft"}%
+  \else   
     \savebaselxivdata at recursive
+  \fi
   \closein\baseLXIVdatafile
   \xa\global\xa\let\csname picbaselxiv@\the\numconvertedpictures\endcsname=\moodle at newpic@baselxiv%
 }
@@ -6076,7 +7271,7 @@
   \RequirePackage{varwidth}% for the command |embedaspict|
 \fi
 %    \end{macrocode}
-% Finally, we clean up our mess by deleting the temporary PDF, PNG, and ENC 
+% Finally, we clean up our mess by deleting the temporary PDF, \PNG, and ENC
 % files we created.
 % With XeTeX, we cannot clean pictures pdf's because they are actually included in the final pdf afterwards, by xdvipdfmx.
 % With LuaTeX, it looks like |\AtEndDocument| is too early to for this cleaning step.
@@ -6087,12 +7282,16 @@
       \ifXeTeX
         % we must keep picture pdf's for subsequent linking (xdvipdfmx)
         \ifwindows
-          \ShellEscape{powershell.exe -noexit "del * -include \tikzexternalrealjob-tikztemp-*.* -exclude *.pdf}%
+          \ShellEscape{powershell.exe "del * -include \tikzexternalrealjob-tikztemp-*.* -exclude *.pdf"}%
         \else
           \ShellEscape{find . -type f -name "\tikzexternalrealjob-tikztemp-*.*" -not -name "*.pdf" -delete}%
         \fi
       \else
-        \ShellEscape{\DeleteFiles\otherspace \tikzexternalrealjob-tikztemp-*.*}%
+        \ifwindows
+          \ShellEscape{powershell.exe "del \tikzexternalrealjob-tikztemp-*.*"}%
+        \else
+          \ShellEscape{\DeleteFiles\otherspace \tikzexternalrealjob-tikztemp-*.*}%
+        \fi
       \fi
     }{}%
   \fi
@@ -6105,6 +7304,7 @@
 % \subsection{Other Media}
 % Support for other media comes through the |\url|\marg{link} and |\href|\marg{link}\marg{text}
 % commands.
+%    \begin{macrocode}
 \AtEndPreamble{%
   \@ifpackageloaded{hyperref}{%
     \let\oldhref\href
@@ -6229,13 +7429,36 @@
 %    }%
   }{}%
 }%
+%    \end{macrocode}
 %
 % \subsection{Verbatim Code}
-% 
+%
 % We start by defining a macro to parameter a style for code box display in Moodle
 %    \begin{macrocode}
 \def\xmlDisplayVerbatimBox{border-top: thin solid; border-bottom: thin solid}%
 %    \end{macrocode}
+% Then we set a macro to escape some characters that would not play well with \HTML.
+%    \begin{macrocode}
+\begingroup
+\catcode`\<=\active\relax
+\catcode`\>=\active\relax
+\catcode`\"=\active\relax
+\catcode`\'=\active\relax
+\catcode`\&=\active\relax
+\gdef\moodle at HackTML{%
+  \catcode`\<=\active\relax
+  \catcode`\>=\active\relax
+  \catcode`\"=\active\relax
+  \catcode`\'=\active\relax
+  \catcode`\&=\active\relax
+  \gdef<{\otherampersand lt;}%
+  \gdef>{\otherampersand gt;}%
+  \gdef"{\otherampersand quot;}%
+  \gdef'{\otherampersand apos;}%
+  \gdef&{\otherampersand amp;}%
+}%
+\endgroup
+%    \end{macrocode}
 % First, let us handle |\verbatiminput| from the `verbatim' package
 %    \begin{macrocode}
 \html at action@def\verbatiminput#1{%
@@ -6245,6 +7468,7 @@
   \@bsphack
   \let\do\@makeother\dospecials
   \catcode`\^^M\active
+  \moodle at HackTML
   \def\verbatim at processline{\xa\g at addto@macro\xa\htmlize at output\xa{\the\verbatim at line<BR/>}}
   \verbatim at readfile{#1}%
   \@esphack
@@ -6261,30 +7485,33 @@
 \@ifpackageloaded{fancyvrb}{\PackageError{moodle}{'moodle' should be loaded before 'fancyvrb'.}%
 {'moodle' loads 'fancybox' which, unfortunately, redefines verbatim commands.}}{\relax}%
 
-\html at action@newcommand{VerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\VerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
-\html at action@newcommand{LVerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\LVerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
-\html at action@newcommand{BVerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\BVerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
+\def\moodle at FV#1{%
+  \html at action@newcommand{#1}[2][]{%
+    \message{moodle.sty: Processing \@backslashchar#1[##1]{##2} for HTML ^^J}%
+    \def\FV at KeyValues{##1}%
+    \FV at UseKeyValues% import options defined in #1
+    \def\FV at Input####1{
+      \immediate\openin\FV at InFile ####1\relax
+      \ifeof\FV at InFile
+        \FV at Error{No verbatim file ####1}\FV at eha
+        \immediate\closein\FV at InFile
+      \else
+        \FV at CatCodes
+        \moodle at HackTML
+        \expandafter\FV@@Input
+      \fi}%
+    \moodle at VerbatimInput{##2}%
+  }%
+}
+\moodle at FV{VerbatimInput}%
+\moodle at FV{LVerbatimInput}%
+\moodle at FV{BVerbatimInput}%
 \def\moodle at VerbatimInput#1{%
   \g at addto@macro\htmlize at output{<PRE style="\xmlDisplayVerbatimBox"><CODE>}%
   %%%%%%%% using material from fancyvrb and fvextra  %%%%%%%%
   %\begingroup
   \def\moodle at verbatim@addlinenumber##1{%
-    \g at addto@macro\htmlize at output{<span style="font-size: 80\otherpercent; 
+    \g at addto@macro\htmlize at output{<span style="font-size: 80\otherpercent;
          background-color: \otherhash f0f0f0; padding: 0 5px 0 5px; display:
          inline-block; width: 16pt; ##1">}%
     \if at FV@NumberBlankLines
@@ -6294,10 +7521,10 @@
         \xa\g at addto@macro\xa\htmlize at output\xa{\otherampersand nbsp;</span>}%
       \else
         \xa\g at addto@macro\xa\htmlize at output\xa{\the\c at FancyVerbLine</span>}%
-      \fi 
+      \fi
     \fi
   }
-  % redefine the ProcessLine routine ('fancyvrb' and 'fvextra') for XML output
+  % redefine the ProcessLine routine ('fancyvrb' and 'fvextra') for \XML\ output
   \def\FV at ProcessLine##1{%
     \ifcsname FV at HighlightLine:\number\c at FancyVerbLine\endcsname
       \xdef\moodle at FV@tagB{<mark>}% fvextra triggered highlighting for this line
@@ -6309,7 +7536,7 @@
     \catcode`\`=12%
     \def\FV at Line{##1}%
     \ifx\FV at LeftListNumber\relax
-    
+
     \else% line numbers displayed on the left side
       \moodle at verbatim@addlinenumber{text-align: right}%
     \fi
@@ -6341,13 +7568,16 @@
   }{\relax}%
 }
 %    \end{macrocode}
-% Third, we patch `minted' so that it also calls pygmentize to generate HTML code.
+% Third, we patch `minted' so that it also calls pygmentize to generate \HTML\ code.
 %    \begin{macrocode}
 \AtEndPreamble{% this definition should prevail because `minted' gets loaded after `moodle'
 \@ifpackageloaded{minted}{%
   \newcounter{moodle at pygmentizecounter}%
+  \@ifundefined{minted at defstyle}{% compatibility with minted prior to 2021/12/24 v2.6
+    \let\minted at defstyle=\minted at checkstyle%
+  }{}%
   \renewcommand{\minted at pygmentize}[2][\minted at outputdir\minted at jobname.pyg]{%
-    \minted at checkstyle{\minted at get@opt{style}{default}}%
+    \minted at defstyle{\minted at get@opt{style}{default}}%
     \stepcounter{minted at pygmentizecounter}%
     \ifthenelse{\equal{\minted at get@opt{autogobble}{false}}{true}}%
       {\def\minted at codefile{\minted at outputdir\minted at jobname.pyg}}%
@@ -6360,7 +7590,7 @@
     \def\minted at cmdtemplate##1##2{%
       \ifminted at kpsewhich
         \ifwindows
-          \detokenize{for /f "usebackq tokens=*"}\space\@percentchar\detokenize{a 
+          \detokenize{for /f "usebackq tokens=*"}\space\@percentchar\detokenize{a
           in (`kpsewhich}\space\minted at codefile\detokenize{`) do}\space
         \fi
       \fi
@@ -6380,14 +7610,14 @@
       \fi}%
     \def\minted at cmd{\minted at cmdtemplate{latex -P commandprefix=PYG}{\minted at infile}}
     % For debugging, uncomment: %%%%
-    \immediate\typeout{\minted at cmd}%
+    %\immediate\typeout{\minted at cmd}%
     % %%%%
-    \def\minted at cmdHTML{\minted at cmdtemplate{html -P noclasses -P 
+    \def\minted at cmdHTML{\minted at cmdtemplate{html -P noclasses -P
       nowrap -P hl_lines="\FV at HighlightLinesList" -P
       style="\minted at get@opt{style}{default}"}{\csname minted at infileHTML\the\c at minted@pygmentizecounter\endcsname}}%
-    \def\minted at cmdPNG{\minted at cmdtemplate{png -P    
+    \def\minted at cmdPNG{\minted at cmdtemplate{png -P
       line_numbers=True}{\minted at infilePNG}}%
-    \def\minted at cmdSVG{\minted at cmdtemplate{svg -P 
+    \def\minted at cmdSVG{\minted at cmdtemplate{svg -P
       linenos=True}{\minted at infileSVG}}%
     \ifthenelse{\boolean{minted at cache}}%
       {%
@@ -6396,8 +7626,8 @@
           \ifx\XeTeXinterchartoks\minted at undefined
             \ifthenelse{\equal{\minted at get@opt{autogobble}{false}}{true}}%
               {\edef\minted at hash{\pdf at filemdfivesum{#1}%
-                \pdf at mdfivesum{\minted at cmd autogobble(\ifx\FancyVerbStartNum\z@ 
-                0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@ 
+                \pdf at mdfivesum{\minted at cmd autogobble(\ifx\FancyVerbStartNum\z@
+                0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@
                 0\else\FancyVerbStopNum\fi)}}}%
               {\edef\minted at hash{\pdf at filemdfivesum{#1}%
                 \pdf at mdfivesum{\minted at cmd}}}%
@@ -6407,7 +7637,7 @@
               \immediate\write\minted at code{\minted at cmd}%
               \ifthenelse{\equal{\minted at get@opt{autogobble}{false}}{true}}%
                 {\immediate\write\minted at code{autogobble(\ifx\FancyVerbStartNum\z@
-                 0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@ 
+                 0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@
                 0\else\FancyVerbStopNum\fi)}}{}%
               \immediate\closeout\minted at code
               \edef\minted at argone@esc{#1}%
@@ -6421,22 +7651,22 @@
               \def\minted at hashcmd{%
                 \detokenize{python -c "import hashlib; import os;
                   hasher = hashlib.sha1();
-                  f = 
+                  f =
                   open(os.path.expanduser(os.path.expandvars(\"}\minted at tmpfname@esc.mintedcmd\detokenize{\")),
                    \"rb\");
                   hasher.update(f.read());
                   f.close();
-                  f = 
+                  f =
                   open(os.path.expanduser(os.path.expandvars(\"}\minted at argone@esc\detokenize{\")),
                    \"rb\");
                   hasher.update(f.read());
                   f.close();
-                  f = 
+                  f =
                   open(os.path.expanduser(os.path.expandvars(\"}\minted at tmpfname@esc.mintedmd5\detokenize{\")),
                    \"w\");
-                  macro = \"\\edef\\minted at hash\" + chr(123) + hasher.hexdigest() 
+                  macro = \"\\edef\\minted at hash\" + chr(123) + hasher.hexdigest()
                   + chr(125) + \"\";
-                  f.write(\"\\makeatletter\" + macro + 
+                  f.write(\"\\makeatletter\" + macro +
                   \"\\makeatother\\endinput\n\");
                   f.close();"}}%
               \ShellEscape{\minted at hashcmd}%
@@ -6444,8 +7674,8 @@
             \else
               \ifthenelse{\equal{\minted at get@opt{autogobble}{false}}{true}}%
                {\edef\minted at hash{\mdfivesum file {#1}%
-                  \mdfivesum{\minted at cmd autogobble(\ifx\FancyVerbStartNum\z@ 
-                  0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@ 
+                  \mdfivesum{\minted at cmd autogobble(\ifx\FancyVerbStartNum\z@
+                  0\else\FancyVerbStartNum\fi-\ifx\FancyVerbStopNum\z@
                   0\else\FancyVerbStopNum\fi)}}}%
                {\edef\minted at hash{\mdfivesum file {#1}%
                   \mdfivesum{\minted at cmd}}}%
@@ -6472,10 +7702,10 @@
             \ifwindows
               \StrSubstitute{\minted at infile}{/}{\@backslashchar}[\minted at infile@windows]
               \StrSubstitute{\minted at actualinfile}{/}{\@backslashchar}[\minted at actualinfile@windows]
-              \ShellEscape{move /y 
+              \ShellEscape{move /y
               \minted at outputdir\minted at infile@windows\space\minted at outputdir\minted at actualinfile@windows}%
             \else
-              \ShellEscape{mv -f 
+              \ShellEscape{mv -f
               \minted at outputdir\minted at infile\space\minted at outputdir\minted at actualinfile}%
             \fi
             \let\minted at infile\minted at actualinfile
@@ -6507,38 +7737,793 @@
   % Since minted is based upon `fvextra' the macro |\moodle at VerbatimInput| works here.
   \minted at configlang{#2}% grab options set for this specific language
   \setkeys{minted at opt@cmd}{#1}% grab options in #1
-  \minted at fvset% import options 
+  \minted at fvset% import options
   \stepcounter{moodle at pygmentizecounter}
   \xa\moodle at VerbatimInput\xa{\csname minted at infileHTML\the\c at moodle@pygmentizecounter\endcsname}%
 }%
 %    \end{macrocode}
 %
-% \subsection{Warning users of \texttt{babel}}
-% Users of the |babel| package loaded with the 'french' option may experience problems
-% related to autospacing when using |pdfLaTeX|. We shall warn them.
+% \subsection{Internationalization}
+% Here is an attempt to internationalize the PDF typesetting, relying on
+% the package 'translations'.
 %    \begin{macrocode}
+\AtEndPreamble{%
+  \@ifpackageloaded{translator}{\moodle at internationaltrue}{}%
+  \@ifpackageloaded{translations}{\moodle at internationaltrue}{}%
+  % polyglossia "fakes" babel
+  \@ifpackageloaded{polyglossia}{%
+    \moodle at internationaltrue
+    % The following is commented because \xpg at bloaded is set very late and must be expanded
+    %\PassOptionsToPackage{\xpg at bloaded}{translator}
+  }{
+    \@ifpackageloaded{babel}{%
+      \moodle at internationaltrue
+      % The following is commented because some languages of babel,
+      % like lithuanian, are unknown to translator. Instead we
+      % copied the aliases below.
+      %\PassOptionsToPackage{\bbl at loaded}{translator}%
+    }{}%
+  }%
+  \ifmoodle at international
+    % By default, we load and rely on "translator".
+    % The package is simple and has limited dependencies.
+    % Since we borrow the syntax of "translations",
+    % the switch is easy: just "\usepackage{translations}"
+    % in the preamble.
+    %\RequirePackage{translations}%
+    \@ifpackageloaded{translations}{}{%
+      \RequirePackage{translator}%
+      % Borrow the syntax from 'translations'
+      \newcommand\DeclareTranslation[3]{\deftranslation[to=#1]{#2}{#3}}%
+      \newcommand\DeclareTranslationFallback[2]{\deftranslation[to=fallback]{#1}{#2}}%
+      \let\GetTranslation=\translate
+      % Set a fall-back if a translation is unknown (usually English, see below)
+      \languagepath{\languagename,fallback}%
+      % Set aliases (most of them taken directly from translator.sty)
+      \languagealias{afrikaans} {Afrikaans,Dutch}%
+      \languagealias{american}  {AmericanEnglish,English}%
+      \languagealias{austrian}  {Austrian1997,Austrian,German1997,German}%
+      \languagealias{brazil}    {Brazilian,Portuguese}%
+      \languagealias{brazilian} {Brazilian,Portuguese}%
+      \languagealias{british}   {BritishEnglish,English}%
+      \languagealias{catalan}   {Catalan}% unknown to translator
+      \languagealias{canadian}  {Canadian,English}%
+      \languagealias{canadien}  {Canadien,French}%
+      \languagealias{croatian}  {Croatian}%
+      \languagealias{czech}     {Czech}%
+      \languagealias{danish}    {Danish}%
+      \languagealias{dutch}     {Dutch}%
+      \languagealias{english}   {English}%
+      \languagealias{estonian}  {Estonian}%
+      \languagealias{finnish}   {Finnish}%
+      \languagealias{french}    {French}%
+      \languagealias{german}    {German1997,German}%
+      \languagealias{hungarian} {Hungarian}%
+      \languagealias{icelandic} {Icelandic}%
+      \languagealias{italian}   {Italian}%
+      \languagealias{lithuanian}{Lithuanian}% unknown to translator
+      \languagealias{magyar}    {Magyar,Hungarian}% added Hungarian
+      \languagealias{naustrian} {Austrian,German}%
+      \languagealias{ngerman}   {German}%
+      \languagealias{norsk}     {Norsk}%
+      \languagealias{norwegian} {Norsk}% for polyglossia
+      \languagealias{nynorsk}   {Nynorsk,Norsk}%
+      \languagealias{polish}    {Polish}%
+      \languagealias{portuges}  {Portuguese}%
+      \languagealias{portuguese}{Portuguese}%
+      \languagealias{romanian}  {Romanian}%
+      \languagealias{slovak}    {Slovak,Czech}% added Czech
+      \languagealias{spanish}   {Spanish}%
+      \languagealias{swedish}   {Swedish}%
+      \languagealias{turkish}   {Turkish}%
+      \languagealias{UKenglish} {BritishEnglish,English}%
+      \languagealias{USenglish} {AmericanEnglish,English}%
+    }%
+    \DeclareTranslation{Catalan}{True}{Vertader}%
+    \DeclareTranslation{Catalan}{False}{Fals}%
+    %\DeclareTranslation{Catalan}{cloze}{}%
+    %\DeclareTranslation{Catalan}{description}{}%
+    %\DeclareTranslation{Catalan}{essay}{}%
+    %\DeclareTranslation{Catalan}{matching}{}%
+    %\DeclareTranslation{Catalan}{multi}{}%
+    %\DeclareTranslation{Catalan}{numerical}{}%
+    %\DeclareTranslation{Catalan}{shortanswer}{}%
+    %\DeclareTranslation{Catalan}{truefalse}{}%
+    %\DeclareTranslation{Catalan}{Shuffle}{}%
+    %\DeclareTranslation{Catalan}{Single}{}%
+    %\DeclareTranslation{Catalan}{marked out of}{}%
+    %\DeclareTranslation{Catalan}{penalty}{}%
+    %\DeclareTranslation{Catalan}{tags}{}%
+    %\DeclareTranslation{Catalan}{All-or-nothing}{}%
+    %\DeclareTranslation{Catalan}{Case-Sensitive}{}%
+    %\DeclareTranslation{Catalan}{Case-Insensitive}{}%
+    %\DeclareTranslation{Catalan}{Drag and drop}{}%
+    %\DeclareTranslation{Catalan}{Information for graders}{}%
+    %\DeclareTranslation{Catalan}{Response template}{}%
+    %\DeclareTranslation{Catalan}{editor}{}%
+    %\DeclareTranslation{Catalan}{editorfilepicker}{}%
+    %\DeclareTranslation{Catalan}{plain}{}%
+    %\DeclareTranslation{Catalan}{monospaced}{}%
+    %\DeclareTranslation{Catalan}{noinline}{}%
+    %\DeclareTranslation{Catalan}{Total of marks}{}%
+    \DeclareTranslation{Croatian}{True}{To\v{c}no}%
+    \DeclareTranslation{Croatian}{False}{Neto\v{c}no}%
+    %\DeclareTranslation{Croatian}{cloze}{}%
+    %\DeclareTranslation{Croatian}{description}{}%
+    %\DeclareTranslation{Croatian}{essay}{}%
+    %\DeclareTranslation{Croatian}{matching}{}%
+    %\DeclareTranslation{Croatian}{multi}{}%
+    %\DeclareTranslation{Croatian}{numerical}{}%
+    %\DeclareTranslation{Croatian}{shortanswer}{}%
+    %\DeclareTranslation{Croatian}{truefalse}{}%
+    %\DeclareTranslation{Croatian}{Shuffle}{}%
+    %\DeclareTranslation{Croatian}{Single}{}%
+    %\DeclareTranslation{Croatian}{Multiple}{}%
+    %\DeclareTranslation{Croatian}{marked out of}{}%
+    %\DeclareTranslation{Croatian}{penalty}{}%
+    %\DeclareTranslation{Croatian}{tags}{}%
+    %\DeclareTranslation{Croatian}{All-or-nothing}{}%
+    %\DeclareTranslation{Croatian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Croatian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Croatian}{Drag and drop}{}%
+    %\DeclareTranslation{Croatian}{Information for graders}{}%
+    %\DeclareTranslation{Croatian}{Response template}{}%
+    %\DeclareTranslation{Croatian}{editor}{}%
+    %\DeclareTranslation{Croatian}{editorfilepicker}{}%
+    %\DeclareTranslation{Croatian}{plain}{}%
+    %\DeclareTranslation{Croatian}{monospaced}{}%
+    %\DeclareTranslation{Croatian}{noinline}{}%
+    %\DeclareTranslation{Croatian}{Total of marks}{}%
+    \DeclareTranslation{Czech}{True}{Pravda}%
+    \DeclareTranslation{Czech}{False}{Nepravda}%
+    %\DeclareTranslation{Czech}{cloze}{}%
+    %\DeclareTranslation{Czech}{description}{}%
+    %\DeclareTranslation{Czech}{essay}{}%
+    %\DeclareTranslation{Czech}{matching}{}%
+    %\DeclareTranslation{Czech}{multi}{}%
+    %\DeclareTranslation{Czech}{numerical}{}%
+    %\DeclareTranslation{Czech}{shortanswer}{}%
+    %\DeclareTranslation{Czech}{truefalse}{}%
+    %\DeclareTranslation{Czech}{Shuffle}{}%
+    %\DeclareTranslation{Czech}{Single}{}%
+    %\DeclareTranslation{Czech}{Multiple}{}%
+    %\DeclareTranslation{Czech}{marked out of}{}%
+    %\DeclareTranslation{Czech}{penalty}{}%
+    %\DeclareTranslation{Czech}{tags}{}%
+    %\DeclareTranslation{Czech}{All-or-nothing}{}%
+    %\DeclareTranslation{Czech}{Case-Sensitive}{}%
+    %\DeclareTranslation{Czech}{Case-Insensitive}{}%
+    %\DeclareTranslation{Czech}{Drag and drop}{}%
+    %\DeclareTranslation{Czech}{Information for graders}{}%
+    %\DeclareTranslation{Czech}{Response template}{}%
+    %\DeclareTranslation{Czech}{editor}{}%
+    %\DeclareTranslation{Czech}{editorfilepicker}{}%
+    %\DeclareTranslation{Czech}{plain}{}%
+    %\DeclareTranslation{Czech}{monospaced}{}%
+    %\DeclareTranslation{Czech}{noinline}{}%
+    %\DeclareTranslation{Czech}{Total of marks}{}%
+    \DeclareTranslation{Danish}{True}{Sandt}%
+    \DeclareTranslation{Danish}{False}{Falsk}%
+    %\DeclareTranslation{Danish}{cloze}{}%
+    %\DeclareTranslation{Danish}{description}{}%
+    %\DeclareTranslation{Danish}{essay}{}%
+    %\DeclareTranslation{Danish}{matching}{}%
+    %\DeclareTranslation{Danish}{multi}{}%
+    %\DeclareTranslation{Danish}{numerical}{}%
+    %\DeclareTranslation{Danish}{shortanswer}{}%
+    %\DeclareTranslation{Danish}{truefalse}{}%
+    %\DeclareTranslation{Danish}{Shuffle}{}%
+    %\DeclareTranslation{Danish}{Single}{}%
+    %\DeclareTranslation{Danish}{Multiple}{}%
+    %\DeclareTranslation{Danish}{marked out of}{}%
+    %\DeclareTranslation{Danish}{penalty}{}%
+    %\DeclareTranslation{Danish}{tags}{}%
+    %\DeclareTranslation{Danish}{All-or-nothing}{}%
+    %\DeclareTranslation{Danish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Danish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Danish}{Drag and drop}{}%
+    %\DeclareTranslation{Danish}{Information for graders}{}%
+    %\DeclareTranslation{Danish}{Response template}{}%
+    %\DeclareTranslation{Danish}{editor}{}%
+    %\DeclareTranslation{Danish}{editorfilepicker}{}%
+    %\DeclareTranslation{Danish}{plain}{}%
+    %\DeclareTranslation{Danish}{monospaced}{}%
+    %\DeclareTranslation{Danish}{noinline}{}%
+    %\DeclareTranslation{Danish}{Total of marks}{}%
+    \DeclareTranslation{Dutch}{True}{Waar}%
+    \DeclareTranslation{Dutch}{False}{Niet waar}%
+    %\DeclareTranslation{Dutch}{cloze}{}%
+    %\DeclareTranslation{Dutch}{description}{}%
+    %\DeclareTranslation{Dutch}{essay}{}%
+    %\DeclareTranslation{Dutch}{matching}{}%
+    %\DeclareTranslation{Dutch}{multi}{}%
+    %\DeclareTranslation{Dutch}{numerical}{}%
+    %\DeclareTranslation{Dutch}{shortanswer}{}%
+    %\DeclareTranslation{Dutch}{truefalse}{}%
+    %\DeclareTranslation{Dutch}{Shuffle}{}%
+    %\DeclareTranslation{Dutch}{Single}{}%
+    %\DeclareTranslation{Dutch}{Multiple}{}%
+    %\DeclareTranslation{Dutch}{marked out of}{}%
+    %\DeclareTranslation{Dutch}{penalty}{}%
+    %\DeclareTranslation{Dutch}{tags}{}%
+    %\DeclareTranslation{Dutch}{All-or-nothing}{}%
+    %\DeclareTranslation{Dutch}{Case-Sensitive}{}%
+    %\DeclareTranslation{Dutch}{Case-Insensitive}{}%
+    %\DeclareTranslation{Dutch}{Drag and drop}{}%
+    %\DeclareTranslation{Dutch}{Information for graders}{}%
+    %\DeclareTranslation{Dutch}{Response template}{}%
+    %\DeclareTranslation{Dutch}{editor}{}%
+    %\DeclareTranslation{Dutch}{editorfilepicker}{}%
+    %\DeclareTranslation{Dutch}{plain}{}%
+    %\DeclareTranslation{Dutch}{monospaced}{}%
+    %\DeclareTranslation{Dutch}{noinline}{}%
+    %\DeclareTranslation{Dutch}{Total of marks}{}%
+    \DeclareTranslation{English}{True}{True}%
+    \DeclareTranslation{English}{False}{False}%
+    \DeclareTranslation{English}{cloze}{Embedded answers}%
+    \DeclareTranslation{English}{description}{Description}%
+    \DeclareTranslation{English}{essay}{Essay}%
+    \DeclareTranslation{English}{matching}{Matching}%
+    \DeclareTranslation{English}{multi}{Multiple choice}%
+    \DeclareTranslation{English}{numerical}{Numerical}%
+    \DeclareTranslation{English}{shortanswer}{Short answer}%
+    \DeclareTranslation{English}{truefalse}{True/False}%
+    \DeclareTranslation{English}{Shuffle}{Shuffle}%
+    \DeclareTranslation{English}{Single}{One answer only}%
+    \DeclareTranslation{English}{Multiple}{Multiple answers allowed}%
+    \DeclareTranslation{English}{marked out of}{marked out of}%
+    \DeclareTranslation{English}{penalty}{penalty}%
+    \DeclareTranslation{English}{tags}{tags}%
+    \DeclareTranslation{English}{All-or-nothing}{All-or-nothing}%
+    \DeclareTranslation{English}{Case-Sensitive}{Case-Sensitive}%
+    \DeclareTranslation{English}{Case-Insensitive}{Case-Insensitive}%
+    \DeclareTranslation{English}{Drag and drop}{Drag and drop}%
+    \DeclareTranslation{English}{Information for graders}{Information for graders}%
+    \DeclareTranslation{English}{Response template}{Response template}%
+    \DeclareTranslation{English}{editor}{HTML editor}%
+    \DeclareTranslation{English}{editorfilepicker}{HTML editor + file picker}%
+    \DeclareTranslation{English}{plain}{Plain text}%
+    \DeclareTranslation{English}{monospaced}{Plain text, monospaced font}%
+    \DeclareTranslation{English}{noinline}{File picker}%
+    \DeclareTranslation{English}{Total of marks}{Total of marks}%
+    \DeclareTranslation{Estonian}{True}{T\~oene}%
+    \DeclareTranslation{Estonian}{False}{V\"a\"ar}%
+    %\DeclareTranslation{Estonian}{cloze}{}%
+    %\DeclareTranslation{Estonian}{description}{}%
+    %\DeclareTranslation{Estonian}{essay}{}%
+    %\DeclareTranslation{Estonian}{matching}{}%
+    %\DeclareTranslation{Estonian}{multi}{}%
+    %\DeclareTranslation{Estonian}{numerical}{}%
+    %\DeclareTranslation{Estonian}{shortanswer}{}%
+    %\DeclareTranslation{Estonian}{truefalse}{}%
+    %\DeclareTranslation{Estonian}{Shuffle}{}%
+    %\DeclareTranslation{Estonian}{Single}{}%
+    %\DeclareTranslation{Estonian}{Multiple}{}%
+    %\DeclareTranslation{Estonian}{marked out of}{}%
+    %\DeclareTranslation{Estonian}{penalty}{}%
+    %\DeclareTranslation{Estonian}{tags}{}%
+    %\DeclareTranslation{Estonian}{All-or-nothing}{}%
+    %\DeclareTranslation{Estonian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Estonian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Estonian}{Drag and drop}{}%
+    %\DeclareTranslation{Estonian}{Information for graders}{}%
+    %\DeclareTranslation{Estonian}{Response template}{}%
+    %\DeclareTranslation{Estonian}{editor}{}%
+    %\DeclareTranslation{Estonian}{editorfilepicker}{}%
+    %\DeclareTranslation{Estonian}{plain}{}%
+    %\DeclareTranslation{Estonian}{monospaced}{}%
+    %\DeclareTranslation{Estonian}{noinline}{}%
+    %\DeclareTranslation{Estonian}{Total of marks}{}%
+    \DeclareTranslation{Finnish}{True}{Tosi}%
+    \DeclareTranslation{Finnish}{False}{Ep\"atosi}%
+    %\DeclareTranslation{Finnish}{cloze}{}%
+    %\DeclareTranslation{Finnish}{description}{}%
+    %\DeclareTranslation{Finnish}{essay}{}%
+    %\DeclareTranslation{Finnish}{matching}{}%
+    %\DeclareTranslation{Finnish}{multi}{}%
+    %\DeclareTranslation{Finnish}{numerical}{}%
+    %\DeclareTranslation{Finnish}{shortanswer}{}%
+    %\DeclareTranslation{Finnish}{truefalse}{}%
+    %\DeclareTranslation{Finnish}{Shuffle}{}%
+    %\DeclareTranslation{Finnish}{Single}{}%
+    %\DeclareTranslation{Finnish}{Multiple}{}%
+    %\DeclareTranslation{Finnish}{marked out of}{}%
+    %\DeclareTranslation{Finnish}{penalty}{}%
+    %\DeclareTranslation{Finnish}{tags}{}%
+    %\DeclareTranslation{Finnish}{All-or-nothing}{}%
+    %\DeclareTranslation{Finnish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Finnish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Finnish}{Drag and drop}{}%
+    %\DeclareTranslation{Finnish}{Information for graders}{}%
+    %\DeclareTranslation{Finnish}{Response template}{}%
+    %\DeclareTranslation{Finnish}{editor}{}%
+    %\DeclareTranslation{Finnish}{editorfilepicker}{}%
+    %\DeclareTranslation{Finnish}{plain}{}%
+    %\DeclareTranslation{Finnish}{monospaced}{}%
+    %\DeclareTranslation{Finnish}{noinline}{}%
+    %\DeclareTranslation{Finnish}{Total of marks}{}%
+    \DeclareTranslation{French}{True}{Vrai}%
+    \DeclareTranslation{French}{False}{Faux}%
+    \DeclareTranslation{French}{cloze}{R\'eponses int\'egr\'ees}%
+    \DeclareTranslation{French}{description}{Description}%
+    \DeclareTranslation{French}{essay}{Composition}%
+    \DeclareTranslation{French}{matching}{Appariement}%
+    \DeclareTranslation{French}{multi}{QCM}%
+    \DeclareTranslation{French}{numerical}{Num\'erique}%
+    \DeclareTranslation{French}{shortanswer}{R\'eponse courte}%
+    \DeclareTranslation{French}{truefalse}{Vrai/Faux}%
+    \DeclareTranslation{French}{Shuffle}{M\'elanger}%
+    \DeclareTranslation{French}{Single}{R\'eponse unique}%
+    \DeclareTranslation{French}{Multiple}{Plusieurs r\'eponses possibles}%
+    \DeclareTranslation{French}{marked out of}{not\'e sur}%
+    \DeclareTranslation{French}{penalty}{p\'enalit\'e}%
+    \DeclareTranslation{French}{tags}{\'etiquettes}%
+    \DeclareTranslation{French}{All-or-nothing}{Tout ou rien}%
+    \DeclareTranslation{French}{Case-Sensitive}{Sensible \`a la casse}%
+    \DeclareTranslation{French}{Case-Insensitive}{Insensible \`a la casse}%
+    \DeclareTranslation{French}{Drag and drop}{Glisser-d\'eposer}%
+    \DeclareTranslation{French}{Information for graders}{Information pour les évaluateurs}%
+    \DeclareTranslation{French}{Response template}{Mod\`ele de r\'eponse}%
+    \DeclareTranslation{French}{editor}{\'Editeur HTML}%
+    \DeclareTranslation{French}{editorfilepicker}{\'Editeur \HTML\ + s\'electeur de fichier}%
+    \DeclareTranslation{French}{plain}{\'Editeur texte}%
+    \DeclareTranslation{French}{monospaced}{\'Editeur texte, police \`a chasse fixe}%
+    \DeclareTranslation{French}{noinline}{S\'electeur de fichier}%
+    \DeclareTranslation{French}{Total of marks}{Total des points}%
+    \DeclareTranslation{German}{True}{Wahr}%
+    \DeclareTranslation{German}{False}{Falsch}%
+    \DeclareTranslation{German}{cloze}{L\"uckentext}%
+    \DeclareTranslation{German}{description}{Beschreibung}%
+    \DeclareTranslation{German}{essay}{Freitext}%
+    \DeclareTranslation{German}{matching}{Zuordnung}%
+    \DeclareTranslation{German}{multi}{Multiple-Choice}%
+    \DeclareTranslation{German}{numerical}{Numerisch}%
+    \DeclareTranslation{German}{shortanswer}{Kurzantwort}%
+    \DeclareTranslation{German}{truefalse}{Wahr/Falsch}%
+    \DeclareTranslation{German}{Shuffle}{Mischen}%
+    \DeclareTranslation{German}{Single}{Nur eine Antwort erlaubt}%
+    \DeclareTranslation{German}{Multiple}{Mehrere Antworten erlaubt}%
+    \DeclareTranslation{German}{marked out of}{Punkte:}%
+    \DeclareTranslation{German}{penalty}{Abzug}%
+    \DeclareTranslation{German}{tags}{Tags}%
+    \DeclareTranslation{German}{All-or-nothing}{Alles-oder-nichts}%
+    \DeclareTranslation{German}{Case-Sensitive}{Gro\ss-/Kleinschreibung muss stimmen}%
+    \DeclareTranslation{German}{Case-Insensitive}{Gro\ss-/Kleinschreibung unwichtig}%
+    \DeclareTranslation{German}{Drag and drop}{Drag-and-Drop}%
+    \DeclareTranslation{German}{Information for graders}{Information zur Bewertung}%
+    \DeclareTranslation{German}{Response template}{Antwortvorlage}%
+    \DeclareTranslation{German}{editor}{HTML Editor}%
+    \DeclareTranslation{German}{editorfilepicker}{HTML Editor mit Dateiauswahl}%
+    \DeclareTranslation{German}{plain}{Unformatierter Text}%
+    \DeclareTranslation{German}{monospaced}{Unformatierter Text, Schriftart mit fester Laufweite}%
+    \DeclareTranslation{German}{noinline}{Kein Textfeld}%
+    \DeclareTranslation{German}{Total of marks}{Gesamtsumme der Punkte}%
+    \DeclareTranslation{Hungarian}{True}{Igaz}%
+    \DeclareTranslation{Hungarian}{False}{Hamis}%
+    %\DeclareTranslation{Hungarian}{cloze}{}%
+    %\DeclareTranslation{Hungarian}{description}{}%
+    %\DeclareTranslation{Hungarian}{essay}{}%
+    %\DeclareTranslation{Hungarian}{matching}{}%
+    %\DeclareTranslation{Hungarian}{multi}{}%
+    %\DeclareTranslation{Hungarian}{numerical}{}%
+    %\DeclareTranslation{Hungarian}{shortanswer}{}%
+    %\DeclareTranslation{Hungarian}{truefalse}{}%
+    %\DeclareTranslation{Hungarian}{Shuffle}{}%
+    %\DeclareTranslation{Hungarian}{Single}{}%
+    %\DeclareTranslation{Hungarian}{Multiple}{}%
+    %\DeclareTranslation{Hungarian}{marked out of}{}%
+    %\DeclareTranslation{Hungarian}{penalty}{}%
+    %\DeclareTranslation{Hungarian}{tags}{}%
+    %\DeclareTranslation{Hungarian}{All-or-nothing}{}%
+    %\DeclareTranslation{Hungarian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Hungarian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Hungarian}{Drag and drop}{}%
+    %\DeclareTranslation{Hungarian}{Information for graders}{}%
+    %\DeclareTranslation{Hungarian}{Response template}{}%
+    %\DeclareTranslation{Hungarian}{editor}{}%
+    %\DeclareTranslation{Hungarian}{editorfilepicker}{}%
+    %\DeclareTranslation{Hungarian}{plain}{}%
+    %\DeclareTranslation{Hungarian}{monospaced}{}%
+    %\DeclareTranslation{Hungarian}{noinline}{}%
+    %\DeclareTranslation{Hungarian}{Total of marks}{}%
+    \DeclareTranslation{Icelandic}{True}{R\'ett}%
+    \DeclareTranslation{Icelandic}{False}{Rangt}%
+    %\DeclareTranslation{Icelandic}{cloze}{}%
+    %\DeclareTranslation{Icelandic}{description}{}%
+    %\DeclareTranslation{Icelandic}{essay}{}%
+    %\DeclareTranslation{Icelandic}{matching}{}%
+    %\DeclareTranslation{Icelandic}{multi}{}%
+    %\DeclareTranslation{Icelandic}{numerical}{}%
+    %\DeclareTranslation{Icelandic}{shortanswer}{}%
+    %\DeclareTranslation{Icelandic}{truefalse}{}%
+    %\DeclareTranslation{Icelandic}{Shuffle}{}%
+    %\DeclareTranslation{Icelandic}{Single}{}%
+    %\DeclareTranslation{Icelandic}{Multiple}{}%
+    %\DeclareTranslation{Icelandic}{marked out of}{}%
+    %\DeclareTranslation{Icelandic}{penalty}{}%
+    %\DeclareTranslation{Icelandic}{tags}{}%
+    %\DeclareTranslation{Icelandic}{All-or-nothing}{}%
+    %\DeclareTranslation{Icelandic}{Case-Sensitive}{}%
+    %\DeclareTranslation{Icelandic}{Case-Insensitive}{}%
+    %\DeclareTranslation{Icelandic}{Drag and drop}{}%
+    %\DeclareTranslation{Icelandic}{Information for graders}{}%
+    %\DeclareTranslation{Icelandic}{Response template}{}%
+    %\DeclareTranslation{Icelandic}{editor}{}%
+    %\DeclareTranslation{Icelandic}{editorfilepicker}{}%
+    %\DeclareTranslation{Icelandic}{plain}{}%
+    %\DeclareTranslation{Icelandic}{monospaced}{}%
+    %\DeclareTranslation{Icelandic}{noinline}{}%
+    %\DeclareTranslation{Icelandic}{Total of marks}{}%
+    \DeclareTranslation{Italian}{True}{Vero}%
+    \DeclareTranslation{Italian}{False}{Falso}%
+    \DeclareTranslation{Italian}{cloze}{Risposte inglobate}%
+    \DeclareTranslation{Italian}{description}{Descrizione}%
+    \DeclareTranslation{Italian}{essay}{Tema libero}%
+    \DeclareTranslation{Italian}{matching}{Corrispondenza}%
+    \DeclareTranslation{Italian}{multi}{Risposta multipla}%
+    \DeclareTranslation{Italian}{numerical}{Numerica}%
+    \DeclareTranslation{Italian}{shortanswer}{Risposta breve}%
+    \DeclareTranslation{Italian}{truefalse}{Vero/Falso}%
+    \DeclareTranslation{Italian}{Shuffle}{Ordine casuale}%
+    \DeclareTranslation{Italian}{Single}{Una sola alternativa}%
+    \DeclareTranslation{Italian}{Multiple}{Pi\`u alternative}%
+    \DeclareTranslation{Italian}{marked out of}{punteggio max.}%
+    \DeclareTranslation{Italian}{penalty}{penalit\`a}%
+    \DeclareTranslation{Italian}{tags}{etichette}%
+    \DeclareTranslation{Italian}{All-or-nothing}{Tutto o niente}%
+    \DeclareTranslation{Italian}{Case-Sensitive}{Sensibile alle maiuscole}%
+    \DeclareTranslation{Italian}{Case-Insensitive}{Maiuscolo/minuscolo indifferente}%
+    \DeclareTranslation{Italian}{Drag and drop}{Drag and drop}%
+    \DeclareTranslation{Italian}{Information for graders}{Informazioni per i valutatori}%
+    \DeclareTranslation{Italian}{Response template}{Modello di risposta}%
+    \DeclareTranslation{Italian}{editor}{Editor HTML}%
+    \DeclareTranslation{Italian}{editorfilepicker}{Editor \HTML\ con file picker}%
+    \DeclareTranslation{Italian}{plain}{Testo semplice}%
+    \DeclareTranslation{Italian}{monospaced}{Testo semplice, caratteri a spaziatura fissa}%
+    \DeclareTranslation{Italian}{noinline}{Solo file picker}%
+    \DeclareTranslation{Italian}{Total of marks}{Punteggio complessivo}%
+    \DeclareTranslation{Lithuanian}{True}{Tiesa}%
+    \DeclareTranslation{Lithuanian}{False}{Netiesa}%
+    %\DeclareTranslation{Lithuanian}{cloze}{}%
+    %\DeclareTranslation{Lithuanian}{description}{}%
+    %\DeclareTranslation{Lithuanian}{essay}{}%
+    %\DeclareTranslation{Lithuanian}{matching}{}%
+    %\DeclareTranslation{Lithuanian}{multi}{}%
+    %\DeclareTranslation{Lithuanian}{numerical}{}%
+    %\DeclareTranslation{Lithuanian}{shortanswer}{}%
+    %\DeclareTranslation{Lithuanian}{truefalse}{}%
+    %\DeclareTranslation{Lithuanian}{Shuffle}{}%
+    %\DeclareTranslation{Lithuanian}{Single}{}%
+    %\DeclareTranslation{Lithuanian}{Multiple}{}%
+    %\DeclareTranslation{Lithuanian}{marked out of}{}%
+    %\DeclareTranslation{Lithuanian}{penalty}{}%
+    %\DeclareTranslation{Lithuanian}{tags}{}%
+    %\DeclareTranslation{Lithuanian}{All-or-nothing}{}%
+    %\DeclareTranslation{Lithuanian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Lithuanian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Lithuanian}{Drag and drop}{}%
+    %\DeclareTranslation{Lithuanian}{Information for graders}{}%
+    %\DeclareTranslation{Lithuanian}{Response template}{}%
+    %\DeclareTranslation{Lithuanian}{editor}{}%
+    %\DeclareTranslation{Lithuanian}{editorfilepicker}{}%
+    %\DeclareTranslation{Lithuanian}{plain}{}%
+    %\DeclareTranslation{Lithuanian}{monospaced}{}%
+    %\DeclareTranslation{Lithuanian}{noinline}{}%
+    %\DeclareTranslation{Lithuanian}{Total of marks}{}%
+    \DeclareTranslation{Norsk}{True}{Riktig}%
+    \DeclareTranslation{Norsk}{False}{Feil}%
+    %\DeclareTranslation{Norsk}{cloze}{}%
+    %\DeclareTranslation{Norsk}{description}{}%
+    %\DeclareTranslation{Norsk}{essay}{}%
+    %\DeclareTranslation{Norsk}{matching}{}%
+    %\DeclareTranslation{Norsk}{multi}{}%
+    %\DeclareTranslation{Norsk}{numerical}{}%
+    %\DeclareTranslation{Norsk}{shortanswer}{}%
+    %\DeclareTranslation{Norsk}{truefalse}{}%
+    %\DeclareTranslation{Norsk}{Shuffle}{}%
+    %\DeclareTranslation{Norsk}{Single}{}%
+    %\DeclareTranslation{Norsk}{Multiple}{}%
+    %\DeclareTranslation{Norsk}{marked out of}{}%
+    %\DeclareTranslation{Norsk}{penalty}{}%
+    %\DeclareTranslation{Norsk}{tags}{}%
+    %\DeclareTranslation{Norsk}{All-or-nothing}{}%
+    %\DeclareTranslation{Norsk}{Case-Sensitive}{}%
+    %\DeclareTranslation{Norsk}{Case-Insensitive}{}%
+    %\DeclareTranslation{Norsk}{Drag and drop}{}%
+    %\DeclareTranslation{Norsk}{Information for graders}{}%
+    %\DeclareTranslation{Norsk}{Response template}{}%
+    %\DeclareTranslation{Norsk}{editor}{}%
+    %\DeclareTranslation{Norsk}{editorfilepicker}{}%
+    %\DeclareTranslation{Norsk}{plain}{}%
+    %\DeclareTranslation{Norsk}{monospaced}{}%
+    %\DeclareTranslation{Norsk}{noinline}{}%
+    %\DeclareTranslation{Norsk}{Total of marks}{}%
+    \DeclareTranslation{Polish}{True}{Prawda}%
+    \DeclareTranslation{Polish}{False}{Fa\l sz}%
+    %\DeclareTranslation{Polish}{cloze}{}%
+    %\DeclareTranslation{Polish}{description}{}%
+    %\DeclareTranslation{Polish}{essay}{}%
+    %\DeclareTranslation{Polish}{matching}{}%
+    %\DeclareTranslation{Polish}{multi}{}%
+    %\DeclareTranslation{Polish}{numerical}{}%
+    %\DeclareTranslation{Polish}{shortanswer}{}%
+    %\DeclareTranslation{Polish}{truefalse}{}%
+    %\DeclareTranslation{Polish}{Shuffle}{}%
+    %\DeclareTranslation{Polish}{Single}{}%
+    %\DeclareTranslation{Polish}{Multiple}{}%
+    %\DeclareTranslation{Polish}{marked out of}{}%
+    %\DeclareTranslation{Polish}{penalty}{}%
+    %\DeclareTranslation{Polish}{tags}{}%
+    %\DeclareTranslation{Polish}{All-or-nothing}{}%
+    %\DeclareTranslation{Polish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Polish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Polish}{Drag and drop}{}%
+    %\DeclareTranslation{Polish}{Information for graders}{}%
+    %\DeclareTranslation{Polish}{Response template}{}%
+    %\DeclareTranslation{Polish}{editor}{}%
+    %\DeclareTranslation{Polish}{editorfilepicker}{}%
+    %\DeclareTranslation{Polish}{plain}{}%
+    %\DeclareTranslation{Polish}{monospaced}{}%
+    %\DeclareTranslation{Polish}{noinline}{}%
+    %\DeclareTranslation{Polish}{Total of marks}{}%
+    \DeclareTranslation{Portuguese}{True}{Verdadeiro}%
+    \DeclareTranslation{Portuguese}{False}{Falso}%
+    %\DeclareTranslation{Portuguese}{cloze}{}%
+    %\DeclareTranslation{Portuguese}{description}{}%
+    %\DeclareTranslation{Portuguese}{essay}{}%
+    %\DeclareTranslation{Portuguese}{matching}{}%
+    %\DeclareTranslation{Portuguese}{multi}{}%
+    %\DeclareTranslation{Portuguese}{numerical}{}%
+    %\DeclareTranslation{Portuguese}{shortanswer}{}%
+    %\DeclareTranslation{Portuguese}{truefalse}{}%
+    %\DeclareTranslation{Portuguese}{Shuffle}{}%
+    %\DeclareTranslation{Portuguese}{Single}{}%
+    %\DeclareTranslation{Portuguese}{Multiple}{}%
+    %\DeclareTranslation{Portuguese}{marked out of}{}%
+    %\DeclareTranslation{Portuguese}{penalty}{}%
+    %\DeclareTranslation{Portuguese}{tags}{}%
+    %\DeclareTranslation{Portuguese}{All-or-nothing}{}%
+    %\DeclareTranslation{Portuguese}{Case-Sensitive}{}%
+    %\DeclareTranslation{Portuguese}{Case-Insensitive}{}%
+    %\DeclareTranslation{Portuguese}{Drag and drop}{}%
+    %\DeclareTranslation{Portuguese}{Information for graders}{}%
+    %\DeclareTranslation{Portuguese}{Response template}{}%
+    %\DeclareTranslation{Portuguese}{editor}{}%
+    %\DeclareTranslation{Portuguese}{editorfilepicker}{}%
+    %\DeclareTranslation{Portuguese}{plain}{}%
+    %\DeclareTranslation{Portuguese}{monospaced}{}%
+    %\DeclareTranslation{Portuguese}{noinline}{}%
+    %\DeclareTranslation{Portuguese}{Total of marks}{}%
+    \DeclareTranslation{Romanian}{True}{Adev\u{a}rat}%
+    \DeclareTranslation{Romanian}{False}{Fals}%
+    %\DeclareTranslation{Romanian}{cloze}{}%
+    %\DeclareTranslation{Romanian}{description}{}%
+    %\DeclareTranslation{Romanian}{essay}{}%
+    %\DeclareTranslation{Romanian}{matching}{}%
+    %\DeclareTranslation{Romanian}{multi}{}%
+    %\DeclareTranslation{Romanian}{numerical}{}%
+    %\DeclareTranslation{Romanian}{shortanswer}{}%
+    %\DeclareTranslation{Romanian}{truefalse}{}%
+    %\DeclareTranslation{Romanian}{Shuffle}{}%
+    %\DeclareTranslation{Romanian}{Single}{}%
+    %\DeclareTranslation{Romanian}{Multiple}{}%
+    %\DeclareTranslation{Romanian}{marked out of}{}%
+    %\DeclareTranslation{Romanian}{penalty}{}%
+    %\DeclareTranslation{Romanian}{tags}{}%
+    %\DeclareTranslation{Romanian}{All-or-nothing}{}%
+    %\DeclareTranslation{Romanian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Romanian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Romanian}{Drag and drop}{}%
+    %\DeclareTranslation{Romanian}{Information for graders}{}%
+    %\DeclareTranslation{Romanian}{Response template}{}%
+    %\DeclareTranslation{Romanian}{editor}{}%
+    %\DeclareTranslation{Romanian}{editorfilepicker}{}%
+    %\DeclareTranslation{Romanian}{plain}{}%
+    %\DeclareTranslation{Romanian}{monospaced}{}%
+    %\DeclareTranslation{Romanian}{noinline}{}%
+    %\DeclareTranslation{Romanian}{Total of marks}{}%
+    \DeclareTranslation{Spanish}{True}{Verdadero}%
+    \DeclareTranslation{Spanish}{False}{Falso}%
+    \DeclareTranslation{Spanish}{cloze}{Respuestas anidadas}%
+    \DeclareTranslation{Spanish}{description}{Descripci\'on}%
+    \DeclareTranslation{Spanish}{essay}{Ensayo}%
+    \DeclareTranslation{Spanish}{matching}{Emparejamiento}%
+    \DeclareTranslation{Spanish}{multi}{Opci\'on m\'ultiple}%
+    \DeclareTranslation{Spanish}{numerical}{Num\'erica}%
+    \DeclareTranslation{Spanish}{shortanswer}{Respuesta corta}%
+    \DeclareTranslation{Spanish}{truefalse}{Verdadero/Falso}%
+    \DeclareTranslation{Spanish}{Shuffle}{Barajar al azar}%
+    \DeclareTranslation{Spanish}{Single}{S\'olo una respuesta}%
+    \DeclareTranslation{Spanish}{Multiple}{Se permiten varias respuestas}%
+    \DeclareTranslation{Spanish}{marked out of}{Punt\'ua como}%
+    \DeclareTranslation{Spanish}{penalty}{penalizaci\'on}%
+    \DeclareTranslation{Spanish}{tags}{marcas}%
+    \DeclareTranslation{Spanish}{All-or-nothing}{Todo o nada}%
+    \DeclareTranslation{Spanish}{Case-Sensitive}{May\'usculas y min\'usculas deben coincidir}%
+    \DeclareTranslation{Spanish}{Case-Insensitive}{Igual may\'usculas que min\'usculas}%
+    \DeclareTranslation{Spanish}{Drag and drop}{Arrastrar y soltar}%
+    \DeclareTranslation{Spanish}{Information for graders}{Informaci\'on para evaluadores}%
+    \DeclareTranslation{Spanish}{Response template}{Plantilla de respuesta}%
+    \DeclareTranslation{Spanish}{editor}{Editor HTML}%
+    \DeclareTranslation{Spanish}{editorfilepicker}{Editor \HTML\ con selector de archivos}%
+    \DeclareTranslation{Spanish}{plain}{Texto sin formato}%
+    \DeclareTranslation{Spanish}{monospaced}{Texto sin formato, tipografía monoespaciada}%
+    \DeclareTranslation{Spanish}{noinline}{Sin texto}%
+    \DeclareTranslation{Spanish}{Total of marks}{Total de puntos}%
+    \DeclareTranslation{Swedish}{True}{Sant}%
+    \DeclareTranslation{Swedish}{False}{Falskt}%
+    %\DeclareTranslation{Swedish}{cloze}{}%
+    %\DeclareTranslation{Swedish}{description}{}%
+    %\DeclareTranslation{Swedish}{essay}{}%
+    %\DeclareTranslation{Swedish}{matching}{}%
+    %\DeclareTranslation{Swedish}{multi}{}%
+    %\DeclareTranslation{Swedish}{numerical}{}%
+    %\DeclareTranslation{Swedish}{shortanswer}{}%
+    %\DeclareTranslation{Swedish}{truefalse}{}%
+    %\DeclareTranslation{Swedish}{Shuffle}{}%
+    %\DeclareTranslation{Swedish}{Single}{}%
+    %\DeclareTranslation{Swedish}{Multiple}{}%
+    %\DeclareTranslation{Swedish}{marked out of}{}%
+    %\DeclareTranslation{Swedish}{penalty}{}%
+    %\DeclareTranslation{Swedish}{tags}{}%
+    %\DeclareTranslation{Swedish}{All-or-nothing}{}%
+    %\DeclareTranslation{Swedish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Swedish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Swedish}{Drag and drop}{}%
+    %\DeclareTranslation{Swedish}{Information for graders}{}%
+    %\DeclareTranslation{Swedish}{Response template}{}%
+    %\DeclareTranslation{Swedish}{editor}{}%
+    %\DeclareTranslation{Swedish}{editorfilepicker}{}%
+    %\DeclareTranslation{Swedish}{plain}{}%
+    %\DeclareTranslation{Swedish}{monospaced}{}%
+    %\DeclareTranslation{Swedish}{noinline}{}%
+    %\DeclareTranslation{Swedish}{Total of marks}{}%
+    \DeclareTranslation{Turkish}{True}{Do\u{g}ru}%
+    \DeclareTranslation{Turkish}{False}{Yanl\i \c{s}}%
+    %\DeclareTranslation{Turkish}{cloze}{}%
+    %\DeclareTranslation{Turkish}{description}{}%
+    %\DeclareTranslation{Turkish}{essay}{}%
+    %\DeclareTranslation{Turkish}{matching}{}%
+    %\DeclareTranslation{Turkish}{multi}{}%
+    %\DeclareTranslation{Turkish}{numerical}{}%
+    %\DeclareTranslation{Turkish}{shortanswer}{}%
+    %\DeclareTranslation{Turkish}{truefalse}{}%
+    %\DeclareTranslation{Turkish}{Shuffle}{}%
+    %\DeclareTranslation{Turkish}{Single}{}%
+    %\DeclareTranslation{Turkish}{Multiple}{}%
+    %\DeclareTranslation{Turkish}{marked out of}{}%
+    %\DeclareTranslation{Turkish}{penalty}{}%
+    %\DeclareTranslation{Turkish}{tags}{}%
+    %\DeclareTranslation{Turkish}{All-or-nothing}{}%
+    %\DeclareTranslation{Turkish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Turkish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Turkish}{Drag and drop}{}%
+    %\DeclareTranslation{Turkish}{Information for graders}{}%
+    %\DeclareTranslation{Turkish}{Response template}{}%
+    %\DeclareTranslation{Turkish}{editor}{}%
+    %\DeclareTranslation{Turkish}{editorfilepicker}{}%
+    %\DeclareTranslation{Turkish}{plain}{}%
+    %\DeclareTranslation{Turkish}{monospaced}{}%
+    %\DeclareTranslation{Turkish}{noinline}{}%
+    %\DeclareTranslation{Turkish}{Total of marks}{}%
+  \else% neither babel nor polyglossia loaded
+    \newcommand\DeclareTranslationFallback[2]{\csdef{moodle at fallback@#1}{#2}}% Save fallback keys
+    \def\GetTranslation#1{\csuse{moodle at fallback@#1}}% Use fallback keys
+  \fi
+  \DeclareTranslationFallback{True}{True}%
+  \DeclareTranslationFallback{False}{False}%
+  \DeclareTranslationFallback{cloze}{Embedded answers}%
+  \DeclareTranslationFallback{description}{Description}%
+  \DeclareTranslationFallback{essay}{Essay}%
+  \DeclareTranslationFallback{matching}{Matching}%
+  \DeclareTranslationFallback{multi}{Multiple choice}%
+  \DeclareTranslationFallback{numerical}{Numerical}%
+  \DeclareTranslationFallback{shortanswer}{Short answer}%
+  \DeclareTranslationFallback{truefalse}{True/False}%
+  \DeclareTranslationFallback{Shuffle}{Shuffle}%
+  \DeclareTranslationFallback{Single}{One answer only}%
+  \DeclareTranslationFallback{Multiple}{Multiple answers allowed}%
+  \DeclareTranslationFallback{marked out of}{marked out of}%
+  \DeclareTranslationFallback{penalty}{penalty}%
+  \DeclareTranslationFallback{tags}{tags}%
+  \DeclareTranslationFallback{All-or-nothing}{All-or-nothing}%
+  \DeclareTranslationFallback{Case-Sensitive}{Case-Sensitive}%
+  \DeclareTranslationFallback{Case-Insensitive}{Case-Insensitive}%
+  \DeclareTranslationFallback{Drag and drop}{Drag and drop}%
+  \DeclareTranslationFallback{Information for graders}{Information for graders}%
+  \DeclareTranslationFallback{Response template}{Response template}%
+  \DeclareTranslationFallback{editor}{HTML editor}%
+  \DeclareTranslationFallback{editorfilepicker}{HTML editor + file picker}%
+  \DeclareTranslationFallback{plain}{Plain text}%
+  \DeclareTranslationFallback{monospaced}{Plain text, monospaced font}%
+  \DeclareTranslationFallback{noinline}{File picker}%
+  \DeclareTranslationFallback{Total of marks}{Total of marks}%
+}%
+%    \end{macrocode}
+%
+% Users of the |babel| package loaded with specific options may experience problems
+% related to active characters and shorthands. We tell the problems and solutions we know.
+%    \begin{macrocode}
 \AtBeginDocument{%
-  \def\moodle at babel@german at warn{\PackageWarning{moodle}{Be careful when using moodle
-         and German-related babel package options. The symbol " is made active and your umlauts
-         will confuse moodle. You can either 1) compile with xelatex/lualatex with UTF-8 coded
-         characters or 2) avoid the babel option.}
-  }
-  \@ifpackagewith{babel}{german}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{austrian}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{swissgerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{swissgerman.toss}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{ngerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{naustrian}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{nswissgerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{nswissgerman.toss}{\moodle at babel@german at warn}{\relax}%
-  \ifPDFTeX % pdflatex or latex
-    \@ifpackagewith{babel}{french}{%
-      \PackageWarning{moodle}{Be careful when using LaTeX, moodle, and the babel package with option 'french'. Autospacing produces in undesired symbols in the XML. You can either 1) compile with xelatex/lualatex or 2) add '\NoAutoSpacing' after '\begin{quiz}'.}%
-    }{\relax}%
+  \@ifpackageloaded{babel}{%
+    \@ifundefined{bbl at loaded}{}{% polyglossia fakes babel
+      \forcsvlist{\listadd\moodle at babel@german at list}{german,austrian,swissgerman,swissgerman.toss,ngerman,naustrian,nswissgerman,nswissgerman.toss}%
+      \forcsvlist{\listadd\moodle at babel@french at list}{acadian,french,frenchb,francais}%
+      \ifPDFTeX
+        \def\moodle at babel@french at warn{%
+          \PackageWarning{moodle}{Be careful when using pdflatex, moodle, and the
+            babel package loaded with a French-related option. Autospacing
+            yields undesired symbols in the XML. Here are three workarounds:
+            \MessageBreak 1) compile with xelatex/lualatex,\MessageBreak 2)
+            add `\NoAutoSpacing' after `\begin{quiz}', or\MessageBreak 3)
+            avoid the babel option.^^J}}%
+        \def\moodle at babel@german at warn{%
+          \PackageWarning{moodle}{Be careful when using pdflatex, moodle, and
+            the babel package loaded with a German-related option. The symbol
+            `"' is made active and your umlauts will confuse moodle. Here are
+            three workarounds:\MessageBreak 1) compile with xelatex/lualatex,
+            \MessageBreak 2) add `\string\shorthandoff{"}' after `\begin{quiz}',
+            or\MessageBreak 3) avoid the babel option.^^J}}%
+      \fi
+      \def\moodle at babel@turkish at warn{%
+        \PackageWarning{moodle}{Be careful when using moodle and the babel
+          package loaded with option `turkish'. Shorthands are likely to
+          break compilation. Here are three workarounds:\MessageBreak 1)
+          rely on `polyglossia' (XeTeX or LuaTeX),\MessageBreak 2) add
+          `\shorthandoff{=:!}' after `\begin{quiz}', or\MessageBreak
+          3) avoid the babel option.^^J}}%
+      \def\do#1{%
+        \ifstrequal{#1}{turkish}{\moodle at babel@turkish at warn}{%
+          \ifinlist{#1}{\moodle at babel@french at list}%
+            {\ifPDFTeX\moodle at babel@french at warn\fi}{%
+              \ifinlist{#1}{\moodle at babel@german at list}{%
+                \ifPDFTeX\moodle at babel@german at warn\else
+                  \gdef\moodle at babel@german at warn{%
+                    \PackageWarning{moodle}{Be careful when using moodle and
+            the babel package loaded with a German-related option that make the
+            symbol `"' active. We recommend typing umlauts with UTF-8
+            characters. By default, `\string\"a' is poorly translated in the XML
+            file. This is fixed if you define `\string\shorthandoff{"}' after
+            `\begin{quiz}'. But then `"a` will no longer work as expected.^^J}%
+                  }%
+                  \gdef\moodle at babel@german at warn@single{%
+                    \moodle at babel@german at warn
+                    \gdef\moodle at babel@german at warn@single{}%\relax
+                  }%
+                  \pretocmd{\"}%
+                    {\moodle at babel@german at warn@single}%
+                    {}%
+                    { \PackageWarning{moodle}{Umlaut patch failed.}%
+                      \moodle at babel@german at warn@single
+                    }%
+                \fi
+              }{}%
+            }
+
+        }
+      }
+      \expandafter\docsvlist\expandafter{\bbl at loaded}%
+    }%
+  }{}%
+}%
+%    \end{macrocode}
+%
+% \subsection{Warning and Error Management}
+%
+%    \begin{macrocode}
+\def\moodle at WarningOrError#1#2#3{%
+  % #1 : major version
+  % #2 : minor version
+  % #3 : feature
+  \ifnum\the\moodle at LMSmajor\the\moodle at LMSminor=\z@\relax
+    \PackageWarning{moodle}{#3 is only supported by Moodle #1.#2+}%
+  \else
+    \ifnum\numexpr 1000*\the\moodle at LMSmajor+\the\moodle at LMSminor\relax<\numexpr 1000*#1+#2\relax
+      \PackageError{moodle}{#3 is only supported by Moodle #1.#2+
+       (you declared Moodle \the\moodle at LMSmajor.\the\moodle at LMSminor)}%
+    \fi
   \fi
 }%
 %    \end{macrocode}
-% 
-%
 % \Finale
 \endinput

Modified: trunk/Master/texmf-dist/source/latex/moodle/moodle.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/moodle/moodle.ins	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/source/latex/moodle/moodle.ins	2023-01-29 21:21:06 UTC (rev 65672)
@@ -26,8 +26,8 @@
 
 This is a generated file.
 
-Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail.com)
-and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans.org).
+Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail DOT com)
+and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans DOT org).
 
 This work may be distributed and/or modified under the
 conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/moodle/moodle.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moodle/moodle.sty	2023-01-29 21:19:48 UTC (rev 65671)
+++ trunk/Master/texmf-dist/tex/latex/moodle/moodle.sty	2023-01-29 21:21:06 UTC (rev 65672)
@@ -8,8 +8,8 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail.com)
-%% and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans.org).
+%% Copyright 2016 by Anders O.F. Hendrickson (anders.o.f.hendrickson AT gmail DOT com)
+%% and 2019-2021 by Matthieu Guerquin-Kern (guerquin-kern AT crans DOT org).
 %% 
 %% This work may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either version 1.3
@@ -21,7 +21,13 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[1999/12/01]
 \ProvidesPackage{moodle}
-    [2021/02/07 v0.9 Moodle quiz XML generation]
+    [2023/01/28 v1.0 Moodle quiz XML generation]
+%% \begin{figure}[bp]
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \newif\ifmoodle at draftmode
 \newif\ifmoodle at handout
 \newif\ifmoodle at stampmode
@@ -31,18 +37,36 @@
 \newif\ifmoodle at section
 \newif\ifmoodle at subsection
 \newif\ifmoodle at numbered
+\newif\ifmoodle at international
+\newif\ifmoodle at feedbackLeft% contribution of Juergen Vollmer, 2021-03-05
+\newif\ifmoodle at samepage% contribution of Romano Giannetti, 2021-03-07
+\newif\ifmoodle at pluginfile%
 
+%% Moodle version
+\RequirePackage{xkeyval}%For key-handling
+\newcount\moodle at LMSmajor% major version number of the LMS targeted
+\newcount\moodle at LMSminor% minor version number of the LMS targeted
+
 %%DECLARATION OF OPTIONS
-\DeclareOption{draft}{\moodle at draftmodetrue}
-\DeclareOption{handout}{\moodle at handouttrue}
-\DeclareOption{final}{\moodle at draftmodefalse}
-\DeclareOption{nostamp}{\moodle at stampmodefalse}
-\DeclareOption{tikz}{\moodle at tikztrue}
-\DeclareOption{svg}{\moodle at svgtrue}
-\DeclareOption{section}{\moodle at sectiontrue\moodle at numberedtrue}
-\DeclareOption{section*}{\moodle at sectiontrue\moodle at numberedfalse}
-\DeclareOption{subsection}{\moodle at sectionfalse\moodle at numberedtrue}
-\DeclareOption{subsection*}{\moodle at sectionfalse\moodle at numberedfalse}
+\DeclareOptionX{draft}{\moodle at draftmodetrue}%
+\DeclareOptionX{handout}{\moodle at handouttrue}%
+\DeclareOptionX{final}{\moodle at draftmodefalse}%
+\DeclareOptionX{nostamp}{\moodle at stampmodefalse}%
+\DeclareOptionX{tikz}{\moodle at tikztrue}%
+\DeclareOptionX{svg}{\moodle at svgtrue}%
+\DeclareOptionX{section}{\moodle at sectiontrue\moodle at numberedtrue}%
+\DeclareOptionX{section*}{\moodle at sectiontrue\moodle at numberedfalse}%
+\DeclareOptionX{subsection}{\moodle at sectionfalse\moodle at numberedtrue}%
+\DeclareOptionX{subsection*}{\moodle at sectionfalse\moodle at numberedfalse}%
+\DeclareOptionX{feedbackleft}{\moodle at feedbackLefttrue}% contribution of Juergen Vollmer, 2021-03-05
+\DeclareOptionX{feedbackright}{\moodle at feedbackLeftfalse}% default
+\DeclareOptionX{samepage}{\moodle at samepagetrue}% contribution of Romano Giannetti, 2021-03-07
+\DeclareOptionX{LMS}[0.0]{%
+  \filename at parse{#1}%
+  \moodle at LMSmajor=\filename at base
+  \moodle at LMSminor=\filename at ext
+}%
+\DeclareOptionX{pluginfile}{\moodle at pluginfiletrue}%
 
 \moodle at draftmodefalse
 \moodle at handoutfalse
@@ -52,11 +76,22 @@
 \moodle at svgfalse
 \moodle at subsectiontrue
 \moodle at numberedfalse
+\moodle at feedbackLeftfalse% contribution of Juergen Vollmer, 2021-03-05
+\moodle at samepagefalse% contribution of Romano Giannetti, 2021-03-07
+\moodle at pluginfilefalse
 
-\ProcessOptions
+\ProcessOptionsX*% the star allows to inherit 'draft' and 'final' from the class
 
+\ifmoodle at samepage
+    \def\moodle at begin@samepage{\minipage[t]{\linewidth}}
+    \def\moodle at end@samepage{\endminipage\vskip 0pt plus 50pt\relax}
+\else
+    % defining to relax is safer versus adding spurious spaces
+    \def\moodle at begin@samepage{\relax}
+    \def\moodle at end@samepage{\relax}
+\fi
+
 \RequirePackage{environ} %To be able to take environment body as a macro argument
-\RequirePackage{xkeyval} %For key-handling
 \RequirePackage{amssymb} %For \checkmark symbol
 \@ifpackageloaded{iftex}{}{\RequirePackage{iftex}}
 \@ifundefined{ifeTeX}{% version of 'iftex' prior to November 2019.
@@ -68,11 +103,12 @@
   \fi
 }
 \RequirePackage{etoolbox}%List management
-\RequirePackage{xpatch}  %To patch commands easily in HTML mode
+\RequirePackage{xpatch}  %To patch commands easily in \HTML\ mode
 \RequirePackage{array}   %For formatting tables in the LaTeX mode of Clozes
 \RequirePackage{ifplatform} % To choose Ghostscript commands
 \@ifundefined{ifpdf}{\RequirePackage{ifpdf}}{}% old iftex would not define the conditional
 \RequirePackage{shellesc} %Luatex-compatible way of getting system access
+\RequirePackage{readprov} %To gather information on the package (version, date, ...)
 \RequirePackage{fancybox} %For fancy LaTeX tags
 \RequirePackage{getitems} %To gather the header and items
 \ifmoodle at handout
@@ -82,6 +118,10 @@
   \RequirePackage{graphicx} %To include graphics
 \fi
 
+\GetFileInfo{moodle.sty}%
+\edef\moodledate{\filedate}%
+\edef\moodleversion{\fileversion}%
+
 \let\xa=\expandafter
 \def\@star{*}%
 \def\@hundred{100}%
@@ -92,12 +132,12 @@
 
 \@ifundefined{ifTUTeX}{
   \newif\ifTUTeX % a new conditional starts as false
-  \ifnum 0\ifXeTeX 1\fi\ifLuaTeX 1\fi>0%
+  \ifnum 0\ifXeTeX 1\fi\ifLuaTeX 1\fi>0\relax
     \TUTeXtrue
   \fi
 }{}%
 \newif\ifpdfoutput % a new conditional starts as false
-\ifnum 0\ifTUTeX 1\fi\ifPDFTeX\ifpdf 1\fi\fi>0%
+\ifnum 0\ifTUTeX 1\fi\ifPDFTeX\ifpdf 1\fi\fi>0\relax
    \pdfoutputtrue
 \fi
 \def\jobnamewithsuffixtomacro#1#2{%
@@ -139,7 +179,17 @@
     \fi
   \fi
   \ifmoodle at stampmode
-    \def\moodle at stamp{This file was generated on \the\year-\two at digits\month-\two at digits\day}
+    \def\moodle at stamp{This is a question bank made for Moodle }
+    \ifnum\the\moodle at LMSmajor\the\moodle at LMSminor=\z@\else
+      \g at addto@macro{\moodle at stamp}{\the\moodle at LMSmajor.\the\moodle at LMSminor.\space}
+    \fi
+    \writetomoodle{<!-- \moodle at stamp -->}%
+    \newcount\hour\hour=\time
+    \divide\hour by 60\relax
+    \newcount\minute\minute=\hour
+    \multiply\minute by -60\relax
+    \advance\minute by \time\relax
+    \def\moodle at stamp{It was generated on \the\year-\two at digits\month-\two at digits\day\space \the\hour:\the\minute}
     \ifPDFTeX % pdflatex or latex
       \ifpdf % pdflatex
         \g at addto@macro{\moodle at stamp}{ by pdfLaTeX }%
@@ -157,10 +207,10 @@
         \fi
       \fi
     \fi
+    \writetomoodle{<!-- \moodle at stamp running -->}%
+    \def\moodle at stamp{on \platformname}%
+    \g at addto@macro{\moodle at stamp}{ with the package moodle \moodleversion\space (\moodledate) }%
     \writetomoodle{<!-- \moodle at stamp -->}%
-    \def\moodle at stamp{running on \platformname}%
-    \g at addto@macro{\moodle at stamp}{ with the package moodle v0.9 }%
-    \writetomoodle{<!-- \moodle at stamp -->}%
   \fi
   \immediate\write\moodle at outfile{}%
   \writetomoodle{<quiz>}%
@@ -170,17 +220,18 @@
   \writetomoodle{</quiz>}%
   \immediate\closeout\moodle at outfile
 }%
+\newcount\moodle at indentnum
 \def\calculateindent#1{%
   \bgroup
-    \count0=\number#1\relax
+    \moodle at indentnum=\number#1\relax
     \gdef\moodle at indent{}%
     \calculateindent at int
   \egroup
 }%
 \def\calculateindent at int{%
-  \ifnum\count0>0\relax
+  \ifnum\moodle at indentnum>0\relax
     \g at addto@macro{\moodle at indent}{\otherspace}%
-    \advance\count0 by -1\relax
+    \advance\moodle at indentnum by -1\relax
     \expandafter
     \calculateindent at int
   \fi
@@ -207,7 +258,8 @@
 }{}%
 }}%
 \newcommand*\@enumeratename{enumerate}%
-\newdimen\moodle at totalmarks \moodle at totalmarks=0pt%
+\newdimen\moodle at totalmarks
+\gdef\moodle at currentcategory{}%
 \newenvironment{quiz}[2][]{%
   \setkeys{moodle}{#1}%
   \gdef\setcategory##1{%
@@ -232,7 +284,7 @@
         \subsection*{##1}%
       \fi
     \fi
-    \begin{enumerate}%
+    \begin{enumerate}\renewcommand\labelenumi{(\theenumi)}%
   }%
   \gdef\setsubcategory##1{%
     \def\@noitemerr{}%\@latex at warning{Empty question list}
@@ -251,12 +303,13 @@
         \subsubsection*{##1}%
       \fi
     \fi
-    \begin{enumerate}%
+    \begin{enumerate}\renewcommand\labelenumi{(\theenumi)}%
   }%
   \setcategory{#2}%
+   \moodle at totalmarks=0pt%
 }{%
   \end{enumerate}%
-  \emph{Total of marks: \strip at pt\moodle at totalmarks}%
+  \emph{\GetTranslation{Total of marks}: \strip at pt\moodle at totalmarks}%
   \let\setcategory\relax
   \let\setsubcategory\relax
 }%
@@ -266,11 +319,11 @@
   \xa\aftergroup\csname moodle at remember@\string#1\endcsname
 }
 \long\def\@moodle at ifgeneratexml#1#2{%
-  % If we are generating XML, do #1; otherwise do #2.
+  % If we are generating \XML, do #1; otherwise do #2.
   \tikzifexternalizing{%
-    % This run of LaTeX is currently ONLY generating a Tikz image
+    % This run of LaTeX is currently ONLY generating a TikZ image
     % to be saved in an external file.  We do NOT want to waste time
-    % generating XML, and moreover trying to do so would cause errors
+    % generating \XML, and moreover trying to do so would cause errors
     % because of file dependencies.
     #2%
   }{%
@@ -298,7 +351,7 @@
 
 \def\generate at moodle@write at html#1<#2>#3{%
   % #1 = NAME for \moodle at writeNAME
-  % #2 = HTML tag
+  % #2 = \HTML\ tag
   % #3 = what, exactly, to write
   \xa\gdef\csname moodle at write#1\endcsname{%
     \xa\def\xa\test at iii\xa{#3}%
@@ -308,6 +361,9 @@
       \xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
       \writetomoodle[2]{  <#2 format="html">}%
       \writetomoodle[4]{    <text><![CDATA[<p>\moodle at htmltowrite</p>]]></text>}%
+      \ifmoodle at pluginfile
+        \writetomoodle[0]{\htmlize at embeddedfiletags}%
+      \fi
       \writetomoodle[2]{  </#2>}%
     \fi
   }%
@@ -314,22 +370,29 @@
 }%
 
 \def\generate at moodle@write at html@noptag#1<#2>#3{%
-\xa\gdef\csname moodle at write#1\endcsname{%
-\xa\def\xa\test at iii\xa{#3}%
-\ifx\test at iii\@moodle at empty
-\writetomoodle[2]{  <#2 format="html"><text/></#2>}%
-\else
-\xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
-\writetomoodle[2]{  <#2 format="html">}%
-\writetomoodle[4]{    <text><![CDATA[\moodle at htmltowrite]]></text>}%
-\writetomoodle[2]{  </#2>}%
-\fi
+  % No <P>..</P> introduced
+  % #1 = NAME for \moodle at writeNAME
+  % #2 = \HTML\ tag
+  % #3 = what, exactly, to write
+  \xa\gdef\csname moodle at write#1\endcsname{%
+    \xa\def\xa\test at iii\xa{#3}%
+    \ifx\test at iii\@moodle at empty
+      \writetomoodle[2]{  <#2 format="html"><text/></#2>}%
+    \else
+      \xa\converttohtmlmacro\xa\moodle at htmltowrite\xa{#3}%
+      \writetomoodle[2]{  <#2 format="html">}%
+      \writetomoodle[4]{    <text><![CDATA[\moodle at htmltowrite]]></text>}%
+      \ifmoodle at pluginfile
+        \writetomoodle[0]{\htmlize at embeddedfiletags}%
+      \fi
+      \writetomoodle[2]{  </#2>}%
+    \fi
+  }%
 }%
-}%
 
 \def\generate at moodle@write at data*#1<#2>#3{%
   % #1 = NAME for \moodle at writeNAME
-  % #2 = HTML tag
+  % #2 = \HTML\ tag
   % #3 = what, exactly, to write
   \xa\gdef\csname moodle at write#1\endcsname{%
     \writetomoodle[2]{  <#2>#3</#2>}%
@@ -354,7 +417,7 @@
 \def\moodle at latex@writetags{%
   \xa\xdef\xa\test at iii\xa{\moodle at tags}%
   \ifx\test at iii\@moodle at empty\relax\else
-    \hfill tags: %
+    \hfill \GetTranslation{tags}: %
     \renewcommand*{\do}[1]{\ifmoodle at firsttag\moodle at firsttagfalse\else, \fi\texttt{##1}}%
     \xa\docsvlist\xa{\test at iii}%
   \fi
@@ -386,8 +449,8 @@
       % and feedback tailored to each right or wrong answer.
       % We shall use the key 'feedback' to record both kinds of feedback,
       % relying on TeX's grouping mechanism to keep them apart.
-      % When it comes time to write them to XML,
-      % \moodle at writegeneralfeedback uses the HTML tag <generalfeedback>
+      % When it comes time to write them to \XML,
+      % \moodle at writegeneralfeedback uses the \HTML\ tag <generalfeedback>
       % whereas \moodle at writefeedback uses the tag <feedback>.
       % Note that the general feedback is NOT inherited by each answer!
       \define at cmdkey{moodle}[moodle@]{feedback}[]{}%
@@ -401,7 +464,7 @@
       %Key calls like [default grade=7] set \moodle at defaultgrade.
       \define at cmdkey{moodle}[moodle@]{default grade}[1.0]{}%
       %Next, makes 'points' a synonym for 'default grade'
-      \define at key{moodle}{points}[1.0]{\xa\def\csname moodle at default grade\endcsname{#1}}
+      \define at key{moodle}{points}[1.0]{\xa\def\csname moodle at default grade\endcsname{#1}}%
       \generate at moodle@write at code*{defaultgrade}<defaultgrade>{\csname moodle at default grade\endcsname}%
       \moodleset{default grade=1.0} %This sets the default.
 
@@ -429,7 +492,7 @@
 %% FRACTION -- how much this answer is worth out of 100 percent
       \define at cmdkey{moodle}[moodle@]{fraction}[100]{}%
       %We do not create \moodle at writefraction, because the fraction occurs in
-      %the XML within the answer tag, like <answer fraction="75">.
+      %the \XML\ within the answer tag, like <answer fraction="75">.
       \moodleset{fraction=100} %This sets the default.
 %% FRACTIONTOL -- the tolerance for fractions with respect to valid values
       \define at cmdkey{moodle}[moodle@]{fractiontol}[0.1]{}%
@@ -451,6 +514,10 @@
       \define at boolkey{moodle}[moodle@]{allornothing}[true]{}%
       \moodleset{allornothing=false}%
 
+%% SANCTION -- how much shall incorrect choices by sanctioned in multichoice questions (single)
+      \define at cmdkey{moodle}[moodle@]{sanction}[]{}%
+      \moodleset{sanction=0} %This sets the default.
+
 %% TODO: CORRECTFEEDBACK
 %% TODO: PARTIALLYCORRECTFEEDBACK
 %% TODO: INCORRECTFEEDBACK
@@ -497,6 +564,7 @@
       \def\@moodle at IIII{IIII}%
       \def\@moodle at none{none}%
       \def\moodle at obeynumberingstyle{%
+        \renewcommand\labelenumii{\theenumii.}% follow Moodle's labeling convention
         \ifx\moodle at numbering\@moodle at abc
           \renewcommand\theenumii{\alph{enumii}}%
         \fi
@@ -523,7 +591,7 @@
 
 %% DISPLAY MODE -- affects Cloze multiple choice questions only.
       % 0 = inline, 1 = vertical, 2 = horizontal
-      \def\moodle at multi@mode{0}%
+      \def\moodle at multi@mode{\ifmoodle at single 0\else 1\fi}%
       \define at key{moodle}{inline}[]{\def\moodle at multi@mode{0}}%
       \define at key{moodle}{vertical}[]{\def\moodle at multi@mode{1}}%
       \define at key{moodle}{horizontal}[]{\def\moodle at multi@mode{2}}%
@@ -530,19 +598,19 @@
 %% TOLERANCE
       \define at cmdkey{moodle}[moodle@]{tolerance}[0]{}%
       \moodleset{tolerance=0}%
-      %There is no \moodle at writetolerance, because in the XML the
+      %There is no \moodle at writetolerance, because in the \XML\ the
       %tolerance is given within the answer tag,
       %like <answer fraction=100 tolerance=0.03>.
 
 %% CASE SENSITIVE
-      \define at boolkey{moodle}[moodle@]{case sensitive}[true]{}%
-      \generate at moodle@write at code*{usecase}<usecase>{\csname ifmoodle at case sensitive\endcsname 1\else 0\fi}%
-      % We make 'usecase' a synonym for 'case sensitive'.
-      \define at boolkey{moodle}[moodle@]{usecase}[true]{\ifmoodle at usecase\csname moodle at case sensitivetrue\endcsname\else\csname moodle at case sensitivefalse\endcsname\fi}%
-      \moodleset{case sensitive=false}%
+      \define at boolkey{moodle}[moodle@]{usecase}[true]{}%
+      \generate at moodle@write at code*{usecase}<usecase>{\ifmoodle at usecase 1\else 0\fi}%
+      % We make 'case sensitive' a synonym for 'usecase'.
+      \define at boolkey{moodle}[moodle@]{case sensitive}[true]{\ifcsname moodle at case sensitive\endcsname \moodle at usecasetrue\else\moodle at usecasefalse\fi}%
+      \moodleset{usecase=false}%
 %% DRAG-AND-DROP FORMAT
       \define at boolkey{moodle}[moodle@]{draganddrop}[true]{}%
-      % We make 'dd' and 'dragdrop' and 'drag and drop' synonyms for 'draganddrop'.
+      % We make 'dd' and 'draganddrop' and 'drag and drop' synonyms for 'draganddrop'.
       \define at boolkey{moodle}[moodle@]{dd}[true]{\ifmoodle at dd\moodle at draganddroptrue\else\moodle at draganddropfalse\fi}%
       \define at boolkey{moodle}[moodle@]{drag and drop}[true]{\moodle at ddsynonym}%
       \def\moodle at ddsynonym{%
@@ -565,11 +633,11 @@
                        {html,html+file,text,monospaced,file}[html]%
                        {\def\test at i{#1}%
                         \ifx\test at i\@moodle at html
-                          % HTML Editor
+                          % \HTML\ Editor
                           \def\moodle at responseformat{editor}%
                         \fi
                         \ifx\test at i\@moodle at htmlfile
-                          % HTML Editor with File Picker
+                          % \HTML\ Editor with File Picker
                           \def\moodle at responseformat{editorfilepicker}%
                         \fi
                         \ifx\test at i\@moodle at text
@@ -657,8 +725,8 @@
 
 \newcommand\addto at xml[3][0]{%
   % #1 = spaces to indent (default=0)
-  % #2 = macro containing XML code (possibly empty)
-  % #3 = XML text to be appended to that macro (will be \edef'd)
+  % #2 = macro containing \XML\ code (possibly empty)
+  % #3 = \XML\ text to be appended to that macro (will be \edef'd)
   \calculateindent{#1}%
   \edef\xml at to@add{\moodle at indent\trim at pre@space{#3}}%
   \ifx#2\@moodle at empty
@@ -673,8 +741,12 @@
 %% CALCULATED %%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
+\ifmoodle at feedbackLeft% contribution of Juergen Vollmer, 2021-03-05
+  \newcommand{\moodle at preFeedback}{\\}%
+\else%
+  \newcommand{\moodle at preFeedback}{\hfill}%
+\fi
 
-
 \def\moodle at makelatextagbox#1{%
     \Ovalbox{\tiny #1}
     %\ovalbox{\tiny #1}
@@ -682,18 +754,20 @@
 }%
 
 \def\moodle at makelatextag@qtype#1{%
-  \doublebox{\tiny \textsc{#1}}
+  \doublebox{\tiny \textsc{\GetTranslation{#1}}}
 }%
 
 \def\moodle at makelatextag@value#1#2{%
-  \moodle at makelatextagbox{\csname moodle@#1\endcsname~#2}
+  \moodle at makelatextagbox{\GetTranslation{#2}~\csname moodle@#1\endcsname}%
 }%
 
 \def\moodle at makelatextag@key#1{%
-  \moodle at makelatextagbox{\csname moodle@#1\endcsname}
+  \moodle at makelatextagbox{\GetTranslation{#1}}
 }%
 
-\def\moodle at marks#1{point\ifdim#1pt=1pt \else s\fi}
+\def\moodle at makelatextag@other#1{%
+  \moodle at makelatextagbox{\GetTranslation{#1}}
+}%
 
 \def\moodle at makefrontend#1#2{%
   \NewEnviron{#1}[2][]{%
@@ -703,7 +777,7 @@
       \expandafter\gatheritems\xa{\BODY}%
       \let\moodle at questionheader=\gatheredheader
       %First, the LaTeX processing
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage \textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{#1}
       \else
@@ -710,9 +784,9 @@
         \moodle at latex@writetags
         \par
         \noindent
-        \moodle at makelatextag@qtype{#1}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
-        \moodle at makelatextag@value{penalty}{penalty}
+        \moodle at makelatextag@qtype{#1}%
+        \moodle at makelatextag@value{default grade}{marked out of}
+        \moodle at makelatextag@value{penalty}{penalty}%
       \fi
       #2\par
       \noindent
@@ -719,6 +793,7 @@
       \moodle at questionheader
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
       \csname moodle@#1 at latexprocessing\endcsname
+      \moodle at end@samepage
       %Now, writing information to XML
       \@moodle at ifgeneratexml{%
         \xa\questiontext\xa{\moodle at questionheader}% Save the question text.
@@ -736,10 +811,9 @@
     \egroup
   }%
 }
-\AfterEndPreamble{% in case something like \usepackage[french]{babel} is loaded
+\AtBeginEnvironment{quiz}{% protect existing description outside of quiz
   \let\description\relax% remove the meaning of existing \description and \enddescription
   \let\enddescription\relax
-
   \NewEnviron{description}[2][]{%
     \bgroup
       \setkeys{moodle}{#1,questionname={#2}}%
@@ -747,7 +821,7 @@
       \trim at spaces@in\moodle at questiontext
       \ifx\moodle at questiontext\@empty\relax\else%
         %First, the LaTeX processing.
-        \item \textbf{\moodle at questionname}
+        \item \moodle at begin@samepage\textbf{\moodle at questionname}
         \ifmoodle at handout\else
           \moodle at latex@writetags
           \par
@@ -758,9 +832,10 @@
         \moodle at questiontext\par
         \ifmoodle at handout\else
           \ifx\moodle at feedback\@empty\relax\else
-            \fbox{\parbox{\linewidth}{\emph{\moodle at feedback}}}%
+            \fbox{\parbox{.96\linewidth}{\emph{\moodle at feedback}}}%
           \fi
         \fi
+        \moodle at end@samepage
         %Now, writing information to memory.
         \@moodle at ifgeneratexml{%
           \writetomoodle{<question type="description">}%
@@ -775,7 +850,7 @@
 \def\moodle at essay@latexprocessing{%
   % Moodle cannot automatically grade an essay,
   % but if the user puts \item's in, we can list them in an itemize as notes.
-  \par\noindent \emph{Notes for grader:}
+  \par\noindent \emph{\GetTranslation{Information for graders}:}
   \ifnum\c at numgathereditems>0\relax
     \begin{itemize} \setlength\itemsep{0pt}\setlength\parskip{0pt}%
       \loopthroughitemswithcommand{\moodle at print@essay at answer}%
@@ -782,7 +857,7 @@
     \end{itemize}%
   \fi
   \ifx\moodle at generalfeedback\@empty\relax\else%
-    \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+    \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
   \fi
 }
 
@@ -789,12 +864,12 @@
 \NewEnviron{essay}[2][]{%
   \bgroup
     \setkeys{moodle}{#1,questionname={#2}}%
-    \global\advance\moodle at totalmarks by \csname moodle at default grade\endcsname pt
+    \global\advance\moodle at totalmarks by \csname moodle at default grade\endcsname pt%
     \moodle at checkresponsefieldlines
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
     %First, the LaTeX processing.
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{essay}
       \else
@@ -802,9 +877,9 @@
         \par
         \noindent
         \moodle at makelatextag@qtype{essay}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@value{penalty}{penalty}
-        \moodle at makelatextag@key{responseformat}
+        \xa\moodle at makelatextag@key\xa{\moodle at responseformat}
       \fi
       \par
       \noindent
@@ -811,13 +886,17 @@
       \moodle at questionheader
       \long\def\@lempty{}%
       \ifx\moodle at responsetemplate\@lempty\else
-        \par\noindent \emph{Template:}
-        \par\fbox{\parbox{\linewidth}{\moodle at responsetemplate}}\par
+        \par\noindent\emph{\GetTranslation{Response template}:}
+        \par\noindent\fbox{\parbox{.96\linewidth}{\moodle at responsetemplate}}\par
       \fi
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
-      \ifmoodle at handout\else
+      \ifmoodle at handout
+        \par\noindent
+        \fbox{\parbox[t][\csname moodle at response field lines\endcsname\baselineskip]{.96\linewidth}{\phantom{Moodle}}}%
+      \else
         \csname moodle at essay@latexprocessing\endcsname
       \fi
+      \moodle at end@samepage
     %Now, writing information to memory.
     \@moodle at ifgeneratexml{%
       \xa\questiontext\xa{\moodle at questionheader}% Save the question text.
@@ -841,7 +920,7 @@
         %
         \passvalueaftergroup{\moodle at answers@xml}%
       \egroup
-      \moodle at writeanswers% The 'answers' XML really contains the grader info.
+      \moodle at writeanswers% The 'answers' \XML\ really contains the grader info.
       \moodle at writeresponsetemplate%
       \moodle at writetags%
       \writetomoodle{</question>}%
@@ -852,18 +931,18 @@
 \def\moodle at checkresponsefieldlines{%
   \newcount\a\a=\number\csname moodle at response field lines\endcsname
   \newcount\b\b=5%
-  \ifnum\the\a>40% if the value was more than 40
+  \ifnum\the\a>40\relax% if the value was more than 40
     \a=40%
   \fi
-  \ifnum\the\a<5% if the value was less than 5
+  \ifnum\the\a<5\relax% if the value was less than 5
     \a=5%
   \fi
   \divide\a by\b% integer division by 5
   \multiply\a by\b% multiply by 5
-  \ifnum\a=\csname moodle at response field lines\endcsname% equality holds if we had 5, 10, 15, 20, 25, 30, or 40
+  \ifnum\a=\csname moodle at response field lines\endcsname\relax% equality holds if we had 5, 10, 15, 20, 25, 30, or 40
   \else
-    \ifnum\csname moodle at response field lines\endcsname>5%
-      \ifnum\csname moodle at response field lines\endcsname<40%
+    \ifnum\csname moodle at response field lines\endcsname>5\relax%
+      \ifnum\csname moodle at response field lines\endcsname<40\relax%
         \advance\a by\b% approximate with the next multiple of 5
       \fi
     \fi
@@ -923,17 +1002,6 @@
 }%
 
 \long\def\moodle at savegraderinfo#1{%
-  %\def\ds{#1}\show\ds
-  \bgroup
-    \moodle at savegraderinfo@int#1\moodle at answer@rdelim
-    \passvalueaftergroup{\moodle at answers@xml}%
-  \egroup
-}%
-\newcommand\moodle at savegraderinfo@int[1][]{%
-  \setkeys{moodle}{fraction=0,#1}%
-  \moodle at savegraderinfo@int at int%
-}%
-\long\def\moodle at savegraderinfo@int at int#1\moodle at answer@rdelim{%
   \def\moodle at answertext{#1}
   \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
   %\trim at spaces@in\moodle at answertext
@@ -943,17 +1011,15 @@
     \addto at xml[4]{\moodle at answers@xml}{\moodle at answertext@html}%
   \fi
 }%
-\def\blank{\rule{1in}{0.5pt}}%
 
-
 \moodle at makefrontend{shortanswer}{\moodle at makelatextag@shortanswer}%
 
 
 \def\moodle at makelatextag@shortanswer{%
-  \csname ifmoodle at case sensitive\endcsname
-    \moodle at makelatextagbox{Case-Sensitive}\relax
+  \ifmoodle at usecase
+    \moodle at makelatextag@other{Case-Sensitive}\relax
   \else
-    \moodle at makelatextagbox{Case-Insensitive}\relax
+    \moodle at makelatextag@other{Case-Insensitive}\relax
   \fi
 }
 
@@ -965,7 +1031,7 @@
       \loopthroughitemswithcommand{\moodle at print@shortanswer at answer}%
     \end{itemize}%
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   }
 \fi
@@ -986,7 +1052,7 @@
        \item #1$~(\moodle at fraction\%)$%
      \fi
      \ifx\moodle at feedback\@empty\relax\else
-       \hfill \emph{$\rightarrow$ \moodle at feedback}
+       \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}
      \fi
    }%
 
@@ -1007,10 +1073,13 @@
      \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
      \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
      \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext@html</text>}%
+     \ifmoodle at pluginfile
+       \writetomoodle[0]{\htmlize at embeddedfiletags}%
+     \fi
      \ifx\moodle at feedback\@empty\relax\else
        \trim at spaces@in\moodle at feedback
        \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
      \fi
      \addto at xml[2]{\moodle at answers@xml}{</answer>}%
    }%
@@ -1026,7 +1095,8 @@
 \def\moodle at makelatextag@numerical{}
 
 \AtEndPreamble{
-  \@ifpackageloaded{siunitx}{\def\moodle at printnum{\num[omit-uncertainty,copy-decimal-marker]}}{\let\moodle at printnum\trim at spaces}%
+  \@ifpackageloaded{siunitx}{\def\moodle at printnum{\num[omit-uncertainty]}}%,copy-decimal-marker
+  {\let\moodle at printnum\trim at spaces}%
 }
 
 \ifmoodle at handout
@@ -1037,7 +1107,7 @@
       \loopthroughitemswithcommand{\moodle at print@numerical at answer}%
     \end{itemize}%
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   }
 \fi
@@ -1053,13 +1123,14 @@
      \moodle at print@numerical at answer@int at int%
    }%
    \def\moodle at print@numerical at answer@int at int#1\@rdelim{%
-     \xdef\test at i{\trim at spaces{#1}}%
+     \gdef\test at i{#1}%
+     \trim at spaces@in\test at i
      \ifx\test at i\@star
        \item \test at i
      \else
        \item \moodle at printnum{#1}%
-       \ifnum\z@=\moodle at tolerance\else
-         $\,\pm\,$\moodle at printnum{\moodle at tolerance}%
+       \ifx\moodle at tolerance\moodle at zero\else
+         $\,\pm\,$\moodle at printnum{\expandonce\moodle at tolerance}%
        \fi
      \fi
      \ifx\moodle at fraction\@hundred
@@ -1069,7 +1140,7 @@
        $~(\moodle at fraction\%)$%
      \fi
      \ifx\moodle at feedback\@empty\relax\else
-       \hfill \emph{$\rightarrow$ \moodle at feedback}%
+       \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
      \fi
    }%
 
@@ -1089,13 +1160,17 @@
      \moodle at checkfraction
      \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
      \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+
      \ifx\moodle at answertext\@star\else
        \addto at xml[4]{\moodle at answers@xml}{  <tolerance>\moodle at tolerance</tolerance>}%
      \fi
+     \ifmoodle at pluginfile
+       \writetomoodle[0]{\htmlize at embeddedfiletags}%
+     \fi
      \ifx\moodle at feedback\@empty\relax\else
        \trim at spaces@in\moodle at feedback
        \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
      \fi
      \addto at xml[2]{\moodle at answers@xml}{</answer>}%
    }%
@@ -1114,27 +1189,25 @@
       \PackageError{moodle}{Unsupported option "allornothing" for a multichoice subquestion}
       {Please set "allornothing=false"}%
     \else
-      \moodle at makelatextagbox{All-or-nothing}%
+      \moodle at makelatextag@other{All-or-nothing}%
     \fi
   \else
-    \ifmoodle at multiple
-      \moodle at makelatextagbox{Multiple}%
+    \ifmoodle at single
+      \moodle at makelatextag@other{Single}%
     \else
-      \moodle at makelatextagbox{Single}%
+      \moodle at makelatextag@other{Multiple}%
     \fi
   \fi
   \ifmoodle at handout\else
     \ifmoodle at shuffle
-      \moodle at makelatextagbox{Shuffle}\relax%
+      \moodle at makelatextag@other{Shuffle}\relax%
     \fi
   \fi
 }
 
 \def\moodle at multi@latexprocessing{%
-  \ifmoodle at allornothing
-    \moodle at singletrue
-  \fi
-  \moodle at countcorrectanswers%
+  \ifmoodle at allornothing\moodle at singletrue\fi
+  \ifmoodle at single\relax\else\moodle at InspectMultipleAnswers\fi
   \ifmoodle at handout\NewList{answerlist}\fi
   \begin{enumerate}\moodle at obeynumberingstyle%
     %\renewcommand{\theenumi}{\alph{enumi}}%
@@ -1151,7 +1224,7 @@
   \end{enumerate}%
   \ifmoodle at handout\else
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   \fi
 }
@@ -1173,7 +1246,7 @@
       \ifmoodle at single%
         \setkeys{moodle}{fraction=100}%
       \else
-        \setkeys{moodle}{fraction=\moodle at autopoints}%
+        \setkeys{moodle}{fraction=\moodle at AutoScore}%
       \fi
     \else
       \g at addto@macro\moodle at answertext{#1#2}%
@@ -1183,7 +1256,11 @@
     \ifmoodle at handout\else
       \ifmoodle at single%
         \ifx\moodle at fraction\@empty\relax%
-          \setkeys{moodle}{fraction=0}%
+          \ifdim0pt<\moodle at sanction pt\relax
+            \setkeys{moodle}{fraction=-\moodle at sanction}%
+          \else
+            \setkeys{moodle}{fraction=0}%
+          \fi
         \fi
         \moodle at checkfraction
         \ifx\moodle at fraction\@hundred%
@@ -1196,7 +1273,11 @@
         \fi
       \else% multiple
         \ifx\moodle at fraction\@empty\relax%
-          \setkeys{moodle}{fraction=\moodle at autosanctions}%
+          \ifmoodle at AdvancedScoreMode
+            \setkeys{moodle}{fraction=0}%
+          \else
+            \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+          \fi
         \fi
         \moodle at checkfraction
         \g at addto@macro\moodle at answertext{$~(\moodle at fraction\%)$}%
@@ -1207,142 +1288,141 @@
       \xa\temp\xa{\moodle at answertext}%
     \else
       \ifx\moodle at feedback\@empty\relax\else%
-        \g at addto@macro\moodle at answertext{\hfill \emph{$\rightarrow$ \moodle at feedback}}%
+        \g at addto@macro\moodle at answertext{\moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}}%
       \fi
       \moodle at answertext
     \fi
   }%
 
-   \newcounter{moodle at numcorrectanswers}% count the stars
-   \newcounter{moodle at numincorrectanswers}% count the items without fraction key indicated
-   \newlength{\moodle at pointspercorrect}%
-   \newlength{\moodle at pointsperincorrect}%
-   \newlength{\moodle at sumofpositivefractions}% sums user-set positive fractions
-   \newlength{\moodle at sumofnegativefractions}% sums user-set negative fractions
-   \def\moodle at countcorrectanswers{%
-     \setcounter{moodle at numcorrectanswers}{0}%
-     \setcounter{moodle at numincorrectanswers}{0}%
-     \global\setlength{\moodle at pointspercorrect}{100pt}%
-     \global\setlength{\moodle at pointsperincorrect}{-100pt}%
-     \global\setlength{\moodle at sumofpositivefractions}{0pt}%
-     \global\setlength{\moodle at sumofnegativefractions}{0pt}%
-     \loopthroughitemswithcommand{\moodle at countcorrectanswers@a}%
-     \global\advance\moodle at pointspercorrect by-\moodle at sumofpositivefractions\relax%
-     \def\ds{\strip at pt\moodle at sumofpositivefractions}%
-     \ifnum0=\c at moodle@numcorrectanswers\relax%
-       % autopoints will never be used but we check if the sum of positive fractions is 100%
-       \ifdim\moodle at pointspercorrect<-\moodle at fractiontol pt\relax%
-         \PackageWarning{moodle}{Positive fractions sum up to more than 100 (here: \ds)}%
-       \else
-         \ifdim\moodle at pointspercorrect>\moodle at fractiontol pt\relax%
-           \PackageError{moodle}{Positive fractions sum up to less than 100 (here: \ds)}%
-         \fi
-       \fi
-     \else
-       \ifdim0pt<\moodle at pointspercorrect\relax\else%
-         % we have starred items so the sum of user-set positive fractions must be less than 100%
-         % otherwise, starred items would lead to penalties
-         \PackageError{moodle}{Positive fractions sum up to 100 or more (here: \ds):
-                                there is no positive points left to be given to starred items.}%
-       \fi
-       \global\divide\moodle at pointspercorrect by \c at moodle@numcorrectanswers\relax%
-     \fi
-     \gdef\moodle at autopoints{\strip at pt\moodle at pointspercorrect}%
-     \global\advance\moodle at pointsperincorrect by-\moodle at sumofnegativefractions\relax%
-     \def\ds{\strip at pt\moodle at sumofnegativefractions}%
-     \ifnum0=\c at moodle@numincorrectanswers\relax%
-       % autosanctions will never be used and
-       % we do not care about the sum of negative fractions (might be less than -100)
-     \else
-       \ifdim0pt<\moodle at pointsperincorrect\relax%
-         % we have items without fractions set: to prevent auto sanctions from becoming bonuses,
-         % such items are neutralized.
-         \PackageWarning{moodle}{Negative fractions sum up to -100 or less (here: \ds):
-                                  items with no fraction key set will be considered as neutral.}%
-         \global\setlength{\moodle at pointsperincorrect}{0pt}%
-       \fi
-       \global\divide\moodle at pointsperincorrect by \c at moodle@numincorrectanswers\relax%
-     \fi
-     \gdef\moodle at autosanctions{\strip at pt\moodle at pointsperincorrect}%
-   }
-   \long\def\moodle at countcorrectanswers@a#1{%
-     %The grouping is to keep key answer-specific key changes local.
-     \bgroup
-       \moodle at countcorrectanswers@b#1\moodle at answer@rdelim
-     \egroup
-   }%
-   \newcommand\moodle at countcorrectanswers@b[1][]{%
-     %\ifx&#1&%
-       \let\moodle at fraction\@empty%
-       \setkeys{moodle}{#1}%
-       \moodle at countcorrectanswers@c%
-     %\fi
-   }%
-   \long\def\moodle at countcorrectanswers@c#1#2\moodle at answer@rdelim{%
-     \def\test at i{#1}%
-     \ifx\test at i\@star
-       \stepcounter{moodle at numcorrectanswers}%
-     \else
-       \ifx\moodle at fraction\@empty\relax%
-         \stepcounter{moodle at numincorrectanswers}%
-       \else
-         \ifdim0pt<\moodle at fraction pt\relax%
-           \global\addtolength{\moodle at sumofpositivefractions}{\moodle at fraction pt}%
-         \else
-           \global\addtolength{\moodle at sumofnegativefractions}{\moodle at fraction pt}%
-         \fi
-       \fi
-     \fi
-   }%
-   \newlength{\test at fraction}%
-   \newlength{\test at lower}%
-   \newlength{\test at upper}%
-   \def\moodle at fractionerror{%
-     \def\ds{\moodle at fraction}%
-     \PackageError{moodle}{the current fraction is not a valid value (here: \ds)}%
-   }
-   {\catcode`|=3\relax
-   \gdef\moodle at validfractionlist{0|5|10|11.11111|12.5|14.28571|16.66667|20|25|30|33.33333|40|50|60|66.66667|70|75|80|83.33333|90|100}}%
-   \def\moodle at isfractionnear#1{%
-     \setlength{\test at lower}{#1 pt}%
-     \addtolength{\test at lower}{-\moodle at fractiontol pt}%
-     \setlength{\test at upper}{#1 pt}%
-     \addtolength{\test at upper}{\moodle at fractiontol pt}%
-     \ifdim\test at upper>\test at fraction\relax
-       \ifdim\test at lower<\test at fraction\relax
-         \gdef\test at fractionmatched{#1}%
-       \fi
-     \fi
-   }
- \def\moodle at checkfraction{%
-   \ifmoodle at allornothing
-     \ifnum\moodle at fraction>0%
-       \setkeys{moodle}{fraction=100}%
-     \fi
-     \ifnum\moodle at fraction<0%
-       \setkeys{moodle}{fraction=0}%
-     \fi
-   \else
-     %\def\test at i{#1}%
-     \setlength{\test at fraction}{\moodle at fraction pt}%
-     % take the absolute value
-     \ifdim0pt>\test at fraction\relax%
-       \setlength{\test at fraction}{-\moodle at fraction pt}%
-     \fi
-     % test if the fraction is an admissible value
-     \let\test at fractionmatched\@empty
-     \forlistloop{\moodle at isfractionnear}{\moodle at validfractionlist}%
-     \ifx\test at fractionmatched\@empty\relax
-       \moodle at fractionerror%
-     \fi
-     \ifdim\moodle at fraction pt<-\moodle at fractiontol pt\relax%
-       \setkeys{moodle}{fraction=-\test at fractionmatched}%
-     \else
-       \setkeys{moodle}{fraction=\test at fractionmatched}%
-     \fi
-   \fi
- }
+\newcounter{moodle at NumStarredAnswers}% count the stars
+\newdimen\moodle at autoscore@tmp%
+\newdimen\moodle at TotalPositiveFractions% Total of user-set positive fractions
+\newdimen\moodle at PositiveScoreFactor% scaling factor to impose the fractions of
+\newif\ifmoodle at AdvancedScoreMode%
 
+\def\moodle at InspectMultipleAnswers{%
+  \setcounter{moodle at NumStarredAnswers}{0}%
+  \moodle at autoscore@tmp=100pt\relax% temporary variable
+  \moodle at TotalPositiveFractions=0pt\relax%
+  \moodle at PositiveScoreFactor=1pt\relax
+  \moodle at AdvancedScoreModefalse
+  \loopthroughitemswithcommand{\moodle at InspectMultipleAnswers@a}%
+  \ifmoodle at AdvancedScoreMode% advanced mode
+    \ifx\endmulti\endclozemulti% inside cloze
+      \divide\moodle at TotalPositiveFractions by 100\relax
+      \advance\moodle at TotalPositiveFractions by \c at moodle@NumStarredAnswers pt\relax
+      \moodle at PositiveScoreFactor=1 pt\relax
+      \moodle at PositiveScoreFactor=\dimexpr 1 pt * \moodle at PositiveScoreFactor / \moodle at TotalPositiveFractions\relax%
+      \global\def\moodle at OtherScore{% for multianswer questions in cloze, with advanced mode
+        \ifdim0pt<\moodle at fraction pt\relax
+          \moodle at fraction
+        \else
+          \moodle at autoscore@tmp=\moodle at PositiveScoreFactor\relax%
+          \multiply\moodle at autoscore@tmp by \moodle at fraction\relax%
+          \strip at pt\moodle at autoscore@tmp
+        \fi
+      }%
+    \else% outside cloze
+      \advance\moodle at autoscore@tmp by-\moodle at TotalPositiveFractions\relax%
+      \def\ds{\strip at pt\moodle at TotalPositiveFractions}%
+      \ifnum0=\c at moodle@NumStarredAnswers\relax%
+      % autopoints will never be used but we check if the sum of positive fractions is 100%
+        \ifdim\moodle at autoscore@tmp<-\moodle at fractiontol pt\relax%
+          \PackageWarning{moodle}{Positive fractions add up to more than 100 (here: \ds)}%
+          % Here we issue only a warning because Moodle accepts the \XML\ without error.
+        \else
+          \ifdim\moodle at autoscore@tmp>\moodle at fractiontol pt\relax%
+            \PackageError{moodle}{Positive fractions add up to less than 100 (here: \ds)}%
+          \fi
+        \fi
+      \else% there are starred items
+        \ifdim0pt<\moodle at autoscore@tmp\relax\else%
+      % we have starred items so the sum of user-set positive fractions must be less than 100%
+      % otherwise, starred items would lead to penalties
+          \PackageError{moodle}{Positive fractions add up to 100 or more (here: \ds):
+                             there is no positive points left to be given to starred items.}%
+        \fi
+        \divide\moodle at autoscore@tmp by \c at moodle@NumStarredAnswers\relax%
+      \fi
+    \fi
+  \else% automatic score (not in advanced score mode)
+    \global\divide\moodle at autoscore@tmp by \c at moodle@NumStarredAnswers\relax%
+  \fi
+  \xdef\moodle at AutoScore{\strip at pt\moodle at autoscore@tmp}%
+}
+\long\def\moodle at InspectMultipleAnswers@a#1{%
+  %The grouping is to keep key answer-specific key changes local.
+  \bgroup
+    \moodle at InspectMultipleAnswers@b#1\moodle at answer@rdelim
+  \egroup
+}%
+\newcommand\moodle at InspectMultipleAnswers@b[1][]{%
+  %\ifx&#1&%
+    \let\moodle at fraction\@empty%
+    \setkeys{moodle}{#1}%
+    \moodle at InspectMultipleAnswers@c%
+  %\fi
+}%
+\long\def\moodle at InspectMultipleAnswers@c#1#2\moodle at answer@rdelim{%
+  \def\test at i{#1}%
+  \ifx\test at i\@star
+    \stepcounter{moodle at NumStarredAnswers}%
+  \else
+    \ifx\moodle at fraction\@empty\else
+      \global\moodle at AdvancedScoreModetrue
+      \ifdim0pt<\moodle at fraction pt\relax%
+        \global\advance\moodle at TotalPositiveFractions by \moodle at fraction pt\relax%
+      \fi
+    \fi
+  \fi
+}%
+\newdimen\test at fraction%
+\newdimen\test at lower%
+\newdimen\test at upper%
+\def\moodle at fractionerror{%
+  \def\ds{\moodle at fraction}%
+  \PackageError{moodle}{the current fraction is not an admissible value (here: \ds)}%
+}
+{\catcode`|=3\relax
+\gdef\moodle at validfractionlist{0|5|10|11.11111|12.5|14.28571|16.66667|20|25|30|33.33333|40|50|60|66.66667|70|75|80|83.33333|90|100}}%
+\def\moodle at isfractionnear#1{%
+  \test at lower=\dimexpr #1 pt - \moodle at fractiontol pt\relax%
+  \test at upper=\dimexpr #1 pt + \moodle at fractiontol pt\relax%
+  \ifdim\test at upper>\test at fraction\relax
+    \ifdim\test at lower<\test at fraction\relax
+      \gdef\test at fractionmatched{#1}%
+    \fi
+  \fi
+}
+\def\moodle at checkfraction{%
+  \ifmoodle at allornothing
+    \ifnum\moodle at fraction>0\relax
+      \setkeys{moodle}{fraction=100}%
+    \fi
+    \ifnum\moodle at fraction<0\relax
+      \setkeys{moodle}{fraction=0}%
+    \fi
+  \else
+    %\def\test at i{#1}%
+    \test at fraction=\moodle at fraction pt\relax%
+    % take the absolute value
+    \ifdim0pt>\test at fraction\relax%
+      \test at fraction=-\moodle at fraction pt\relax%
+    \fi
+    % test if the fraction is an admissible value
+    \let\test at fractionmatched\@empty
+    \forlistloop{\moodle at isfractionnear}{\moodle at validfractionlist}%
+    \ifx\test at fractionmatched\@empty\relax
+      \moodle at fractionerror%
+    \fi
+    \ifdim\moodle at fraction pt<-\moodle at fractiontol pt\relax%
+      \xdef\moodle at fraction{-\test at fractionmatched}%
+    \else
+      \xdef\moodle at fraction{\test at fractionmatched}%
+    \fi
+  \fi
+}
+
 \long\def\savemultianswer#1{%
   \bgroup
     \savemultianswer at int#1 \moodle at answer@rdelim
@@ -1363,7 +1443,7 @@
       \ifmoodle at single
         \setkeys{moodle}{fraction=100}%
       \else
-        \setkeys{moodle}{fraction=\moodle at autopoints}%
+        \setkeys{moodle}{fraction=\moodle at AutoScore}%
       \fi
       \def\moodle at answertext{#2}%
     \else
@@ -1371,9 +1451,17 @@
     \fi
     \ifx\moodle at fraction\@empty\relax%
       \ifmoodle at single\relax
-        \setkeys{moodle}{fraction=0}%
+        \ifdim0pt<\moodle at sanction pt\relax
+          \setkeys{moodle}{fraction=-\moodle at sanction}%
+        \else
+          \setkeys{moodle}{fraction=0}%
+        \fi
       \else% multiple
-        \setkeys{moodle}{fraction=\moodle at autosanctions}%
+        \ifmoodle at AdvancedScoreMode
+          \setkeys{moodle}{fraction=0}%
+        \else
+          \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+        \fi
       \fi
     \fi
     \trim at spaces@in\moodle at answertext
@@ -1382,16 +1470,18 @@
     \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="html">}%
     \xa\converttohtmlmacro\xa\moodle at answertext@html\xa{\moodle at answertext}%
     \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at answertext@html</p>]]></text>}%
+    \ifmoodle at pluginfile
+      \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+    \fi
     \ifx\moodle at feedback\@empty\relax\else
       \trim at spaces@in\moodle at feedback
       \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-      \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+      \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
     \fi
     \addto at xml[2]{\moodle at answers@xml}{</answer>}%
   }%
 
 \gdef\writemultiquestion{%
-
     \writetomoodle{<question type="multichoice\ifmoodle at allornothing set\fi">}%
     \moodle at writecommondata%
     \ifmoodle at allornothing\else
@@ -1409,7 +1499,7 @@
       \expandafter\gatheritems\xa{\BODY}%
       \let\moodle at questionheader=\gatheredheader
       %First, the LaTeX processing
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{truefalse}
       \else
@@ -1417,7 +1507,7 @@
         \par
         \noindent
         \moodle at makelatextag@qtype{truefalse}
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
       \fi
       \par
       \noindent
@@ -1424,6 +1514,7 @@
       \moodle at questionheader
       \edef\moodle at generalfeedback{\expandonce\moodle at feedback}
       \moodle at truefalse@latexprocessing
+      \moodle at end@samepage
       %Now, writing information to XML
       \@moodle at ifgeneratexml{%
         \setkeys{moodle}{penalty=1}%
@@ -1433,7 +1524,7 @@
           \gdef\moodle at answers@xml{}%
           \setkeys{moodle}{feedback={}}%
           \xa\loopthroughitemswithcommand\xa{\xa\savetruefalseanswer}%
-          \ifnum\c at numgathereditems=1\relax%
+          \ifnum\c at numgathereditems=1\relax
             \setcounter{currentitemnumber}{2}%
             \savetruefalseanswer{}
           \fi
@@ -1448,22 +1539,22 @@
 
 
 \def\moodle at truefalse@latexprocessing{%
-  \setcounter{moodle at numcorrectanswers}{0}%
+  \setcounter{moodle at NumStarredAnswers}{0}%
   \begin{itemize} \setlength\itemsep{0pt}\setlength\parskip{0pt}%
     \loopthroughitemswithcommand{\moodle at print@truefalse at answer}%
-    \ifnum\c at currentitemnumber=2%
-      \item \textbf{False}%
+    \ifnum\c at currentitemnumber=2\relax
+      \item \textbf{\GetTranslation{False}}%
     \fi
   \end{itemize}
   \ifmoodle at handout\else
     \ifx\moodle at generalfeedback\@empty\relax\else%
-      \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+      \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
     \fi
   \fi
-  \ifnum\c at moodle@numcorrectanswers=0\relax%
+  \ifnum\c at moodle@NumStarredAnswers=0\relax
     \PackageError{moodle}{No answer is explicitly marked as correct (*). Be sure one answer leads to points.}%
   \fi
-  \ifnum\c at moodle@numcorrectanswers>1\relax%
+  \ifnum\c at moodle@NumStarredAnswers>1\relax
     \PackageError{moodle}{Two answers are explicitly marked as correct (*). Be sure only one answer leads to points.}%
   \fi
 }
@@ -1486,28 +1577,28 @@
      \fi
    }%
    \def\moodle at print@truefalse at answer@int at int@empty{%
-     \ifnum\c at currentitemnumber=1%
-\def\moodle at answertext{True}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{\GetTranslation{True}}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-\def\moodle at answertext{False}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{\GetTranslation{False}}%
      \fi
      \item \textbf{\moodle at answertext}%
      \ifmoodle at handout\else
        \ifx\moodle at feedback\@empty\relax\else
-         ~\hfill \emph{$\rightarrow$ \moodle at feedback}%
+         ~\moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
        \fi
      \fi
    }%
    \def\moodle at print@truefalse at answer@int at int@int#1#2\@rdelim{%
-     \ifnum\c at currentitemnumber=1%
-\def\moodle at answertext{True}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{\GetTranslation{True}}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-\def\moodle at answertext{False}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{\GetTranslation{False}}%
      \fi
      \item \textbf{\moodle at answertext}%
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \def\test at i{#1}%
        %\trim at spaces@in\test at i
        \ifx\test at i\@star
@@ -1514,7 +1605,7 @@
          \ifmoodle at handout\else
            ~$\checkmark$%
          \fi
-         \stepcounter{moodle at numcorrectanswers}%
+         \stepcounter{moodle at NumStarredAnswers}%
        \else
          ~%
        \fi
@@ -1524,13 +1615,13 @@
            \trim at spaces@in\test at ii
            \ifx\test at ii\@empty\relax\else
              \ifx\test at i\@star%
-               \hfill \emph{$\rightarrow$ #2}%
+               \moodle at preFeedback \emph{$\rightarrow$ #2}%
              \else%
-               \hfill \emph{$\rightarrow$ #1#2}%
+               \moodle at preFeedback \emph{$\rightarrow$ #1#2}%
              \fi
            \fi
          \else
-           \hfill \emph{$\rightarrow$ \moodle at feedback}%
+           \moodle at preFeedback \emph{$\rightarrow$ \moodle at feedback}%
          \fi
        \fi
      \fi
@@ -1557,19 +1648,22 @@
    }%
    \def\savetruefalseanswer at int@int at empty{%
      \setkeys{moodle}{fraction=0}%
-     \ifnum\c at currentitemnumber=1%
-\def\moodle at answertext{true}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{true}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-\def\moodle at answertext{false}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{false}%
      \fi
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
        \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+       \ifmoodle at pluginfile
+         \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+       \fi
        \ifx\moodle at feedback\@empty\relax\else
          \trim at spaces@in\moodle at feedback
          \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
        \fi
        \addto at xml[2]{\moodle at answers@xml}{</answer>}%
      \fi
@@ -1581,15 +1675,18 @@
      \else
        \setkeys{moodle}{fraction=0}%
      \fi
-     \ifnum\c at currentitemnumber=1%
-\def\moodle at answertext{true}%
+     \ifnum\c at currentitemnumber=1\relax
+       \def\moodle at answertext{true}%
      \fi
-     \ifnum\c at currentitemnumber=2%
-\def\moodle at answertext{false}%
+     \ifnum\c at currentitemnumber=2\relax
+       \def\moodle at answertext{false}%
      \fi
-     \ifnum\c at currentitemnumber<3%
+     \ifnum\c at currentitemnumber<3\relax
        \addto at xml[2]{\moodle at answers@xml}{<answer fraction="\moodle at fraction" format="plain_text">}%
        \addto at xml[4]{\moodle at answers@xml}{  <text>\moodle at answertext</text>}%
+       \ifmoodle at pluginfile
+         \addto at xml[4]{\moodle at answers@xml}{\htmlize at embeddedfiletags}%
+       \fi
        \ifx\moodle at feedback\@empty\relax
          \def\test at ii{#2}
          \ifx\test at ii\@empty\relax\else
@@ -1598,12 +1695,12 @@
            \else%
              \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{#1#2}%
            \fi%
-           \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+           \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
          \fi
        \else
          \trim at spaces@in\moodle at feedback
          \xa\converttohtmlmacro\xa\moodle at feedback@html\xa{\moodle at feedback}%
-         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text></feedback>}%
+         \addto at xml[4]{\moodle at answers@xml}{  <feedback format="html"><text><![CDATA[<p>\moodle at feedback@html</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</feedback>}%
        \fi
        \addto at xml[2]{\moodle at answers@xml}{</answer>}%
      \fi
@@ -1620,31 +1717,37 @@
 \def\moodle at makelatextag@matching{%
   \ifmoodle at handout\else
     \ifmoodle at draganddrop
-      \moodle at makelatextagbox{Drag and drop}\relax%
+      \moodle at makelatextag@other{Drag and drop}\relax%
     \fi
     \ifmoodle at shuffle
-      \moodle at makelatextagbox{Shuffle}\relax%
+      \moodle at makelatextag@other{Shuffle}\relax%
     \fi
   \fi
 }
-
+\long\def\moodle at matching@left#1{%
+  \parbox[c]{.9\linewidth}{\raggedleft #1}\hfil\vrule width .5pt$\bullet$%
+}%
+\long\def\moodle at matching@right#1{%
+  $\bullet$\vrule width .5pt\hfil\parbox[c]{.9\linewidth}{#1}%
+}%
 \def\moodle at matching@latexprocessing{%
   \bgroup
     %\let\answer=\hfill
-    \par%\noindent
+    \par\noindent
     \ifmoodle at handout
-      \NewList{questionlist}
-      \NewList{answerlist}
+      \NewList{questionlist}%
+      \gdef\matcheslist{}%
+      \NewList{answerlist}%
+    \else
+      \long\def\matching at table@text{}%
     \fi
-    \def\matching at table@text{}%
-    %  \ifnum\c at numgathereditems>2\relax%
-    \setcounter{moodle at numcorrectanswers}{0}% Here this counter is for "questions" (items on the left column)
+    \setcounter{moodle at NumStarredAnswers}{0}% Here this counter is for "questions" (items on the left column)
     \loopthroughitemswithcommand{\moodle at print@matching at answer}%
-    \ifnum\c at numgathereditems<3%
-      \PackageWarning{moodle}{Moodle expects at least three "answers" with matching type}%
+    \ifnum\c at numgathereditems<3\relax
+      \PackageWarning{moodle}{Moodle expects at least three proposed matches in matching questions}%
     \fi
-    \ifnum\c at moodle@numcorrectanswers<2%
-      \PackageWarning{moodle}{Moodle expects at least two "questions" with the matching type}%
+    \ifnum\c at moodle@NumStarredAnswers<2\relax
+      \PackageWarning{moodle}{Moodle expects at least two items in matching questions}%
     \fi
     \ifmoodle at handout
       \ifmoodle at shuffle
@@ -1652,23 +1755,25 @@
       \else
         \let\moodle at matching@loop=\ForEachFirstItem
       \fi
-      \moodle at matching@loop{questionlist}{Question}{
-        \xdef\test at i{\Question}%
-        \ExtractRandomItem{answerlist}{Answer}%
-        \ifx\test at i\@empty
-          \xdef\matching at table@text{\expandonce\matching at table@text & & $\bullet$~\expandonce\Answer\\}%
-        \else
-          \xdef\matching at table@text{\expandonce\matching at table@text\expandonce\Question~$\bullet$ & & $\bullet$~\expandonce\Answer\\}%
-        \fi
+      \begin{minipage}{.43\linewidth}%
+      \moodle at matching@loop{questionlist}{Question}{%
+        \moodle at matching@left{\Question}%
+        \vskip 4pt\relax
       }%
-    \fi
-    \begin{tabular}{@{}>{\raggedleft}p{.45\linewidth}p{.1\linewidth}p{.45\linewidth}@{}}%
-      \matching at table@text
-    \end{tabular}%
-    \par
-    \ifmoodle at handout\else
+      \end{minipage}%
+      \hfill
+      \begin{minipage}{.43\linewidth}%
+      \ForEachFirstItem{answerlist}{Answer}{%
+        \moodle at matching@right{\Answer}%
+        \vskip 4pt\relax
+      }%
+      \end{minipage}%
+    \else
+      \begin{tabular}{@{}p{.43\linewidth}@{}p{.1\linewidth}@{}p{.43\linewidth}@{}}%
+        \matching at table@text
+      \end{tabular}%
       \ifx\moodle at generalfeedback\@empty\relax\else%
-        \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+        \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
       \fi
     \fi
   \egroup
@@ -1685,18 +1790,30 @@
   \def\test at i{#1}%
   \trim at spaces@in\test at i
   \ifmoodle at handout
-    \ifx\test at i\@empty
-      \InsertLastItem{questionlist}{\@empty}%
-    \else
+    \ifx\test at i\@empty\else
+      \stepcounter{moodle at NumStarredAnswers}%
       \InsertLastItem{questionlist}{#1}%
     \fi
-    \InsertLastItem{answerlist}{#2}%
+    \edef\test at ii{\detokenize{#2}}%
+    \trim at spaces@in\test at ii
+    \trim at spaces@in\test at ii% don't know why the 2nd call is required
+    % add proposed match only if not already in the list
+    \xifinlist{\expandonce\test at ii}{\matcheslist}{}{%
+      \listeadd\matcheslist{\expandonce\test at ii}%
+      % matches are always proposed shuffled
+      \InsertRandomItem{answerlist}{#2}%
+    }%
   \else
     \ifx\test at i\@empty
-      \g at addto@macro\matching at table@text{&&$\bullet$~#2\\}%
+      \xa\g at addto@macro\xa\matching at table@text\xa{%
+        &&\moodle at matching@right{#2}\\\\\relax%
+      }%
     \else
-      \stepcounter{moodle at numcorrectanswers}%
-      \xa\g at addto@macro\xa\matching at table@text\xa{\test at i~$\bullet$&\leavevmode\cleaders\hb at xt@.44em{\hss$\cdot$\hss}\hfill\kern\z@&$\bullet$~#2\\}%
+      \stepcounter{moodle at NumStarredAnswers}%
+      \xa\g at addto@macro\xa\matching at table@text\xa{%
+        \moodle at matching@left{#1}&\leavevmode\leaders\hb at xt@.44em{\hss$\cdot$\hss}\hfill\kern\z@%
+        &\moodle at matching@right{#2}\\\\\relax
+      }%
     \fi
   \fi
 }%
@@ -1718,20 +1835,21 @@
      \def\moodle at subanswertext{#2}%
      \trim at spaces@in\moodle at subquestiontext
      \xa\converttohtmlmacro\xa\moodle at subquestiontext@htmlized\xa{\moodle at subquestiontext}%
-     \trim at spaces@in\moodle at subanswertext
-     \ifmoodle at draganddrop
-       \xa\converttohtmlmacro\xa\moodle at subanswertext@htmlized\xa{\moodle at subanswertext}%
-     \fi
      \addto at xml[2]{\moodle at answers@xml}{<subquestion format="html">}%
      \ifx\moodle at subquestiontext\@empty
        \addto at xml[4]{\moodle at answers@xml}{  <text></text>}%
      \else
-       \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at subquestiontext@htmlized</p>]]></text>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <text><![CDATA[<p>\moodle at subquestiontext@htmlized</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi}%
      \fi
+     \trim at spaces@in\moodle at subanswertext
+     \trim at spaces@in\moodle at subanswertext% don't know why but a second call seems required...
+     %\ifmoodle at draganddrop
+       \xa\converttohtmlmacro\xa\moodle at subanswertext@htmlized\xa{\moodle at subanswertext}%
+     %\fi
      \ifmoodle at draganddrop
-       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[<p>\moodle at subanswertext@htmlized</p>]]></text></answer>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[<p>\moodle at subanswertext@htmlized</p>]]></text>\ifmoodle at pluginfile\htmlize at embeddedfiletags\fi</answer>}%
      \else
-       \addto at xml[4]{\moodle at answers@xml}{  <answer><text>\moodle at subanswertext</text></answer>}%
+       \addto at xml[4]{\moodle at answers@xml}{  <answer format="html"><text><![CDATA[\moodle at subanswertext@htmlized]]></text></answer>}%
      \fi
      \addto at xml[2]{\moodle at answers@xml}{</subquestion>}%
    }%
@@ -1755,7 +1873,7 @@
     % A cloze question won't have any \item's in it, so we just use \BODY.
     \moodle at enableclozeenvironments
     %First, the LaTeX processing.
-      \item \textbf{\moodle at questionname}
+      \item \moodle at begin@samepage\textbf{\moodle at questionname}
       \ifmoodle at handout
         \moodle at makelatextag@qtype{cloze}
       \else
@@ -1772,12 +1890,13 @@
       %\csname moodle at cloze@latexprocessing\endcsname
       \ifmoodle at handout\else
         \ifx\moodle at generalfeedback\@empty\relax\else%
-          \fbox{\parbox{\linewidth}{\emph{\moodle at generalfeedback}}}%
+          \fbox{\parbox{.96\linewidth}{\emph{\moodle at generalfeedback}}}%
         \fi
       \fi
+      \moodle at end@samepage
     %Now, writing information to memory.
     \@moodle at ifgeneratexml{%
-      \xa\questiontext\xa{\BODY}% Save the question text as HTML.
+      \xa\questiontext\xa{\BODY}% Save the question text as \HTML.
       \writeclozequestion
     }{}%
   \egroup%
@@ -1802,11 +1921,46 @@
     \moodle at writetags%
   \writetomoodle{</question>}%
 }%
+\newdimen\moodle at tmpdim
+\def\moodle at checkclozefraction{%
+  \moodle at tmpdim=\moodle at fraction pt\relax
+  % Rounding is performed in three steps:
+  % 1) round(x)=floor(x+1/2)
+  \advance\moodle at tmpdim by .5pt\relax
+  % 2) floor(x)=trunc(x) if x>0, and floor(x)=trunc(x-1) if x<0
+  \ifdim\moodle at tmpdim<0pt\relax\advance\moodle at tmpdim by -1pt\fi
+  % 3) Truncation because the quantum of TeX dimensions is 1/65536-th of a point.
+  \divide\moodle at tmpdim by 65536\relax\multiply\moodle at tmpdim by 65536\relax
+  \def\moodle at tmpval{\strip at pt\moodle at tmpdim}%
+  \ifdim\moodle at tmpdim=\moodle at fraction pt\else
+    \PackageWarning{moodle}{in cloze questions, fractions must be integers. Rounding \moodle at fraction\space to \moodle at tmpval}%
+  \fi
+  \xdef\moodle at fraction{\moodle at tmpval}% in any case, take eventual decimals out (e.g. change 10.0 for 10)
+}%
 
+\def\moodle at checkclozegrade{%
+  \moodle at tmpdim=\csname moodle at default grade\endcsname pt\relax
+  \ifdim\moodle at tmpdim<1 pt\relax
+    \PackageWarning{moodle}{for cloze questions, the default grade must be a positive integer. Changing the default grade from \csname moodle at default grade\endcsname\space to 1}%
+    \csdef{moodle at default grade}{1}%
+  \else % Rounding is performed in three steps:
+    % 1) round(x)=floor(x+1/2)
+    \advance\moodle at tmpdim by .5pt\relax
+    % 2) floor(x)=trunc(x) if x>0, and floor(x)=trunc(x-1) if x<0
+    \ifdim\moodle at tmpdim<0pt\relax\advance\moodle at tmpdim by -1pt\fi
+    % 3) Truncation because the quantum of TeX dimensions is 1/65536-th of a point.
+    \divide\moodle at tmpdim by 65536\relax\multiply\moodle at tmpdim by 65536\relax
+    \def\moodle at tmpval{\strip at pt\moodle at tmpdim}%
+    \ifdim\moodle at tmpdim=\csname moodle at default grade\endcsname pt\else
+      \PackageWarning{moodle}{for cloze questions, the default grade must be a positive integer. Rounding \csname moodle at default grade\endcsname\space to \moodle at tmpval}%
+    \fi
+    \csedef{moodle at default grade}{\moodle at tmpval}% in any case, take eventual decimals out (e.g. change 10.0 for 10)
+  \fi
+}%
 \NewEnviron{clozemulti}[1][]{%
   \bgroup
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
+    \moodle at checkclozegrade
     \expandafter\gatheritems\xa{\BODY}%
     \let\moodle at questionheader=\gatheredheader
     \ifhtmlizer at active
@@ -1815,23 +1969,28 @@
       \xa\g at addto@macro\xa\moodle at clozemulti@output\xa{\moodle at questionheader}%
       \def\clozemulti at coding{}%
       \edef\clozemulti at coding{\csname moodle at default grade\endcsname:}%
-      \ifmoodle at multiple
-        \PackageWarning{moodle}{Cloze Multiresponse only supported by Moodle 3.5+}
+      \ifmoodle at single
+        \g at addto@macro{\clozemulti at coding}{MULTICHOICE}%
+      \else
+        \moodle at WarningOrError{3}{5}{Cloze Multiresponse}%
         \g at addto@macro{\clozemulti at coding}{MULTIRESPONSE}%
-      \else
-        \g at addto@macro{\clozemulti at coding}{MULTICHOICE}%
       \fi
       \ifcase\moodle at multi@mode\relax
          % Case 0: dropdown box style
-         \ifmoodle at shuffle
-           \g at addto@macro{\clozemulti at coding}{_}%
-         \fi
+        \ifmoodle at single\else
+           \PackageError{moodle}{Inline mode (dropdown box) incompatible with multiresponse.}
+        \fi
+        \ifmoodle at shuffle
+          \g at addto@macro{\clozemulti at coding}{_}%
+        \fi
       \or
         % Case 1: vertical style
-        \ifmoodle at multiple
-          \PackageError{moodle}{Vertical mode (dropdown box) incompatible with multiresponse.}
+        \ifmoodle at single
+          \g at addto@macro{\clozemulti at coding}{_V}%
         \else
-          \g at addto@macro{\clozemulti at coding}{_V}%
+           \ifmoodle at shuffle
+             \g at addto@macro{\clozemulti at coding}{_}%
+           \fi
         \fi
       \else
         % Case 2: horizontal radio buttons
@@ -1838,7 +1997,7 @@
         \g at addto@macro{\clozemulti at coding}{_H}%
       \fi
       \ifmoodle at shuffle
-        \PackageWarning{moodle}{Cloze Multi Shuffling only supported by Moodle 3.0+}
+        \moodle at WarningOrError{3}{0}{Cloze Multi Shuffling}
         \g at addto@macro{\clozemulti at coding}{S:}%
       \else
         \g at addto@macro{\clozemulti at coding}{:}%
@@ -1860,10 +2019,11 @@
       \noindent
       \moodle at makelatextag@qtype{multi}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@multi
       \fi
       \def\cloze at multichoice@table at text{}%
+      \ifmoodle at single\relax\else\moodle at InspectMultipleAnswers\fi
       \ifmoodle at handout\NewList{answerlist}\fi
       %\let\moodle at feedback=\@empty
       \loopthroughitemswithcommand{\moodle at print@clozemultichoice at answer}%
@@ -1912,7 +2072,8 @@
   \moodle at print@clozemultichoice at answer@int#1 \@rdelim%
 }%
 \newcommand\moodle at print@clozemultichoice at answer@int[1][]{%
-  \setkeys{moodle}{fraction=0,#1}%
+  \let\moodle at fraction\@empty%
+  \setkeys{moodle}{#1}%
   \moodle at print@clozemultichoice at answer@int at int%
 }%
 \long\def\moodle at print@clozemultichoice at answer@int at int#1#2\@rdelim{%
@@ -1937,13 +2098,43 @@
   \trim at spaces@in\moodle at answertext
   \trim at spaces@in\moodle at answertext
   \ifmoodle at handout\else
-    \ifx\moodle at fraction\@hundred
-      \g at addto@macro\moodle at answertext{$~\checkmark$}%
-    \else
-      \moodle at checkfraction
-      \ifdim0pt=\moodle at fraction pt\relax\else
-        \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
+    \ifmoodle at single%
+      \ifx\moodle at fraction\@empty\relax%
+        \ifdim0pt<\moodle at sanction pt\relax
+          \setkeys{moodle}{fraction=-\moodle at sanction}%
+        \else
+          \setkeys{moodle}{fraction=0}%
+        \fi
       \fi
+      \moodle at checkclozefraction
+      \ifx\moodle at fraction\@hundred%
+        \trim at spaces@in\moodle at answertext%
+        \g at addto@macro\moodle at answertext{$~\checkmark$}%
+      \else
+        \ifdim0pt=\moodle at fraction pt\relax\else%
+          \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
+        \fi
+      \fi
+    \else% multiple
+      \ifx\moodle at fraction\@empty\relax%
+        \ifmoodle at AdvancedScoreMode
+          \setkeys{moodle}{fraction=0}%
+        \else
+          \setkeys{moodle}{fraction=-\moodle at AutoScore}%
+        \fi
+      \else
+        \ifmoodle at AdvancedScoreMode
+          \moodle at checkclozefraction
+          \ifdim0pt<\moodle at fraction pt\relax
+            \moodle at autoscore@tmp=\moodle at PositiveScoreFactor\relax%
+            \multiply\moodle at autoscore@tmp by \moodle at fraction\relax%
+            \xdef\moodle at fraction{\strip at pt\moodle at autoscore@tmp}%
+          \fi
+        \else
+          \setkeys{moodle}{fraction=\moodle at AutoScore}%
+        \fi
+      \fi
+      \xdef\moodle at answertext{\expandonce\moodle at answertext$~(\moodle at fraction\%)$}%
     \fi
   \fi
   \ifcase\moodle at multi@mode\relax
@@ -1955,7 +2146,7 @@
   \or % Case 1
     \ifmoodle at handout\else
       \ifx\moodle at feedback\@empty\relax\else
-        \xdef\moodle at answertext{\expandonce\moodle at answertext \hfill \expandonce\emph{$\rightarrow$ \expandonce\moodle at feedback}}%
+        \xdef\moodle at answertext{\expandonce\moodle at answertext \moodle at preFeedback \expandonce\emph{$\rightarrow$ \expandonce\moodle at feedback}}%
       \fi
     \fi
   \else % otherwise
@@ -1997,9 +2188,9 @@
   \trim at spaces@in\moodle at answertext
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozemulti at coding{=}%
+    \g at addto@macro\clozemulti at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozemulti at coding{\expandonce\clozemulti at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -2013,8 +2204,8 @@
   \bgroup
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
+    \moodle at checkclozegrade
     \ifhtmlizer at active
       %HTML version
       \def\moodle at clozenumerical@output{}%
@@ -2037,7 +2228,7 @@
       \noindent
       \moodle at makelatextag@qtype{numerical}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@numerical
         \par
         \noindent
@@ -2066,23 +2257,25 @@
   \setkeys{moodle}{#1}%
   \moodle at print@clozenumerical at answer@int at int%
 }%
+\def\moodle at zero{0}%
 \def\moodle at print@clozenumerical at answer@int at int#1\@rdelim{%
   \ifx\moodle at fraction\@hundred
     \def\moodle at clozenumericalprint@fraction{$~\checkmark$}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \edef\moodle at clozenumericalprint@fraction{$(~\moodle at fraction\%)$}%
   \fi
-  \ifnum\z@=\moodle at tolerance
+  \ifx\moodle at zero\moodle at tolerance%
     \def\moodle at clozenumericalprint@tolerance{}%
   \else
-    \edef\moodle at clozenumericalprint@tolerance{$\,\pm\,$\moodle at printnum{\moodle at tolerance}}%
+    \edef\moodle at clozenumericalprint@tolerance{$\,\pm\,$\moodle at printnum{\expandonce\moodle at tolerance}}%
   \fi
-  \xdef\test at i{\trim at spaces{#1}}%
+  \gdef\test at i{#1}%
+  \trim at spaces@in\test at i
   \ifx\test at i\@star
-    \xdef\moodle at clozenumericalprint@line{#1~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
+    \xdef\moodle at clozenumericalprint@line{\expandonce\test at i~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
   \else
-    \xdef\moodle at clozenumericalprint@line{\moodle at printnum{#1}\moodle at clozenumericalprint@tolerance~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
+    \xdef\moodle at clozenumericalprint@line{\moodle at printnum{\expandonce\test at i}\expandonce\moodle at clozenumericalprint@tolerance~\moodle at clozenumericalprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
   \fi
   \xa\g at addto@macro\xa\cloze at numerical@table at text\xa{\moodle at clozenumericalprint@line \\\hline}%
 }%
@@ -2103,9 +2296,9 @@
   \def\moodle at answertext{#1}%
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozenumerical at coding{=}%
+    \g at addto@macro\clozenumerical at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozenumerical at coding{\expandonce\clozenumerical at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -2124,21 +2317,14 @@
   \bgroup
     \expandafter\gatheritems\expandafter{\BODY}%
     \let\moodle at questionheader=\gatheredheader
-    \setkeys{moodle}{default grade=1}%
     \setkeys{moodle}{#1}%
-    %Because nesting conditionals built by \csname doesn't work well,
-    %we'll test '\ifmoodle at case sensitive' now and save the result in \count0.
-    \csname ifmoodle at case sensitive\endcsname
-      \count0=1\relax
-    \else
-      \count0=0\relax
-    \fi
+    \moodle at checkclozegrade
     \ifhtmlizer at active
       %HTML version
       \def\moodle at clozeshortanswer@output{}%
       \xa\g at addto@macro\xa\moodle at clozeshortanswer@output\xa{\moodle at questionheader}%
       \def\clozeshortanswer at coding{}%
-      \ifnum\count0=1\relax
+      \ifmoodle at usecase
         \edef\clozeshortanswer at coding{\csname moodle at default grade\endcsname:SHORTANSWER_C:}%
       \else
         \edef\clozeshortanswer at coding{\csname moodle at default grade\endcsname:SHORTANSWER:}%
@@ -2159,7 +2345,7 @@
       \noindent
       \moodle at makelatextag@qtype{shortanswer}
       \ifmoodle at handout\else
-        \moodle at makelatextag@value{default grade}{\moodle at marks{\csname moodle at default grade\endcsname}}
+        \moodle at makelatextag@value{default grade}{marked out of}
         \moodle at makelatextag@shortanswer
         \par
         \noindent
@@ -2192,7 +2378,7 @@
   \ifx\moodle at fraction\@hundred
     \def\moodle at clozeshortanswerprint@fraction{$~\checkmark$}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \edef\moodle at clozeshortanswerprint@fraction{$~(\moodle at fraction\%)$}%
   \fi
   \xdef\moodle at clozeshortanswerprint@line{#1~\moodle at clozeshortanswerprint@fraction & \expandonce\emph{\expandonce\moodle at feedback}}%
@@ -2215,9 +2401,9 @@
   \def\moodle at answertext{#1}%
   \trim at spaces@in\moodle at answertext
   \ifx\moodle at fraction\@hundred
-    \g at addto@macro\clozeshortanswer at coding{=}%
+    \g at addto@macro\clozeshortanswer at coding{\clozecorrect}%
   \else
-    \moodle at checkfraction
+    \moodle at checkclozefraction
     \ifdim0pt=\moodle at fraction pt\relax\else
       \xdef\clozeshortanswer at coding{\expandonce\clozeshortanswer at coding\otherpercent\moodle at fraction\otherpercent}%
     \fi
@@ -2233,8 +2419,9 @@
  \catcode`\^=12\gdef\othercaret{^}%
  \catcode`\$=12\gdef\otherdollar{$}%
  \catcode`\%=12\gdef\otherpercent{%}
- \catcode`\%=12\gdef\otherlbracket{[}
- \catcode`\%=12\gdef\otherrbracket{]}}%
+ \catcode`\[=12\gdef\otherlbracket{[}
+ \catcode`\]=12\gdef\otherrbracket{]}}%
+{\catcode`\=\string=12\gdef\otherequal{=}}%
 {\catcode`\ =12\gdef\otherspace{ }}%
 {\ttfamily\catcode`\|=0\catcode`\\=12\relax|gdef|otherbackslash{\}}%
 {\catcode`\[=1\catcode`\]=2\catcode`\{=12\catcode`\}=12%
@@ -2249,6 +2436,7 @@
 \edef\@otherdollar{\otherdollar}%
 \edef\@otherbackslash{\otherbackslash}%
 \edef\@othertilde{\othertilde}%
+\edef\@otherequal{\otherequal}%
 { \catcode`\[=1\relax
   \catcode`\]=2\relax
   \catcode`\|=0\relax
@@ -2353,6 +2541,9 @@
 \long\def\converttohtmlmacro#1#2{%
   \grouplevel=0\relax
   \def\htmlize at output{}%
+  \ifmoodle at pluginfile
+    \gdef\htmlize at embeddedfiletags{}%
+  \fi
   \htmlizer at activetrue%
   \converttohtml at int{#2}%
   \htmlizer at activefalse%
@@ -2371,6 +2562,7 @@
 \def\@lt{<}%
 \def\@gt{>}%
 \def\@dash{-}%
+\def\@dq{"}%
 
 \long\def\htmlize at recursive@i#1#2#3\htmlize at rdelim@i{%
   % #1#2#3 is a sequence of tokens.  All should be categories 11 (letter) or 12 (other).
@@ -2382,23 +2574,27 @@
     \let\htmlize at next@i=\relax
   \else
     \ifx\test at i\@otherlbrace%
-      \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
-      \bgroup
-        \normalcatcodes
+      \ifx\test at ii\@otherrbrace%
+        \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherlbrace\otherrbrace}}{}%
+        \def\htmlize at next@i{\htmlize at recursive@i#3\htmlize at rdelim@i}%
+      \else
+        \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
+        \bgroup
+          \normalcatcodes
         %We need to rescan the input as TeX code,
         % so TeX can automatically pull off the first group in braces.
         % First, let's get rid of the terminal \@htmlize at stop codes.
-        {\def\@htmlize at stop{}\xdef\htmlize at scrap{#1#2#3}}%
-        \let\htmlize at text@to at rescan=\htmlize at scrap%
+          {\def\@htmlize at stop{}\xdef\htmlize at scrap{#1#2#3}}%
+          \let\htmlize at text@to at rescan=\htmlize at scrap%
         % Next, we retokenize the code.
-        \xa\retokenizenormal at to@macro\xa\htmlize at rescanned\xa{\htmlize at text@to at rescan}%
+          \xa\retokenizenormal at to@macro\xa\htmlize at rescanned\xa{\htmlize at text@to at rescan}%
         % Now break it up into two pieces.
-        \xa\htmlize at grabblock\htmlize at rescanned\@htmlize at stop\htmlize at rdelim@ii%
+          \xa\htmlize at grabblock\htmlize at rescanned\@htmlize at stop\htmlize at rdelim@ii%
         % The first piece, \htmlize at blockinbraces, will be passed as a unit to \converttohtml at int.
         % The second part, \htmlize at remainder, will continue at this depth of grouping.
         % Therefore we'll detokenize \htmlize at remainder here.
-        \xa\ultradetokenize at to@macro\xa\htmlize at remainder@detokenized\xa{\htmlize at remainder}%
-        \edef\htmlize at remainder@detokenized{\xa\htmlize at remove@stopcode\htmlize at remainder@detokenized}%
+          \xa\ultradetokenize at to@macro\xa\htmlize at remainder@detokenized\xa{\htmlize at remainder}%
+          \edef\htmlize at remainder@detokenized{\xa\htmlize at remove@stopcode\htmlize at remainder@detokenized}%
         %
         % Now build \htmlize at next@i.
         % When done, should look like
@@ -2407,20 +2603,21 @@
         %   \htmlize at recursive@i\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i%
         % but with all three arguments expanded.
         % Note that we are running
-        \gdef\htmlize at scrap{\converttohtml at int}%
-        \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\htmlize at blockinbraces}}%
-        \g at addto@macro\htmlize at scrap{\g at addto@macro\htmlize at output}%
-        \ifmoodle at clozemode
-          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherbackslash\otherrbrace}}%
-        \else
-          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherrbrace}}%
-        \fi
-        \g at addto@macro\htmlize at scrap{\htmlize at recursive@i}%
-        \xa\g at addto@macro\xa\htmlize at scrap\xa{\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
+          \gdef\htmlize at scrap{\converttohtml at int}%
+          \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\htmlize at blockinbraces}}%
+          \g at addto@macro\htmlize at scrap{\g at addto@macro\htmlize at output}%
+          \ifmoodle at clozemode
+            \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherbackslash\otherrbrace}}%
+          \else
+            \xa\g at addto@macro\xa\htmlize at scrap\xa{\xa{\otherrbrace}}%
+          \fi
+          \g at addto@macro\htmlize at scrap{\htmlize at recursive@i}%
+          \xa\g at addto@macro\xa\htmlize at scrap\xa{\htmlize at remainder@detokenized\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
         % Okay, that's done.  It's stored in a global macro.
         % Now we get it out of this group.
-      \egroup
-      \let\htmlize at next@i=\htmlize at scrap
+        \egroup
+        \let\htmlize at next@i=\htmlize at scrap
+      \fi
     \else
       \ifx\test at i\@otherdollar%
         % Math shift character.
@@ -2555,7 +2752,7 @@
                 \xa\ultradetokenize at to@macro\xa\htmlize at remaining@text\xa{\htmlize at scrap}%
                 \def\htmlize at next@i{\xa\htmlize at recursive@i\htmlize at remaining@text\@htmlize at stop\@htmlize at stop\@htmlize at stop\htmlize at rdelim@i}%
               \else
-                % control sequence to be transcribed to XML.
+                % control sequence to be transcribed to \XML.
                 %\edef\ds{Must pass on \xa\string\@htmlize at cs}\show\ds
                 \g at addto@macro\htmlize at output{#1}%
                 \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
@@ -2564,8 +2761,9 @@
           \fi% \ifx\@htmlize at cs\@@begin at cs
         \else%
           \ifx\test at i\@othertilde%
-            % The ~ becomes non-breaking space  
-            \g at addto@macro\htmlize at output{\otherampersand nbsp;}%
+            % The ~ becomes non-breaking space   outside of math mode
+            \moodle at ifmathmode{\g at addto@macro\htmlize at output{\@othertilde}}%
+                              {\g at addto@macro\htmlize at output{\otherampersand nbsp;}}%
             \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
           \else
             \ifx\test at i\@lsinglequote%
@@ -2581,26 +2779,25 @@
               \ifx\test at i\@rsinglequote%
                 \ifx\test at ii\@rsinglequote% Double right quote
                   %AAedit 2021.01.06: in math mode, you should write 2 single right quotes, for second derivatives
-                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand rsquo;\otherampersand rsquo;}}%
+                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{''}}%
                                     {\g at addto@macro\htmlize at output{\otherampersand rdquo;}}%
                   \def\htmlize at next@i{\htmlize at recursive@i#3\htmlize at rdelim@i}%
                 \else% Single right quote
-                  \g at addto@macro\htmlize at output{\otherampersand rsquo;}%
+                  \moodle at ifmathmode{\g at addto@macro\htmlize at output{'}}%
+                                    {\g at addto@macro\htmlize at output{\otherampersand rsquo;}}%
                   \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                 \fi% \ifx\test at ii\@rsinglequote%
               \else
                 \ifx\test at i\@doublequote
-                  \g at addto@macro\htmlize at output{\otherampersand rdquo;}%
+                  \g at addto@macro\htmlize at output{\otherampersand quot;}%
                   \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                 \else
                   \ifx\test at i\@lt
-                    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand lt;}}%
-                                      {\g at addto@macro\htmlize at output{<}}%
+                    \g at addto@macro\htmlize at output{\otherampersand lt;}
                     \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                   \else
                     \ifx\test at i\@gt
-                      \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherampersand gt;}}%
-                                        {\g at addto@macro\htmlize at output{>}}%
+                      \g at addto@macro\htmlize at output{\otherampersand gt;}%
                       \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                     \else
                       \ifx\test at i\@dash
@@ -2613,9 +2810,19 @@
                           \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
                         \fi
                       \else
-                        % Default case: write first token to output, call self on remaining tokens.
-                        \g at addto@macro\htmlize at output{#1}%
-                        \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \ifx\test at i\@otherequal
+                          \ifmoodle at clozemode
+                            \moodle at ifmathmode{\g at addto@macro\htmlize at output{=}}%
+                                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 61;}}%
+                          \else
+                            \g at addto@macro\htmlize at output{=}%
+                          \fi
+                          \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \else
+                          % Default case: write first token to output, call self on remaining tokens.
+                          \g at addto@macro\htmlize at output{#1}%
+                          \def\htmlize at next@i{\htmlize at recursive@i#2#3\htmlize at rdelim@i}%
+                        \fi% \ifx\test at i\@otherequal
                       \fi% \ifx\test at i\@dash
                     \fi% \ifx\test at i\@gt
                   \fi% \ifx\test at i\@lt
@@ -2636,9 +2843,9 @@
 \edef\inlinemathleftdelim{\otherbackslash(}%
 \def\inlinemathrightdelim#1{\advancemathmodecounter{-1}%
                             \g at addto@macro\htmlize at output{\otherbackslash)}}%
-\edef\displaymathleftdelim{\otherbackslash[}%
+\edef\displaymathleftdelim{<CENTER>\otherbackslash[}%
 \def\displaymathrightdelim#1{\advancemathmodecounter{-1}%
-                             \g at addto@macro\htmlize at output{\otherbackslash]}}%
+                             \g at addto@macro\htmlize at output{\otherbackslash]</CENTER>}}%
 \long\def\htmlize at inlinemath@recursive at i#1#2#3\htmlize at rdelim@i{%
   % inspired by \htmlize at recursive@i
   \def\test at i{#1}%
@@ -2755,7 +2962,7 @@
 }
 
 \def\htmlize at activate@css{}%
-\def\html at action@def#1{%
+\long\def\html at action@def#1{%
   \htmlize at record@action{#1}%
   \xa\def\xa\htmlize at scrap\xa{\xa\let\xa#1\csname html@\string#1\endcsname}%
   \xa\g at addto@macro\xa\htmlize at activate@css\xa{\htmlize at scrap}%
@@ -2780,7 +2987,7 @@
     \xa\htmlize at proceedwiththerest\htmlize at afteraction@hook
   }%
 }
-\def\htmlize at redefine@expansionmacros{}%
+\long\def\htmlize at redefine@expansionmacros{}%
 \long\def\htmlize at record@expand#1{%
   \xa\listadd\xa\htmlize at cs@expandlist\xa{\string#1}%
 }
@@ -2809,8 +3016,12 @@
 \htmlize at record@environment{clozeshortanswer}
 \htmlize at record@environment{shortanswer}
 
-\html at newenvironment{center}{\xdef\htmlize at afteraction@hook{<CENTER>\expandonce\BODY</CENTER>}}%
+\html at newenvironment{center}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{CENTER}\expandonce\BODY\noexpand\HTMLtag{/CENTER}}}%
 
+\html at newenvironment{quote}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{BLOCKQUOTE}\expandonce\BODY\noexpand\HTMLtag{/BLOCKQUOTE}}}%
+
+\html at newenvironment{quotation}{\xdef\htmlize at afteraction@hook{\noexpand\HTMLtag{BLOCKQUOTE}\expandonce\BODY\noexpand\HTMLtag{/BLOCKQUOTE}}}%
+
 \def\moodle at save@getitems at state{%
   \global\xa\xdef\csname moodle at currentitemnumber@level@\the\moodle at listdepth\xa\endcsname\xa{\thecurrentitemnumber}%
   \global\xa\xdef\csname moodle at numgathereditems@level@\the\moodle at listdepth\xa\endcsname\xa{\thenumgathereditems}%
@@ -2822,13 +3033,13 @@
   \moodle at restoreitems{\thenumgathereditems}%
 }%
 \def\moodle at saveitems#1{%
-  \ifnum#1>0%
+  \ifnum#1>0\relax
     \global\csletcs{moodle at level@\the\moodle at listdepth @item@#1}{getitems at item@#1}%
     \xa\moodle at saveitems\xa{\number\numexpr#1-1\expandafter}%
   \fi
 }%
 \def\moodle at restoreitems#1{%
-  \ifnum#1>0%
+  \ifnum#1>0\relax
     \global\csletcs{getitems at item@#1}{moodle at level@\the\moodle at listdepth @item@#1}%
     \global\xa\let\csname moodle at level@\the\moodle at listdepth @item@#1\endcsname=\@undefined
     \xa\moodle at restoreitems\xa{\number\numexpr#1-1\expandafter}%
@@ -2839,9 +3050,9 @@
     \advance\moodle at listdepth by 1\relax
     \moodle at save@getitems at state%
       \xa\gatheritems\xa{\BODY}%
-      \gdef\htmlize at afteraction@hook{<#2>}%
+      \gdef\htmlize at afteraction@hook{\HTMLtag{#2}}%
       \loopthroughitemswithcommand{\moodle at itemtoLI}%
-      \g at addto@macro\htmlize at afteraction@hook{</#2>}%
+      \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{/#2}}%
     \moodle at restore@getitems at state%
     \advance\moodle at listdepth by -1\relax
   }%
@@ -2851,9 +3062,9 @@
 \moodle at makelistenv{itemize}{UL}%
 
 \def\moodle at itemtoLI#1{%
-  \g at addto@macro\htmlize at afteraction@hook{<LI>#1}%
+  \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{LI}#1}%
   \trim at spaces@in\htmlize at afteraction@hook%
-  \g at addto@macro\htmlize at afteraction@hook{</LI>}%
+  \g at addto@macro\htmlize at afteraction@hook{\HTMLtag{/LI}}%
 }%
 
 \def\advancemathmodecounter#1{%
@@ -2870,11 +3081,19 @@
 \htmlize at record@action{\endclozemode}%
 \htmlize at record@action{\relax}%
 
-\html at action@def\%{\g at addto@macro\htmlize at output{\otherpercent}}%
+\html at action@def\HTMLtag#1{%
+    \xa\g at addto@macro\xa\htmlize at output\xa{<#1>}%
+  }%
+\html at action@def\%{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherpercent}}%
+                      {\g at addto@macro\htmlize at output{\otherpercent}}%
+  }%
 \html at action@def\#{\g at addto@macro\htmlize at output{\otherhash}}%
 \html at action@def\&{\g at addto@macro\htmlize at output{\otherampersand}}%
-\html at action@def\\{\moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherbackslash}}%
-                                     {\g at addto@macro\htmlize at output{<BR/>}}}%
+\html at action@def\\{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherbackslash}}%
+                      {\g at addto@macro\htmlize at output{<BR/>}}
+  }%
 \html at action@def\{{%
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherlbrace}}%
                       {\g at addto@macro\htmlize at output{\otherlbrace}}%
@@ -2881,15 +3100,15 @@
   }%
 \html at action@def\}{%
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherrbrace}}%
-                      {\ifmoodle at clozemode\g at addto@macro\htmlize at output{\otherbackslash}\fi
-                       \g at addto@macro\htmlize at output{\otherrbrace}}%
+       {\ifmoodle at clozemode\g at addto@macro\htmlize at output{\otherbackslash\otherrbrace}%
+                           \else\g at addto@macro\htmlize at output{\otherrbrace}\fi}%
   }%
 \html at action@def\[{%
     \advancemathmodecounter{1}
-    \g at addto@macro\htmlize at output{\otherbackslash\otherlbracket}%
+    \g at addto@macro\htmlize at output{<CENTER>\otherbackslash\otherlbracket}%
   }%
 \html at action@def\]{%
-    \g at addto@macro\htmlize at output{\otherbackslash\otherrbracket}%
+    \g at addto@macro\htmlize at output{\otherbackslash\otherrbracket</CENTER>}%
     \advancemathmodecounter{-1}
   }%
 \html at action@def\({%
@@ -2912,15 +3131,64 @@
     \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherspace}}%
                       {\g at addto@macro\htmlize at output{\otherspace}}%
   }%
+\html at action@def\,{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\,}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 8239\othersemicol}}%
+  }%
+\html at action@def\thinspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\thinspace\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand\otherhash 8239\othersemicol}}%
+  }%
+\html at action@def\>{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\otherampersand gt;}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\:{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\:}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\medspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\:}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp14\othersemicol}}%
+  }%
+\html at action@def\;{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\othersemicol}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp13\othersemicol}}%
+  }%
+\html at action@def\thickspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\otherbackslash\othersemicol}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp13\othersemicol}}%
+  }%
+\html at action@def\enspace{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\enspace\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand ensp\othersemicol}}%
+  }%
+\html at action@def\quad{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\quad\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp\othersemicol}}%
+  }%
+\html at action@def\qquad{%
+    \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\qquad\otherspace}}%
+                      {\g at addto@macro\htmlize at output{\otherampersand emsp\othersemicol\otherampersand emsp\othersemicol}}%
+  }%
 \html at action@def\${%
      \g at addto@macro\htmlize at output{\otherdollar}%
   }%
+\html at action@def\textquotesingle{%
+     \g at addto@macro\htmlize at output{'}%
+  }%
 \html at action@def\@dquote{%
      \g at addto@macro\htmlize at output{"}%
   }%
+\html at action@def\textquotedbl{%
+     \g at addto@macro\htmlize at output{"}%
+  }%
 \html at action@def\clozetilde{%
     \xa\g at addto@macro\xa\htmlize at output\xa{\othertilde}%
   }%
+\html at action@def\clozecorrect{%
+    \xa\g at addto@macro\xa\htmlize at output\xa{\otherequal}%
+  }%
 \html at action@def\clozelbrace{%
     \openclozemode
     \xa\g at addto@macro\xa\htmlize at output\xa{\otherlbrace}%
@@ -2930,16 +3198,16 @@
     \endclozemode
   }%
 \html at action@def\TeX{%
-    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash TeX\otherbackslash)}
+    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash TeX\otherbackslash)}%
   }%
 \html at action@def\LaTeX{%
-    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash LaTeX\otherbackslash)}
+    \g at addto@macro\htmlize at output{\otherbackslash(\otherbackslash rm\otherbackslash LaTeX\otherbackslash)}%
   }%
 
 {\catcode`;=12\relax\gdef\othersemicol{;}}
 
 {\catcode`|=3\relax
- \gdef\htmlize at vowels{a|e|i|o|u|A|E|I|O|U|}}
+ \gdef\htmlize at vowels{a|e|i|o|u|A|E|I|O|U|}}%
 \def\htmlize at define@diacritic#1#2{%
   \htmlize at record@action{#1}%
   \g at addto@macro\htmlize at activate@css{%
@@ -2955,7 +3223,7 @@
 \htmlize at define@diacritic{\`}{grave}%
 
 {\catcode`|=3\relax
- \gdef\htmlize at diaeresis{a|e|i|o|u|y|A|E|I|O|U|Y|}}
+ \gdef\htmlize at diaeresis{a|e|i|o|u|y|A|E|I|O|U|Y|}}%
 \html at action@def\"#1{%
     \ifinlist{#1}{\htmlize at diaeresis}%
       {\g at addto@macro\htmlize at output{\otherampersand#1uml\othersemicol}}%
@@ -2978,7 +3246,7 @@
           \ifx\test at i\@u
             \def\toadd{\otherampersand\otherhash369\othersemicol}%
           \else
-            \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+            \def\toadd{\otherbackslash H\otherlbrace#1\otherrbrace}%
           \fi
         \fi
       \fi
@@ -2989,39 +3257,39 @@
 
 \def\@c{c}\def\@C{C}\def\@s{s}\def\@S{S}\def\@t{t}\def\@T{T}%
 \html at action@def\c#1{%
-\bgroup
-  \def\test at i{#1}%
-  \ifx\test at i\@c
-    \def\toadd{\otherampersand ccedil\othersemicol}%
-  \else
-    \ifx\test at i\@C
-      \def\toadd{\otherampersand Ccedil\othersemicol}%
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@c
+      \def\toadd{\otherampersand ccedil\othersemicol}%
     \else
-      \ifx\test at i\@s
-        \def\toadd{\otherampersand\otherhash351\othersemicol}%
+      \ifx\test at i\@C
+        \def\toadd{\otherampersand Ccedil\othersemicol}%
       \else
-        \ifx\test at i\@S
-          \def\toadd{\otherampersand\otherhash350\othersemicol}%
+        \ifx\test at i\@s
+          \def\toadd{\otherampersand\otherhash351\othersemicol}%
         \else
-          \ifx\test at i\@t
-            \def\toadd{\otherampersand\otherhash355\othersemicol}%
+          \ifx\test at i\@S
+            \def\toadd{\otherampersand\otherhash350\othersemicol}%
           \else
-            \ifx\test at i\@T
-              \def\toadd{\otherampersand\otherhash354\othersemicol}%
+            \ifx\test at i\@t
+              \def\toadd{\otherampersand\otherhash355\othersemicol}%
             \else
-              \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+              \ifx\test at i\@T
+                \def\toadd{\otherampersand\otherhash354\othersemicol}%
+              \else
+                \def\toadd{\otherbackslash c\otherlbrace#1\otherrbrace}%
+              \fi
             \fi
           \fi
         \fi
       \fi
     \fi
-  \fi
-  \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
-\egroup
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
 }%
 
 {\catcode`|=3\relax
- \gdef\htmlize at tilde{A|N|O|a|n|o|}}
+ \gdef\htmlize at tilde{A|N|O|a|n|o|}}%
 \html at action@def\~#1{%
     \ifinlist{#1}{\htmlize at tilde}%
       {\g at addto@macro\htmlize at output{\otherampersand#1tilde\othersemicol}}%
@@ -3029,12 +3297,12 @@
 }%
 
 {\catcode`|=3\relax
- \gdef\htmlize at breve{A|G|U|a|g|u|}}
+ \gdef\htmlize at breve{A|G|U|a|g|u|}}%
 \def\@e{e}\def\@E{E}\def\@i{i}\def\@ii{\i}\def\@I{I}\def\@o{o}\def\@O{O}%
 \html at action@def\u#1{%
   \ifinlist{#1}{\htmlize at breve}%
      {\g at addto@macro\htmlize at output{\otherampersand#1breve\othersemicol}}%
-     {
+     {%
       \bgroup
         \def\test at i{#1}%
         \ifx\test at i\@E
@@ -3058,7 +3326,7 @@
                     \ifx\test at i\@o
                       \def\toadd{\otherampersand\otherhash335\othersemicol}%
                     \else
-                      \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+                      \def\toadd{\otherbackslash u\otherlbrace#1\otherrbrace}%
                     \fi
                   \fi
                 \fi
@@ -3072,7 +3340,7 @@
 }%
 
 {\catcode`|=3\relax
- \gdef\htmlize at caron{C|D|E|L|N|R|S|T|Z|c|d|e|l|n|r|s|t|z|}}
+ \gdef\htmlize at caron{C|D|E|L|N|R|S|T|Z|c|d|e|l|n|r|s|t|z|}}%
 \html at action@def\v#1{%
     \ifinlist{#1}{\htmlize at caron}%
       {\g at addto@macro\htmlize at output{\otherampersand#1caron\othersemicol}}%
@@ -3080,11 +3348,11 @@
 }%
 
 {\catcode`|=3\relax
- \gdef\htmlize at ogonek{A|E|I|U|a|e|i|u|}}
+ \gdef\htmlize at ogonek{A|E|I|U|a|e|i|u|}}%
 \html at action@def\k#1{%
   \ifinlist{#1}{\htmlize at ogonek}%
     {\g at addto@macro\htmlize at output{\otherampersand#1ogon\othersemicol}}%
-    {
+    {%
       \bgroup
         \def\test at i{#1}%
         \ifx\test at i\@O
@@ -3093,7 +3361,7 @@
           \ifx\test at i\@o
             \def\toadd{\otherampersand\otherhash491\othersemicol}%
           \else
-            \def\toadd{\otherbackslash\otherlbrace#1\otherrbrace}%
+            \def\toadd{\otherbackslash k\otherlbrace#1\otherrbrace}%
           \fi
         \fi
         \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
@@ -3100,59 +3368,238 @@
       \egroup
     }%
 }%
-\html at def\underline#1{<SPAN STYLE=\@dquote text-decoration: underline;\@dquote>#1</SPAN>}%
-\html at def\emph#1{<EM>#1</EM>}%
-\html at def\textit#1{<I>#1</I>}%
-\html at def\textbf#1{<B>#1</B>}%
-\html at def\texttt#1{<CODE>#1</CODE>}%
-\html at def\textsc#1{<SPAN STYLE=\@dquote font-variant: small-caps;\@dquote>#1</SPAN>}%
-\html at def\url#1{<A href=\@dquote #1\@dquote>#1</A>}%
-\html at def\href#1#2{<A href=\@dquote #1\@dquote>#2</A>}%
-\html at def\textsuperscript#1{<SUP>#1</SUP>}%
-\html at def\up#1{<SUP>#1</SUP>}%
-\html at def\fup#1{<SUP>#1</SUP>}%
-\html at def\textsubscript#1{<SUB>#1</SUB>}%
+
+{\catcode`|=3\relax
+ \gdef\htmlize at macron{A|E|I|O|U|a|e|i|o|u|}}%
+\def\@g{g}\def\@G{G}\def\@y{y}\def\@Y{Y}%
+\html at action@def\=#1{%
+  \ifinlist{#1}{\htmlize at macron}%
+    {\g at addto@macro\htmlize at output{\otherampersand#1macr\othersemicol}}%
+    {%
+      \bgroup
+        \def\test at i{#1}%
+        \ifx\test at i\@g
+          \def\toadd{\otherampersand\otherhash7713\othersemicol}%
+        \else
+          \ifx\test at i\@G
+            \def\toadd{\otherampersand\otherhash7712\othersemicol}%
+          \else
+            \ifx\test at i\@y
+              \def\toadd{\otherampersand\otherhash563\othersemicol}%
+            \else
+              \ifx\test at i\@Y
+                \def\toadd{\otherampersand\otherhash562\othersemicol}%
+              \else
+                \def\toadd{\otherbackslash =\otherlbrace#1\otherrbrace}%
+              \fi
+            \fi
+          \fi
+        \fi
+        \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+      \egroup
+    }%
+}%
+
+\def\@b{b}\def\@B{B}\def\@d{d}\def\@D{D}\def\@k{k}\def\@K{K}\def\@l{l}%
+\def\@L{L}\def\@n{n}\def\@N{N}\def\@t{t}\def\@T{T}\def\@z{z}\def\@Z{Z}%
+\html at action@def\b#1{%
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@b
+      \def\toadd{\otherampersand\otherhash7687\othersemicol}%
+    \else
+      \ifx\test at i\@B
+        \def\toadd{\otherampersand\otherhash7686\othersemicol}%
+      \else
+        \ifx\test at i\@d
+          \def\toadd{\otherampersand\otherhash7695\othersemicol}%
+        \else
+          \ifx\test at i\@D
+            \def\toadd{\otherampersand\otherhash7694\othersemicol}%
+          \else
+            \ifx\test at i\@k
+              \def\toadd{\otherampersand\otherhash7733\othersemicol}%
+            \else
+              \ifx\test at i\@K
+                \def\toadd{\otherampersand\otherhash7732\othersemicol}%
+              \else
+                \ifx\test at i\@l
+                  \def\toadd{\otherampersand\otherhash7739\othersemicol}%
+                \else
+                  \ifx\test at i\@L
+                    \def\toadd{\otherampersand\otherhash7738\othersemicol}%
+                  \else
+                    \ifx\test at i\@n
+                      \def\toadd{\otherampersand\otherhash7753\othersemicol}%
+                    \else
+                      \ifx\test at i\@N
+                        \def\toadd{\otherampersand\otherhash7752\othersemicol}%
+                      \else
+                        \ifx\test at i\@r
+                          \def\toadd{\otherampersand\otherhash7775\othersemicol}%
+                        \else
+                          \ifx\test at i\@R
+                            \def\toadd{\otherampersand\otherhash7774\othersemicol}%
+                          \else
+                            \ifx\test at i\@t
+                              \def\toadd{\otherampersand\otherhash7791\othersemicol}%
+                            \else
+                              \ifx\test at i\@T
+                                \def\toadd{\otherampersand\otherhash7790\othersemicol}%
+                              \else
+                                \ifx\test at i\@z
+                                  \def\toadd{\otherampersand\otherhash7829\othersemicol}%
+                                \else
+                                  \ifx\test at i\@Z
+                                    \def\toadd{\otherampersand\otherhash7828\othersemicol}%
+                                  \else
+                                    \def\toadd{\otherbackslash b\otherlbrace#1\otherrbrace}%
+                                  \fi
+                                \fi
+                              \fi
+                            \fi
+                          \fi
+                        \fi
+                      \fi
+                    \fi
+                  \fi
+                \fi
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
+}%
+
+{\catcode`|=3\relax
+ \gdef\htmlize at dotabove{C|E|G|I|Z|c|e|g|z|}}%
+\def\@i{i}%
+\html at action@def\.#1{%
+  \ifinlist{#1}{\htmlize at dotabove}%
+    {\g at addto@macro\htmlize at output{\otherampersand#1dot\othersemicol}}%
+    {
+      \bgroup
+        \def\test at i{#1}%
+        \ifx\test at i\@i
+          \def\toadd{i}%
+        \else
+          \def\toadd{\otherbackslash .\otherlbrace#1\otherrbrace}%
+        \fi
+        \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+      \egroup
+    }%
+}%
+
+\def\@A{A}\def\@a{a}\def\@B{B}\def\@b{b}%
+\html at action@def\d#1{%
+  \bgroup
+    \def\test at i{#1}%
+    \ifx\test at i\@a
+      \def\toadd{\otherampersand\otherhash7841\othersemicol}%
+    \else
+      \ifx\test at i\@A
+        \def\toadd{\otherampersand\otherhash7840\othersemicol}%
+      \else
+        \ifx\test at i\@b
+          \def\toadd{\otherampersand\otherhash7685\othersemicol}%
+        \else
+          \ifx\test at i\@B
+            \def\toadd{\otherampersand\otherhash7684\othersemicol}%
+          \else
+            \def\toadd{\otherbackslash d\otherlbrace#1\otherrbrace}%
+          \fi
+        \fi
+      \fi
+    \fi
+    \xa\g at addto@macro\xa\htmlize at output\xa{\toadd}%
+  \egroup
+}%
+
+{\catcode`|=3\relax
+ \gdef\htmlize at ring{A|U|a|u|}}%
+\html at action@def\r#1{%
+    \ifinlist{#1}{\htmlize at ring}%
+      {\g at addto@macro\htmlize at output{\otherampersand#1ring\othersemicol}}%
+      {\xa\g at addto@macro\htmlize at output\xa{\string\r#1}}%
+}%
+\def\blank{\rule{1in}{0.5pt}}%
 \html at def\blank{____________}%
-\html at def\par{<BR/>}%
+\htmlize at record@action\inlinemathrightdelim
+\htmlize at record@action\displaymathrightdelim
+\html at def\emph#1{\HTMLtag{EM}#1\HTMLtag{/EM}}%
+\html at def\textbf#1{\HTMLtag{B}#1\HTMLtag{/B}}%
+\html at def\textit#1{\HTMLtag{I}#1\HTMLtag{/I}}%
+\html at def\textsc#1{\HTMLtag{SPAN STYLE="font-variant: small-caps;"}#1\HTMLtag{/SPAN}}%
+\html at def\textsuperscript#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}%
+\html at def\textsubscript#1{\HTMLtag{SUB}#1\HTMLtag{/SUB}}%
+\html at def\texttt#1{\HTMLtag{CODE}#1\HTMLtag{/CODE}}%
+\html at action@def\underline#1{%
+  \moodle at ifmathmode{\g at addto@macro\htmlize at output{\string\underline{#1}}}%
+                    {\g at addto@macro\htmlize at output{<SPAN STYLE="text-decoration: underline;">#1</SPAN>}}%
+}%
+\html at def\url#1{\HTMLtag{A href=\@dq #1\@dq}#1\HTMLtag{/A}}% url or hyperref
+\html at def\href#1#2{\HTMLtag{A href=\@dq #1\@dq}#2\HTMLtag{/A}}% hyperref
+\html at def\up#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}% \pkg{babel}, option \optn{french}
+\html at def\fup#1{\HTMLtag{SUP}#1\HTMLtag{/SUP}}% \pkg{babel}, option \optn{french}
 \html at def\aa{\å}%
 \html at def\AA{\Å}%
 \html at def\ae{\æ}%
 \html at def\AE{\Æ}%
+\html at def\dh{\ð}%
+\html at def\DH{\Ð}%
+\html at def\dj{\đ}%
+\html at def\DJ{\Đ}%
+\html at def\i{\ı}%
+\html at def\ij{\ij}%
+\html at def\IJ{\IJ}%
+\html at def\j{\ȷ}%
+\html at def\l{\ł}%
+\html at def\L{\Ł}%
+\html at def\ng{\ŋ}%
+\html at def\NG{\Ŋ}%
+\html at def\o{\ø}%
+\html at def\O{\Ø}%
 \html at def\oe{\œ}%
 \html at def\OE{\Œ}%
-\html at def\S{\§}%
+\html at def\ss{\ß}%
+\html at def\SS{\&\#7838;}%
+\html at def\th{\þ}%
+\html at def\TH{\Þ}%
+\html at def\space{ }%
+\html at def\textvisiblespace{\␣}%
+\html at def\newline{\HTMLtag{BR/}}%
+\html at def\par{\HTMLtag{BR/}}%
+\html at def\textbackslash{\&\#92;}%
+\html at def\_{\&\#95;}%
+\html at def\textquestiondown{\¿}%
+\html at def\textexclamdown{\¡}%
 \html at def\euro{\€}%
 \html at def\texteuro{\€}%
-\html at def\o{\ø}%
-\html at def\O{\Ø}%
-\html at def\ss{\ß}%
-\html at def\SS{\&\#7838;}%
-\html at def\l{\ł}%
-\html at def\L{\Ł}%
+\html at def\S{\§}%
+\html at def\textquoteleft{\‘}%
+\html at def\textquoteright{\’}%
+\html at def\textquotedblleft{\“}%
+\html at def\textquotedblright{\”}%
+\html at def\guilsinglleft{\‹}%
+\html at def\guilsinglright{\›}%
+\html at def\guillemotleft{\«}%
+\html at def\guillemotright{\»}%
+\html at def\quotesinglbase{\‚}%
+\html at def\quotedblbase{\„}%
+\html at def\flq{\‹}%
+\html at def\frq{\›}%
+\html at def\flqq{\«}%
+\html at def\frqq{\»}%
 \html at def\og{\«\&\#8239;}%
-\html at def\guillemotleft{\«\&\#8239;}%
 \html at def\fg{\&\#8239;\»}%
-\html at def\guillemotright{\&\#8239;\»}%
+\html at def\glq{\‚}%
+\html at def\grq{\‘}%
 \html at def\glqq{\„}%
 \html at def\grqq{\“}%
-\html at def\glq{\‚}%
-\html at def\grq{\‘}%
-\html at def\flqq{\«\&\#8239;}%
-\html at def\frqq{\&\#8239;\»}%
-\html at def\flq{\‹}%
-\html at def\frq{\›}%
 \html at def\dq{\"}%
-\html at def\,{\&\#8239;}%
-\html at def\thinspace{\&\#8239;}%
-\html at def\textbackslash{\&\#92;}%
-\html at def\_{\&\#95;}%
-\html at def\textquestiondown{\¿}%
-\html at def\textexclamdown{\¡}%
-
-
-\htmlize at record@action\inlinemathrightdelim
-\htmlize at record@action\displaymathrightdelim
-
 \newcommand\htmlonly[2][]{#1}%
 \html at action@newcommand{htmlonly}[2][]{%
   \g at addto@macro\htmlize at output{#2}%
@@ -3159,10 +3606,10 @@
 }%
 \AtEndPreamble{%
   \@ifpackageloaded{graphics}{%
-    \@ifpackagelater{graphics}{2019/10/08}{}{%
-      \PackageError{moodle}{`moodle' is made to interact with the `graphics'
-                           package not older than 2019/10/08.}%
-    }%
+    \@ifpackagelater{graphics}{2019/10/08 v1.3c}{}%
+    {\PackageError{moodle}{`moodle' is made to interact with the `graphics'\MessageBreak
+                           package not older than 2019/10/08.}\@eha\endinput}%
+
   }{}%
 }%
 \def\moodle at media@find#1{%
@@ -3220,7 +3667,7 @@
       % begin modified part
        \xdef\moodle at media@base{\detokenize\xa{\Gin at base}}%
        \xdef\moodle at media@ext{\detokenize\xa{\Gin at ext}}%
-      % end modfied part
+      % end modified part
     \fi
   \endgroup
 }
@@ -3277,25 +3724,36 @@
 \def\SVGtoPDFcommand{\htmlize at setexecutable\SVGtoPDF}%
 \def\optiSVGcommand{\htmlize at setexecutable\optiSVG}%
 \def\DeleteFilecommand{\htmlize at setexecutable\DeleteFiles}%
+\def\MoveFilecommand{\htmlize at setexecutable\MoveFiles}%
+\def\DevNullcommand{\htmlize at setexecutable\DevNull}%
 
 \ifwindows%
   \ghostscriptcommand{gswin64c.exe -dBATCH -dNOPAUSE -sDEVICE=pngalpha}%
   \baselxivcommand{certutil}%
+  % Uses scour from inkscape default installation
+  % The \Inkscape\bin  directory has to be in the users path and provides both:
+  % {inkscape,python}.exe the scour-Package which is found by python in Inkscape\lib\python3.x\site-packages\
+  \optiSVGcommand{python -m scour.scour -q --enable-id-stripping --enable-comment-stripping
+                --shorten-ids --indent=none --remove-descriptive-elements}%
   \DeleteFilecommand{del}%
+  \MoveFilecommand{move}%
+  \DevNullcommand{NUL}%
+  \imagemagickcommand{magick -colorspace RGB}%
 \else%
   \ghostscriptcommand{gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha}%
   \baselxivcommand{base64}%
+  \optiSVGcommand{scour -q --enable-id-stripping --enable-comment-stripping
+                --shorten-ids --indent=none --remove-descriptive-elements}%
   \DeleteFilecommand{rm -f}%
+  \MoveFilecommand{mv}%
+  \DevNullcommand{/dev/null}%
+  \imagemagickcommand{convert -colorspace RGB}%
 \fi%
-
-\imagemagickcommand{convert -colorspace RGB}%
 \optipngcommand{optipng -clobber -strip all -quiet}%
 \PDFtoSVGcommand{inkscape --export-type=svg --export-area-page --vacuum-defs}%--pdf-poppler
 \SVGtoPDFcommand{inkscape --export-type=pdf --export-area-page}%
-\optiSVGcommand{scour -q --enable-id-stripping --enable-comment-stripping
-                --shorten-ids --indent=none --remove-descriptive-elements}%
 \AtEndPreamble{%
-  \@ifpackageloaded{graphicx}{%
+  \@ifpackageloaded{graphics}{%
     \def\@firstofthree#1#2#3{#1}%
     \def\@secondofthree#1#2#3{#2}%
     \newcommand{\DeclareGraphicsAlien}[3]{%
@@ -3315,7 +3773,7 @@
         \csname Gread@\targetfmt\endcsname{\Gin at base\targetext}%
       }%
     }%
-    \DeclareGraphicsAlien{.gif}{.png}{\htmlize at imagemagick@convert\otherspace '\SourceFile[0]' \OutputFile}%
+    \DeclareGraphicsAlien{.gif}{.png}{\htmlize at imagemagick@convert\otherspace \SourceFile[0]\otherspace \OutputFile}%
   }{
     \newcommand\includegraphics[2][]{\PackageError{moodle}{"\string\includegraphics" is not defined}%
                                           {Add "\string\usepackage{graphicx}" to you preamble.}}{}%}%
@@ -3346,9 +3804,9 @@
 \ifmoodle at svg
   \AtEndPreamble{%
     \DeclareGraphicsAlien{.svg}{.pdf}{%
-      \SVGtoPDF\otherspace '\SourceFile' -o '\OutputFile' 2>/dev/null}%
+      \SVGtoPDF\otherspace \SourceFile\otherspace -o \otherspace\OutputFile\otherspace 2>\DevNull}%
     \DeclareGraphicsAlien{.SVG}{.pdf}{%
-      \SVGtoPDF\otherspace '\SourceFile' -o '\OutputFile' 2>/dev/null}%
+      \SVGtoPDF\otherspace \SourceFile\otherspace -o \otherspace\OutputFile\otherspace 2>\DevNull}%
   }%
 \fi
 \def\moodle at checkconversionsuccess#1#2{%
@@ -3418,10 +3876,10 @@
       % conversion needed
       \edef\moodle at media@pdf{\detokenize{.pdf}}%
       \edef\moodle at media@ext{\detokenize\xa{\moodle at media@ext}}%
-      \ifnum0\ifx\moodle at media@ext\moodle at media@pdf1\fi\ifmoodle at svg1\fi=11% PDF file and SVG option active
-        \def\moodle at media@ext at current{.svg}%
+      \ifnum0\ifx\moodle at media@ext\moodle at media@pdf1\fi\ifmoodle at svg1\fi=11\relax% PDF file and \SVG\ option active
+        \def\moodle at media@ext at current{-moodle.svg}%
         \edef\moodle at media@mime at current{\moodle at media@SVGmime}%
-        \edef\cmdline{\PDFtoSVG\otherspace "\moodle at media@base\moodle at media@ext" -o "\moodle at media@base\moodle at media@ext at current" 2>/dev/null}%
+        \edef\cmdline{\PDFtoSVG\otherspace "\moodle at media@base\moodle at media@ext" -o "\moodle at media@base\moodle at media@ext at current" 2>\DevNull}%
         \message{moodle.sty:   Converting '#2' to SVG...^^J}%
         \xa\ShellEscape\xa{\cmdline}%
         \moodle at checkconversionsuccess{\moodle at media@base\moodle at media@ext at current}{PDFtoSVG conversion}%
@@ -3428,7 +3886,7 @@
         %Next, optimize inline
         \ifwindows\else
           \edef\cmdline{\optiSVG < "\moodle at media@base\moodle at media@ext at current" >
-           "\moodle at media@base.tmp.svg" && mv "\moodle at media@base.tmp.svg"
+           "\moodle at media@base.tmp.svg" && \MoveFiles\otherspace "\moodle at media@base.tmp.svg"
            "\moodle at media@base\moodle at media@ext at current"}%
           \message{moodle.sty:   Optimizing '\moodle at media@base\moodle at media@ext at current'...^^J}%
           \xa\ShellEscape\xa{\cmdline}%
@@ -3435,7 +3893,7 @@
           \moodle at checkconversionsuccess{\moodle at media@base\moodle at media@ext at current}{SVG optimization}%
         \fi
       \else% call ImageMagick
-        \def\moodle at media@ext at current{.png}%
+        \def\moodle at media@ext at current{-moodle.png}%
         \def\moodle at media@mime at current{image/png}%
         \edef\cmdline{\htmlize at imagemagick@convert\otherspace "\moodle at media@base\moodle at media@ext" -resize \moodle at graphics@geometry\otherspace "\moodle at media@base\moodle at media@ext at current"}%
         \message{moodle.sty:   Converting '#2' to PNG...^^J}%
@@ -3453,17 +3911,42 @@
     %Now, save that base64 encoding in a TeX macro
     \def\moodle at newpic@baselxiv{}%
     \message{moodle.sty:   Reading base64 file '\moodle at media@base.enc'...^^J}%
-    \openin\baseLXIVdatafile="\moodle at media@base.enc"
+    \openin\baseLXIVdatafile="\moodle at media@base.enc"\relax
+    \ifeof\baseLXIVdatafile
+      \PackageError{moodle}{reading '\moodle at media@base.enc' failed}%
+        {If the XML file is not of importance to you: use package option "draft"}%
+    \else
       \savebaselxivdata at recursive
+    \fi
     \closein\baseLXIVdatafile
     %Clean up files
     \ifx\moodle at media@ext at current\moodle at media@ext
-      \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc"}%
+      \ifwindows
+        \ShellEscape{powershell.exe "del ""\moodle at media@base.enc"""}%
+      \else
+        \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc"}%
+      \fi
     \else
-      \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc" "\moodle at media@base\moodle at media@ext at current"}%
+      \ifwindows
+        \ShellEscape{powershell.exe "del ""\moodle at media@base.enc"""}%
+        \ShellEscape{powershell.exe "del ""\moodle at media@base\moodle at media@ext at current"""}%
+      \else
+        \ShellEscape{\DeleteFiles\otherspace "\moodle at media@base.enc" "\moodle at media@base\moodle at media@ext at current"}%
+      \fi
     \fi
     \xa\global\xa\let\csname picbaselxiv at graphics@#2\endcsname=\moodle at newpic@baselxiv%
-    \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="data:\moodle at media@mime at current;base64,\csname picbaselxiv at graphics@#2\endcsname">}%
+    \ifmoodle at pluginfile
+      \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="@@PLUGINFILE@@/\moodle at media@base\moodle at media@ext at current">}%
+      \xa\filename at parse\xa{\moodle at media@base}%
+      \xdef\moodle at media@path{\filename at area}%
+      \xdef\moodle at media@base{\filename at base}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\moodle at media@base}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\moodle at media@ext at current"}
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/\moodle at media@path" encoding="base64">}%
+      \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv at graphics@#2\endcsname</file>}%
+    \else
+      \edef\htmlize at imagetag{<IMG \moodle at graphics@htmlgeometry\otherspace SRC="data:\moodle at media@mime at current;base64,\csname picbaselxiv at graphics@#2\endcsname">}%
+    \fi
     \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
     \message{moodle.sty:   <IMG> tag inserted.^^J}%
   \egroup
@@ -3477,7 +3960,7 @@
 }%
 \ifwindows
   \def\ConvertToBaseLXIV at int#1#2{%
-    \def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1.enc" && del tmp.b64}%
+    \def\cmdline{\baselxiv\otherspace -encode "#1#2"\otherspace tmp.b64 && findstr /vbc:"---" tmp.b64 > "#1.enc" && powershell.exe "del tmp.b64"}%
   }% Starting from Windows 7, CertUtil is included by default. There should be no windows XP still running
 \else
   \ifmacosx
@@ -3526,24 +4009,38 @@
       \def\TikzExportMIME{image/svg+xml}%
       \ifpdfoutput% tex engines defaulting to PDF output (pdflatex, xelatex, lualatex)
         \def\ExportTikz{ \message{moodle.sty: Converting picture '\moodle at basename.pdf' to SVG...^^J}%
-                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.pdf" -o "\moodle at basename\TikzExportExtension" 2>/dev/null}%
+                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.pdf" -o "\moodle at basename\TikzExportExtension" 2>\DevNull}%
+\message{\cmdline}
                          \xa\ShellEscape\xa{\cmdline}%
                          \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{PDFtoSVG conversion}%
                        }%
       \else % latex
         \def\ExportTikz{ \message{moodle.sty: Converting picture '\moodle at basename.ps' to SVG...^^J}%
-                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.ps" -o "\moodle at basename\TikzExportExtension" 2>/dev/null}%
-                         \xa\ShellEscape\xa{\cmdline}%
+                         \edef\cmdline{\PDFtoSVG\otherspace "\moodle at basename.ps" -o "\moodle at basename\TikzExportExtension" 2>\DevNull}%
+\message{\cmdline}
+                        \xa\ShellEscape\xa{\cmdline}%
                          \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{PStoSVG conversion}%
                        }%
       \fi
-      \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
+      \ifwindows
+        \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
                            \edef\cmdline{\optiSVG\otherspace < "\moodle at basename\TikzExportExtension" >
-                                         "\moodle at basename.tmp.svg" && mv "\moodle at basename.tmp.svg"
+                                         "\moodle at basename.tmp.svg" && powershell.exe "move ""\moodle at basename.tmp.svg""" %
+                                         """\moodle at basename\TikzExportExtension"""}%
+                           \message{\cmdline}
+                           \xa\ShellEscape\xa{\cmdline}%
+                           \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{SVG optimization}%
+                         }%
+      \else
+        \def\OptimizeExport{ \message{moodle.sty:   Optimizing '\moodle at basename.svg'...^^J}%
+                           \edef\cmdline{\optiSVG\otherspace < "\moodle at basename\TikzExportExtension" >
+                                         "\moodle at basename.tmp.svg" && \MoveFiles\otherspace "\moodle at basename.tmp.svg"
                                          "\moodle at basename\TikzExportExtension" }%
+                           \message{\cmdline}
                            \xa\ShellEscape\xa{\cmdline}%
                            \moodle at checkconversionsuccess{\moodle at basename\TikzExportExtension}{SVG optimization}%
                          }%
+      \fi
     \else
       \def\TikzExportExtension{.png}%
       \def\TikzExportMIME{image/png}%
@@ -3600,19 +4097,37 @@
     \fi
     %
     % The HTMLizer version of the tikzpicture environment,
-    % which writes an <IMG> tag to the XML file.
+    % which writes an <IMG> tag to the \XML\ file.
     \htmlize at record@environment{tikzpicture}%
     \g at addto@macro\htmlize at activate@environments{%
       \let\tikzpicture\relax\let\endtikzpicture\relax
       \NewEnviron{tikzpicture}[1][]{%
         \global\advance\numpicturesread by 1\relax
-        \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+        \ifmoodle at pluginfile
+          \edef\htmlize at imagetag{<IMG SRC="@@PLUGINFILE@@/tikz/\tikzexternalrealjob-tikztemp-\the\numpicturesread\TikzExportExtension">}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\tikzexternalrealjob-tikztemp-}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\the\numpicturesread}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\TikzExportExtension"}
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/tikz/" encoding="base64">}%
+          \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv@\the\numpicturesread\endcsname</file>}%
+        \else
+          \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+        \fi
         \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
       }[\htmlize at patchendenvironment]%
     }%
     \html at action@newcommand{tikz}[2][]{%
       \global\advance\numpicturesread by 1\relax
-      \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+      \ifmoodle at pluginfile
+        \edef\htmlize at imagetag{<IMG SRC="@@PLUGINFILE@@/tikz/\tikzexternalrealjob-tikztemp-\the\numpicturesread\TikzExportExtension">}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{<file name="\tikzexternalrealjob-tikztemp-}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\the\numpicturesread}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\TikzExportExtension"}
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{ path="/tikz/" encoding="base64">}%
+        \xa\g at addto@macro\xa\htmlize at embeddedfiletags\xa{\csname picbaselxiv@\the\numpicturesread\endcsname</file>}%
+      \else
+        \edef\htmlize at imagetag{<IMG SRC="data:\TikzExportMIME;base64,\csname picbaselxiv@\the\numpicturesread\endcsname">}%
+      \fi
       \xa\g at addto@macro\xa\htmlize at output\xa{\htmlize at imagetag}%
     }%
   \else
@@ -3635,7 +4150,12 @@
 \def\savebaselxivdata{%
   \def\moodle at newpic@baselxiv{}%
   \openin\baseLXIVdatafile=\tikzexternalrealjob-tikztemp-\the\numconvertedpictures.enc\relax
+  \ifeof\baseLXIVdatafile
+      \PackageError{moodle}{reading '\moodle at media@base.enc' failed}%
+        {If the XML file is not of importance to you: use package option "draft"}%
+  \else
     \savebaselxivdata at recursive
+  \fi
   \closein\baseLXIVdatafile
   \xa\global\xa\let\csname picbaselxiv@\the\numconvertedpictures\endcsname=\moodle at newpic@baselxiv%
 }
@@ -3653,12 +4173,16 @@
       \ifXeTeX
         % we must keep picture pdf's for subsequent linking (xdvipdfmx)
         \ifwindows
-          \ShellEscape{powershell.exe -noexit "del * -include \tikzexternalrealjob-tikztemp-*.* -exclude *.pdf}%
+          \ShellEscape{powershell.exe "del * -include \tikzexternalrealjob-tikztemp-*.* -exclude *.pdf"}%
         \else
           \ShellEscape{find . -type f -name "\tikzexternalrealjob-tikztemp-*.*" -not -name "*.pdf" -delete}%
         \fi
       \else
-        \ShellEscape{\DeleteFiles\otherspace \tikzexternalrealjob-tikztemp-*.*}%
+        \ifwindows
+          \ShellEscape{powershell.exe "del \tikzexternalrealjob-tikztemp-*.*"}%
+        \else
+          \ShellEscape{\DeleteFiles\otherspace \tikzexternalrealjob-tikztemp-*.*}%
+        \fi
       \fi
     }{}%
   \fi
@@ -3716,6 +4240,25 @@
   }{}%
 }%
 \def\xmlDisplayVerbatimBox{border-top: thin solid; border-bottom: thin solid}%
+\begingroup
+\catcode`\<=\active\relax
+\catcode`\>=\active\relax
+\catcode`\"=\active\relax
+\catcode`\'=\active\relax
+\catcode`\&=\active\relax
+\gdef\moodle at HackTML{%
+  \catcode`\<=\active\relax
+  \catcode`\>=\active\relax
+  \catcode`\"=\active\relax
+  \catcode`\'=\active\relax
+  \catcode`\&=\active\relax
+  \gdef<{\otherampersand lt;}%
+  \gdef>{\otherampersand gt;}%
+  \gdef"{\otherampersand quot;}%
+  \gdef'{\otherampersand apos;}%
+  \gdef&{\otherampersand amp;}%
+}%
+\endgroup
 \html at action@def\verbatiminput#1{%
   \message{moodle.sty: Processing \string\verbatiminput{#1} for HTML ^^J}%
   \g at addto@macro\htmlize at output{<PRE style="\xmlDisplayVerbatimBox"><CODE>}%
@@ -3723,6 +4266,7 @@
   \@bsphack
   \let\do\@makeother\dospecials
   \catcode`\^^M\active
+  \moodle at HackTML
   \def\verbatim at processline{\xa\g at addto@macro\xa\htmlize at output\xa{\the\verbatim at line<BR/>}}
   \verbatim at readfile{#1}%
   \@esphack
@@ -3736,24 +4280,27 @@
 \@ifpackageloaded{fancyvrb}{\PackageError{moodle}{'moodle' should be loaded before 'fancyvrb'.}%
 {'moodle' loads 'fancybox' which, unfortunately, redefines verbatim commands.}}{\relax}%
 
-\html at action@newcommand{VerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\VerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
-\html at action@newcommand{LVerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\LVerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
-\html at action@newcommand{BVerbatimInput}[2][]{%
-  \message{moodle.sty: Processing \string\BVerbatimInput[#1]{#2} for HTML ^^J}%
-  \def\FV at KeyValues{#1}%
-  \FV at UseKeyValues% import options defined in #1
-  \moodle at VerbatimInput{#2}%
-}%
+\def\moodle at FV#1{%
+  \html at action@newcommand{#1}[2][]{%
+    \message{moodle.sty: Processing \@backslashchar#1[##1]{##2} for HTML ^^J}%
+    \def\FV at KeyValues{##1}%
+    \FV at UseKeyValues% import options defined in #1
+    \def\FV at Input####1{
+      \immediate\openin\FV at InFile ####1\relax
+      \ifeof\FV at InFile
+        \FV at Error{No verbatim file ####1}\FV at eha
+        \immediate\closein\FV at InFile
+      \else
+        \FV at CatCodes
+        \moodle at HackTML
+        \expandafter\FV@@Input
+      \fi}%
+    \moodle at VerbatimInput{##2}%
+  }%
+}
+\moodle at FV{VerbatimInput}%
+\moodle at FV{LVerbatimInput}%
+\moodle at FV{BVerbatimInput}%
 \def\moodle at VerbatimInput#1{%
   \g at addto@macro\htmlize at output{<PRE style="\xmlDisplayVerbatimBox"><CODE>}%
   %%%%%%%% using material from fancyvrb and fvextra  %%%%%%%%
@@ -3772,7 +4319,7 @@
       \fi
     \fi
   }
-  % redefine the ProcessLine routine ('fancyvrb' and 'fvextra') for XML output
+  % redefine the ProcessLine routine ('fancyvrb' and 'fvextra') for \XML\ output
   \def\FV at ProcessLine##1{%
     \ifcsname FV at HighlightLine:\number\c at FancyVerbLine\endcsname
       \xdef\moodle at FV@tagB{<mark>}% fvextra triggered highlighting for this line
@@ -3818,8 +4365,11 @@
 \AtEndPreamble{% this definition should prevail because `minted' gets loaded after `moodle'
 \@ifpackageloaded{minted}{%
   \newcounter{moodle at pygmentizecounter}%
+  \@ifundefined{minted at defstyle}{% compatibility with minted prior to 2021/12/24 v2.6
+    \let\minted at defstyle=\minted at checkstyle%
+  }{}%
   \renewcommand{\minted at pygmentize}[2][\minted at outputdir\minted at jobname.pyg]{%
-    \minted at checkstyle{\minted at get@opt{style}{default}}%
+    \minted at defstyle{\minted at get@opt{style}{default}}%
     \stepcounter{minted at pygmentizecounter}%
     \ifthenelse{\equal{\minted at get@opt{autogobble}{false}}{true}}%
       {\def\minted at codefile{\minted at outputdir\minted at jobname.pyg}}%
@@ -3852,7 +4402,7 @@
       \fi}%
     \def\minted at cmd{\minted at cmdtemplate{latex -P commandprefix=PYG}{\minted at infile}}
     % For debugging, uncomment: %%%%
-    \immediate\typeout{\minted at cmd}%
+    %\immediate\typeout{\minted at cmd}%
     % %%%%
     \def\minted at cmdHTML{\minted at cmdtemplate{html -P noclasses -P
       nowrap -P hl_lines="\FV at HighlightLinesList" -P
@@ -3983,24 +4533,771 @@
   \stepcounter{moodle at pygmentizecounter}
   \xa\moodle at VerbatimInput\xa{\csname minted at infileHTML\the\c at moodle@pygmentizecounter\endcsname}%
 }%
+\AtEndPreamble{%
+  \@ifpackageloaded{translator}{\moodle at internationaltrue}{}%
+  \@ifpackageloaded{translations}{\moodle at internationaltrue}{}%
+  % polyglossia "fakes" babel
+  \@ifpackageloaded{polyglossia}{%
+    \moodle at internationaltrue
+    % The following is commented because \xpg at bloaded is set very late and must be expanded
+    %\PassOptionsToPackage{\xpg at bloaded}{translator}
+  }{
+    \@ifpackageloaded{babel}{%
+      \moodle at internationaltrue
+      % The following is commented because some languages of babel,
+      % like lithuanian, are unknown to translator. Instead we
+      % copied the aliases below.
+      %\PassOptionsToPackage{\bbl at loaded}{translator}%
+    }{}%
+  }%
+  \ifmoodle at international
+    % By default, we load and rely on "translator".
+    % The package is simple and has limited dependencies.
+    % Since we borrow the syntax of "translations",
+    % the switch is easy: just "\usepackage{translations}"
+    % in the preamble.
+    %\RequirePackage{translations}%
+    \@ifpackageloaded{translations}{}{%
+      \RequirePackage{translator}%
+      % Borrow the syntax from 'translations'
+      \newcommand\DeclareTranslation[3]{\deftranslation[to=#1]{#2}{#3}}%
+      \newcommand\DeclareTranslationFallback[2]{\deftranslation[to=fallback]{#1}{#2}}%
+      \let\GetTranslation=\translate
+      % Set a fall-back if a translation is unknown (usually English, see below)
+      \languagepath{\languagename,fallback}%
+      % Set aliases (most of them taken directly from translator.sty)
+      \languagealias{afrikaans} {Afrikaans,Dutch}%
+      \languagealias{american}  {AmericanEnglish,English}%
+      \languagealias{austrian}  {Austrian1997,Austrian,German1997,German}%
+      \languagealias{brazil}    {Brazilian,Portuguese}%
+      \languagealias{brazilian} {Brazilian,Portuguese}%
+      \languagealias{british}   {BritishEnglish,English}%
+      \languagealias{catalan}   {Catalan}% unknown to translator
+      \languagealias{canadian}  {Canadian,English}%
+      \languagealias{canadien}  {Canadien,French}%
+      \languagealias{croatian}  {Croatian}%
+      \languagealias{czech}     {Czech}%
+      \languagealias{danish}    {Danish}%
+      \languagealias{dutch}     {Dutch}%
+      \languagealias{english}   {English}%
+      \languagealias{estonian}  {Estonian}%
+      \languagealias{finnish}   {Finnish}%
+      \languagealias{french}    {French}%
+      \languagealias{german}    {German1997,German}%
+      \languagealias{hungarian} {Hungarian}%
+      \languagealias{icelandic} {Icelandic}%
+      \languagealias{italian}   {Italian}%
+      \languagealias{lithuanian}{Lithuanian}% unknown to translator
+      \languagealias{magyar}    {Magyar,Hungarian}% added Hungarian
+      \languagealias{naustrian} {Austrian,German}%
+      \languagealias{ngerman}   {German}%
+      \languagealias{norsk}     {Norsk}%
+      \languagealias{norwegian} {Norsk}% for polyglossia
+      \languagealias{nynorsk}   {Nynorsk,Norsk}%
+      \languagealias{polish}    {Polish}%
+      \languagealias{portuges}  {Portuguese}%
+      \languagealias{portuguese}{Portuguese}%
+      \languagealias{romanian}  {Romanian}%
+      \languagealias{slovak}    {Slovak,Czech}% added Czech
+      \languagealias{spanish}   {Spanish}%
+      \languagealias{swedish}   {Swedish}%
+      \languagealias{turkish}   {Turkish}%
+      \languagealias{UKenglish} {BritishEnglish,English}%
+      \languagealias{USenglish} {AmericanEnglish,English}%
+    }%
+    \DeclareTranslation{Catalan}{True}{Vertader}%
+    \DeclareTranslation{Catalan}{False}{Fals}%
+    %\DeclareTranslation{Catalan}{cloze}{}%
+    %\DeclareTranslation{Catalan}{description}{}%
+    %\DeclareTranslation{Catalan}{essay}{}%
+    %\DeclareTranslation{Catalan}{matching}{}%
+    %\DeclareTranslation{Catalan}{multi}{}%
+    %\DeclareTranslation{Catalan}{numerical}{}%
+    %\DeclareTranslation{Catalan}{shortanswer}{}%
+    %\DeclareTranslation{Catalan}{truefalse}{}%
+    %\DeclareTranslation{Catalan}{Shuffle}{}%
+    %\DeclareTranslation{Catalan}{Single}{}%
+    %\DeclareTranslation{Catalan}{marked out of}{}%
+    %\DeclareTranslation{Catalan}{penalty}{}%
+    %\DeclareTranslation{Catalan}{tags}{}%
+    %\DeclareTranslation{Catalan}{All-or-nothing}{}%
+    %\DeclareTranslation{Catalan}{Case-Sensitive}{}%
+    %\DeclareTranslation{Catalan}{Case-Insensitive}{}%
+    %\DeclareTranslation{Catalan}{Drag and drop}{}%
+    %\DeclareTranslation{Catalan}{Information for graders}{}%
+    %\DeclareTranslation{Catalan}{Response template}{}%
+    %\DeclareTranslation{Catalan}{editor}{}%
+    %\DeclareTranslation{Catalan}{editorfilepicker}{}%
+    %\DeclareTranslation{Catalan}{plain}{}%
+    %\DeclareTranslation{Catalan}{monospaced}{}%
+    %\DeclareTranslation{Catalan}{noinline}{}%
+    %\DeclareTranslation{Catalan}{Total of marks}{}%
+    \DeclareTranslation{Croatian}{True}{To\v{c}no}%
+    \DeclareTranslation{Croatian}{False}{Neto\v{c}no}%
+    %\DeclareTranslation{Croatian}{cloze}{}%
+    %\DeclareTranslation{Croatian}{description}{}%
+    %\DeclareTranslation{Croatian}{essay}{}%
+    %\DeclareTranslation{Croatian}{matching}{}%
+    %\DeclareTranslation{Croatian}{multi}{}%
+    %\DeclareTranslation{Croatian}{numerical}{}%
+    %\DeclareTranslation{Croatian}{shortanswer}{}%
+    %\DeclareTranslation{Croatian}{truefalse}{}%
+    %\DeclareTranslation{Croatian}{Shuffle}{}%
+    %\DeclareTranslation{Croatian}{Single}{}%
+    %\DeclareTranslation{Croatian}{Multiple}{}%
+    %\DeclareTranslation{Croatian}{marked out of}{}%
+    %\DeclareTranslation{Croatian}{penalty}{}%
+    %\DeclareTranslation{Croatian}{tags}{}%
+    %\DeclareTranslation{Croatian}{All-or-nothing}{}%
+    %\DeclareTranslation{Croatian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Croatian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Croatian}{Drag and drop}{}%
+    %\DeclareTranslation{Croatian}{Information for graders}{}%
+    %\DeclareTranslation{Croatian}{Response template}{}%
+    %\DeclareTranslation{Croatian}{editor}{}%
+    %\DeclareTranslation{Croatian}{editorfilepicker}{}%
+    %\DeclareTranslation{Croatian}{plain}{}%
+    %\DeclareTranslation{Croatian}{monospaced}{}%
+    %\DeclareTranslation{Croatian}{noinline}{}%
+    %\DeclareTranslation{Croatian}{Total of marks}{}%
+    \DeclareTranslation{Czech}{True}{Pravda}%
+    \DeclareTranslation{Czech}{False}{Nepravda}%
+    %\DeclareTranslation{Czech}{cloze}{}%
+    %\DeclareTranslation{Czech}{description}{}%
+    %\DeclareTranslation{Czech}{essay}{}%
+    %\DeclareTranslation{Czech}{matching}{}%
+    %\DeclareTranslation{Czech}{multi}{}%
+    %\DeclareTranslation{Czech}{numerical}{}%
+    %\DeclareTranslation{Czech}{shortanswer}{}%
+    %\DeclareTranslation{Czech}{truefalse}{}%
+    %\DeclareTranslation{Czech}{Shuffle}{}%
+    %\DeclareTranslation{Czech}{Single}{}%
+    %\DeclareTranslation{Czech}{Multiple}{}%
+    %\DeclareTranslation{Czech}{marked out of}{}%
+    %\DeclareTranslation{Czech}{penalty}{}%
+    %\DeclareTranslation{Czech}{tags}{}%
+    %\DeclareTranslation{Czech}{All-or-nothing}{}%
+    %\DeclareTranslation{Czech}{Case-Sensitive}{}%
+    %\DeclareTranslation{Czech}{Case-Insensitive}{}%
+    %\DeclareTranslation{Czech}{Drag and drop}{}%
+    %\DeclareTranslation{Czech}{Information for graders}{}%
+    %\DeclareTranslation{Czech}{Response template}{}%
+    %\DeclareTranslation{Czech}{editor}{}%
+    %\DeclareTranslation{Czech}{editorfilepicker}{}%
+    %\DeclareTranslation{Czech}{plain}{}%
+    %\DeclareTranslation{Czech}{monospaced}{}%
+    %\DeclareTranslation{Czech}{noinline}{}%
+    %\DeclareTranslation{Czech}{Total of marks}{}%
+    \DeclareTranslation{Danish}{True}{Sandt}%
+    \DeclareTranslation{Danish}{False}{Falsk}%
+    %\DeclareTranslation{Danish}{cloze}{}%
+    %\DeclareTranslation{Danish}{description}{}%
+    %\DeclareTranslation{Danish}{essay}{}%
+    %\DeclareTranslation{Danish}{matching}{}%
+    %\DeclareTranslation{Danish}{multi}{}%
+    %\DeclareTranslation{Danish}{numerical}{}%
+    %\DeclareTranslation{Danish}{shortanswer}{}%
+    %\DeclareTranslation{Danish}{truefalse}{}%
+    %\DeclareTranslation{Danish}{Shuffle}{}%
+    %\DeclareTranslation{Danish}{Single}{}%
+    %\DeclareTranslation{Danish}{Multiple}{}%
+    %\DeclareTranslation{Danish}{marked out of}{}%
+    %\DeclareTranslation{Danish}{penalty}{}%
+    %\DeclareTranslation{Danish}{tags}{}%
+    %\DeclareTranslation{Danish}{All-or-nothing}{}%
+    %\DeclareTranslation{Danish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Danish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Danish}{Drag and drop}{}%
+    %\DeclareTranslation{Danish}{Information for graders}{}%
+    %\DeclareTranslation{Danish}{Response template}{}%
+    %\DeclareTranslation{Danish}{editor}{}%
+    %\DeclareTranslation{Danish}{editorfilepicker}{}%
+    %\DeclareTranslation{Danish}{plain}{}%
+    %\DeclareTranslation{Danish}{monospaced}{}%
+    %\DeclareTranslation{Danish}{noinline}{}%
+    %\DeclareTranslation{Danish}{Total of marks}{}%
+    \DeclareTranslation{Dutch}{True}{Waar}%
+    \DeclareTranslation{Dutch}{False}{Niet waar}%
+    %\DeclareTranslation{Dutch}{cloze}{}%
+    %\DeclareTranslation{Dutch}{description}{}%
+    %\DeclareTranslation{Dutch}{essay}{}%
+    %\DeclareTranslation{Dutch}{matching}{}%
+    %\DeclareTranslation{Dutch}{multi}{}%
+    %\DeclareTranslation{Dutch}{numerical}{}%
+    %\DeclareTranslation{Dutch}{shortanswer}{}%
+    %\DeclareTranslation{Dutch}{truefalse}{}%
+    %\DeclareTranslation{Dutch}{Shuffle}{}%
+    %\DeclareTranslation{Dutch}{Single}{}%
+    %\DeclareTranslation{Dutch}{Multiple}{}%
+    %\DeclareTranslation{Dutch}{marked out of}{}%
+    %\DeclareTranslation{Dutch}{penalty}{}%
+    %\DeclareTranslation{Dutch}{tags}{}%
+    %\DeclareTranslation{Dutch}{All-or-nothing}{}%
+    %\DeclareTranslation{Dutch}{Case-Sensitive}{}%
+    %\DeclareTranslation{Dutch}{Case-Insensitive}{}%
+    %\DeclareTranslation{Dutch}{Drag and drop}{}%
+    %\DeclareTranslation{Dutch}{Information for graders}{}%
+    %\DeclareTranslation{Dutch}{Response template}{}%
+    %\DeclareTranslation{Dutch}{editor}{}%
+    %\DeclareTranslation{Dutch}{editorfilepicker}{}%
+    %\DeclareTranslation{Dutch}{plain}{}%
+    %\DeclareTranslation{Dutch}{monospaced}{}%
+    %\DeclareTranslation{Dutch}{noinline}{}%
+    %\DeclareTranslation{Dutch}{Total of marks}{}%
+    \DeclareTranslation{English}{True}{True}%
+    \DeclareTranslation{English}{False}{False}%
+    \DeclareTranslation{English}{cloze}{Embedded answers}%
+    \DeclareTranslation{English}{description}{Description}%
+    \DeclareTranslation{English}{essay}{Essay}%
+    \DeclareTranslation{English}{matching}{Matching}%
+    \DeclareTranslation{English}{multi}{Multiple choice}%
+    \DeclareTranslation{English}{numerical}{Numerical}%
+    \DeclareTranslation{English}{shortanswer}{Short answer}%
+    \DeclareTranslation{English}{truefalse}{True/False}%
+    \DeclareTranslation{English}{Shuffle}{Shuffle}%
+    \DeclareTranslation{English}{Single}{One answer only}%
+    \DeclareTranslation{English}{Multiple}{Multiple answers allowed}%
+    \DeclareTranslation{English}{marked out of}{marked out of}%
+    \DeclareTranslation{English}{penalty}{penalty}%
+    \DeclareTranslation{English}{tags}{tags}%
+    \DeclareTranslation{English}{All-or-nothing}{All-or-nothing}%
+    \DeclareTranslation{English}{Case-Sensitive}{Case-Sensitive}%
+    \DeclareTranslation{English}{Case-Insensitive}{Case-Insensitive}%
+    \DeclareTranslation{English}{Drag and drop}{Drag and drop}%
+    \DeclareTranslation{English}{Information for graders}{Information for graders}%
+    \DeclareTranslation{English}{Response template}{Response template}%
+    \DeclareTranslation{English}{editor}{HTML editor}%
+    \DeclareTranslation{English}{editorfilepicker}{HTML editor + file picker}%
+    \DeclareTranslation{English}{plain}{Plain text}%
+    \DeclareTranslation{English}{monospaced}{Plain text, monospaced font}%
+    \DeclareTranslation{English}{noinline}{File picker}%
+    \DeclareTranslation{English}{Total of marks}{Total of marks}%
+    \DeclareTranslation{Estonian}{True}{T\~oene}%
+    \DeclareTranslation{Estonian}{False}{V\"a\"ar}%
+    %\DeclareTranslation{Estonian}{cloze}{}%
+    %\DeclareTranslation{Estonian}{description}{}%
+    %\DeclareTranslation{Estonian}{essay}{}%
+    %\DeclareTranslation{Estonian}{matching}{}%
+    %\DeclareTranslation{Estonian}{multi}{}%
+    %\DeclareTranslation{Estonian}{numerical}{}%
+    %\DeclareTranslation{Estonian}{shortanswer}{}%
+    %\DeclareTranslation{Estonian}{truefalse}{}%
+    %\DeclareTranslation{Estonian}{Shuffle}{}%
+    %\DeclareTranslation{Estonian}{Single}{}%
+    %\DeclareTranslation{Estonian}{Multiple}{}%
+    %\DeclareTranslation{Estonian}{marked out of}{}%
+    %\DeclareTranslation{Estonian}{penalty}{}%
+    %\DeclareTranslation{Estonian}{tags}{}%
+    %\DeclareTranslation{Estonian}{All-or-nothing}{}%
+    %\DeclareTranslation{Estonian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Estonian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Estonian}{Drag and drop}{}%
+    %\DeclareTranslation{Estonian}{Information for graders}{}%
+    %\DeclareTranslation{Estonian}{Response template}{}%
+    %\DeclareTranslation{Estonian}{editor}{}%
+    %\DeclareTranslation{Estonian}{editorfilepicker}{}%
+    %\DeclareTranslation{Estonian}{plain}{}%
+    %\DeclareTranslation{Estonian}{monospaced}{}%
+    %\DeclareTranslation{Estonian}{noinline}{}%
+    %\DeclareTranslation{Estonian}{Total of marks}{}%
+    \DeclareTranslation{Finnish}{True}{Tosi}%
+    \DeclareTranslation{Finnish}{False}{Ep\"atosi}%
+    %\DeclareTranslation{Finnish}{cloze}{}%
+    %\DeclareTranslation{Finnish}{description}{}%
+    %\DeclareTranslation{Finnish}{essay}{}%
+    %\DeclareTranslation{Finnish}{matching}{}%
+    %\DeclareTranslation{Finnish}{multi}{}%
+    %\DeclareTranslation{Finnish}{numerical}{}%
+    %\DeclareTranslation{Finnish}{shortanswer}{}%
+    %\DeclareTranslation{Finnish}{truefalse}{}%
+    %\DeclareTranslation{Finnish}{Shuffle}{}%
+    %\DeclareTranslation{Finnish}{Single}{}%
+    %\DeclareTranslation{Finnish}{Multiple}{}%
+    %\DeclareTranslation{Finnish}{marked out of}{}%
+    %\DeclareTranslation{Finnish}{penalty}{}%
+    %\DeclareTranslation{Finnish}{tags}{}%
+    %\DeclareTranslation{Finnish}{All-or-nothing}{}%
+    %\DeclareTranslation{Finnish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Finnish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Finnish}{Drag and drop}{}%
+    %\DeclareTranslation{Finnish}{Information for graders}{}%
+    %\DeclareTranslation{Finnish}{Response template}{}%
+    %\DeclareTranslation{Finnish}{editor}{}%
+    %\DeclareTranslation{Finnish}{editorfilepicker}{}%
+    %\DeclareTranslation{Finnish}{plain}{}%
+    %\DeclareTranslation{Finnish}{monospaced}{}%
+    %\DeclareTranslation{Finnish}{noinline}{}%
+    %\DeclareTranslation{Finnish}{Total of marks}{}%
+    \DeclareTranslation{French}{True}{Vrai}%
+    \DeclareTranslation{French}{False}{Faux}%
+    \DeclareTranslation{French}{cloze}{R\'eponses int\'egr\'ees}%
+    \DeclareTranslation{French}{description}{Description}%
+    \DeclareTranslation{French}{essay}{Composition}%
+    \DeclareTranslation{French}{matching}{Appariement}%
+    \DeclareTranslation{French}{multi}{QCM}%
+    \DeclareTranslation{French}{numerical}{Num\'erique}%
+    \DeclareTranslation{French}{shortanswer}{R\'eponse courte}%
+    \DeclareTranslation{French}{truefalse}{Vrai/Faux}%
+    \DeclareTranslation{French}{Shuffle}{M\'elanger}%
+    \DeclareTranslation{French}{Single}{R\'eponse unique}%
+    \DeclareTranslation{French}{Multiple}{Plusieurs r\'eponses possibles}%
+    \DeclareTranslation{French}{marked out of}{not\'e sur}%
+    \DeclareTranslation{French}{penalty}{p\'enalit\'e}%
+    \DeclareTranslation{French}{tags}{\'etiquettes}%
+    \DeclareTranslation{French}{All-or-nothing}{Tout ou rien}%
+    \DeclareTranslation{French}{Case-Sensitive}{Sensible \`a la casse}%
+    \DeclareTranslation{French}{Case-Insensitive}{Insensible \`a la casse}%
+    \DeclareTranslation{French}{Drag and drop}{Glisser-d\'eposer}%
+    \DeclareTranslation{French}{Information for graders}{Information pour les évaluateurs}%
+    \DeclareTranslation{French}{Response template}{Mod\`ele de r\'eponse}%
+    \DeclareTranslation{French}{editor}{\'Editeur HTML}%
+    \DeclareTranslation{French}{editorfilepicker}{\'Editeur \HTML\ + s\'electeur de fichier}%
+    \DeclareTranslation{French}{plain}{\'Editeur texte}%
+    \DeclareTranslation{French}{monospaced}{\'Editeur texte, police \`a chasse fixe}%
+    \DeclareTranslation{French}{noinline}{S\'electeur de fichier}%
+    \DeclareTranslation{French}{Total of marks}{Total des points}%
+    \DeclareTranslation{German}{True}{Wahr}%
+    \DeclareTranslation{German}{False}{Falsch}%
+    \DeclareTranslation{German}{cloze}{L\"uckentext}%
+    \DeclareTranslation{German}{description}{Beschreibung}%
+    \DeclareTranslation{German}{essay}{Freitext}%
+    \DeclareTranslation{German}{matching}{Zuordnung}%
+    \DeclareTranslation{German}{multi}{Multiple-Choice}%
+    \DeclareTranslation{German}{numerical}{Numerisch}%
+    \DeclareTranslation{German}{shortanswer}{Kurzantwort}%
+    \DeclareTranslation{German}{truefalse}{Wahr/Falsch}%
+    \DeclareTranslation{German}{Shuffle}{Mischen}%
+    \DeclareTranslation{German}{Single}{Nur eine Antwort erlaubt}%
+    \DeclareTranslation{German}{Multiple}{Mehrere Antworten erlaubt}%
+    \DeclareTranslation{German}{marked out of}{Punkte:}%
+    \DeclareTranslation{German}{penalty}{Abzug}%
+    \DeclareTranslation{German}{tags}{Tags}%
+    \DeclareTranslation{German}{All-or-nothing}{Alles-oder-nichts}%
+    \DeclareTranslation{German}{Case-Sensitive}{Gro\ss-/Kleinschreibung muss stimmen}%
+    \DeclareTranslation{German}{Case-Insensitive}{Gro\ss-/Kleinschreibung unwichtig}%
+    \DeclareTranslation{German}{Drag and drop}{Drag-and-Drop}%
+    \DeclareTranslation{German}{Information for graders}{Information zur Bewertung}%
+    \DeclareTranslation{German}{Response template}{Antwortvorlage}%
+    \DeclareTranslation{German}{editor}{HTML Editor}%
+    \DeclareTranslation{German}{editorfilepicker}{HTML Editor mit Dateiauswahl}%
+    \DeclareTranslation{German}{plain}{Unformatierter Text}%
+    \DeclareTranslation{German}{monospaced}{Unformatierter Text, Schriftart mit fester Laufweite}%
+    \DeclareTranslation{German}{noinline}{Kein Textfeld}%
+    \DeclareTranslation{German}{Total of marks}{Gesamtsumme der Punkte}%
+    \DeclareTranslation{Hungarian}{True}{Igaz}%
+    \DeclareTranslation{Hungarian}{False}{Hamis}%
+    %\DeclareTranslation{Hungarian}{cloze}{}%
+    %\DeclareTranslation{Hungarian}{description}{}%
+    %\DeclareTranslation{Hungarian}{essay}{}%
+    %\DeclareTranslation{Hungarian}{matching}{}%
+    %\DeclareTranslation{Hungarian}{multi}{}%
+    %\DeclareTranslation{Hungarian}{numerical}{}%
+    %\DeclareTranslation{Hungarian}{shortanswer}{}%
+    %\DeclareTranslation{Hungarian}{truefalse}{}%
+    %\DeclareTranslation{Hungarian}{Shuffle}{}%
+    %\DeclareTranslation{Hungarian}{Single}{}%
+    %\DeclareTranslation{Hungarian}{Multiple}{}%
+    %\DeclareTranslation{Hungarian}{marked out of}{}%
+    %\DeclareTranslation{Hungarian}{penalty}{}%
+    %\DeclareTranslation{Hungarian}{tags}{}%
+    %\DeclareTranslation{Hungarian}{All-or-nothing}{}%
+    %\DeclareTranslation{Hungarian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Hungarian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Hungarian}{Drag and drop}{}%
+    %\DeclareTranslation{Hungarian}{Information for graders}{}%
+    %\DeclareTranslation{Hungarian}{Response template}{}%
+    %\DeclareTranslation{Hungarian}{editor}{}%
+    %\DeclareTranslation{Hungarian}{editorfilepicker}{}%
+    %\DeclareTranslation{Hungarian}{plain}{}%
+    %\DeclareTranslation{Hungarian}{monospaced}{}%
+    %\DeclareTranslation{Hungarian}{noinline}{}%
+    %\DeclareTranslation{Hungarian}{Total of marks}{}%
+    \DeclareTranslation{Icelandic}{True}{R\'ett}%
+    \DeclareTranslation{Icelandic}{False}{Rangt}%
+    %\DeclareTranslation{Icelandic}{cloze}{}%
+    %\DeclareTranslation{Icelandic}{description}{}%
+    %\DeclareTranslation{Icelandic}{essay}{}%
+    %\DeclareTranslation{Icelandic}{matching}{}%
+    %\DeclareTranslation{Icelandic}{multi}{}%
+    %\DeclareTranslation{Icelandic}{numerical}{}%
+    %\DeclareTranslation{Icelandic}{shortanswer}{}%
+    %\DeclareTranslation{Icelandic}{truefalse}{}%
+    %\DeclareTranslation{Icelandic}{Shuffle}{}%
+    %\DeclareTranslation{Icelandic}{Single}{}%
+    %\DeclareTranslation{Icelandic}{Multiple}{}%
+    %\DeclareTranslation{Icelandic}{marked out of}{}%
+    %\DeclareTranslation{Icelandic}{penalty}{}%
+    %\DeclareTranslation{Icelandic}{tags}{}%
+    %\DeclareTranslation{Icelandic}{All-or-nothing}{}%
+    %\DeclareTranslation{Icelandic}{Case-Sensitive}{}%
+    %\DeclareTranslation{Icelandic}{Case-Insensitive}{}%
+    %\DeclareTranslation{Icelandic}{Drag and drop}{}%
+    %\DeclareTranslation{Icelandic}{Information for graders}{}%
+    %\DeclareTranslation{Icelandic}{Response template}{}%
+    %\DeclareTranslation{Icelandic}{editor}{}%
+    %\DeclareTranslation{Icelandic}{editorfilepicker}{}%
+    %\DeclareTranslation{Icelandic}{plain}{}%
+    %\DeclareTranslation{Icelandic}{monospaced}{}%
+    %\DeclareTranslation{Icelandic}{noinline}{}%
+    %\DeclareTranslation{Icelandic}{Total of marks}{}%
+    \DeclareTranslation{Italian}{True}{Vero}%
+    \DeclareTranslation{Italian}{False}{Falso}%
+    \DeclareTranslation{Italian}{cloze}{Risposte inglobate}%
+    \DeclareTranslation{Italian}{description}{Descrizione}%
+    \DeclareTranslation{Italian}{essay}{Tema libero}%
+    \DeclareTranslation{Italian}{matching}{Corrispondenza}%
+    \DeclareTranslation{Italian}{multi}{Risposta multipla}%
+    \DeclareTranslation{Italian}{numerical}{Numerica}%
+    \DeclareTranslation{Italian}{shortanswer}{Risposta breve}%
+    \DeclareTranslation{Italian}{truefalse}{Vero/Falso}%
+    \DeclareTranslation{Italian}{Shuffle}{Ordine casuale}%
+    \DeclareTranslation{Italian}{Single}{Una sola alternativa}%
+    \DeclareTranslation{Italian}{Multiple}{Pi\`u alternative}%
+    \DeclareTranslation{Italian}{marked out of}{punteggio max.}%
+    \DeclareTranslation{Italian}{penalty}{penalit\`a}%
+    \DeclareTranslation{Italian}{tags}{etichette}%
+    \DeclareTranslation{Italian}{All-or-nothing}{Tutto o niente}%
+    \DeclareTranslation{Italian}{Case-Sensitive}{Sensibile alle maiuscole}%
+    \DeclareTranslation{Italian}{Case-Insensitive}{Maiuscolo/minuscolo indifferente}%
+    \DeclareTranslation{Italian}{Drag and drop}{Drag and drop}%
+    \DeclareTranslation{Italian}{Information for graders}{Informazioni per i valutatori}%
+    \DeclareTranslation{Italian}{Response template}{Modello di risposta}%
+    \DeclareTranslation{Italian}{editor}{Editor HTML}%
+    \DeclareTranslation{Italian}{editorfilepicker}{Editor \HTML\ con file picker}%
+    \DeclareTranslation{Italian}{plain}{Testo semplice}%
+    \DeclareTranslation{Italian}{monospaced}{Testo semplice, caratteri a spaziatura fissa}%
+    \DeclareTranslation{Italian}{noinline}{Solo file picker}%
+    \DeclareTranslation{Italian}{Total of marks}{Punteggio complessivo}%
+    \DeclareTranslation{Lithuanian}{True}{Tiesa}%
+    \DeclareTranslation{Lithuanian}{False}{Netiesa}%
+    %\DeclareTranslation{Lithuanian}{cloze}{}%
+    %\DeclareTranslation{Lithuanian}{description}{}%
+    %\DeclareTranslation{Lithuanian}{essay}{}%
+    %\DeclareTranslation{Lithuanian}{matching}{}%
+    %\DeclareTranslation{Lithuanian}{multi}{}%
+    %\DeclareTranslation{Lithuanian}{numerical}{}%
+    %\DeclareTranslation{Lithuanian}{shortanswer}{}%
+    %\DeclareTranslation{Lithuanian}{truefalse}{}%
+    %\DeclareTranslation{Lithuanian}{Shuffle}{}%
+    %\DeclareTranslation{Lithuanian}{Single}{}%
+    %\DeclareTranslation{Lithuanian}{Multiple}{}%
+    %\DeclareTranslation{Lithuanian}{marked out of}{}%
+    %\DeclareTranslation{Lithuanian}{penalty}{}%
+    %\DeclareTranslation{Lithuanian}{tags}{}%
+    %\DeclareTranslation{Lithuanian}{All-or-nothing}{}%
+    %\DeclareTranslation{Lithuanian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Lithuanian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Lithuanian}{Drag and drop}{}%
+    %\DeclareTranslation{Lithuanian}{Information for graders}{}%
+    %\DeclareTranslation{Lithuanian}{Response template}{}%
+    %\DeclareTranslation{Lithuanian}{editor}{}%
+    %\DeclareTranslation{Lithuanian}{editorfilepicker}{}%
+    %\DeclareTranslation{Lithuanian}{plain}{}%
+    %\DeclareTranslation{Lithuanian}{monospaced}{}%
+    %\DeclareTranslation{Lithuanian}{noinline}{}%
+    %\DeclareTranslation{Lithuanian}{Total of marks}{}%
+    \DeclareTranslation{Norsk}{True}{Riktig}%
+    \DeclareTranslation{Norsk}{False}{Feil}%
+    %\DeclareTranslation{Norsk}{cloze}{}%
+    %\DeclareTranslation{Norsk}{description}{}%
+    %\DeclareTranslation{Norsk}{essay}{}%
+    %\DeclareTranslation{Norsk}{matching}{}%
+    %\DeclareTranslation{Norsk}{multi}{}%
+    %\DeclareTranslation{Norsk}{numerical}{}%
+    %\DeclareTranslation{Norsk}{shortanswer}{}%
+    %\DeclareTranslation{Norsk}{truefalse}{}%
+    %\DeclareTranslation{Norsk}{Shuffle}{}%
+    %\DeclareTranslation{Norsk}{Single}{}%
+    %\DeclareTranslation{Norsk}{Multiple}{}%
+    %\DeclareTranslation{Norsk}{marked out of}{}%
+    %\DeclareTranslation{Norsk}{penalty}{}%
+    %\DeclareTranslation{Norsk}{tags}{}%
+    %\DeclareTranslation{Norsk}{All-or-nothing}{}%
+    %\DeclareTranslation{Norsk}{Case-Sensitive}{}%
+    %\DeclareTranslation{Norsk}{Case-Insensitive}{}%
+    %\DeclareTranslation{Norsk}{Drag and drop}{}%
+    %\DeclareTranslation{Norsk}{Information for graders}{}%
+    %\DeclareTranslation{Norsk}{Response template}{}%
+    %\DeclareTranslation{Norsk}{editor}{}%
+    %\DeclareTranslation{Norsk}{editorfilepicker}{}%
+    %\DeclareTranslation{Norsk}{plain}{}%
+    %\DeclareTranslation{Norsk}{monospaced}{}%
+    %\DeclareTranslation{Norsk}{noinline}{}%
+    %\DeclareTranslation{Norsk}{Total of marks}{}%
+    \DeclareTranslation{Polish}{True}{Prawda}%
+    \DeclareTranslation{Polish}{False}{Fa\l sz}%
+    %\DeclareTranslation{Polish}{cloze}{}%
+    %\DeclareTranslation{Polish}{description}{}%
+    %\DeclareTranslation{Polish}{essay}{}%
+    %\DeclareTranslation{Polish}{matching}{}%
+    %\DeclareTranslation{Polish}{multi}{}%
+    %\DeclareTranslation{Polish}{numerical}{}%
+    %\DeclareTranslation{Polish}{shortanswer}{}%
+    %\DeclareTranslation{Polish}{truefalse}{}%
+    %\DeclareTranslation{Polish}{Shuffle}{}%
+    %\DeclareTranslation{Polish}{Single}{}%
+    %\DeclareTranslation{Polish}{Multiple}{}%
+    %\DeclareTranslation{Polish}{marked out of}{}%
+    %\DeclareTranslation{Polish}{penalty}{}%
+    %\DeclareTranslation{Polish}{tags}{}%
+    %\DeclareTranslation{Polish}{All-or-nothing}{}%
+    %\DeclareTranslation{Polish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Polish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Polish}{Drag and drop}{}%
+    %\DeclareTranslation{Polish}{Information for graders}{}%
+    %\DeclareTranslation{Polish}{Response template}{}%
+    %\DeclareTranslation{Polish}{editor}{}%
+    %\DeclareTranslation{Polish}{editorfilepicker}{}%
+    %\DeclareTranslation{Polish}{plain}{}%
+    %\DeclareTranslation{Polish}{monospaced}{}%
+    %\DeclareTranslation{Polish}{noinline}{}%
+    %\DeclareTranslation{Polish}{Total of marks}{}%
+    \DeclareTranslation{Portuguese}{True}{Verdadeiro}%
+    \DeclareTranslation{Portuguese}{False}{Falso}%
+    %\DeclareTranslation{Portuguese}{cloze}{}%
+    %\DeclareTranslation{Portuguese}{description}{}%
+    %\DeclareTranslation{Portuguese}{essay}{}%
+    %\DeclareTranslation{Portuguese}{matching}{}%
+    %\DeclareTranslation{Portuguese}{multi}{}%
+    %\DeclareTranslation{Portuguese}{numerical}{}%
+    %\DeclareTranslation{Portuguese}{shortanswer}{}%
+    %\DeclareTranslation{Portuguese}{truefalse}{}%
+    %\DeclareTranslation{Portuguese}{Shuffle}{}%
+    %\DeclareTranslation{Portuguese}{Single}{}%
+    %\DeclareTranslation{Portuguese}{Multiple}{}%
+    %\DeclareTranslation{Portuguese}{marked out of}{}%
+    %\DeclareTranslation{Portuguese}{penalty}{}%
+    %\DeclareTranslation{Portuguese}{tags}{}%
+    %\DeclareTranslation{Portuguese}{All-or-nothing}{}%
+    %\DeclareTranslation{Portuguese}{Case-Sensitive}{}%
+    %\DeclareTranslation{Portuguese}{Case-Insensitive}{}%
+    %\DeclareTranslation{Portuguese}{Drag and drop}{}%
+    %\DeclareTranslation{Portuguese}{Information for graders}{}%
+    %\DeclareTranslation{Portuguese}{Response template}{}%
+    %\DeclareTranslation{Portuguese}{editor}{}%
+    %\DeclareTranslation{Portuguese}{editorfilepicker}{}%
+    %\DeclareTranslation{Portuguese}{plain}{}%
+    %\DeclareTranslation{Portuguese}{monospaced}{}%
+    %\DeclareTranslation{Portuguese}{noinline}{}%
+    %\DeclareTranslation{Portuguese}{Total of marks}{}%
+    \DeclareTranslation{Romanian}{True}{Adev\u{a}rat}%
+    \DeclareTranslation{Romanian}{False}{Fals}%
+    %\DeclareTranslation{Romanian}{cloze}{}%
+    %\DeclareTranslation{Romanian}{description}{}%
+    %\DeclareTranslation{Romanian}{essay}{}%
+    %\DeclareTranslation{Romanian}{matching}{}%
+    %\DeclareTranslation{Romanian}{multi}{}%
+    %\DeclareTranslation{Romanian}{numerical}{}%
+    %\DeclareTranslation{Romanian}{shortanswer}{}%
+    %\DeclareTranslation{Romanian}{truefalse}{}%
+    %\DeclareTranslation{Romanian}{Shuffle}{}%
+    %\DeclareTranslation{Romanian}{Single}{}%
+    %\DeclareTranslation{Romanian}{Multiple}{}%
+    %\DeclareTranslation{Romanian}{marked out of}{}%
+    %\DeclareTranslation{Romanian}{penalty}{}%
+    %\DeclareTranslation{Romanian}{tags}{}%
+    %\DeclareTranslation{Romanian}{All-or-nothing}{}%
+    %\DeclareTranslation{Romanian}{Case-Sensitive}{}%
+    %\DeclareTranslation{Romanian}{Case-Insensitive}{}%
+    %\DeclareTranslation{Romanian}{Drag and drop}{}%
+    %\DeclareTranslation{Romanian}{Information for graders}{}%
+    %\DeclareTranslation{Romanian}{Response template}{}%
+    %\DeclareTranslation{Romanian}{editor}{}%
+    %\DeclareTranslation{Romanian}{editorfilepicker}{}%
+    %\DeclareTranslation{Romanian}{plain}{}%
+    %\DeclareTranslation{Romanian}{monospaced}{}%
+    %\DeclareTranslation{Romanian}{noinline}{}%
+    %\DeclareTranslation{Romanian}{Total of marks}{}%
+    \DeclareTranslation{Spanish}{True}{Verdadero}%
+    \DeclareTranslation{Spanish}{False}{Falso}%
+    \DeclareTranslation{Spanish}{cloze}{Respuestas anidadas}%
+    \DeclareTranslation{Spanish}{description}{Descripci\'on}%
+    \DeclareTranslation{Spanish}{essay}{Ensayo}%
+    \DeclareTranslation{Spanish}{matching}{Emparejamiento}%
+    \DeclareTranslation{Spanish}{multi}{Opci\'on m\'ultiple}%
+    \DeclareTranslation{Spanish}{numerical}{Num\'erica}%
+    \DeclareTranslation{Spanish}{shortanswer}{Respuesta corta}%
+    \DeclareTranslation{Spanish}{truefalse}{Verdadero/Falso}%
+    \DeclareTranslation{Spanish}{Shuffle}{Barajar al azar}%
+    \DeclareTranslation{Spanish}{Single}{S\'olo una respuesta}%
+    \DeclareTranslation{Spanish}{Multiple}{Se permiten varias respuestas}%
+    \DeclareTranslation{Spanish}{marked out of}{Punt\'ua como}%
+    \DeclareTranslation{Spanish}{penalty}{penalizaci\'on}%
+    \DeclareTranslation{Spanish}{tags}{marcas}%
+    \DeclareTranslation{Spanish}{All-or-nothing}{Todo o nada}%
+    \DeclareTranslation{Spanish}{Case-Sensitive}{May\'usculas y min\'usculas deben coincidir}%
+    \DeclareTranslation{Spanish}{Case-Insensitive}{Igual may\'usculas que min\'usculas}%
+    \DeclareTranslation{Spanish}{Drag and drop}{Arrastrar y soltar}%
+    \DeclareTranslation{Spanish}{Information for graders}{Informaci\'on para evaluadores}%
+    \DeclareTranslation{Spanish}{Response template}{Plantilla de respuesta}%
+    \DeclareTranslation{Spanish}{editor}{Editor HTML}%
+    \DeclareTranslation{Spanish}{editorfilepicker}{Editor \HTML\ con selector de archivos}%
+    \DeclareTranslation{Spanish}{plain}{Texto sin formato}%
+    \DeclareTranslation{Spanish}{monospaced}{Texto sin formato, tipografía monoespaciada}%
+    \DeclareTranslation{Spanish}{noinline}{Sin texto}%
+    \DeclareTranslation{Spanish}{Total of marks}{Total de puntos}%
+    \DeclareTranslation{Swedish}{True}{Sant}%
+    \DeclareTranslation{Swedish}{False}{Falskt}%
+    %\DeclareTranslation{Swedish}{cloze}{}%
+    %\DeclareTranslation{Swedish}{description}{}%
+    %\DeclareTranslation{Swedish}{essay}{}%
+    %\DeclareTranslation{Swedish}{matching}{}%
+    %\DeclareTranslation{Swedish}{multi}{}%
+    %\DeclareTranslation{Swedish}{numerical}{}%
+    %\DeclareTranslation{Swedish}{shortanswer}{}%
+    %\DeclareTranslation{Swedish}{truefalse}{}%
+    %\DeclareTranslation{Swedish}{Shuffle}{}%
+    %\DeclareTranslation{Swedish}{Single}{}%
+    %\DeclareTranslation{Swedish}{Multiple}{}%
+    %\DeclareTranslation{Swedish}{marked out of}{}%
+    %\DeclareTranslation{Swedish}{penalty}{}%
+    %\DeclareTranslation{Swedish}{tags}{}%
+    %\DeclareTranslation{Swedish}{All-or-nothing}{}%
+    %\DeclareTranslation{Swedish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Swedish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Swedish}{Drag and drop}{}%
+    %\DeclareTranslation{Swedish}{Information for graders}{}%
+    %\DeclareTranslation{Swedish}{Response template}{}%
+    %\DeclareTranslation{Swedish}{editor}{}%
+    %\DeclareTranslation{Swedish}{editorfilepicker}{}%
+    %\DeclareTranslation{Swedish}{plain}{}%
+    %\DeclareTranslation{Swedish}{monospaced}{}%
+    %\DeclareTranslation{Swedish}{noinline}{}%
+    %\DeclareTranslation{Swedish}{Total of marks}{}%
+    \DeclareTranslation{Turkish}{True}{Do\u{g}ru}%
+    \DeclareTranslation{Turkish}{False}{Yanl\i \c{s}}%
+    %\DeclareTranslation{Turkish}{cloze}{}%
+    %\DeclareTranslation{Turkish}{description}{}%
+    %\DeclareTranslation{Turkish}{essay}{}%
+    %\DeclareTranslation{Turkish}{matching}{}%
+    %\DeclareTranslation{Turkish}{multi}{}%
+    %\DeclareTranslation{Turkish}{numerical}{}%
+    %\DeclareTranslation{Turkish}{shortanswer}{}%
+    %\DeclareTranslation{Turkish}{truefalse}{}%
+    %\DeclareTranslation{Turkish}{Shuffle}{}%
+    %\DeclareTranslation{Turkish}{Single}{}%
+    %\DeclareTranslation{Turkish}{Multiple}{}%
+    %\DeclareTranslation{Turkish}{marked out of}{}%
+    %\DeclareTranslation{Turkish}{penalty}{}%
+    %\DeclareTranslation{Turkish}{tags}{}%
+    %\DeclareTranslation{Turkish}{All-or-nothing}{}%
+    %\DeclareTranslation{Turkish}{Case-Sensitive}{}%
+    %\DeclareTranslation{Turkish}{Case-Insensitive}{}%
+    %\DeclareTranslation{Turkish}{Drag and drop}{}%
+    %\DeclareTranslation{Turkish}{Information for graders}{}%
+    %\DeclareTranslation{Turkish}{Response template}{}%
+    %\DeclareTranslation{Turkish}{editor}{}%
+    %\DeclareTranslation{Turkish}{editorfilepicker}{}%
+    %\DeclareTranslation{Turkish}{plain}{}%
+    %\DeclareTranslation{Turkish}{monospaced}{}%
+    %\DeclareTranslation{Turkish}{noinline}{}%
+    %\DeclareTranslation{Turkish}{Total of marks}{}%
+  \else% neither babel nor polyglossia loaded
+    \newcommand\DeclareTranslationFallback[2]{\csdef{moodle at fallback@#1}{#2}}% Save fallback keys
+    \def\GetTranslation#1{\csuse{moodle at fallback@#1}}% Use fallback keys
+  \fi
+  \DeclareTranslationFallback{True}{True}%
+  \DeclareTranslationFallback{False}{False}%
+  \DeclareTranslationFallback{cloze}{Embedded answers}%
+  \DeclareTranslationFallback{description}{Description}%
+  \DeclareTranslationFallback{essay}{Essay}%
+  \DeclareTranslationFallback{matching}{Matching}%
+  \DeclareTranslationFallback{multi}{Multiple choice}%
+  \DeclareTranslationFallback{numerical}{Numerical}%
+  \DeclareTranslationFallback{shortanswer}{Short answer}%
+  \DeclareTranslationFallback{truefalse}{True/False}%
+  \DeclareTranslationFallback{Shuffle}{Shuffle}%
+  \DeclareTranslationFallback{Single}{One answer only}%
+  \DeclareTranslationFallback{Multiple}{Multiple answers allowed}%
+  \DeclareTranslationFallback{marked out of}{marked out of}%
+  \DeclareTranslationFallback{penalty}{penalty}%
+  \DeclareTranslationFallback{tags}{tags}%
+  \DeclareTranslationFallback{All-or-nothing}{All-or-nothing}%
+  \DeclareTranslationFallback{Case-Sensitive}{Case-Sensitive}%
+  \DeclareTranslationFallback{Case-Insensitive}{Case-Insensitive}%
+  \DeclareTranslationFallback{Drag and drop}{Drag and drop}%
+  \DeclareTranslationFallback{Information for graders}{Information for graders}%
+  \DeclareTranslationFallback{Response template}{Response template}%
+  \DeclareTranslationFallback{editor}{HTML editor}%
+  \DeclareTranslationFallback{editorfilepicker}{HTML editor + file picker}%
+  \DeclareTranslationFallback{plain}{Plain text}%
+  \DeclareTranslationFallback{monospaced}{Plain text, monospaced font}%
+  \DeclareTranslationFallback{noinline}{File picker}%
+  \DeclareTranslationFallback{Total of marks}{Total of marks}%
+}%
 \AtBeginDocument{%
-  \def\moodle at babel@german at warn{\PackageWarning{moodle}{Be careful when using moodle
-         and German-related babel package options. The symbol " is made active and your umlauts
-         will confuse moodle. You can either 1) compile with xelatex/lualatex with UTF-8 coded
-         characters or 2) avoid the babel option.}
-  }
-  \@ifpackagewith{babel}{german}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{austrian}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{swissgerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{swissgerman.toss}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{ngerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{naustrian}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{nswissgerman}{\moodle at babel@german at warn}{\relax}%
-  \@ifpackagewith{babel}{nswissgerman.toss}{\moodle at babel@german at warn}{\relax}%
-  \ifPDFTeX % pdflatex or latex
-    \@ifpackagewith{babel}{french}{%
-      \PackageWarning{moodle}{Be careful when using LaTeX, moodle, and the babel package with option 'french'. Autospacing produces in undesired symbols in the XML. You can either 1) compile with xelatex/lualatex or 2) add '\NoAutoSpacing' after '\begin{quiz}'.}%
-    }{\relax}%
+  \@ifpackageloaded{babel}{%
+    \@ifundefined{bbl at loaded}{}{% polyglossia fakes babel
+      \forcsvlist{\listadd\moodle at babel@german at list}{german,austrian,swissgerman,swissgerman.toss,ngerman,naustrian,nswissgerman,nswissgerman.toss}%
+      \forcsvlist{\listadd\moodle at babel@french at list}{acadian,french,frenchb,francais}%
+      \ifPDFTeX
+        \def\moodle at babel@french at warn{%
+          \PackageWarning{moodle}{Be careful when using pdflatex, moodle, and the
+            babel package loaded with a French-related option. Autospacing
+            yields undesired symbols in the XML. Here are three workarounds:
+            \MessageBreak 1) compile with xelatex/lualatex,\MessageBreak 2)
+            add `\NoAutoSpacing' after `\begin{quiz}', or\MessageBreak 3)
+            avoid the babel option.^^J}}%
+        \def\moodle at babel@german at warn{%
+          \PackageWarning{moodle}{Be careful when using pdflatex, moodle, and
+            the babel package loaded with a German-related option. The symbol
+            `"' is made active and your umlauts will confuse moodle. Here are
+            three workarounds:\MessageBreak 1) compile with xelatex/lualatex,
+            \MessageBreak 2) add `\string\shorthandoff{"}' after `\begin{quiz}',
+            or\MessageBreak 3) avoid the babel option.^^J}}%
+      \fi
+      \def\moodle at babel@turkish at warn{%
+        \PackageWarning{moodle}{Be careful when using moodle and the babel
+          package loaded with option `turkish'. Shorthands are likely to
+          break compilation. Here are three workarounds:\MessageBreak 1)
+          rely on `polyglossia' (XeTeX or LuaTeX),\MessageBreak 2) add
+          `\shorthandoff{=:!}' after `\begin{quiz}', or\MessageBreak
+          3) avoid the babel option.^^J}}%
+      \def\do#1{%
+        \ifstrequal{#1}{turkish}{\moodle at babel@turkish at warn}{%
+          \ifinlist{#1}{\moodle at babel@french at list}%
+            {\ifPDFTeX\moodle at babel@french at warn\fi}{%
+              \ifinlist{#1}{\moodle at babel@german at list}{%
+                \ifPDFTeX\moodle at babel@german at warn\else
+                  \gdef\moodle at babel@german at warn{%
+                    \PackageWarning{moodle}{Be careful when using moodle and
+            the babel package loaded with a German-related option that make the
+            symbol `"' active. We recommend typing umlauts with UTF-8
+            characters. By default, `\string\"a' is poorly translated in the XML
+            file. This is fixed if you define `\string\shorthandoff{"}' after
+            `\begin{quiz}'. But then `"a` will no longer work as expected.^^J}%
+                  }%
+                  \gdef\moodle at babel@german at warn@single{%
+                    \moodle at babel@german at warn
+                    \gdef\moodle at babel@german at warn@single{}%\relax
+                  }%
+                  \pretocmd{\"}%
+                    {\moodle at babel@german at warn@single}%
+                    {}%
+                    { \PackageWarning{moodle}{Umlaut patch failed.}%
+                      \moodle at babel@german at warn@single
+                    }%
+                \fi
+              }{}%
+            }
+
+        }
+      }
+      \expandafter\docsvlist\expandafter{\bbl at loaded}%
+    }%
+  }{}%
+}%
+\def\moodle at WarningOrError#1#2#3{%
+  % #1 : major version
+  % #2 : minor version
+  % #3 : feature
+  \ifnum\the\moodle at LMSmajor\the\moodle at LMSminor=\z@\relax
+    \PackageWarning{moodle}{#3 is only supported by Moodle #1.#2+}%
+  \else
+    \ifnum\numexpr 1000*\the\moodle at LMSmajor+\the\moodle at LMSminor\relax<\numexpr 1000*#1+#2\relax
+      \PackageError{moodle}{#3 is only supported by Moodle #1.#2+
+       (you declared Moodle \the\moodle at LMSmajor.\the\moodle at LMSminor)}%
+    \fi
   \fi
 }%
 \endinput



More information about the tex-live-commits mailing list.