octobre
2010
Bonjour !
Si vous avez des enseignants dans votre entourage, vous serez peut-être sollicités (si ce n’est déjà fait) pour créer des questionnaires à choix multiples (QCM). Les QCM constituent un outil commode pour évaluer des élèves ou des étudiants. Ils se présentent sous la forme de questions auxquelles plusieurs réponses possibles sont proposées. En général, une seule de ces réponses est correcte; les autres, appelées distracteurs, visent à éprouver la maîtrise du sujet par les candidats. À ce titre, elles se doivent d’être plausibles.
En règle générale, l’évaluateur souhaite produire deux versions de son questionnaire : une version vierge destinée aux candidats, et une version corrigée, souvent destinée à l’impression sur transparent, pour l’aider dans la correction des copies. Nous allons voir qu’il est possible de satisfaire à toutes ces exigences en utilisant LaTeX sans aucune extension dédiée !
Des paquets
Comme toujours, on commence un document LaTeX par l’écriture de son préambule. Dans le cas qui nous intéresse, nous allons rédiger un questionnaire en français à l’aide de la classe article. Nous avons donc besoin du code suivant :
\documentclass[11pt]{article} \usepackage[utf8]{inputenc} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage{lmodern}
Les cases à cocher seront représentées par des symboles mathématiques, de sorte que nous devons aussi charger les paquets fournis par la société mathématique américaine :
\usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb}
Nous souhaitons en outre utiliser tout l’espace disponible afin de réduire la longueur de l’énoncé. Nous souhaitons donc écrire nos questions sur plusieurs colonnes (paquet multicol
). Nous aurons aussi besoin de personnaliser l’en-tête et le pied de page (paquet fancyhdr
)… et vous verrez plus tard que les macros que nous allons écrire nécessitent le paquet ifthen
:
\usepackage{ifthen} \usepackage{multicol} \usepackage{fancyhdr}
Des macros
Afin de pouvoir passer facilement du mode « énoncé » au mode « corrigé », nous allons définir une variable booléenne correction
et l’initialiser à faux (false
) :
\newboolean{correction} \setboolean{correction}{false}
Nous allons aussi définir un compteur pour les numéros des questions :
\newcounter{QNumber}
Définir une question
Nous allons ensuite écrire une macro \Question
qui permet de définir une nouvelle question. Cette macro reçoit deux arguments : le premier, facultatif, indique quel est le caractère à placer en fin de question (le plus souvent ‘:’, mais on peut aussi trouver un point d’interrogation), et le second n’est autre que la question elle-même. Nous écrivons donc :
\newcommand{\Question}[2][:]{ \stepcounter{QNumber} \noindent\textbf{Question \theQNumber} -- #2~#1 }
Ajouter une liste de choix
Nous allons aussi définir un environnement Reponse
pour permettre d’entrer les différents choix proposés à la sagacité des candidats :
\newenvironment{Reponse}{ \begin{list}{$\square$}{\leftmargin=5em} }{ \end{list}\vspace{1em} }
Proposition correcte et distracteurs
Il ne nous reste plus qu’à définir la macro \Vrai
(resp. \Faux
) pour ajouter une proposition vraie (resp. fausse) :
\newcommand{\Vrai}{ \item[\ifthenelse{\boolean{correction}}{$\blacksquare$}{$\square$}]} \newcommand{\Faux}{\item[$\square$]}
Vous remarquerez que le symbole utilisé par la macro \Vrai dépend de l’état de la variable booléenne correction. De cette façon, si correction est égal à true, les réponses justes seront marquées par un carré plein, ce qui révèle la correction du questionnaire.
En-tête et pied de page
On souhaite ajouter en en-tête de la première page des champs permettant au condidat d’indiquer son nom et son prénom :
\chead{\ifthenelse{\thepage=1}{ \textbf{Nom :} \makebox[12em]{\dotfill} \hspace{2em} \textbf{Prénom :} \makebox[12em]{\dotfill}}{}}
Si les questions continuent au verso, on veut que le recto de la première page se termine par la mention « Tournez la page s’il vous plaît » :
\rfoot{\ifthenelse{\thepage=1}{\textit{(tournez la page s.v.p)}}{}}
Je laisse au lecteur le soin de généraliser ceci à toutes les pages impaires dans le cas d’un questionnaire comportant plus de deux pages pleines.
Compilation du document
Pour compiler votre document et produire un fichier PDF, il vous suffit d’utiliser la commande pdflatex qcm.tex. En changeant la valeur du booléen correction
, vous obtenez ainsi un énoncé et un corrigé. Le code source est disponible ici.
Cordialement,
Cacophrène
Bonjour,
Merci pour le commentaire.
Effectivement LaTeX permet de créer toutes sortes de documents sans trop de difficulté, et pas seulement des pavés de texte.
Sympa cet article.
J’utilise latex pour mettre en forme des textes mais j’ignorais qu’on pouvait l’utiliser pour faire ce genre de chose.
Salut,
Merci pour ton commentaire.
Certes oui je pourrais rappeler le lien vers cet éditeur… mais son développement stagne et je ne suis pas encore arrivé à quelque chose de vraiment satisfaisant.
Je préfère le garder pour plus tard
Je crois me souvenir que tu as un projet d’éditeur pour LaTeX
Mais j’avoue avoir oublié les références, tu peux très bien les rappeler aux lecteurs de ton blog, on ne combat pas activement l’autopromotion, bien au contraire.