<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/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 texte simple ou en LaTeX et leur correction automatique à
      partir des scans des copies des étudiants, grâce à une reconnaissance
      optique de marques (OMR). Le présent document décrit son utilisation
      (pour la version 1.7.0+git20250704122834~r:7717fe27).</para>

      <para>Le site d'AMC est hébergé à l'adresse <ulink
      url="https://www.auto-multiple-choice.net/">https://www.auto-multiple-choice.net/</ulink>,
      et vous trouverez le code source à l'adresse <ulink
      url="https://gitlab.com/jojo_boulix/auto-multiple-choice/">https://gitlab.com/jojo_boulix/auto-multiple-choice/</ulink>.</para>
    </abstract>

    <author>
      <firstname>Alexis</firstname>

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

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

    <author>
      <firstname>Frédéric</firstname>

      <surname>Bréal</surname>
    </author>

    <othercredit>
      <surname>Abel</surname>

      <firstname>Benjamin</firstname>

      <contrib>Paragraphes concernant l'usage de tikz et de
      lualatex.</contrib>
    </othercredit>

    <copyright>
      <year>2008-2025</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 suivantes.</para>
    </legalnotice>
  </articleinfo>

  <sect1 id="license">
    <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 id="prerequis.os">
      <title>Système d'exploitation</title>

      <para>Les utilitaires AMC ont été écrits pour Linux. Leur installation a
      par ailleurs été rendue possible sur MAC OS X grâce à l'utilisation de
      MacPorts.</para>
    </sect2>

    <sect2 id="prerequis.soft">
      <title>Logiciels</title>

      <note>
        <para>Si vous installez AMC à l'aide d'un paquet debian (sur une
        distribution debian, ubuntu ou dérivée) 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>Les bibliothèques de traitement d'image ImageMagick et
          OpenCV</para>
        </listitem>

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

    <sect2 id="prerequis.latex">
      <title>LaTeX</title>

      <para>Il n'est pas nécessaire de
      rédiger ses sujets de QCM en LaTeX (voir <xref linkend="AMC-TXT"/>).
      Cependant, ceci est toujours possible et permet une extraordinaire
      liberté dans la conception des sujets. Par ailleurs, les modèles fournis
      permettent à ceux qui ne sont pas réfractaires aux formats de documents
      du type LaTeX/XML/HTML d'écrire assez rapidement leurs premiers
      formulaires en LaTeX.</para>
    </sect2>
  </sect1>

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

    <sect2 id="num.limits">
      <title>Limitations numériques</title>

      <para>Le nombre de copies est limité à 4 095 et le nombre de pages
      par copies est limité à 63 (valeurs par défaut mais modifiables voir
      <xref endterm="code.binaire.title" linkend="code.binaire"/>).</para>

      <para>Le nombre de réponses proposées pour une même question est limité
      à 199 (valeur par défaut non modifiable).</para>

    </sect2>

    <sect2 id="versions">
      <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ées 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>

    </sect2>

    <sect2 id="install">
      <title>Installation</title>

      <para>Sur un système debian ou Ubuntu ou dérivé, 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://auto-multiple-choice.net/download">site
      d'AMC</ulink>.</para>

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

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

    <sect2 id="launch">
      <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="AMC-TXT">
    <title>Source au format AMC-TXT</title>

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

    <para>Commençons par un exemple simple de fichier source utilisable par
    AMC :</para>

    <!--NAME: Exemple simple au format AMC-TXT
DESC: Un exemple très simple utilisant le format AMC-TXT qui permet de concevoir des questionnaires sans aucune connaissance de LaTeX.-->

    <programlisting id="modeles-simple-txt.txt"># AMC-TXT source
PaperSize: A4
Lang: FR
Title: Mon premier questionnaire

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

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

** Parmi les nombres suivants,
lesquels sont positifs ?
+ 2
- -2
+ 10</programlisting>

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

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

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

    <sect2 id="txt.comments">
      <title>Commentaires</title>

      <para>Vous pouvez écrire des commentaires dans votre fichier AMC-TXT sur
      des lignes <emphasis>commençant</emphasis> par le caractère
      <code>#</code>. Ces lignes seront tout simplement ignorées par
      AMC.</para>
    </sect2>

    <sect2 id="txt.opts">
      <title>Options générales</title>

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

      <variablelist>
        <varlistentry>
          <term>PaperSize:</term>

          <listitem>
            <para>Indique le format de papier utilisé. Parmi les valeurs
            possibles, on trouve <code>A3</code>, <code>A4</code>,
            <code>A5</code>, <code>A6</code>, <code>B3</code>,
            <code>B4</code>, <code>B5</code>, <code>B6</code>,
            <code>letter</code>, <code>legal</code>, <code>ANSIA</code>,
            <code>ANSIB</code>, <code>ANSIC</code>, <code>ANSID</code>,
            <code>ANSIE</code>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Lang:</term>

          <listitem>
            <para>donne la langue dans laquelle le questionnaire est écrit.
            Pour l'instant, les seules langues disponibles sont FR (français),
            ES (espagnol), DE (allemand), IT (Italien), NL (Néerlandais), NO
            (Norvégien), PT (portugais), JA (Japonais, voir <xref
            linkend="txt-japanese"/>) et AR (arabe, voir <xref
            linkend="txt-arabic"/>). Si vous n'utilisez pas cette option, ce
            sera l'anglais qui sera choisi.</para>
          </listitem>
        </varlistentry>

         <varlistentry>
          <term>LaTeXEngine:</term>

          <listitem>
            <para>Moteur de compilation : <code>xelatex -shell-escape</code>, par exemple </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Title:</term>

          <listitem>
            <para>Le titre de l'examen, qui sera écrit en haut de la
            copie.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Presentation:</term>

          <listitem>
            <para>Un texte introductif pour l'examen, présentant par exemple
            la durée, les consignes...</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>RandomSeed:</term>

          <listitem>
            <para>Si le mélange des questions 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 à cette
            option. 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>

            <note>
              <para>La valeur est enregistrée dans le fichier xy (sous la
              forme <code>\rngstate{1}{1527384}</code>). La valeur par défaut
              est 1527384.</para>
            </note>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>ShuffleQuestions:</term>

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

        <varlistentry>
          <term>Code:</term>

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

        <varlistentry>
          <term>CodeDigitsDirection:</term>

          <listitem>
            <para>Donnez à cette option la valeur <code>horizontal</code> ou
            <code>vertical</code> pour imposer la direction suivant laquelle
            les chiffres du code seront présentés. Si vous n'utilisez pas
            cette option, AMC choisira en fonction de la taille du code
            (direction horizontale pour un petit nombre de chiffres, et
            verticale pour un grand nombre de chiffres).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Columns:</term>

          <listitem>
            <para>Si vous donnez à cette option une valeur
            <replaceable>n</replaceable> entière supérieure à 1, le
            questionnaire sera écrit sur <replaceable>n</replaceable>
            colonnes.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>CompleteMulti:</term>

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

        <varlistentry>
          <term>L-None:</term>

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

        <varlistentry>
          <term>QuestionBlocks:</term>

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

        <varlistentry>
          <term>L-Question:</term>

          <listitem>
            <para>Cette option sert à remplacer le mot
            <emphasis>Question</emphasis> dans votre questionnaire si vous
            utilisez une autre langue que celle indiquée par l'option
            <option>Lang</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>L-Name:</term>

          <listitem>
            <para>Cette option sert à remplacer le texte <emphasis>Nom et
            prénom</emphasis> inscrit dans le cadre où l'étudiant doit
            inscrire son identité.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>L-Student:</term>

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

        <varlistentry>
          <term>TitleWidth:</term>

          <listitem>
            <para>Largeur de la zone prévue pour le titre, dans le cas où on
            n'utilise pas <option>Code:</option>. La valeur par défaut est
            <code>.47\linewidth</code>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>NameFieldWidth:</term>

          <listitem>
            <para>Largeur de la zone destinée à l'écriture du nom et prénom de
            l'étudiant. On peut utiliser les unités usuelles en LaTeX. La
            valeur par défaut est <code>5.8cm</code> si on utilise
            <option>Code:</option>, et <code>.47\linewidth</code>
            sinon.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>NameFieldLines:</term>

          <listitem>
            <para>Nombre de lignes prévues pour l'écriture du nom et prénom de
            l'étudiant. La valeur par défaut est <code>2</code> si on utilise
            <option>Code:</option>, et <code>1</code> sinon.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>NameFieldLinespace:</term>

          <listitem>
            <para>Interligne dans la zone destinée à l'écriture du nom et
            prénom de l'étudiant. La valeur par défaut est
            <code>.5em</code>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Pages:</term>

          <listitem>
            <para>Donne un nombre de pages minimal pour le sujet. Si un sujet
            comporte moins de pages que cette valeur, des pages blanches
            seront ajoutées. Dans le cas de l'utilisation d'une feuille de
            réponses séparée, cette option peut être écrite sous la forme
            <option><replaceable>s</replaceable>+<replaceable>r</replaceable></option>
            (par exemple <option>4+2</option>), où
            <replaceable>s</replaceable> sera le nombre de pages minimal pour
            la partie sujet et
            <replaceable>s</replaceable>+<replaceable>r</replaceable> le
            nombre de pages minimal pour le sujet complet.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>ManualDuplex:</term>

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

        <varlistentry>
          <term>SingleSided:</term>

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

        <varlistentry>
          <term>BoxColor:</term>

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

        <varlistentry>
          <term>DefaultScoringS:</term>

          <listitem>
            <para>Donne le barème par défaut pour les questions simples
            (Reportez-vous à <xref linkend="bareme"/> pour la description des
            barèmes possibles). Sans cette option, le barème par défaut donne
	    un point à la bonne réponse, et zéro aux autres.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>DefaultScoringM:</term>

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

        <varlistentry>
          <term>LaTeX:</term>

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

        <varlistentry>
          <term>LaTeX-Preambule:</term>

          <listitem>
            <para>Donne des commandes LaTeX à ajouter dans le préambule (par
            exemple des <command>\usepackage</command>).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>LaTeX-BeginDocument:</term>

          <listitem>
            <para>Donne des commandes LaTeX à ajouter au début de
            l'environnement <command>document</command> (par exemple des
            définitions de macros).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>LaTeX-BeginCopy:</term>

          <listitem>
            <para>Donne des commandes LaTeX à ajouter au début de la
            description d'une copie.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>LaTeX-EndCopy:</term>

          <listitem>
            <para>Donne des commandes LaTeX à ajouter à la fin de la
            description d'une copie.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PDF-BeginCopy:</term>

          <listitem>
            <para>Donne le nom d'un fichier PDF à ajouter au début de chaque
            copie.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PDF-EndCopy:</term>

          <listitem>
            <para>Donne le nom d'un fichier PDF à ajouter à la fin de chaque
            copie.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>Disable:</term>

          <listitem>
            <para>Donne une liste de convertisseurs à désactiver, séparés par
            des virgules. Les convertisseurs disponibles sont
            <code>verbatim</code> (voir <xref linkend="parse_verbatim"/>),
            <code>images</code> (voir <xref linkend="parse_images"/>),
            <code>embf</code> (voir <xref linkend="parse_embf"/>) et
            <code>local_latex</code> (voir <xref
            linkend="parse_local_latex"/>),
            <code>latex</code> (voir <xref linkend="parse_latex"/>).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>PackageOptions:</term>

          <listitem>
            <para>Donne des options supplémentaires à transmettre au paquet
            LaTeX automultiplechoice (voir <xref
            linkend="sec.package.options"/>).</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <sect3 id="txt.separate">
        <title>Sujet avec feuille de réponses séparée</title>

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

        <variablelist>
          <varlistentry>
            <term>SeparateAnswerSheet:</term>

            <listitem>
              <para>Donner la valeur 1 à cette option pour obtenir une feuille
              de réponses séparée.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>AnswerSheetTitle:</term>

            <listitem>
              <para>Donne le titre à inscrire en tête de la feuille de
              réponse.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>AnswerSheetPresentation:</term>

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

          <varlistentry>
            <term>AnswerSheetColumns:</term>

            <listitem>
              <para>Nombre de colonnes pour la feuille de réponses.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>AutoMarks:</term>

            <listitem>
              <para>Donner la valeur 1 à cette option pour utiliser l'option
              <option>automarks</option> (voir <xref
              linkend="sec.package.options"/>).</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </sect3>


      <sect3 id="txt.Copies.Preremplies">
        <title id="txt.Copies.Preremplies.title">Copies pré-remplies</title>

        <para>Dans certaines situations, il peut être souhaitable de préparer des copies
          nominatives pour tous les étudiants, à partir d’une liste d’étudiants.</para>

            <variablelist>

              <varlistentry>
                <term>PreAssociation:</term>

                <listitem>
                  <para>Le nom du fichier avec la liste des étudiants
                    <emphasis>et l'extension .csv</emphasis></para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>PreAssociationKey:</term>

                <listitem>
                  <para><guilabel>Identifiant unique dans cette liste :</guilabel>
              il s’agit du nom de la colonne qui, dans le ﬁchier csv des
              étudiants, contient le numéro d’étudiant (voir <xref
              linkend="liste.etudiants"/>).</para>
                </listitem>
              </varlistentry>

              <varlistentry>
                <term>PreAssociationName:</term>

                <listitem>
                  <para><guilabel>\prenom{} \nom{}</guilabel> en-têtes des colonnes
                  avec le prénom et le nom des étudiants.
            </para>
                </listitem>
              </varlistentry>

            </variablelist>

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

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

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

            <listitem>
             <para> <command>Code</command> doit être égal à zéro ou omis.</para>
            </listitem>

          </itemizedlist>

<para><!--NAME: Exemple simple au format AMC-TXT avec les copies pré-remplies
DESC: Un exemple très simple utilisant le format AMC-TXT et les copies pré-remplies qui permet de concevoir des questionnaires sans aucune connaissance de LaTeX.-->
<programlisting id="modeles-simple-txt-copies-preremplies.txt">
#Exemple simple au format AMC-TXT avec les copies pré-remplies

PaperSize: A4
Lang: FR
PreAssociation: liste.csv
PreAssociationKey: id
PreAssociationName: \prenom{} \nom{}

Title: Mon premier questionnaire

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

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

** Parmi les nombres suivants,
lesquels sont positifs ?
+ 2
- -2
+ 10
</programlisting>
</para>

            <para>Plus de détails pour la correction : voir le dernier item de <xref linkend="Copies.Preremplies"/>.</para>
      </sect3>

    </sect2>

    <sect2 id="txt.questions">
      <title>Questions</title>

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

      <sect3 id="txt.questions.opts">
        <title>Options pour les questions</title>

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

        <programlisting>*[ordered,horiz,id=addition] Combien font
un plus un ?
- 0
- 1
+ 2</programlisting>

        <para>Les options disponibles sont les suivantes :</para>

        <variablelist>
          <varlistentry>
            <term>horiz</term>

            <listitem>
              <para>Avec cette option, les réponses se suivront
              horizontalement plutôt que verticalement une par ligne.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>columns=<replaceable>n</replaceable></term>

            <listitem>
              <para>Avec cette option, les réponses seront réparties sur
              <replaceable>n</replaceable> colonnes.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>ordered</term>

            <listitem>
              <para>Avec cette option, les réponses ne seront pas mélangées
              dans chaque copie : elles resteront toujours dans l'ordre
              indiqué.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>id=<replaceable>xxxx</replaceable></term>

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

        <important>
          <para>Voir aussi <xref endterm="identifier.title" linkend="identifier"/>.</para>
        </important>

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

          <varlistentry>
            <term>indicative</term>

            <listitem>
              <para>Indique que le score affecté à cette question ne sera pas
              pris en compte pour le score final de l'étudiant.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>next</term>

            <listitem>
              <para>Avec cette option, la question suivra toujours la question
              précédente, même lorsque l'on demande de mélanger les questions
              avec l'option générale <option>ShuffleQuestions</option>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>first</term>

            <listitem>
              <para>Avec cette option, la question sera toujours insérée en
              début de groupe (voir <xref linkend="sec.txt-groups"/>).</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>last</term>

            <listitem>
              <para>Avec cette option, la question sera toujours insérée en
              fin de groupe (voir <xref linkend="sec.txt-groups"/>).</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </sect3>

      <sect3 id="txt.questions.scoring">
        <title>Barèmes particuliers</title>

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

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

**[ordered,horiz,id=positifs]{haut=1} Parmi les nombres suivants,
lesquels sont positifs ?
- -2
+ 2
+ 10</programlisting>
      </sect3>

      <sect3 id="txt.questions.open">
        <title>Questions ouvertes</title>

        <para>Les questions peuvent être transformées en questions ouvertes en
        indiquant des options (voir <xref linkend="questionsouvertes"/>) entre
        <code>&lt;</code> et <code>&gt;</code>, comme dans l'exemple
        suivant :</para>

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

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

        <variablelist>
          <varlistentry>
            <term>L-OpenText:</term>

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

          <varlistentry>
            <term>L-OpenReserved:</term>

            <listitem>
              <para>Texte (court) à ajouter à côté des cases à cocher des
              questions ouvertes, indiquant aux étudiants que ces cases sont
              réservées aux correcteurs.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </sect3>
    </sect2>

    <sect2 id="txt.multiline">
      <title>Lignes multiples</title>

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

      <programlisting>* Combien font 2
  + 2 ?
- 0
+ 4
- 10</programlisting>

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

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

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

      <para>La version correcte est la suivante :</para>

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

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

      <programlisting>Description: Titre

Description de l'examen sur la ligne suivante.

** Question difficile.

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

- une
- deux
- dix millions</programlisting>
    </sect2>

    <sect2 id="txt.title">
      <title>Titre</title>

      <para>Vous pouvez insérer un titre en l'entourant de <code>[==</code> et
      <code>==]</code>.</para>
    </sect2>

    <sect2 id="parse_verbatim">
      <title>Verbatim</title>

      <para>Pour obtenir un bloc de texte <emphasis>verbatim</emphasis> (par
      exemple pour un code informatique), entourez-le de
      <code>[verbatim]</code> et <code>[/verbatim]</code> :</para>

      <programlisting>* Qu'est-ce que le code suivant écrit ?
[verbatim]
main( )
{
    printf("hello, world\n");
}
[/verbatim]

+ [| hello, world |]
- [| hello |]
- [| world |]</programlisting>
    </sect2>

    <sect2 id="parse_embf">
      <title>Gras, italique, typewriter, souligné</title>

      <para>Les parties du textes à écrire en <emphasis>gras</emphasis>
      devront être entourées de <code>[*</code> et <code>*]</code>. Les
      parties à mettre en <emphasis>italique</emphasis> devront être entourées
      de <code>[_</code> et <code>_]</code>. Pour avoir une police façon
      machine à écrire <emphasis>typewriter</emphasis>, le texte devra être
      encadré par <code>[|</code> et <code>|]</code>. Pour
      <emphasis>souligner</emphasis>, encadrer le texte par <code>[/</code> et
      <code>/]</code>.</para>

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

    <sect2 id="parse_images">
      <title>Inclusion d'images</title>

      <para>Vous pouvez inclure des images dans votre document en utilisant la
      syntaxe suivante :</para>

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

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

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

    <sect2 id="parse_local_latex">
      <title>Petits morceaux de LaTeX</title>

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

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

    <sect2 id="parse_latex">
      <title>Fragments de LaTeX</title>

      <para>Pour inclure un fragment de code LaTeX sur plusieurs
      lignes, entourez-le de <code>[latex]</code> et
      <code>[/latex]</code> :</para>

      <programlisting>* La matrice suivante est

[latex]
\[
\left[\begin{array}{ccccc}
1 &amp; 0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 \\
\end{array}
\right]\]
[/latex]

- diagonale
+ triangulaire
- symétrique
      </programlisting>
    </sect2>

    <sect2 id="sec.txt-groups">
      <title id="sec.txt-groups.title">Groupes de questions</title>

      <para>Vous pouvez demander à ce que certaines questions restent groupées
      lors du mélange des questions, et ajouter un texte introductif avant ce
      groupe de questions (et un autre texte après), en utilisant la syntaxe
      suivante :</para>

      <programlisting>*( Les trois questions suivantes concernent Martin Luther King.

* En quelle année est-il né ?
- 1901
+ 1929
- 1968

* En quelle année est-il mort ?
- 1945
- 1515
+ 1968
- 1999

* Dans quelle ville est-il né ?
+ Atlanta
- Memphis
- New York

*) Fin des questions sur Martin Luther King. </programlisting>

      <para>Vous pouvez ajouter des options à l'ouverture du groupe, comme
      suit :</para>

      <programlisting>*([shuffle=false,columns=2] Les trois questions suivantes concernent Martin Luther King.</programlisting>

      <para>Les options suivantes sont acceptées :</para>

      <variablelist>
        <varlistentry>
          <term>shuffle=<replaceable>xxx</replaceable></term>

          <listitem>
            <para>En donnant la valeur <replaceable>true</replaceable> ou
            <replaceable>false</replaceable>, on demande à mélanger ou non les
            questions de ce groupe. La valeur par défaut est celle utilisée
            globalement par l'option <option>ShuffleQuestions</option>.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>columns=<replaceable>n</replaceable></term>

          <listitem>
            <para>Donne le nombre de colonnes dans lesquelles seront mises en
            forme les questions.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>group=<replaceable>nom</replaceable></term>

          <listitem>
            <para>Donne un nom au groupe (celui-ci ne sera pas visible sur le
            sujet, mais uniquement dans le fichier LaTeX généré à partir du
            fichier source AMC-TXT).</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>numquestions=<replaceable>n</replaceable></term>

          <listitem>
            <para>Avec cette option, les <replaceable>n</replaceable>
            premières questions du groupes seront utilisées. Si les questions
            sont mélangées, cela permettra de sélectionner
            <replaceable>n</replaceable> questions au hasard.</para>

            <note>
              <para>Les questions utilisant l'option <option>first</option> ou
              <option>last</option> ne sont pas concernées (et sont toujours
              insérées). Par ailleurs, les suites de questions regroupées en
              utilisant l'option <option>next</option> ne comptent que pour
              une seule question.</para>
            </note>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>needspace=<replaceable>dim</replaceable></term>

          <listitem>
            <para>Donne une hauteur (avec l'unité : par exemple
            <replaceable>4cm</replaceable>) nécessaire pour commencer l'énoncé
            de ce groupe. Si la place encore disponible dans la page courante
            est inférieure à cette valeur, alors l'énoncé du groupe commencera
            sur la page suivante.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>

    <sect2 id="txt-arabic">
      <title>En langue arabe</title>

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

      <programlisting>Lang: AR</programlisting>

      <para>Mais vous devrez également prêter attention aux options
      suivantes :</para>

      <variablelist>
        <varlistentry>
          <term>ArabicFont:</term>

          <listitem>
            <para>C'est la police de caractères qui sera utilisée pour les
            textes en arabe. Par défaut, AMC utilisera
            <emphasis>Rasheeq</emphasis>, une police du projet <ulink
            url="http://arabeyes.org/">ArabEyes</ulink> (disponible dans la
            paquet <package>ttf-arabeyes</package> sur debian et ubuntu par
            exemple).</para>
          </listitem>
        </varlistentry>
      </variablelist>

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

    <sect2 id="txt-japanese">
      <title>En japonais</title>

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

      <programlisting>Lang: JA</programlisting>

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

      <warning>
        <para>Dans ce cas, AMC utilisera <command>pTex</command> comme moteur
        LaTeX. Une version <emphasis>récente</emphasis> de
        <command>pTex</command> est nécessaire.</para>
      </warning>
    </sect2>

    <sect2 id="txt.includes">
      <title>Inclusion de fichiers annexes</title>

      <para>Vous pouvez inclure le contenu d'autres fichiers à tout moment
      comme suit :</para>

      <programlisting>IncludeFile: <replaceable>fichier-a-inclure.txt</replaceable></programlisting>

      <warning>
        <para>Faites très attention si le fichier à inclure est utilisé par
        plusieurs projets ! Supposons par exemple que
        <filename>/home/alexis/questions-a.txt</filename> est inclus à la fois
        dans le projet A et le projet B. Vous avez déjà traité le projet A, et
        êtes en train de vous occuper du projet B. Vous ajoutez une questions
        dans le fichier <filename>/home/alexis/questions-a.txt</filename>, et
        vous modifiez le barème d'une question qui existait déjà. Si vous
        relancez l'extraction du barème et la notation sur le sujet A, AMC
        verra apparaître une nouvelle question pour laquelle aucune saisie n'a
        été effectuée, ce qui posera des problèmes dans toute la
        notation !</para>
      </warning>
    </sect2>

	<sect2 id="Exemple-Minimal">
		<title>Un exemple simple plus complet</title>
			<para><ulink url="https://project.auto-multiple-choice.net/boards/4/topics/9291">
					Un exemple issu du forum </ulink></para>

<para><!--NAME: Exemple plus complet au format AMC-TXT
DESC: Un exemple plus complet utilisant le format AMC-TXT avec du code LaTeX.-->
	<programlisting>
# Exemple plus complet au format AMC-TXT avec du code LaTeX.
PaperSize: A4
Lang: FR
CompleteMulti: 0  <co id="NoCompletMulti" linkends="NoCompletMulti.exp"/>
ShuffleQuestions: 0  <co id="noshuffle" linkends="noshuffle.exp"/>
LaTeX: 1  <co id="commandeLaTeX" linkends="commandeLaTeX.exp"/>
LaTex-Preambule: \geometry{hmargin=2cm,headheight=2cm,headsep=.3cm,footskip=1cm,top=2.5cm,
bottom=2cm}  <co id="packagegeometry" linkends="packagesSuppl.exp"/>

\usepackage{siunitx}  <co id="packagesiunitx" linkends="packagesSuppl.exp"/>
\sisetup{locale = FR,detect-all,group-minimum-digits=3,per-mode=symbol}

\usepackage[french]{babel}  <co id="packagebabel" linkends="packagesSuppl.exp"/>

LaTeX-BeginDocument: \def\multiSymbole{$\star$}  <co id="clubsuit" linkends="clubsuit.exp"/>

Title: Évaluation de SVT \no{}4  <co id="numeroBabel" linkends="numeroBabel.exp"/> : Régimes et équilibres alimentaires

Presentation: Colorier en noir la case correspondante à la proposition correcte pour chaque
 phrase.

*([shuffle=true]<co id="ShuffleQuestions-groupe" linkends="ShuffleQuestions-groupe.exp"/>
 PARTIE I : Quelques connaissances du cours

**[horiz,last<co id="lastquestion" linkends="lastquestion.exp"/>]Les aliments contiennent :
+ Des lipides
- Des acides
+ Des sels minéraux

**La dépense énergétique minimum de notre corps est :
+ Le métabolisme de base
- Les besoins énergétiques
- L'IMC

**[columns=2]Les aliments nous apportent de :
+ La matière
- Du diabète
+ De l'énergie

**[columns=2]Les besoins énergétiques d'une personne varient suivant :
+ Le sexe
+ Les activités physiques
- Les aliments consommés

*[columns=2]Manger équilibré signifie :
+ Equilibrer nos apports et nos dépenses
- Manger ce qui nous fait envie
- Manger plus que ce qu'on dépense

**[columns=2]Manger en excès par rapport à ses besoins peut aboutir à :
- Des carences
+ Des maladies cardio-vasculaires
- Un manque de nutriments

**[columns=2]L'IMC signifie :
- Indice de Maladies cardio-vasculaires
+ Indice de Masse Corporelle
- Indice de Matière et de Composition

*)

*(PARTIE II : Le goûter de Vanessa

**[columns=2]Dans le gouter de Vanessa, l'aliment le plus énergétique est :
- les pruneaux
+ Les biscuits
- les deux sont identiques.

**[columns=2]Par rapport aux biscuits, les pruneaux contiennent  :
+ moins de protides
- plus de glucides
+ moins de lipides

**[columns=2]Les dépenses énergétiques journalières d'une adolescente sont en moyenne de
\qty{10000}{\kilo\joule} <co id="siunitxLaTeX" linkends="siunitxLaTeX.exp"/>.
 Vanessa a consommé \qty{3200}{kJ} au petit-déjeuner, \qty{3500}{kJ} à midi et
  \qty{2400}{\kilo\joule} au diner. Elle a donc mangé équilibré :
- Faux
+ Vrai

*)
</programlisting>
</para>

<para><calloutlist>
	<callout arearefs="NoCompletMulti" id="NoCompletMulti.exp">
		<para>La réponse "Aucune des réponses ci-dessus n'est correcte" ne sera pas ajoutée pour les questions multiples.</para>
	</callout>

	<callout arearefs="noshuffle" id="noshuffle.exp">
		<para>Les questions ne seront pas mélangées.</para>
	</callout>

	<callout arearefs="commandeLaTeX" id="commandeLaTeX.exp">
		<para>Autoriser l'insertion de code LaTeX.</para>
	</callout>

	<callout arearefs="packagegeometry packagesiunitx packagebabel" id="packagesSuppl.exp">
		<para>Différents <package>paquets</package> utiles.</para>
	</callout>

	<callout arearefs="clubsuit" id="clubsuit.exp">
		<para>Le symbole des questions multiples est changé.</para>
	</callout>

	<callout arearefs="numeroBabel" id="numeroBabel.exp">
		<para>Utilisation du paquet LaTeX <package>babel</package> pour la gestion de la langue.</para>
	</callout>

	<callout arearefs="ShuffleQuestions-groupe" id="ShuffleQuestions-groupe.exp">
		<para>Les questions de ce groupe <emphasis>seront mélangées</emphasis>.</para>
	</callout>

	<callout arearefs="lastquestion" id="lastquestion.exp">
		<para>Cette question sera <emphasis>toujours</emphasis> la dernière de ce groupe.</para>
	</callout>

	<callout arearefs="siunitxLaTeX" id="siunitxLaTeX.exp">
		<para>Une commande LaTeX utilisée grâce à <command>LaTeX:1</command> et
		<command>LaTeX-Preambule</command>.</para>
	</callout>

</calloutlist></para>
	</sect2>
  </sect1>

  <sect1 id="latex">
    <title>Source au format LaTeX</title>

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

    <para>Un questionnaire à choix multiples peut être décrit sous la forme
    d'un fichier LaTeX utilisant le package
    <package>automultiplechoice</package>. 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 id="latex.simple">
      <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}\namefielddots   <co id="simple.namefielddots" linkends="simple.namefielddots.exp"/>
                  \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}

