<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"/usr/share/xml/docbook/schema/dtd/4.5/docbookx.dtd">
<article lang="fr">
  <title>Auto Multiple Choice</title>

  <articleinfo>
    <title>Auto Multiple Choice</title>

    <subtitle>Conception et correction automatisée de QCM.</subtitle>

    <abstract>
      <para>AMC est un ensemble d'utilitaires permettant l'utilisation de QCM
      rédigés en LaTeX et leur correction automatique à partir des scans des
      copies des étudiants. Le présent document décrit son utilisation (pour
      la version @/PACKAGE_V_DEB/@~svn @/PACKAGE_V_SVN/@).</para>

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

    <author>
      <firstname>Alexis</firstname>

      <affiliation>
        <address><email>paamc@passoire.fr</email></address>
      </affiliation>

      <surname>Bienvenüe</surname>
    </author>

    <copyright>
      <year>2008-2011</year>

      <holder>Alexis Bienvenüe</holder>
    </copyright>

    <legalnotice>
      <para>Ce document peut être utilisé selon les termes de la Licence
      publique générale de GNU version 2 ou suivante.</para>
    </legalnotice>
  </articleinfo>

  <sect1>
    <title>Licence</title>

    <para>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.</para>

    <para>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 : <ulink
    url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>.</para>
  </sect1>

  <sect1 id="prerequis">
    <title>Prérequis</title>

    <sect2>
      <title>Système d'exploitation</title>

      <para>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.</para>
    </sect2>

    <sect2>
      <title>Logiciels</title>

      <note>
        <para>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é.</para>
      </note>

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

      <itemizedlist>
        <listitem>
          <para>LaTeX</para>
        </listitem>

        <listitem>
          <para>ImageMagick</para>
        </listitem>

        <listitem>
          <para>Perl, ainsi que Gtk2-Perl et Glade::XML pour l'interface
          graphique</para>
        </listitem>
      </itemizedlist>

      <sect3>
        <title>Versions conseillées pour les logiciels utilisés par
        AMC</title>

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

        <itemizedlist>
          <listitem>
            <para>Avec d'anciennes versions de <package>Net::CUPS</package>
            (paquet debian <package>libnet-cups-perl</package>), 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 <package>Net::CUPS</package>.</para>
          </listitem>

          <listitem>
            <para>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.</para>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>LaTeX</title>

      <para>Une connaissance de LaTeX est bien utile pour la conception des
      QCM. Cependant, les modèles fournis permettent à ceux qui ne sont par
      réfractaires aux formats de documents du type LaTeX/XML/HTML d'écrire
      assez rapidement leurs premiers formulaires.</para>
    </sect2>
  </sect1>

  <sect1 id="notesutilisation">
    <title>Notes d'utilisation</title>

    <sect2>
      <title>Limitations numériques</title>

      <para>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.</para>

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

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

    <sect2>
      <title>Versions</title>

      <para>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 :</para>

      <itemizedlist>
        <listitem>
          <para>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
          <option>versionA</option> dans l'appel au paquet
          <package>automultiplechoice</package> dans le fichier LaTeX. Exemple
          :</para>

          <programlisting>\usepackage[bloc,completemulti,versionA]{automultiplechoice}</programlisting>
        </listitem>

        <listitem>
          <para>À 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.</para>
        </listitem>

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

          <programlisting>\documentclass[a4paper]{article} </programlisting>
        </listitem>

        <listitem>
          <para>À partir de la version 0.345, les commandes
          <command>\AMCformulaireQuestion</command> et
          <command>\AMCformulaireReponse</command> ont été renommées
          respectivement <command>\AMCformQuestion</command> et
          <command>\AMCformAnswer</command>.</para>
        </listitem>

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

        <listitem>
          <para>La commande <command>\AMCcode</command> 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. </para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Installation</title>

      <para>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
      <ulink url="http://home.gna.org/auto-qcm/download">site
      d'AMC</ulink>.</para>

      <para>Vous pouvez aussi télécharger l'archive des sources dans l'<ulink
      url="http://download.gna.org/auto-qcm/">espace de téléchargement</ulink>
      du projet, puis utiliser les commandes suivantes dans un
      terminal :</para>

      <screen>tar xvzf auto-multiple-choice_xxxx_precomp.tar.gz
cd auto-multiple-choice-xxx
make
sudo make install</screen>
    </sect2>

    <sect2>
      <title>Accès</title>

      <para>Une fois installé, l'interface graphique peut être appelée en
      choisissant <menuchoice>
          <guimenu>Applications</guimenu>

          <guisubmenu>Éducation</guisubmenu>

          <guimenuitem>Auto Multiple Choice</guimenuitem>
        </menuchoice> dans le menu général de Gnome (ou son équivalent dans
      KDE ou autre), mais on peut aussi utiliser la commande
      <userinput>auto-multiple-choice</userinput>.</para>
    </sect2>
  </sect1>

  <sect1 id="latex">
    <title>Préparation du fichier LaTeX</title>

    <para>Avant toute chose, un questionnaire à choix multiples doit être
    décrit sous la forme d'une fichier LaTeX utilisant le package
    <package>automultiplechoice</package>. Ce chapitre décrit les commandes
    LaTeX permettant d'écrire un QCM. Vous pouvez à tout moment tester le
    fichier LaTeX que vous êtes en train de concevoir en le compilant avec la
    commande <command>latex</command> puis en visualisant le fichier dvi qui
    en résulte.</para>

    <para>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.</para>

    <sect2>
      <title>Un exemple simple</title>

      <para><!--NAME: Exemple simple
DESC: Un exemple simple (issu de la documentation) avec une question simple et une question multiple.--><programlisting
      id="modeles-simple.tex" linenumbering="numbered">\documentclass[a4paper]{article}

\usepackage[utf8x]{inputenc}    <co id="simple.latin1"
            linkends="simple.latin1.exp" />
\usepackage[T1]{fontenc}

\usepackage[francais,bloc,completemulti]{automultiplechoice}    <co
            id="simple.amc" linkends="simple.amc.exp" />
\begin{document}

