AMC

Correction automatisée de formulaires QCM

Utilisations particulières

Photocopie du sujet

Comme expliqué dans Impression du sujet, il n'est pas toujours possible de photocopier une feuille de réponses pour en donner à plusieurs étudiants. Cependant, dans le cas de l'utilisation de la feuille de réponses séparée, et quand les questions et réponses ne doivent pas être mélangées, il est possible de photocopier le sujet et imprimer les feuilles de réponses séparément. La conduite à suivre pour obtenir un tel résultat est indiquée ici.

  • Utiliser l'option ensemble (voir Options du paquet).

  • Écrire le sujet avant l'utilisation de la commande exemplaire, ou de l'environnement copieexamen.

  • Utiliser la commande \AMCformS pour restituer les cases à cocher sur chaque feuille de réponses, à l'intérieur de exemplaire/copieexamen.

Voici un exemple minimal de fichier LaTeX :

\documentclass[a4paper]{article}
\usepackage[ensemble]{automultiplechoice}
\begin{document}

\noindent{\bf Sujet}

\begin{question}{sum}
  Combien font un plus un ?
  \begin{reponses}
    \mauvaise{1}
    \bonne{2}
    \mauvaise{3}
  \end{reponses}
\end{question}

\begin{question}{k2}
  Quelle est l'altitude du K2?
  \begin{reponses}
    \mauvaise{around 8000m}
    \bonne{around 8600m}
    \mauvaise{around 9000m}
  \end{reponses}
\end{question}

\AMCcleardoublepage

