Rédiger des sujets d’examen avec LaTeX

Étant à la fois $latex \LaTeX$ nazi et enseignant, je rédige bien sûr mes sujets d’examen sous $latex \LaTeX$. Le mieux pour ce faire est d’utiliser la bien nommée classe exam.

Exemple minimal

La structure la plus élémentaire se compose ainsi :

\documentclass{exam}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage{lmodern}
 
\title{Whatever}
 
\begin{document}
	\maketitle
	\begin{questions}
		\question[1] Première question
		\question[\half] Deuxième question		
	\end{questions}
\end{document}

On obtient donc ceci :


Vous l’aurez compris, dans l’environnement questions, la commande de base est \question, à laquelle on peut passer en option le nombre de points. Comme vous le voyez dans mon exemple précédent, \half permet de mettre les demi-points sous forme fractionnelle.

Récapitulatif des points par question

Si vous souhaitez afficher un tableau qui détaille la répartition complète des points, il faut alors ajouter l’option addpoints à la classe :

\documentclass[addpoints]{exam}

puis utiliser la commande \gradetable à l’endroit où vous souhaitez faire figurer le récapitulatif. Après deux compilations, celui-ci ressemble à ça :

Par défaut, cette table est verticale. Pour l’avoir sous forme horizontale, il suffit d’ajouter l’option « h » à \gradetable.

Vous noterez que le terme « Score » est plutôt inapproprié dans la langue des non-gamers. Vous utiliserez donc la commande suivante pour remettre $latex \LaTeX$ dans le droit chemin :

\vsword{Note}

Et pour la variante horizontale du tableau :

\hsword{Note}

Afficher (ou non) les solutions

Si vous avez l’intention de rédiger un corrigé de l’examen, c’est vers l’environnement solution qu’il faudra se tourner. Celui-ci se place juste après chaque question et contient la solution complète de chacune d’elles.

Par défaut, les solutions sont cachées (malin !), il faut donc ajouter l’option answers à la classe pour les afficher. Ceci permet de créer très facilement une version enseignant et une version étudiants à votre document.

Exemple :

\question[1] Soient $a$ et $b$ deux réels. Rappeler le développement de $\sin(a-b)$.
	\begin{solution}
		\begin{equation*}
			\sin\left(a-b\right)=\sin a \cos b-\cos a \sin b
		\end{equation*}
	\end{solution}

Rendu (avec l’option answers) :

Sous-questions

Il est possible de détailler une question en plusieurs sous-questions grâce à l’environnement parts :

\question[1] Rappeler les valeurs de :
\begin{parts}
	\part $\cos(\pi/3)$
	\part $\sin(\pi/3)$
	\part $\cos(\pi/4)$
	\part $\sin(\pi/4)$
\end{parts}

Espace libre pour les réponses

Pour laisser de l’espace entre les questions (pour laisser à l’élève la possibilité de répondre sur le document), il suffit d’utiliser la commande \vspace{<longueur de l'espace>}.

QCM

Pour proposer différentes solutions à une question, le plus simple est d’utiliser la commande \choice au sein de l’environnement choices :

\question[1] La fonction $\sin$ est :
	\begin{choices}
		\choice $2\pi$-périodique
		\choice paire
		\choice impaire
	\end{choices}


Toutefois, si c’est pour mettre dans un document réponse, peut-être préférerez-vous l’environnement checkboxes en lieu et place de choices :

Pour aller plus loin

La classe exam dispose de nombre d’options, parmi lesquelles j’ai fait une partiale sélection pour la synthèse de ce billet. Pour en découvrir plus, je vous invite donc à consulter la doc en ligne.

Par ailleurs, si vous souhaitez générer des QCM avec correction automatique (depuis des scans), allez donc voir du côté d’AMC (pas encore testé, mais ça semble pas mal du tout).