\exemplaire{10}{    <co id="simple.exemplaire"
            linkends="simple.exemplaire.exp" />

%%% debut de l'en-tête des copies :    <co id="simple.entete"
            linkends="simple.entete.exp" />

\noindent{\bf QCM  \hfill TEST}

\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
\centering\large\bf Test\\ Examen du 01/01/2008\end{minipage}
\champnom{\fbox{    <co id="simple.champnom" linkends="simple.champnom.exp" />
                \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}    <co id="simple.qr" linkends="simple.qr.exp" />
  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}    <co id="simple.qrmult"
            linkends="simple.qrmult.exp" />
  Parmi les villes suivantes, lesquelles sont des préfectures~?
  \begin{reponses}
    \bonne{Poitiers}
    \mauvaise{Sainte-Menehould}
    \bonne{Avignon}
  \end{reponses}
\end{questionmult}

\clearpage    <co id="simple.clear" linkends="simple.clear.exp" />

}   <co id="simple.fin" linkends="simple.fin.exp" />

\end{document}
</programlisting></para>

      <para>Quelques précisions sur cet exemple :</para>

      <para><calloutlist>
          <callout arearefs="simple.latin1" id="simple.latin1.exp">
            <para>Les deux paquets <package>inputenc</package> et
            <package>fontenc</package> 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.</para>
          </callout>

          <callout arearefs="simple.amc" id="simple.amc.exp">
            <para>Les options utilisées ici pour le paquet LaTeX
            <package>automultiplechoice</package> permettent d'éviter le
            changement de page à l'intérieur des questions
            (<option>bloc</option>) 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 (<option>completemulti</option>).</para>
          </callout>

          <callout arearefs="simple.exemplaire" id="simple.exemplaire.exp">
            <para>La commande <command>exemplaire</command> permet de
            fabriquer autant d'exemplaires (différents) du questionnaire QCM
            que l'on souhaite (ici, 10). Voir <xref linkend="sec.unecopie" />
            pour une syntaxe alternative utilisant un environnement.</para>
          </callout>

          <callout arearefs="simple.entete" id="simple.entete.exp">
            <para>Les lignes qui commencent ici permettent la mise en forme de
            l'en-tête de chaque copie.</para>
          </callout>

          <callout arearefs="simple.champnom" id="simple.champnom.exp">
            <para>La commande <command>champnom</command> permet d'indiquer la
            partie du questionnaire dans laquelle chaque étudiant inscrira son
            nom.</para>
          </callout>

          <callout arearefs="simple.qr" id="simple.qr.exp">
            <para>Les environnements <command>question</command> et
            <command>reponses</command> 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 :
            <emphasis>prez</emphasis>).</para>
          </callout>

          <callout arearefs="simple.qrmult" id="simple.qrmult.exp">
            <para>Les environnements <command>questionmult</command> et
            <command>reponses</command> 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 <option>completemulti</option>
            passée au paquet en ligne 6).</para>
          </callout>

          <callout arearefs="simple.clear" id="simple.clear.exp">
            <para>La commande <command>clearpage</command> permet de passer à
            la double page suivante pour le début de la copie suivante.</para>
          </callout>

          <callout arearefs="simple.fin" id="simple.fin.exp">
            <para>Cette fermeture d'accolade marque la fin de la commande
            <command>exemplaire</command> (débutée à la ligne 9).</para>
          </callout>
        </calloutlist></para>
    </sect2>

    <sect2>
      <title>Un exemple avec groupes de questions mélangées</title>

      <para>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. <!--NAME: Groupes
DESC: Un exemple (issu de la documentation) où les questions sont mélangées à l'intérieur de deux groupes différents.--><programlisting
      id="modeles-groupes.tex" linenumbering="numbered">\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}
</programlisting></para>
    </sect2>

    <sect2 id="secensemble">
      <title>Un exemple avec une feuille de réponses séparée</title>

      <para>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 !</para>

      <para><!--NAME: Réponses séparées
DESC: Un exemple (issu de la documentation) où toutes les cases à cocher sont regroupées sur une page à part pour chaque étudiant.--><programlisting
      id="modeles-ensemble.tex" linenumbering="numbered">\documentclass[a4paper]{article}

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

\usepackage[francais,bloc,completemulti,ensemble]{automultiplechoice}    <co
            id="ensemble.opt" linkends="ensemble.opt.exp" />
\begin{document}

\AMCrandomseed{1237893}

