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.

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}
    \mauvaise{A }%
    \mauvaise{B }%
    \mauvaise{C }%
    \mauvaise{D }%
    \mauvaise{E }%
  \end{reponsesperso}
\end{question}

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

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

  • \exemplaire{1} doit être égal à un.

  • Le nombre de copies doit être à zéro (interface graphique).

  • 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}
    %\usepackage[babel=true,kerning=true]{microtype} (1)
    
    \usepackage[francais,bloc,completemulti]{automultiplechoice}
    \usepackage{csvsimple}
    
    \newcommand{\sujet}{%
    \exemplaire{1}{%
    %\shorthandon{;}
    %%% 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{} \prenom{} :
    
    \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}
    
    \AMCassociation{\id}%association
    %\AMCassociation[\nom-\prenom]{\id} (2)
    
    }%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}
    }
    
    %protection par mot de passe
    %\AMCstudentslistfile{liste.csv}{id} (3)
    
    %%génération des sujets
    \csvreader[head to column names]{liste.csv}{}{\sujet} (4) (5)
    %\shorthandoff{;} (6)
    %\csvreader[head to column names,separator=semicolon]{liste.csv}{}{\sujet} (7)
    
    \end{document}
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. + 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.
2 Option pour inclure le nom de l’élève dans le nom de fichier lors de l’impression.
3 Pour protéger chaque copie avec un mot de passe unique.
4 Utilisez cette commande si le fichier CSV correspond à un des 3 premiers exemples.
5 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.
6 Au lieu d’utiliser \usepackage[babel=true,kerning=true]{microtype}, cette solution est possible pour contourner le problème. Décommentez cette ligne et celle avec \shorthandon.
7 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.

Évaluation par compétences

À partir de la version amc version 170, on peut regrouper les scores de certaines questions et afficher un score partiel (et éventuellement un niveau de réussite) sur les copies annotées et dans l’export ODS, à partir d’une description des questions à agréger dans un fichier topics.yml au format YAML placé dans le répertoire projet.

AMC aura besoin des paquets perl supplémentaires suivants qui doivent donc être installé dans votre environnement : YAML::Syck, Hash::Merge.

Principe

Le format de fichier YAML est très sensible à l’indentation. Vous devez donc bien respecter le nombre d’espaces au début des lignes.

---
preferences:
  clé_niveau_1: valeur

topics:
  - clé_niveau_1: valeur
    clé_niveau_1:
      clé_niveau_2:
        clé_niveau_3: valeur

Exemples de fichiers

Exemple complet

---
preferences:
  odscolumns: level (1)
  skip_indicatives: 0 (2)
  decimal_separator: "," (3)
  answered_only: 1 (4)

topics:
  - text: "Rappel : Ne pas oublier les retenues dans les opérations" (5)
  - id: addition2 (6)
    name: Savoir calculer la somme de deux nombres à deux chiffres (7)
    questions: (8)
      - "add2:*" (9)
      - somme2ch (10)
    annotate_color: "#B22222" (11)
    levels: (12)
      - min: 75 (13)
        message:  très bonne maîtrise (14)
        color: "#1ab407" (15)
        code: 4 (16)
      - min: 50
        message: maîtrise satisfaisante
        color: "#2aea62"
        code: 3
      - min: 25
        message: maîtrise fragile
        color: "#ffad26"
        code: 2
      - message: maîtrise insuffisante
        color: "#ff262c"
        code: 1
    decimals: 0 (17)
    decimalsratio: 2 (18)
    decimalspc: 0 (19)
    floor: 0  (20)
# Commentaire pour aérer le code. (21)
  - id: soustraction2
    name: Savoir calculer la différenc de deux nombres à deux chiffres
    format: "%{name} : %{score}/%{max}" (22)
    questions:
      - "sous2"
      - "sous1"
    annotate_color: "#006c8c"
#
  - text: "-------bilan--------"
  - id: global
    questions: "*"
    value: "ratio:20:0.25" (23)
    decimals: 2 (24)
    decimalspc: 2
    format: | (25)
      %{name} : %{code} %{message}
      Pour les questions %{nums:c} (addition et soustraction), ton score est de  %{score}
      ta note est de %{value}/20
    exclude_questions: (26)
     - bonus
     - question-difficile
#
  - id: aggregate
    name: Valeur agrégée
    aggregate: xxx (27)
    value: xxx (28)
    questions:
      - "*" (29)