% \AMCaddpagesto{3} <co id="AMCaddpage" linkends="AMCaddpage.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 ou un code barre (voir <xref linkend="gui.asso.auto.barcode"/>).</para>
          </callout>

          <callout arearefs="simple.namefielddots" id="simple.namefielddots.exp">
            <para>La commande <command>namefielddots</command> insère une ligne pointillée
            ou un champ à remplir si vous utilisez l'option <option>pdfform</option>
            (voir <xref linkend="sec.package.options"/>).</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="AMCaddpage" id="AMCaddpage.exp">
            <para>Si vous décommentez cette ligne, AMC ajoutera des pages
            blanches pour atteindre trois pages de sujet (voir <xref
            linkend="latex.layout.npages"/>).</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 id="latex.shuffle">
      <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

\setdefaultgroupmode{withoutreplacement}

\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}\namefielddots
\vspace*{1mm}
\end{minipage}}}

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

\begin{center}
  \hrule\vspace{2mm}
  \bf\Large Géographie
  \vspace{1mm}\hrule
\end{center}

\restituegroupe{geographie}

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

\restituegroupe{histoire}
}

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

    <sect2 id="secensemble">
      <title 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{{\sc Question #1 :}}    <co id="ensemble.fq"
            linkends="ensemble.fq.exp"/>

\setdefaultgroupmode{withoutreplacement}

\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

\restituegroupe{general}

\AMCcleardoublepage    <co id="ensemble.cp" linkends="ensemble.cp.exp"/>

% \AMCaddpagesto{3} <co id="AMCaddpage.separateanswersheet.sujet"
            linkends="AMCaddpage.separateanswersheet.sujet.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}\namefielddots  <co id="ensemble.namefielddots" linkends="ensemble.namefielddots.exp"/>
      \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"/>

% \AMCaddpagesto{5} <co id="AMCaddpage.separateanswersheet.total"
            linkends="AMCaddpage.separateanswersheet.total.exp"/>

}

\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="AMCaddpage.separateanswersheet.sujet"
                   id="AMCaddpage.separateanswersheet.sujet.exp">
            <para>En décommentant cette ligne, AMC ajoutera des pages blanches
            à la partie sujet afin d'atteindre trois pages (voir <xref
            linkend="latex.layout.npages"/>).</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>AMCcodeGrid</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.namefielddots" id="ensemble.namefielddots.exp">
            <para>La commande <command>namefielddots</command> insère une ligne pointillée
            ou un champ à remplir si vous utilisez l'option <option>pdfform</option>
            (voir <xref linkend="sec.package.options"/>).</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>

          <callout arearefs="AMCaddpage.separateanswersheet.total"
                   id="AMCaddpage.separateanswersheet.total.exp">
            <para>En décommentant cette ligne, AMC ajoutera les pages blanches
            nécessaires afin d'atteindre cinq pages au total
            (sujet+formulaire), voir <xref
            linkend="latex.layout.npages"/>.</para>
          </callout>
        </calloutlist></para>

      <sect3 id="AMCtableform">
       <title id="AMCtableform.title">\AMCtableform</title>
              <para><code>\AMCtableform[options]</code> est une variante de <code>\formulaire</code>
      (<code>\AMCform</code> en anglais) qui affiche les cases dans un tableau multicolonnes.
      Déclarez le paquet <code>\usepackage{multicols}</code> dans le préambule.</para>
      
      <variablelist>
        <varlistentry>
          <term>nanswers=<replaceable>num</replaceable></term>
            <listitem><para>donne le nombre des réponses qui sont 
           cataloguées dans le tableau ( par défaut égal au nombre maximal de réponses
            du sujet).</para></listitem>
        </varlistentry>
        
        <varlistentry>
          <term>ncols=<replaceable>num</replaceable></term>
            <listitem><para>donne le nombre de colonnes à afficher
            dans le tableau (par défaut le plus grand nombre possible de colonnes).</para></listitem>
        </varlistentry>
        
        <varlistentry>
          <term>idtext=<replaceable>texte</replaceable></term>
            <listitem><para>insère un texte avant chaque numéro de question.</para></listitem>
        </varlistentry>
        
        <varlistentry>
          <term>idtitle=<replaceable>texte</replaceable></term>
            <listitem><para>insère un texte à chaque colonne.</para></listitem>
        </varlistentry> 
        
        <varlistentry>
          <term>headers=<replaceable>bool</replaceable></term>
            <listitem><para>affiche (<code>true</code> par défaut) ou non les cases en en-tête
            avec les lettres (ou chiffres) de chaque colonne.</para></listitem>
        </varlistentry> 
  
          <varlistentry>
          <term>inside=<replaceable>bool</replaceable></term>
            <listitem><para>affiche (<code>false</code> par défaut) ou non les lettres (ou chiffres)
            dans chaque case.</para></listitem>
        </varlistentry> 
  
          <varlistentry>
          <term>columnsep=<replaceable>dim</replaceable></term>
          <term>columnseprul=<replaceable>dim</replaceable></term>
            <listitem><para>les arguments du paquet <code>multicols</code>.</para></listitem>
        </varlistentry>   
  
      </variablelist>

      <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>
        </sect3>
  
    </sect2>

    <sect2 id="latex.commands">
      <title id="latex.commands.title">Description des commandes LaTeX</title>

      <sect3 id="sec.package.options">
        <title 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>lang=<replaceable>XX</replaceable></option> :
            indique que le sujet est dans la langue
            <replaceable>XX</replaceable>. Pour le moment, seules les langues
            FR (français), DE (allemand), ES (espagnol), IT (Italien), JA
            (Japonais), NL (Néerlandais), NO (Norvégien) et PT (Portugais)
            sont disponibles.</para>
          </listitem>

          <listitem>
            <para><option>pdfform</option> : permet de créer un formulaire,
            remplissable via les lecteurs de fichiers pdf.</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>

            <note>
              <para>Vous pouvez, ponctuellement, pour une meilleure mise en
              page, annuler, pour une question, cette option avec la commande
              <command>\AMCnobloc</command>.</para>

              <programlisting>{\AMCnobloc%
 \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}%
}% </programlisting>
            </note>
          </listitem>

          <listitem>
            <para><option>asbox</option> : même effet que
            <option>bloc</option>, mais pour la feuille de réponses
            séparée.</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.
            Que cette option soit utilisée ou non, on peut demander l'ajout de
            cette dernière réponse ou l'annuler pour une question particulière
            en utilisant une des commandes
            <command>\AMCcompleteMulti</command> et
            <command>\AMCnoCompleteMulti</command> à l'intérieur de
            l'environnement <command>questionmult</command>
            correspondant.</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>noshufflegroups</option> : annule le mélange
            automatique de l'ordre des groupes. (voir <xref
            endterm="Groupes.questions.title"
            linkend="Groupes.questions"/>)</para>
          </listitem>

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

          <listitem>
            <para><option>correcindiv</option> : produit la correction de tous
            les sujets.</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 <xref endterm="secensemble.title"
            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).</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>init</option> : initialise le générateur aléatoire à
            partir de l'horloge. <emphasis> Option pour test : ne pas utiliser
            pour un examen !</emphasis></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>

          <listitem>
            <para><option>keys=line</option> : option utilisée pour présenter
            le nom des questions sur une ligne avec l'option catalog.</para>
          </listitem>

          <listitem>
            <para><option>postcorrect</option> : option utilisée si on
            souhaite indiquer les bonnes réponses après l'examen, grâce à une
            copie remplie par l'enseignant - voir <xref
            linkend="postcorrect"/>.</para>
          </listitem>

          <listitem>
            <para><option>fullgroups</option> : annule le paramètre optionnel
            de <command>\restituegroup</command> et
            <command>\copygroup</command>, ainsi chaque groupe est entièrement
            inséré et copié (voir <xref endterm="Groupes.questions.title"
            linkend="Groupes.questions"/>).</para>
          </listitem>

          <listitem>
            <para><option>storebox</option> : Si vous choisissez de modifier
            la forme des cases à cocher (carrées par défaut voir <xref
            endterm="style.cases.title" linkend="style.cases"/>) par des
            ovales ou des cercles, vous pouvez transmettre cette option à
            automultiplechoice pour qu'il utilise <option>\storebox</option>
            plutôt que <option>\savebox</option> pour stocker le dessin des
            cases.</para>
          </listitem>

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

            <programlisting>\renewcommand\AMCsubjectPageTag{%
  \fbox{\texttt{\the\AMCid@etud:\thepage}}%
}</programlisting>

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

          <listitem>
            <para><option>nopage</option> : utilisez cette option si vous ne
            voulez pas utiliser les marges, marques de calage et codes
            d'identification de page d'AMC. Cette option est donc à utiliser
            pour produire des documents qui ne seront pas traités par AMC,
            comme des listes d'exercices par exemple.</para>
          </listitem>

          <listitem>
            <para><option>nowatermark</option>: retire le filigrane (projet)
            si vous compilez hors AMC. <emphasis>Très dangereux</emphasis>.</para>
          </listitem>

          <listitem>
            <para><option>survey</option>: pour créer des sondages avec une mise en page
            de haute qualité <ulink url="https://gitlab.com/CSaalbach/surveyamc-project/-/blob/master/surveyamc_tutorial.pdf"
            >https://gitlab.com/CSaalbach/surveyamc-project/-/blob/master/surveyamc_tutorial.pdf</ulink>.</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>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>Cette dernière syntaxe utilise le paquet
          <package>environ</package>.</para>
        </note>

        <para>Pour différencier les copies, la commande
        <command>\exemplairepair</command> peut être utile. À utiliser sous la
        forme d'un test de condition.</para>

        <para>Le numéro de la copie peut être obtenu par la commande
        <command>\AMCStudentNumber</command>.</para>
      </sect3>

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

        <important>
          <para>Il ne faut pas imbriquer une question dans un environnement
          question ou tabularx sinon l'export des notes sera incomplet
          (voir <xref endterm="sec.export.notes.title" linkend="sec.export.notes"/>).</para>
        </important>

         <sect4 id="questionssimples">
         	<title>Questions simples</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>
		</sect4>

		<sect4 id="questionsmultiples">
          <title>Questions multiples</title>
          <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>
    </sect4>

        <sect4 id="split.answers">
          <title id="split.answers.title">Scinder les réponses</title>
            <para>L'environnement peut être scinder.</para>
  <programlisting>