\def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par {\sc Question #1 :} }    <co
            id="ensemble.fq" linkends="ensemble.fq.exp" />

\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    <co id="ensemble.cp" linkends="ensemble.cp.exp" />

\AMCdebutFormulaire    <co id="debut.form" linkends="debut.form.exp" />

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

{\large\bf Feuille de réponses :}
\hfill \champnom{\fbox{    <co id="ensemble.nom" linkends="ensemble.nom.exp" />
    \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    <co id="ensemble.formulaire" linkends="ensemble.formulaire.exp" />

\clearpage    

}  

\end{document}</programlisting>Les remarques suivantes devraient éclaircir cet
      exemple :<calloutlist>
          <callout arearefs="ensemble.opt" id="ensemble.opt.exp">
            <para>C'est l'option <option>ensemble</option> qui permet de faire
            ce que l'on veut faire ici.</para>
          </callout>

          <callout arearefs="ensemble.fq" id="ensemble.fq.exp">
            <para>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).</para>
          </callout>

          <callout arearefs="ensemble.cp" id="ensemble.cp.exp">
            <para>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
            <command>\AMCcleardoublepage</command> 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
            <command>\clearpage</command>.</para>
          </callout>

          <callout arearefs="debut.form" id="debut.form.exp">
            <para>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 <command>AMCcode</command>.</para>
          </callout>

          <callout arearefs="ensemble.nom" id="ensemble.nom.exp">
            <para>La case où écrire son nom doit normalement être située sur
            la page des réponses !</para>
          </callout>

          <callout arearefs="ensemble.formulaire" id="ensemble.formulaire.exp">
            <para>C'est la commande LaTeX <command>formulaire</command> qui
            écrit toutes les cases à cocher.</para>
          </callout>
        </calloutlist></para>

      <warning>
        <para>Quand on utilise une page de réponses séparée, des lettres (ou
        des chiffres, avec l'utilisation de l'option
        <option>chiffres</option>, voir <xref
        linkend="sec.package.options" />) 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.</para>
      </warning>
    </sect2>

    <sect2>
      <title>Description des commandes LaTeX</title>

      <sect3 id="sec.package.options">
        <title>Options du paquet</title>

        <para>L'utilisation du paquet <package>automultiplechoice</package> se
        fait grâce à la ligne <programlisting>\usepackage[...]{automultiplechoice}</programlisting>où
        les pointillés sont remplacés par une liste d'options séparées par des
        virgules. Les options disponibles sont les suivantes :</para>

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

          <listitem>
            <para><option>bloc</option> : place chaque question dans un bloc,
            de telle sorte qu'elle ne puisse pas être coupée par un saut de
            page.</para>
          </listitem>

          <listitem>
            <para><option>completemulti</option> : 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.</para>
          </listitem>

          <listitem>
            <para><option>ordre</option> : annule le mélange automatique de
            l'ordre des réponses dans toutes les questions.</para>
          </listitem>

          <listitem>
            <para><option>correc</option> : produit la correction du QCM, et
            non le sujet.</para>
          </listitem>

          <listitem>
            <para><option>ensemble</option> : 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 section <xref
            linkend="secensemble" />).</para>
          </listitem>

          <listitem>
            <para><option>chiffres</option> : si on utilise l'option
            <option>ensemble</option>, l'option <option>chiffres</option>
            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.</para>
          </listitem>

          <listitem>
            <para><option>outsidebox</option> : si on utilise l'option
            <option>ensemble</option>, 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.</para>
          </listitem>

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

          <listitem>
            <para><option>catalog</option> : 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 <command>\exemplaire</command> pour cette
            présentation.</para>
          </listitem>
        </itemizedlist>
      </sect3>

      <sect3 id="sec.unecopie">
        <title>Description d'une copie</title>

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

        <programlisting>\exemplaire{50}{ ... }</programlisting>

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

        <programlisting>\begin{copieexamen}[50]
...
\end{copieexamen}</programlisting>

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

      <sect3 id="latex.qr">
        <title id="latex.qr.title">Questions et réponses</title>

        <para>Pour les questions simples (une seule réponse correcte), on
        utilisera le modèle suivant : <programlisting
        linenumbering="unnumbered">\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}</programlisting></para>

        <important>
          <para>Il faut utiliser un <parameter>identifiant</parameter>
          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 <parameter>marine-marchande.2</parameter> ou
          <parameter>123.27</parameter>), car cette forme d'identifiants est
          réservée à la saisie de longs codes (par exemple grâce à
          <command>\AMCcode</command> - voir <xref
          linkend="latex.codes" />).</para>
        </important>

        <note>
          <para>Le nombre de réponses pour une question est actuellement
          limité à 20.</para>
        </note>

        <para>Pour demander à garder l'ordre des réponses pour cette
        question-ci, on peut utiliser l'option <option>o</option> de
        l'environnement <option>reponses</option>, en remplaçant la ligne 3
        par <programlisting>\begin{reponses}[o]</programlisting></para>

        <para>Pour mettre les réponses sur deux colonnes, on peut utiliser le
        package <package>multicol</package> en mettant dans le préambule
        (juste après l'appel au paquet <package>automultiplechoice</package>
        par exemple) la ligne <programlisting>\usepackage{multicol}</programlisting>et
        en incluant l'environnement reponses à l'intérieur d'un environnement
        multicols de la manière suivante : <programlisting>  \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}</programlisting></para>

        <para>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 <option>reponseshoriz</option> au lieu de
        <option>reponses</option>.</para>

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

        <para>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
        <code>\QuestionIndicative</code>, comme dans l'exemple
        suivant :</para>

        <para><programlisting>\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}</programlisting></para>
      </sect3>

      <sect3>
        <title>Réponses sur plusieurs colonnes</title>

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

        <para>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
        <command>\AMCBoxedAnswers</command> 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 :</para>

        <para><programlisting>\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}</programlisting></para>

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

        <para><programlisting>\AMCinterBrep=.5ex</programlisting></para>
      </sect3>

      <sect3>
        <title>Espacement entre les réponses</title>

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

        <programlisting>\AMCinterIrep=.75ex</programlisting>
      </sect3>

      <sect3>
        <title>Groupes de questions</title>

        <para>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.</para>

        <para>On peut mettre une à une des questions dans un groupe, comme
        dans l'exemple suivant : <programlisting>\element{ungroupe}{
  \begin{question}{facile}
    Alors, combien font un plus un~?
    \begin{reponseshoriz}
      \bonne{deux}
      \mauvaise{zéro}
      \mauvaise{trois}
    \end{reponseshoriz}
  \end{question}
}</programlisting></para>

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

        <para>Une fois un groupe constitué, on peut mélanger les questions qui
        le composent par la commande <command>melangegroupe</command> : par
        exemple, <programlisting>\melangegroupe{ungroupe}</programlisting></para>

        <para>Enfin, on restitue les questions du groupe par la commande
        <command>restituegroupe</command>, comme dans <programlisting>\restituegroupe{ungroupe}</programlisting></para>

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

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

        <itemizedlist>
          <listitem>
            <para><code>\restituegroupe[n]{ungroupe}</code> (utilisation du
            paramètre optionnel <replaceable>n</replaceable>) restitue
            uniquement les <replaceable>n</replaceable> premiers éléments du
            groupe.</para>
          </listitem>

          <listitem>
            <para><code>\cleargroup{groupe}</code> efface tout le contenu du
            groupe.</para>
          </listitem>

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

        <para>À 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
        <command>exemplaire</command>) :</para>

        <programlisting>\cleargroup{tout}