1 De nouvelles colonnes (Export ODS (OpenOffice, LibreOffice)) seront affichées avec le texte de chaque <id> et le pourcentage du niveau. Vous pouvez choisir d’afficher la valeur de la variable <code> .
2 Pour tenir compte des questions indicatives dans les pourcentages.
3 Séparteur décimal utilisé dans l’affichage sur les copies annotées.
4 N’affiche pas un topic pour lequels aucune question n’a été traitée.
5 Un texte brut quelconque affiché sans condition de score.
6 L’identifiant de la compétence sans lettes accentuées ou espaces.
7 Le nom complet de la compétence.
8 Les questions reliées à la compétence.
9 Toutes les questions dont l’identifiant commence par add2: sont incluses (voir Identifiant des questions).
10 La question avec l’identifiant somme2ch est incluse (voir Identifiant des questions).
11 Couleur utilisée sur la copie annotée suivant les scores correspondants aux questions.

Si une question n’appartient à aucun id pour lequel l’option annotate_color est renseignée, alors la couleur utilisée sera celle de Annotations color de l’interface. Préférences  Annotation.

12 Les différents niveaux de réussite exprimés en pourcentage.
13 Minimum à atteindre pour ce niveau.
14 Le message affiché sur la copie en fonction du niveau.
15 La couleur du message affiché sur la copie en fonction du niveau.
16 <code> qui pourra être affichée dans les colonne du fichier ods. Voir Export ODS (OpenOffice, LibreOffice) .
17 Nombre de décimales pour un score, 0 par défaut.
18 Nombre de décimales pour une proportion, 2 par défaut.
19 Nombre de décimales pour un pourcentage, 0 par défaut.
20 Valeur plancher. Si le calcul de la valeur obtenue au topic donne une valeur inférieure à la valeur plancher, cette valeur est ramenée à la valeur plancher.
21 Les commentaires commencent par le symbole dièse.
22 La mise en forme de l’affichage (voir Les variables pour les variables disponibles).

Par défaut l’affichage est : format:\'"● %{name}: %{message} (%{value})"

23 La note correspondante sera le ratio multiplié par 20 et arrondi au multiple de 0.25 le plus proche.
24 Changement du nombre de décimales.
25 Pour écrire un texte qui contient plusieurs lignes.
26 Les questions suivantes seront exclues.
27 Voir Fonctions d’aggrégation.
28 Peut prendre plusieurs options : score, ratio, "ratio:a:b". Si laissé vide, le pourcentage sera affiché.
29 Joker qui sélectionne toutes les questions.

Les variables

Valeurs générales relatives au topic :

  • %{id} : id du topic

  • %{name} : nom du topic

Valeurs relatives au score de l’étudiant :

  • %{score} : score atteint par l’étudiant

  • %{max} : score maximal

  • %{ratio} : quotient du score sur le score maximal (entre 0 et 1)

  • %{value} : même chose mais en pourcentage

Valeurs relatives aux questions du topic :

  • %\{nums:s} : liste des numéros de questions

  • %\{nums:c} : liste des numéros de questions, en remplaçant les suites par des intervalles (ex: 2-4 au lieu de 2,3,4)

Valeurs qui proviennent du niveau atteint :

  • %{message}

  • %{code}

  • %{i} : palier

Fonctions d’aggrégation

Les fonctions d’aggrégation des notes disponibles sont les suivantes :

sumscore

on prend la somme des scores, et au dénominateur la somme des scores maximaux.

sumratio

on prend la somme des quotients entre le score de la question et le score maximal pour la question. Au dénominateur, le nombre de questions.

Si on veut que le topic soit égal à la somme des ratios, on prend <value:score>, et si on veut que le topic soit la moyenne des ratios (donc entre 0 et 1), on prend <value:ratio>. Si laissé vide, le pourcentage sera affiché.

minscore

on prend le minimum des scores, et au dénominateur le minimum des scores maximaux aux questions.

Si on veut que le topic soit égal au min des scores on choisit <value:score>, et si on veut que le topic soit égal au rapport des deux, on prend <value:ratio>.

maxscore

on prend le maximum des scores, et au dénominateur le maximum des scores maximaux aux questions.

Si on veut que le topic soit égal au max des scores on choisit <value:score>, et si on veut que le topic soit égal au rapport des deux, on prend <value:ratio>.

maxratio

on prend la valeur maximale du rapport, pour chaque question, entre le score obtenu pour la question et le score optimal pouvant être obtenu pour la question. Avec cette valeur d’aggregate, <value:score> et <value:ratio> donnent la même chose.

