# Auto Multiple Choice

Conception et correction automatisée de QCM.

AMC est un ensemble d'utilitaires permettant l'utilisation de QCM rédigés en texte simple ou en LaTeX et leur correction automatique à partir des scans des copies des étudiants, grâce à une reconnaissance optique de marques (OMR). Le présent document décrit son utilisation (pour la version @/PACKAGE_V_DEB/@~svn @/PACKAGE_V_SVN/@).

Le projet AMC est hébergé par Gna ! : vous retrouverez son site internet à l'adresse http://home.gna.org/auto-qcm/, et la page d'hébergement du projet à l'adresse https://gna.org/projects/auto-qcm/.

Alexis

    paamc@passoire.fr

Bienvenüe
Abel Benjamin Paragraphes concernant l'usage de tikz et de lualatex.
2008-2012 Alexis Bienvenüe

Ce document peut être utilisé selon les termes de la Licence publique générale de GNU version 2 ou suivante.

## Licence

Le programme Auto Multiple Choice est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la “GNU General Public License” telle que publiée par la Free Software Foundation : soit la version 2 de cette licence, soit (à votre gré) toute version ultérieure.

Ce programme est distribué dans l’espoir qu’il vous sera utile, mais SANS AUCUNE GARANTIE : sans même la garantie implicite de COMMERCIALISABILITÉ ni d’ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence Générale Publique GNU pour plus de détails. Vous devriez avoir reçu une copie de la Licence Générale Publique GNU avec ce programme ; si ce n’est pas le cas, consultez : http://www.gnu.org/licenses/.

## Prérequis

### Système d'exploitation

Les utilitaires AMC sont pour l'instant écrits pour Linux. Ils devraient pouvoir être adaptés à MAC OS X ou Windows sans trop de difficulté, mais je n'ai pas prévu de le faire dans un avenir proche. N'hésitez pas à me contactez si vous souhaitez le faire : j'essayerai de vous aider et j'intègrerai les changements nécessaires dans AMC.

### Logiciels

Si vous installez AMC à l'aide d'un paquet debian (sur une distribution debian, ubuntu ou dérivés) ou RPM (distribution Mandriva, openSUSE, Fedora), tout ce dont AMC a besoin sera automatiquement installé.

Les paquets/logiciels principaux requis pour l'utilisation d'AMC sont les suivants :

- LaTeX

- ImageMagick

- Perl, ainsi que Gtk2-Perl et Glade::XML pour l'interface graphique

#### Versions conseillées pour les logiciels utilisés par AMC

Quelques anciens bugs des logiciels utilisés par AMC sont particulièrement préjudiciables à son bon fonctionnement :

- Avec d'anciennes versions de Net::CUPS (paquet debian libnet-cups-perl), la demande d'impression du sujet provoque la fermeture prématurée de toute l'interface graphique d'AMC. Ce bug a été corrigé à partir de la version 0.61 de Net::CUPS.

- Avec d'anciennes versions de ImageMagick, le regroupement des pages corrigées en un fichier PDF par étudiant ne fonctionne pas dans le cas où ces copies comprennent plusieurs pages. Ce bug a été corrigé à partie de la version 6.5.5 de ImageMagick.

### LaTeX

À parti de la version 1.1.0 d'AMC, il n'est plus nécessaire de rédiger ses sujets de QCM en LaTeX (voir ). Cependant, ceci est toujours possible et permet une extraordinaire liberté dans la conception des sujets. Par ailleurs, les modèles fournis permettent à ceux qui ne sont pas réfractaires aux formats de documents du type LaTeX/XML/HTML d'écrire assez rapidement leurs premiers formulaires en LaTeX.

## Notes d'utilisation

### Limitations numériques

Dans la version actuelle (à partir de la version 0.156), le nombre de copies est limité à 4095 et le nombre de pages par copies est limité à 63.

Le nombre de réponses proposées pour une même question est limité à 199.

Par ailleurs, les limitations de LaTeX pourront bloquer la compilation avant ces limites (erreur du type « No room for a new \toks »). Dans ce cas, essayez en utilisant le package etex, grâce à la commande `\usepackage{etex}`.

### Versions

Même si cela ne devrait pas avoir trop de conséquences, il vaut mieux essayer de ne pas changer de version du programme en cours d'utilisation pour un projet donné (entre le moment où les copies sont imprimé et le moment où les notes sont calculées et les copies annotées). Il existe quelques modifications qui risquent de perturber le fonctionnement d'AMC si vous les appliquez au cours de la gestion d'un projet :

- Si vous avez compilé et imprimé un sujet avec une version d'AMC égale ou inférieure à 0.155, et que vous continuez la gestion du projet avec la version 0.156 ou postérieure, ajoutez l'option `versionA` dans l'appel au paquet automultiplechoice dans le fichier LaTeX. Exemple :

      \usepackage[bloc,completemulti,versionA]{automultiplechoice}

- À partir de la version 0.262, le dessin des cases à cocher est différent, légèrement plus gros, ce qui risque de modifier la disposition de vos sujets.

- À partir de la version 0.267, si vous souhaitez produire vos sujets en format A4, vous devez l'indiquer explicitement dans le sujet LaTeX :

      \documentclass[a4paper]{article}

- À partir de la version 0.345, les commandes `\AMCformulaireQuestion` et `\AMCformulaireReponse` ont été renommées respectivement `\AMCformQuestion` et `\AMCformAnswer`.

- À partir de la version 0.394, vous devez indiquer explicitement si vous utilisez le paquet LaTeX graphicx (dans les versions précédentes, il était chargé par AMC).

- La commande `\AMCcode` a été réécrite au passage à la version 0.518. La nouvelle version est plus propre et mieux configurable, mais vous aurez sans doute à adapter légèrement votre code LaTeX pour que le résultat reste semblable.

- À partir de la version 1.1.0, le stockage de toutes les informations manipulées par AMC se fait dans des bases de données SQLite, au lieu des multiples fichiers XML utilisés par les versions précédentes. Lors de l'ouverture d'un projet créé par une version antérieure, AMC transforme toutes ces données dans le nouveau format, mais conserve les anciens fichiers XML.

### Installation

Sur un système debian ou Ubuntu ou dérivés, Mandriva, openSUSE ou Fedora, l'installation est facilitée par l'utilisation des paquets deb et RPM contenant AMC. La procédure d'installation est décrite sur le site d'AMC.

Vous pouvez aussi télécharger l'archive des sources dans l'espace de téléchargement du projet, puis utiliser les commandes suivantes dans un terminal :

    tar xvzf auto-multiple-choice_xxxx_precomp.tar.gz
    cd auto-multiple-choice-xxx
    make
    sudo make install

### Accès

Une fois installé, l'interface graphique peut être appelée en choisissant Applications Éducation Auto Multiple Choice dans le menu général de Gnome (ou son équivalent dans KDE ou autre), mais on peut aussi utiliser la commande `auto-multiple-choice`.

## Source au format AMC-TXT

Pour les utilisateurs qui ne souhaitent pas se mettre à LaTeX, AMC embarque un filtre qui rédige pour vous le fichier LaTeX à partir d'une représentation en texte simple de votre questionnaire. Ce format est appelé AMC-TXT, et ce chapitre détaille la syntaxe à utiliser. Si vous souhaitez profiter de la puissance de LaTeX pour la rédaction de vos questionnaires, passez au chapitre suivant.

Commençons par un exemple simple de fichier source utilisable par AMC :

    # AMC-TXT source
    PaperSize: A4
    Lang: FR
    Title: Mon premier questionnaire

    Presentation: Veuillez répondre aux questions
    ci-dessous du mieux que vous pouvez.

    * Quelle est la capitale du Cameroun ?
    + Yaoundé
    - Douala
    - Kribi

    ** Parmi les nombres suivants,
    lesquels sont positifs ?
    + 2
    - -2
    + 10

Le fichier qui contient la description de votre sujet doit être codé en UTF-8. C'est le codage par défaut de plusieurs éditeurs de texte, dont fait partie `gedit` par exemple. N'utilisez pas d'éditeur de texte permettant d'appliquer des mise en forme à votre texte, comme OpenOffice/LibreOffice ou abiword : ils n'enregistrent pas seulement votre texte, mais beaucoup d'autres informations de mise en forme qu'AMC ne sait pas lire...

La police de caractères qui sera utilisée par défaut pour votre questionnaire est la police libertine. C'est une police libre qui définit un très grand nombre de caractères de toutes langues. Cette police doit être installée sur votre système pour que votre sujet puisse être préparé (c'est le cas si vous installez AMC sur debian ou Ubuntu avec les paquets qu'il recommande).

Vous remarquez dès maintenant la structure du fichier de description du questionnaire : il commence par quelques définitions ou options générales de mise en forme, puis viennent les questions.

### Commentaires

Vous pouvez écrire des commentaires dans votre fichier AMC-TXT sur des lignes commençant par le caractère `#`. Ces lignes seront tout simplement ignorées par AMC.

### Options générales