\melangegroupe{GA}\copygroup[4]{GA}{tout}
\melangegroupe{GB}\copygroup[5]{GB}{tout}
\copygroup{GO}{tout}
\melangegroupe{tout}
\restituegroupe{tout}</programlisting>
      </sect3>

      <sect3>
        <title>Style des cases à cocher</title>

        <para>La commande <command>\AMCboxDimensions</command> permet de
        modifier une ou plusieurs dimensions relatives aux cases à
        cocher :</para>

        <itemizedlist>
          <listitem>
            <para><option>size</option> représente la taille de ces
            cases ;</para>
          </listitem>

          <listitem>
            <para><option>rule</option> représente l'épaisseur du contour des
            cases ;</para>
          </listitem>

          <listitem>
            <para><option>down</option> représente la taille du déplacement
            vers le bas des cases.</para>
          </listitem>
        </itemizedlist>

        <para>Pour obtenir des cases plus petites, on pourra par exemple
        utiliser la commande</para>

        <programlisting>\AMCboxDimensions{size=1.7ex,down=.2ex}</programlisting>

        <para>Lors de l'utilisation de l'option <option>ensemble</option>, 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 <option>chiffres</option> est utilisée. Pour changer cela, il
        faut redéfinir la commande <command>\AMCchoiceLabel</command>, qui
        prend comme unique argument le nom du compteur utilisé pour la
        numérotation des cases. Ainsi, pour obtenir des lettres minuscules, on
        utilisera</para>

        <programlisting>\def\AMCchoiceLabel#1{\alph{#1}}</programlisting>

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

        <programlisting>\def\AMCchoiceLabel#1{\textLR{\Alph{#1}}}</programlisting>
      </sect3>

      <sect3>
        <title>Style du questionnaire</title>

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

        <para><programlisting>\def\AMCbeginQuestion#1#2{\par\noindent{\bf Question #1} #2\hspace*{1em}}</programlisting></para>

        <para>Le premier paramètre transmis à cette commande est le numéro de
        question à afficher. Le second paramètre contient
        <code>\multiSymbole</code> dans le cas dune question à plusieurs
        réponses possibles, et est vide dans les autres cas. La commande
        <code>\multiSymbole</code> 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 :</para>

        <para><programlisting>\def\multiSymbole{$\clubsuit$}</programlisting></para>

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

        <para><programlisting>\AMCnumero{1}</programlisting></para>

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

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

        <para><programlisting>\def\AMCbeginAnswer{}
\def\AMCendAnswer{}
\def\AMCanswer#1#2{#1 #2}
</programlisting></para>
      </sect3>

      <sect3>
        <title>Mise en page</title>

        <para>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 <command>geometry</command> du paquet LaTeX
        <package>geometry</package>. Par exemple, pour resserrer le haut des
        copies, on pourra utiliser <code>\geometry{top=3cm}</code> au lieu de
        la valeur 3.5cm utilisée par défaut, juste avant le
        <code>\begin{document}</code>.</para>
      </sect3>

      <sect3>
        <title>Style du formulaire séparé</title>

        <para>Il est aussi possible de modifier la mise en page du formulaire
        de réponses séparé produit avec l'option <option>ensemble</option>
        (voir section <xref linkend="secensemble" />).</para>

        <orderedlist>
          <listitem>
            <para>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 :</para>

            <programlisting>\AMCformHSpace=.3em
\AMCformVSpace=1.2ex
</programlisting>
          </listitem>

          <listitem>
            <para>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) :</para>

            <programlisting>\def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par{\bf Question #1 :}}
\def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1}
</programlisting>
          </listitem>
        </orderedlist>

        <para>Ces définitions sont à insérer juste après la balise
        <code>\begin{document}</code> dans le document LaTeX.</para>
      </sect3>

      <sect3 id="latex.codes">
        <title>Saisie de codes</title>

        <para>L'entrée de codes peut être aisément effectuée à l'aide de la
        commande LaTeX <command>AMCcode</command>, 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 :</para>

        <para><programlisting>\noindent\AMCcode{num.etud}{8}\hspace*{\fill}
\begin{minipage}{.5\linewidth}
$\longleftarrow{}$ codez votre numéro d'étudiant ci-contre,
et écrivez votre nom et prénom ci-dessous.

\vspace{3ex}

\champnom{\fbox{    
    \begin{minipage}{.9\linewidth}
      Nom et prénom :
      
      \vspace*{.5cm}\dotfill
      \vspace*{1mm}
    \end{minipage}
  }}
\end{minipage}
</programlisting></para>

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

        <para>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 <command>\AMCcodeHspace</command>,
        <command>\AMCcodeVspace</command> et
        <command>\AMCcodeBoxSep</command>, 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 :</para>

        <programlisting>\AMCcodeHspace=.5em
\AMCcodeVspace=.5em
\AMCcodeBoxSep=.1em</programlisting>
      </sect3>

      <sect3>
        <title>Choix du mélange</title>

        <para>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 <command>exemplaire</command>) :</para>

        <para><programlisting>\AMCrandomseed{1527384}</programlisting></para>

        <para>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 !</para>
      </sect3>

      <sect3>
        <title>Références à l'intérieur des copies</title>

        <para>Dans la description du sujet, les commandes LaTeX
        <command>\label</command> et <command>\ref</command> 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 <command>\AMClabel</command> et
        <command>\AMCref</command> peuvent leur être substituées : elles
        ajoutent le numéro de la copie avant leur argument avant de le
        transmettre à <command>\label</command> et
        <command>\ref</command>.</para>

        <para>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</para>

        <programlisting>\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}~?
    \begin{reponses}
      \bonne{Un tigre}
      \mauvaise{Une girafe}
      \mauvaise{Un éléphant}
      \mauvaise{Un chat}
    \end{reponses}
  \end{question}
}</programlisting>

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

        <programlisting>\setcounter{figure}{0}</programlisting>

        <para>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.</para>
      </sect3>

      <sect3>
        <title>Personnalisation des textes insérés par AMC</title>

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

        <itemizedlist>
          <listitem>
            <para><code>\AMCtext{none}{<replaceable>phrase</replaceable>}</code>
            remplace le texte par défaut « aucune de ces réponses n'est
            correcte » (en français) par la <replaceable>phrase</replaceable>
            fournie lors de l'utilisation de l'option
            <option>completemulti</option>.</para>
          </listitem>

          <listitem>
            <para><code>\AMCtext{corrected}{<replaceable>titre</replaceable>}</code>
            remplace « Correction » (en français) par le
            <replaceable>titre</replaceable> fourni sur la correction de
            l'examen.</para>
          </listitem>

          <listitem>
            <para><code>\AMCtext{catalog}{<replaceable>titre</replaceable>}</code>
            remplace « Catalogue » (en français) par le
            <replaceable>titre</replaceable> fourni sur le catalogue de
            questions fourni avec l'option <option>catalog</option>.</para>
          </listitem>

          <listitem>
            <para>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) :</para>

            <programlisting>\AMCtext{draft}{PROJET}
