Utiliser la syntaxe du package moodle.sty pour un autre usage
Description du besoin : pouvoir utiliser la syntaxe imposée par le package *moodle.sty* (import de QCM de LaTeX vers Moodle) pour une autre utilisation (édition de deux livrets pdf des QCM beaucoup plus soignée que le pdf également généré par moodle.sty).
Plus précisément, je retravaille les environnements *quiz* et *multi* tels que définis dans le fichier `moodle.sty`.
Voici un ECM comprenant le code permettant au package moodle.sty de générer un QCM de deux questions pour un import XML dans Moodle :
\documentclass[12pt]{article}
\usepackage{moodle}
\begin{document}
\begin{quiz}{ECM}
\begin{multi}[shuffle=false,feedback={INDICE: L'évènement contraire est: aucun des 5 numéros n'est gagnant. Sa probabilité se calcule par dénombrement: il y a équiprobabilité des $\binom{49}{5}$ manières de prélever ces 5 numéros (sans remise sans ordre) et il y a $\binom{44}{5}$ manières d'en choisir aucun gagnant... }]{#0021_simjff_m}
Au loto, il faut cocher $5$ numéros sur une grille qui en comporte $49$. Paul joue au loto, quelle est la probabilité qu'il ait au moins un des $5$ numéros gagnants (c'est à dire désignés par le tirage au sort) ? \\
\item $\frac{\binom{44}{5}}{\binom{49}{5}}$
\item $\frac{5 \times \binom{44}{5}}{\binom{49}{5}}$
\item $\frac{\binom{49}{44} \times \binom{5}{1}}{49^5}$
\item $\frac{5}{49}$
\item* $\frac{\binom{49}{5}-\binom{44}{5}}{\binom{49}{5}}$ %
\end{multi}
\begin{multi}[shuffle=false,feedback={INDICE: L'événement contraire est $\overline{A}$ =`` les trois tentatives ont échoué ''... La probabilité de trouver le bon code à la 1ère tentative est $P(A_1)=\frac{1}{10\times 9 \times 8 \times 7 \times 6}$ donc $P(\overline{A_1})=\frac{10\times 9 \times 8 \times 7 \times 6~-1}{10\times 9 \times 8 \times 7 \times 6}$. A la 2ème tentative, il ne retente pas le code de la 1ère donc $P(A_2)=\frac{1}{10\times 9 \times 8 \times 7 \times 6~-1}$ et donc $P(\overline{A_2})=\frac{10\times 9 \times 8 \times 7 \times 6~-2}{10\times 9 \times 8 \times 7 \times 6~-1}$... Idem pour la 3ème tentative... Utiliser enfin que $P(\overline{A})=P(\overline{A_1}) \times P(\overline{A_2}) \times P(\overline{A_3})$... et simplifier... }]{#0025_simjff_m}_
Un cambrioleur veut ouvrir le coffre-fort de Picsou protégé par un code à 5 chiffres distincts (parmi les 10 chiffres de 0 à 9). Le coffre-fort est bloqué automatiquement au bout de 3 tentatives si on n'arrive pas à trouver le bon code. Quelle est la probabilité que le voleur ouvre le coffre-fort ? \\
\item* $\frac{3}{10\times 9 \times 8 \times 7 \times 6}$ %
\item $\frac{3}{10^5}$
\item $\frac{3}{\binom{10}{5}}$
\item $\frac{3}{A_{10}^{5}}$
\item aucune réponse ne convient
\end{multi}
\end{quiz}
\end{document}
Pour info, voici une capture de l’écran Moodle après tentative de réponse à la question 1 (repérer les trois infos : *Question*, *Bonne réponse* et *Indice*) :
<img src="/upfiles/ecmq1.png" style="width: 100%;"/>
Dans le code de la question 1 : l'info *Question* est « Au loto [...] au sort) ? » , l'info *Bonne Réponse* est donnée par l'astérisque après le `\item` et l'info *Indice* est le texte dans les accolades après le feedback : « INDICE : L'événement [...] aucun gagnant... ».
Je souhaiterais que ce *même* code puisse donner les *deux* sorties suivantes :
- la première, pour un livret qui ne contiendrait que l'info *Question*, comme ceci :
<img src="/upfiles/ecmq2.png" style="width: 100%;"/>
- la seconde, pour un livret qui contiendrait les trois infos *Question*, *Bonne réponse* et *Indice*, comme cela :
<img src="/upfiles/ecmq3.png" style="width: 100%;"/>
Ces deux captures d’écran sont le résultat de ce que j’obtiens avec LaTeX, mais en ayant modifié le code ci-dessus pour chacune des deux sorties, ce qui me fait trois codes différents à gérer par question !
J’espère avoir expliqué mon besoin suffisamment clairement.
**Précisions apportées cinq jours plus tard, après avoir un peu avancé :**
Afin que vous compreniez mieux mes difficultés, voilà comment je procède aujourd’hui :
I) Pour générer le pdf des questions (ce que j’ai appelé mon besoin 2 dans les échanges précédents) : a) j’ai créé deux `\newlist` dans le préambule :
\newlist{multi}{enumerate*}{4}
\setlist[multi]{itemjoin={\hskip6mm}}
\setlist[multi,1]{label={\colorbox{blue!50}{\color{white}\Alph*}}}
\newlist{quiz}{enumerate}{2}
\setlist[quiz,1]{label ={\bf{Question~}\arabic* :~},leftmargin=1.2cm,itemsep=8mm,parsep=4mm}
b) puis dans le corps du document, pour chaque question je suis obligé de modifier la syntaxe présentée dans mon post (syntaxe qui satisfait le besoin 1 « Import Moodle »), par exemple sur la première question de mon ECM :
\begin{quiz}{ECM}
\item Au loto, il faut cocher $5$ numéros sur une grille qui en comporte $49$. Paul joue au loto, quelle est la probabilité qu'il ait au moins un des $5$ numéros gagnants (c'est à dire désignés par le tirage au sort) ? \\
\begin{multi}[shuffle=false,feedback={INDICE: L'évènement contraire est: aucun des 5 numéros n'est gagnant. Sa probabilité se calcule par dénombrement: il y a équiprobabilité des $\binom{49}{5}$ manières de prélever ces 5 numéros (sans remise sans ordre) et il y a $\binom{44}{5}$ manières d'en choisir aucun gagnant... }]{#0021_simjff_m}
\item $\frac{\binom{44}{5}}{\binom{49}{5}}$
\item $\frac{5 \times \binom{44}{5}}{\binom{49}{5}}$
\item $\frac{\binom{49}{44} \times \binom{5}{1}}{49^5}$
\item $\frac{5}{49}$
\item* $\frac{\binom{49}{5}-\binom{44}{5}}{\binom{49}{5}}$ %
\end{multi}
[…]
\end{quiz}
Ça m’oblige à reprendre chacune des questions pour déplacer l’énoncé de la question de l’intérieur de l’environnement `multi` vers l’environnement `quiz` en ajoutant un `\item`. Ultra fastidieux !
II) Pour générer le pdf des « questions + bonnes réponses + indices » (ce que j’ai appelé mon besoin 3), je pars de la syntaxe satisfaisant mon besoin 2 ci-dessus, auquel j'ajoute :
a) pour marquer la bonne réponse j’ai une pirouette laborieuse : dans chaque question, je modifie le `\item` en `\toto` et j’ai défini dans le préambule : `\newcommand\toto{\item \colorbox[rgb]{0,1,0}{$\checkmark$}}`. Ultra laborieux de reprendre chaque question !
b) pour afficher l’indice, c’est pathétique, je n’ai pas trouvé de moyen d’utiliser le texte stocké dans le `feedback` (option du `multi` de `Moodle.sty`), donc je le recopie à la main !!
J’espère avoir été plus précis dans l’explication de mon problème et qu’un amateur de LaTeX pourra me venir en aide.
---------------------------------------------------------
**En complément de mon commentaire à la réponse de @touhami** : toutes les images sont [ici][1]
3) *Problème avec insertion d'images par `\includegraphics`** : voir code ci-dessous du QCM « ajout EG pour ECM2 »
- l'image insérée dans la question est OK
- l'image insérée dans la bonne réponse est OK
- les images insérées dans les mauvaises réponses ne sont pas affichées !
4) *Problème avec insertion `tikzpicture`* : incompatibilité entre *moodle.sty* et *tikz.sty* ? voir code ci-dessous à « ajout EG pour ECM2 »
\documentclass[12pt]{article}
\usepackage{moodle}
\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{xpatch}
%%%%%%%% AJOUT EG POUR ECM2 %%%%%%%%%
\usepackage{graphicx}
\graphicspath{{Pictures/}}
\usepackage{tikz}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifMoodle
\newif\ifcorrige
\corrigetrue % ---> à decommenter pour afficer la réponse
%\Moodletrue % ---> à decommenter pour ne rien changer
\ifMoodle\else
\moodleset{answer numbering=ABC}
\makeatletter
\xpatchcmd\quiz{\begin{enumerate}}{%
\renewcommand\labelenumi{\textbf{Question \theenumi:}}%
\setlength{\leftmargini}{0pt}\begin{enumerate}}{}{}
\renewcommand{\moodle@multi@latexprocessing}{%
\moodle@obeynumberingstyle
\setcounter{enumii}{0}%
\loopthroughitemswithcommand{\moodle@print@multichoice@answer}}
\def\moodle@print@multichoice@answer@int@int#1#2\@rdelim{%
\stepcounter{enumii}%
\quad\mbox{%
\colorbox{blue!50}{\makebox[.5em]{\textcolor{white}{\theenumii}}}
\if#1*\ifcorrige\colorbox{green}{\makebox[.5em]{$\checkmark$}} \fi\else#1\fi#2}}
\def\moodle@makefrontend#1{%
\RenewEnviron{#1}[2][]{%
\bgroup
\setkeys{moodle}{##1}%
\expandafter\gatheritems\xa{\BODY}%
\let\moodle@questionheader=\gatheredheader
\item \moodle@questionheader
\csname moodle@#1@latexprocessing\endcsname
\ifcorrige\par\textcolor{blue!50}{\moodle@feedback}\fi
\egroup
}%
}\moodle@makefrontend{multi}
\makeatother
\fi
\begin{document}
%%%%%%%% AJOUT EG POUR ECM2 %%%%%%%%%
\begingroup
\begin{tikzpicture}[remember picture,overlay]
\node[inner sep=0pt] (background) at (current page.center) {\includegraphics[width=\paperwidth]{couv.png}};
\draw (current page.center) node [text opacity=0.8,inner sep=1cm]{\centering\bfseries\sffamily\parbox[c][][t]{\paperwidth}{\centering\textcolor{rose}{\fontsize{40}{20}\selectfont {Base de données de QCM} \\[10mm] \module \\[15pt]
{\Large \intitulemodule}\\[8cm]
{\Large Emmanuel Grand}\\[2cm]}}};
\end{tikzpicture}
\vfill
\endgroup
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{quiz}{ECM}
%%%%%%%% AJOUT EG POUR ECM2 %%%%%%%%%
\begin{multi}[shuffle=false,feedback={INDICE: somme des points verticalement + à droite d'un carreau... }]{#0001_Ecricome}
Quelle est la carte manquante ?
\begin{center}
\includegraphics[width=10cm]{fig01cartes.png}
\end{center}
\item \includegraphics[width=1.4cm]{fig01cartesrep2.png}
\item \includegraphics[width=1.37cm]{fig01cartesrep3.png}
\item* \includegraphics[width=1.4cm]{fig01cartesrep1.png} %
\item \includegraphics[width=1.32cm]{fig01cartesrep4.png}
\item aucune réponse ne convient
\end{multi}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{multi}[shuffle=false,feedback={INDICE: L'évènement contraire est: aucun des 5 numéros n'est gagnant. Sa probabilité se calcule par dénombrement: il y a équiprobabilité des $\binom{49}{5}$ manières de prélever ces 5 numéros (sans remise sans ordre) et il y a $\binom{44}{5}$ manières d'en choisir aucun gagnant... }]{#0021_simjff_m}
Au loto, il faut cocher $5$ numéros sur une grille qui en comporte $49$. Paul joue au loto, quelle est la probabilité qu'il ait au moins un des $5$ numéros gagnants (c'est à dire désignés par le tirage au sort) ? \\
\item $\frac{\binom{44}{5}}{\binom{49}{5}}$
\item $\frac{5 \times \binom{44}{5}}{\binom{49}{5}}$
\item $\frac{\binom{49}{44} \times \binom{5}{1}}{49^5}$
\item $\frac{5}{49}$
\item* $\frac{\binom{49}{5}-\binom{44}{5}}{\binom{49}{5}}$ %
\end{multi}
\begin{multi}[shuffle=false,feedback={INDICE: L'événement contraire est $\overline{A}$ =`` les trois tentatives ont échoué ''... La probabilité de trouver le bon code à la 1ère tentative est $P(A_1)=\frac{1}{10\times 9 \times 8 \times 7 \times 6}$ donc $P(\overline{A_1})=\frac{10\times 9 \times 8 \times 7 \times 6~-1}{10\times 9 \times 8 \times 7 \times 6}$. A la 2ème tentative, il ne retente pas le code de la 1ère donc $P(A_2)=\frac{1}{10\times 9 \times 8 \times 7 \times 6~-1}$ et donc $P(\overline{A_2})=\frac{10\times 9 \times 8 \times 7 \times 6~-2}{10\times 9 \times 8 \times 7 \times 6~-1}$... Idem pour la 3ème tentative... Utiliser enfin que $P(\overline{A})=P(\overline{A_1}) \times P(\overline{A_2}) \times P(\overline{A_3})$... et simplifier... }]{#0025_simjff_m}
Un cambrioleur veut ouvrir le coffre-fort de Picsou protégé par un code à 5 chiffres distincts (parmi les 10 chiffres de 0 à 9). Le coffre-fort est bloqué automatiquement au bout de 3 tentatives si on n'arrive pas à trouver le bon code. Quelle est la probabilité que le voleur ouvre le coffre-fort ? \\
\item* $\frac{3}{10\times 9 \times 8 \times 7 \times 6}$ %
\item $\frac{3}{10^5}$
\item $\frac{3}{\binom{10}{5}}$
\item $\frac{3}{A_{10}^{5}}$
\item aucune réponse ne convient
\end{multi}
\end{quiz}
\end{document}
----------------------------------------
`\listfiles` :
Voici la [.log][2] obtenu en compilant le code ci-dessus (ECM_touhami.tex) après avoir ajouté `\listfiles` juste avant `\end{document}`.
----------------------------------------
**doublement réponses + indice :**
cf. [capture d'écran][3] pour pdf Question+réponses+indice.
cf. [capture 2][4] pour pdf Question
----------------------------------------
**pb5: réponses avec texte long** dépassent de la page !
cf. [capture question texte long][5]
cf code question texte long:
\begin{multi}[shuffle=false,feedback={INDICE: Testez les réponses: vous pouvez essayer de raisonner par l'absurde en supposant que la réponse proposée est la vraie et voir si ça conduit vite à une contradiction...}]{#0001_passerelle_m}
Une banque gère les portefeuilles d'actions de $10\,000$ clients (chaque client ne possède qu'un seul compte).
Aujourd'hui, le portefeuille d'actions le plus fourni contient $5\,000$ actions et le moins fourni n'en contient aucune.
Parmi ces cinq propositions, quelle est la seule qui soit vraie avec certitude ? \\ %\hspace*{-5mm}
\item* Il y a au moins deux portefeuilles qui contiennent le même nombre d'actions.\\ %
\item Tous les portefeuilles ont un nombre d'actions différent.\\
\item Tous les portefeuilles ont le même nombre d'actions.\\
\item La moitié des portefeuilles ont un nombre d'actions supérieur à $2\,500$.\\
\item Un seul portefeuille contient une seule action.\\
\end{multi}
[1]: https://drive.google.com/drive/folders/17WK6u-4-7nPIb13ZcsUfh-Ja4xm3DEO-?usp=sharing
[2]: https://drive.google.com/file/d/1Jp5mD4k1ljlJFK39gzeM9sMHd1Jb15jc/view?usp=sharing
[3]: https://drive.google.com/file/d/1y6gMqVJjNxHG1xcu67PX_8yJcNLmyWM0/view?usp=sharing
[4]: https://drive.google.com/file/d/1RGpVzzGahAtmPiYp04c1y6FlthoxqFee/view?usp=sharinghttps://drive.google.com/file/d/1RGpVzzGahAtmPiYp04c1y6FlthoxqFee/view?usp=sharing
[5]: https://drive.google.com/file/d/1HlzhBJPyiawiVq6np7Ks867ImE_sKjQa/view?usp=sharing