\exemplaire{5}{

\AMCdebutFormulaire

{\large\bf Feuille de r\'eponses :}
\hfill \champnom{\fbox{
    \begin{minipage}{.5\linewidth}
      Nom:

      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}

\AMCformS

}

\end{document}

Correction a posteriori

Supposons que vous souhaitez utiliser une unique feuille de réponses générique pour tous vos examens. Elle contiendra simplement des cases à cocher (par exemple 5 cases par question, et 40 questions). Les sujets des examens seront rédigés à part. Le problème ici est que les bonnes réponses ne sont pas indiquées dans le fichier LaTeX, ce qui fait que AMC ne peut pas les connaître. La solution consiste à demander à l'enseignant de cocher sur une feuille de réponse les bonnes réponses, qui sera transmise à AMC pour qu'il y lise les bonnes réponses.

Pour mettre en œuvre ce schéma de fonctionnement, vous devez :

  • utiliser les options postcorrect, insidebox et noshuffle (voir Options du paquet) ;

  • utiliser \mauvaise pour toutes les réponses (jamais \bonne).

Voici un exemple minimal :

\documentclass[a4paper]{article}
\usepackage{multicol}
\usepackage[insidebox,noshuffle,postcorrect]{automultiplechoice}

\begin{document}

\exemplaire{5}{

\noindent
\begin{tabular}{|l|l|l|}
\hline
num\'ero d'\'etudiant & classe & sujet\\
\hline
 \vspace{-0.25cm}
 & &\\
\AMCcodeGridInt{NumEtud}{10}\hspace*{\fill}&
\AMCcodeGridInt{Classe}{2}\hspace*{\fill}&
\AMCcodeGridInt{Sujet}{3}\hspace*{\fill}
\\
\hline
\end{tabular}
\hfill\namefield{\fbox{
    \begin{minipage}{.25\linewidth}
      Nom :

      \vspace*{.5cm}\dotfill

      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}\hfill


\vspace{.5cm}
\noindent\hrulefill

\begin{multicols}{2}\columnseprule=.4pt

\begin{question}{01}
\begin{reponsesperso}
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\end{reponsesperso}
\end{question}

\begin{question}{02}
\begin{reponsesperso}
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\mauvaise{}%
\end{reponsesperso}
\end{question}

% continuez ici pour ajouter autant de questions que souhaité...

\end{multicols}

}

\end{document}

Après traitement du fichier LaTeX par AMC, imprimez les feuilles de réponses obtenues, faites passer l'examen et demandez à l'enseignant de remplir une feuille. Scannez ensuite les feuilles de réponses, et lancez la saisie automatique dans AMC (y compris de la feuille remplie par l'enseignant). Quand vous cliquez sur Corriger dans l'onglet Notation, en laissant la case Mettre à jour le barème cochée, AMC vous demandera le numéro de la copie remplie par l'enseignant. La suite des opérations est la même que dans le cas standard.

[Note]Note

Vous pouvez aussi écrire les lettres des cases à l'extérieur de celles-ci : utilisez pour cela l'option outsidebox à la place de insidebox, et écrivez vos questions de la façon suivante:

\begin{question}{01}
  \begin{reponsesperso}
    \wrongchoice{A }%
    \wrongchoice{B }%
    \wrongchoice{C }%
    \wrongchoice{D }%
    \wrongchoice{E }%
  \end{reponsesperso}
\end{question}
[Note]Note

Pour utiliser cette option uniquement pour le formulaire de réponse (et non pour la saisie du numéro d'étudiant), vous pouvez définir, juste après le \begin{document}

\makeatletter
\def\setoutsidebox{\AMC@outside@boxtrue}
\makeatother

Puis utiliser cette nouvelle commande localement (à l'intérieur des accolades) dans le formulaire :

{\setoutsidebox\formulaire}

Copies préremplies

Dans certaines situations, il peut être souhaitable de préparer des copies nominatives pour tous les étudiants, à partir d'une liste d'étudiants. La démarche suivante, basée sur l'utilisation du paquet LaTeX csvsimple, permet d'obtenir ce résultat.

  • La liste des étudiants doit être au format CSV. On suppose dans la suite que le fichier liste.csv, placé dans le répertoire du projet, utilise l'encodage UTF8 et est sous la forme suivante :

    nom,prenom,id
    Boulix,Jojo,001
    Golin,André,002
    Moniuszko,Stanisław,003

    ou

    nom,prenom,id,mail
    Boulix,Jojo,001,jojo@boulix.fr
    Golin,André,002,andre@golin.fr
    Moniuszko,Stanisław,003,Moniuszko@Stanisław.fr

    ou

    nom,prenom,id,mail
    Boulix,Jojo,001,"jojo@boulix.fr,tata@boulix.fr"
    Golin,André,002,"andre@golin.fr,golin@andre.fr"
    Moniuszko,Stanisław,003,"Moniuszko@Stanisław.fr,stan@stanislaw.fr"

    ou

    nom;prenom;id;mail
    Boulix;Jojo;001;jojo@boulix.fr,tata@boulix.fr
    Golin;André;002;andre@golin.fr,golin@andre.fr
    Moniuszko;Stanisław;003;Moniuszko@Stanisław.fr,stan@stanislaw.fr
    [Avertissement]Avertissement

    Ne pas utiliser le symbole _ (underscore) dans le nom ou prénom des étudiants. Une erreur de compilation sera affichée.

  • Le sujet LaTeX doit charger le paquet csvsimple, grâce à une ligne

    \usepackage{csvsimple}
  • Dans le fichier source, le sujet doit être défini sous la forme d'une commande LaTeX produisant un seul sujet, qui sera appelée (autant de fois qu'il y a d'étudiants) par la commande \csvreader de la façon suivante  :

    \documentclass[a4paper]{article}
    
    \usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}
    %\usepackage[french]{babel}1
    %\usepackage[babel=true,kerning=true]{microtype}2
    
    \usepackage[francais,bloc,completemulti]{automultiplechoice}
    \usepackage{csvsimple}
    
    \newcommand{\sujet}{%
    \exemplaire{1}{%
    %\shorthandon{;} 3
    %%% debut de l'en-tête des copies :
    
    \noindent{\bf QCM  \hfill TEST}
    
    \vspace*{.5cm}
    \begin{minipage}{.4\linewidth}
      \centering\large\bf Histoire et géographie\\ Examen du 01/01/2008
    \end{minipage}
    \champnom{\fbox{\begin{minipage}{.5\linewidth}
    Nom et prénom :
    
    \vspace*{.5cm}\dotfill
    \vspace*{1mm}
    \end{minipage}}}
    
    %%% fin de l'en-tête
    
    \begin{center}
      \hrule\vspace{2mm}
      \bf\Large Géographie
      \vspace{1mm}\hrule
    \end{center}
    
    \restituegroupe{geographie}
    
    \begin{center}
      \hrule\vspace{2mm}
      \bf\Large Histoire
      \vspace{2mm}\hrule
    \end{center}
    
    \restituegroupe{histoire}
    }%fin commande \exemplaire
    }%fin commande \newcommand
    
    \begin{document}
    
    %%% préparation des groupes
    
    \setdefaultgroupmode{withreplacement}
    
    \element{geographie}{
      \begin{question}{Paris}
        Dans quel continent se situe Paris~?
        \begin{reponses}
          \bonne{L'Europe}
          \mauvaise{L'Afrique}
          \mauvaise{L'Asie}
          \mauvaise{La planète Mars}
        \end{reponses}
      \end{question}
    }
    
    \element{geographie}{
      \begin{question}{Cameroun}
        Quelle est la capitale du Cameroun~?
        \begin{reponses}
          \bonne{Yaoundé}
          \mauvaise{Douala}
          \mauvaise{Abou-Dabi}
        \end{reponses}
      \end{question}
    }
    
    \element{histoire}{
      \begin{question}{Marignan}
        En quelle année a eu lieu la bataille de Marignan~?
        \begin{reponseshoriz}
          \bonne{1515}
          \mauvaise{1915}
          \mauvaise{1519}
        \end{reponseshoriz}
      \end{question}
    }
    
    \element{histoire}{
      \begin{questionmult}{Nantes}
        Que peut-on dire de l'Édit de Nantes~?
        \begin{reponses}
          \bonne{Il a été signé en 1598}
          \bonne{Il a été définitivement révoqué par Louis XIV}
          \mauvaise{Il a été signé par Henri II}
        \end{reponses}
      \end{questionmult}
    }
    
    %%génération des sujets
    \csvreader[head to column names]{liste.csv}{}{\sujet} 4
    %\shorthandoff{;} 5
    %\csvreader[head to column names,separator=semicolon]{liste.csv}{}{\sujet}6
    
    \end{document}
    
            

    Notez l'utilisation de l'option head to column names de \csvreader qui définit des commandes basées sur les en-tête du fichier CSV (ici \nom, \prenom et \id) utilisables dans la production du sujet personnalisé, et l'appel de \AMCassociation qui indique à AMC que la copie produite doit être associée à l'identifiant d'étudiant \id.

    1

    Si vous utilisez un fichier similaire au 4e exemple avec le paquet \usepackage[french]{babel}, le caractère ";" est activé, ce qui interfère avec la détection de ce caractère en tant que séparateur dans le fichier CSV. Pensez à décommenter cette ligne pour l'activer.

    2

    L'astuce est de recourir à microtype pour corriger ce problème (et on peut profiter des avantages de microtype). Pensez à décommenter cette ligne pour l'activer.

    3 5

    Au lieu d'utiliser \usepackage[babel=true,kerning=true]{microtype}, cette solution est possible pour contourner le problème. Décommentez cette ligne.

    4

    Utilisez cette commande si le fichier CSV correspond à un des 3 premiers exemples.

    6

    Utilisez cette commande si le fichier CSV correspond au 4e exemple.

  • Après l'impression, le scan, la saisie automatique et la notation des copies, au moment de l'association des copies avec les étudiants, utiliser la valeur "pré-association" pour le champ Titre du code pour association automatique, et "id" pour le champ Identifiant unique dans cette liste.