\AMCtext{message}{Pour votre examen, imprimez de pr\'ef\'erence
                  les documents compil\'es \`a l'aide de auto-multiple-choice.}</programlisting>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>Des questions mathématiques à énoncés aléatoires</title>

      <para>Grâce au paquet LaTeX <package>fp</package>, dont la documentation
      se trouve sur <ulink
      url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=fp">http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=fp</ulink>
      et que l'on peut charger grâce à la commande<programlisting>\usepackage{fp}</programlisting>ajoutée
      avant celle correspondant à <package>automultiplechoice</package>, on
      peut créer des exercices dont les données sont aléatoires. Commençons
      par un petit exemple :</para>

      <para><programlisting>\begin{question}{addition}
  \FPeval\VQa{trunc(1+random*8,0)}  <co id="alea.random"
            linkends="alea.random.exp" />
  \FPeval\VQb{trunc(4+random*5,0)}
  \FPeval\VQsomme{clip(VQa+VQb)}  <co id="alea.result"
            linkends="alea.result.exp" />
  \FPeval\VQnonA{clip(VQa+VQb-1)}  <co id="alea.fausse"
            linkends="alea.fausse.exp" />
  \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}</programlisting></para>

      <para>La commande <command>\FPeval</command> sert à faire des
      calculs :</para>

      <para><calloutlist>
          <callout arearefs="alea.random" id="alea.random.exp">
            <para>Comme <command>random</command> 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.</para>
          </callout>

          <callout arearefs="alea.result" id="alea.result.exp">
            <para>On place la bonne réponse dans la variable VQsomme.</para>
          </callout>

          <callout arearefs="alea.fausse" id="alea.fausse.exp">
            <para>On place dans les variables VQnonA, VQnonB et VQnonC des
            mauvaises réponses...</para>
          </callout>
        </calloutlist>Les noms de variables commençant par VQ ont été choisis
      afin de ne pas interférer avec d'autres commandes LaTeX.</para>

      <para>La paquet automultiplechoice définit en outre une commande
      <command>\choixIntervalle</command> qui simplifie ce genre de
      constructions, comme illustré dans l'exemple suivant :<programlisting>\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&lt;Y]$ ?

  \begin{multicols}{5}
    \begin{reponses}[o]
      \choixIntervalles{\VQr}{0}{1}{0.1}  <co id="choix.intervalles"
            linkends="choix.intervalles.exp" />
    \end{reponses}
  \end{multicols}
