Retour d'expérience sur le formatage des questions en LaTeX

Added by Gregory F over 3 years ago

Bonjour,

Je ne sais pas si le sujet intéresse ni même s'il a déjà été soulevé, mais après deux ans d'une utilisation intensive d'AMC, je souhaitais vous faire un petit (pas si petit en fait) retour d'expérience et partager avec vous mon processus de "rédaction" des questions au format LaTeX. Qui sait, cela pourrait servir.

Comme je n'interviens pas très souvent sur ce forum, je vais commencer par me présenter brièvement. Je travaille dans une école de commerce où je m'occupe depuis 2009 des examens informatisés. J'ai découvert AMC il y a deux ans et grâce à lui j'ai pu adresser le problème de l'évaluation des grands groupes (merci infiniment !).

Je gère chaque année environ 150 examens pour des cohortes dépassant parfois 1000 étudiants.
Je dois donc traiter (parfois dans l'urgence) des sujets d'examen qui me sont envoyés au format Word. Pour simplifier le travail, j'utilise un éditeur de texte qui me permet de faire des séries de rechercher/remplacer en utilisant des expressions régulières.
De cette façon, je peux produire un sujet propre au format LaTeX en quelques minutes seulement.

Note :

  1. Un minimum de connaissance en expressions régulières est requis pour lire ce qui suit. L'aspirine marche aussi.
  2. Il doit être possible de créer un script (Python ou autre) qui fasse le travail… S'il y a des développeurs dans le coin.
  3. C'est sans doute exactement ce qui fait déjà AMC quand on lui fourni du format AMC-TXT
  4. On peut sûrement faire beaucoup mieux.

Voici comment je procède :

Format de document demandé

Même si une certaine latitude est possible, et dans la mesure où mes "clients" sont familiers de Word, je demande de rédiger les questions en utilisant les puces et numéros. Chaque question étant précédée d'un numéro (unique) et chaque réponse d'une lettre.
Charge au professeur de m'indiquer la/les bonne(s) réponse(s) au moyen d'une étoile en début de réponse.

Exemple :

  1. Ceci est une question
    a) Ceci est une mauvaise réponse
    b) *Celle-ci est correcte
    c) Encore une mauvaise réponse
    *d) Avec l'étoile devant ça marche aussi pour une bonne.

Transformation automatisée du questionnaire

Une fois les questions reçues, je copie/colle le tout dans BBEdit (sur Mac), mais des logiciels comme Notepad++ ou Atom pourraient tout à fait faire l'affaire.
BBEdit a l'avantage de proposer des "TextFactories", sorte d'interface de macros qui permet d'enchainer des actions au moyen d'un clic de souris ou d'un raccourci clavier. Voici le détail des séquences (s: pour search et r: pour replace) :

1. Détecte les caractères LaTeX spéciaux et les fait précéder d'un anti-slash
s:

([\$&%#_\{\}\\\^])

r:
\\\1

2. Remplace le caractère "~" par le code LaTeX correspondant (précédé d'un espace).
s: ~
r: extasciitilde{}

3. Détecte les bonnes réponses et les converti dans une syntaxe unique. Enlevant les espaces en trop et uniformisant le caractère qui marque les bonnes réponses.
s:

^[\s+\t+]*\(*(\w[\.\)\-])[\s*\t*][\*\+]

r:
*\1

4. Formatage des énoncées de questions.
s:

^[\s\t]*(\d+)[-\.\)][\s+\t+](.*)

r:
\t\\end{choices}\n\t\\end{question}\n}\n\\element{groupA}{\n\t\\begin{question}{Q\1}\n\2\n\t\\begin{choices}

5. Formatage des bonnes réponses.
s:

^[\s\t]*[\*\+][\s+\t+]*\(*\w[\.\)\-][\s*\t*](.*)

r:
\t\t\\correctchoice{\1}

6. Formatage des mauvaises réponses.
s:

^[\s+\t+]*\(*\w[\.\)\-][\s*\t*](.*)

r:
\t\t\\wrongchoice{\1}

7. Suppression des ligne vides ou ne contenant que des espaces.
s:

^\s*$

r:

8. Suppression des espaces inutiles en fin de questions/réponses
s:

\s*\t*\}

r:
}

9. Suppression des espaces inutiles en début de questions/réponses
s:

\{\s*

r:
{

10. Ajout d'un zéro devant les numéros de réponses à 1 chiffre.
s:

\{Q(\d)\}

r:
{Q0\1}

11. Ajout d'un zéro devant les numéros de réponses à 2 chiffres.
s:

\{Q(\d\d)\}

r:
{Q0\1}

12. Faire précéder "Aucune de ces réponses..." par Lastchoices
s:

^\t\t\\(wrongchoice|correctchoice){(Aucune?|Tout?e?s|All of|None of)

r:
\t\t\\lastchoices %Stop shuffling next choices\n\t\t\\\1{\2

13. Ajoute un espace insécable devant les "?" et ":" en fin de phrase
s:

\s([:\?]\s*\}?)\s*$

r:
~\1

14. Met au format horizontal sans mélange les questions de type vrai/faux, Oui/non en français et en anglais.
s:

\t\\begin\{choices\}\n\t\t\\(wrongchoice|correctchoice)\{(Vrai|Yes|Oui|True|Faux|False|No|Non)\}\n\t\t\\(wrongchoice|correctchoice)\{(Faux|False|No|Non|Vrai|Yes|Oui|True)\}\t\\end\{choices\}

r:
\t\\begin{choiceshoriz}[o]\t\t\\\1{\2}\t\t\\\3{\4}\t\\end{choiceshoriz}

Ajustements manuels

Une fois que ce script s'est exécuté (c'est très rapide) j'obtiens l'ensemble des questions au format LaTeX et je peux rapidement parcourir le document pour voir si une erreur de syntax s'est glissée au départ et donne lieu à une question ou une réponse non interprétée. Dans ce cas un simple CMD+Z (ou CTRL+Z) avant de corriger et de relancer le script.

Ensuite il me reste une série d'ajustements à faire :

1. Couper/Coller les 3 première lignes du document et les coller tout à la fin.

    \end{choices}
    \end{question}
}

2. Parcourir les questions rapidement pour (toujours avec des macros et raccourcis clavier) :

  1. Coder les questions multiples
  2. Mettre au format horizontal ou sur plusieurs colonnes les questions qui s'y prêtent.

Création du sujet

Là il ne me reste plus qu'à copie/coller l'ensemble des questions dans l'un de mes deux modèles de QCM (FR ou EN) à l'emplacement désigné pour accueillir les questions, puis à entrer les détails de l'examen (date, prof, temps, cours...).

Enfin, je créé le projet dans AMC (machine virtuelle Linux) et je croise les doigts pour qu'il n'y ait pas d'erreur de compilation :-) Et avec le temps j'en ai de moins en moins. Et comme je suis perfectionniste il me reste à ajuster les questions horizontales qui ne s'afficheraient pas bien sur le pdf.

En conclusion

J'espère que ce long post (qui me permet de formaliser aussi pour des besoins internes) pourra intéresser l'un(e) d'entre vous au moins.
Bien évidemment, je suis ouvert aux questions et aux suggestions car l'expérience de la plupart des acteurs de ce forum surpasse de beaucoup ma pratique.

Je vous joins le fichier TextFactory de BBEdit (fichier XML) et je tiens les autres à la disposition de qui serait intéressé (pour les questions horizontales par exemples).

Encore un grand merci à Alexis pour ce logiciel qui ne cesse de m'épater de jour en jour ! Merci à tous les contributeurs ce ce forum. Bravo !