Voici les options que vous pouvez utiliser au début de votre fichier (dans n'importe quel ordre) :

PaperSize:

  Indique le format de papier utilisé. Parmi les valeurs possibles, on trouve `A3`, `A4`, `A5`, `A6`, `B3`, `B4`, `B5`, `B6`, `letter`, `legal`, `ANSIA`, `ANSIB`, `ANSIC`, `ANSID`, `ANSIE`.

Lang:

  donne la langue dans laquelle le questionnaire est écrit. Pour l'instant, les seules langues disponibles sont FR (français), ES (espagnol), DE (allemand), IT (Italien), NL (Néerlandais), NO (Norvégien), JA (Japonais, voir ) et AR (arabe, voir ). Si vous n'utilisez pas cette option, ce sera l'anglais qui sera choisi.

Title:

  Le titre de l'examen, qui sera écrit en haut de la copie.

Presentation:

  Un texte introductif pour l'examen, présentant par exemple la durée, les consignes...

ShuffleQuestions:

  Si cette option est mise à 1 (c'est la valeur par défaut), les questions ne seront pas dans le même ordre dans chaque copie. Si vous lui donnez la valeur 0, les questions ne seront pas mélangées.

Code:

  Affectez à cette option une valeur entière n (par exemple 8) pour demander la présence de cases à cocher pour que les étudiants codent leur numéro d'étudiant sur n chiffres.

Columns:

  Si vous donnez à cette option une valeur n entière supérieure à 1, le questionnaire sera écrit sur n colonnes.

CompleteMulti:

  Cette option prend la valeur 1 par défaut, ce qui signifie qu'une réponse "Aucune des réponses ci-dessus n'est correcte" sera ajoutée à la fin de toutes les questions multiples de votre questionnaire. Sans celle-ci, il serait impossible de faire la différence entre "l'étudiant ne répond pas à cette question" et "l'étudiant pense qu'aucune des réponses proposées n'est exacte". Si vous ne souhaitez pas que cette dernière réponse soit ajoutée, donnez la valeur 0 à cette option.

L-None:

  Cette option indique un texte qui remplacera Aucune des réponses ci-dessus n'est correcte (voir option précédente) pour votre questionnaire.

QuestionBlocks:

  Si cette option prend la valeur 1 (sa valeur par défaut), toutes vos questions seront enfermées dans des boîtes (invisibles), de sorte qu'elles ne puissent pas être coupées sur deux pages, ou sur plusieurs colonnes. Avec la valeur 0, les questions pourront être coupées ci besoin, ce qui peut gagner de la place mais perd en lisibilité.

L-Question:

  Cette option sert à remplacer le mot Question dans votre questionnaire si vous utilisez une autre langue que celle indiquée par l'option `Lang`.

L-Name:

  Cette option sert à remplacer le texte Nom et prénom inscrit dans le cadre où l'étudiant doit inscrire son identité.

L-Student:

  Cette option sert à remplacer le petit texte qui demande de coder son numéro d'étudiant et d'inscrire son nom sur les copies (quand l'option `Code` a été utilisée).

ManualDuplex:

  Avec la valeur 1 (ce n'est pas la valeur par défaut), chaque sujet sera constitué d'un nombre pair de pages, de telle sorte que tous les sujets pourront être imprimés manuellement à partir du fichier PDF sujet en mode recto/verso (sans l'utilisation de cette option, le début d'une copie pourraît être sur le verso de la fin de la copie précédente).

SingleSided:

  Avec la valeur 1 (ce n'est pas la valeur par défaut), aucune page blanche ne sera ajoutée entre le sujet et la feuille de réponses séparée, même si le sujet comporte un nombre impair de pages. Ceci peut être utile quand les sujets sont imprimés en recto simple, ou quand il n'est pas nécessaire de séparer physiquement le sujet de la feuille de réponses.

BoxColor:

  Permet de choisir une couleur pour les cases qui peuvent être cochées par les étudiants, afin de perturber le moins possible la saisie automatique à partir des scans (red, pour rouge, est une valeur commune, mais on peut aussi penser à un gris clair). La couleur fournie doit être une couleur valide pour `xcolor` (voir la documentation du paquet LaTeX `xcolor` pour plus de détails), comme red, magenta, pink, lightgray, cyan, ou bien sous la forme `#RRGGBB`, comme `#FFBEC8` pour un rouge clair.

DefaultScoringS:

  Donne la barème par défaut pour les questions simples (Reportez-vous à pour la description des barèmes possibles). La valeur par défaut à cette option est le barème qui donne un point à la bonne réponse, et zéro aux autres.

DefaultScoringM:

  Donne le barème par défaut pour les questions multiple (Reportez-vous à pour la description des barèmes possibles). La valeur par défaut de cette option est `haut=2`, ce qui correspond à un barème donnant deux points pour une réponse parfaitement exacte, et qui enlève un point à chaque erreur (case cochée alors qu'elle ne devrait pas l'être, ou case non-cochée alors qu'elle devrait l'être), sans passer en-dessous de zéro.

LaTeX:

  Si cette option prend la valeur 1, tous les textes de votre questionnaire sont considérés comme étant écrits en TeX (ou LaTeX). Vous pourrez ainsi écrire des formules mathématiques comme `$\sqrt{a+b}$`. Avec la valeur 0 (valeur par défaut), vos textes seront reproduits sans modification.

LaTeX-Preambule:

  Donne des commandes LaTeX à ajouter dans le préambule (par exemple des `\usepackage`).

LaTeX-BeginDocument:

  Donne des commandes LaTeX à ajouter au début de l'environnement `document` (par exemple des définitions de macros).

Disable:

  Donne une liste de convertisseurs à désactiver, séparés par des virgules. Les convertisseurs disponibles sont `images` (voir ), `embf` (voir ) et `local_latex` (voir ).

#### Sujet avec feuille de réponses séparée

Dans le cas d'un sujet avec feuille de réponses séparée, vous pourrez considérer l'emploi des options suivantes :

SeparateAnswerSheet:

  Donner la valeur 1 à cette option pour obtenir une feuille de réponses séparée.

AnswerSheetTitle:

  Donne le titre à inscrire en tête de la feuille de réponse.

AnswerSheetPresentation:

  Donne le texte de présentation de la feuille de réponse. On pourra par exemple y préciser que les réponses doivent uniquement être données sur cette feuille.

AnswerSheetColumns:

  Nombre de colonnes pour la feuille de réponses.

### Questions

Les questions simples (qui acceptent une et une seule bonne réponse) commencent par un `*` en début de ligne, et les questions multiples (celles qui peuvent comporter zéro, une ou plusieures bonnes réponses), commencent par un `**` en début de ligne. Vient ensuite le texte de la question, puis les réponses, introduites par un `+` quand la réponse est correcte ou un `-` quand elle ne l'est pas.

#### Options pour les questions

Des options particulières peuvent être indiquées pour chaque question, entre crochets, juste après l'étoile (ou les deux étoiles pour des questions multiples) qui commence la question (sans espace avant), comme dans l'exemple suivant :

    *[ordered,horiz,name=addition] Combien font
    un plus un ?
    - 0
    - 1
    + 2

Les options disponibles sont les suivantes :

horiz

  Avec cette option, les réponses se suivront horizontalement plutôt que verticalement une par ligne.

columns=n

  Avec cette option, les réponses seront réparties sur n colonnes.

ordered

  Avec cette option, les réponses ne seront pas mélangées dans chaque copies : elles resteront toujours dans l'ordre indiqué.

id=xxxx

  Avec cette option, le nom xxxx sera donné à la question. Ce nom apparaît dans les fichiers de notes exportés par AMC pour identifier la question plus facilement. Il ne doit comporter que des caractères simples non accentués.

  `name` a le même rôle que l'option `id`. Cette option est présente pour assurer la compatibilité avec d'anciennes versions, préférez l'utilisation de `id`.

indicative

  Indique que le score affecté à cette question ne sera pas pris en compte pour le score final de l'étudiant.

#### Barèmes particuliers

Si vous voulez utiliser un barème particulier pour une question ou une réponse, vous pouvez l'indiquer entre accolades, après le signe `*`, `**`, `+`, ou `-`, et après les éventuelles options, comme dans l'exemple suivant. Reportez-vous à pour la syntaxe de description des barèmes à utiliser.

    *{b=2,m=-1} Quelle est la capitale de la France ?
    + Paris
    - Lille
    -{-2} Ouagadougou

    **[ordered,horiz,name=positifs]{haut=1} Parmi les nombres suivants,
    lesquels sont positifs ?
    - -2
    + 2
    + 10

#### Questions ouvertes

Les questions peuvent être transformées en questions ouvertes en indiquant des options (voir ) entre `<` et `>`, comme dans l'exemple suivant :

    *<lines=4> Décrivez la lune.
    -[O]{0} O
    -[P]{1} P
    +[V]{2} V

Lors de l'utilisation de questions ouvertes, les options générales suivantes peuvent être intéressantes :

L-OpenText:

  Texte à ajouter après les questions pour demander aux étudiants d'écrire la résponse sur la feuille de réponses séparée (dans le cas où celle-ci est utilisée).

L-OpenReserved:

  Texte (court) à ajouter à côté des cases à cocher des questions ouvertes, indiquant aux étudiants que ces cases sont réservées aux correcteurs.

### Lignes multiples

Tout texte peut se continuer sur la ou les lignes suivantes (même si certaines sont vides), pourvu qu'elles ne puissent pas être interprétées comme un début de définition d'option générale, un début de question ou de réponse. Considérons par exemple l'écriture de question suivante :

    * Combien font 2
      + 2 ?
    - 0
    + 4
    - 10

Cette écriture suit bien la syntaxe AMC-TXT, mais ne correspond pas à ce que l'on voulait écrire : ici, la deuxième ligne sera considérée comme une réponse possible, et non comme la suite de la question !

Un problème similaire sera rencontré dans la portion de fichier source suivante, où "`Chopin:`" sera considéré comme une définition d'option générale :

    * Vous connaissez sans doute Frédéric
      Chopin: c'est un compositeur. De quel pays est-il
      originaire ?
    + la Pologne
    - le Vénézuela
    - la Suisse

La version correcte est la suivante :

    * Vous connaissez sans doute Frédéric Chopin:
      c'est un compositeur. De quel pays est-il
      originaire ?
    + la Pologne
    - le Vénézuela
    - la Suisse

Notez enfin que pour passer à la ligne suivante, il faut laisser une ligne vide dans le fichier source de l'examen, comme ceci :

    Description: Titre

    Description de l'examen sur la ligne suivante.

    ** Question difficile.

    Combien y a-t-il d'étoiles dans le ciel ?

    - une
    - deux
    - dix millions

### Gras, italique

Les parties du textes à écrire en gras devront être entourées de `[*` et `*]`. Les parties à mettre en italique devront être entourées de `[_` et `_]`.

    ** Choisissez parmi les expressions suivantes celles
       où le mot en italique est [*un adjectif*].
    + Une balle [_bleue_]
    - Un [_livre_] rose
    + Quelle [_belle_] histoire !

### Inclusion d'images

Vous pouvez inclure des images dans votre document suivant la syntaxe suivante :

    ![height=2cm]images/oiseau.png!

Dans cet exemple, l'image `images/zozo.png` située dans le répertoire du projet sera insérée avec une hauteur de 2cm. Les options que l'on peut utiliser entre les crochets sont celles de la commande LaTeX `\includegraphics` (par exemple, width=1cm, ou keepaspectratio). Pour obtenir une image centrée sur une ligne et ayant pour largeur les trois quards de la ligne, on utilisera de même :

    !{center}[width=.75\linewidth]images/carte.pdf!

### Petits morceaux de LaTeX

Vous pouvez inclure quelques segments de code LaTeX dans votre description en les incluant entre des double crochets, comme dans l'exemple suivant :

    Les questions marquées d'un [[\multiSymbole{}]] peuvent avoir zéro, une ou plusieurs bonnes réponses.

### En langue arabe

La rédaction d'un questionnaire en langue arabe comporte quelques spécificités. Vous utiliserez bien entendu l'option

    Lang: AR

Mais vous devrez également prêter attention aux options suivantes :

ArabicFont:

  C'est la police de caractères qui sera utilisée pour les textes en arabe. Par défaut, AMC utilisera Rasheeq, une police du projet ArabEyes (disponible dans la paquet ttf-arabeyes sur debian et ubuntu par exemple).

Pour un meilleur fonctionnement et une meilleure portabilité, vous devrez également spécifier explicitement la valeur des options `L-Name` et `L-Student`.

Pour pouvoir insérer des textes en d'autres caractères dans votre questionnaire, vous devrez utiliser l'option `LaTeX` pour passer en mode LaTeX, et englober toutes les portions de texte en caractères non-arabes par la commande LaTeX `\textLR` comme dans `\textLR{la commande xelatex}`.

### En japonais

Vous pourrez construire des questionnaires incluant des caractères japonais grâce à l'option

    Lang: JA

AMC fera les ajustements nécessaires pour permettre un bon rendu de ces caractères.

Dans ce cas, AMC utilisera `pTex` comme moteur LaTeX. Une version récente de `pTex` est nécessaire. La distribution texlive 2009, disponible par exemple sur certaines anciennes versions de distributions linux, n'est pas suffisante.

## Source au format LaTeX

Ce paragraphe détaille la rédaction en LaTeX d'une questionnaire à choix multiples utilisable par AMC. Si vous avez choisi un autre format de fichier source, vous pouvez passer directement au chapitre suivant.

Un questionnaire à choix multiples peut être décrit sous la forme d'une fichier LaTeX utilisant le package automultiplechoice. Vous pouvez à tout moment tester le fichier LaTeX que vous êtes en train de concevoir en le compilant avec la commande `latex` puis en visualisant le fichier dvi qui en résulte.

Nous commençons par quelques exemples qui permettent d'appréhender rapidement la construction de fichiers LaTeX de QCM ; les fichiers tex de ces exemples sont fournis avec AMC sous la forme de modèles utilisables en créant un nouveau projet de QCM à partir d'un de ces modèles.

### Un exemple simple

    \documentclass[a4paper]{article}

    \usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage[francais,bloc,completemulti]{automultiplechoice}
    \begin{document}

    \exemplaire{10}{

    %%% debut de l'en-tête des copies :

    \noindent{\bf QCM  \hfill TEST}

    \vspace*{.5cm}
    \begin{minipage}{.4\linewidth}
    \centering\large\bf Test\\ Examen du 01/01/2008\end{minipage}
    \champnom{\fbox{
                    \begin{minipage}{.5\linewidth}
                      Nom et prénom :

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

    \begin{center}\em
    Durée : 10 minutes.

      Aucun document n'est autorisé.
      L'usage de la calculatrice est interdit.

      Les questions faisant apparaître le symbole \multiSymbole{} peuvent
      présenter zéro, une ou plusieurs bonnes réponses. Les autres ont
      une unique bonne réponse.

      Des points négatifs pourront être affectés à de \emph{très
        mauvaises} réponses.
    \end{center}
    \vspace{1ex}

    %%% fin de l'en-tête

    \begin{question}{prez}
      Parmi les personnalités suivantes, laquelle a été présidente de la république française~?
      \begin{reponses}
        \bonne{René Coty}
        \mauvaise{Alain Prost}
        \mauvaise{Marcel Proust}
        \mauvaise{Claude Monet}
      \end{reponses}
    \end{question}

    \begin{questionmult}{pref}
      Parmi les villes suivantes, lesquelles sont des préfectures~?
      \begin{reponses}
        \bonne{Poitiers}
        \mauvaise{Sainte-Menehould}
        \bonne{Avignon}
      \end{reponses}
    \end{questionmult}

    \clearpage

    }

    \end{document}

Quelques précisions sur cet exemple :

Les deux paquets inputenc et fontenc permettent d'écrire le texte du questionnaire en utilisant l'encodage ISO-8859-1 (latin1). Vous pouvez bien entendu les modifier suivant l'encodage que vous utilisez.

Les options utilisées ici pour le paquet LaTeX automultiplechoice permettent d'éviter le changement de page à l'intérieur des questions (`bloc`) et de compléter automatiquement chaque question multiple par une réponse type permettant à l'étudiant d'indiquer qu'il considère qu'aucune des réponses proposées n'est exacte (`completemulti`).

La commande `exemplaire` permet de fabriquer autant d'exemplaires (différents) du questionnaire QCM que l'on souhaite (ici, 10). Voir pour une syntaxe alternative utilisant un environnement.

Les lignes qui commencent ici permettent la mise en forme de l'en-tête de chaque copie.

La commande `champnom` permet d'indiquer la partie du questionnaire dans laquelle chaque étudiant inscrira son nom.

Les environnements `question` et `reponses` permettent de fabriquer une question à choix multiples pour laquelle une unique réponse est correcte. Il faut indiquer un identifiant unique de la question (ici : prez).

Les environnements `questionmult` et `reponses` permettent de fabriquer une question pouvant avoir zéro, une ou plusieurs bonnes réponses. L'étudiant est donc invité à cocher toutes les cases correspondant aux réponses qu'il pense correctes, ou la dernière case (ajoutée automatiquement grâce à l'option `completemulti` passée au paquet en ligne 6).

La commande `clearpage` permet de passer à la page suivante pour le début de la copie suivante.

Cette fermeture d'accolade marque la fin de la commande `exemplaire` (débutée à la ligne 9).

### Un exemple avec groupes de questions mélangées

Dans cet exemple, on veut que l'ordre dans lequel les questions sont posées soit différent d'une copie à l'autre, tout en laissant ensemble les questions traitant du même sujet. On va donc créer deux groupes de questions, et les mélanger lors de la fabrication de chaque copie.

    \documentclass[a4paper]{article}

    \usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage[francais,bloc,completemulti]{automultiplechoice}
    \begin{document}

    %%% préparation des groupes

    \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}
    }

    %%% fabrication des copies

    \exemplaire{10}{

    %%% 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}

    \melangegroupe{geographie}
    \restituegroupe{geographie}

    \begin{center}
      \hrule\vspace{2mm}
      \bf\Large Histoire
      \vspace{2mm}\hrule
    \end{center}

    \melangegroupe{histoire}
    \restituegroupe{histoire}

    \clearpage

    }

    \end{document}

### Un exemple avec une feuille de réponses séparée

Dans cet exemple, on souhaite que les cases à cocher soient toutes rassemblées sur une feuille à part. De cette manière, la triche entre étudiants est plus difficile, et surtout, il suffira de scanner une seule page par étudiant, ce qui allège la tâche de l'enseignant dans le cas où son matériel ne lui permet de scanner les copies que de manière manuelle. Dans cet exemple, le nombre de questions est réduit : elles tiennent toutes sur une page et il serait donc inutile d'utiliser une telle mise en page dans ce cas précis. À vous de modifier cette base pour utiliser cette mise en page avec de nombreuses questions !

    \documentclass[a4paper]{article}

    \usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage[francais,bloc,completemulti,ensemble]{automultiplechoice}
    \begin{document}

    \AMCrandomseed{1237893}

    \def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par {\sc Question #1 :} }

    \element{general}{
      \begin{question}{prez}
        Parmi les personnalités suivantes, laquelle a été présidente de la république française~?
        \begin{reponses}
          \bonne{René Coty}
          \mauvaise{Alain Prost}
          \mauvaise{Marcel Proust}
          \mauvaise{Claude Monet}
        \end{reponses}
      \end{question}
    }

    \element{general}{
      \begin{questionmult}{pref}
        Parmi les villes suivantes, lesquelles sont des préfectures~?
        \begin{reponses}
          \bonne{Poitiers}
          \mauvaise{Sainte-Menehould}
          \bonne{Avignon}
        \end{reponses}
      \end{questionmult}
    }

    \element{general}{
      \begin{question}{nb-ue}
        Combien d'états sont membres de l'Union Européenne en janvier 2009 ?
        \begin{reponseshoriz}[o]
          \mauvaise{15}
          \mauvaise{21}
          \mauvaise{25}
          \bonne{27}
          \mauvaise{31}
        \end{reponseshoriz}
      \end{question}
    }

    \exemplaire{5}{

    %%% debut de l'en-tête des copies :

    \noindent{\bf QCM  \hfill TEST}

    \vspace*{.5cm}
    \begin{minipage}{.4\linewidth}
      \centering\large\bf Test\\ Examen du 01/01/2008
    \end{minipage}

    \begin{center}\em
    Durée : 10 minutes.

      Aucun document n'est autorisé.
      L'usage de la calculatrice est interdit.

      Les questions faisant apparaître le symbole \multiSymbole{} peuvent
      présenter zéro, une ou plusieurs bonnes réponses. Les autres ont
      une unique bonne réponse.

      Des points négatifs pourront être affectés à de \emph{très
        mauvaises} réponses.
    \end{center}
    \vspace{1ex}

    %%% fin de l'en-tête

    \melangegroupe{general}
    \restituegroupe{general}

    \AMCcleardoublepage

    \AMCdebutFormulaire

    %%% début de l'en-tête de la feuille de réponses

    {\large\bf Feuille de réponses :}
    \hfill \champnom{\fbox{
        \begin{minipage}{.5\linewidth}
          Nom et prénom :

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

    \begin{center}
      \bf\em Les réponses aux questions sont à donner exclusivement sur cette feuille :
      les réponses données sur les feuilles précédentes ne seront pas prises en compte.
    \end{center}

    %%% fin de l'en-tête de la feuille de réponses

    \formulaire

    \clearpage

    }

    \end{document}

Les remarques suivantes devraient éclaircir cet exemple :

C'est l'option `ensemble` qui permet de faire ce que l'on veut faire ici.

On peut redéfinir de cette manière la façon dont les questions seront identifiées sur la page des réponses (cette ligne est facultative).

Ce saut de page précède la page spéciale où seront regroupées toutes les cases à cocher. Si on imprime en recto-verso, il vaut mieux utiliser `\AMCcleardoublepage` pour que la page de formulaire soit sur une feuille séparée des autres. Si on imprime en recto simple, on peut utiliser simplement `\clearpage`.

Cette commande marque le début de la partie formulaire de la copie. Son utilisation est indispensable pour un bon traitement des questions qui n'apparaissent que dans cette partie, comme par exemple celles générées par `AMCcode`.

La case où écrire son nom doit normalement être située sur la page des réponses !

C'est la commande LaTeX `formulaire` qui écrit toutes les cases à cocher.

Quand on utilise une page de réponses séparée, des lettres (ou des chiffres, avec l'utilisation de l'option `chiffres`, voir ) sont inscrites dans les cases à cocher. Pour obtenir une bonne détection des cases cochées, il est donc indispensable de demander aux étudiants de remplir totalement les cases voulues (cocher uniquement les cases à l'aide d'une croix ne serait pas suffisant). Il faut par ailleurs fixer le paramètre « seuil de noirceur » (qui définit la proportion de noir dans une case à partir de laquelle cette case est considérée comme étant cochée) à une valeur de l'ordre de 0,5.

### Description des commandes LaTeX

#### Options du paquet

L'utilisation du paquet automultiplechoice se fait grâce à la ligne

    \usepackage[...]{automultiplechoice}

où les pointillés sont remplacés par une liste d'options séparées par des virgules. Les options disponibles sont les suivantes :

- `francais` : indique que le sujet d'examen est en français. Les quelques mentions éventuellement ajoutées par automultiplechoice seront alors écrites en français (on peut en particulier penser à la phrase « aucune de ces réponses n'est correcte », voir option `completemulti` plus loin).

- `lang=XX` : indique que le sujet est dans la langue XX. Pour le moment, seules les langues FR (français), DE (allemand), ES (espagnol), IT (Italien), JA (Japonais) et NL (Néerlandais) sont disponibles.

- `bloc` : place chaque question dans un bloc, de telle sorte qu'elle ne puisse pas être coupée par un saut de page.

- `completemulti` : ajoute de manière automatique une réponse type « aucune de ces réponses n'est correcte » à la fin de chaque question multiple. Ceci permet de différencier, pour ces questions, une absence de réponse et la réponse qui consiste à ne choisir aucune des réponses proposées. Que cette option soit utilisée ou non, on peut demander l'ajout de cette dernière réponse ou l'annuler pour une question particulière en utilisant une des commandes `\AMCcompleteMulti` et `\AMCnoCompleteMulti` à l'intérieur de l'environnement `questionmult` correspondant.

- `ordre` : annule le mélange automatique de l'ordre des réponses dans toutes les questions.

- `correc` : produit la correction du QCM, et non le sujet.

- `ensemble` : demande à ce que les cases à cocher soient toutes rassemblées en fin de copie (cette option est en général utilisée quand on ne veut scanner qu'une seule page par étudiant - voir l'exemple de la ).

- `chiffres` : si on utilise l'option `ensemble`, l'option `chiffres` demande d'identifier les questions avec des chiffres plutôt qu'avec des lettres (ce qui est le comportement par défaut). Avec cette option, il faut bien entendu veiller à ce que le nombre de réponses ne dépasse pas 9 pour chaque question.

- `outsidebox` : si on utilise l'option `ensemble`, cette option demande à ce que les lettres ou chiffres soient inscrits, sur la feuille de réponses, à l'extérieur des cases à cocher plutôt qu'à l'intérieur.

- `insidebox` : si on n'utilise pas l'option `ensemble`, cette option permet d'inscrire des lettres (ou chiffres) à l'intérieur des cases à cocher (ce n'est pas le cas par défaut).

- `catalog` : option utilisée pour présenter les questions sous forme d'un catalogue dans lequel on piochera pour constituer un examen. Les questions ne sont pas identifiées par des numéros mais par leur nom. En général, on n'utilise pas la commande `\exemplaire` pour cette présentation.

- `postcorrect` : option utilisée si on souhaite indiquer les bonnes réponses après l'examen, grâce à une copie remplie par l'enseignant - voir .

- `automarks` : en mode `ensemble`, utilisez cette option si vous voulez que les marques de calage ne soient pas imprimées sur les pages de sujet, mais uniquement sur les pages de réponse. Vous pouvez alors personnaliser la façon d'imprimer les numéros de page sur le sujet en redéfinissant la commande `\AMCsubjectPageTag` :

      \renewcommand\AMCsubjectPageTag{%
        \fbox{\texttt{\the\AMCid@etud:\thepage}}%
      }

  L'option `automarks` ne doit pas être utilisée dans le cas ou une quelconque information doit être collectée depuis les pages de sujet, car AMC ne pourra pas traiter ces pages.

#### Description d'une copie

Le code LaTeX décrivant le contenu de chaque copie doit être inclus dans un appel à la commande `\exemplaire`, avec pour premier argument le nombre de copies et pour deuxième argument le code utilisé pour générer une copie.

    \exemplaire{50}{ ... }

Si vous avez chargé le paquet LaTeX environ avant automultiplechoice, vous disposez d'une syntaxe alternative utilisant l'environnement `copieexamen`, qui a en option le nombre de copies désiré (5 par défaut).

    \begin{copieexamen}[50]
    ...
    \end{copieexamen}

Le paquet environ n'est pas disponible dans la distribution TeX Live 2007, encore utilisée dans des distributions Ubuntu jusqu'à la version 9.10 (Karmic Koala).

#### Questions et réponses

Pour les questions simples (une seule réponse correcte), on utilisera le modèle suivant :

    \begin{question}{identifiant}
      Texte de la question...
      \begin{reponses}
        \bonne{La bonne réponse}
        \mauvaise{Une mauvaise réponse}
        \mauvaise{Une autre mauvaise réponse}
      \end{reponses}
    \end{question}

Il faut utiliser un identifiant différent pour chaque question. Un identifiant peut être constitué de chiffres, lettres et caractères simples (ne pas utiliser les accolades, crochets, par exemple !). Il ne faut pas utiliser d'identifiants se terminant par un point suivi d'un ou plusieurs chiffres (comme marine-marchande.2 ou 123.27), car cette forme d'identifiants est réservée à la saisie de longs codes (par exemple grâce à `\AMCcode` - voir ).

Le nombre de réponses pour une question est actuellement limité à 20.

Pour demander à garder l'ordre des réponses pour cette question-ci, on peut utiliser l'option `o` de l'environnement `reponses`, en remplaçant la ligne 3 par

    \begin{reponses}[o]

Pour mettre les réponses sur deux colonnes, on peut utiliser le package multicol en mettant dans le préambule (juste après l'appel au paquet automultiplechoice par exemple) la ligne

    \usepackage{multicol}

et en incluant l'environnement reponses à l'intérieur d'un environnement multicols de la manière suivante :

      \begin{multicols}{2}
        \begin{reponses}
          \bonne{La bonne réponse}
          \mauvaise{Une mauvaise réponse}
          \mauvaise{Une autre mauvaise réponse}
        \end{reponses}
      \end{multicols}

Pour les réponses plus courtes encore, on peut demander à ce que les réponses soient imprimées les unes à la suite des autres, en utilisant l'environnement `reponseshoriz` au lieu de `reponses`.

Les questions multiples (celles pour lesquelles aucune, une ou plusieurs réponses peuvent être correctes) utiliseront l'environnement `questionmult` au lieu de `question`.

Dans le cas où la question posée est juste informative et ne doit pas contribuer à la note de l'étudiant, on utilisera la commande `\QuestionIndicative`, comme dans l'exemple suivant :

    \begin{question}{facilite}\QuestionIndicative
      \bareme{auto=0,v=-1,e=-2}
      Vous êtes-vous sentis à l'aise ou en difficulté dans cet enseignement ?
      Répondez sur une échelle de 0 (grandes difficultés) à 5 (très à l'aise).
      \begin{reponseshoriz}[o]
        \bonne{0}
        \bonne{1}
        \bonne{2}
        \bonne{3}
        \bonne{4}
        \bonne{5}
      \end{reponseshoriz}
    \end{question}

#### Réponses sur plusieurs colonnes

Afin de présenter les réponses sur plusieurs colonnes (et gagner de la place), on pourra englober l'environnement `reponses` dans un environnement `multicols`, en utilisant le paquet LaTeX multicol.

Si de plus les réponses tiennent sur plusieurs lignes, cela pourrait entraîner le passage d'une réponse d'une colonne à l'autre, ce qui est un peu déroutant pour le lecteur. La commande `\AMCBoxedAnswers` a été définie afin d'éviter ce phénomène, en enveloppant chaque réponse dans une boite. On pourra l'utiliser comme dans l'exemple suivant :

    \begin{question}{deux colonnes}
      Qu'est-ce qu'un oiseau ?
      \begin{multicols}{2}\AMCBoxedAnswers
        \begin{reponses}
          \bonne{C'est un animal à ailes et qui pond des \oe{}ufs.
            Il y en a de toutes les couleurs}
          \mauvaise{C'est un grand meuble en bois qui sert la plupart
            du temps à ranger du linge de maison}
          \mauvaise{C'est une machine à vapeur qui permet de fermer
            les boîtes de conserve à grande vitesse}
        \end{reponses}
      \end{multicols}
    \end{question}

On notera qu'il est aussi possible de paramétrer l'espace vertical séparant deux blocs de réponse grâce à la dimension AMCinterBrep :

    \AMCinterBrep=.5ex

#### Espacement entre les réponses

Il est possible d'augmenter l'espace vertical séparant plusieurs réponses en modifiant la dimension AMCinterIrep :

    \AMCinterIrep=.75ex

#### Groupes de questions

L'inclusion de questions dans des groupes permet de mélanger les questions à l'intérieur de ces groupes, de manière différente pour chaque copie. Chaque groupe de questions devra avoir un nom formé uniquement de lettres non-accentuées.

On peut mettre une à une des questions dans un groupe, comme dans l'exemple suivant :

    \element{ungroupe}{
      \begin{question}{facile}
        Alors, combien font un plus un~?
        \begin{reponseshoriz}
          \bonne{deux}
          \mauvaise{zéro}
          \mauvaise{trois}
        \end{reponseshoriz}
      \end{question}
    }

La constitution du groupe, par les commandes `element`, doit être faite une seule fois : ces commandes doivent donc être utilisées avant la commande `exemplaire`, qui va répéter certaines actions pour chaque copie.

Une fois un groupe constitué, on peut mélanger les questions qui le composent par la commande `melangegroupe` : par exemple,

    \melangegroupe{ungroupe}

Enfin, on restitue les questions du groupe par la commande `restituegroupe`, comme dans

    \restituegroupe{ungroupe}

Ces deux dernières commandes (`melangegroupe` et `restituegroupe`) seront quand à elles normalement utilisées à l'intérieur du texte en argument de la commande `exemplaire`, pour que le mélange soit effectué avant chaque copie.

On peut manipuler les groupes de questions de manière plus précise grâce aux commandes suivantes :

- `\restituegroupe[n]{ungroupe}` (utilisation du paramètre optionnel n) restitue uniquement les n premiers éléments du groupe.

- `\cleargroup{groupe}` efface tout le contenu du groupe.

- `\copygroup{depuis}{vers}` copie le contenu du groupe depuis à la fin du groupe vers. Cette commande admet un argument optionnel qui permet de ne copier qu'un certain nombre d'éléments, comme dans `\copygroup[n]{depuis}{vers}`.

À l'aide de ces commandes, on peut par exemple composer un sujet en prenant 4 questions au hasard dans le groupe GA, 5 questions au hasard dans le groupe GB, toutes les questions du groupe GO, puis en mélangeant le tout, grâce aux commandes suivantes (à mettre à l'intérieur du texte en argument de la commande `exemplaire`) :

    \cleargroup{tout}
    \melangegroupe{GA}\copygroup[4]{GA}{tout}
    \melangegroupe{GB}\copygroup[5]{GB}{tout}
    \copygroup{GO}{tout}
    \melangegroupe{tout}
    \restituegroupe{tout}

#### Papier, marges

Le paquet LaTeX `automultiplechoice` utilise `geometry` pour gérer les marges et la mise en page. Vous pouvez modifier ses réglages grâce à l'utilisation de la commande `\geometry` juste avant le `\begin{document}` - voir la documentation du paquet `geometry` pour plus de détails. Les valeurs initialisées par AMC sont les suivantes :

    \geometry{hmargin=3cm,headheight=2cm,headsep=.3cm,footskip=1cm,top=3.5cm,bottom=2.5cm}

Si vous réduisez les marges pour gagner de la place, gardez à l'esprit que :

- Les quatre marques de coin doivent être imprimées entièrement (elles pourraient disparaître à cause des marges d'impression).

- Les quatre marques de coin doivent apparaître complètement sur les scans des copies remplies par les étudiants (si elles sont trop près des bords, elles pourraient disparaître lors du scan à la suite d'un décalage ou d'une rotation des feuilles de papier).

Vous pouvez également préciser la taille de papier à utiliser en ajoutant l'option correspondante à la liste donnée en argument à `\geometry`. Parmi les valeurs possibles, on trouvera `a4paper`, `a5paper`, `a6paper`, `b4paper`, `b5paper`, `ansibpaper`, `ansicpaper`, `ansidpaper`, `letterpaper`, `executivepaper`, `legalpaper`.

Pour des petites tailles de papier, il peut aussi être intéressant de modifier la position de l'identifiant de copie (de la forme `+1/1/53+`) à côté de son équivalent en cases blanches et noires, en haut de chaque page. Ceci est rendu possible par la commande `\AMCidsPosition`, sous la forme

    \AMCidsPosition{pos=p,width=w,height=h}

où p peut valoir `none` (ne pas écrire cet identifiant), `top` (l'écrire au-dessus) et `side` (à côté), et w et h sont les dimensions de la boîte (invisible) qui entoure l'identifiant. Les valeurs par défaut sont les suivantes :

    \AMCidsPosition{pos=side,width=4cm,height=3ex}

Concluons par un exemple raisonnable au format A5 :

    \geometry{a5paper,hmargin=1.6cm,top=2.5cm}
    \AMCidsPosition{pos=top}

#### Style des cases à cocher

La commande `\AMCboxDimensions` permet de modifier une ou plusieurs dimensions relatives aux cases à cocher :

- `shape` représente la forme des cases à cocher. La valeur square produit des carrés (ou des rectangles si on donne des dimensions différentes pour la hauteur et la largeur). La valeur oval produit des cercles ou des ovales. Si vous voulez utiliser oval, vous devez charger le paquet LaTeX tikz.

- `width` représente la largeur des cases ;

- `height` représente la hauteur des cases ;

- `size` représente la taille (à la fois `width` et `height`) de ces cases ;

- `rule` représente l'épaisseur du contour des cases ;

- `down` représente la taille du déplacement vers le bas des cases.

Pour obtenir des cases plus petites, on pourra par exemple utiliser la commande

    \AMCboxDimensions{size=1.7ex,down=.2ex}

Lors de l'utilisation de l'option `ensemble`, il est possible de modifier la manière de nommer les cases à cocher (c'est-à-dire ce qui sera inscrit dans chaque case). Le comportement par défaut est d'écrire des lettres majuscules, ou des chiffres si l'option `chiffres` est utilisée. Pour changer cela, il faut redéfinir la commande `\AMCchoiceLabel`, qui prend comme unique argument le nom du compteur utilisé pour la numérotation des cases. Ainsi, pour obtenir des lettres minuscules, on utilisera

    \def\AMCchoiceLabel#1{\alph{#1}}

De même, lors de l'utilisation du paquet LaTeX `arabxetex`, la commande suivante pourra se révéler utile :

    \def\AMCchoiceLabel#1{\textLR{\Alph{#1}}}

Pour changer le style des lettres inscrites dans les cases, on pourra également redéfinir la commande `\AMCchoiceLabelFormat`. Par exemple, pour obtenir des lettres grasses, on utilisera

    \def\AMCchoiceLabelFormat#1{\textbf{#1}}

Notons enfin que la couleur des cases à cocher par les étudiants peut être modifiée grâce à la commande

    \AMCboxColor{red}

en remplaçant `red` par la couleur désirée (qui doit être reconnue par le paquet LaTeX `xcolor`). Pour obtenir un vert clair par exemple, on pourra par exemple utiliser

    \definecolor{amcboxcolor}{rgb}{0.67,0.88,0.5}
    \AMCboxColor{amcboxcolor}

#### Style du questionnaire

La façon dont chaque question est présentée peut être modifiée en redéfinissant la commande LaTeX `AMCbeginQuestion`, dont la définition par défaut est la suivante :

    \def\AMCbeginQuestion#1#2{\par\noindent{\bf Question #1} #2\hspace*{1em}}

Le premier paramètre transmis à cette commande est le numéro de question à afficher. Le second paramètre contient `\multiSymbole` dans le cas dune question à plusieurs réponses possibles, et est vide dans les autres cas. La commande `\multiSymbole` peut aussi être modifiée : elle a pour charge de différentier les questions à réponses multiples des autres. Par défaut, elle affiche un trèfle :

    \def\multiSymbole{$\clubsuit$}

Enfin, on peut modifier le numéro de la prochaine question à laide de la commande `\AMCnumero`. Au début de chaque copie, un appel à

    \AMCnumero{1}

est effectué, mais cette commande peut être utilisée à tout moment.

La présentation des réponses peut être modifiée de la même façon, si on utilise l'environnement `reponsesperso` au lieu de `reponses` ou `reponseshoriz`, en redéfinissant les trois macros LaTeX suivantes :

    \def\AMCbeginAnswer{}
    \def\AMCendAnswer{}
    \def\AMCanswer#1#2{#1 #2}

Certains espacements peuvent également être modifiés :

    \AMCinterIrep=0pt
    \AMCinterBrep=.5ex
    \AMCinterIquest=0pt
    \AMCinterBquest=3ex

Ces dimensions correspondent aux espaces verticaux ajoutés entre les questions (`quest`) ou les réponses (`rep`), en mode boîte (`B`, obtenu avec `\AMCBoxedAnswers` ou l'option de package `bloc`) ou standard (`I`).

#### Mise en page

Les marges ont été choisies de telle manière que le document s'imprime correctement sur la majorité des imprimantes. Si votre imprimante permet de les réduire, vous pouvez le faire en utilisant la commande `geometry` du paquet LaTeX geometry. Par exemple, pour resserrer le haut des copies, on pourra utiliser `\geometry{top=3cm}` au lieu de la valeur 3.5cm utilisée par défaut, juste avant le `\begin{document}`.

#### Style du formulaire séparé

Il est aussi possible de modifier la mise en page du formulaire de réponses séparé produit avec l'option `ensemble` (voir section ).

1. Si on veut simplement modifier l'espacement horizontal entre deux cases de réponses ou l'espacement vertical entre deux questions, il suffit de redéfinir les dimensions suivantes :

       \AMCformHSpace=.3em
       \AMCformVSpace=1.2ex

2. Pour un changement plus profond de la mise en page, on peut aussi redéfinir les commandes utilisées en début de chaque question et pour chaque réponse (ici c'est la définition par défaut) :

       \def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par{\bf Question #1 :}}
       \def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1}

Ces définitions sont à insérer juste après la balise `\begin{document}` dans le document LaTeX.

#### Saisie de codes

L'entrée de codes peut être aisément effectuée à l'aide de la commande LaTeX `AMCcode`, par exemple pour que chaque étudiant codifie son numéro d'étudiant lui-même sur sa copie. Les deux arguments de cette commande sont un identifiant de question, auquel sera ajouté le numéro du chiffre dans le code, ainsi que le nombre de chiffres du codage désiré. On pourra par exemple utiliser l'entête de copie suivant :

    {\setlength{\parindent}{0pt}\hspace*{\fill}\AMCcode{etu}{8}\hspace*{\fill}
    \begin{minipage}[b]{6.5cm}
    $\longleftarrow{}$\hspace{0pt plus 1cm} codez votre numéro d'étu\-diant ci-contre,
    et inscrivez votre nom et prénom ci-dessous.

    \vspace{3ex}

    \hfill\champnom{\fbox{
        \begin{minipage}{.9\linewidth}
          Nom et prénom :

          \vspace*{.5cm}\dotfill

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

    }

Dans le cas de l'utilisation de l'option `ensemble`, la commande `AMCcode` devra se trouver dans la partie formulaire, c'est-à-dire après la commande `AMCdebutFormulaire`.

Notez enfin que la présentation de ces formulaires de saisie de codes peut être légèrement modifiée en changeant la valeur des dimensions `\AMCcodeHspace`, `\AMCcodeVspace` et `\AMCcodeBoxSep`, qui représentent les espaces horizontaux et verticaux entre les cases, ainsi que les espaces entre les cases et leurs étiquette (dans le cas où celles-ci sont inscrites à côté). Les valeurs par défaut sont définies de la manière suivante :

    \AMCcodeHspace=.5em
    \AMCcodeVspace=.5em
    \AMCcodeBoxSep=.1em

Notons enfin qu'il existe aussi la version horizontale `AMCcodeH` de cette commande, particulièrement utile pour un faible nombre de chiffres dans le code à saisir.

#### Questions ouvertes

On peut ajouter des questions ouvertes (qui ne sont pas à choix multiple) à l'intérieur du sujet.

Une manière de procéder consiste à présenter des cases à cocher par le correcteur. Après l'examen, le correcteur lit la réponse fournie par l'étudiant et affecte les points qui correspondent en cochant certaines cases qui lui sont réservées. Il peut ensuite scanner les copies et utiliser AMC pour les corriger, tout en intégrant les résultats des questions ouvertes dans la notation (dans l'exemple suivant, chaque case cochée rapporte un demi-point à l'étudiant) :

    \begin{question}{ouverte}
      Donnez la d\'efinition de l'inflation.
      \AMCOpen{lines=5}{\wrongchoice[F]{f}\scoring{0}\wrongchoice[P]{p}\scoring{1}\correctchoice[J]{j}\scoring{2}}
    \end{question}

Dans cet exemple, l'enseignant disposera de trois cases. En cochant la première (nommée F pour faux), l'étudiant n'aura aucun point. En cochant la deuxième (appelée P pour partielle), l'étudiant aura 1 point. En cochant la dernière (nommée J pour juste), l'étudiant optiendra 2 points.

Le premier argument de la commande `\AMCOpen` est une liste d'options séparées par des virgules. Les options disponibles sont les suivantes :

lineup=bool

  avec la valeur `true`, la zone de réponse et les cases de notation sont présentées sur la même ligne. Avec la valeur `false` (c'est la valeur par défaut), la zone de réponse est présentée dans un cadre placé en-dessous des cases à cocher).

lines=num

  fixe le nombre de lignes allouées à la réponse (la valeur par défaut est `1)`.

lineheight=dim

  fixe la hauteur de chaque ligne (la valeur par défaut est `1cm`).

dots=bool

  avec la valeur `true` (par défaut), chaque ligne sera matérialisée par des pointillés. Donner la valeur `false` pour les supprimer.

contentcommand=cmdname

  cette option peut être utilisée pour personnaliser le contenu de la zone de réponse. Il faut définir une commande `\cmdname` qui devra produire le contenu désiré.

hspace=dim

  fixe l'espace à ajouter entre les cases de la zone de notation.

backgroundcol=color

  fixe la couleur de fond de la zone de notation.

foregroundcol=color

  fixe la couleur utilisée dans la zone de notation.

scan=bool

  avec la valeur `false`, la saisie automatique (à partir des scans) n'est pas effectuée pour cette question (cela peut être utile si vous souhaitez utiliser uniquement la saisie manuelle pour noter la question, et que vous ne voulez pas que les étudiants puissent perturber le processus en cochant ces cases). La valeur par défaut est `true`.

annotate=bool

  avec la valeur `false` (par défaut), les cases correspondantes à cette question ne seront pas annotées lors de la fabrication des copies annotées (seule le score à la question sera écrit).

question=texte

  donne un texte court pour que le correcteur identifie facilement la question posée. Ce texte sera écrit juste avant les cases de notation, uniquement dans le cas de l'utilisation d'une feuille de réponses séparée.

answer=texte

  donne un texte court qui sera inscrit dans la zone de réponse sur la correction.

width=dim

  donne la dimension horizontale du cadre entoutant la zone de réponse dans le cas `lineup=false`. La valeur par défaut est `.95\linewidth`.

framerule=dim

  donne l'épaisseur du trait pour le cadre entoutant la zone de réponse.

framerulecol=color

  donne la couleur du cadre entoutant la zone de réponse.

boxmargin=dim

  donne la taille de la marge entourant les cases de la zone de notation.

boxframerule=dim

  donne l'épaisseur du trait pour le cadre entourant la zone de notation.

boxframerulecol=color

  donne la couleur du trait pour le cadre entourant la zone de notation.

Vous pouvez modifier la valeur par défaut (pour tout votre questionnaire) de toutes ces options grâce à la commande `\AMCopenOpts`, comme

    \AMCopenOpts{boxframerule=2pt,boxframerulecol=red}

De plus, on peut ajouter un petit texte dans la zone de notation pour signifier aux étudiants de ne pas cocher ces cases-là en redéfinissant la commande `\AMCotextReserved` comme suit :

    \def\AMCotextReserved{\emph{Reservé}}

Dans le cas de l'utilisation d'une feuille de réponse séparée, on peut également ajouter un petit texte à chaque question ouverte comme suit :

    \def\AMCotextGoto{\par{\bf\emph{Répondez sur la feuille de réponses.}}}

#### Choix du mélange

Si le mélange des question et des réponses ne nous convient pas, on peut toujours en changer en modifiant la graine du générateur aléatoire utilisé pour le mélange, grâce à la commande suivante (à utiliser juste au début du document, et en tous cas en-dehors de la commande `exemplaire`) :

    \AMCrandomseed{1527384}

Si la valeur fournie (à choisir entre 1 et 4194303) est modifiée, alors le mélange sera différent. Bien entendu, une fois les copies d'examen imprimées, il ne faut surtout pas modifier cette valeur !

#### Sections et feuille de réponses séparée

Pour que les sections définies dans votre sujet soient reprises dans la feuille de réponses séparées, utiliser `\AMCsection` et `\AMCsubsection` à la place de `\section` et `\subsection`.

#### Références à l'intérieur des copies

Dans la description du sujet, les commandes LaTeX `\label`, `\ref` et `\pageref` posent problème car elles seront appelées avec les mêmes arguments pour chaque copie produite, ce qui perturbera la numérotation des références. Pour résoudre ce problème, les commandes `\AMClabel`, `\AMCref` et `\AMCpageref` peuvent leur être substituées : elles ajoutent le numéro de la copie avant leur argument avant de le transmettre à `\label`, `\ref` et `\pageref`.

Il faudra en outre penser à remettre les compteurs utilisés à zéro au début de chaque copie. Par exemple, si on veut inclure des références à des images regroupées dans une page à part dans certaines questions, on pourra écrire quelque chose comme

    \element{animaux}{
      \begin{figure}[p]
        \centering
        \includegraphics[width=.6\linewidth]{tigre}
        \caption{Un animal}
        \AMClabel{tigre}
      \end{figure}

      \begin{question}{tigre}
        Quel est l'animal sur la photographie de la figure~\AMCref{tigre} en page \AMCpageref{tigre}~?
        \begin{reponses}
          \bonne{Un tigre}
          \mauvaise{Une girafe}
          \mauvaise{Un éléphant}
          \mauvaise{Un chat}
        \end{reponses}
      \end{question}
    }

en prenant soin d'ajouter au début de l'appel à `\exemplaire` (lors de la description de l'en-tête des copies) la ligne

    \setcounter{figure}{0}

afin que les figures soient numérotées à partir de 1 pour chaque copie. Sans cette dernière commande, la numérotation des figures continuerait d'une copie à l'autre, ce qui n'est pas souhaitable.

#### Personnalisation des textes insérés par AMC

Il est possible de personnaliser certain textes insérés par le paquet automultiplechoice, grâce à la commande `\AMCtext` :

- `\AMCtext{none}{phrase}` remplace le texte par défaut « aucune de ces réponses n'est correcte » (en français) par la phrase fournie lors de l'utilisation de l'option `completemulti`.

- `\AMCtext{corrected}{titre}` remplace « Correction » (en français) par le titre fourni sur la correction de l'examen.

- `\AMCtext{catalog}{titre}` remplace « Catalogue » (en français) par le titre fourni sur le catalogue de questions fourni avec l'option `catalog`.

- Vous pouvez aussi considérer l'utilisation de commandes comme celles-ci (données ici avec comme deuxième argument la valeur par défaut en français) :

      \AMCtext{draft}{PROJET}
      \AMCtext{message}{Pour votre examen, imprimez de pr\'ef\'erence
                        les documents compil\'es \`a l'aide de auto-multiple-choice.}

### Options pour AMC

Certaines options indiquées dans l'en-tête du fichier source au format LaTeX (c'est-à-dire les premières lignes qui commenecnt par un'%') peuvent être transmises à AMC :

`%%AMC:preprocess_command=commandname`

  demande à AMC d'exécuter la commande commandname avant de compiler le fichier LaTeX. Cette commande sera appelée à l'intérieur du répertoire projet, avec comme argument le nom de la copie du fichier source à traiter. Comme il s'agit d'une copie du fichier source, la commande commandname peut en modifier le contenu.

`%%AMC:latex_engine=engine`

  demande à AMC d'utiliser le moteur LaTeX engine, sans tenir compte de la valeur fournie par l'utilisateur dans les préférences du projet.

### Des questions mathématiques à énoncés aléatoires

#### Utilisation du package fp

Grâce au paquet LaTeX fp, dont la documentation se trouve sur http://mirrors.ctan.org/macros/latex/contrib/fp/README et que l'on peut charger grâce à la commande

    \usepackage{fp}

ajoutée avant celle correspondant à automultiplechoice, on peut créer des exercices dont les données sont aléatoires. Commençons par un petit exemple :

    \begin{question}{addition}
      \FPeval\VQa{trunc(1+random*8,0)}
      \FPeval\VQb{trunc(4+random*5,0)}
      \FPeval\VQsomme{clip(VQa+VQb)}
      \FPeval\VQnonA{clip(VQa+VQb-1)}
      \FPeval\VQnonB{clip(VQa*VQb)}
      \FPeval\VQnonC{clip(VQa-VQb)}

      Quelle est la somme de \VQa{} et \VQb{} ?
      \begin{reponseshoriz}
        \bonne{\VQsomme}
        \mauvaise{\VQnonA}
        \mauvaise{\VQnonB}
        \mauvaise{\VQnonC}
      \end{reponseshoriz}
    \end{question}

La commande `\FPeval` sert à faire des calculs :

Comme `random` renvoie un nombre réel de l'intervalle [0,1], cette commande met dans la variable VQa un entier aléatoire entre 1 et 8. La ligne suivante place dans VQb un entier aléatoire entre 4 et 8.

On place la bonne réponse dans la variable VQsomme.

On place dans les variables VQnonA, VQnonB et VQnonC des mauvaises réponses...

Les noms de variables commençant par VQ ont été choisis afin de ne pas interférer avec d'autres commandes LaTeX.

##### Choix parmi une suite d'intervalles

La paquet automultiplechoice définit en outre une commande `\choixIntervalle` qui simplifie ce genre de constructions, comme illustré dans l'exemple suivant :

    \begin{question}{inf-expo-indep}
      \FPeval\VQa{trunc(2 + random * 4,0)}
      \FPeval\VQb{trunc(6 + random * 5,0)}
      \FPeval\VQr{VQa/(VQa+VQb)}

      Soient $X$ et $Y$ deux variables aléatoires indépendantes, de lois exponentielles
      de paramètres respectifs \VQa{} et \VQb{}.
      À quel intervalle appartient la probabilité $\mathbb{P}[X<Y]$ ?

      \begin{multicols}{5}
        \begin{reponses}[o]
          \choixIntervalles{\VQr}{0}{1}{0.1}
        \end{reponses}
      \end{multicols}
    \end{question}

Cette ligne insère dix réponses correspondant aux intervalles [0,0.1[ [0.1,0.2[ ... [0.9,1[, tout en indiquant que le bon intervalle est celui qui contient VQr. Les arguments de la commande `\choixIntervalle` sont les suivants :

1. La bonne réponse,

2. La borne gauche du premier intervalle,

3. La borne droite du dernier intervalle,

4. La longueur de chaque intervalle.

La mise en forme des intervalles peut être modifiée en redéfinissant la commande LaTeX `\AMCintervalFormat`, définie originellement par

    \def\AMCIntervalFormat#1#2{[#1,\,#2[}

pour suivre une convention différente (on rencontra par exemple souvent l'utilisation de [a,b) à la place de [a,b[).

##### Codage du résultat

Vous pouvez également demander aux étudiants de coder leur réponse numérique, grâce à la commande `\AMCnumericChoices`, comme dans l'exemple suivant :

    \begin{questionmultx}{sqrt}
      \FPeval\VQa{trunc(5+random*15,0)}
      \FPeval\VQs{VQa^0.5}
      Calculez $\sqrt{\VQa}$ et arrondissez le résultat avec deux chiffres
      après la virgule.

      \AMCnumericChoices{\VQs}{digits=3,decimals=2,sign=true,
                     borderwidth=0pt,backgroundcol=lightgray,approx=5}
    \end{questionmultx}

Notez l'utilisation de l'environnement `questionmultx` : nous avons besoin ici d'une question multiple car plusieurs cases doivent être cochées, mais pourtant une seule réponse est correcte, et nous ne souhaitons donc pas afficher le symbole des questions multiples normales.

Les options disponibles dans le deuxième argument de cette commande sont les suivants :

digits=num

  donne le nombre de chiffres à coder (la valeur par défaut est 3).

decimals=num

  donne le nombre de chiffres après la virgule (la valeur par défaut est 0). Quand num n'est pas nul, le paquet LaTeX `fp` doit être chargé.

base=num

  donne la base dans laquelle sera écrit le nombre à coder (la valeur par défaut est 10).

significant=bool

  avec la valeur `true`, les chiffres à renseigner sont les premiers chiffres significatifs du premier argument de `\AMCnumericChoices`. Par exemple, la bonne réponse à `\AMCnumericChoices{56945.23}{digits=2,significant=true}` est 57.

nozero=bool

  avec la valeur true, enlève le choix 0 pour tous les chiffres du nombre à saisir. Cette option peut être utile lors de la saisie de petits (<10) nombres non nuls.

sign=bool

  demande (ou non) la saisie d'un signe (la valeur par défaut les `true`).

strict=bool

  avec la valeur `true`, une case doit être obligatoirement cochée pour le signe et pour chaque chiffre. Avec la valeur `false` (valeur par défaut), si pour certains chiffres aucune case n'est cochée, ces chiffres seront fixés à la valeur 0.

vertical=bool

  avec la valeur `true`, chaque chiffre sera représenté par une colonne. Avec la valeur `false` (valeur par défaut), chaque chiffre sera représenté par une ligne.

reverse=bool

  avec la valeur `true` (valeur par défaut), en mode `vertical`, les grandes valeurs des chiffres seront placées en haut plutôt qu'en bas.

vhead=bool

  avec la valeur `true`, en mode `vertical`, un en-tête sera placé au-dessus de chaque colonne correspondant à un chiffre. Le texte de cet en-tête est donné par la commande `\AMCntextVHead`, qui est originellement définie par

      \def\AMCntextVHead#1{\emph{b#1}}

  Cette définition permet de numéroter les chiffres binaires.

  La valeur par défaut est `false`.

hspace=space

  donne l'espace horizontal entre les cases (`.5em` par défaut).

vspace=space

  donne l'espace vertical entre les cases (`1ex` par défaut).

borderwidth=space

  donne l'épaisseur du cadre qui entoure toutes les cases (`1mm` par défaut).

bordercol=color

  donne la couleur du cadre (`lightgray` par défaut).

backgroundcol=color

  donne la couleur du fond (`white` par défaut).

Tsign=text

  donne le texte à inscrire au-dessus des deux cases correspondant au signe (vous pouvez obtenir le même résultat grâce à `\def\AMCntextSign{text}`, le texte par défaut étant vide).

Tpoint=text

  donne le texte correspondant à la virgule (décimale). Il peut également être modifié par `\def\AMCdecimalPoint{text}`, et la valeur par défaut est `\raisebox{1ex}{\bf .}`.

scoring=bool

  avec la valeur `true` (valeur par défaut), un barème sera transmis à AMC.

scoreexact=num

  donne le score à affecter à une réponse exacte (2 par défaut).

exact=num

  donne la distance maximale à la valeur correcte en-dessous de laquelle une réponse sera considérée comme exacte (et sera rétribuée de `scoreexact` points). La valeur par défaut est 0.

scoreapprox=num

  donne le score à affecter à une réponse approximative (1 par défaut).

approx=num

  donne la distance maximale à la valeur correcte en-dessous de laquelle une réponse sera considérée comme approximative (et sera rétribuée de `scoreapprox` points). La valeur par défaut est 0.

Vous pouvez modifier la valeur par défaut (pour tout votre questionnaire) de toutes ces options grâce à la commande `\AMCnumericOpts`, comme

    \AMCnumericOpts{scoreexact=3,borderwidth=2pt}

Vous pouvez de plus ajouter un texte à la suite des questions, quand la réponse à celle-ci est reléguée à une feuille séparée (par l'utilisation de l'option `ensemble`), en redéfinissant la commande `\AMCntextGoto`, comme ceci par exemple :

    \def\AMCntextGoto{\par{\bf\emph{Codez la réponse
         sur la feuille de réponses séparée.}}}

#### Utilisation du package pgf/tikz

Le paquet LaTeX pgf/tikz, dont la documentation se trouve sur http://www.ctan.org/tex-archive/graphics/pgf/base possède notamment une bibliothèque mathématique que l'on peut charger grâce à la commande :

    \usepackage{tikz}

La première précaution à prendre, pour avoir des sujets identiques malgré les recompilations latex est de choisir la base de génération des nombres pseudo-aléatoires.

    \pgfmathsetseed{2056}

##### Réaliser un calcul simple

Voici un exemple d'utilisation avec un calcul simple :

    \begin{question}{inverse}
      \pgfmathrandominteger{\x}{1}{50}

      Quel est l'inverse de $x=\x$ ?

      \begin{reponses}
        \bonne{\pgfmathparse{1/\x}\pgfmathresult }
        \mauvaise{\pgfmathparse{1/(\x +1))}\pgfmathresult}
        \mauvaise{\pgfmathparse{cos(\x)} \pgfmathresult}
        \mauvaise{\pgfmathparse{\x^(-0.5)}\pgfmathresult}
      \end{reponses}
    \end{question}

Les commandes `\pgfmathparse` et `\pgfmathresult` permettent respectivement d'effectuer le calcul et d'afficher son résultat.

Il est possible de choisir la mise en forme des résultats en utilisant la commande `\pgfmathprintnumber`, par exemple, ici on choisit une notation avec trois décimales, en utilisant une virgule comme séparateur décimal.

    \begin{question}{inverse3}
      \pgfmathrandominteger{\x}{1}{50}
      \pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=3,use comma}
      Quel est l'inverse de $x=\pgfmathprintnumber{\x}$ ?

      \begin{reponses}
        \bonne{\pgfmathparse{1/\x}\pgfmathprintnumber{\pgfmathresult}}
        \mauvaise{\pgfmathparse{1/(\x +1))} \pgfmathprintnumber{\pgfmathresult}}
        \mauvaise{\pgfmathparse{cos(\x)} \pgfmathprintnumber{\pgfmathresult}}
        \mauvaise{\pgfmathparse{\x^(-0.5)} \pgfmathprintnumber{\pgfmathresult}}
      \end{reponses}
    \end{question}

Les commandes `\AMCIntervals` et `\AMCnumericChoices` peuvent aussi être utilisées dans ce contexte (voir et )

##### Questions de lecture graphique

Il est aussi possible de générer des graphiques aléatoires(ou non),et de poser des questions de lecture graphique.

    \begin{questionmult}{graphique}
      On considère trois fonctions f(x) dont les tracés sont représentés ci-dessous
      dans un repère orthonormé~:
      \pgfmathrandominteger{\a}{2}{4}
      \begin{center}
        \begin{tikzpicture}[domain=0:4]
          \draw[very thin,color=gray] (-0.1,-4.1) grid (3.9,3.9);
          \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
          \draw[->] (0,-4.2) -- (0,4.2) node[above] {$f(x)$};
          \draw[color=red] plot (\x,{(1+\a/4)*\x-\a}) node[right] {$f_{1} (x)$};
          \draw[color=blue] plot (\x,{\a*sin(\x r)}) node[right] {$f_{2}(x)$};
          \draw[color=orange] plot (\x,{\a*cos(\x r)}) node[right] {$f_{3}(x)$};
        \end{tikzpicture}
      \end{center}
      Alors :
      \begin{reponses}
        \pgfmathrandominteger{\x0}{2}{4}
        \bonne{$f_{2}(\x0)$=\pgfmathparse{\a*sin(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.}
        \bonne{$f_{3}(\x0)$=\pgfmathparse{\a*cos(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.}
        \mauvaise{La fonction $f_{1}(x)$ est une fonction linéaire.}
      \end{reponses}
    \end{questionmult}

La mise en forme des graphiques peut être facilitée par l'utilisation du package pgfplots.

La précision des nombres sous pgfmath étant limitée, certains tracés de graphiques ne sont pas possibles avec cette méthode, la compilation latex adressant alors une erreur du type : "Arithmetic overflow". Les packages tikz et pgfplots permettent de pallier à ce manque de précison en faisant appel au programme `gnuplot` (voir documentation du package) pour obtenir les points de tracé. Dans ce cas, il faut installer au préalable `gnuplot` sur votre distribution, puis lancer la compilation latex avec l'option `--shell-escape`. Pour cela, aller dans les préférences de AMC et choisir pour moteur LaTeX du projet en cours : "`pdflatex --shell-escape`" (sans les guillemets).

#### Utilisation de LuaLaTeX

Il est possible d'utiliser le langage de programmation LUA au sein de documents latex en compilant le sujet grâce à la commande `lualatex`. Si vous choisissez cette compilation, votre sujet doit être encodé en UTF-8, et il ne faut pas charger le package inputenc. Pour de plus amples informations, lire l'article de Manuel Pégourié-Gonnard présentant le projet à l'adresse suivante : http://dante.ctan.org/tex-archive/info/luatex/lualatex-doc/lualatex-doc.pdf

Pour faire appel au langage LUA, il faut utiliser la commande `\directlua`. La fonction la plus utile est de pouvoir écrire un résultat calculé par LUA dans le document tex grâce à la commande : `tex.print`

Encore une fois, si vous utilisez des nombres aléatoires, commencer par choisir la base de génération des nombres pseudo-aléatoires.

    \directlua{math.randomseed (2048)}

Voici un exemple très simple, de fichier:

    \documentclass[a4paper]{article}
    %\usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[francais,bloc,completemulti]{automultiplechoice}
    \begin{document}

    \exemplaire{10}{

    %%% debut de l'en-tête des copies :

    \noindent{\bf QCM  \hfill TEST}

    \vspace*{.5cm}
    \begin{minipage}{.4\linewidth}
      \centering\large\bf Sujet simpliste
    \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

    \directlua{math.randomseed (2048)}
    \directlua{a=math.random()}

    \begin{question}{calcul}
      Quelle est la racine carrée de \directlua{tex.print(a)}?

      \begin{reponses}
        \bonne{\directlua{tex.print(math.sqrt(a))}}
        \mauvaise{\directlua{tex.print(math.sqrt(2*a))}}
        \mauvaise{\directlua{tex.print(math.sqrt(a*1.001))}}
      \end{reponses}
    \end{question}

    \clearpage
    }

    \end{document}

Il est aussi possible de mettre en forme les résultats donnés par lua soit en écrivant des fonctions lua, soit en utilisant le package siunitx

Les commandes `\AMCIntervals` et `\AMCnumericChoices` peuvent aussi être utilisées dans ce contexte (voir et )

## Mise en œuvre - interface graphique

Nous décrivons ici un exemple de cheminement avec l'interface graphique depuis la conception du QCM jusqu'à l'édition des notes des élèves.

### Création du nouveau projet et du sujet

Commençons par ouvrir l'interface graphique. On peut normalement le faire en sélectionnant Applications Éducation Auto Multiple Choice du menu général de Gnome (ou son équivalent dans KDE ou autre), mais on peut aussi utiliser la commande `auto-multiple-choice`.

Créons maintenant un nouveau projet, grâce à Projet Nouveau . Une fenêtre s'ouvre qui permet de visualiser les noms des projets déjà existant (si il en existe), et de choisir un nom (composé de caractères simples ; « test » conviendra par exemple à notre petit essai), que nous inscrivons dans le champ Nouveau projet. Nous validons enfin en appuyant sur le bouton Créer un projet.

Nous devons maintenant désigner un fichier AMC-TXT ou LaTeX comme source du QCM. Plusieurs possibilités nous sont proposées :

- modèle : ce choix permet de chercher parmi les modèles fournis avec AMC un sujet que nous pourrons modifier ensuite à loisir.

- fichier : ce choix permet de choisir un fichier source déjà composé pour l'examen. Il est en effet possible de composer son sujet en dehors d'AMC grâce à un éditeur classique, puis d'utiliser AMC quand celui-ci est au point.

- vide : ce choix crée un fichier vide qu'il faudra éditer depuis zéro pour créer son sujet.

- archive : ce choix permet d'utiliser une archive tgz ou zip dans laquelle on a placé le sujet et d'éventuels autres fichiers (images, fichier décrivant les options pour AMC par exemple). Il sera utilisé quand le sujet est fabriqué par un programme extérieur (comme par exemple l'interfaçage avec la plateforme nationale C2i niveau 1 pour les universités françaises) ou pour reprendre un sujet AMC sauvegardé sous forme d'archive.

Pour notre exemple, nous choisissons modèle. Dans la fenêtre suivante, sélectionnons par exemple le modèle Exemple simple dans le groupe [FR] Documentation. Une fois le projet créé, nous pouvons modifier ce sujet à loisir grâce au bouton Éditer le fichier source qui lance l'éditeur par défaut.

### Préparation du sujet

La préparation du projet se fait en deux étapes. Il faut tout d'abord fabriquer les documents de référence à partir du fichier source. Ceci se fait en cliquant sur le bouton Mise à jour de la section Documents de travail. Les documents produits sont les suivants :

- Le sujet. C'est le fichier qu'il faudra imprimer pour que ses pages soient distribuées aux étudiants (voir plus bas).

- Le corrigé. On peut y vérifier que les réponses cochées sont les bonnes. Il est aussi destiné à être distribué aux étudiants.

Une fois produits, ces documents pourront être visualisés (et éventuellement imprimés) grâce aux boutons correspondants.

Nous pouvons maintenant passer à cette dernière étape de préparation : l'analyse du document de calage. Elle se lance à partir du bouton Calculer les mises en page. Cette analyse détecte, dans chaque page du sujet, la position exacte des différents éléments qui devront être analysés sur les copies des étudiants.

Pour vérifier que les mises en page ont été correctement détectées, on peut utiliser le bouton Vérifier les mises en page. Un petit coup d'œil permettra de vérifier que les cases à cocher en rouge sont bien positionnées sur les cases du sujet.

### Impression du sujet

Vous pouvez fonctionner de deux manières différentes :

- Pour la méthode la plus robuste, il est nécessaire de produire un nombre suffisant de copies ayant chacune un numéro de copie différent, et de les imprimer toutes. Chaque page de chaque copie est différenciée par les codes inscrits en haut de la page. Vous pouvez ainsi scanner plusieurs fois la même page sans risque.

- La deuxième méthode consiste à produire un petit nombre de copies (éventuellement une seule), à les imprimer, puis à les photocopier en grand nombre pour en avoir une par étudiant. Avec cette méthode, le mélange des questions et réponses perd de son efficacité, et si vous fournissez plusieurs fois la même page scannée à AMC, il ne pourra pas s'en rendre compte et la comptera deux fois.

Pour cette deuxième méthode utilisant des photocopies, il est nécessaire que les étudiants n'aient à remplir qu'une seule page (ce résultat peut être obtenu en utilisant une feuille de réponses séparée). Dans le cas contraire, vous ne pourriez pas traiter les scans par AMC ensuite ! En effet, il serait impossible pour AMC de faire le lien entre plusieurs pages correspondant à un même étudiant.

Une fois la préparation effectuée, nous pouvons imprimer le sujet, et le distribuer aux étudiants... Nous avons pour cela plusieurs possibilités :

- Il est possible d'imprimer (ou de faire imprimer par un service reprographie) directement le fichier `DOC-sujet.pdf` du répertoire projet, auquel on peut accéder par le bouton sujet de la liste des documents de travail.

  Cette méthode peut avoir un léger inconvénient : si votre sujet comporte certaines copies ayant un nombre impair de pages, une impression recto-verso mettra plusieurs sujets sur une même feuille, ce qui les rendra inutilisables. Pour éviter ce problème, vous pouvez remplacer (si ce n'est pas déjà fait), dans le fichier LaTeX du sujet, la commande `\clearpage` par `\AMCcleardoublepage`, qui ajoutera les pages blanches nécessaires pour que tous les sujets aient un nombre pair de pages (voir exemple section ).

- Si l'imprimante à utiliser est configurée sur l'ordinateur utilisé par AMC, on utilisera de préférence le bouton Imprimer des copies (après avoir calculé les mises en page), qui permet de sélectionner les copies à imprimer (si on ne souhaite pas toutes les imprimer, ou pour une réimpression dans le cas où une copie aurait été mal imprimée), de choisir les options d'impression (recto-verso, agrafage), et de gérer correctement les copies avec un nombre impair de pages même dans le cas d'une impression recto-verso sans utilisation de `\AMCcleardoublepage` (en effet, AMC envoie une tâche d'impression par copie).

### Examen

Il ne reste plus qu'à faire passer l'examen aux étudiants...

Une fois que le sujet est imprimé et distribué, il ne faut plus modifier les documents de travail car il faut garder la certitude qu'ils sont conformes aux copies distribuées.

### Lecture des copies

Nous allons maintenant passer à la saisie des copies des étudiants, qui peut se faire de manière automatique et/ou manuelle.

Pour cela, nous passons sur l'onglet Saisie de l'interface graphique.

#### Saisie automatique

Pour une reconnaissance automatisée des cases cochées dans les copies des étudiants, il faut tout d'abord les numériser. J'utilise pour ma part une photocopieuse/scanner qui le fait de manière automatique (toutes les pages à la suite sans intervention de ma part), avec les réglages suivants : 300dpi, mode OCR (prévu pour la reconnaissance de caractères, noir et blanc sans nuances de gris), scan délivré en un fichier TIFF par page.

Pour l'analyse des copies, nous devons disposer d'un ou plusieurs fichiers images (TIFF, JPG, PNG, etc.) des scans. Les formats vectoriels (PDF, PS ou EPS) sont également utilisables ; ils seront convertis au format PNG par AMC avant leur analyse.

Lors de la première saisie automatique, vous aurez à indiquer à AMC quelle méthode vous avez choisie : sujets différents pour tous les étudiants, ou photocopie de certains sujets (voir ).

On sélectionne alors l'ensemble des fichiers obtenus à partir du dialogue ouvert par le bouton Automatique de la section Saisie des copies après examen, puis on valide par le bouton Valider de ce même dialogue. AMC va procéder à une reconnaissance optique de marques (OMR) sur les scans afin de détecter les quatre marques circulaires des coins, en déduire la position des cases à cocher et mesurer la proportion de noir à l'intérieur de chacune d'entre elles.

Le résultat de l'analyse de chaque page est indiqué dans les listes de la section Diagnostic :

- La valeur EQM (écart quadratique moyen) est un indicateur du bon calage sur les marques de calage (les quatre ronds noirs entourant chaque copie). Si il est trop important, il faudra vérifier le calage (un clic droit sur la ligne correspondant à la page puis le choix page permet de visualiser la page scannée et le cadre et les cases tels qu'ils sont détectés).

- La valeur sensibilité est un indicateur de la proximité du remplissage des cases avec la valeur seuil. Si elle est trop importante (à partir de 8 et jusqu'à sa valeur maximale 10), il faudra vérifier que les cases reconnues comme étant cochées sont bien les bonnes (un clic droit sur la ligne correspondant à la page puis le choix zoom permet de visualiser l'ensemble des cases de la copie, de voir si la détection s'est bien déroulée, et éventuellement de la corriger par glisser-déposer).

#### Saisie manuelle

Si nous ne pouvons pas utiliser facilement de scanner, ou si, pour quelques copies, la saisie automatique n'a pas bien fonctionné, nous pouvons effectuer la saisie de manière manuelle. Pour cela, ouvrons la fenêtre adéquate grâce au bouton Manuelle de la section Saisie des copies après examen. Dans cette fenêtre, nous pourrons entrer nous-même les cases qui ont été cochées (en cliquant dessus) sur les pages désirées.

Toute saisie manuelle effectuée sur une page prendra la place des résultats éventuels d'une saisie automatique pour cette même page.

### Correction

Dans l'onglet Notation de l'interface graphique, la partie Correction nous permet de déduire les notes des étudiants à partir des saisies effectuées, mais aussi de lire les codes renseignés par les étudiants (voir ).

#### Processus

Le calcul des notes se lance à l'aide du bouton Corriger, mais nous avons auparavant le choix suivant à effectuer :

- Si nous cochons la case Mettre à jour le barème, le barème sera tout d'abord extrait du fichier source LaTeX. Ceci permet de tester plusieurs barèmes à la fin du processus de correction. La mise à jour concerne également la liste des bonnes et mauvaises réponses, ce qui permet de corriger facilement après l'examen une erreur d'étourderie effectuée lors de la conception du sujet. La façon de spécifier le barème dans le fichier LaTeX sera expliquée à la section (un barème par défaut est utilisé quand aucune indication n'est donnée).

En cliquant sur le bouton Corriger, la correction est alors effectuée (cela peut prendre un peu de temps si on a aussi demandé la lecture du barème).

#### Barème

Le barème utilisé pour la notation des copies est indiqué dans le fichier source LaTeX du questionnaire, à l'aide de la commande `bareme`. Elle peut être utilisée dans un environnement `question` ou `questionmult`, pour fixer des paramètres de barème concernant toutes les réponses, mais aussi dans l'environnement `reponses`, pour donner des indications de barème ne concernant qu'une réponse. L'argument de la commande LaTeX bareme est constitué d'indications du type `parametre=valeur`, séparés par des virgules. Les paramètres utilisables sont les suivants (le tableau indique aussi dans quels cadres ces paramètres peuvent être utilisés) :

paramètre | simple | multiple | valeur
Q | R | Q | R
e | ● |  | ● |  | La note affectée en cas d'incohérence des réponses : plusieurs cases cochées pour une question simple, ou, pour une question multiple, case « aucune de ces réponses n'est correcte » cochée en même temps qu'une autre case.
v | ● |  | ● |  | La note affectée en cas de non-réponse (aucune case n'est cochée).
d |  |  | ● |  | Un décalage, c'est-à-dire une valeur ajoutée à toutes les notes qui ne relèvent pas des cas correspondant aux paramètres e et v.
p |  |  | ● |  | La note plancher. Si le calcul de la note obtenue à la question donne une valeur inférieure à la valeur plancher, cette note est ramenée à la valeur plancher.
b | ● |  | ● | ● | Points à donner pour une bonne réponse à une question.
m | ● |  | ● | ● | Points à donner pour une mauvaise réponse à une question.
|  | ● |  |  | Sans nom de paramètre (syntaxe `\bareme{2}`), on indique le nombre de points à donner si l'étudiant a coché cette réponse.
auto | ● |  |  |  | Avec ce paramètre, la valeur de la réponse numéro i sera auto+i-1. Cette option est principalement utilisée avec `\QuestionIndicative` (voir section ).
mz | ● |  | ● |  | Ce paramètre impose un barème du type "maximum ou zéro" : si les réponses à la question sont toutes les bonnes, alors la note attribuée sera mz. Sinon, elle sera nulle.
haut |  |  | ● |  | En donnant à ce paramètre une valeur n, la note attribuée à une réponse parfaite sera n, et un point sera enlevé par erreur.
MAX | ● |  | ● |  | Donne la valeur maximale attribuée à la question (pour une « question notée sur 5 », on peut mettre MAX=5). À renseigner uniquement si elle ne correspond pas à la note obtenue en mettant toutes les bonnes réponses.
formula | ● |  | ● |  | Donne directement le score de la question, souvent par le biais d'une formule faisant intervenir des variables (voir ), sans tenir compte des valeurs de `b` et `m`.
set.XXX | ● | ● | ● | ● | Donne une valeur particulière à la variable nommée XXX, qui pourra être utilisée par la suite par `formula`. Dans le contexte d'une réponse, la valeur est attribuée uniquement dans le cas où la case est cochée.
default.XXX | ● |  | ● |  | Donne une valeur à la variable XXX si aucune case cochée n'en a déjà donnée une par le biais de `set.XXX`.
requires.XXX | ● |  | ● |  | Signale une saisie incohérente (donc l'application du score donné par la valeur de `e`) dans la cas où aucune valeur n'a été donnée à la variable XXX.

Le barème par défaut pour une question simple est `e=0,v=0,b=1,m=0`, ce qui donne un point pour une bonne réponse et aucun point dans tous les autres cas. Le barème par défaut pour une question multiple est `e=0,v=0,b=1,m=0,p=-100,d=0`, ce qui donne un point pour chaque case qui est cochée ou non à bon escient (case d'une bonne réponse cochée, ou case d'une mauvaise réponse non cochée).

La commande LaTeX `\bareme` peut aussi être utilisée hors des définitions des questions, avec les paramètres suivants :

- `SUF=`x permet de donner un total de points suffisant pour obtenir la note maximale : si on fixe la note maximale à 20 par exemple, une copie ayant un total de points de 12 avec l'utilisation de SUF=15 se verra attribuer la note de 12/15*20=16, quel que soit le total d'une copie ayant toutes les bonnes réponses.

- `allowempty=x` permet à l'étudiant de laisser x questions sans réponse. Parmi les questions laissées sans réponse par l'étudiant, x (ou moins si il n'y en a pas autant) seront annulées (c'est-à-dire qu'elles ne seront pas prises en compte pour le calcul du score total).

L'utilisation combinée de tous ces paramètres permet de définir toutes sortes de barèmes, comme dans l'exemple suivant :

    \documentclass{article}

    \usepackage[utf8x]{inputenc}
    \usepackage[T1]{fontenc}

    \usepackage[francais,bloc,completemulti]{automultiplechoice}

    \begin{document}

    % preparation du groupe de questions appelé qqs (on mettra au maximum
    % 20 elements dans ce groupe) :

    \element{qqs}{
    \begin{question}{le bon choix}
      Combien de points voulez-vous à cette question~?
      \begin{reponses}
        \bonne{Le maximun : 10}\bareme{10}
        \mauvaise{Seulement 5}\bareme{5}
        \mauvaise{Deux me suffiront}\bareme{2}
        \mauvaise{Aucun, merci}\bareme{0}
      \end{reponses}
    \end{question}
    }

    \element{qqs}{
    \begin{questionmult}{engrange}
      Engrangez des points gratuitement en cochant les cases ci-dessous~:
      \begin{reponses}
        \bonne{2 points}\bareme{b=2}
        \mauvaise{Un point négatif}\bareme{b=0,m=-1}
        \bonne{3 points}\bareme{b=3}
        \bonne{1 point}
        \bonne{Un demi point}\bareme{b=0.5}
      \end{reponses}
    \end{questionmult}
    }

    \element{qqs}{
    \begin{questionmult}{tout ou rien}\bareme{mz=3}
      Il faut cocher exactement comme il faut pour avoir trois points, sinon vous n'en
      aurez aucun.
      \begin{reponses}
        \mauvaise{Fausse}
        \mauvaise{Fausse}
        \bonne{Juste}
        \bonne{Juste}
      \end{reponses}
    \end{questionmult}
    }

    \element{qqs}{
    \begin{questionmult}{2 au plus}\bareme{haut=2}
      Deux points pour tout juste, et un point pour chaque erreur...
      \begin{reponses}
        \bonne{Bonne réponse}
        \bonne{Ceci est juste}
        \bonne{Exact}
        \mauvaise{Faux~!}
        \mauvaise{Ne pas cocher~!}
      \end{reponses}
    \end{questionmult}
    }

    \element{qqs}{
    \begin{question}{attention}\bareme{b=2}
      Alors là, la réponse très fausse mérite sanction (-2 points), mais
      viser juste rapporte 2 points.
      \begin{reponses}
        \bonne{C'est bon !}
        \mauvaise{Pas bon}
        \mauvaise{Pas bon}
        \mauvaise{Pas bon}
        \mauvaise{Très faux !}\bareme{-2}
      \end{reponses}
    \end{question}
    }

    \element{qqs}{
    \begin{questionmult}{au choix}
      Choisissez vos points :
      \begin{reponses}
        \bonne{J'en veux 2}\bareme{b=2}
        \mauvaise{J'en donne trois}\bareme{b=0,m=3}
        \bonne{J'en veux un (et sinon j'en perds un)}\bareme{m=-1}
      \end{reponses}
    \end{questionmult}
    }

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \exemplaire{20}{

    \noindent{\bf QCM  \hfill TEST DE BARÈME}

    \vspace*{.5cm}
    \begin{minipage}{.4\linewidth}
    \centering\large\bf Test\\ Examen du 01/01/2008\end{minipage}
    \champnom{\fbox{\begin{minipage}{.5\linewidth}
    Nom et prénom :

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

    \begin{center}\em
    Durée : 10 minutes.
    \end{center}
    \vspace{1ex}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \melangegroupe{qqs}

    \restituegroupe{qqs}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    \clearpage

    }

    \end{document}

#### Barèmes généraux

Pour utiliser un barème de manière générale pour tout un ensemble de questions, on pourra le définir dans une commande LaTeX, comme dans l'exemple suivant :

    \def\barQmult{haut=3,p=-1}

    \begin{questionmult}\bareme{\barQmult}
    [...]
    \end{questionmult}

Une autre possibilité est offerte par les commandes LaTeX `\baremeDefautS` et `\baremeDefautM`, à utiliser en début de document (en dehors de la commande `\exemplaire`), qui permettent de donner des valeurs par défaut pour les barèmes des questions simples et des questions multiples :

    \baremeDefautM{haut=3,p=-1}

Dans certains cas de figure, il peut être intéressant de définir un barème de manière générale en fonction du nombre de réponses proposées. Il suffit pour cela de mettre les valeurs intervenant dans le barème sous la forme de formules utilisant la variable `N`. Par exemple, pour obtenir un barème qui fixe à 4 la note maximale et tel que l'espérance de la note d'un étudiant cochant au hasard chaque case soit de 1, on peut utiliser le barème `d=4,b=0,m=-(4-1)*2/N` (qui donne une note de -2 si toutes les réponses sont fausses, c'est-à-dire si on a coché les cases qu'il ne fallait pas cocher et si on n'a pas coché les cases qu'il fallait cocher). Les opérations acceptées dans ces formules sont les quatre opérations simples (+ - * /), l'opérateur de test `( ? : )`, les parenthèses et plus généralement toutes celles reconnues par perl.

D'autres variables sont aussi utilisables :

- `N` est le nombre de réponses proposées, sans compter la réponse automatiquement ajoutée par l'option `completemulti`.

- `NB` est le nombre de bonnes réponses à la question (sans tenir compte des cases cochées ou non).

- `NBC` est le nombre de bonnes réponses qui ont été cochées.

- `NM` est le nombre de mauvaises réponses à la question (sans tenir compte des cases cochées ou non).

- `NMC` est le nombre de mauvaises réponses qui ont été cochées.

- `IS` vaut 1 si la question est simple et 0 sinon.

- `IMULT` vaut 1 si la question est multiple et 0 sinon.

#### Du barème aux notes des étudiants

Les notes des étudiants sont calculées de la manière suivante : pour chaque étudiant,

1. Le barème de chaque question est appliqué pour obtenir les scores obtenus aux questions.

2. La somme des scores de toutes les questions (sauf les questions indicatives) est calculée : on obtient le score total de l'étudiant.

3. Si une note maximale non-nulle est donnée en paramètre (dans l'onglet Projet de la fenêtre ), le score total est divisé par le score maximal (c'est-à-dire le score total calculé pour une copie parfaite), puis multiplié par la note maximale, pour obtenir la note de l'étudiant. De cette façon, un étudiant ayant répondu de manière parfaite se verra attribuer la note maximale. Avec une note maximale fixée à 100, la note de l'étudiant pourra être vue comme un pourcentage de bonnes réponses. En France, on utilise souvent une note maximale égale à 20.

### Identification des étudiants

Cette étape n'est pas obligatoire. Il s'agit d'associer chaque copie à un étudiant. La lecture du nom d'étudiant n'est pas faite de manière automatique, mais deux possibilités raisonnables sont prévues :

1. Il est possible de demander aux étudiants de s'identifier sur leur copie grâce à leur numéro d'étudiant, qui sera renseigné en cochant une case par chiffre. Une commande LaTeX est prévue pour mettre cette méthode en œuvre sur la copie (voir la partie ). Après l'examen, les copies seront identifiées automatiquement à partir d'une liste mettant en correspondance les numéros d'étudiants et les noms.

2. Sans saisie des numéros d'étudiants, ou dans le cas où l'identification automatique n'a pas parfaitement fonctionné (par exemple en cas d'erreur de saisie des étudiants), l'interface graphique permet une association manuelle assistée.

Sélectionnons tout d'abord l'onglet Notation de l'interface graphique.

#### Liste des étudiants

Il faut tout d'abord disposer d'une liste d'étudiants. Cette liste pourra bien sûr être utilisée pour plusieurs QCM. Elle devra être préparée au format CSV, avec éventuellement des lignes de commentaires au début préfixées par le caractère ``#`' :

    # liste des étudiants de première année
    nom:prenom:no:email
    Bienvenüe:Alexis:001:paamc@passoire.fr
    Boulix:Jojo:002:jojo.boulix@rien.xx
    Noël:Père:003:pere.noel@pole-nord.xx

Les lignes du fichier qui commencent par le caractère ``#'` sont des commentaires. La première des autres lignes contient, séparés par le caractère ``:'`, les titres des colonnes. Ensuite, en une ligne par étudiant, on place les informations voulues. Il est préférable d'inclure au moins une colonne nommée `nom`.

On peut remplacer le séparateur ``:'` par une virgule, un point-virgule ou une tabulation. Il faut cependant utiliser le même séparateur partout dans le fichier contenant la liste des étudiants. Le séparateur utilisé sera détecté en prenant le caractère (parmi les quatre possibles) qui apparaît le plus de fois dans la première ligne qui n'est pas un commentaire.

Tout fichier au format CSV devrait convenir.

La liste des étudiants préparée (que se soit une liste simple ou comprenant plus d'informations), nous la désignons maintenant en la sélectionnant à partir du bouton Choisir de la partie Identification des étudiants. Il faut également désigner l'identifiant unique qui permettra d'identifier les étudiants (en général, on choisit la colonne qui contient des numéros d'étudiants). Enfin, en vue d'une association automatique, il faut encore choisir le nom du code adopté dans la commande LaTeX `AMCcode`.

#### Association

##### Association automatique

En appuyant sur le bouton Automatique de la partie Identification des étudiants, la recherche parmi la liste des codes renseignés par les étudiants s'opère. On peut ensuite observer ou peaufiner le résultat grâce à une association manuelle.

Pour effectuer une association automatique, il est nécessaire d'avoir utilisé au moins une fois la commande `AMCcode` (voir ) dans le fichier source LaTeX, et d'avoir une liste d'étudiants avec une colonne qui contient une référence (en général un numéro d'étudiant) qui sera identique à la saisie effectuée au niveau des cases produites par `AMCcode`.

##### Association manuelle

Pour ouvrir la fenêtre de reconnaissance des noms d'étudiants, cliquons sur le bouton Manuelle de la partie Identification des étudiants. Cette fenêtre se compose d'une partie haute présentant successivement les noms inscrits par les étudiants, d'une partie basse comprenant un bouton par étudiant de la liste que nous avons fabriquée, ainsi que d'une partie droite qui permet une navigation aisée parmi les copies à identifier. Nous cliquons sur le bouton correspondant au nom inscrit en partie haute pour chaque page qui nous est présentée (par défaut, seules les copies non ou mal identifiées sont présentées. Ceci peut être changé en cochant la case associés). Quand toutes les pages sont lues, un fond bleu apparaît à la place des noms, et il ne nous reste plus qu'à cliquer sur le bouton Enregistrer de la fenêtre.

### Export de la liste des notes

À ce stade, nous pouvons récupérer la liste des notes sous plusieurs formats (pour l'instant CSV et OpenOffice), grâce au bouton Exporter. Cet export s'accompagnera de l'ouverture du fichier produit par le logiciel approprié (si il est installé).

#### Export ODS (OpenOffice, LibreOffice)

Dans le fichier exporté, le codage couleur suivant est adopté :

gris

  correspond aux cases qui ne comportent aucune information. Il s'agit par exemple des scores d'un étudiant absent, ou des scores aux questions qui n'ont pas été présentées à l'étudiant correspondant.

jaune

  utilisé pour repérer les questions où l'étudiant n'a pas fourni de réponse.

rouge

  utilisé pour les questions où l'étudiant a répondu de manière invalide : il a coché plus d'une case pour une question simple, ou il a coché une ou plusieurs cases en plus de la case Aucune de ces réponses n'est correcte.

violet

  utilisé pour les cases correspondant à des questions indicatives (ne comptent pas pour la note finale de l'étudiant).

### Annotation

En appuyant sur le bouton Annoter les copies, l'annotation des pages des étudiants commencera : sur chaque scan, les annotations suivantes sont effectuées (nous détaillons ici les annotations par défaut, qui peuvent être configurées) :

- les cases cochées à tort par l'étudiant sont entourées en rouge ;

- les cases non-cochées qui auraient dû l'être sont cochées en rouge ;

- les cases cochées et qui devaient l'être sont cochées en bleu ;

- pour chaque question, sont indiquées la note obtenue ainsi que la note maximale pouvant être obtenue ;

- la note globale de la copie est indiquée en première page de la copie.

Le texte inscrit en haut de la première page de chaque copie peut être configuré ( Édition Préférences Annotation En-tête ou Édition Préférences Projet Annotation des copies Texte d'en-tête ). Les substitutions suivantes s'applioquent sur ce texte (voir pour une explication de la signification de ces valeurs) :

`%S`

  est remplacé par le score total de l'étudiant.

`%M`

  est remplacé par le score maximal (score obtenu par l'étudiant si il ne fait aucune erreur).

`%s`

  est remplacé par la note de l'étudiant.

`%m`

  est remplacé par la note maximale.

`%(ID)`

  est remplacé par le nom de l'étudiant.

`%(COL)`

  est remplacé par la valeur de la colonne COL dans la liste des étudiants pour l'étudiant considéré.

Cette opération est effectuée page par page, et le résultat est constitué de copies corrigées au format PDF. Le nom du fichier PDF qui contiendra la copie corrigée d'un étudiant donné est formé à partir du modèle indiqué dans le champ Modèle de nom de fichier. Dans ce modèle, les textes du type « (col) » seront remplacés par le contenu de la colonne nommée `col` dans le fichier listant les étudiants (voir section ). Si on laisse ce champ vide, une valeur par défaut formée du nom et du numéro d'étudiant de l'étudiant sera utilisée.

## Utilisations particulières

### Photocopie du sujet

Comme expliqué dans , 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 ).

- É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 example 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 ) ;

- 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}
     & &\\
    \AMCcode{NumEtud}{10}\hspace*{\fill}&
    \AMCcode{Classe}{2}\hspace*{\fill}&
    \AMCcode{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}
    \wrongchoice{A }%
    \wrongchoice{B }%
    \wrongchoice{C }%
    \wrongchoice{D }%
    \wrongchoice{E }%
    \end{reponsesperso}
    \end{question}

### 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

- 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 (on suppose que les questions ont été préalablement insérées dans un groupe appelé `general`) :

      \newcommand{\sujet}{
        \onecopy{1}{

          \noindent{\bf AutoMultipleChoice  \hfill TEST}

          \vspace*{.5cm}

          \begin{center}\em
            Test des copies pr\'e-remplies.
          \end{center}

          \hfill \champnom{\fbox{
              \begin{minipage}{.5\linewidth}
                Nom:

                \Large\bf \prenom{} \nom{}

                \vspace*{1mm}
              \end{minipage}
            }}

          \noindent\hrulefill

          \vspace{1ex}

          \melangegroupe{general}
          \restituegroupe{general}

          \AMCassociation{\id}
        }
      }

      \csvreader[head to column names]{liste.csv}{}{\sujet}

  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`.

- 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".

## Manuel des commandes

Vous pouvez vous passer de la lecture de cette partie si vous souhaitez utiliser uniquement l'interface graphique. Cependant, toutes les actions effectuées par l'interface graphique peuvent aussi être exécutées par les différentes commandes dont nous décrivons ici la syntaxe.

auto-multiple-choice 1 Auto Multiple Choice @/PACKAGE_V_DEB/@
auto-multiple-choice Gestion automatisée de questionnaires QCM
`auto-multiple-choice` action arguments `auto-multiple-choice` projet

#### Description

La commande `auto-multiple-choice` transmet à la commande `AMC-action.pl` les arguments qu'on lui donne.

La deuxième forme, qui ne mentionne aucune action, appelle l'interface graphique `AMC-gui.pl` en lui transmettant éventuellement le nom d'un projet à ouvrir.

#### See also

Différentes actions possibles : AMC-prepare 1 , AMC-imprime 1 , AMC-analyse 1 , AMC-note 1 , AMC-association-auto 1 , AMC-export 1 , AMC-annote 1 , AMC-regroupe 1 .