\begin{questionmult}{R.ect}
  Un écart type est un indicateur…
   \begin{reponses}[o]
    \mauvaise{de tendance centrale}
    \bonne{de dispersion}
    \end{reponses}

    \begin{reponses}[o]
    \bonne{sensible aux valeurs extrêmes}
    \mauvaise{peu sensible aux valeurs extrêmes}
    \end{reponses}

    \begin{reponses}[o]
    \bonne{de même unité que les valeurs}
    \mauvaise{d'unité différente des valeurs}
    \end{reponses}
  </programlisting>
  
  <warning>
  <para>Dans une <option>questionmult</option> avec l'option
  <option>completemulti</option>, chaque environnement <option>reponses</option>
  ajoute la question finale <emphasis>Aucune de ces réponses n'est correcte</emphasis>. 
  Il faut donc supprimer cette option pour les premières utilisations de reponses. Voir <xref endterm="sec.package.options.title"
  linkend="sec.package.options"/>.</para></warning>
  <programlisting>
  \begin{questionmult}{R.ect-b}
  Un écart type est un indicateur\dots

  \emph{(concernant son objectif)}
  {\AMCnoCompleteMulti
    \mauvaise{de tendance centrale}
    \bonne{de dispersion}
  \end{reponses}}

  \emph{(concernant sa sensibilité)}
  {\AMCnoCompleteMulti\begin{reponses}
    \bonne{sensible aux valeurs extrêmes}
    \mauvaise{peu sensible aux valeurs extrêmes}
  \end{reponses}}

  \emph{(concernant sa dimension)}
  \begin{reponses}
    \bonne{de même unité que les valeurs}
    \mauvaise{d'unité différente des valeurs
  \end{reponses}
\end{questionmult}
  </programlisting>
          </sect4>


         <sect4 id="questionsouvertes">
        <title>Questions ouvertes</title>

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

        <para>Une manière de procéder consiste à présenter des cases à cocher
        par le correcteur. Après l'examen, le correcteur lit la réponse
        fournie par l'étudiant et affecte les points qui correspondent en
        cochant certaines cases qui lui sont réservées. Il peut ensuite
        scanner les copies et utiliser AMC pour les corriger, tout en
        intégrant les résultats des questions ouvertes dans la notation  :
        <programlisting>\begin{question}{ouverte}
  Donnez la d\'efinition de l'inflation.
  \AMCOpen{lines=5}{\mauvaise[F]{f}\bareme{0}\mauvaise[P]{p}\bareme{1}\bonne[J]{j}\bareme{2}}
\end{question}
</programlisting></para>

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

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

        <variablelist>
          <varlistentry>
            <term>lineup=<replaceable>bool</replaceable></term>

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

          <varlistentry>
            <term>lineuptext=<replaceable>texte</replaceable></term>

            <listitem>
              <para>si <code>lineup=true</code>, le texte et les cases de
              notation sont présentés sur la même ligne.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>lines=<replaceable>num</replaceable></term>

            <listitem>
              <para>fixe le nombre de lignes allouées à la réponse (la valeur
              par défaut est <code>1)</code>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>lineheight=<replaceable>dim</replaceable></term>

            <listitem>
              <para>fixe la hauteur de chaque ligne (la valeur par défaut est
              <code>1cm</code>).</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>dots=<replaceable>bool</replaceable></term>

            <listitem>
              <para>avec la valeur <code>true</code> (par défaut), chaque
              ligne sera matérialisée par des pointillés. Donner la valeur
              <code>false</code> pour les supprimer.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>contentcommand=<replaceable>cmdname</replaceable></term>

            <listitem>
              <para>cette option peut être utilisée pour personnaliser le
              contenu de la zone de réponse. Il faut définir une commande
              <command>\<replaceable>cmdname</replaceable></command> qui devra
              produire le contenu désiré.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>hspace=<replaceable>dim</replaceable></term>

            <listitem>
              <para>fixe l'espace à ajouter entre les cases de la zone de
              notation.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>backgroundcol=<replaceable>color</replaceable></term>

            <listitem>
              <para>fixe la couleur de fond de la zone de notation.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>foregroundcol=<replaceable>color</replaceable></term>

            <listitem>
              <para>fixe la couleur utilisée dans la zone de notation.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>scan=<replaceable>bool</replaceable></term>

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

          <varlistentry>
            <term>annotate=<replaceable>bool</replaceable></term>

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

          <varlistentry>
            <term>question=<replaceable>texte</replaceable></term>

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

              <para>L'identifiant de la question sera affiché par défaut en
              inscrivant question dans les options.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>answer=<replaceable>texte</replaceable></term>

            <listitem>
              <para>donne un texte court qui sera inscrit dans la zone de
              réponse sur la correction.</para>
            </listitem>
          </varlistentry>
        </variablelist>

        <tip>
          <para>Utilisez la commande <command>\savebox</command>, <emphasis>en
          dehors de la commande exemplaire</emphasis>, pour afficher un texte
          plus long sur plusieurs lignes.</para>

<programlisting>
\newsavebox{\correcbox}
\savebox{\correcbox}{\parbox{5cm}{\color{red}{Ici\\ou\\l\`a...}}}
</programlisting>

          <para>Puis, appelez le contenu de la boîte à l'endroit voulu
          :</para>

<programlisting>
\AMCOpen{lines=4,lineheight=0.15cm, answer= \usebox{\correcbox}}{le barème}
</programlisting>
        </tip>

<warning>
	<itemizedlist>
		<listitem>
	<para>Si la réponse contient une virgule ou le signe égal, il faut encadrer
		<replaceable>texte</replaceable> par des accolades.</para>
	</listitem>
	</itemizedlist>

<programlisting>
\FPeval\aRandomVariable{round(3+8*random,2)}
\FPeval\aCalculateVariable{round(\aRandomVariable*9.81,2)}

\AMCOpen{answer={m=\qty{\aRandomVariable}{\kilo\gram},%
P=\qty{\aCalculateVariable}{\newton}}}{le barème}
</programlisting>
</warning>

        <variablelist>
          <varlistentry>
            <term>width=<replaceable>dim</replaceable></term>

            <listitem>
              <para>donne la dimension horizontale du cadre entourant la zone
              de réponse dans le cas <code>lineup=false</code>. La valeur par
              défaut est <code>.95\linewidth</code>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>framerule=<replaceable>dim</replaceable></term>

            <listitem>
              <para>donne l'épaisseur du trait pour le cadre entourant la zone
              de réponse.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>framerulecol=<replaceable>color</replaceable></term>

            <listitem>
              <para>donne la couleur du cadre entourant la zone de
              réponse.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>boxmargin=<replaceable>dim</replaceable></term>

            <listitem>
              <para>donne la taille de la marge entourant les cases de la zone
              de notation.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>boxframerule=<replaceable>dim</replaceable></term>

            <listitem>
              <para>donne l'épaisseur du trait pour le cadre entourant la zone
              de notation.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>boxframerulecol=<replaceable>color</replaceable></term>

            <listitem>
              <para>donne la couleur du trait pour le cadre entourant la zone
              de notation.</para>
            </listitem>
          </varlistentry>
  
            <varlistentry>
            <term>Treserved=<replaceable>texte</replaceable></term>

            <listitem>
              <para>petit texte dans la zone de notation
        pour signifier aux étudiants de ne pas cocher ces cases-là.</para>
          <para>Dans le cas de l'utilisation d'une feuille de réponse séparée,
        on peut également ajouter un petit texte à chaque question ouverte
        comme suit :</para>

        <programlisting>\def\AMCotextGoto{\par{\bf\emph{Répondez sur la feuille de réponses.}}}</programlisting>
            </listitem>
          </varlistentry>
        </variablelist>

        <para>La commande
        <command>\AMCopenOpts</command>,  permet de modifier la valeur par défaut (pour tout votre
        questionnaire) de toutes ces options.</para>

        <programlisting>\AMCopenOpts{boxframerule=2pt,boxframerulecol=red}</programlisting>


        <tip>
          <para>Si le nombre de cases réponses est important, utilisez
          l'astuce ci-dessous (<command>\parbox</command>) pour obliger un
          passage à la ligne.</para>

   <programlisting>\AMCOpen{lines=6}{
  \hbox{\parbox{8.5cm}{
  \mauvaise[F]{F}\bareme{0}
  \mauvaise[1]{1}\bareme{1}
  \mauvaise[2]{2}\bareme{2}
  \mauvaise[3]{3}\bareme{3}
  \mauvaise[4]{4}\bareme{4}
  \mauvaise[5]{5}\bareme{5}
  \mauvaise[6]{6}\bareme{6}
  \mauvaise[7]{7}\bareme{7}
  \mauvaise[8]{8}\bareme{8}
  \mauvaise[9]{9}\bareme{9}
  \bonne[10]{10}\bareme{10}}}
}
 </programlisting>
        </tip>

      </sect4>

      <sect4>
        <title>Questions indicatives</title>
        <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>
  </sect4>

    <sect4 id="identifier">
      <title id="identifier.title">Identifiant des questions</title>
        <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 le
          caractère souligné <code>_</code>, les accolades, crochets, par
          exemple !). Il ne faut pas utiliser d'identifiants se terminant par
          un nombre entier entre crochets (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>\AMCcodeGrid</command> - voir <xref
          linkend="latex.codes"/>).</para>
        </important>

        <para>L'identifiant peut être de la forme
        <programlisting>groupe.identifiant</programlisting> ou
        <programlisting>groupe:identifiant</programlisting> (voir remarque
        <xref endterm="babel.french.title" linkend="babel.french"/>) pour obtenir
        le total d'un même groupe de questions lors de l'export des notes
        (voir <xref endterm="sec.export.notes.title" linkend="sec.export.notes"/>).</para>
      </sect4>

        <sect4 id="question.number">
          <title>Numéro de question, voir aussi <xref linkend="latex.style"/></title>

          <sect5 id="reset">
          	<title>Réinitialisation</title>

          <para>On peut modifier le numéro de la prochaine question à l'aide
          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>
      		</sect5>


          	<sect5 id="section.number">
          		<title>Afficher N° section.N° question</title>

<itemizedlist>
 <listitem>
 <para>Uniquement dans le fichier pdf</para>
<programlisting>
\makeatletter
\def\AMCbeginQuestion#1#2{\par\noindent{\bf \the\c@section.#1} #2\hspace*{1em}}
\makeatother
%Remet automatiquement à 1 le compteur des question lors d'une nouvelle section
%à utiliser avec le paquet amsmath
\numberwithin{AMCquestionaff}{section}
</programlisting>
  </listitem>
  
  <listitem>
  <para> Pris en compte dans l'export ods</para>
<para>Juste après \begin{document}</para>
<programlisting>
\makeatletter
\renewcommand\AMC@qaff{\thesection.\arabic{AMCquestionaff}}
\makeatother
</programlisting>
<para>Et après chaque \begin{section} pour faire repartir le numéro de 1.</para>
<programlisting>
\AMCnumero{1}
</programlisting>
</listitem>
</itemizedlist>

		</sect5>

      		<sect5 id="number.cancelled">
      			<title>Cacher le numéro</title>
                      <para>Pour cacher le numéro d'une question particulière et
            conserver dans le sujet une continuité des numéros, ajouter la
            commande <command>\AMCquestionNumberfalse</command> juste après
            <command>\AMCbeginQuestion</command> (ou utiliser la commande
            ci-dessus) :</para>

<programlisting>{
\def\AMCbeginQuestion##1##2{}
\AMCquestionNumberfalse
\begin{question}
 ...
\end{question}
}</programlisting>

              <para>Ou avec une commande dans le préambule.</para>
  <programlisting>
\makeatletter
\def\jepasse{%
\def\AMCbeginQuestion##1##2{\ifAMC@catalog\textbf{##1}\fi}
\AMCquestionNumberfalse}
\makeatother
  </programlisting>
          <para>Ne pas oublier d'insérer des accolades autour pour limiter son effet à une question.</para>

          <programlisting>{\jepasse
 \begin{question}{Calibre600}
   Quel calibre doit-on choisir pour mesurer une tension inconnue?
   \begin{reponseshoriz}[o]
     \mauvaise{200}\mauvaise{2}\mauvaise{20}\mauvaise{200}\bonne{600}
   \end{reponseshoriz}
 \end{question}
}</programlisting>

          <para><emphasis>Dans cet exemple, le numéro de la question ne sera
          pas affiché via la commande
          <command>\AMCquestionNumberfalse</command>.</emphasis></para>

          </sect5>

          <sect5 id="questions.counter">
          	<title id="questions.counter.title">Compteur de questions</title>
          	<para>Le compteur interne des questions est <code>AMCquestionaff</code>.
          	Pour afficher le nombre total de questions en début de sujet, il faut utiliser
          	le paquet <package>totcount</package>. Voici un exemple :</para>
<programlisting>
documentclass[a4paper]{article}

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

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

\exemplaire{10}{

Il y a \total{AMCquestionaff} questions.

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

\noindent{\bf QCM  \hfill TEST}

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

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

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

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

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

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

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

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

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

%\theAMCquestionaff
}

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

        <sect5 id="answers.counter">
          <title id="answers.counser.title">Compteur de réponses</title>
          <para>Le compteur est <code>AMC@ncase</code>.</para>
<programlisting>
% après le \begin{document}
\makeatletter
\def\proposition{Proposition \alph{AMC@ncase} :}
\makeatother
% ...
% et pour une question
\begin{question}{identifiant}
Question…

\begin{reponses}
\bonne{\proposition{} texte…}
\mauvaise{\proposition{} texte…}
\mauvaise{\proposition{} texte…}
\end{reponses}
\end{question}
</programlisting>
        </sect5>
      </sect4>



      <sect4 id="latex.choices.multicol">
        <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> 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>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>
      </sect4>

<sect4 id="latex.oneletter">
        <title>Réponses en une lettre</title>

        <para>Dans certains cas, une lettre suffit pour décrire la réponse
        proposée. Dessiner les cases à cocher à la fois sur le sujet et sur la
        feuille de réponse séparée est alors redondant. L'utilisation de
        <command>\AMCBoxOnly</command> à la place d'un environnement
        <code>reponses</code> peut alors s'avérer judicieuse :</para>

        <programlisting>\begin{question}{bras}
  Quelle lettre désigne le \textit{bras} sur le diagramme ?
  \AMCBoxOnly{ordered=true}{\mauvaise[A]{}\bonne[B]{}%
    \mauvaise[C]{}\mauvaise[D]{}}
\end{question}</programlisting>

        <para>Le premier argument de <command>\AMCBoxOnly</command> est une
        liste d'options séparées par des virgules. Les options disponibles
        sont les suivantes :</para>

        <variablelist>
          <varlistentry>
            <term>help=<replaceable>texte</replaceable></term>

            <listitem>
              <para>écrit un petit texte de rappel juste avant les cases sur
              la feuille de réponse séparée.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>ordered=<replaceable>bool</replaceable></term>

            <listitem>
              <para>avec la valeur <code>true</code> (la valeur par défaut est
              <code>false</code>), les réponses ne seront pas
              mélangées.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </sect4>

  <sect4 id="latex.explain">
        <title id="latex.explain.title">Approfondir la réponse</title>

        	<sect5 id="explain.command">
        		<title id="explain.command.title">Commande \explain</title>

        <para>Lors de l'impression du corrigé, vous pouvez apporter des
        précisions grâce à la commande <command>\explain</command>. Cette
        commande, à insérer dans un environnement <option>question</option>
        (ce qui inclut les environnements <option>questionmult</option>,
        <option>questionmultx</option>), affichera le texte écrit.</para>

        <programlisting>\begin{question}{combustion}
  Quel gaz apparaît lors de la combustion incomplète du butane~?
  \begin{reponses}
    \bonne{Le monoxyde de carbone.}
    \mauvaise{Le dioxyde de carbone.}
    \mauvaise{Le dioxygène.}
  \end{reponses}
  \explain{Le monoxyde de carbone est un gaz incolore, inodore et toxique.}
\end{question}      </programlisting>

        <note>
          <para>Par défaut, le mot <emphasis>Explication</emphasis> sera
          affiché. Vous pouvez modifier ce texte pour une ou plusieurs
          questions avec la commande <command>\AMCtext</command> (Voir <xref
          linkend="AMCtext"/>).</para>
        </note>

        <para><programlisting>\begin{question}{elevation}
  Parmi les montagnes suivantes, laquelle est la plus haute ?
      \begin{reponses}
      \bonne{Sagarmatha}
      \mauvaise{K2}
      \mauvaise{Mont Blanc}
      \mauvaise{Aconcagua}
  \end{reponses}
  \explain{Sagarmatha qui signifie littéralement `la tête du ciel' est le nom indigène du mont Everest, la montagne la plus haute du monde.}
\end{question}

\begin{question}{odd}
  Cochez l'intrus.
  \begin{reponses}
      \bonne{Kilimanjaro}
      \mauvaise{Himalayas}
      \mauvaise{Alpes}
      \mauvaise{Andes}
  \end{reponses}
  \AMCtext{explain}{\textit{\textbf{Raison :}}}
  \explain{Le Kilimanjaro est une montagne tandis que les autres sont des chaînes de montagnes.}
\end{question}

\begin{questionmult}{himalaya}
  Parmi les montagnes suivantes, lesquelles se trouvent dans l'Himalaya ?
  \begin{reponses}
      \bonne{Mount Everest}
      \bonne{K2}
      \mauvaise{Mont Blanc}
      \mauvaise{Aconcagua}
  \end{reponses}
  \explain{L'Aconcagua est situé dans la cordillère des Andes tandis que le Mont Blanc se trouve dans les Alpes.}
\end{questionmult}</programlisting></para>

        <para><emphasis>Explication :</emphasis> sera affiché avant les
        explications de la première et troisième question, <emphasis>Raison
        :</emphasis> avant les explications de la deuxième question.</para>
        </sect5>

<sect5 id="explaincontext.command">
<title id="explaincontext.command.title">Commande \explaincontext</title>
<para>Cette commande affiche l’argument dans le corrigé et en dehors de l’environnement question.</para>
</sect5>
      </sect4>

      <sect4 id="garder.ordre.reponses.">
        <title>Garder l'ordre des réponses</title>
        <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>

        <sect5 id="latex.lastchoice">
          <title>Dernier choix</title>

          <para>Vous pouvez choisir de toujours laisser une ou plusieurs
          réponses en dernière position avec la commande
          <command>\lastchoices</command>.</para>

          <programlisting>\begin{question}{color}
  Which color?
  \begin{choiceshoriz}
    \mauvaise{red}
    \mauvaise{blue}
    \mauvaise{yellow}
    \lastchoices
    \bonne{transparent}
    \mauvaise{can't say}
  \end{choiceshoriz}
\end{question}

\begin{questionmult}{number}
  How many?
  \begin{choiceshoriz}
    \mauvaise{none}
    \bonne{one}
    \mauvaise{two}
    \mauvaise{three}
    \lastchoices
    \bonne{not so much}
    \mauvaise{a lot}
  \end{choiceshoriz}
\end{questionmult}       </programlisting>
        </sect5>
      </sect4>

      <sect4 id="latex.numeric.toc">
        <title>Réponse numérique (impossible avec AMC-TXT)</title>
        <para> voir <xref linkend="latex.numeric"/></para>
      </sect4>

    <sect4 id="remarques">
        <title>Remarques</title>
        <sect5 id="babel.french">
        <title id="babel.french.title">French et babel</title>
        <warning>
          <para>Quand on utilise <package>babel</package> et l'option
          <option>french</option>, ne pas mettre de <parameter>:</parameter>
          ni <parameter>;</parameter> dans les identifiants de
          questions.</para>
        </warning>
        </sect5>

        <sect5 id="maximum.reponses">
        <title>Nombre maximal de réponses</title>
          <para>Le nombre de réponses pour une question est actuellement
          limité à 199.</para>
        </sect5>
        </sect4>

      </sect3>

      <sect3 id="definir.zone.notation">
        <title id="definir.zone.notation.title">Définir la zone de
        notation</title>

        <para>Vous pouvez ajouter une option supplémentaire de zone de
        notation (voir <xref endterm="position.note.title"
        linkend="position.note"/>) avec le package
        <package>tikz</package>.</para>

        <programlisting>\usepackage{tikz}</programlisting>

        <sect4 id="latex.zone.std">
          <title>Sans l'option <option>ensemble</option></title>

          <para>Dans ce mode, le sujet et les réponses sont sur la(es) même(s)
          feuilles.</para>

          <para>Taper cette commande, après le
          <command>\begin{document}</command> et avant la commande
          <command>\exemplaire</command> :</para>

          <programlisting>\AMCsetScoreZone{width=1.5em,height=1.5ex,depth=.5ex,position=margins}</programlisting>

          <para>Les grandeurs <parameter>width</parameter>,
          <parameter>height</parameter>, <parameter>depth</parameter>
          définissent les dimensions de la case de notation ainsi que son
          emplacement sur la feuille de réponses. Cette zone invisible est
          définie pour toutes les questions.</para>

          <para>La variable <parameter>position</parameter> peut prendre les
          valeurs : none, question, margin, margins.</para>
        </sect4>

        <sect4 id="latex.zone.separate">
          <title>Avec l'option <option>ensemble</option></title>

          <para>Dans ce mode, la feuille de réponses est séparée du
          sujet.</para>

          <para>Taper cette commande, après le
          <command>\begin{document}</command> et avant la commande
          <command>\exemplaire</command> :</para>

          <programlisting>\AMCsetScoreZoneAnswerSheet{width=1.5em,height=1.5ex,depth=.5ex,position=question}</programlisting>

          <para>Les grandeurs <parameter>width</parameter>,
          <parameter>height</parameter>, <parameter>depth</parameter>
          définissent les dimensions de la case de notation ainsi que son
          emplacement sur la feuille de réponses. Cette zone invisible est
          définie pour toutes les questions.</para>

          <para>La variable <parameter>position</parameter> peut prendre les
          valeurs : none, question, margin, margins.</para>

          <warning>
            <para>L'option <option>margins</option> ne fonctionne pas avec
            AMC-TXT</para>

            <para>Vous ne pouvez pas modifier votre sujet<emphasis> a
            posteriori</emphasis> en rajoutant l'une de ces fonctions après
            l'impression du sujet.</para>
          </warning>
        </sect4>
      </sect3>

      <sect3 id="Groupes.questions">
        <title id="Groupes.questions.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>Enfin, on restitue les questions du groupe par la commande
        <command>restituegroupe</command>, comme dans <programlisting>\restituegroupe{ungroupe}</programlisting></para>

        <para>La manière dont le groupe est restitué peut être contrôlée par
        le mode du groupe, défini grâce à la commande
        <command>setgroupmode</command>  (appelé après la création des groupes
        et avant <command>\exemplaire</command>):</para>

        <programlisting>\setgroupmode{mygroup}{XXX}</programlisting>

        <para>où <code>XXX</code> peut prendre les valeurs suivantes :</para>

        <variablelist>
          <varlistentry>
            <term>fixed</term>

            <listitem>
              <para>avec ce mode, les éléments du groupe sont pris à partir du
              début du groupe à chaque restitution.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>cyclic</term>

            <listitem>
              <para>les éléments sont pris à la suite les uns des autres à
              chaque restitution, en repartant du début si nécessaire.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>withreplacement</term>

            <listitem>
              <para>même chose que pour <code>fixed</code>, mais le groupe est
              mélangé à chaque fois.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>withoutreplacement</term>

            <listitem>
              <para>comme <code>cyclic</code>, en ajoutant un mélange à chaque
              fois que l'on reprend au début.</para>
            </listitem>
          </varlistentry>
        </variablelist>

        <para>Un mode par défaut peut être choisi pour tous les groupes qui
        seront créés ensuite (un groupe est créé à la première utilisation de
        <command>element</command>) :</para>

        <programlisting>\setdefaultgroupmode{XXX}</programlisting>

        <para>Si cette commande n'est pas utilisée, c'est le mode
        <code>fixed</code> qui sera utilisé.</para>

        <para>On peut manipuler les groupes de questions de manière plus
        précise grâce aux commandes suivantes : <ulink
      url="https://project.auto-multiple-choice.net/attachments/2711/tutoMelangeAMC.tex">tutoriel mélange</ulink></para>

        <itemizedlist role="raggedright">
          <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>\insertgroupfrom[n]{ungroupe}{i}</code> Cette commande
            fait la même chose que <code>\restituegroupe[n]{ungroupe}</code>
            mais la sélection débute à l'élément <replaceable>i</replaceable>.
            Le premier élément a pour valeur d'indice 0.</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>

          <listitem>
            <para><code>\copygroupfrom[n]{depuis}{vers}{i}</code> Cette
            commande fait la même chose que
            <code>\copygroup[n]{depuis}{vers}</code> mais la sélection débute
            à l'élément <replaceable>i</replaceable>. Le premier élément a
            pour valeur d'indice 0.</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>, et en supposant que les groupes
        <code>GA</code>, <code>GB</code> et <code>tout</code> sont de mode
        <code>withreplacement</code> ou
        <code>withoutreplacement</code>) :</para>

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

<note><para>
Une valeur nulle est possible, une valeur négative copie tout le groupe.
</para></note>

      </sect3>

      <sect3 id="latex.page">
        <title>Papier, marges</title>

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

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

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

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

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

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

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

        <programlisting>\AMCidsPosition{pos=<replaceable>p</replaceable>,width=<replaceable>w</replaceable>,height=<replaceable>h</replaceable>}</programlisting>

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

        <programlisting>\AMCidsPosition{pos=side,width=4cm,height=3ex}</programlisting>

        <para>Concluons par un exemple raisonnable au format A5 :</para>

        <programlisting>\geometry{a5paper,hmargin=1.6cm,top=2.5cm}
\AMCidsPosition{pos=top}</programlisting>

        <warning>
          <para>N'utilisez pas le paquet <command>pgfpages</command> ou toutes
          autres commandes de mise en page modifiant l'impression du nombre de
          pages par feuille.</para>
        </warning>
      </sect3>

      <sect3 id="style.cases">
        <title id="style.cases.title">Style des cases à cocher</title>

        <para>La commande <command>\AMCboxStyle</command> (nouveau nom de la
        commande <command>\AMCboxDimensions</command> qui reste compatible
        avec les options ci-dessous) permet de modifier une ou plusieurs
        dimensions relatives aux cases à cocher :</para>

        <para>Les valeurs par défaut des options sont :</para>

        <programlisting>\AMCboxStyle{shape=square,size=2.5ex,down=.4ex,rule=.5pt,outsidesep=.1em,color=black}</programlisting>

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

          <listitem>
            <para><option>width</option> représente la largeur des
            cases ;</para>
          </listitem>

          <listitem>
            <para><option>height</option> représente la hauteur des
            cases ;</para>
          </listitem>

          <listitem>
            <para><option>size</option> représente la taille (à la fois
            <option>width</option> et <option>height</option>) 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>

          <listitem>
            <para><option>outsidesep</option> représente la distance entre la
            case et la lettre (ou le chiffre) quand l'option
            <option>outsidebox</option> est choisie (voir <xref
            endterm="sec.package.options.title"
            linkend="sec.package.options"/>).</para>
          </listitem>

          <listitem>
            <para><option>cross=true</option> visible uniquement sur la
            feuille réponse, indique par une croix la bonne réponse au lieu de
            colorier la case.</para>
          </listitem>

          <listitem>
            <para><option>crossrule=1.5</option> visible uniquement sur la
            feuille réponse, représente l'épaisseur de la croix
            précédente.</para>
          </listitem>

          <listitem>
            <para><option>color=<replaceable>col</replaceable></option> permet
            d'indiquer la couleur à utiliser pour les cases à cocher. La
            couleur <replaceable>col</replaceable> doit être reconnue par le
            paquet LaTeX <command>xcolor</command>. On pourra ainsi utiliser
            certains noms de couleurs (comme <replaceable>red</replaceable>
            pour le rouge), ou définir soi-même sa couleur comme dans</para>

            <programlisting>\definecolor{vertclair}{rgb}{0.67,0.88,0.5}
\AMCboxStyle{color=vertclair}</programlisting>
          </listitem>
        </itemizedlist>

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

        <programlisting>\AMCboxStyle{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
        <command>arabxetex</command>, la commande suivante pourra se révéler
        utile :</para>

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

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

        <programlisting>\def\AMCchoiceLabelFormat#1{\textbf{#1}}</programlisting>

        <para>Pour changer le style des lettres inscrites à l'exterieur des
        cases, on pourra également redéfinir la commande
        <command>\AMCoutsideLabelFormat</command>. Par exemple, pour obtenir
        des lettres grasses, on utilisera :</para>

        <programlisting>\def\AMCoutsideLabelFormat#1{\textbf{#1}}</programlisting>

        <note>
          <para>La commande LaTeX pour basculer en mode corrigé (cases bonnes
          réponses coloriées) est <command>\AMC@correctrue</command>. Vous
          pouvez créer une commmande pour indiquer à AMC de basculer en mode
          corrigé même dans le sujet (DOC-sujet.pdf). Le code ci-dessous est à
          inscrire juste après \begin{document}.</para>

          <programlisting>\makeatletter
\def\AMCforcecorrect{\AMC@correctrue}
\makeatother</programlisting>

          <para>Vous pouvez inclure cette commande pour une question
          particulière qui sera encadrée par des accolades pour en limiter
          l'effet. Indiquez un barème nul ou utilisez la commande
          <command>\QuestionIndicative</command></para>

          <programlisting>{\AMCforcecorrect\begin{questionmult}{test}\QuestionIndicative
  .....
 \end{questionmult}
}        </programlisting>
        </note>
      </sect3>

      <sect3 id="latex.style">
        <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>

        <sect4 id="reponsesperso">
          <title>Environnement <option>reponsesperso</option></title>

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

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

          <sect5 id="reponsesperso.exemple1">
            <title>Exemple 1</title>

            <para>On peut utiliser des cases à cocher pour pénaliser les
            étudiants rendant leur copie en retard, par exemple (8 points en
            moins pour un petit retard, et 20 points en moins pour un retard
            exagéré). Il suffira d'inclure à l'endroit désiré (par exemple
            dans l'en-tête quelque chose comme ça (ici je demande un fond
            gris) :</para>

            <programlisting>\fcolorbox{black}{gray}{\insertRetard}</programlisting>

            <para>où la commande <command>\insertRetard</command> a été
            définie en-dehors de \exemplaire :</para>

            <programlisting>
\def\insertRetard{ %
{\def\AMCbeginQuestion##1##2{}\AMCnobloc%
 \begin{questionmult}{00retard}
 \AMCnoCompleteMulti\AMCdontAnnotate%
 \def\AMCbeginAnswer{}\def\AMCendAnswer{}%
 Réservé~\begin{reponsesperso}[o]\mauvaise{R1~}\bareme{b=0,m=-8}\mauvaise{R2}\bareme{b=0,m=-20}\end{reponsesperso}%
 \end{questionmult}}%
}
</programlisting>

            <itemizedlist>
              <listitem>
                <para>la commande <command>\def\AMCbeginQuestion##1##2{}
                </command>(combinée avec l'utilisation de l'environnement
                <option>reponsesperso</option>) permet qu'AMC n'écrive pas
                "Question XX".</para>
              </listitem>

              <listitem>
                <para><command>\def\AMCbeginAnswer{}\def\AMCendAnswer{}</command>
                permettent également d'épurer le résultat.</para>
              </listitem>

              <listitem>
                <para><command>\AMCnoCompleteMulti</command> permet de
                demander à AMC de ne pas rajouter la réponse "aucune de ces
                réponses n'est correcte" marlgré l'utilisation de
                questionmult.</para>
              </listitem>

              <listitem>
                <para><command>\AMCdontAnnotate</command> demande à AMC de
                ne pas annoter ces cases là.</para>
              </listitem>
            </itemizedlist>

            <important>
              <para>Lorsque vous êtes à l'intérieur de la commande
              <command>\exemplaire</command>, il faut doubler les
              <code>#</code>.</para>

              <programlisting>\def\AMCanswer##1##2{##1  ##2}
\def\AMCbeginQuestion##1##2{}</programlisting>
            </important>
          </sect5>

          <sect5 id="reponsesperso.exemple2">
            <title>Utilisation en mathématiques</title>

            <programlisting>
\begin{questionmult}{formule}\bareme{mz=2}\AMCnoCompleteMulti
  Comment est définie la fonction identité ?
  \begin{reponsesperso}[o]
    \[f(x)=\bonne[$y$]{}\mauvaise[$x$]{}\bonne[$+$]{}\bonne[$x^2$]{}\]
  \end{reponsesperso}
\end{questionmult}
</programlisting>
          </sect5>
        </sect4>

        <sect4 id="espaces">
          <title>Espaces</title>

          <para>Certains espacements peuvent également être modifiés :</para>

          <programlisting>\AMCinterIrep=0pt
\AMCinterBrep=.5ex
\AMCinterIquest=0pt
\AMCinterBquest=3ex
\AMCpostNquest=1.5ex
\AMCpostOquest=7mm
\setlength{\AMChorizAnswerSep}{3em plus 4em}
\setlength{\AMChorizBoxSep}{1em}</programlisting>

          <para>Ces dimensions correspondent aux espaces verticaux ajoutés
          entre les questions (<code>quest</code>) ou les réponses
          (<code>rep</code>), en mode boîte (<code>B</code>, obtenu avec
          <command>\AMCBoxedAnswers</command> ou l'option de package
          <option>bloc</option>) ou standard (<code>I</code>), l'espace après
          une question numérique, ouverte. Les deux dernières longueurs sont utilisées
          pour l’environnement <option>reponsesperso</option>.</para>
        </sect4>
      </sect3>

      <sect3 id="latex.layout">
        <title>Mise en page</title>

        <sect4 id="latex.layout.margins">
          <title>Marges</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>
        </sect4>

        <sect4 id="latex.layout.npages">
          <title>Nombre de pages</title>

          <para>AMC gère automatiquement le nombre de pages à générer pour
          chaque sujet. Vous pouvez choisir de fixer un nombre de pages
          identiques pour chaque sujet avec la commande
          <command>\AMCaddpagesto{entier}</command> à placer à l'endroit où
          vous souhaitez atteindre ce nombre de pages (en général à la toute
          fin de la description de la copie, ou juste avant le
          formulaire).</para>
        </sect4>
      </sect3>

      <sect3 id="latex.style.separate">
        <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 <xref endterm="secensemble.title"
        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 :</para>

            <programlisting>\def\AMCformBeforeQuestion{\vspace{\AMCformVSpace}\par}
\def\AMCformQuestion#1{\textbf{Question #1 :}}
\def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1}
</programlisting>

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

          <listitem>
            <para>Vous pouvez forcer AMC à ne pas respecter l'ordre des
            questions et à mémoriser les questions ouvertes afin qu'elles
            soient restituées ensemble. Cela peut être utile lorsque vous
            utilisez le package <package>multicols</package>, les réponses
            écrites à la main des questions ouvertes demandant plus
            d'espace.</para>

            <para>La commande
            <command>\AMCformFilter{!\AMCifcategory{open}}</command> affiche
            toutes les questions sauf les questions ouvertes puis la commande
            <command>\AMCformFilter{\AMCifcategory{open}}</command> affiche
            uniquement les questions ouvertes. Les deux commandes doivent être
            utilisées <emphasis>ensemble</emphasis>.</para>

            <programlisting>
%Sur deux colonnes, les cases réponses sont affichées
%à l'exception des questions ouvertes.
\begin{multicols}{2}
\AMCformFilter{!\AMCifcategory{open}}
\end{multicols}

%Toutes les questions ouvertes sont affichées.
\AMCformFilter{\AMCifcategory{open}}
         </programlisting>

            <note>
              <para>L'ordre croissant des numéros est toujours
              respecté.</para>
            </note>
          </listitem>
        </orderedlist>
      </sect3>

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

        <para>L'entrée de codes (par exemple pour que chaque étudiant
        codifie son numéro d'étudiant lui-même sur sa copie) peut être
        aisément effectuée à l'aide de la commande LaTeX
        </para>
        <programlisting>\AMCcodeGridInt[<replaceable>options</replaceable>]{<replaceable>identifiant</replaceable>}{<replaceable>nombre</replaceable>}</programlisting>
        <para>
          Les deux arguments de cette commande sont un
        identifiant de question que vous choisissez ainsi que le nombre de
        chiffres du codage désiré. On pourra, par exemple, utiliser l'en-tête
        de copie suivant :</para>

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

\vspace{3ex}

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

      \vspace*{.5cm}\dotfill

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

}</programlisting></para>

        <note>
          <para>Ici l'identifiant est <emphasis>etu</emphasis> qui servira à
          AMC pour attribuer chaque copie à un étudiant et 8 est le nombre de
          cases pour le code.</para>

          <para>Vous devrez sélectionner cet identifiant dans le menu
          déroulant <guilabel>Titre du code pour association
          automatique</guilabel> de l'onglet <guibutton>notation</guibutton>
          lors de l'association automatique des copies (voir <xref
          linkend="gui.assoc"/>).</para>
        </note>

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

        <para>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>
        qui représentent les espaces horizontaux et verticaux entre les cases.
        Les valeurs par défaut sont définies de la manière suivante :</para>

        <programlisting>\AMCcodeHspace=.5em
\AMCcodeVspace=.5em
</programlisting>

        <para>Pour la saisie de codes plus complexes, par exemple comportant
        des lettres, on pourra utiliser la commande
        <command>\AMCcodeGrid[<replaceable>options</replaceable>]{<replaceable>identifiant</replaceable>}{<replaceable>description</replaceable>}</command>.
        L'argument <replaceable>description</replaceable> contient une liste
        d'ensembles de caractères acceptés, séparés par des virgules. Par
        exemple, pour saisir un code client dont le premier caractère est une
        lettre entre A et E, suivi de trois chiffres, on utilisera
        </para>
        <programlisting>\AMCcodeGrid{client}{ABCDE,0123456789,0123456789,0123456789}</programlisting>

        <para>Les deux commandes <command>\AMCcodeGrid</command> et
        <command>\AMCcodeGridInt</command> acceptent des options, séparées par
        des virgules, dans l'argument optionnel
        <replaceable>options</replaceable> :</para>

        <variablelist>
          <varlistentry>
            <term>vertical=<replaceable>bool</replaceable></term>

            <listitem>
              <para>Indique la direction utilisée : donner à
              <replaceable>bool</replaceable> la valeur <code>true</code>
              (valeur par défaut) pour construire chaque chiffre en vertical,
              et <code>false</code> en horizontal.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>v</term>

            <listitem>
              <para>alias pour <code>vertical=true</code>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>h</term>

            <listitem>
              <para>alias pour <code>vertical=false</code>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>top</term>

            <listitem>
              <para>permet d'aligner les colonnes en haut en direction
              verticale.</para>
            </listitem>
          </varlistentry>
  
            <varlistentry>
            <term>multi <emphasis>déconseillé</emphasis></term>
  
              <listitem>
              <para>permet de copier sur chaque page la grille du code élève.</para>
            <warning><para>Ne fonctionne qu'avec le mode photocopie (voir <xref endterm="alt.photocopy.title" linkend="alt.photocopy"/>)
            et avec l'option <code>ensemble</code> (voir <xref endterm="sec.package.options.title"
            linkend="sec.package.options"/>)</para>
            
            <para>L'utilisation de cette option nécessite une modification du code pour la position des marques de calage.</para>
            <para>Le code ci-dessous permet cela et doit être placé avant ou après <command>\begin{document}</command>.</para>
            </warning>
            </listitem>
          </varlistentry>
        </variablelist>

<programlisting>
\makeatletter

\def\IDbox{% <co id="IDbox" linkends="IDbox.exp"/>
	\begin{minipage}{10cm}
		\noindent\AMCzone[id]{identification\thepage}{) <co id="zoneid" linkends="zoneid.exp"/>
			\fbox{%
				\begin{minipage}{\linewidth}
					\noindent Darken the boxes corresponding to your student ID:\\[1.2ex]
					\AMCcodeGrid[h,multi]{id}{ABCDEFGHJKLM,0123456789}
				\end{minipage}%
			}%
		}%
	\end{minipage}
}
\fancypagestyle{AMCpageFull}{% <co id="modificationcalage" linkends="modificationcalage.exp"/>
	\fancyhf{}%
	\fancyhead[L]{\AMC@LR{\he@dbas{\leavevmode\m@rque{positionHG}}}}%
	\fancyhead[R]{\AMC@LR{\he@dbas{\leavevmode\m@rque{positionHD}}}}%
	\fancyfoot[L]{\AMC@LR{\leavevmode\m@rque{positionBG}}}%
	\fancyfoot[R]{\AMC@LR{\leavevmode\m@rque{positionBD}}}%
	\fancyhead[C]{
		\AMCIDBoxesABC\vspace{4mm}
		\ifAMC@zoneformulaire\IDbox\fi
	}%
	\fancyhfoffset[EOLR]{5mm}%
	\fancyfoot[C]{\AMC@note}%
	\renewcommand{\headrulewidth}{0pt}%
	\renewcommand{\footrulewidth}{0pt}%
}
\makeatother
</programlisting> 
  
<para><calloutlist>
  <callout arearefs="IDbox" id="IDbox.exp">
    <para>Création d'une commande LaTeX qui entoure les cases à cocher pour l'étudiant. </para>
</callout>

  <callout arearefs="zoneid" id="zoneid.exp">
    <para>Cette zone sera anonymée (voir <xref endterm="Anonymat.title" linkend="Anonymat"/>) mais ce n'est pas obligatoire. </para>
</callout>

  <callout arearefs="modificationcalage" id="modificationcalage.exp">
    <para>Code qui modifie le comportement habituel d'AMC. Les longueurs seront peut-être à adapter avec vos marges. </para>
</callout>

</calloutlist></para>  
      </sect3>




      <sect3 id="latex.seed">
        <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>

        <note>
          <para>La valeur est enregistrée dans le fichier xy (sous la forme
          <code>\rngstate{1}{1515}</code>). La valeur par défaut est
          1515.</para>
        </note>
      </sect3>

      <sect3 id="latex.separate.sect">
        <title>Sections et feuille de réponses séparée</title>

        <para>Pour que les sections définies dans votre sujet soient reprises
        dans la feuille de réponses séparées, utiliser
        <command>\AMCsection</command> et <command>\AMCsubsection</command> à
        la place de <command>\section</command> et
        <command>\subsection</command> (les commandes
        <command>\AMCsection*</command> et <command>\AMCsubsection*</command>
        sont également définies, pour des titres de section sans
        numérotation).</para>
      </sect3>

      <sect3 id="latex.refs">
        <title>Références à l'intérieur des copies</title>

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

        <sect4 id="Cleveref">
          <title>Utilisation du paquet <package>Cleveref</package>.</title>

          <para>Ce paquet permet d'ordonner les numéros des questions, les
          pages des questions ou les pages des références par ordre croissant
          (la documentation <ulink
          url="http://mirrors.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf">http://mirrors.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf</ulink>)</para>

          <warning>
            <para>Le paquet doit être déclaré <emphasis>après</emphasis> le
            paquet <package>automuliplechoice</package>.</para>

            <para><programlisting>\usepackage[french]{cleveref}</programlisting></para>
          </warning>

          <para>Lors de l'utilisation de <command>\cref</command>, les références des questions devront être transformées par la commande <command>\AMCstudentlabel</command>, comme dans l'exemple suivant :</para>

          <programlisting>\cref{\AMCstudentlabel{dipole},\AMCstudentlabel{cours},\AMCstudentlabel{raisonnement}}</programlisting>

          <para>Avec <emphasis>dipole</emphasis>, <emphasis>cours</emphasis>
          et <emphasis>raisonnement</emphasis> les références des questions
          sont indexées, respectivement, avec \AMClabel{dipole},
          \AMClabel{cours}, \AMClabel{raisonnement}. Les numéros de ces trois
          questions seront automatiquement classés lors de la
          compilation.</para>
        </sect4>
      </sect3>

      <sect3 id="AMCtext">
        <title>Personnalisation des textes insérés par AMC</title>

        <warning>
          <para>L'utilisation de la commande <command>\exemplaire{}</command>
          remplace automatiquement les textes suivants par leurs valeurs par
          défaut en français. Si vous voulez les modifier, préférez donc
          l'utilisation de <command>\onecopy{}</command> à celle de
          <command>\exemplaire{}</command>.</para>
        </warning>

        <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><code>\AMCtext{explain}{<replaceable>titre</replaceable>}</code>
            remplace « Explication » (en français) par le
            <replaceable>titre</replaceable> avant le texte explicatif fourni
            avec la commande <command>\explain</command>.</para>

            <para>La valeur par défaut de cette commande est :</para>

            <programlisting>\AMCtext{explain}{\textit{\textbf{Explanation: }}}</programlisting>
          </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>

          <listitem>
            <para><code>\AMCsetFoot{<replaceable>texte</replaceable>}</code>
            change le texte à afficher en pied de page (on pourra par exemple
            utiliser <code>\AMCsetFoot{\thepage}</code> pour indiquer le
            numéro de page).</para>
          </listitem>
        </itemizedlist>
      </sect3>

      <sect3 id="code.binaire">
        <title id="code.binaire.title">Le code binaire</title>

        <para>Le code binaire permet à AMC de reconnaître le numéro du sujet
        et le numéro de la page du sujet.</para>

        <itemizedlist>
          <listitem>
            <para>Première ligne : 12 cases (valeur par défaut) : nombre
            maximal de sujets = 2^12-1 = 4 095.</para>
          </listitem>

          <listitem>
            <para>Seconde ligne : 6 premières cases (valeur par défaut) :
            nombre maximal de pages par sujet = 2^6-1 = 63.</para>
          </listitem>

          <listitem>
            <para>Seconde ligne : 6 dernières cases (valeur par défaut) : code
            de contrôle.</para>
          </listitem>
        </itemizedlist>

        <para>Pour augmenter le nombre de sujets ou/et de pages par sujet,
        modifiez les valeurs par défaut des commandes
        <command>\AMC@NCBetud</command>, <command>\AMC@NCBpage</command> et
        <command>\AMC@NCBcheck</command>.</para>

        <para>Dans le préambule, déclarez les commandes ci-dessous (ici avec
        les valeurs par défaut).</para>

<programlisting>\makeatletter
\def\AMC@NCBetud{12}
\def\AMC@NCBpage{6}
\def\AMC@NCBcheck{6}
\makeatother
</programlisting>

<tip><para>Pour démarrer le numéro de copies à une autre valeur que 1 (ici 141).</para>
<programlisting>
\makeatletter
\AMCid@etudstart=141
\makeatother</programlisting>

<para>Pour changer la valeur du code de sécurité (60 par défaut) à 59.</para>
<programlisting>
\makeatletter
\advance\AMCid@check\m@ne
\makeatother
</programlisting>
</tip>

      </sect3>
    </sect2>

    <sect2 id="latex.amcopts">
      <title>Options pour AMC</title>

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

      <variablelist>
        <varlistentry>
          <term><code>%%AMC:preprocess_command=<replaceable>commandname</replaceable></code></term>

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

        <varlistentry>
          <term><code>%%AMC:latex_engine=<replaceable>engine</replaceable></code></term>

          <listitem>
            <para>demande à AMC d'utiliser le moteur LaTeX
            <replaceable>engine</replaceable>, sans tenir compte de la valeur
            fournie par l'utilisateur dans les préférences du projet.</para>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>

    <sect2 id="latex.numerical">
      <title>Des questions mathématiques à énoncés aléatoires</title>

      <sect3 id="latex.numerical.fp">
        <title>Utilisation du package fp</title>

        <note>
          <para>Un mode d'emploi succint se trouve à la fin de la
          documentation voir <xref endterm="Divers.title"
          linkend="Divers"/>).</para>
        </note>

        <para>Grâce au paquet LaTeX <package>fp</package>, dont la
        documentation se trouve sur <ulink
        url="http://mirrors.ctan.org/macros/latex/contrib/fp/README">http://mirrors.ctan.org/macros/latex/contrib/fp/README</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>

        <note>
          <para>Vous pouvez choisir la base de génération des nombres
          pseudo-aléatoires (obtenus avec <command>random</command>) grâce à
          la commande</para>

          <para><programlisting>\FPseed=<replaceable>entier</replaceable></programlisting></para>

          <para><replaceable>entier</replaceable> doit être un entier
          immuable, qui ne changera jamais : ne pas utiliser de valeur liée à
          la date !</para>
        </note>

        <sect4 id="latex.intervals">
          <title>Choix parmi une suite d'intervalles</title>

          <para>Le paquet automultiplechoice définit en outre une commande
          <command>\choixIntervalles</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>

          <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>La mise en forme des intervalles peut être modifiée en
          redéfinissant la commande
          <command>\AMCintervalFormat</command>, définie originellement
          par</para>

          <programlisting>\def\AMCIntervalFormat#1#2{[#1,\,#2[}</programlisting>

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

          <note>
            <para>Si vous préférez la virgule comme séparateur décimal, il
            faut utiliser la commande <command>\num</command> du paquet
            <package>siunitx</package> ( voir <xref endterm="Divers.title"
            linkend="Divers"/>).</para>

            <programlisting>\def\AMCIntervalFormat#1#2{[\num{#1}-\,\num{#2}[}</programlisting>
          </note>
        </sect4>

        <sect4 id="latex.numeric">
          <title id="latex.numeric.title">Codage du résultat</title>

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

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

  \AMCnumericChoices{sqrt(\VQa)}{digits=3,decimals=2,sign=true,
                 borderwidth=0pt,backgroundcol=lightgray,approx=5}
\end{questionmultx}
</programlisting>

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


            <sect5 id="AMCnumericChoices.options">
              <title>Options</title>

          <para>Les options disponibles dans le deuxième argument de cette
          commande sont les suivantes :</para>

          <variablelist>
            <varlistentry>
              <term>digits=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne le nombre de chiffres à coder (la valeur par
                défaut est 3).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>decimals=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne le nombre de chiffres après la virgule (la valeur
                par défaut est 0). Quand <replaceable>num</replaceable> n'est
                pas nul, le paquet LaTeX <command>fp</command> doit être
                chargé.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>base=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne la base dans laquelle sera écrit le nombre à coder
                (la valeur par défaut est 10).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>significant=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code>, les chiffres à
                renseigner sont les premiers chiffres significatifs du premier
                argument de <command>\AMCnumericChoices</command>.</para>
                <para> Par exemple, la bonne réponse à
                <code>\AMCnumericChoices{56945.23}{digits=2,significant=true}</code>
                est 57.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>exponent=<replaceable>num</replaceable></term>

              <listitem>
                <para>demande une saisie en notation scientifique, avec
                <replaceable>num</replaceable> chiffres pour la puissance de
                10.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>nozero=<replaceable>bool</replaceable></term>

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

            <varlistentry>
              <term>sign=<replaceable>bool</replaceable></term>

              <listitem>
                <para>demande (ou non) la saisie d'un signe (la valeur par
                défaut est <code>true</code>).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>exposign=<replaceable>bool</replaceable></term>

              <listitem>
                <para>même chose pour l'exposant.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>strict=<replaceable>bool</replaceable></term>

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


            <varlistentry>
              <term>ignoreblank=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code>, ignore les cases
                non cochées. Valable uniquement en base 10.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>vertical=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code>, chaque chiffre sera
                représenté par une colonne. Avec la valeur <code>false</code>
                (valeur par défaut), chaque chiffre sera représenté par une
                ligne.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>expovertical=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code>, la mantisse et
                l'exposant seront présentés l'un en-dessous de l'autre. Avec
                la valeur <code>false</code> (valeur par défaut), ils seront
                présentés l'un à côté de l'autre.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>reverse=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code> (valeur par défaut), en
                mode <code>vertical</code>, les grandes valeurs des chiffres
                seront placées en haut plutôt qu'en bas.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>vhead=<replaceable>bool</replaceable></term>

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

                <programlisting>\def\AMCntextVHead#1{\emph{b#1}}</programlisting>

                <para>Cette définition permet de numéroter les chiffres
                binaires.</para>

                <para>La valeur par défaut est <code>false</code>.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>Tvhead=<replaceable>{text}</replaceable></term>

              <listitem>
               <para>Une liste séparée par des virgules comme {km,hm,dam,
               m,dm,cm,mm} pour l'en-tête en mode <code>vhead</code> vertical.
               </para>
               <para>A besoin de <code>vhead=true</code> (par défaut la liste est vide
               <code>{}</code>).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>vheadunitindex=<replaceable>num</replaceable></term>

              <listitem>
               <para>L'indice de l'unité dans la liste de <code>Tvhead</code> en partant de la droite
               (zéro est la valeur par défaut).</para>
               <para>L'élément à droite a pour valeur d’indice 0.</para>

<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{%
digits=7,%
decimals=3,%
sign=false,%
hspace=0.75em,%%
vertical=true,%
vhead=true,%
vheadunitindex=0,%
Tvhead={km,hm,dam,m,dm,cm,mm}%
}
\end{questionmultx}
  </programlisting>

<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{%
digits=7,%
decimals=3,%
sign=false,%
hspace=0.75em,%%
vertical=true,%
Tvhead={km,hm,dam,m,dm,cm,mm}%
}
\end{questionmultx}
  </programlisting>
  
<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{%
digits=7,%
decimals=3,%
sign=false,%
hspace=0.75em,%%
vertical=true,%
vheadunitindex=0,%
Tvhead={km,{},{},m,{},{},mm}%
}
\end{questionmultx}
  </programlisting>
  
<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{
digits=10,%
decimals=6,%
sign=false,%
vertical=true,%
vhead=true,%
vheadunitindex=0,%
Tvhead={km,{},{},m,{},{},mm,{} ,{}, $\mu$m},
}
\end{questionmultx}
  </programlisting>
  
  <programlisting>
%%Incorrect%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{
digits=10,%
decimals=6,%
sign=false,%
vertical=true,%
vhead=true,%
vheadunitindex=0,%
Tvhead={km,{},{},m,{},{},mm},
}
\end{questionmultx}
  </programlisting>
  
    <programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{
digits=10,%
decimals=6,%
sign=false,%
vertical=true,%
vhead=true,%
vheadunitindex=7,%
Tvhead={km,{},{},m,{},{},mm},
}
\end{questionmultx}
  </programlisting>
  
<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{
digits=10,%
decimals=6,%
sign=false,%
vertical=true,%
vhead=true,%
vheadunitindex=4,%
Tvhead={km,{},{},m,{},{},mm},
}
\end{questionmultx}
</programlisting>

<programlisting>
%%Correct%%
\begin{questionmultx}{div}
\AMCnumericChoices{12059/7}{
digits=10,%
decimals=6,%
sign=false,%
vertical=true,%
vhead=true,%
vheadunitindex=7,%
Tvhead={km,{},{},m,{},{},mm,{},{},$\mu$m},
}
\end{questionmultx}
</programlisting>
              </listitem>
            </varlistentry>


            <varlistentry>
              <term>hspace=<replaceable>space</replaceable></term>

              <listitem>
                <para>donne l'espace horizontal entre les cases
                (<code>.5em</code> par défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>vspace=<replaceable>space</replaceable></term>

              <listitem>
                <para>donne l'espace vertical entre les cases
                (<code>1ex</code> par défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>borderwidth=<replaceable>space</replaceable></term>

              <listitem>
                <para>donne l'épaisseur du cadre qui entoure toutes les cases
                (<code>1mm</code> par défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>bordercol=<replaceable>color</replaceable></term>

              <listitem>
                <para>donne la couleur du cadre (<code>lightgray</code> par
                défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>backgroundcol=<replaceable>color</replaceable></term>

              <listitem>
                <para>donne la couleur du fond (<code>white</code> par
                défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>Tsign=<replaceable>text</replaceable></term>

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

            <varlistentry>
              <term>Tpoint=<replaceable>text</replaceable></term>

              <listitem>
                <para>donne le texte correspondant à la virgule ( séparateur décimal).</para>
                <para>Il peut être modifié par 
                <code>\def\AMCdecimalPoint{<replaceable>text</replaceable>}</code>,
                et la valeur par défaut est <code>\raisebox{1ex}{\bf
                .}</code>.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>Texponent=<replaceable>text</replaceable></term>

              <listitem>
                <para>donne le texte affiché entre la partie mantisse et la
                partie exposant. Ce texte peut également être modifié par
                <code>\def\AMCexponent{<replaceable>text</replaceable>}</code>,
                et sa valeur par defaut est
                <code>$\times10$\textasciicircum</code>.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>scoring=<replaceable>bool</replaceable></term>

              <listitem>
                <para>avec la valeur <code>true</code> (valeur par défaut), un
                barème sera transmis à AMC.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>scoreexact=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne le score à affecter à une réponse exacte (2 par
                défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>exact=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne la distance maximale à la valeur correcte
                en-dessous de laquelle une réponse sera considérée comme
                <emphasis>exacte</emphasis> (et sera rétribuée de
                <code>scoreexact</code> points). La valeur par défaut est
                0.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>scoreapprox=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne le score à affecter à une réponse
                <emphasis>approximative</emphasis> (1 par défaut).</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>approx=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne la distance maximale à la valeur correcte
                en-dessous de laquelle une réponse sera considérée comme
                <emphasis>approximative</emphasis> (et sera rétribuée de
                <code>scoreapprox</code> points). La valeur par défaut est
                0.</para>
              </listitem>
            </varlistentry>
            <varlistentry>
              <term>scorewrong=<replaceable>num</replaceable></term>

              <listitem>
                <para>donne le score à affecter à une réponse fausse (0 par
                défaut).</para>
              </listitem>
            </varlistentry>
          </variablelist>

            <warning><para>AMC transforme tous les nombres (décimaux inclus)
            comme des entiers <code>intV</code> (en enlevant la virgule) avant de faire la
            différence et de comparer avec <code>exact</code> ou <code>approx</code>. </para>
            <orderedlist>
              <listitem><para>Réponse = 3.1415 → <code>intV =  31415</code>, <code>exact = <replaceable>20</replaceable></code>, <code>approx = <replaceable>150</replaceable></code></para>
                    <itemizedlist>
                      <listitem><para><code>3.1400</code> → | 31400 - 31415 | ≤ 20 → <code>scoreexact</code></para></listitem>
                      <listitem><para><code>3.1435</code> → | 31435 - 31415 | ≤ 20 → <code>scoreexact</code></para></listitem>
                      <listitem><para><code>3.1500</code> → | 31500 - 31415 | ≤ 150 → <code>scoreapprox</code></para></listitem>
                      <listitem><para><code>3.1300</code> → | 31300 - 31415 | ≤ 150 → <code>scoreapprox</code></para></listitem>
                    <listitem><para><code>3.1610</code> → | 31610 - 31415 | > 150 → <code>scorewrong</code></para></listitem>
                   </itemizedlist>
              </listitem>

              <listitem><para>Réponse = 2.00e30 → <code>intV=200</code>, <code>exact = <replaceable>15</replaceable></code>, <code>approx = <replaceable>100</replaceable></code></para>
                    <itemizedlist>
                      <listitem><para><code>2.10e30</code> → | 210 - 200| ≤ 15 → <code>scoreexact</code></para></listitem>
                      <listitem><para><code>1.85e30</code> → | 185 - 200| ≤ 15 → <code>scoreexact</code></para></listitem>
                      <listitem><para><code>1.00e30</code> → | 100 - 200| ≤ 100 → <code>scoreapprox</code></para></listitem>
                      <listitem><para><code>2.81e30</code> → | 281 - 200 | ≤ 100 → <code>scoreapprox</code></para></listitem>
                    <listitem><para><code>2.81e29</code> → | 28.1 - 200 | > 100 → <code>scorewrong</code></para></listitem>
                      <listitem><para><code>2.00e31</code> → | 2000 - 200 | > 100 → <code>scorewrong</code></para></listitem>
                   </itemizedlist>
              </listitem>
            </orderedlist>
            </warning>

          <variablelist>
            <varlistentry>
              <term>keepas=<replaceable>text</replaceable></term>

              <listitem>
                <para>garde la valeur entrée par l'étudiant pour
                une future utilisation <emphasis>alsocorrect</emphasis>
                dans une autre question.</para>
                <para>Toutes les questions qui suivent celle-ci doivent
                respecter l'ordre lexicographique des identifiants.</para>
              </listitem>
            </varlistentry>

            <varlistentry>
              <term>alsocorrect=<replaceable>text</replaceable></term>

              <listitem>
                <para>donne une réponse valable basée sur la valeur entrée
                  par l'étudiant dans la question précédente. La formule doit
                  utiliser le code perl : <programlisting>+, -, *, /, ** (puissance)</programlisting>
                </para>
              </listitem>
            </varlistentry>
          </variablelist>

<programlisting>
 \begin{question}{carre-a}
    \QuestionIndicative
    Choisissez le nombre que vous voulez
    \begin{reponseshoriz}[o]
      \mauvaise{2}\bareme{2,setglobal.Nombre=2}
      \mauvaise{3}\bareme{3,setglobal.Nombre=3}
      \mauvaise{4}\bareme{4,setglobal.Nombre=4}
      \mauvaise{5}\bareme{5,setglobal.Nombre=5}
    \end{reponseshoriz}
  \end{question}

  \begin{questionmultx}{carre-b}
    \AMCdontAnnotate\bareme{MAX=2}
    Quel est son carré ?
    \AMCnumericChoices{}{digits=2,approx=1,alsocorrect=Nombre**2}
  \end{questionmultx}



  \begin{minipage}{.3\linewidth}
    \begin{tikzpicture}
      \draw[fill=blue!50] (0,0) ellipse (1.5 and 0.2);
      \draw (1.5,0) -- (0,5) -- (-1.5,0);
      \draw (1.6,0) -- (2,0);
      \draw (1.6,5) -- (2,5);
      \draw[&lt;-&gt;] (1.8,0) -- (1.8,5);
      \node[right] at (1.8,2.5) {$h=5$};
      \draw (0,-0.4) -- (0,-0.8);
      \draw (1.5,-0.4) -- (1.5,-0.8);
      \draw[&lt;-&gt;] (0,-0.6) -- (1.5,-0.6);
      \node[below] at (0.75,-0.6) {$r=1.5$};
      \draw[fill=black] (0,0) circle (0.02);
    \end{tikzpicture}
  \end{minipage}
  \begin{minipage}{.65\linewidth}
    \begin{questionmultx}{cone-a}
      Quelle est la surface du disque bleu ?
      \AMCnumericChoices{pi*1.5^2}{digits=3,decimals=2,exponent=2,approx=2,sign=false,
      exposign=true,expovertical=true,keepas=Surface}
    \end{questionmultx}

    \begin{questionmultx}{cone-b}
      Quel est le volume du cône ?
      \AMCnumericChoices{pi*1.5^2*5/3}{digits=3,decimals=2,exponent=2,approx=2,sign=false,
      exposign=true,expovertical=true,alsocorrect=Surface*5/3}
    \end{questionmultx}
  \end{minipage}



  \begin{questionmultx}{pipi2-a}
    Combien vaut $\pi$ ?
    \AMCnumericChoices{pi}{digits=3,decimals=2,sign=false,keepas=Pi}
  \end{questionmultx}

  \begin{questionmultx}{pipi2-b}
    Combien vaut $\pi^2$ ?
    \AMCnumericChoices{pi^2}{digits=3,decimals=2,sign=false,approx=1,alsocorrect=Pi**2}
  \end{questionmultx}
</programlisting>

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

          <programlisting>\AMCnumericOpts{scoreexact=3,borderwidth=2pt}</programlisting>

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

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

       <sect5 id="intX-intV">
          <title>Accès aux valeurs</title>
          <variablelist>

          <varlistentry>
              <term>intX</term>

              <listitem>
                <para>valeur brute entrée par l'étudiant.</para>
              </listitem>
            </varlistentry>

                      <varlistentry>
              <term>intV</term>

              <listitem>
                <para>bonne valeur brute.</para>
              </listitem>
            </varlistentry>

          </variablelist>
        </sect5>

        </sect4>
     </sect3>

      <sect3 id="latex.numerical.pgf">
        <title>Utilisation du package pgf/tikz</title>

        <para>Vous devez déclarer ce paquet, ainsi que les bibliothèques,
        <package>\usetikzlibrary{arrows,patterns}</package><emphasis>,
        après</emphasis> <package>automuliplechoice</package>.</para>

        <para>Le paquet LaTeX <package>pgf/tikz</package>, dont la
        documentation se trouve sur <ulink
        url="http://www.ctan.org/tex-archive/graphics/pgf/base">http://www.ctan.org/tex-archive/graphics/pgf/base</ulink>
        possède notamment une bibliothèque mathématique que l'on peut charger
        grâce à la commande : <programlisting>\usepackage{tikz}</programlisting></para>

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

        <para><programlisting>\pgfmathsetseed{2056}
</programlisting></para>

        <sect4 id="latex.numerical.pgf.simple">
          <title>Réaliser un calcul simple</title>

          <para>Voici un exemple d'utilisation avec un calcul simple :</para>

          <para><programlisting>\begin{question}{inverse}
  \pgfmathrandominteger{\x}{1}{50}

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

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

          <para>Les commandes <command>\pgfmathparse</command> et
          <command>\pgfmathresult</command> permettent respectivement
          d'effectuer le calcul et d'afficher son résultat.</para>

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

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

  \begin{reponses}
    \bonne{\pgfmathparse{1/\x}\pgfmathprintnumber{\pgfmathresult}}
    \mauvaise{\pgfmathparse{1/(\x +1))} \pgfmathprintnumber{\pgfmathresult}}
    \mauvaise{\pgfmathparse{cos(\x)} \pgfmathprintnumber{\pgfmathresult}}
    \mauvaise{\pgfmathparse{\x^(-0.5)} \pgfmathprintnumber{\pgfmathresult}}
  \end{reponses}
\end{question}
</programlisting> <note>
              <para>Les commandes <command>\AMCIntervals</command> et
              <command>\AMCnumericChoices</command> peuvent aussi être
              utilisées dans ce contexte (voir <xref
              linkend="latex.intervals"/> et <xref
              linkend="latex.numeric"/>)</para>
            </note></para>
        </sect4>

        <sect4 id="latex.numerical.pgf.graphs">
          <title>Questions de lecture graphique</title>

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

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

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

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

      <sect3 id="latex.numerical.lualatex">
        <title>Utilisation de LuaLaTeX</title>

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

        <para>Pour faire appel au langage LUA, il faut utiliser la commande
        <command>\directlua</command>. La fonction LUA la plus utile est
	<command>tex.print</command> qui écrit un résultat calculé par LUA
	dans le document LaTeX</para>

        <para>Encore une fois, si vous utilisez des nombres aléatoires,
        commencez par choisir la base de génération des nombres
        pseudo-aléatoires.</para>

        <programlisting>\directlua{math.randomseed (2048)}</programlisting>

        <para>Voici un exemple très simple de fichier_:</para>

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

\exemplaire{10}{

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

\noindent{\bf QCM  \hfill TEST}

\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
  \centering\large\bf Sujet simpliste
\end{minipage}
\champnom{\fbox{\begin{minipage}{.5\linewidth}
Nom et prénom :

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

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

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

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

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

}

\end{document}      </programlisting>

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

        <note>
          <para>Les commandes <command>\AMCIntervals</command> et
          <command>\AMCnumericChoices</command> peuvent aussi être utilisées
          dans ce contexte (voir <xref linkend="latex.intervals"/> et <xref
          linkend="latex.numeric"/>)</para>
        </note>
      </sect3>
    </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 id="gui.new">
      <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 AMC-TXT ou 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 source déjà composé pour l'examen. Il est en effet possible
          de composer son sujet en dehors d'AMC grâce à un éditeur classique,
          puis d'utiliser AMC quand celui-ci est au point.</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
      source</guibutton> qui lance l'éditeur par défaut.</para>
    </sect2>

    <sect2 id="gui.prepare">
      <title id="gui.prepare.sujet">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.
      Ceci se fait en cliquant sur le bouton <guibutton>Mise à
      jour</guibutton> ou <keycode>Alt+D</keycode> 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>
      </itemizedlist>

      <para>Une fois produits, ces documents pourront être visualisés (et
      éventuellement imprimés) grâce aux boutons correspondants.</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.</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 id="mailing">
    	<title id="mailing.title">Envoi du sujet (avec ou sans mot de passe)</title>

    	<para>L'envoi du sujet par mail est possible.</para>

    	<itemizedlist>
    	  <listitem>
    		<para>Vous devez créer un sujet avec le mode pré-rempli
    		(voir <xref endterm="Copies.Preremplies.title" linkend="Copies.Preremplies"/>
    		(LaTeX) ou
    		 <xref endterm="txt.Copies.Preremplies.title" linkend="txt.Copies.Preremplies"/>
    		 	(AMC-TXT)).
    		</para>
    	 </listitem>

    	  <listitem>
    		<para>Sélectionnez l'impression en fichiers : <menuchoice>
             <guimenuitem>Préférences</guimenuitem>
             <guimenuitem>Général</guimenuitem>
             <guimenuitem>Impression</guimenuitem>
             <guimenuitem>Méthode d'impression</guimenuitem>
             <guisubmenu>dans des fichiers</guisubmenu>
             </menuchoice>.</para>
    		</listitem>

    	  <listitem>
    		<para>Sélectionnez la méthode d'impression : <menuchoice>
             <guimenuitem>Préférences</guimenuitem>
             <guimenuitem>Général</guimenuitem>
             <guimenuitem>Impression</guimenuitem>
             <guimenuitem>Méthode d'extraction</guimenuitem>
             <guisubmenu>pdftk / gs (ghostscipt) / qpdf (défaut) / sejda-console (non installé)</guisubmenu>
             </menuchoice>.</para>

              <warning><para>Si l'option <option>pdfform</option> est active,
    		sélectionnez sejda-console (à installer)</para>
 <programlisting>
cd
wget https://github.com/torakiki/sejda/releases/download/v3.2.85/sejda-console-3.2.85-bin.zip
unzip sejda-console-3.2.85-bin.zip
sudo ln -s ~/sejda-console-3.2.85/bin/sejda-console /usr/local/bin
</programlisting>
    		</warning>
    		</listitem>

    	  <listitem>
    		<para>Imprimez les fichiers.</para>
    	 </listitem>
      </itemizedlist>

             <note>
            <para>AMC vous propose de protéger tous les fichiers par
              votre mot de passe propriétaire et chaque fichier par un
              mot de passe utilisateur.</para>
              <para>Le fichier csv doit contenir une colonne avec les mots
                de passe.</para>
 <programlisting>
# liste des étudiants de première année
nom,prenom,no,email,password
Bienvenüe,Alexis,001,paamc@passoire.fr,123456
Boulix,Jojo,002,jojo.boulix@rien.xx,789test01
Noël,Père,003,pere.noel@pole-nord.xx,clavierbepo
</programlisting>
          </note>

      <itemizedlist>
    	  <listitem>
    		<para>Cliquez sur <guibutton>Liste…</guibutton> puis
    		sélectionnez le fichier csv (<emphasis>uniquement pour un
    		fichier format LaTeX</emphasis>).</para>

    		<para><guilabel>Identifiant unique dans cette liste :</guilabel>
              il s’agit du nom de la colonne qui, dans le ﬁchier csv des
              étudiants, contient le numéro d’étudiants (voir <xref
              linkend="liste.etudiants"/>).</para>
    		</listitem>

    	  <listitem>
    		<para>Envoyez les sujets.</para>
    	 </listitem>

    	</itemizedlist>
    </sect2>


    <sect2 id="impression">
      <title id="impression.title">Impression du sujet</title>

      <para>Vous pouvez fonctionner de deux manières différentes :</para>

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

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

      <warning>
        <para>Pour cette deuxième méthode utilisant des photocopies, il est
        nécessaire de faire attention lors du scan que les pages d'un même
        étudiant soient à la suite les unes des autres. Dans le cas contraire,
        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>DOC-sujet.pdf</filename> du répertoire projet, auquel on
          peut accéder par le bouton <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 utiliser (si ce n'est pas déjà fait), dans le fichier LaTeX
          du sujet, la commande <command>\AMCcleardoublepage</command>, qui
          ajoutera les pages blanches nécessaires pour que tous les sujets
          aient un nombre pair de pages (voir <xref
          endterm="secensemble.title" 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 id="gui.test">
      <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>

      <para>Il est préférable que les étudiants utilisent un stylo noir ou
      bleu ou un crayon à papier de type B.</para>

      <para>Suivant les situations, on peut demander aux étudiants de
      <emphasis>cocher</emphasis> ou de <emphasis>noircir
      complètement</emphasis> les cases.</para>

      <sect3 id="gui.advice">
        <title>Cases cochées</title>

        <para>Dans ce cas, les étudiants peuvent effacer la/les case(s) avec
        la gomme ou la recouvrir de ruban correcteur mais ne <emphasis>doivent
        pas essayer d'en redessiner les contours</emphasis>. En effet, si ils
        redessinent les contours de manière approximative, ces traits pourront
        par erreur se situer à l'intérieur de la case et pourrront ainsi être
        confondus avec une case cochée.</para>

        <para>Vous pouvez également permettre aux étudiants de corriger une
        case cochée par erreur en la noircissant entièrement. Dans ce cas,
        donnez une valeur inférieure à 1 (qui restera tout de même proche de
        1) à la variable <guilabel>Seuil de noirceur supérieur</guilabel>
        (menu <guimenu>Préférences</guimenu>, onglet
        <guilabel>Projet</guilabel>). Une case dont la proportion de noir est
        comprise entre le <guilabel>seuil de noirceur</guilabel> et le
        <guilabel>seuil de noirceur supérieur</guilabel> sera considérée comme
        cochée. Si cette proportion dépasse le <guilabel>Seuil de noirceur
        supérieur</guilabel>, la case sera considérée comme non-cochée.</para>
      </sect3>

      <sect3 id="gui.correct">
        <title>Cases noircies</title>

        <para>Dans le cas où les lettres (ou chiffres) référençant les
        réponses sont inscrites à l'intérieur des cases, vous devez donner la
        consigne aux étudiants de noircir complètement les cases, car AMC ne
        sait pas faire la différence entre une lettre écrite dans une case et
        une case cochée.</para>

        <para>Les étudiants peuvent effacer la/les case(s) avec la gomme ou la
        recouvrir de ruban correcteur, mais n'ont pas d'autre possibilité de
        corriger une case cochée par erreur. Vous devrez bien entendu laisser
        la valeur du <guilabel>seuil de noirceur supérieur</guilabel> à
        1.</para>
      </sect3>
    </sect2>

    <sect2 id="gui.capture">
      <title id="gui.capture.saisie">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 id="gui.capture.auto">
        <title id="gui.capture.auto.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>

        <important>
          <para>Lors de la première saisie automatique, vous aurez à indiquer
          à AMC quelle méthode vous avez choisie : sujets différents pour tous
          les étudiants, ou photocopie de certains sujets (voir <xref
          endterm="impression.title" linkend="impression"/>).</para>
        </important>

        <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>Valider</guibutton> de ce même
        dialogue. AMC va procéder à une reconnaissance optique de marques
        (OMR) sur les scans afin de détecter les quatre marques circulaires
        des coins, en déduire la position des cases à cocher et mesurer la
        proportion de noir à l'intérieur de chacune d'entre elles.</para>

          <note id="gui.capture.auto.photocopy.note"><title id="gui.capture.auto.photocopy.note.title">Sujets photocopiés</title>
          <para>Avec ce mode, il existe 4 options pour indiquer à AMC 
          la manière dont vous avez numérisé les feuilles :</para>
            <itemizedlist>
              <listitem><para><option>Strict</option> : le fichier ne contient que les pages du sujet AMC.</para></listitem>
              <listitem><para><option>Ignore unrecognized</option> : pour ignorer les pages non reconnues.</para></listitem>
              <listitem><para><option>Increasing</option> : si les pages sont numérisées dans l'ordre croissant.</para></listitem>
              <listitem><para><option>One student per file</option> : si chaque fichier numérisé est associé à un étudiant.</para></listitem>
            </itemizedlist>
            <para>Avec ce mode, il est <emphasis>impossible</emphasis> de remplacer une  copie d'élève déjà analysée.</para>
            </note>

        <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 <option>mise à jour</option> affiche la date de la
            page traitée. Elle n'est pas affichée par défaut. Il faut
            l'activer avec le bouton
            <guimenuitem>colonnes</guimenuitem>.</para>
          </listitem>

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

            <note><title></title>
              <itemizedlist>
                <listitem>
                  <para>AMC dispose d'une option
                  permettant de caler les feuilles avec seulement trois
                  marques. Vous devez configurer AMC :</para>

                  <para><menuchoice>
                      <guimenu>Édition</guimenu>

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

                      <guimenuitem>Scan</guimenuitem>

                      <guimenuitem>Contrôle des scans avec 3 angles
                      marqués</guimenuitem>
                    </menuchoice></para>
                </listitem>

                <listitem>
                  <para>AMC ne dispose d'aucune fonction de traitement
                  d'image. Pour corriger le calage, vous pouvez redessiner les
                  marques à l'aide d'un éditeur d'image. <itemizedlist>
                      <listitem>
                        <para>Notez les scans non reconnus, <emphasis>ne les
                        effacez pas !</emphasis></para>
                      </listitem>

                      <listitem>
                        <para>Ouvrez-les avec l'éditeur d'image (les fichiers
                        se trouvent dans le dossier scan du projet).</para>
                      </listitem>

                      <listitem>
                        <para>Sauvegardez-les (Ctrl+S).</para>
                      </listitem>

                      <listitem>
                        <para>Reprenez la correction en ne choisissant que les
                        derniers fichiers modifiés.</para>
                      </listitem>
                    </itemizedlist></para>
                </listitem>
              </itemizedlist>
            </note>
          </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
            (drag and drop) ou par un clic (click)).</para>
          </listitem>

          <listitem>
            <para>La valeur <emphasis>scan files</emphasis> affiche le nom de
            la page traitée. Elle n'est pas affichée par défaut. Il faut
            l'activer avec le bouton
            <guimenuitem>colonnes</guimenuitem>.</para>
          </listitem>
        </itemizedlist>
      </sect3>

      <sect3 id="gui.capture.manual">
        <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>

        <sect4 id="gui.capture.manual.color">
          <title>Visualisation des questions vides ou invalides</title>

          <para>En cliquant sur les numéros de pages, AMC entoure les cases
          réponses : <itemizedlist>
              <listitem>
                <para>en cyan pour les réponses vides ;</para>
              </listitem>

              <listitem>
                <para>en jaune pour les réponses invalides ;</para>
              </listitem>
            </itemizedlist></para>

          <para>Ces couleurs peuvent être changées dans les préférences d'AMC
          : <menuchoice>
              <guimenu>Préférences</guimenu>

              <guisubmenu>Affichage</guisubmenu>

              <guimenuitem>Scan</guimenuitem>
            </menuchoice></para>

          <para><emphasis>Il est possible de cibler une question précise (voir
          <xref endterm="gui.capture.manual.focus.title"
          linkend="gui.capture.manual.focus"/>)</emphasis></para>
        </sect4>

        <sect4 id="gui.capture.manual.focus">
          <title id="gui.capture.manual.focus.title">Sélection d'une
          question</title>

          <para>Cette option permet de corriger manuellement à l'écran une
          question ciblée. Cela évite de chercher la question sur chaque page
          si les questions sont mélangées.</para>

          <sect5 id="gui.capture.manual.open.question.focus">
            <title>Corriger une question ouverte à l'écran</title>

            <itemizedlist>
              <listitem>
                <para>Ouvrez la fenêtre de saisie manuelle et sélectionnez le
                scan comme fond ;</para>
              </listitem>

              <listitem>
                <para>sélectionnez la question que vous voulez corriger (menu
                déroulant au-dessus de la liste des pages).</para>
              </listitem>
            </itemizedlist>

            <para>Les cases à cocher de la question ouverte se situent en haut
            de la fenêtre, et quand vous cliquez sur
            <guibutton>suivant</guibutton> vous passez à l'étudiant suivant,
            toujours pour cette question.</para>

            <note>
              <para>Les questions simples et multiples peuvent aussi être
              corrigées ainsi.</para>
            </note>
          </sect5>

          <sect5 id="gui.capture.manual.empty.invalid.question.focus">
            <title>Vérifier à l'écran les pages avec des questions invalides
            ou vides</title>

            <itemizedlist>
              <listitem>
                <para>Vous devez <emphasis>d'abord</emphasis> corriger les
                copies (voir <xref endterm="gui.marks.proc.title"
                linkend="gui.marks.proc"/> de la section <xref
                endterm="gui.marks.title" linkend="gui.marks"/>) ;</para>
              </listitem>

              <listitem>
                <para>ouvrez la fenêtre de saisie manuelle et sélectionnez le
                scan comme fond ;</para>
              </listitem>

              <listitem>
                <para>choisissez si vous voulez étudier toutes les pages
                (toutes), les pages avec réponses incohérentes seulement
                (inv), ou les pages avec réponses incohérentes ou vides
                seulement (i &amp; v).</para>
              </listitem>
            </itemizedlist>
          </sect5>
        </sect4>
      </sect3>
    </sect2>

    <sect2 id="gui.marks">
      <title id="gui.marks.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 id="gui.marks.proc">
        <title id="gui.marks.proc.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 mise à jour concerne également la
            liste des bonnes et mauvaises réponses, ce qui permet de corriger
            facilement après l'examen une erreur d'étourderie effectuée lors
            de la conception du sujet. La façon de spécifier le barème dans le
            fichier LaTeX sera expliquée à la section <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>

<note><para>Un outil permet de vérifier votre barème et les résultats attendus.</para>
<para><menuchoice><guimenu>Menu</guimenu> <guisubmenu>Aide</guisubmenu>
<guimenuitem>Test du barème...</guimenuitem></menuchoice></para>
</note>


        <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
        <command>bareme</command> 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>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>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>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>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>P</entry>

                <entry/>

                <entry/>

                <entry>●</entry>

                <entry/>

                <entry>La note plafond. Si le calcul de la note obtenue à la
                question donne une valeur supérieure à la valeur plafond,
                cette note est ramenée à la valeur plafond.</entry>
              </row>

              <row>
                <entry>b</entry>

                <entry>●</entry>

                <entry/>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Points à donner pour une bonne réponse à une
                question. <warning><para>Une bonne réponse cochée apporte b
                points et une mauvaise réponse non-cochée apporte b points.</para></warning></entry>
              </row>

              <row>
                <entry>m</entry>

                <entry>●</entry>

                <entry/>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Points à donner pour une mauvaise réponse à une
                question. <warning><para>Une mauvaise réponse cochée apporte m
                points et une bonne réponse non cochée apporte m points.</para></warning></entry>
              </row>

              <row>
                <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>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>Ce paramètre impose un barème du type "maximum ou
                zéro" : l'élève doit cocher toutes les bonnes réponses pour
                avoir la note <replaceable>mz</replaceable> sinon, elle sera
                nulle.</entry>
              </row>

              <row>
                <entry>haut</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. <code>haut=n est réécrit en d=n-N, p=0</code></entry>
              </row>

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

				Si vous indiquez <code>MAX=3</code> pour une question pouvant
   			    rapporter 4 points, un étudiant pourra avoir un score de 4/3 à cette
          		question (et, si il donne des réponses parfaites aux autres
          		questions, il pourra éventuellement obtenir une note globale
          		supérieure à 20/20).
            </entry>
              </row>

              <row>
                <entry>formula</entry>

                <entry>●</entry>

                <entry/>

                <entry>●</entry>

                <entry/>

                <entry>Donne directement le score de la question, souvent par
                le biais d'une formule faisant intervenir des variables (voir
                <xref linkend="scoring.global"/>), sans tenir compte des
                valeurs de <code>b</code> et <code>m</code>.</entry>
              </row>

              <row>
                <entry>set.<replaceable>XXX</replaceable></entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Donne une valeur particulière à la variable nommée
                <replaceable>XXX</replaceable>, qui pourra être utilisée par
                la suite par <code>formula</code>. Dans le contexte d'une
                réponse, la valeur est attribuée uniquement dans le cas où la
                case est cochée. Cas particulier : si on donne une valeur
                non-nulle à la variable <varname>INVALID</varname> par ce
                biais, les réponses seront déclarées incohérentes et le score
                sera celui donné par le paramètre <code>e</code>.</entry>
              </row>

              <row>
                <entry>setglobal.<replaceable>XXX</replaceable></entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>●</entry>

                <entry>Donne une valeur à la variable
                <replaceable>XXX</replaceable> pour toutes les questions qui
                suivent celle-ci pour l'ordre lexicographique des
                identifiants.</entry>
              </row>

              <row>
                <entry>default.<replaceable>XXX</replaceable></entry>

                <entry>●</entry>

                <entry/>

                <entry>●</entry>

                <entry/>

                <entry>Donne une valeur à la variable
                <replaceable>XXX</replaceable> si aucune case cochée n'en a
                déjà donnée une par le biais de
                <code>set.<replaceable>XXX</replaceable></code>.
        		Il faut déclarer la valeur de la variable <replaceable>XXX</replaceable>
        		dans le barème de la question.
        		Vous pouvez affecter à b et m les valeurs de la variable déclarée avec <code>default.XXX</code>.

          <programlisting>\begin{questionmult}{Q1}
\bareme{default.CONF=1,m=-CONF,b=CONF}</programlisting>
        		</entry>
              </row>

              <row>
                <entry>requires.<replaceable>XXX</replaceable></entry>

                <entry>●</entry>

                <entry/>

                <entry>●</entry>

                <entry/>

                <entry>Signale une saisie <emphasis>incohérente</emphasis>
                (donc l'application du score donné par la valeur de
                <code>e</code>) dans la cas où aucune valeur n'a été donnée à
                la variable <replaceable>XXX</replaceable>.</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>

          <listitem>
            <para><code>allowempty=<replaceable>x</replaceable></code> permet
            à l'étudiant de laisser <replaceable>x</replaceable> questions
            sans réponse. Parmi les questions laissées sans réponse par
            l'étudiant, <replaceable>x</replaceable> (ou moins si il n'y en a
            pas autant) seront annulées (c'est-à-dire qu'elles ne seront pas
            prises en compte pour le calcul du score total).</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 :

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

\element{qqs}{
\begin{questionmult}{03}
  \bareme{default.COMP=10,default.PROP=11,formula=(COMP==PROP ? 1 : 0)}
  \AMCdontAnnotate
  Cite un gaz  important de l'air et son pourcentage.
    \begin{reponses}
      \mauvaise{vapeur d’eau}
      \mauvaise{gaz}
      \bonne{diazote}\bareme{set.COMP=1}
      \mauvaise{dioxygène}\bareme{set.COMP=2}
      \mauvaise{dioxyde de carbone}
      \mauvaise{20\%}\bareme{set.PROP=2}
      \mauvaise{40\%}
      \mauvaise{60\%}
      \bonne{80\%}\bareme{set.PROP=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}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setgroupmode{qqs}{withreplacement}

\restituegroupe{qqs}

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

}

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

      <sect3 id="scoring.global">
        <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>Si vous utilisez <command>formula</command> avec
        <command>\baremeDefautM</command> ou
        <command>\baremeDefautS</command>, il faudra l'annuler si vous
        utilisez un barème particulier pour différentes questions.</para>

        <programlisting>\begin{questionmult}\bareme{b=1,m=-0.5,formula=}
[...]
\end{questionmult}</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 (+ - * /), l'opérateur de test <code>( ? :
        )</code>, les parenthèses et plus généralement toutes celles reconnues
        par perl.</para>

        <note>
          <para>L'opérateur test s'utilise de la manière suivante :</para>

          <programlisting>( test ? instruction si vrai : instruction si faux)</programlisting>

          <para>Le test peut utiliser les opérateurs <code>&gt;</code>
          (supérieur à), <code>&gt;=</code> (supérieur ou égal à),
          <code>&lt;</code> (inférieur à), <code>&lt;=</code> (inférieur ou
          égal à), <code>==</code> (égalité), <code>!=</code> (différence),
          <code>||</code> (ou), <code>&amp;&amp;</code> (et).</para>
        </note>

        <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>
  
        <sect4 id="hacking-bareme-individuel">
          <title>Hacking : barème individuel</title>
            <para> <ulink url="https://project.auto-multiple-choice.net/boards/4/topics/13413"/></para>
            <para>Après <command>\begin{document}</command></para>
  <programlisting>
\ExplSyntaxOn

\prop_new:N \amc_scoring_q_prop

\cs_new:Npn \amc_scoring_q_add:nn #1 #2 {
  \prop_put:Nnn \amc_scoring_q_prop { #1 } { #2 }
}

\tl_new:N \amc_scoring_q_value
\cs_new:Npn \amc_scoring_q_apply:n #1 {
  \prop_get:NnNTF \amc_scoring_q_prop { #1 } \amc_scoring_q_value
  { \scoring{ \amc_scoring_q_value } } { }
}

\cs_new_eq:NN \AMCsetScoring \amc_scoring_q_add:nn
\cs_new_eq:NN \AMCapplyScoring \amc_scoring_q_apply:n

\ExplSyntaxOff

\AMCsetScoring{question1}{b=4}
\AMCsetScoring{question2}{mz=2}
  </programlisting>
  
  <programlisting>
\element{general}{
\begin{question}{question1}\AMCapplyScoring{question1}
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}{question2}\AMCapplyScoring{question2}
Parmi les villes suivantes, lesquelles sont des préfectures~?
\begin{reponses}
\bonne{Poitiers}
\mauvaise{Sainte-Menehould}
\bonne{Avignon}
\end{reponses}
\end{questionmult}
}
  </programlisting>
        </sect4>
      </sect3>

      <sect3 id="note-finale">
        <title>Du barème aux notes des étudiants</title>

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

        <orderedlist>
          <listitem>
            <para>Le barème de chaque question est appliqué pour obtenir les
            <emphasis>scores</emphasis> obtenus aux questions.</para>
          </listitem>

          <listitem>
            <para>La somme des <emphasis>scores</emphasis> de toutes les
            questions (sauf les questions indicatives) est calculée : on
            obtient le <emphasis>score total</emphasis> de l'étudiant.</para>
          </listitem>

          <listitem>
            <para>Si une <emphasis>note maximale</emphasis> non-nulle est
            donnée en paramètre (dans l'onglet Projet de la fenêtre
            <menuchoice>
                <guimenu>Édition</guimenu>

                <guimenuitem>Préférences</guimenuitem>
              </menuchoice>), le <emphasis>score total</emphasis> est divisé
            par le <emphasis>score maximal</emphasis> (c'est-à-dire le
            <emphasis>score total</emphasis> calculé pour une copie parfaite),
            puis multiplié par la différence (<emphasis>note
            maximale</emphasis> - <emphasis>note minimale</emphasis>), auquel
            on ajoute enfin la <emphasis>note minimale</emphasis> pour obtenir
            la <emphasis>note</emphasis> de l'étudiant. De cette façon, un
            étudiant ayant répondu de manière parfaite se verra attribuer la
            <emphasis>note maximale</emphasis> et un étudiant ayant obtenu un
            score nul se verra attribuer la <emphasis>note
            minimale</emphasis>. Avec une <emphasis>note maximale</emphasis>
            fixée à 100 et une <emphasis>note minimale</emphasis> fixée à 0,
            la <emphasis>note</emphasis> de l'étudiant pourra être vue comme
            un pourcentage de bonnes réponses. En France, on utilise souvent
            une <emphasis>note maximale</emphasis> égale à 20 et une
            <emphasis>note minimale</emphasis> égale à 0.</para>
          </listitem>

          <listitem>
            <para>La note ainsi obtenue est arrondie en utilisant les options
            suivantes de <menuchoice>
                <guimenu>Édition</guimenu>

                <guisubmenu>Préférences</guisubmenu>

                <guimenuitem>Projet</guimenuitem>
              </menuchoice> :</para>

            <itemizedlist>
              <listitem>
                <para>Granularité : pour obtenir un arrondi à l'entier,
                choisir la valeur 1. Pour un arrondi au quart de point,
                choisir 0,25, etc. Une valeur nulle annulera l'arrondi
                final.</para>
              </listitem>

              <listitem>
                <para>Type d'arrondi : inférieur, normal, supérieur</para>
              </listitem>
            </itemizedlist>
          </listitem>
        </orderedlist>
      </sect3>

      <sect3 id="correction.sujet">
        <title>Corriger des erreurs de barème</title>

        <para>Vous pouvez, même après le passage de l'examen, modifier votre
        barème. Cependant, vous ne devez <emphasis>jamais</emphasis> mettre à
        jour le document. Il est préférable d'ouvrir le fichier avec votre
        éditeur de texte, de faire les modifications et d'enregistrer.</para>

        <para>Vous pouvez :</para>

        <itemizedlist>
          <listitem>
            <para>Transformer des bonnes réponses en mauvaises
            réponses.</para>
          </listitem>

          <listitem>
            <para>Transformer des mauvaises réponses en bonnes
            réponses.</para>
          </listitem>

          <listitem>
            <para>Modifier le barème d'une ou plusieurs questions, le barème
            par défaut.</para>
          </listitem>
        </itemizedlist>

        <para>Vous ne pouvez pas :</para>

        <itemizedlist>
          <listitem>
            <para>Transformer une question simple en question multiple.</para>
          </listitem>

          <listitem>
            <para>Transformer une question multiple en question simple.</para>
          </listitem>

          <listitem>
            <para>Ajouter des réponses, des questions.</para>
          </listitem>

          <listitem>
            <para>Enlever des réponses, des questions.</para>
          </listitem>

          <listitem>
            <para>Modifier l'ordre des questions et/ou des réponses.</para>
          </listitem>
        </itemizedlist>

        <note>
          <para>Si vous estimez qu'une question doit être annulée, modifiez le
          barème comme ceci <command>\bareme{b=0,m=0,e=0,v=0}</command> ou
          notez la question comme indicative
          <command>\QuestionIndicative</command>.</para>
        </note>
      </sect3>
    </sect2>

    <sect2 id="gui.id">
      <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. Elle devra
        être préparée au format CSV, avec éventuellement des lignes de
        commentaires au début préfixées par le caractère
        `<code>#</code>' :<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>

        <note>
          <para>Dans cet exemple, le numéro d'identification de l'étudiant est
          contenu dans la colonne d'en-tête <emphasis>no</emphasis>.</para>

          <para>C'est ce nom de colonne qui devra être sélectionné dans le
          menu déroulant <guilabel>Identifiant unique dans cette
          liste</guilabel> de l'onglet <guibutton>Notation</guibutton> lors de
          l'association automatique des copies (voir <xref
          linkend="gui.assoc"/>).</para>
        </note>

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

          <para>Tout fichier au format CSV devrait convenir.</para>
        </note>

        <warning>
          <para>L'envoi d'une même copie à plusieurs adresses nécessite
          quelques précautions dans la création du fichier CSV.</para>

          <itemizedlist>
            <listitem>
              <para>point-virgule ou deux-points ou tabulation pour séparer
              les champs et virgule pour séparer les emails.</para>
            </listitem>

            <listitem>
              <para>Avec cette option, il faut déclarer dans le préambule
              <programlisting>\usepackage[babel=true,kerning=true]{microtype}</programlisting></para>
            </listitem>

            <listitem>
              <para>virgule pour séparer les champs et les emails entre
              guillemets et séparés par une virgule.</para>
            </listitem>
          </itemizedlist>

          <programlisting>nom,prenom,email
Boulix,Jojo,"jojo@boulix.fr,parents@boulix.com"        </programlisting>
        </warning>

        <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 <guibutton>Choisir</guibutton> de la
        partie <guilabel>Identification 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>\AMCcodeGrid</command>.</para>
      </sect3>

      <sect3 id="gui.assoc">
        <title id="gui.assoc.title">Association</title>

        <sect4 id="gui.assoc.auto">
          <title id="gui.assoc.auto.title">Association automatique</title>

          <sect5 id="gui.asso.auto.freebarcode">
            <title>Sans code barre</title>

              <warning>
              <para>Pour effectuer une association automatique, il est
              nécessaire d'avoir choisi un critère numérique (en général un
            numéro d'étudiant), d'avoir inclus au moins une commande
            <command>\AMCcodeGrid</command> (voir <xref
            linkend="latex.codes"/>) dans le fichier source LaTeX pour que les
            étudiants puissent coder ce critère numérique et d'avoir une
            colonne dans le fichier des étudiants qui contient le critère
            numérique.</para>
          </warning>

          <para>Pour réaliser l'association automatique des copies aux
          étudiants, complétez les deux menus déroulants de l'onglet
          <guibutton>Notation</guibutton>:</para>

          <itemizedlist>
            <listitem>
              <para><guilabel>Identifiant unique dans cette liste :</guilabel>
              il s’agit du nom de la colonne qui, dans le ﬁchier csv des
              étudiants, contient le numéro d’étudiant (voir <xref
              linkend="liste.etudiants"/>).</para>
            </listitem>

            <listitem>
              <para><guilabel>Titre du code pour association automatique
              :</guilabel> il s'agit de l'identifiant choisi dans le fichier
              source LaTeX pour le code <command>\AMCcodeGrid</command> (voir
              <xref linkend="latex.codes"/>).</para>
            </listitem>

          <listitem>
            <para> Vérifiez le type du champs nom :
          <menuchoice>
            <guimenu>Préférences</guimenu> <guimenuitem>Projet</guimenuitem>
            <guisubmenu>Type du champs nom</guisubmenu> <guisubmenu>Image</guisubmenu>
           </menuchoice>
              </para>
           </listitem>

            <listitem>
              <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>
            </listitem>
          </itemizedlist>
          </sect5>

         <sect5 id="gui.asso.auto.barcode">
            <title id="gui.asso.auto.barcode.title">Avec un code barre</title>
            <para>Le code barre devra être collé dans l'espace prévu par
            <command>champnom</command>.</para>

            <note><para>AMC ne crée pas de code barre, il vous appartient de le
            faire avec un logiciel externe.</para></note>

                    <para>Pour réaliser l'association automatique des copies aux
          étudiants, complétez les deux menus déroulants de l'onglet
          <guibutton>Notation</guibutton>:</para>

          <itemizedlist>
            <listitem>
              <para><guilabel>Identifiant unique dans cette liste :</guilabel>
              il s’agit du nom de la colonne qui, dans le ﬁchier csv des
              étudiants, contient le numéro d’étudiant (voir <xref
              linkend="liste.etudiants"/>).</para>
            </listitem>

            <listitem>
              <para><guilabel>Titre du code pour association automatique
              : </guilabel> <guimenuitem>Champ nom décodé</guimenuitem></para>
            </listitem>

          <listitem>
            <para> Vérifiez le type du champs nom :
           <menuchoice>
               <guimenu>Préférences</guimenu> <guimenuitem>Projet</guimenuitem>
               <guisubmenu>Type du champs nom</guisubmenu>
               <guisubmenu>Barcode ou Barcode tail</guisubmenu>
               </menuchoice>.
            </para>
          </listitem>

          <listitem>
            <para> Décodez le  champs nom :
           <menuchoice>
               <guimenu>Menu</guimenu> <guimenuitem>Projet</guimenuitem>
               <guisubmenu>Décoder le champs nom</guisubmenu>
            </menuchoice>.
           </para>
         </listitem>

         <listitem>
              <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>
            </listitem>
          </itemizedlist>
        </sect5>
       </sect4>

        <sect4 id="gui.assoc.manual">
          <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 id="sec.export.notes">
      <title id="sec.export.notes.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>

      <sect3 id="gui.export.ods">
        <title id="gui.export.ods.title">Export ODS (OpenOffice, LibreOffice)</title>

        <para>Dans le fichier exporté, le codage couleur suivant est
        adopté :</para>

        <variablelist>
          <varlistentry>
            <term>gris</term>

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

          <varlistentry>
            <term>jaune</term>

            <listitem>
              <para>utilisé pour repérer les questions où l'étudiant n'a pas
              fourni de réponse.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>rouge</term>

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

          <varlistentry>
            <term>violet</term>

            <listitem>
              <para>utilisé pour les cases correspondant à des questions
              indicatives (ne comptent pas pour la note finale de
              l'étudiant).</para>
            </listitem>
          </varlistentry>

            <varlistentry>
            <term>vert</term>

            <listitem>
              <para>utilisé pour le total des questions d'un même groupe
              (score ou pourcentage). Voir <xref endterm="identifier.title" linkend="identifier"/>
              et <xref endterm="Groupes.questions.title" linkend="Groupes.questions"/>.</para>
            </listitem>
          </varlistentry>

        </variablelist>
      </sect3>
    </sect2>

    <sect2 id="gui.annotate">
      <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'appliquent sur ce texte
      (voir <xref linkend="note-finale"/> pour une explication de la
      signification de ces valeurs) :</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>%(N)</literal></term>

          <listitem>
            <para>est remplacé par le numéro de l'étudiant (copie).</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 copies corrigées au format PDF. Le nom du fichier PDF qui
      contiendra la copie corrigée d'un étudiant donné est formé à partir du
      modèle indiqué dans le champ <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>

      <sect3 id="topics">
       <title id="topics.title">Fichier topics.yml</title>
  
     <para>L'objectif est de regrouper un ensemble de questions pour calculer
     un score et obtenir un niveau de réussite.
     Ces indications seront affichées sur l'en-tête de la copie corrigée.</para>

      <para>Ces groupes vont être décrits dans un fichier au format YAML nommé topics.yml, à placer dans le répertoire du projet AMC.</para>
      <para>AMC aura besoin des paquets perl supplémentaires suivants qui doivent donc être installé dans votre environnement : 
      <package>YAML::Syck</package>, <package>Hash::Merge</package>.</para>
  
         <sect4 id="variables.topics"> 
          <title id="variables.topics.title"> Les variables</title>
            <para>Valeurs générales relatives au topic :</para>

          <itemizedlist>
            <listitem><para>%{id} : id du topic</para></listitem>
            <listitem><para>%{name} : nom du topic</para></listitem>
          </itemizedlist>
  
        <para>Valeurs relatives au score de l'étudiant :</para>

          <itemizedlist>
              <listitem><para>%{score} : score atteint par l'étudiant</para></listitem>
              <listitem><para>%{max} : score maximal</para></listitem>
              <listitem><para>%{ratio} : quotient du score sur le score maximal (entre 0 et 1)</para></listitem>
              <listitem><para>%{value} : même chose mais en pourcentage</para></listitem>
          </itemizedlist>

        <para>Valeurs relatives aux questions du topic :</para>
          <itemizedlist>
          <listitem><para>%{nums:s} : liste des numéros de questions</para></listitem>
          <listitem><para>%{nums:c} : liste des numéros de questions, en remplaçant les suites par des intervalles (ex: 2-4 au lieu de 2,3,4)</para></listitem>
          </itemizedlist>

         <para>Valeurs qui proviennent du niveau atteint :</para>
           <itemizedlist>
             <listitem><para>%{message}</para></listitem>
             <listitem><para>%{code} </para></listitem> 
            <listitem><para>%{i} : palier </para></listitem>
          </itemizedlist>
        </sect4>
  
       <sect4 id="principle.yml">
          <title id="principle.yml.title">Principe</title>
              <warning><para>Le format de fichier YAML est très sensible à l'indentation. Vous devez donc bien respecter le nombre d'espaces au début des lignes.</para>
              <para>Pour vous aider, chaque espace est représenté par le symbole <code>`</code> qu'il ne faut pas reproduire.</para></warning>
<programlisting>
---
preferences:
``clé niveau 1:`valeur

topics:
``-`clé niveau 1:`valeur
````clé niveau 2:`valeur
``````clé niveau 3:`valeur
````````clé niveau 4:`valeur
</programlisting>
       </sect4>

        <sect4 id="file.yml">
          <title id="file.yml.title">Exemples de fichiers</title>

            <sect5 id="example.yml">
            <title id="example.yml.title">Exemple complet</title>
  
<programlisting>
---
preferences:
``odscolumns:`level <co id="preferences.odsexport" linkends="preferences.odsexport.exp"></co>
``skip_indicatives:`0 <co id="preferences.skipindicatives" linkends="preferences.skipindicatives.exp"></co>
``decimal_separator:`"," <co id="preferences.decimalseparator" linkends="preferences.decimalseparator.exp"></co>
``answered_only:`1 <co id="preferences.answeredonly" linkends="preferences.answeredonly.exp"></co>

topics:
``-`text:`"Rappel : Ne pas oublier les retenues dans les opérations" <co id="topics.text" linkends="topics.text.exp"></co>
``-`id:`addition2 <co id="topics.id" linkends="topics.id.exp"></co>
````name:`Savoir calculer la somme de deux nombres à deux chiffres <co id="topics.name" linkends="topics.name.exp"></co>
````questions: <co id="topics.questions" linkends="topics.questions.exp"></co>
``````-`"add2:*" <co id="topics.question.etoile" linkends="topics.question.etoile.exp"></co>
``````-`somme2ch <co id="topics.question.unique" linkends="topics.question.unique.exp"></co>
````annotate_color:`"#B22222" <co id="topics.annotate" linkends="topics.annotate.exp"></co>
````levels: <co id="topics.levels" linkends="topics.levels.exp"></co>
``````-`min:`75 <co id="topics.levels.min" linkends="topics.levels.min.exp"></co>
````````message: `très bonne maîtrise <co id="topics.levels.message" linkends="topics.levels.message.exp"></co>
````````color:`"#1ab407" <co id="topics.levels.message.color" linkends="topics.levels.message.color.exp"></co>
````````code:`4 <co id="topics.code" linkends="topics.code.exp"></co>
``````-`min:`50
````````message:`maîtrise satisfaisante
````````color:`"#2aea62"
````````code:`3
``````-`min:`25
````````message:`maîtrise fragile
````````color:`"#ffad26"
````````code:`2
``````-`message:`maîtrise insuffisante
````````color:`"#ff262c"
````````code:`1
````decimals:`0 <co id="topics.decimals" linkends="topics.decimals.exp"></co>
````decimalsratio:`2 <co id="topics.decimalsratio" linkends="topics.decimalsratio.exp"></co>
````decimalspc:`0 <co id="topics.decimalspc" linkends="topics.decimalspc.exp"></co>
````floor:`0  <co id="topics.floor" linkends="topics.floor.exp"></co>
# Commentaire pour aérer le code. <co id="topics.comment" linkends="topics.comment.exp"></co>
``-`id:`soustraction2
````name:`Savoir calculer la différenc de deux nombres à deux chiffres
````format:`"%{name}`:`%{score}/%{max}" <co id="topics.format" linkends="topics.format.exp"></co>
````questions:
``````-`"sous2"
``````-`"sous1"
````annotate_color:<co id="topics.annotate.empty" linkends="topics.annotate.exp"></co>
#
``-`text:`"-------bilan--------" <co id="topics.text.bilan" linkends="topics.text.exp"></co>
``-`id:`global
````questions:`"*" <co id="topics.joker" linkends="topics.joker.exp"></co>
````value:`"ratio:20:0.25" <co id="topics.value" linkends="topics.value.exp"></co>
````decimals:`2 <co id="topics.decimals.global" linkends="topics.decimals.global.exp"></co>
````decimalspc:`2 <co id="topics.decimalspc.global" linkends="topics.decimals.global.exp"></co>
````format:`| <co id="topics.list" linkends="topics.list.exp"></co>
``````%{name}`:`%{code}`%{message}
``````Pour les questions %{nums:c} (addition et soustraction), ton score est de  %{score}
``````ta note est de %{value}/20
````exclude_questions: <co id="topics.exclude" linkends="topics.exclude.exp"></co>
`````-`bonus
`````-`question-difficile
#
``-`text:`"la clé aggregate"
``-`id:`aggregate
````name:`les options
````aggregate:`<replaceable>xxx</replaceable><co id="topics.aggregate" linkends="topics.aggregate.exp"></co>
````value:`<replaceable>xxx</replaceable><co id="topics.aggregate.value" linkends="topics.aggregate.value.exp"></co>
````questions:
``````-`"*"

</programlisting>

<para><calloutlist>

<callout arearefs="preferences.odsexport" id="preferences.odsexport.exp">
<para>De nouvelles colonnes (<xref linkend="gui.export.ods"/>)
seront affichées avec le texte  de chaque <replaceable>id</replaceable> ( <xref linkend="example.yml"/> <xref linkend="topics.id"/>)
et le pourcentage du niveau. Vous pouvez choisir d'afficher la valeur  de la variable <replaceable>code</replaceable> .</para>
</callout>

<callout arearefs="preferences.skipindicatives" id="preferences.skipindicatives.exp">
<para>Pour tenir compte des questions indicatives dans les pourcentages.</para>
</callout>

<callout arearefs="preferences.decimalseparator" id="preferences.decimalseparator.exp">
<para>Séparteur décimal</para></callout>

<callout arearefs="preferences.answeredonly" id="preferences.answeredonly.exp">
<para>N'affiche pas les topics si toutes les réponses sont vides.</para></callout>

<callout arearefs="topics.text topics.text.bilan" id="topics.text.exp">
<para>Un texte brut quelconque affiché sans condition de score.</para></callout>

<callout arearefs="topics.id" id="topics.id.exp">
<para>L'identifiant de la compétence sans lettes accentuées ou espaces.</para>
</callout>

<callout arearefs="topics.name" id="topics.name.exp">
<para>Le nom complet de la compétence.</para>
</callout>

<callout arearefs="topics.questions" id="topics.questions.exp">
<para>Les questions reliées à la compétence.</para>
</callout>

<callout arearefs="topics.question.etoile" id="topics.question.etoile.exp">
<para>Toutes les questions dont l'identifiant commence par add2: sont incluses
(voir <xref endterm="identifier.title" linkend="identifier"/>).</para>
</callout>

<callout arearefs="topics.question.unique" id="topics.question.unique.exp">
<para>Seule la question avec l'identifiant somme2ch est incluse
(voir <xref endterm="identifier.title" linkend="identifier"/>).</para>
</callout>

<callout arearefs="topics.annotate topics.annotate.empty" id="topics.annotate.exp">
<para>Couleur utilisée sur la copie annotée suivant les scores correspondants aux questions.</para>
<para>Si une question n'appartient à aucun <code>id</code> pour lequel l'option <code>annotate_color</code>
 est renseignée, alors la couleur utilisée sera celle de <code>Annotations color</code> de l'interface.
  <menuchoice>
<guimenuitem>Édition</guimenuitem>
<guisubmenu>Préférences</guisubmenu>
<guimenuitem>Annotation</guimenuitem>
</menuchoice></para>
</callout>

<callout arearefs="topics.levels" id="topics.levels.exp">
<para>Les différents niveaux de réussite exprimés en pourcentage.</para>
</callout>

<callout arearefs="topics.levels.min" id="topics.levels.min.exp">
<para>Minimum à atteindre pour ce niveau.</para>
</callout>

<callout arearefs="topics.levels.message" id="topics.levels.message.exp">
<para>Le message affiché sur la copie en fonction du niveau.</para>
</callout>

<callout arearefs="topics.levels.message.color" id="topics.levels.message.color.exp">
<para>La couleur du message affiché sur la copie en fonction du niveau.</para>
</callout>

<callout arearefs="topics.code" id="topics.code.exp">
<para><replaceable>code</replaceable> qui pourra être affichée dans les colonne du fichier ods. Voir
<xref endterm="gui.export.ods.title" linkend="gui.export.ods"/> .</para>
</callout>

<callout arearefs="topics.decimals" id="topics.decimals.exp">
<para> Nombre de décimales pour <code>%{score}</code> et <code>%{code}</code>, 0 par défaut.</para>
</callout>

<callout arearefs="topics.decimalsratio" id="topics.decimalsratio.exp">
<para> Nombre de décimales pour <code>%{ratio}</code>, 2 par défaut.</para>
</callout>

<callout arearefs="topics.decimalspc" id="topics.decimalspc.exp">
<para> Nombre de décimales pour <code>%{value}</code>, 0 par défaut.</para>
</callout>

<callout arearefs="topics.floor" id="topics.floor.exp">
<para>Valeur plancher. Si le calcul de la valeur obtenue au topic donne une valeur inférieure à la valeur plancher, 
cette valeur est ramenée à la valeur plancher.</para>
</callout>

<callout arearefs="topics.comment" id="topics.comment.exp">
<para>Les commentaires commencent par le symbole dièse.</para>
</callout>

<callout arearefs="topics.format" id="topics.format.exp">
<para>La mise en forme de l'affichage.</para>
<para>Par défaut l'affichage est :
<code>format:`"● %{name}: %{message} (%{value})"</code>
</para>
</callout>

<callout arearefs="topics.value" id="topics.value.exp">
<para>La note correspondante sera le ratio multiplié par 20 et arrondi au multiple de 0.25 le plus proche.</para>
</callout>

<callout arearefs="topics.decimals.global topics.decimalspc.global" id="topics.decimals.global.exp">
<para>Changement du nombre de décimales.</para>
</callout>
 
<callout arearefs="topics.list" id="topics.list.exp">
<para>Pour écrire un texte sous forme de liste.</para></callout>

<callout arearefs="topics.joker" id="topics.joker.exp">
<para>Joker qui sélectionne toutes les questions.</para>
</callout>

<callout arearefs="topics.exclude" id="topics.exclude.exp">
<para>Les questions suivantes seront exclues.</para>
</callout>

<callout arearefs="topics.aggregate" id="topics.aggregate.exp">
<para>Peut prendre plusieurs options :</para>

      <variablelist>

        <varlistentry>
          <term>sumscores:</term>
          <listitem>
            <para>on prend la somme des scores, et au dénominateur la somme des scores maximaux.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term>sumratio:</term>
          <listitem>
          <para>on prend la somme des quotients entre le score de la question et
          le score maximal pour la question. Au dénominateur, le nombre de questions.</para>
          <para>Si on veut que le topic soit égal à la somme des ratios, on prend <replaceable>value:score</replaceable>,
          et si on veut que le topic soit la moyenne des ratios (donc entre 0 et 1), on prend <replaceable>value:ratio</replaceable>.
          Si laissé <emphasis>vide</emphasis>, le pourcentage sera affiché.</para>
        </listitem>
        </varlistentry>

        <varlistentry>
          <term>minscore:</term>
          <listitem>
          <para> on prend le minimum des scores, et au dénominateur le minimum des scores maximaux aux questions.</para>
          <para>Si on veut que le topic soit égal au min des scores on choisit <replaceable>value:score</replaceable>, 
          et si on veut que le topic soit égal au rapport des deux, on prend <replaceable>value:ratio</replaceable>.</para>
        </listitem>
        </varlistentry>


        <varlistentry>
          <term>maxscore:</term>
          <listitem>
          <para> on prend le maximum des scores, et au dénominateur le maximum des scores maximaux aux questions.</para>
          <para>Si on veut que le topic soit égal au max des scores on choisit <replaceable>value:score</replaceable>, 
          et si on veut que le topic soit égal au rapport des deux, on prend <replaceable>value:ratio</replaceable>.</para>
        </listitem>
        </varlistentry>

        <varlistentry>
          <term>maxratio:</term>
          <listitem>
          <para>on prend la valeur maximale du rapport, pour chaque question, entre le score obtenu pour la
         question et le score optimal pouvant être obtenu pour la question. Avec cette valeur d'aggregate,
         <replaceable>value:score</replaceable> et <replaceable>value:ratio</replaceable> donnent la même chose.</para>
        </listitem>
        </varlistentry>

        <varlistentry>
          <term>minratio:</term>
          <listitem>
          <para>on prend la valeur minimale du rapport, pour chaque question, entre le score obtenu pour la
         question et le score optimal pouvant être obtenu pour la question. Avec cette valeur d'aggregate,
         <replaceable>value:score</replaceable> et <replaceable>value:ratio</replaceable> donnent la même chose .</para>
        </listitem>
        </varlistentry>

        <varlistentry>
          <term>count(a) :</term>
          <listitem>
          <para>nombre de questions ayant le score <replaceable>a</replaceable>.</para>
        </listitem>
        </varlistentry>

        <varlistentry>
          <term>count(a,b) :</term>
          <listitem>
          <para>nombre de questions ayant le score entre <replaceable>a</replaceable> et <replaceable>b</replaceable>.</para>
        </listitem>
        </varlistentry>

      </variablelist>
</callout>

<callout arearefs="topics.aggregate.value" id="topics.aggregate.value.exp">
<para>Peut prendre plusieurs options :
<replaceable>score</replaceable>, <replaceable>ratio</replaceable>, <replaceable>"ratio:a:b"</replaceable>.
Si laissé <emphasis>vide</emphasis>, le pourcentage sera affiché.</para>
</callout>

</calloutlist></para>

          </sect5>

        <sect5 id="shared.levels">
          <title id="shared.levels.title">Niveaux communs</title>
<programlisting>
---
conf:
``niveauxstandard: <co id="topics.shared.levels" linkends="topics.shared.levels.exp"></co>
````levels:
``````-`min:`75
````````message:`très bonne maîtrise
````````color:`"#1ab407"
``````-`min:`50
````````message:`maîtrise satisfaisante
````````color:`"#2aea62"
``````-`min:`25
````````message:`maîtrise fragile
````````color:`"#ffad26"
``````-`message:`maîtrise insuffisante
````````color:`"#ff262c"
````decimals:`2 
````decimalsratio:`2 
````decimalspc:`0 
````floor:`0 

topics:
``-`id:`addition2
````name:`Savoir calculer la somme de deux nombres à deux chiffres
````questions:
``````-`"add2:*"
``````-`somme2ch
````conf:`niveauxstandard <co id="topics.shared.levels.conf" linkends="topics.shared.levels.conf.exp"></co>
``-`id:`soustraction2
````name:`Savoir calculer la différence de deux nombres à deux chiffres
````format:`"%{name}`:`%{score}/%{max}"
````questions:
``````-`"sous2:*"
``````-`"sous1:*"
````conf:`niveauxstandard <co id="topics.shared.levels.confbis" linkends="topics.shared.levels.conf.exp"></co>
</programlisting>

<para><calloutlist>
<callout arearefs="topics.shared.levels" id="topics.shared.levels.exp">
<para>Les différents niveaux de réussite exprimés en pourcentage pour l'ensemble des questions.</para>
</callout>

<callout arearefs="topics.shared.levels.conf topics.shared.levels.confbis" id="topics.shared.levels.conf.exp">
<para>Appel au barème.</para>
</callout>
</calloutlist></para>
          </sect5>

          <sect5 id="inclusion.file.yml">
            <title id="inclusion.file.yml.title">Inclusion de fichier</title>
             <para>Créer un fichier levels.yml qui se trouve dans le répertoire parent du répertoire projet
              (donc le répertoire commun à tous les projets AMC).</para>
  <programlisting>
# fichier nommé levels.yml
preferences:
``odscolumns: level
``decimal_separator:`"," 
#
conf:
``niveauxstandard: 
````levels:
``````-`min:`75
````````message:`très bonne maîtrise
````````color:`"#1ab407"
``````-`min:`50
````````message:`maîtrise satisfaisante
````````color:`"#2aea62"
``````-`min:`25
````````message:`maîtrise fragile
````````color:`"#ffad26"
``````-`message:`maîtrise`insuffisante
````````color:`"#ff262c`
````decimals:`2
````decimalsratio:`2 
````decimalspc:`2
````floor:`0
  </programlisting>

  <programlisting>
---
include:
``-`../levels.yml

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

        </sect4>
      </sect3>

      <sect3 id="position.note">
        <title id="position.note.title">Position de la note</title>

        <para>Vous pouvez choisir la position de la note à l'aide du menu
        <menuchoice>
            <guimenu>Édition</guimenu>

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

            <guimenuitem>Projet</guimenuitem>

            <guimenuitem>Position de la note</guimenuitem>
          </menuchoice></para>

        <para>Les choix par défaut sont :</para>

        <itemizedlist>
          <listitem>
            <para>(aucune).</para>
          </listitem>

          <listitem>
            <para>Dans la marge.</para>
          </listitem>

          <listitem>
            <para>Dans les deux marges.</para>
          </listitem>

          <listitem>
            <para>À côté des cases.</para>
          </listitem>

          <listitem>
            <para>Indiqué dans le fichier source (voir <xref
            endterm="definir.zone.notation.title"
            linkend="definir.zone.notation"/>).</para>
          </listitem>
        </itemizedlist>
      </sect3>
      
     <sect3 id="annotations.layers">
       <title id="annotations.layers.title">Correction à imprimer sur les originaux</title>
      <para>Pour imprimer la correction sur les copies originales (<emphasis>impérativement</emphasis>
      classées par ordre croissant alphabétique ou numérique), il faut créer un calque des annotations
      qui sera imprimé avec les copies dans le bac à feuilles de la photocopieuse.</para>
  <programlisting>
gs -o Tous_correction_seule.pdf -sDEVICE=pdfwrite -dFILTERIMAGE Tous_etudiants.pdf
  </programlisting>
     </sect3> 
      
    </sect2>

    <sect2 id="preferences.default">
      <title id="preferences.default.title">Les valeurs par défaut du menu
      Préférences</title>

      <para>Vous pouvez modifier les valeurs par défaut pour le traitement des
      scans dans le menu <menuchoice>
          <guimenuitem>Édition</guimenuitem>

          <guisubmenu>Préférences</guisubmenu>

          <guimenuitem>Scan</guimenuitem>
        </menuchoice></para>

      <para><guimenuitem>Conversion des scans</guimenuitem></para>

      <itemizedlist>
        <listitem>
          <para>Densité des scans vectoriel (DPI) : 250</para>
        </listitem>

        <listitem>
          <para>Seuil de conversion : 0.60</para>
        </listitem>

        <listitem>
          <para>Effacer le rouge des scans : décoché</para>
        </listitem>

        <listitem>
          <para>Forcer la conversion : décoché</para>
        </listitem>
      </itemizedlist>

      <para><guimenuitem>Paramètres de détection</guimenuitem></para>

      <itemizedlist>
        <listitem>
          <para>Majoration de la taille des marques : 0.20</para>
        </listitem>

        <listitem>
          <para>Minoration de la taille des marques : 0.20</para>
        </listitem>

        <listitem>
          <para>Seuil de noirceur par défaut : 0.15</para>
        </listitem>

        <listitem>
          <para>Seuil de noirceur par défaut supérieur : 1</para>
        </listitem>

        <listitem>
          <para>Proportion des cases à mesurer : 0.80</para>
        </listitem>

        <listitem>
          <para>Contrôle des scans avec 3 angles marqués : décoché</para>
        </listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="alt">
    <title>Utilisations particulières</title>

    <sect2 id="alt.photocopy">
      <title id="alt.photocopy.title">Photocopie du sujet</title>

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

      <itemizedlist>
        <listitem>
          <para>Utiliser l'option <option>ensemble</option> (voir <xref
          endterm="sec.package.options.title"
          linkend="sec.package.options"/>).</para>
        </listitem>

        <listitem>
          <para>Écrire le sujet avant l'utilisation de la commande
          <command>exemplaire</command>, ou de l'environnement
          <command>copieexamen</command>.</para>
        </listitem>

        <listitem>
          <para>Utiliser la commande <command>\AMCformS</command> pour
          restituer les cases à cocher sur chaque feuille de réponses, à
          l'intérieur de
          <command>exemplaire</command>/<command>copieexamen</command>.</para>
        </listitem>
      </itemizedlist>

      <para>Voici un exemple minimal de fichier LaTeX :</para>

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

\noindent{\bf Sujet}

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

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

\AMCcleardoublepage

\exemplaire{5}{

\AMCdebutFormulaire

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

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

\AMCformS

}

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

    <sect2 id="postcorrect">
      <title>Correction a posteriori</title>

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

      <para>Pour mettre en œuvre ce schéma de fonctionnement, vous
      devez :</para>

      <itemizedlist>
        <listitem>
          <para>utiliser les options <option>postcorrect</option>,
          <option>insidebox</option> et <option>noshuffle</option> (voir <xref
          endterm="sec.package.options.title"
          linkend="sec.package.options"/>) ;</para>
        </listitem>

        <listitem>
          <para>utiliser <command>\mauvaise</command> pour toutes les réponses
          (jamais <command>\bonne</command>).</para>
        </listitem>
      </itemizedlist>

      <para>Voici un exemple minimal :</para>

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

\begin{document}

\exemplaire{5}{

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

      \vspace*{.5cm}\dotfill

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


\vspace{.5cm}
\noindent\hrulefill

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

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

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

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

\end{multicols}

}

\end{document}</programlisting>

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

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

        <programlisting>\begin{question}{01}
  \begin{reponsesperso}
    \mauvaise{A }%
    \mauvaise{B }%
    \mauvaise{C }%
    \mauvaise{D }%
    \mauvaise{E }%
  \end{reponsesperso}
\end{question}</programlisting>
      </note>

      <note>
        <para>Pour utiliser cette option uniquement pour le formulaire de
        réponse (et non pour la saisie du numéro d'étudiant), vous pouvez
        définir, juste après le <code>\begin{document}</code> <programlisting>\makeatletter
\def\setoutsidebox{\AMC@outside@boxtrue}
\makeatother</programlisting></para>

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

        <programlisting>{\setoutsidebox\formulaire}</programlisting>
      </note>
    </sect2>

    <sect2 id="Copies.Preremplies">
      <title id="Copies.Preremplies.title">Copies pré-remplies</title>

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

      <itemizedlist>
        <listitem>
          <para>La liste des étudiants doit être au format CSV. On suppose
          dans la suite que le fichier <filename>liste.csv</filename>, placé
          dans le répertoire du projet, utilise l'encodage UTF8 et est sous la
          forme suivante :<programlisting>nom,prenom,id
Boulix,Jojo,001
Golin,André,002
Moniuszko,Stanisław,003</programlisting> ou <programlisting>nom,prenom,id,mail
Boulix,Jojo,001,jojo@boulix.fr
Golin,André,002,andre@golin.fr
Moniuszko,Stanisław,003,Moniuszko@Stanisław.fr</programlisting> ou
          <programlisting>nom,prenom,id,mail
Boulix,Jojo,001,"jojo@boulix.fr,tata@boulix.fr"
Golin,André,002,"andre@golin.fr,golin@andre.fr"
Moniuszko,Stanisław,003,"Moniuszko@Stanisław.fr,stan@stanislaw.fr"</programlisting>
          ou <programlisting>nom;prenom;id;mail
Boulix;Jojo;001;jojo@boulix.fr,tata@boulix.fr
Golin;André;002;andre@golin.fr,golin@andre.fr
Moniuszko;Stanisław;003;Moniuszko@Stanisław.fr,stan@stanislaw.fr</programlisting></para>

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


         <listitem>
           <para> <command>\exemplaire{1}</command> doit être égal à un.</para>
          </listitem>

         <listitem>
          <para>Le nombre de copies doit être à zéro (interface graphique).</para>
         </listitem>

        <listitem>
          <para>Le sujet LaTeX doit charger le paquet csvsimple, grâce à une
          ligne<programlisting>\usepackage{csvsimple}</programlisting></para>
        </listitem>

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

<para><!--NAME: Exemple au format LaTeX et copies pré-remplies
DESC: Exemple au format LaTeX et copies pré-remplies.-->
          <programlisting>
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[french]{babel}<co id="french.babel" linkends="french.babel.exp"/>
%\usepackage[babel=true,kerning=true]{microtype}<co id="microtype"
              linkends="microtype.exp"/>

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

\newcommand{\sujet}{%
\exemplaire{1}{%
%\shorthandon{;} <co id="shorthandoff.a" linkends="shorthandoff.exp"/>
%%% debut de l'en-tête des copies :

\noindent{\bf QCM  \hfill TEST}

\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
  \centering\large\bf Histoire et géographie\\ Examen du 01/01/2008
\end{minipage}
\champnom{\fbox{\begin{minipage}{.5\linewidth}
\nom{} \prenom{} :

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

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

\begin{center}
  \hrule\vspace{2mm}
  \bf\Large Géographie
  \vspace{1mm}\hrule
\end{center}

\restituegroupe{geographie}

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

\restituegroupe{histoire}

\AMCassociation{\id}%association
%\AMCassociation[\nom-\prenom]{\id}<co id="nameFile" linkends="nameFile.exp"/>

}%fin commande \exemplaire
}%fin commande \newcommand

\begin{document}

%%% préparation des groupes

\setdefaultgroupmode{withreplacement}

\element{geographie}{
  \begin{question}{Paris}
    Dans quel continent se situe Paris~?
    \begin{reponses}
      \bonne{L'Europe}
      \mauvaise{L'Afrique}
      \mauvaise{L'Asie}
      \mauvaise{La planète Mars}
    \end{reponses}
  \end{question}
}

\element{geographie}{
  \begin{question}{Cameroun}
    Quelle est la capitale du Cameroun~?
    \begin{reponses}
      \bonne{Yaoundé}
      \mauvaise{Douala}
      \mauvaise{Abou-Dabi}
    \end{reponses}
  \end{question}
}

\element{histoire}{
  \begin{question}{Marignan}
    En quelle année a eu lieu la bataille de Marignan~?
    \begin{reponseshoriz}
      \bonne{1515}
      \mauvaise{1915}
      \mauvaise{1519}
    \end{reponseshoriz}
  \end{question}
}

\element{histoire}{
  \begin{questionmult}{Nantes}
    Que peut-on dire de l'Édit de Nantes~?
    \begin{reponses}
      \bonne{Il a été signé en 1598}
      \bonne{Il a été définitivement révoqué par Louis XIV}
      \mauvaise{Il a été signé par Henri II}
    \end{reponses}
  \end{questionmult}
}

%protection par mot de passe
%\AMCstudentslistfile{liste.csv}{id} <co
id="password.protect" linkends="password.protect.exp"/>

%%génération des sujets
\csvreader[head to column names]{liste.csv}{}{\sujet} <co
              id="separateur.virgule" linkends="separateur.virgule.exp"/>
%\shorthandoff{;} <co id="shorthandoff.b" linkends="shorthandoff.exp"/>
%\csvreader[head to column names,separator=semicolon]{liste.csv}{}{\sujet}<co
              id="separateur.pointvirgule"
              linkends="separateur.pointvirgule.exp"/>

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

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

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

              <callout arearefs="microtype" id="microtype.exp">
                <para>L'astuce est de recourir à microtype pour corriger ce
                problème (et on peut profiter des avantages de microtype).
                Pensez à décommenter cette ligne pour l'activer.</para>
              </callout>

              <callout arearefs="nameFile" id="nameFile.exp">
              	<para>Option pour inclure le nom de l'élève dans le nom de fichier
                  lors de l'impression.</para>
              </callout>

              <callout arearefs="password.protect" id="password.protect.exp">
              	<para>Pour protéger chaque copie avec un mot de passe unique.
              	</para></callout>

              <callout arearefs="shorthandoff.a shorthandoff.b"
                       id="shorthandoff.exp">
                <para>Au lieu d'utiliser
                <command>\usepackage[babel=true,kerning=true]{microtype}</command>,
                cette solution est possible pour contourner le problème.
                Décommentez cette ligne.</para>
              </callout>

              <callout arearefs="separateur.virgule"
                       id="separateur.virgule.exp">
                <para>Utilisez cette commande si le fichier CSV correspond à
                un des 3 premiers exemples.</para>
              </callout>

              <callout arearefs="separateur.pointvirgule"
                       id="separateur.pointvirgule.exp">
                <para>Utilisez cette commande si le fichier CSV correspond au
                4e exemple.</para>
              </callout>
            </calloutlist></para>
        </listitem>

        <listitem>
          <para>Après l'impression, le scan, la saisie automatique et la
          notation des copies, au moment de l'association des copies avec les
          étudiants, utiliser la valeur "<emphasis>pré-association</emphasis>"
          pour le champ <guilabel>Titre du code pour association
          automatique</guilabel>, et "<emphasis>id</emphasis>" pour le champ
          <guilabel>Identifiant unique dans cette liste</guilabel>.</para>
        </listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="conflits">
    <title>Conflits avec d'autres paquets</title>

    <sect2 id="paquets">
      <title>Paquets à déclarer après automultiplchoice</title>

      <para>Vous devez déclarer ces paquets <emphasis>après</emphasis>
      <package>automultiplechoice</package> : fancyvrb, fancybox,
      pstricks, minted.</para>

      <para>Pour utiliser <command>pstricks</command>, vous devez configurer
      AMC : <menuchoice>
          <guimenu>Édition</guimenu>

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

          <guimenuitem>Général</guimenuitem>

          <guimenuitem>Moteur Latex par défaut</guimenuitem>

          <guimenuitem>latex+dvipdf</guimenuitem>
        </menuchoice></para>
    </sect2>

    <sect2 id="verbatim">
      <title><package>verbatim</package></title>

      <para>Issu du <ulink
      url="https://project.auto-multiple-choice.net/projects/auto-multiple-choice/wiki/Verbatim_inside_questions">
      wiki</ulink>.</para>

      <para>Le paquet <package>verbatim</package> perturbe AMC et il devient
      impossible de l'utiliser dans les environnements
      <command>question</command> ou <command>questionmult</command>. Cet
      exemple ne compile pas.</para>

      <programlisting>
\begin{question}{program}
What is the return value of the following R code?
\begin{verbatim}
sum(sapply(1:2^2,function(x) { x/2 }))
\end{verbatim}
\begin{choices}[o]
\wrongchoice{2.5}
\correctchoice{5}
\wrongchoice{NaN}
\end{choices}
\end{question}
          </programlisting>

      <sect3 id="accolades">
        <title>Accolades explicites</title>

        <para>Pour les textes court, encadrer celui-ci dans une commande
        particulière (ici, texte en italique).</para>

        <programlisting>
\begin{question}{program}
What is the return value of the following R code?
\begin{center}
\texttt{sum(sapply(1:2\textasciicircum 2,function(x) \{ x/2 \}))}
\end{center}
\begin{choices}[o]
\wrongchoice{2.5}
\correctchoice{5}
\wrongchoice{NaN}
\end{choices}
\end{question}
</programlisting>
      </sect3>

      <sect3 id="UsevVerb">
        <title><command>UseVerb</command> du paquet
        <package>fancyvrb</package></title>

        <para><ulink url="https://www.ctan.org/pkg/verbatim">
        https://www.ctan.org/pkg/verbatim</ulink>.</para>

        <para>Enregistrez le <emphasis>verbatim</emphasis> dans une commande
        avant <command>\exemplaire</command></para>

        <programlisting>
\SaveVerb{theRcode}'sum(sapply(1:2^2,function(x) { x/2 }))'
...
\begin{question}{program}
What is the return value of the following R code?
\begin{center}
\UseVerb{theRcode}
\end{center}
\begin{choices}[o]
\wrongchoice{2.5}
\correctchoice{5}
\wrongchoice{NaN}
\end{choices}
\end{question}
          </programlisting>
      </sect3>

      <sect3 id="verbatimbox">
        <title>Paquet <package>verbatimbox</package></title>

        <para>Pour des textes plus longs, enregistrez le
        <emphasis>verbatim</emphasis> dans un environnement
        <command>myverbbox</command> avant
        <command>\exemplaire</command></para>

        <programlisting>
\begin{myverbbox}{\Rcode}
sum(sapply(1:2^2,function(x) { x/2 }))
\end{myverbbox}
...

\begin{question}{program}
What is the return value of the following R code?
\begin{center}
\Rcode
\end{center}
\begin{choices}[o]
\wrongchoice{2.5}
\correctchoice{5}
\wrongchoice{NaN}
\end{choices}
\end{question}
  </programlisting>
      </sect3>

      <sect3 id="import">
        <title>Import de fichiers externes</title>

        <para><code>prog.py</code> est un fichier copié dans le répertoire du
        projet.</para>

        <sect4 id="listings">
          <title>Paquet <package>listings</package></title>

          <programlisting>
\lstset{language=Python}
\lstinputlisting{prog.py}
</programlisting>
        </sect4>

        <sect4 id="minted">

          <title>Paquet <package>minted</package></title>
  <para>Compiler avec <command>-shell-escape</command>.</para>
          <programlisting>
 \inputminted{python}{prog.py}
</programlisting>
        </sect4>
      </sect3>
    </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">1.7.0+git20250704122834</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>auto-multiple-choice gui</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>auto-multiple-choice-prepare</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-imprime</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-analyse</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-note</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-association-auto</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-export</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-annote</refentrytitle>

            <manvolnum>1</manvolnum>
          </citerefentry>, <citerefentry>
            <refentrytitle>auto-multiple-choice-regroupe</refentrytitle>

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

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

        <manvolnum>1</manvolnum>

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

        <refmiscinfo class="version">1.7.0+git20250704122834</refmiscinfo>
      </refmeta>

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

        <refpurpose>prépare le document de travail à partir du fichier source
        LaTeX</refpurpose>
      </refnamediv>

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

          <arg choice="plain">prepare</arg>

          <arg choice="plain">--mode s</arg>

          <arg choice="plain">--prefix
          <replaceable>répertoire-project</replaceable></arg>

          <arg choice="plain"><replaceable>fichier source
          AMC</replaceable></arg>
        </cmdsynopsis>

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

          <arg choice="plain">prepare</arg>

          <arg choice="plain">--mode b</arg>

          <arg choice="plain">--data
          <replaceable>répertoire-données-project</replaceable></arg>

          <arg choice="plain"><replaceable>fichier source
          AMC</replaceable></arg>
        </cmdsynopsis>
      </refsynopsisdiv>

      <refsect1>
        <title>Description</title>

        <para>Voir documentation en anglais.</para>
      </refsect1>
    </refentry>
  </sect1>

  <sect1 id="Anonymat">
   <title id="Anonymat.title">Anonymat des copies (uniquement avec LaTeX)</title>
   
  <note><para> En utilisation classique, cette option n'est pas recommandée.</para></note>
  
      <sect2 id="Anonymat.activation">
       <title id="Anonymat.activation.title">Activer le mode anonyme des copies</title>
      		<para><menuchoice>
             <guimenuitem>Préférences</guimenuitem>
             <guimenuitem>Fonctions</guimenuitem>
             <guimenuitem>Anonymisation</guimenuitem>
             <guimenuitem>Afficher le panneau anonymisation</guimenuitem>
             </menuchoice>.</para>
      </sect2>
  
    <sect2 id="Principe">
     <title id="Principe.title">Principe pour la création des fichiers pdf anonymes</title> 
      <itemizedlist>
       <listitem><para>Préparer votre sujet (<xref endterm="gui.prepare.sujet" linkend="gui.prepare"/>).</para></listitem> 
       <listitem><para>Saisir les copies (<xref endterm="gui.capture.saisie" linkend="gui.capture"/>)</para></listitem>
       <listitem><para>Dans l'onglet <guilabel>Notation</guilabel>, un nouveau menu est apparu :
       cliquer sur <guilabel>Anonymiser</guilabel>. </para></listitem>
       <listitem><para><guilabel>Ouvrir</guilabel> pour accéder aux fichier pdf anonymes.</para></listitem>
       <listitem><para>Corriger manuellement certaines questions à partir de ces PDF.</para></listitem>
       <listitem><para>Transmettre à AMC les notes de ces questions via le fichier csv.</para></listitem>
      </itemizedlist>
       
      <warning><para>Ces fichiers ne sont pas modifiables et ne doivent pas être saisis pour une correction
      automatique.</para></warning>
</sect2>
  
    <sect2 id="Commandes.anonymat">
      <title id="Commandes.anonymat.title">Les commandes utilisables avec l'option d'anonymat</title>
  
        <sect3 id="AMCzoneid">
      	  <title id="AMCzoneid.title">AMCzone[id]{}</title>
      	  <para> La commande <command>\AMCzone[id]{code LaTeX}</command> permet de cacher une zone définie.</para>
      	  <para>Par défaut, la zone <command>\champnom</command> sera invisble après l'anonymisation.</para>
      	</sect3>
  
      	<sect3 id="AMCexternatQuestion">
      	  <title id="AMCexternalQuestion.title">AMCexternalQuestion</title>
      	  <para>La commande <command>\AMCexternalQuestion{identifiant à choisir}{score maximal}</command>
      	  permet de déclarer une question qui sera notée hors AMC, avec un score maximal.</para>
      	  <para>Lorsque vous utilisez cette commande, vous pouvez gérer librement le numéro de la question et le texte
      	  de la question (AMC ne s'en chargera pas).</para>
      	  <warning><para>Il est impossible de rajouter cette commande après la préparation complète du sujet.</para></warning>
      	  <para>Lors de l'anonymisation des copies, un fichier csv est créé. Ce fichier devra être rempli avec les notes puis
      	  lu par AMC pour continuer avec la correction (voir <xref endterm="gui.marks.title" linkend="gui.marks"/>).</para>
      	</sect3>
    </sect2>
  </sect1>


  <sect1 id="Divers">
    <title id="Divers.title">Divers</title>

    <sect2 id="Email.Address.module">
    <title id="Email.Address.module.title">Module perl Email::Address</title>
    
      <para>Le module n'est pas installé.</para>

      <itemizedlist>

        <listitem><para>Avec Ubuntu</para>
  <programlisting>sudo apt install libemail-address-perl libemail-mime-perl libemail-sender-perl</programlisting>
        </listitem>

        <listitem><para>Autres</para>
  <programlisting>cpanm install Email::Address</programlisting>
  <para>ou</para>
  <programlisting>
 perl -MCPAN -e "shell"
 install Email::Address
 Exit 
   </programlisting>
        </listitem>

  </itemizedlist>
      </sect2>

    <sect2 id="texlive.vanilla">
    	<title id="texlive.vanilla.title">AMC et TeXLive «vanille» (ubuntu et debian)</title>

    	<sect3 id="fresh.install">
    		<title id="fresh.install.title">AMC et TeXLive ne sont pas installés</title>
    	<itemizedlist>
    		<listitem>
    			<para>Téléchargez TeXLive en ligne.</para>
    		</listitem>
    	</itemizedlist>

<programlisting>
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar -xzf install-tl-unx.tar.gz
cd install-tl-20xx
</programlisting>

	<note><para>Remplacez xx par les chiffres ou appuyez sur la touche TABULATION.</para></note>

    	<itemizedlist>
    		<listitem>
    			<para>Installez TeXLive.</para>
<programlisting>
sudo ./install-tl
</programlisting>
    		</listitem>


    		<listitem>
    			<para>Tapez <code>O</code> puis <code>L</code> puis
    			tapez 3 fois sur <code>Entrée</code> sans compléter les chemins
    			puis tapez <code>R</code> puis <code>I</code>.</para>
    		</listitem>
    	</itemizedlist>
	
<note><para>Par défaut, tout est installé. Si vous ne voulez pas tous les paquets, appuyez sur
 <code>C</code> puis  sélectionnez vos paquets puis <code>R</code> puis <code>I</code>.</para></note>

    	<itemizedlist>
    		<listitem>
    			<para>Installez les faux paquets</para>
    		</listitem>
    	</itemizedlist>

<programlisting>
sudo apt install equivs --no-install-recommends
mkdir -p /tmp/tl-equivs &amp;&amp; cd /tmp/tl-equivs
wget -O texlive-local https://www.tug.org/texlive/files/debian-equivs-20xx-ex.txt
</programlisting>

<note>
<para>Si le dernier téléchargement n'est pas possible, il faut le faire manuellement sur le site ci-dessous
 puis le copier dans le dossier <code>/tmp/tl-equivs</code> en le renommant <code>texlive-local</code>.</para>
<para><ulink url="https://github.com/ascherer/tl-equivs"/></para>

<para>Autre solution, télécharger le paquet l'année précédente (ici, 2023) en le changeant l'année  (2024) dans le fichier.</para>
<programlisting>wget -O texlive-local https://www.tug.org/texlive/files/debian-equivs-2023-ex.txt</programlisting>
<para><parameter>Version: 2023.99999999-1</parameter> en <parameter>Version: 2024.99999999-1</parameter></para>
 </note>

    	<itemizedlist>
    		<listitem>
    			<para>Création et installation du paquet</para>
    		</listitem>
    	</itemizedlist>

<programlisting>
equivs-build texlive-local
sudo dpkg -i texlive-local_20xx-x_all.deb
sudo apt install -f
</programlisting>

    	<itemizedlist>
    		<listitem>
    			<para>Installez AMC.</para>
    		</listitem>
    	</itemizedlist>
<programlisting>
sudo add-apt-repository ppa:alexis.bienvenue/stable &amp;&amp; sudo apt-get update
sudo apt-get install auto-multiple-choice &amp;&amp; sudo apt-get install msmtp
</programlisting>

    	<itemizedlist>
    		<listitem>
    			<para>Créez un lien symbolique et mettez à jour TeXLive.</para>
    		</listitem>
    	</itemizedlist>
<programlisting>
sudo ln -s /usr/share/texmf/tex/latex/AMC /usr/local/texlive/texmf-local/tex/latex/AMC
sudo mktexlsr
sudo tlmgr update --self --all
</programlisting>
    </sect3>

	<sect3 id="texlive.installed">
		<title id="texlive.installed.title">AMC et TeXLive sont installés (/usr/local/)</title>
		<itemizedlist>
  
    		<listitem>
    			<para>Créez un lien symbolique.</para>
    		</listitem>
    	</itemizedlist>

<programlisting>
sudo ln -s /usr/share/texmf/tex/latex/AMC /usr/local/texlive/texmf-local/tex/latex/AMC
sudo mktexlsr
</programlisting>
	</sect3>
 </sect2>

    <sect2 id="Decouper.sujet">
    	<title id="Decouper.sujet.title">Découper le fichier <filename>DOC-sujet.pdf</filename>
    	en plusieurs fichiers</title>
    	<para>
		<menuchoice>
          <guimenuitem>Préférences</guimenuitem>
          <guimenuitem>Général</guimenuitem>
          <guimenuitem>Impression</guimenuitem>
          <guimenuitem>Méthode d'impression</guimenuitem>
          <guimenuitem>dans des fichiers</guimenuitem>
        </menuchoice></para>


    		<para><menuchoice>
             <guimenuitem>Préférences</guimenuitem>
             <guimenuitem>Général</guimenuitem>
             <guimenuitem>Impression</guimenuitem>
             <guimenuitem>Méthode d'extraction</guimenuitem>
             <guisubmenu>pdftk / gs (ghostscipt) / qpdf (défaut) / sejda-console (non installé)</guisubmenu>
             </menuchoice>.</para>
    </sect2>

    <sect2 id="A5">
    <title id="A5.title">Mise en page</title>
      <sect3 id="A3">
      <title id="A3.title">4 pages A4 en 1 A3 recto/verso</title>
<programlisting>pdfjam --booklet 'false' --landscape --a3paper --outfile DOC-sujet-A3.pdf --signature '4' DOC-sujet.pdf
</programlisting>
      </sect3>
      
      <sect3>
    	<title>Traitement de 2 pages sur 1 feuille (2 A5 sur 1 A4)</title>
    	<para>Vous pouvez imprimer le fichier <filename>DOC-sujet.pdf</filename> en 2 pages
    	sur 1 feuille avec n'importe quel lecteur pdf mais AMC ne pourra pas traiter le fichier
    	numérisé, vous devez le <quote>découper</quote>.</para>

    	<itemizedlist>
    		<listitem>
    			<para>Convertissez le fichier pdf en images.</para>
    		<programlisting>pdfimages votrefichierreponses.pdf unnomdefichier</programlisting>
    		</listitem>

    		<listitem>
    			<para><quote>Coupez</quote> chaque image en deux.</para>
    		<programlisting>mogrify -rotate -90 -crop 50%x100% *.pbm</programlisting>

    			<note>
    				<para>Inutile de faire après la commande précédente :
    				<programlisting>mogrify -rotate +90 -crop 50%x100% *.pbm</programlisting>
    				<emphasis>toutes</emphasis> les pages seront traitées et renommées automatiquement
    				par ImageMagick.</para>
    				<para>Si les cases ne sont pas assez foncées ou mal détéctées, vous pouvez choisir un
    					seuil pour lequel ImageMagick convertira les cases en noires (ici 80%).
    					<programlisting>mogrify -rotate -90 -crop 50%x100% -threshold 80% *.pbm</programlisting>
    			</para>
    			</note>
    		</listitem>

    		<listitem>
    			<para>Lancez le traitement en sélectionnant les fichiers <filename>pbm</filename>.</para>
    		</listitem>
		</itemizedlist>
    </sect3>
    </sect2>

    <sect2 id="pythontex">
      <title>pythontex</title>
      <para>Issu de <ulink url="https://project.auto-multiple-choice.net/attachments/450/Wiki_AMC_et_PythonTex.pdf"/> et <ulink url="https://project.auto-multiple-choice.net/projects/auto-multiple-choice/wiki/Calcul_formel_avec_Python_dans_AMC"/></para>


 		<itemizedlist>
 		<listitem><para>Il faut ajouter un script nommé prePythonTex4AMC et le <emphasis>rendre exécutable</emphasis>.</para></listitem>
 		</itemizedlist>

<programlisting>
#! /bin/sh
SRC=$1
echo "***** JOBNAME=$AMC_JOBNAME"
echo "***** CMD=$AMC_CMD"
rm -rf ./pythontex-files-*
rm -f $AMC_JOBNAME.pytxcode
$AMC_CMD
echo "***** PYTHON"
python /chemin/absolu/vers/fichier/pythontex.py $AMC_JOBNAME.pytxcode
echo "***** END FILTER"
</programlisting>


<note>
<para>python3 fonctionne aussi.</para>
<programlisting>
python3 /chemin/vers/fichier/pythontex3.py
</programlisting>
</note>

 		<itemizedlist>
 		<listitem><para>Il faut ajouter au début du fichier LaTex les trois lignes suivantes.</para></listitem>
 		</itemizedlist>

<programlisting>
%%AMC:preprocess_command=/chemin/absolu/vers/fichier/prePythonTex4AMC
%%AMC:jobspecific=1
%%AMC:latex_engine=pdflatex --shell-escape
</programlisting>

	<warning>
		<para>Certains modules python doivent être installés (sympy, pygments)</para>
	</warning>

	<sect3 id="pythontex.exemple">
		<title>Un exemple avec python (issu de José OUIN : <ulink url="http://www.joseouin.fr"/> et Gloria FACCANONI)</title>

<para><!--NAME: Un exemple avec python
	DESC: Utilisation de pythontex-->
	<programlisting>
%%AMC:preprocess_command=/chemin/vers/fichier/prePythonTex4AMC
%%AMC:jobspecific=1
%%AMC:latex_engine=pdflatex --shell-escape

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}

\usepackage[francais,bloc,completemulti]{automultiplechoice}
\usepackage{fancyhdr,amssymb,amsmath}

% ---------- Utilisation de codes Python -----
\usepackage{pythontex}
%----------------------------------------------

\begin{pycode}
import numpy as np
from sympy import *

np.random.seed(12345)
# IMPORTANT : Graine pour la fonction random

def polyv2(b,p,d,q) :
	x=Symbol('x')
	myp = expand((x-b)**p*(x-d)**q)
	return latex(myp)

def dp1x(a,b,c) :
    x=Symbol('x')
    y=Symbol('y')
    f=(a*y-1)/(b*x-1)**c

    g=diff(f,x,1)
    g2=g/b
    g3=g*(-1)
    g4=g2*(-1)

    gl = latex(g)
    g2l = latex(g2)
    g3l = latex(g3)
    g4l = latex(g4)

    return np.array([gl,g2l,g3l,g4l])

\end{pycode}

\begin{document}

\element{Questions}{%
\begin{question}{QA}La valeur de $\pi$ est
\begin{reponses}
\bonne{\py{np.pi}}
\mauvaise{\py{100+200}}
\mauvaise{\py{np.random.randint(10)+3.15}}
\end{reponses}
\end{question}

\begin{question}{QB}
\pyc{a=np.random.randint(10)}
\pyc{b=np.random.randint(10)}
\pyc{z=np.complex(a,b)}
Soit le nombre complexe $\underline{Z}=\py{a}+i.\py{b}$, quelle est la valeur de
 $\underline{Z}^2$~?
\begin{reponses}
\bonne{\py{z**2}}
\mauvaise{\py{np.conj(z**2)}}
\mauvaise{\py{1/z}}
\end{reponses}
\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 Devoir surveillé\\ Mathématiques \end{minipage}
\champnom{\fbox{
                \begin{minipage}{.5\linewidth}
                  Nom et prénom :

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

	\vspace*{3mm}
	{\setlength{\parindent}{0pt}\AMCcodeGridInt{etu}{3}\hspace*{\fill}
	\begin{minipage}[b]{12.8cm} %12cm

%----------------------------------------

	 \hfill\champnom{\fbox{
	 \begin{minipage}{0.96\linewidth}
		\vspace*{3mm} %3mm

		$\leftarrow$ {\footnotesize  Codez votre QCM-Number.\hspace{1.6ex}} || NOM :

		{\footnotesize  ( centaines, dizaines et unités )\hspace{2.19ex}} || Prénom :

		{\footnotesize  Complétez le cadre ci-contre} $\rightarrow$ \hspace{0.2ex} || Groupe :

		\vspace*{3mm}
	 \end{minipage}
	    }
	   }
	\hfill
%-------------------------------------

\begin{center}\em

Les questions faisant apparaître le symbole \multiSymbole{} présentent  plusieurs bonnes réponses.
Les autres ont une unique bonne réponse. L'indiquer sur cette feuille en noircissant la case correspondante au stylo à bille noir. Aucune justification n'est demandée.
Les réponses fausses retirent la moitié des points. Une absence de réponse n'enlève pas de points.
Pour rectifier une erreur, utilisez un correcteur "blanc" pour faire disparaître complètement la case noircie par erreur.	Calculatrice autorisée.

\end{center}

	\end{minipage}\hspace*{\fill}
	}

\vspace{5ex}

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

\begin{question}{deriv-px-1}

			\pyc{a=np.random.randint(2,7)} %
			\pyc{b=np.random.randint(2,5)} %
			\pyc{c=np.random.randint(2,5)} %
			\pyc{drvx=dp1x(a,b,c)}

On donne la fonction suivante : $f(x,y)= \dfrac{\py{a} y-1}{(\py{b} x-1)^{\py{c}}}$

Quelle est la dérivée partielle $ \dfrac{\partial f(x,y)}{\partial x}$ ?

\begin{reponseshoriz}
\bonne{$\py{drvx[0]}$}
\mauvaise{$\py{drvx[1]}$}
\mauvaise{$\py{drvx[2]}$}
\mauvaise{$\py{drvx[3]}$}
\end{reponseshoriz}

\end{question}
%---------------
% POLYNOME
%--------------

\begin{question}{polynome-v2}

			\pyc{b=np.random.randint(2,7)} % racine r = b
			\pyc{p=np.random.randint(2,4)} % p : ordre de mult de b
			\pyc{d=np.random.randint(2,5)} % racine r = d
			\pyc{q=np.random.randint(2,3)}	% q : ordre de mult de d
			\pyc{mypoly=polyv2(b,p,d,q)}		% construction de mypolyv2

On donne le polynôme suivant : $\py{mypoly}$

Quel est l'ordre de multiplicité de la racine $r = \py{b}$ ?

\begin{reponseshoriz}
\bonne{$\py{p}$}
\mauvaise{$\py{p+1}$}
\mauvaise{$\py{p-1}$}
\mauvaise{$\py{p+2}$}
\end{reponseshoriz}

\end{question}

\restituegroupe{Questions}

\pyc{ok = 42}
\pyc{nbch = len(str(abs(ok)))}
\begin{questionmultx}{maquestion}
The Ultimate Question of Life, the Universe and Everything

\pys{
 \AMCnumericChoices{!{ok}}{digits=!{nbch}, decimals=0,sign=true,scoreexact=1,scorewrong=-0.25,vspace=0em,hspace=2em,borderwidth=0pt}
}
\end{questionmultx}

\pyc{z = 42}
\begin{question}{ouverte}
The Ultimate Question of Life, the Universe and Everything
\pys{
  \AMCOpen{lines=0,framerule=1pt,dots=false,annotate=true, answer={!{z}}}
  {\correctchoice{$B$}\scoring{1}\wrongchoice{$M$}\scoring{-0.25}}
}
\end{question}

}

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

    </sect2>

    <sect2 id="moodle">
    	<title>AMC et moodle</title>
    	<para><ulink url="https://github.com/nennigb/amc2moodle"/></para>
    </sect2>

    <sect2 id="divers.gmail">
      <title>Paramétrer AMC pour l'utilisation de GMAIL</title>

      <para>Connectez-vous sur votre compte GMAIL puis activez l'option :
      autoriser les applications non sécurisées.</para>

      <sect3 id="gmail.linux.users">
        <title>Utilisateurs linux (Ubuntu, Xubuntu, Lubuntu etc.)</title>

        <para>Tapez dans un terminal :</para>

        <programlisting>sudo apt-get install msmtp</programlisting>

        <programlisting>sudo gedit /etc/msmtprc</programlisting>

        <para>et copiez le texte suivant puis enregistrez le fichier.</para>

        <programlisting>
account gmail
host smtp.gmail.com
tls on
tls_certcheck off
port 587
auth login
from <emphasis>votre adresse mail du compte gmail</emphasis>
user <emphasis>votre adresse mail du compte gmail</emphasis>
password <emphasis>Voir ci-dessous</emphasis>
</programlisting>

<warning><para>Depuis le 30 mai 2022, ​​Google ne prends plus en charge
l'utilisation d'applications ou d'appareils tiers qui vous demandent uniquement
votre nom d'utilisateur et votre mot de passe pour vous connecter à votre compte Google.</para>

<itemizedlist>
<listitem><para>Activez la validation en deux étapes.</para></listitem>
<listitem><para>Créez un mot de passe <ulink url="https://devanswers.co/create-application-specific-password-gmail/">
https://devanswers.co/create-application-specific-password-gmail/</ulink>.</para></listitem>
<listitem><para>Remplacez votre mot de passe par le nouveau.</para></listitem>
</itemizedlist>
</warning>

        <para>Dans les préférences de AMC : <menuchoice>
            <guimenu>Edition</guimenu>

            <guisubmenu>Préférences</guisubmenu>

            <guisubmenu>Courriel</guisubmenu>

            <guimenuitem>Méthode d'envoi</guimenuitem>
          </menuchoice>, choisir <guibutton>sendmail</guibutton> et mettre le
        chemin : <programlisting>/usr/bin/msmtp</programlisting></para>
      </sect3>

      <sect3 id="Macintosh.users">
        <title>Utilisateurs Macintosh</title>

        <para>Tapez dans un terminal :</para>

        <programlisting>sudo port install msmtp</programlisting>

        <programlisting>sudo pico ~/.msmtprc</programlisting>

        <para>et copiez le texte suivant puis enregistrez le fichier.</para>

        <programlisting>
account default
host smtp.gmail.com
tls on
tls_certcheck off
port 587
auth login
from <emphasis>votre adresse mail du compte gmail</emphasis>
user <emphasis>votre adresse mail du compte gmail</emphasis>
password <emphasis>Voir ci-dessous</emphasis>
</programlisting>

<warning><para>Depuis le 30 mai 2022, ​​Google ne prends plus en charge
l'utilisation d'applications ou d'appareils tiers qui vous demandent uniquement
votre nom d'utilisateur et votre mot de passe pour vous connecter à votre compte Google.</para>

<itemizedlist>
<listitem><para>Activez la validation en deux étapes.</para></listitem>
<listitem><para>Créez un mot de passe <ulink url="https://devanswers.co/create-application-specific-password-gmail/">
https://devanswers.co/create-application-specific-password-gmail/</ulink>.</para></listitem>
<listitem><para>Remplacez votre mot de passe par le nouveau.</para></listitem>
</itemizedlist>
</warning>

        <para>Modifiez les droits d'accès :</para>

        <programlisting>
sudo chown <emphasis>nom_utilisateur</emphasis>:<emphasis>nom_utilisateur</emphasis>/Users/<emphasis>nom_utilisateur</emphasis>/.msmtprc
chmod 0600 /Users/<emphasis>nom_utilisateur</emphasis>/.msmtprc
  </programlisting>

        <para>Dans les préférences de AMC : <menuchoice>
            <guimenu>Edition</guimenu>

            <guisubmenu>Préférences</guisubmenu>

            <guisubmenu>Courriel</guisubmenu>

            <guimenuitem>Méthode d'envoi</guimenuitem>
          </menuchoice>, choisir <guibutton>sendmail</guibutton> et mettre le
        chemin : <programlisting>/opt/local/bin/msmtp</programlisting></para>
       </sect3>
    </sect2>

    <sect2 id="Texmaker">
      <title id="Personnaliser.Texmaker.pour.AMC">Personnaliser Texmaker pour
      AMC</title>

      <para>Si vous utilisez Texmaker, vous pouvez ajouter les raccourcis des
      environnements question et réponses en allant dans le Menu <menuchoice>
          <guimenuitem>Utilisateur</guimenuitem>

          <guimenuitem>Personnaliser complétion</guimenuitem>
        </menuchoice> puis entrez <code>\begin{question}{}</code> puis cliquez
      sur ajouter. Faites de même avec <command>reponses</command> et
      <command>reponseshoriz</command>.</para>
    </sect2>

    <sect2 id="divers.fp">
      <title>Le paquet <command>fp</command> par l'exemple</title>

      <para>La documentation du paquet <command>fp</command> n'est pas très
      détaillée et compréhensible pour un grand débutant au langage latex.
      Voici les commandes expliquées par un exemple.</para>

      <itemizedlist>
        <listitem>
          <para>La commande <code>\FPprint{\x}</code> permet d'afficher la
          valeur de x. Cependant, la commande <code>\num{...}</code> du paquet
          <code>siunitx</code> est préférable car elle affiche une virgule
          pour les nombres décimaux au lieu d'un point et groupe par trois les
          chiffres.</para>

          <programlisting>\usepackage{siunitx}
\sisetup{locale = FR}
</programlisting>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPrandom{\x}</code> calcule un nombre
          aléatoire.</para>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPseed=12345</code> permet de modifier le
          système de génération de nombre aléatoire (choisir un entier fixé à
          sa convenance).</para>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPeval{\x}{...}</code> permet de faire des
          calculs et d’affecter le résultat à la variable
          <code>\x</code>.</para>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPtrunc{\y}{\x}{a}</code> transfère le
          nombre \x avec a chiffres après la virgule à la variable
          <code>\y</code>.</para>

          <note>
            <para>On peut cumuler les fonctions <code>\FPeval</code> (avec
            toutes les fonctions de calcul) et <code>\FPtrunc</code>, comme
            dans l'exemple suivant qui choisit un réel au hasard entre
            <code>a</code> et <code>a+b</code>, en gardant <code>c</code>
            chiffres après la virgule :</para>

            <programlisting>\FPeval{\x}{trunc(a+random*b,c)}          </programlisting>
          </note>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPround{\y}{\x}{a}</code> transfère le
          nombre <code>\x</code> avec a chiffres après la virgule à la
          variable \y et arrondit.</para>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPclip{\y}{\x}</code> transfère le nombre
          <code>\x</code>, sans les zéros après la virgule, à la variable
          <code>\y</code>.</para>
        </listitem>

        <listitem>
          <para>Les fonctions <code>\FPadd{\x}{a}{b}</code>,
          <code>\FPdiv{\x}{a}{b}</code>, <code>\FPmul{\x}{a}{b}</code>,
          <code>\FPsub{\x}{a}{b}</code> attribuent à la variable <code>\x</code>
          la somme <code>a+b</code>, le quotient <code>a/b</code>, le produit
          <code>a*b</code>, et la différence <code>a-b</code></para>
        </listitem>

        <listitem>
          <para>La fonction <code>\FPset{\x}{\y}</code> attribue à la variable
          <code>\x</code> (macro ou chaîne) la valeur <code>\y</code></para>
        </listitem>

        <listitem>
          <para><code>\FPabs{\x}{a}</code> renvoie la valeur absolue de
          <code>a</code>, \FPneg{\y}{a} renvoie l'opposé de
          <code>a</code></para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPiflt{\x}{\y} {instruction 1} \else
          {instruction 2} \fi</code> vérifie si <code>\x</code> est inférieur
          à <code>\y</code> dans ce cas l'instruction 1 est lancée sinon c'est
          l'instruction 2.</para>

          <para>Même principe les fonctions <code>\FPifeq{\x}{\y}</code>,
          <code>\FPifgt{\x}{\y}</code>, <code>\FPifneg{\x}</code>,
          <code>\FPifpos{\x}</code>, <code>\FPifzero{\x}</code>,
          <code>\FPifint{\x}</code> qui sont respctivement des tests
          d'égalité, de supériorité, de négativité, de positivité, de nullité
          ou d'entier.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPlsolve{\x}{a}{b}</code> cherche la valeur
          réelle <code>\x</code> pour résoudre l'équation</para>
          <programlisting>a*x+b=0.</programlisting>

          <para>La commande <code>\FPqsolve{\x}{\y}{a}{b}{c}</code> cherche
          les valeurs réelles <code>\x</code> et <code>\y</code> pour résoudre
          l'équation <programlisting>a*x^2+b*x+c=0</programlisting></para>

          <para>La commande <code>\FPcsolve{\x}{\y}{\z}{a}{b}{c}{d}</code>
          cherche les valeurs réelles <code>\x</code>, <code>\y</code> et
          <code>\z</code> pour résoudre l'équation<programlisting>a*x^3+b*x^2+c*x+d=0</programlisting></para>

          <para>La commande
          <code>\FPqqsolve{\w}{\x}{\y}{\z}{a}{b}{c}{d}{e}</code> cherche les
          valeurs réelles <code>\w</code>, <code>\x</code>, <code>\y</code> et
          <code>\z</code> pour résoudre l'équation <programlisting>a*x^4+b*x^3+c*x^2+d*x+e=0</programlisting></para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPe</code> renvoie la valeur de
          e=2.71828182845904523, la commande <code>\FPpi</code> renvoie la
          valeur de pi.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPexp{\x}{a}</code> attribue à la variable
          <code>\x</code> la valeur e^a, la commande <code>\FPln{\x}{a}</code>
          attribue à la variable <code>\x</code> la valeur ln(a)</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPpow{\x}{a}{b}</code> attribue à la
          variable <code>\x</code> la valeur a^b</para><para>La commande
          <code>\FProot{\x}{a}{b}</code> attribue à la variable
          <code>\x</code> la valeur a^(1/b).</para>

          <para>On peut écrire <code>\FPeval{\x}{root(b,a)}</code></para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPpascal{\x}{a}</code> attribe à
          <code>\x</code> la ligne a du triangle de pascal.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPsin{\x}{a}</code> attribue à
          <code>\x</code> la valeur du sinus de a qui est exprimé en radians
          (il existe une commande identique pour le cosinus
          (<code>cos</code>), la tangente (<code>tan</code>), la cotangente
          (<code>cot</code>), l'arcsinus (<code>arcsin</code>), l'arccosinus
          (<code>arccos</code>), l'arctangente (<code>arctan</code>),
          l'arccotangente (<code>arccot</code>)).</para>

          <programlisting>\FPeval{\x}{sin(30*\FPpi/180)}\FPprint{\x}</programlisting>
        </listitem>

        <listitem>
          <para>La commande <code>\FPsincos{\x}{\y}{a}</code> attribue à
          <code>\x</code> la valeur du sinus de <code>a</code> qui est exprimé
          en radians et <code>\y</code> la valeur du cosinus de <code>a</code>
          qui est exprimé en radians.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FPtancot{\x}{\y}{a}</code> attribue à
          <code>\x</code> la valeur de la tangente de <code>a</code> qui est
          exprimé en radians et <code>\y</code> la valeur de la cotangente de
          <code>a</code>.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FParcsincos{\x}{\y}{a}</code> attribue à
          <code>\x</code> la valeur de l’arc sinus(a), <code>\x</code> sera
          exprimé en radians, à <code>\y</code> la valeur de l’arc cosinus(a),
          <code>\y</code> sera exprimé en radians.</para>
        </listitem>

        <listitem>
          <para>La commande <code>\FParctancot{\x}{\y}{a}</code> attribue à
          <code>\x</code> la valeur de l’arc tangente(a), <code>\x</code> sera
          exprimé en radians, à <code>\y</code> la valeur de l’arc
          cotangente(a), <code>\y</code> sera exprimé en radians.</para>
        </listitem>
      </itemizedlist>
    </sect2>
  </sect1>
</article>