minratio

on prend la valeur minimale du rapport, pour chaque question, entre le score obtenu pour la question et le score optimal pouvant être obtenu pour la question. Avec cette valeur d’aggregate, <value:score> et <value:ratio> donnent la même chose .

count(a)

nombre de questions ayant le score <a>.

count(a,b)

nombre de questions ayant le score entre <a> et <b>.

Niveaux communs

On peut définir un ensemble de niveaux qui servira pour plusieurs topics différents, comme dans cet exemple :

---
conf:
  niveauxstandard: (1)
    levels:
      - min: 75
        message: très bonne maîtrise
        color: "#1ab407"
      - min: 50
        message: maîtrise satisfaisante
        color: "#2aea62"
      - min: 25
        message: maîtrise fragile
        color: "#ffad26"
      - message: maîtrise insuffisante
        color: "#ff262c"
    decimals: 2
    decimalsratio: 2
    decimalspc: 0
    floor: 0

topics:
  - id: addition2
    name: Savoir calculer la somme de deux nombres à deux chiffres
    questions:
      - "add2:*"
      - somme2ch
    conf: niveauxstandard (2)
  - id: soustraction2
    name: Savoir calculer la différence de deux nombres à deux chiffres
    format: "%{name} : %{score}/%{max}"
    questions:
      - "sous2:*"
      - "sous1:*"
    conf: niveauxstandard
1 On définit une configuration, nommée niveauxstandard, qui pourra servir à plusieurs topics.
2 Appel de cette configuration.

Inclusion de fichier

Créer un fichier levels.yml qui se trouve dans le répertoire parent du répertoire projet (donc le répertoire commun à tous les projets AMC).

levels.yml
# fichier nommé levels.yml
preferences:
  odscolumns: level
  decimal_separator: ","
#
conf:
  niveauxstandard:
    levels:
      - min: 75
        message: très bonne maîtrise
        color: "#1ab407"
      - min: 50
        message: maîtrise satisfaisante
        color: "#2aea62"
      - min: 25
        message: maîtrise fragile
        color: "#ffad26"
      - message: maîtrise insuffisante
        color: "#ff262c"
    decimals: 2
    decimalsratio: 2
    decimalspc: 2
    floor: 0
Fichier topics.yml du projet
---
include:
  - ../levels.yml

topics:
  - id: addition2
    name: Savoir calculer la somme de deux nombres à deux chiffres
    questions:
      - "add2:*"
      - somme2ch
    conf: niveauxstandard
  - id: soustraction2
    name: Savoir calculer la différence de deux nombres à deux chiffres
    format: "%{name} : %{score}/%{max}"
    questions:
      - "sous2:*"
      - "sous1:*"
    conf: niveauxstandard

Anonymat des copies

En utilisation classique, cette option n’est pas recommandée. Elle nécessite l’utilisation d’un fichier source au format LaTeX, et une version d’AMC supérieure ou égale à amc version 160.

On commencera par activer cette fonctionnalité en cochant la case Préférences  Fonctionnalités  Anonymisation  Afficher le panneau anonymisation.

Principe pour la création des fichiers pdf anonymes

  • Préparer votre sujet (Préparation du sujet).

  • Saisir les copies (Lecture des copies)

  • Dans l’onglet Notation, un nouveau menu est apparu : cliquer sur Anonymiser.

  • Ouvrir pour accéder aux fichier pdf anonymes.

  • Corriger manuellement certaines questions à partir de ces PDF.

  • Transmettre à AMC les notes de ces questions via le fichier csv.

Ces fichiers ne sont pas modifiables et ne doivent pas être saisis pour une correction automatique.

Les commandes utilisables avec l’option d’anonymat

  • \AMCzone[id]

    La commande \AMCzone[id]{code LaTeX} permet de cacher une zone définie.

    Par défaut, la zone \champnom sera invisble après l’anonymisation.

  • \AMCexternalQuestion

    La commande \AMCexternalQuestion{identifiant à choisir}{score maximal} permet de déclarer une question qui sera notée hors AMC, avec un score maximal.

    Lorsque vous utilisez cette commande, vous pouvez gérer librement le numéro de la question et le texte de la question (AMC ne s’en chargera pas).

    Il est impossible de rajouter cette commande après la préparation complète du sujet.

    Lors de l’anonymisation des copies, un fichier csv est créé. Ce fichier devra être rempli avec les notes puis lu par AMC pour continuer avec la correction (voir Correction).