\end{question}</programlisting></para>

      <para><calloutlist>
          <callout arearefs="choix.intervalles" id="choix.intervalles.exp">
            <para>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 <command>\choixIntervalle</command> sont les
            suivants :</para>

            <orderedlist>
              <listitem>
                <para>La bonne réponse,</para>
              </listitem>

              <listitem>
                <para>La borne gauche du premier intervalle,</para>
              </listitem>

              <listitem>
                <para>La borne droite du dernier intervalle,</para>
              </listitem>

              <listitem>
                <para>La longueur de chaque intervalle.</para>
              </listitem>
            </orderedlist>
          </callout>
        </calloutlist></para>
    </sect2>
  </sect1>

  <sect1 id="interface-graphique">
    <title>Mise en œuvre - interface graphique</title>

    <para>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.</para>

    <sect2>
      <title>Création du nouveau projet et du sujet</title>

      <para>Commençons par ouvrir l'interface graphique. On peut normalement
      le faire en sélectionnant <menuchoice>
          <guimenu>Applications</guimenu>

          <guisubmenu>Éducation</guisubmenu>

          <guimenuitem>Auto Multiple Choice</guimenuitem>
        </menuchoice> du menu général de Gnome (ou son équivalent dans KDE ou
      autre), mais on peut aussi utiliser la commande
      <userinput>auto-multiple-choice</userinput>.</para>

      <para>Créons maintenant un nouveau projet, grâce à <menuchoice>
          <guimenu>Projet</guimenu>

          <guimenuitem>Nouveau</guimenuitem>
        </menuchoice>. 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 <guilabel>Nouveau
      projet</guilabel>. Nous validons enfin en appuyant sur le bouton
      <guibutton>Créer un projet</guibutton>.</para>

      <para>Nous devons maintenant désigner un fichier LaTeX comme source du
      QCM. Plusieurs possibilités nous sont proposées :</para>

      <itemizedlist>
        <listitem>
          <para><guilabel>modèle</guilabel> : ce choix permet de chercher
          parmi les modèles fournis avec AMC un sujet que nous pourrons
          modifier ensuite à loisir.</para>
        </listitem>

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

        <listitem>
          <para><guilabel>vide</guilabel> : ce choix crée un fichier vide
          qu'il faudra éditer depuis zéro pour créer son sujet.</para>
        </listitem>

        <listitem>
          <para><guilabel>archive</guilabel> : 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.</para>
        </listitem>
      </itemizedlist>

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

    <sect2>
      <title>Préparation du sujet</title>

      <para>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
      LaTeX. Ceci se fait en cliquant sur le bouton <guibutton>Mise à
      jour</guibutton> de la section <guilabel>Documents de
      travail</guilabel>. Les documents produits sont les suivants :</para>

      <itemizedlist>
        <listitem>
          <para>Le <emphasis>sujet</emphasis>. C'est le fichier qu'il faudra
          imprimer pour que ses pages soient distribuées aux étudiants (voir
          plus bas).</para>
        </listitem>

        <listitem>
          <para>Le <emphasis>corrigé</emphasis>. On peut y vérifier que les
          réponses cochées sont les bonnes. Il est aussi destiné à être
          distribué aux étudiants.</para>
        </listitem>

        <listitem>
          <para>Le document de <emphasis>calage</emphasis>. Il contient les
          informations permettant de localiser les marques de calages, les
          cases à cocher, ainsi que la zone où les étudiants sur toutes les
          pages.</para>
        </listitem>
      </itemizedlist>

      <para>Une fois produits, ces documents pourront être visualisés (et
      éventuellement imprimés) par un doucle-clic sur leur nom.</para>

      <para>Nous pouvons maintenant passer à cette dernière étape de
      préparation : l'analyse du document de calage. Elle se lance à partir du
      bouton <guibutton>Calculer les mises en page</guibutton>. 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. Cette
      analyse peut être un peu longue (surtout quand le nombre de copies est
      important). On peut voir le résultat dans la liste de droite, qui
      présente pour chaque page son numéro, son identifiant (un code contenant
      le numéro de l'étudiant, le numéro de la page pour cet étudiant, puis un
      code permettant la vérification de l'identification), ainsi que la date
      de mise à jour de la mise en page.</para>

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

    <sect2>
      <title>Impression du sujet</title>

      <warning>
        <para>Quelle que soit la méthode d'impression utilisée, 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. Ne cédez pas à
        la tentation d'imprimer un nombre restreint de copies et les
        photocopier ensuite en plusieurs exemplaire : vous ne pourriez pas
        traiter les scans par AMC ensuite !</para>
      </warning>

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

      <itemizedlist>
        <listitem>
          <para>Il est possible d'imprimer (ou de faire imprimer par un
          service reprographie) directement le fichier
          <filename>sujet.tex</filename> du répertoire projet, auquel on peut
          accéder par un double-clic sur la ligne <guilabel>sujet</guilabel>
          de la liste des <guilabel>documents de travail</guilabel>.</para>

          <para>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 <command>\clearpage</command> par
          <command>\AMCcleardoublepage</command>, qui ajoutera les pages
          blanches nécessaires pour que tous les sujets aient un nombre pair
          de pages (voir exemple section <xref
          linkend="secensemble" />).</para>
        </listitem>

        <listitem>
          <para>Si l'imprimante à utiliser est configurée sur l'ordinateur
          utilisé par AMC, on utilisera de préférence le bouton
          <guibutton>Imprimer des copies</guibutton> (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
          <command>\AMCcleardoublepage</command> (en effet, AMC envoie une
          tâche d'impression par copie).</para>
        </listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Examen</title>

      <para>Il ne reste plus qu'à faire passer l'examen aux
      étudiants...</para>

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

    <sect2>
      <title>Lecture des copies</title>

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

      <para>Pour cela, nous passons sur l'onglet <guilabel>Saisie</guilabel>
      de l'interface graphique.</para>

      <sect3>
        <title>Saisie automatique</title>

        <para>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.</para>

        <note>
          <para>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.</para>
        </note>

        <para>On sélectionne alors l'ensemble des fichiers obtenus à partir du
        dialogue ouvert par le bouton <guibutton>Automatique</guibutton> de la
        section <guilabel>Saisie des copies après examen</guilabel>, puis on
        valide par le bouton <guibutton>Utiliser</guibutton> de ce même
        dialogue. Nous pouvons alors aller boire un café car l'analyse des
        copies peut être très longue (on peut laisser faire tranquillement car
        elle ne demande aucune intervention).</para>

        <para>Le résultat de l'analyse de chaque page est indiqué dans les
        listes de la section <guilabel>Diagnostic</guilabel> :</para>

        <itemizedlist>
          <listitem>
            <para>La valeur <emphasis>EQM</emphasis> (é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
            <guimenuitem>page</guimenuitem> permet de visualiser la page
            scannée et le cadre et les cases tels qu'ils sont
            détectés).</para>
          </listitem>

          <listitem>
            <para>La valeur <emphasis>sensibilité</emphasis> 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
            <guimenuitem>zoom</guimenuitem> 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).</para>
          </listitem>
        </itemizedlist>
      </sect3>

      <sect3>
        <title>Saisie manuelle</title>

        <para>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
        <guibutton>Manuelle</guibutton> de la section <guilabel>Saisie des
        copies après examen</guilabel>. 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.</para>

        <note>
          <para>Toute saisie manuelle effectuée sur une page prendra la place
          des résultats éventuels d'une saisie automatique pour cette même
          page.</para>
        </note>
      </sect3>
    </sect2>

    <sect2>
      <title>Correction</title>

      <para>Dans l'onglet <guilabel>Notation</guilabel> de l'interface
      graphique, la partie <guilabel>Correction</guilabel> 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 <xref
      linkend="latex.codes" />).</para>

      <sect3>
        <title>Processus</title>

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

        <itemizedlist>
          <listitem>
            <para>Si nous cochons la case <guilabel>Mettre à jour le
            barème</guilabel>, 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 façon de spécifier le barème dans le
            fichier LaTeX sera expliquée à la section <xref
            endterm="bareme.title" linkend="bareme" /> (un barème par défaut
            est utilisé quand aucune indication n'est donnée).</para>
          </listitem>
        </itemizedlist>

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

      <sect3 id="bareme">
        <title id="bareme.title">Barème</title>

        <para>Le barème utilisé pour la notation des copies est indiqué dans
        le fichier source LaTeX du questionnaire, à l'aide de la commande
        <command>bareme</command>. Elle peut être utilisée dans un
        environnement <command>question</command> ou
        <command>questionmult</command>, pour fixer des paramètres de barème
        concernant toutes les réponses, mais aussi dans l'environnement
        <command>reponses</command>, 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
        <code><replaceable>parametre</replaceable>=<replaceable>valeur</replaceable></code>,
        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) :</para>

        <informaltable>
          <tgroup cols="6">
            <colspec align="center" colname="param" colwidth="3pc" />

            <colspec align="center" colname="q" colwidth="1pc" />

            <colspec align="center" colname="r" colwidth="1pc" />

            <colspec align="center" colname="qm" colwidth="1pc" />

            <colspec align="center" colname="rm" colwidth="1pc" />

            <colspec align="left" colname="valeur" />

            <spanspec nameend="r" namest="q" spanname="simple" />

            <spanspec nameend="rm" namest="qm" spanname="multiple" />

            <tbody>
              <row>
                <entry morerows="1">paramètre</entry>

                <entry spanname="simple">simple</entry>

                <entry spanname="multiple">multiple</entry>

                <entry morerows="1">valeur</entry>
              </row>

              <row>
                <entry>Q</entry>

                <entry>R</entry>

                <entry>Q</entry>

                <entry>R</entry>
              </row>

              <row>
                <entry>e</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>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.</entry>
              </row>

              <row>
                <entry>v</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>La note affectée en cas de non-réponse (aucune case
                n'est cochée).</entry>
              </row>

              <row>
                <entry>d</entry>

                <entry></entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>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.</entry>
              </row>

              <row>
                <entry>p</entry>

                <entry></entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>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.</entry>
              </row>

              <row>
                <entry>b</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Points à donner pour une bonne réponse à une
                question.</entry>
              </row>

              <row>
                <entry>m</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Points à donner pour une mauvaise réponse à une
                question.</entry>
              </row>

              <row>
                <entry></entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry></entry>

                <entry>Sans nom de paramètre (syntaxe
                <code>\bareme{2}</code>), on indique le nombre de points à
                donner si l'étudiant a coché <emphasis>cette</emphasis>
                réponse.</entry>
              </row>

              <row>
                <entry>auto</entry>

                <entry>●</entry>

                <entry></entry>

                <entry></entry>

                <entry></entry>

                <entry>Avec ce paramètre, la valeur de la réponse numéro
                <replaceable>i</replaceable> sera
                <replaceable>auto</replaceable>+<replaceable>i</replaceable>-1.
                Cette option est principalement utilisée avec
                <code>\QuestionIndicative</code> (voir section <xref
                endterm="latex.qr.title" linkend="latex.qr" />).</entry>
              </row>

              <row>
                <entry>mz</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>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 <replaceable>mz</replaceable>.
                Sinon, elle sera nulle.</entry>
              </row>

              <row>
                <entry>haut</entry>

                <entry></entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>En donnant à ce paramètre une valeur
                <replaceable>n</replaceable>, la note attribuée à une réponse
                parfaite sera <replaceable>n</replaceable>, et un point sera
                enlevé par erreur.</entry>
              </row>

              <row>
                <entry>MAX</entry>

                <entry>●</entry>

                <entry></entry>

                <entry>●</entry>

                <entry></entry>

                <entry>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.</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>

        <para>Le barème par défaut pour une question simple est
        <code>e=0,v=0,b=1,m=0</code>, 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
        <code>e=0,v=0,b=1,m=0,p=-100,d=0</code>, 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).</para>

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

        <itemizedlist>
          <listitem>
            <para><code>SUF=</code><replaceable>x</replaceable> 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.</para>
          </listitem>
        </itemizedlist>

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

        <para><!--NAME: Barème
DESC: Exemple (issu de la documentation) de spécification du barème.--><programlisting
        id="modeles-bareme.tex" linenumbering="numbered">\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}</programlisting></para>
      </sect3>

      <sect3>
        <title>Barèmes généraux</title>

        <para>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 :</para>

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

\begin{questionmult}\bareme{\barQmult}
[...]
\end{questionmult}</programlisting>

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

        <programlisting>\baremeDefautM{haut=3,p=-1}</programlisting>

        <para>Dans certains cas de figure, il peut être intéressant de définir
        un barème de manière générale <emphasis>en fonction du nombre de
        réponses proposées</emphasis>. Il suffit pour cela de mettre les
        valeurs intervenant dans le barème sous la forme de formules utilisant
        la variable <varname>N</varname>. 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 <code>d=4,b=0,m=-(4-1)*2/N</code> (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 (<code>+</code> <code>-</code>
        <code>*</code> <code>/</code>), et le parenthésage.</para>

        <para>D'autres variables sont aussi utilisables :</para>

        <itemizedlist>
          <listitem>
            <para><varname>N</varname> est le nombre de réponses proposées,
            sans compter la réponse automatiquement ajoutée par l'option
            <option>completemulti</option>.</para>
          </listitem>

          <listitem>
            <para><varname>NB</varname> est le nombre de bonnes réponses à la
            question (sans tenir compte des cases cochées ou non).</para>
          </listitem>

          <listitem>
            <para><varname>NBC</varname> est le nombre de bonnes réponses qui
            ont été cochées.</para>
          </listitem>

          <listitem>
            <para><varname>NM</varname> est le nombre de mauvaises réponses à
            la question (sans tenir compte des cases cochées ou non).</para>
          </listitem>

          <listitem>
            <para><varname>NMC</varname> est le nombre de mauvaises réponses
            qui ont été cochées.</para>
          </listitem>

          <listitem>
            <para><varname>IS</varname> vaut 1 si la question est simple et 0
            sinon.</para>
          </listitem>

          <listitem>
            <para><varname>IMULT</varname> vaut 1 si la question est multiple
            et 0 sinon.</para>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>

    <sect2>
      <title>Identification des étudiants</title>

      <para>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 :</para>

      <orderedlist>
        <listitem>
          <para>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 <xref
          linkend="latex.codes" />). 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.</para>
        </listitem>

        <listitem>
          <para>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.</para>
        </listitem>
      </orderedlist>

      <para>Sélectionnons tout d'abord l'onglet <guilabel>Notation</guilabel>
      de l'interface graphique.</para>

      <sect3 id="liste.etudiants">
        <title id="liste.etudiants.title">Liste des étudiants</title>

        <para>Il faut tout d'abord disposer d'une liste d'étudiants. Cette
        liste pourra bien sûr être utilisée pour plusieurs QCM. Pour une
        utilisation simple, on préparera un fichier texte contenant un nom
        d'étudiant par ligne. Si on souhaite automatiser certaines tâches
        futures, comme l'envoi des corrigés aux étudiants, on pourra ajouter
        certaines informations complémentaires dans le fichier, comme dans
        l'exemple suivant :<programlisting># 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</programlisting></para>

        <para>Les lignes du fichier qui commencent par le caractère
        `<code>#'</code> sont des commentaires. La première des autres lignes
        contient, séparés par le caractère <code>`:'</code>, 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 <code>nom</code>.</para>

        <note>
          <para>On peut remplacer le séparateur <code>`:'</code> 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.</para>
        </note>

        <para>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 <guilabel>Liste des
        étudiants</guilabel>. 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 <command>AMCcode</command>.</para>
      </sect3>

      <sect3>
        <title>Association</title>

        <sect4>
          <title>Association automatique</title>

          <para>En appuyant sur le bouton <guibutton>Automatique</guibutton>
          de la partie <guilabel>Identification des étudiants</guilabel>, 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.</para>

          <warning>
            <para>Pour effectuer une association automatique, il est
            nécessaire d'avoir utilisé au moins une fois la commande
            <command>AMCcode</command> (voir <xref linkend="latex.codes" />)
            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 <command>AMCcode</command>.</para>
          </warning>
        </sect4>

        <sect4>
          <title>Association manuelle</title>

          <para>Pour ouvrir la fenêtre de reconnaissance des noms d'étudiants,
          cliquons sur le bouton <guibutton>Manuelle</guibutton> de la partie
          <guilabel>Identification des étudiants</guilabel>. 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 <guilabel>associés</guilabel>). 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
          <guibutton>Enregistrer</guibutton> de la fenêtre.</para>
        </sect4>
      </sect3>
    </sect2>

    <sect2>
      <title>Export de la liste des notes</title>

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

    <sect2>
      <title>Annotation</title>

      <para>En appuyant sur le bouton <guibutton>Annoter les
      copies</guibutton>, 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) :</para>

      <itemizedlist>
        <listitem>
          <para>les cases cochées à tort par l'étudiant sont entourées en
          rouge ;</para>
        </listitem>

        <listitem>
          <para>les cases non-cochées qui auraient dû l'être sont cochées en
          rouge ;</para>
        </listitem>

        <listitem>
          <para>les cases cochées et qui devaient l'être sont cochées en
          bleu ;</para>
        </listitem>

        <listitem>
          <para>pour chaque question, sont indiquées la note obtenue ainsi que
          la note maximale pouvant être obtenue ;</para>
        </listitem>

        <listitem>
          <para>la note globale de la copie est indiquée en première page de
          la copie.</para>
        </listitem>
      </itemizedlist>

      <para>Le texte inscrit en haut de la première page de chaque copie peut
      être configuré (<menuchoice>
          <guimenu>Édition</guimenu>

          <guimenuitem>Préférences</guimenuitem>

          <guimenuitem>Annotation</guimenuitem>

          <guimenuitem>En-tête</guimenuitem>
        </menuchoice> ou <menuchoice>
          <guimenu>Édition</guimenu>

          <guimenuitem>Préférences</guimenuitem>

          <guimenuitem>Projet</guimenuitem>

          <guimenuitem>Annotation des copies</guimenuitem>

          <guimenuitem>Texte d'en-tête</guimenuitem>
        </menuchoice>). Les substitutions suivantes s'applioquent sur ce
      texte :</para>

      <variablelist>
        <varlistentry>
          <term><literal>%S</literal></term>

          <listitem>
            <para>est remplacé par le score total de l'étudiant.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>%M</literal></term>

          <listitem>
            <para>est remplacé par le score maximal (score obtenu par
            l'étudiant si il ne fait aucune erreur).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>%s</literal></term>

          <listitem>
            <para>est remplacé par la note de l'étudiant.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>%m</literal></term>

          <listitem>
            <para>est remplacé par la note maximale.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>%(ID)</literal></term>

          <listitem>
            <para>est remplacé par le nom de l'étudiant.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term><literal>%(<replaceable>COL</replaceable>)</literal></term>

          <listitem>
            <para>est remplacé par la valeur de la colonne
            <replaceable>COL</replaceable> dans la liste des étudiants pour
            l'étudiant considéré.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para>Cette opération est effectuée page par page, et le résultat est
      constitué de pages corrigées au format JPG.</para>

      <para>Si nous souhaitons distribuer les copies corrigées aux étudiants
      au format électronique, il est utile de fabriquer un fichier PDF par
      étudiant, à partir des pages annotées au format JPG qui lui
      correspondent. Ceci est effectué par l'action du bouton
      <guibutton>Regrouper</guibutton>. 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 <guilabel>Modèle de nom de fichier</guilabel>.
      Dans ce modèle, les textes du type « (<replaceable>col</replaceable>) »
      seront remplacés par le contenu de la colonne nommée
      <code><replaceable>col</replaceable></code> dans le fichier listant les
      étudiants (voir section <xref endterm="liste.etudiants.title"
      linkend="liste.etudiants" />). 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.</para>
    </sect2>
  </sect1>

  <sect1 id="commandes">
    <title>Manuel des commandes</title>

    <para>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.</para>

    <refentry id="auto-multiple-choice">
      <refmeta>
        <refentrytitle>auto-multiple-choice</refentrytitle>

        <manvolnum>1</manvolnum>

        <refmiscinfo class="source">Auto Multiple Choice</refmiscinfo>

        <refmiscinfo class="version">@/PACKAGE_V_DEB/@</refmiscinfo>
      </refmeta>

      <refnamediv>
        <refname>auto-multiple-choice</refname>

        <refpurpose>Gestion automatisée de questionnaires QCM</refpurpose>
      </refnamediv>

      <refsynopsisdiv>
        <cmdsynopsis>
          <command>auto-multiple-choice</command>

          <arg choice="plain"><replaceable>action</replaceable> <arg
          rep="repeat">arguments</arg></arg>
        </cmdsynopsis>

        <cmdsynopsis>
          <command>auto-multiple-choice</command>

          <arg>projet</arg>
        </cmdsynopsis>
      </refsynopsisdiv>

      <refsect1>
        <title>Description</title>

        <para>La commande <command>auto-multiple-choice</command> transmet à
        la commande
        <command>AMC-<replaceable>action</replaceable>.pl</command> les
        arguments qu'on lui donne.</para>

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

      <refsect1>
        <title>See also</title>

        <para>Différentes actions possibles : <citerefentry>
            <refentrytitle>AMC-prepare</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-imprime</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-analyse</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-note</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-association-auto</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-export</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-annote</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>AMC-regroupe</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>.</para>
      </refsect1>
    </refentry>
  </sect1>
</article>
