Source au format LaTeX
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.
Un questionnaire à choix multiples peut être décrit sous la forme d’un
fichier LaTeX utilisant le package automultiplechoice. Vous pouvez à
tout moment tester le fichier LaTeX que vous êtes en train de concevoir
en le compilant avec la commande latex
puis en visualisant le fichier
dvi qui en résulte.
Nous commençons par quelques exemples qui permettent d’appréhender rapidement la construction de fichiers LaTeX de QCM ; les fichiers tex de ces exemples sont fournis avec AMC sous la forme de modèles utilisables en créant un nouveau projet de QCM à partir d’un de ces modèles.
Vous trouverez également des modèles de fichiers source au format LaTeX sur le site francophone des modèles AMC. |
Un exemple simple
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti]{automultiplechoice}
\begin{document}
\exemplaire{10}{
%%% debut de l'en-tête des copies :
\noindent{\bf QCM \hfill TEST}
\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
\centering\large\bf Test\\ Examen du 01/01/2008\end{minipage}
\champnom{\fbox{
\begin{minipage}{.5\linewidth}
Nom et prénom :
\vspace*{.5cm}\namefielddots
\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}
}
\end{document}
Quelques précisions sur cet exemple :
-
Les deux paquets inputenc et fontenc permettent d’écrire le texte du questionnaire en utilisant l’encodage ISO-8859-1 (latin1). Vous pouvez bien entendu les modifier suivant l’encodage que vous utilisez.
-
Les options utilisées ici pour le paquet LaTeX automultiplechoice permettent d’éviter le changement de page à l’intérieur des questions (
bloc
) et de compléter automatiquement chaque question multiple par une réponse type permettant à l’étudiant d’indiquer qu’il considère qu’aucune des réponses proposées n’est exacte (completemulti
). -
La commande
exemplaire
permet de fabriquer autant d’exemplaires (différents) du questionnaire QCM que l’on souhaite (ici, 10). Voir Description d’une copie pour une syntaxe alternative utilisant un environnement. -
Les lignes qui commencent ici permettent la mise en forme de l’en-tête de chaque copie.
-
La commande
champnom
permet d’indiquer la partie du questionnaire dans laquelle chaque étudiant inscrira son nom ou un code barre (voir Avec un code barre). -
La commande
namefielddots
insère une ligne pointillée ou un champ à remplir si vous utilisez l’optionpdfform
(voir Options du paquet). -
Les environnements
question
etreponses
permettent de fabriquer une question à choix multiples pour laquelle une unique réponse est correcte. Il faut indiquer un identifiant unique de la question (ici : prez). -
Les environnements
questionmult
etreponses
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’optioncompletemulti
passée au paquet en ligne 6). -
Si vous décommentez cette ligne, AMC ajoutera des pages blanches pour atteindre trois pages de sujet (voir Nombre de pages).
-
Cette fermeture d’accolade marque la fin de la commande
exemplaire
(débutée à la ligne 9).
Un exemple avec groupes de questions mélangées
Dans cet exemple, on veut que l’ordre dans lequel les questions sont posées soit différent d’une copie à l’autre, tout en laissant ensemble les questions traitant du même sujet. On va donc créer deux groupes de questions, et les mélanger lors de la fabrication de chaque copie.
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti]{automultiplechoice}
\begin{document}
%%% préparation des groupes
\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}
Un exemple avec une feuille de réponses séparée
Dans cet exemple, on souhaite que les cases à cocher soient toutes rassemblées sur une feuille à part. De cette manière, la triche entre étudiants est plus difficile, et surtout, il suffira de scanner une seule page par étudiant, ce qui allège la tâche de l’enseignant dans le cas où son matériel ne lui permet de scanner les copies que de manière manuelle. Dans cet exemple, le nombre de questions est réduit : elles tiennent toutes sur une page et il serait donc inutile d’utiliser une telle mise en page dans ce cas précis. À vous de modifier cette base pour utiliser cette mise en page avec de nombreuses questions !
\documentclass[a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti,ensemble]{automultiplechoice}
\begin{document}
\AMCrandomseed{1237893}
\def\AMCformQuestion#1{{\sc Question #1 :}}
\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
% \AMCaddpagesto{3}
\AMCdebutFormulaire
%%% début de l'en-tête de la feuille de réponses
{\large\bf Feuille de réponses :}
\hfill \champnom{\fbox{
\begin{minipage}{.5\linewidth}
Nom et prénom :
\vspace*{.5cm}\namefielddots
\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
% \AMCaddpagesto{5}
}
\end{document}
Les remarques suivantes devraient éclaircir cet exemple :
-
C’est l’option
ensemble
qui permet de faire ce que l’on veut faire ici. -
On peut redéfinir de cette manière la façon dont les questions seront identifiées sur la page des réponses (cette ligne est facultative).
-
Ce saut de page précède la page spéciale où seront regroupées toutes les cases à cocher. Si on imprime en recto-verso, il vaut mieux utiliser
\AMCcleardoublepage
pour que la page de formulaire soit sur une feuille séparée des autres. Si on imprime en recto simple, on peut utiliser simplement\clearpage
. -
En décommentant cette ligne, AMC ajoutera des pages blanches à la partie sujet afin d’atteindre trois pages (voir Nombre de pages).
-
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
AMCcodeGrid
. -
La case où écrire son nom doit normalement être située sur la page des réponses !
-
La commande
namefielddots
insère une ligne pointillée ou un champ à remplir si vous utilisez l’optionpdfform
(voir Options du paquet). -
C’est la commande LaTeX
formulaire
qui écrit toutes les cases à cocher. -
En décommentant cette ligne, AMC ajoutera les pages blanches nécessaires afin d’atteindre cinq pages au total (sujet+formulaire), voir Nombre de pages.
Quand on utilise une page de réponses séparée, des lettres (ou des
chiffres, avec l’utilisation de l’option |
\AMCtableform
\AMCtableform[options]
est une
variante de
\formulaire
(\AMCform
en anglais) qui affiche les
cases dans un tableau multicolonnes. Déclarez le paquet
\usepackage{multicols}
dans le préambule.
- nanswers=<num>
-
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).
- ncols=<num>
-
donne le nombre de colonnes à afficher dans le tableau (par défaut le plus grand nombre possible de colonnes).
- idtext=<texte>
-
insère un texte avant chaque numéro de question.
- idtitle=<texte>
-
insère un texte à chaque colonne.
- headers=<bool>
-
affiche (
true
par défaut) ou non les cases en en-tête avec les lettres (ou chiffres) de chaque colonne. - inside=<bool>
-
affiche (
false
par défaut) ou non les lettres (ou chiffres) dans chaque case. - columnsep=<dim>; columnseprul=<dim>
-
les arguments du paquet
multicols
.
Description des commandes LaTeX
Options du paquet
L’utilisation du paquet automultiplechoice se fait grâce à la ligne
\usepackage[...]{automultiplechoice}
où les pointillés sont remplacés par une liste d’options séparées par des virgules. Les options disponibles sont les suivantes :
-
francais
: indique que le sujet d’examen est en français. Les quelques mentions éventuellement ajoutées par automultiplechoice seront alors écrites en français (on peut en particulier penser à la phrase « aucune de ces réponses n’est correcte », voir optioncompletemulti
plus loin). -
lang=XX
: indique que le sujet est dans la langue <XX>. Pour le moment, seules les langues FR (français), DE (allemand), ES (espagnol), IT (Italien), JA (Japonais), NL (Néerlandais), NO (Norvégien) et PT (Portugais) sont disponibles. -
pdfform
: permet de créer un formulaire, remplissable via les lecteurs de fichiers pdf. -
bloc
: place chaque question dans un bloc, de telle sorte qu’elle ne puisse pas être coupée par un saut de page.Vous pouvez, ponctuellement, pour une meilleure mise en page, annuler, pour une question, cette option avec la commande
\AMCnobloc
.{\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}% }%
-
asbox
: même effet quebloc
, mais pour la feuille de réponses séparée. -
completemulti
: ajoute de manière automatique une réponse type « aucune de ces réponses n’est correcte » à la fin de chaque question multiple. Ceci permet de différencier, pour ces questions, une absence de réponse et la réponse qui consiste à ne choisir aucune des réponses proposées. Que cette option soit utilisée ou non, on peut demander l’ajout de cette dernière réponse ou l’annuler pour une question particulière en utilisant une des commandes\AMCcompleteMulti
et\AMCnoCompleteMulti
à l’intérieur de l’environnementquestionmult
correspondant. -
ordre
: annule le mélange automatique de l’ordre des réponses dans toutes les questions. -
noshufflegroups
: annule le mélange automatique de l’ordre des groupes. (voir Groupes de questions) -
correc
: produit la correction du QCM, et non le sujet. -
correcindiv
: produit la correction de tous les sujets. -
ensemble
: demande à ce que les cases à cocher soient toutes rassemblées en fin de copie (cette option est en général utilisée quand on ne veut scanner qu’une seule page par étudiant - voir Un exemple avec une feuille de réponses séparée). -
chiffres
: si on utilise l’optionensemble
, l’optionchiffres
demande d’identifier les questions avec des chiffres plutôt qu’avec des lettres (ce qui est le comportement par défaut). -
outsidebox
: si on utilise l’optionensemble
, 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. -
init
: initialise le générateur aléatoire à partir de l’horloge. Option pour test : ne pas utiliser pour un examen ! -
insidebox
: si on n’utilise pas l’optionensemble
, cette option permet d’inscrire des lettres (ou chiffres) à l’intérieur des cases à cocher (ce n’est pas le cas par défaut). -
catalog
: option utilisée pour présenter les questions sous forme d’un catalogue dans lequel on piochera pour constituer un examen. Les questions ne sont pas identifiées par des numéros mais par leur nom. En général, on n’utilise pas la commande\exemplaire
pour cette présentation. -
keys=line
: option utilisée pour présenter le nom des questions sur une ligne avec l’option catalog. -
postcorrect
: option utilisée si on souhaite indiquer les bonnes réponses après l’examen, grâce à une copie remplie par l’enseignant - voir Correction a posteriori. -
fullgroups
: annule le paramètre optionnel de\restituegroup
et\copygroup
, ainsi chaque groupe est entièrement inséré et copié (voir Groupes de questions). -
storebox
: Si vous choisissez de modifier la forme des cases à cocher (carrées par défaut voir Style des cases à cocher) par des ovales ou des cercles, vous pouvez transmettre cette option à automultiplechoice pour qu’il utilise\storebox
plutôt que\savebox
pour stocker le dessin des cases. -
automarks
: en modeensemble
, utilisez cette option si vous voulez que les marques de calage ne soient pas imprimées sur les pages de sujet, mais uniquement sur les pages de réponse. Vous pouvez alors personnaliser la façon d’imprimer les numéros de page sur le sujet en redéfinissant la commande\AMCsubjectPageTag
:\renewcommand\AMCsubjectPageTag{% \fbox{\texttt{\the\AMCid@etud:\thepage}}% }
L’option
automarks
ne doit pas être utilisée dans le cas ou une quelconque information doit être collectée depuis les pages de sujet, car AMC ne pourra pas traiter ces pages. -
nopage
: 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. -
nowatermark
: retire le filigrane (projet) si vous compilez hors AMC. Très dangereux. -
survey
: pour créer des sondages avec une mise en page de haute qualité https://gitlab.com/CSaalbach/surveyamc-project/-/blob/master/surveyamc_tutorial.pdf.
Description d’une copie
Le code LaTeX décrivant le contenu de chaque copie doit être inclus dans
un appel à la commande \exemplaire
, avec pour premier argument le
nombre de copies et pour deuxième argument le code utilisé pour générer
une copie.
\exemplaire{50}{ ... }
Vous disposez d’une syntaxe alternative utilisant l’environnement
copieexamen
, qui a en option le nombre de copies désiré (5 par
défaut).
\begin{copieexamen}[50]
...
\end{copieexamen}
Cette dernière syntaxe utilise le paquet environ. |
Pour différencier les copies, la commande \exemplairepair
peut être
utile. À utiliser sous la forme d’un test de condition.
Le numéro de la copie peut être obtenu par la commande
\AMCStudentNumber
.
Questions et réponses
Il ne faut pas imbriquer une question dans un environnement question ou tabularx sinon l’export des notes sera incomplet (voir Export de la liste des notes). |
Questions simples
Pour les questions simples (une seule réponse correcte), on utilisera le modèle suivant :
\begin{question}{identifiant}
Texte de la question...
\begin{reponses}
\bonne{La bonne réponse}
\mauvaise{Une mauvaise réponse}
\mauvaise{Une autre mauvaise réponse}
\end{reponses}
\end{question}
Questions multiples
Les questions multiples (celles pour lesquelles aucune, une ou plusieurs
réponses peuvent être correctes) utiliseront l’environnement
questionmult
au lieu de question
.
Scinder les réponses
L’environnement reponses
peut être scindé .
\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}
Dans une |
\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}
Questions ouvertes
On peut ajouter des questions ouvertes (qui ne sont pas à choix multiple) à l’intérieur du sujet.
Une manière de procéder consiste à présenter des cases à cocher par le correcteur. Après l’examen, le correcteur lit la réponse fournie par l’étudiant et affecte les points qui correspondent en cochant certaines cases qui lui sont réservées. Il peut ensuite scanner les copies et utiliser AMC pour les corriger, tout en intégrant les résultats des questions ouvertes dans la notation :
\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}
Dans cet exemple, l’enseignant disposera de trois cases. En cochant la première (nommée F pour faux), l’étudiant n’aura aucun point. En cochant la deuxième (appelée P pour partielle), l’étudiant aura 1 point. En cochant la dernière (nommée J pour juste), l’étudiant optiendra 2 points.
Le premier argument de la commande \AMCOpen
est une liste d’options
séparées par des virgules. Les options disponibles sont les suivantes :
- lineup=<bool>
-
avec la valeur
true
, la zone de réponse et les cases de notation sont présentées sur la même ligne. Avec la valeurfalse
(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). - lineuptext=<texte>
-
si
lineup=true
, le texte et les cases de notation sont présentés sur la même ligne. - lines=<num>
-
fixe le nombre de lignes allouées à la réponse (la valeur par défaut est
1)
. - lineheight=<dim>
-
fixe la hauteur de chaque ligne (la valeur par défaut est
1cm
). - dots=<bool>
-
avec la valeur
true
(par défaut), chaque ligne sera matérialisée par des pointillés. Donner la valeurfalse
pour les supprimer. - contentcommand=<cmdname>
-
cette option peut être utilisée pour personnaliser le contenu de la zone de réponse. Il faut définir une commande
\cmdname
qui devra produire le contenu désiré. - hspace=<dim>
-
fixe l’espace à ajouter entre les cases de la zone de notation.
- backgroundcol=<color>
-
fixe la couleur de fond de la zone de notation.
- foregroundcol=<color>
-
fixe la couleur utilisée dans la zone de notation.
- scan=<bool>
-
avec la valeur
false
, la saisie automatique (à partir des scans) n’est pas effectuée pour cette question (cela peut être utile si vous souhaitez utiliser uniquement la saisie manuelle pour noter la question, et que vous ne voulez pas que les étudiants puissent perturber le processus en cochant ces cases). La valeur par défaut esttrue
. - annotate=<bool>
-
avec la valeur
false
(par défaut), les cases correspondantes à cette question ne seront pas annotées lors de la fabrication des copies annotées (seule le score à la question sera écrit). - question=<texte>
-
donne un texte court pour que le correcteur identifie facilement la question posée. Ce texte sera écrit juste avant les cases de notation, uniquement dans le cas de l’utilisation d’une feuille de réponses séparée.
L’identifiant de la question sera affiché par défaut en inscrivant question dans les options.
- answer=<texte>
-
donne un texte court qui sera inscrit dans la zone de réponse sur la correction.
Utilisez la commande
Puis, appelez le contenu de la boîte à l’endroit voulu :
|
|
- width=<dim>
-
donne la dimension horizontale du cadre entourant la zone de réponse dans le cas
lineup=false
. La valeur par défaut est.95\linewidth
. - framerule=<dim>
-
donne l’épaisseur du trait pour le cadre entourant la zone de réponse.
- framerulecol=<color>
-
donne la couleur du cadre entourant la zone de réponse.
- boxmargin=<dim>
-
donne la taille de la marge entourant les cases de la zone de notation.
- boxframerule=<dim>
-
donne l’épaisseur du trait pour le cadre entourant la zone de notation.
- boxframerulecol=<color>
-
donne la couleur du trait pour le cadre entourant la zone de notation.
Vous pouvez modifier la valeur par défaut (pour tout votre
questionnaire) de toutes ces options grâce à la commande \AMCopenOpts
,
comme
\AMCopenOpts{boxframerule=2pt,boxframerulecol=red}
De plus, on peut ajouter un petit texte dans la zone de notation pour
signifier aux étudiants de ne pas cocher ces cases-là en redéfinissant
la commande \AMCotextReserved
comme suit :
\def\AMCotextReserved{\emph{Reservé}}
Dans le cas de l’utilisation d’une feuille de réponse séparée, on peut également ajouter un petit texte à chaque question ouverte comme suit :
\def\AMCotextGoto{\par{\bf\emph{Répondez sur la feuille de réponses.}}}
Si le nombre de cases réponses est important, utilisez l’astuce
ci-dessous (
|
Questions indicatives
Dans le cas où la question posée est juste informative et ne doit pas
contribuer à la note de l’étudiant, on utilisera la commande
\QuestionIndicative
, comme dans l’exemple suivant :
\begin{question}{facilite}\QuestionIndicative
\bareme{auto=0,v=-1,e=-2}
Vous êtes-vous sentis à l'aise ou en difficulté dans cet enseignement ?
Répondez sur une échelle de 0 (grandes difficultés) à 5 (très à l'aise).
\begin{reponseshoriz}[o]
\bonne{0}
\bonne{1}
\bonne{2}
\bonne{3}
\bonne{4}
\bonne{5}
\end{reponseshoriz}
\end{question}
Identifiant des questions
Il faut utiliser un |
L’identifiant peut être de la forme groupe.identifiant
ou groupe:identifiant
(voir remarque French et babel) pour obtenir le
total d’un même groupe de questions lors de l’export des notes (voir
Export de la liste des notes).
Numéro de question
Voir aussi Style du questionnaire…
Réinitialisation
On peut modifier le numéro de la prochaine question à l’aide de la
commande \AMCnumero
. Au début de chaque copie, un appel à
\AMCnumero{1}
est effectué, mais cette commande peut être utilisée à tout moment.
Afficher N° section.N° question
-
Uniquement dans le fichier pdf
\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}
-
Pris en compte dans l’export ods
Juste après \begin{document}
\makeatletter \renewcommand\AMC@qaff{\thesection.\arabic{AMCquestionaff}} \makeatother
Et après chaque \begin{section} pour faire repartir le numéro de 1.
\AMCnumero{1}
Cacher le numéro
Pour cacher le numéro d’une question particulière et conserver dans le
sujet une continuité des numéros, ajouter la commande
\AMCquestionNumberfalse
juste après \AMCbeginQuestion
(ou utiliser
la commande ci-dessus) :
{
\def\AMCbeginQuestion##1##2{}
\AMCquestionNumberfalse
\begin{question}
...
\end{question}
}
Ou avec une commande dans le préambule.
\makeatletter
\def\jepasse{%
\def\AMCbeginQuestion##1##2{\ifAMC@catalog\textbf{##1}\fi}
\AMCquestionNumberfalse}
\makeatother
Ne pas oublier d’insérer des accolades autour pour limiter son effet à une question.
{\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}
}
Dans cet exemple, le numéro de la question ne sera pas affiché via la
commande \AMCquestionNumberfalse
.
Compteur de questions
Le compteur interne des questions est AMCquestionaff
. Pour afficher le
nombre total de questions en début de sujet, il faut utiliser le paquet
totcount. Voici un exemple :
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}
Compteur de réponses
Le compteur est AMC@ncase
.
% 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}
Réponses sur plusieurs colonnes
Afin de présenter les réponses sur plusieurs colonnes (et gagner de la
place), on pourra englober l’environnement reponses
dans un
environnement multicols
, en utilisant le paquet LaTeX multicol de la
manière suivante :
\begin{multicols}{2}
\begin{reponses}
\bonne{La bonne réponse}
\mauvaise{Une mauvaise réponse}
\mauvaise{Une autre mauvaise réponse}
\end{reponses}
\end{multicols}
Pour les réponses plus courtes encore, on peut demander à ce que les
réponses soient imprimées les unes à la suite des autres, en utilisant
l’environnement reponseshoriz
au lieu de reponses
.
Si de plus les réponses tiennent sur plusieurs lignes, cela pourrait
entraîner le passage d’une réponse d’une colonne à l’autre, ce qui est
un peu déroutant pour le lecteur. La commande \AMCBoxedAnswers
a été
définie afin d’éviter ce phénomène, en enveloppant chaque réponse dans
une boite. On pourra l’utiliser comme dans l’exemple suivant :
\begin{question}{deux colonnes}
Qu'est-ce qu'un oiseau ?
\begin{multicols}{2}\AMCBoxedAnswers
\begin{reponses}
\bonne{C'est un animal à ailes et qui pond des \oe{}ufs.
Il y en a de toutes les couleurs}
\mauvaise{C'est un grand meuble en bois qui sert la plupart
du temps à ranger du linge de maison}
\mauvaise{C'est une machine à vapeur qui permet de fermer
les boîtes de conserve à grande vitesse}
\end{reponses}
\end{multicols}
\end{question}
On notera qu’il est aussi possible de paramétrer l’espace vertical
séparant deux blocs de réponse grâce à la dimension AMCinterBrep
:
\AMCinterBrep=.5ex
Réponses en une lettre
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 \AMCBoxOnly
à la
place d’un environnement reponses
peut alors s’avérer judicieuse :
\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}
Le premier argument de \AMCBoxOnly
est une liste d’options séparées
par des virgules. Les options disponibles sont les suivantes :
- help=<texte>
-
écrit un petit texte de rappel juste avant les cases sur la feuille de réponse séparée.
- ordered=<bool>
-
avec la valeur
true
(la valeur par défaut estfalse
), les réponses ne seront pas mélangées.
Approfondir la réponse
Commande \explain
Lors de l’impression du corrigé, vous pouvez apporter des précisions
grâce à la commande \explain
. Cette commande, à insérer dans un
environnement question
(ce qui inclut les environnements
questionmult
, questionmultx
), affichera le texte écrit.
\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}
Par défaut, le mot Explication sera affiché. Vous pouvez modifier ce
texte pour une ou plusieurs questions avec la commande |
\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}
Explication : sera affiché avant les explications de la première et troisième question, Raison : avant les explications de la deuxième question.
Commande \explaincontext
Cette commande affiche l’argument dans le corrigé et en dehors de l’environnement question.
Garder l’ordre des réponses
Pour demander à garder l’ordre des réponses pour cette question-ci, on
peut utiliser l’option o
de l’environnement reponses
, en remplaçant
la ligne 3 par
\begin{reponses}[o]
Dernier choix
Vous pouvez choisir de toujours laisser une ou plusieurs réponses en
dernière position avec la commande \lastchoices
.
\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}
Réponse numérique (impossible avec AMC-TXT)
Voir Codage du résultat
Remarques
French et babel
Quand on utilise babel et l’option |
Nombre maximal de réponses
Le nombre de réponses pour une question est actuellement limité à 199.
Définir la zone de notation
Vous pouvez ajouter une option supplémentaire de zone de notation (voir
Position de la note) avec le package tikz
.
\usepackage{tikz}
Sans l’option ensemble
Dans ce mode, le sujet et les réponses sont sur la(es) même(s) feuilles.
Taper cette commande, après le \begin{document}
et avant la commande
\exemplaire
:
\AMCsetScoreZone{width=1.5em,height=1.5ex,depth=.5ex,position=margins}
Les grandeurs width
, height
, depth
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.
La variable position
peut prendre les valeurs : none, question,
margin, margins.
Avec l’option ensemble
Dans ce mode, la feuille de réponses est séparée du sujet.
Taper cette commande, après le \begin{document}
et avant la commande
\exemplaire
:
\AMCsetScoreZoneAnswerSheet{width=1.5em,height=1.5ex,depth=.5ex,position=question}
Les grandeurs width
, height
, depth
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.
La variable position
peut prendre les valeurs : none, question,
margin, margins.
L’option Vous ne pouvez pas modifier votre sujet a posteriori en rajoutant l’une de ces fonctions après l’impression du sujet. |
Groupes de questions
L’inclusion de questions dans des groupes permet de mélanger les questions à l’intérieur de ces groupes, de manière différente pour chaque copie. Chaque groupe de questions devra avoir un nom formé uniquement de lettres non-accentuées.
On peut mettre une à une des questions dans un groupe, comme dans l’exemple suivant :
\element{ungroupe}{
\begin{question}{facile}
Alors, combien font un plus un~?
\begin{reponseshoriz}
\bonne{deux}
\mauvaise{zéro}
\mauvaise{trois}
\end{reponseshoriz}
\end{question}
}
La constitution du groupe, par les commandes |
Enfin, on restitue les questions du groupe par la commande
restituegroupe
, comme dans
\restituegroupe{ungroupe}
La manière dont le groupe est restitué peut être contrôlée par le mode
du groupe, défini grâce à la commande setgroupmode
(appelé après la
création des groupes et avant \exemplaire
):
\setgroupmode{mygroup}{XXX}
où XXX
peut prendre les valeurs suivantes :
- fixed
-
avec ce mode, les éléments du groupe sont pris à partir du début du groupe à chaque restitution.
- cyclic
-
les éléments sont pris à la suite les uns des autres à chaque restitution, en repartant du début si nécessaire.
- withreplacement
-
même chose que pour
fixed
, mais le groupe est mélangé à chaque fois. - withoutreplacement
-
comme
cyclic
, en ajoutant un mélange à chaque fois que l’on reprend au début.
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
element
) :
\setdefaultgroupmode{XXX}
Si cette commande n’est pas utilisée, c’est le mode fixed
qui sera
utilisé.
On peut manipuler les groupes de questions de manière plus précise grâce aux commandes suivantes : tutoriel mélange
-
\restituegroupe[n]{ungroupe}
(utilisation du paramètre optionnel <n>) restitue uniquement les <n> premiers éléments du groupe. -
\insertgroupfrom[n]{ungroupe}{i}
Cette commande fait la même chose que\restituegroupe[n]{ungroupe}
mais la sélection débute à l’élément <i>. Le premier élément a pour valeur d’indice 0. -
\cleargroup{groupe}
efface tout le contenu du groupe. -
\copygroup{depuis}{vers}
copie le contenu du groupe <depuis> à la fin du groupe <vers>. Cette commande admet un argument optionnel qui permet de ne copier qu’un certain nombre d’éléments, comme dans\copygroup[n]{depuis}{vers}
. -
\copygroupfrom[n]{depuis}{vers}{i}
Cette commande fait la même chose que\copygroup[n]{depuis}{vers}
mais la sélection débute à l’élément <i>. Le premier élément a pour valeur d’indice 0.
À l’aide de ces commandes, on peut par exemple composer un sujet en
prenant 4 questions au hasard dans le groupe GA, 5 questions au hasard
dans le groupe GB, toutes les questions du groupe GO, puis en mélangeant
le tout, grâce aux commandes suivantes (à mettre à l’intérieur du texte
en argument de la commande exemplaire
, et en supposant que les groupes
GA
, GB
et tout
sont de mode withreplacement
ou
withoutreplacement
) :
\cleargroup{tout}
\copygroup[4]{GA}{tout}
\copygroup[5]{GB}{tout}
\copygroup{GO}{tout}
\restituegroupe{tout}
Une valeur nulle est possible, une valeur négative copie tout le groupe. |
Papier, marges
Le paquet LaTeX automultiplechoice
utilise geometry
pour gérer les
marges et la mise en page. Vous pouvez modifier ses réglages grâce à
l’utilisation de la commande \geometry
juste avant le
\begin{document}
- voir la documentation du paquet geometry
pour
plus de détails. Les valeurs initialisées par AMC sont les suivantes :
\geometry{hmargin=3cm,headheight=2cm,headsep=.3cm,footskip=1cm,top=3.5cm,bottom=2.5cm}
Si vous réduisez les marges pour gagner de la place, gardez à l’esprit que :
-
Les quatre marques de coin doivent être imprimées entièrement (elles pourraient disparaître à cause des marges d’impression).
-
Les quatre marques de coin doivent apparaître complètement sur les scans des copies remplies par les étudiants (si elles sont trop près des bords, elles pourraient disparaître lors du scan à la suite d’un décalage ou d’une rotation des feuilles de papier).
Vous pouvez également préciser la taille de papier à utiliser en
ajoutant l’option correspondante à la liste donnée en argument à
\geometry
. Parmi les valeurs possibles, on trouvera a4paper
,
a5paper
, a6paper
, b4paper
, b5paper
, ansibpaper
, ansicpaper
,
ansidpaper
, letterpaper
, executivepaper
, legalpaper
.
Pour des petites tailles de papier, il peut aussi être intéressant de
modifier la position de l’identifiant de copie (de la forme 1/1/53
)
à côté de son équivalent en cases blanches et noires, en haut de chaque
page. Ceci est rendu possible par la commande \AMCidsPosition
, sous la
forme
\AMCidsPosition{pos=p,width=w,height=h}
où <p> peut valoir none
(ne pas écrire cet identifiant), top
(l’écrire au-dessus) et side
(à côté), et <w> et <h> sont les
dimensions de la boîte (invisible) qui entoure l’identifiant. Les
valeurs par défaut sont les suivantes :
\AMCidsPosition{pos=side,width=4cm,height=3ex}
Concluons par un exemple raisonnable au format A5 :
\geometry{a5paper,hmargin=1.6cm,top=2.5cm}
\AMCidsPosition{pos=top}
N’utilisez pas le paquet |
Style des cases à cocher
La commande \AMCboxStyle
(nouveau nom de la commande
\AMCboxDimensions
qui reste compatible avec les options ci-dessous)
permet de modifier une ou plusieurs dimensions relatives aux cases à
cocher :
Les valeurs par défaut des options sont :
\AMCboxStyle{shape=square,size=2.5ex,down=.4ex,rule=.5pt,outsidesep=.1em,color=black}
-
shape
représente la forme des cases à cocher. La valeur <square> produit des carrés (ou des rectangles si on donne des dimensions différentes pour la hauteur et la largeur). La valeur <oval> produit des cercles ou des ovales. Si vous voulez utiliser <oval>, vous devez charger le paquet LaTeX tikz. -
width
représente la largeur des cases ; -
height
représente la hauteur des cases ; -
size
représente la taille (à la foiswidth
etheight
) de ces cases ; -
rule
représente l’épaisseur du contour des cases ; -
down
représente la taille du déplacement vers le bas des cases. -
outsidesep
représente la distance entre la case et la lettre (ou le chiffre) quand l’optionoutsidebox
est choisie (voir Options du paquet). -
cross=true
visible uniquement sur la feuille réponse, indique par une croix la bonne réponse au lieu de colorier la case. -
crossrule=1.5
visible uniquement sur la feuille réponse, représente l’épaisseur de la croix précédente. -
color=col
permet d’indiquer la couleur à utiliser pour les cases à cocher. La couleur <col> doit être reconnue par le paquet LaTeXxcolor
. On pourra ainsi utiliser certains noms de couleurs (comme <red> pour le rouge), ou définir soi-même sa couleur comme dans\definecolor{vertclair}{rgb}{0.67,0.88,0.5} \AMCboxStyle{color=vertclair}
Pour obtenir des cases plus petites, on pourra, par exemple, utiliser la commande
\AMCboxStyle{size=1.7ex,down=.2ex}
Lors de l’utilisation de l’option ensemble
, il est possible de
modifier la manière de nommer les cases à cocher (c’est-à-dire ce qui
sera inscrit dans chaque case). Le comportement par défaut est d’écrire
des lettres majuscules, ou des chiffres si l’option chiffres
est
utilisée. Pour changer cela, il faut redéfinir la commande
\AMCchoiceLabel
, qui prend comme unique argument le nom du compteur
utilisé pour la numérotation des cases. Ainsi, pour obtenir des lettres
minuscules, on utilisera :
\def\AMCchoiceLabel#1{\alph{#1}}
De même, lors de l’utilisation du paquet LaTeX arabxetex
, la commande
suivante pourra se révéler utile :
\def\AMCchoiceLabel#1{\textLR{\Alph{#1}}}
Pour changer le style des lettres inscrites dans les cases, on pourra
également redéfinir la commande \AMCchoiceLabelFormat
. Par exemple,
pour obtenir des lettres grasses, on utilisera :
\def\AMCchoiceLabelFormat#1{\textbf{#1}}
Pour changer le style des lettres inscrites à l’exterieur des cases, on
pourra également redéfinir la commande \AMCoutsideLabelFormat
. Par
exemple, pour obtenir des lettres grasses, on utilisera :
\def\AMCoutsideLabelFormat#1{\textbf{#1}}
La commande LaTeX pour basculer en mode corrigé (cases bonnes réponses
coloriées) est
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
|
Style du questionnaire
La façon dont chaque question est présentée peut être modifiée en
redéfinissant la commande LaTeX AMCbeginQuestion
, dont la définition
par défaut est la suivante :
\def\AMCbeginQuestion#1#2{\par\noindent{\bf Question #1} #2\hspace*{1em}}
Le premier paramètre transmis à cette commande est le numéro de question
à afficher. Le second paramètre contient \multiSymbole
dans le cas
dune question à plusieurs réponses possibles, et est vide dans les
autres cas. La commande \multiSymbole
peut aussi être modifiée : elle
a pour charge de différentier les questions à réponses multiples des
autres. Par défaut, elle affiche un trèfle :
\def\multiSymbole{$\clubsuit$}
Environnement reponsesperso
La présentation des réponses peut être modifiée de la même façon, si on
utilise l’environnement reponsesperso
au lieu de reponses
ou
reponseshoriz
, en redéfinissant les trois macros LaTeX suivantes :
\def\AMCbeginAnswer{}
\def\AMCendAnswer{}
\def\AMCanswer#1#2{#1 #2}
Exemple 1
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) :
\fcolorbox{black}{gray}{\insertRetard}
où la commande \insertRetard
a été définie en-dehors de \exemplaire :
\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}}%
}
-
la commande
\def\AMCbeginQuestion##1##2{}
(combinée avec l’utilisation de l’environnementreponsesperso
) permet qu’AMC n’écrive pas "Question XX". -
\def\AMCbeginAnswer{}\def\AMCendAnswer{}
permettent également d’épurer le résultat. -
\AMCnoCompleteMulti
permet de demander à AMC de ne pas rajouter la réponse "aucune de ces réponses n’est correcte" marlgré l’utilisation de questionmult. -
\AMCdontAnnotate
demande à AMC de ne pas annoter ces cases là.
Lorsque vous êtes à l’intérieur de la commande
|
Utilisation en mathématiques
\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}
Espaces
Certains espacements peuvent également être modifiés :
\AMCinterIrep=0pt
\AMCinterBrep=.5ex
\AMCinterIquest=0pt
\AMCinterBquest=3ex
\AMCpostNquest=1.5ex
\AMCpostOquest=7mm
\setlength{\AMChorizAnswerSep}{3em plus 4em}
\setlength{\AMChorizBoxSep}{1em}
Ces dimensions correspondent aux espaces verticaux ajoutés entre les
questions (quest
) ou les réponses (rep
), en mode boîte (B
, obtenu
avec \AMCBoxedAnswers
ou l’option de package bloc
) ou standard
(I
), l’espace après une question numérique, ouverte. Les deux
dernières longueurs sont utilisées pour l’environnement reponsesperso
.
Mise en page
Marges
Les marges ont été choisies de telle manière que le document s’imprime
correctement sur la majorité des imprimantes. Si votre imprimante permet
de les réduire, vous pouvez le faire en utilisant la commande geometry
du paquet LaTeX geometry. Par exemple, pour resserrer le haut des
copies, on pourra utiliser \geometry{top=3cm}
au lieu de la valeur
3.5cm utilisée par défaut, juste avant le \begin{document}
.
Nombre de pages
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 \AMCaddpagesto{entier}
à 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).
Style du formulaire séparé
Il est aussi possible de modifier la mise en page du formulaire de
réponses séparé produit avec l’option ensemble
(voir
Un exemple avec une feuille de réponses séparée).
-
Si on veut simplement modifier l’espacement horizontal entre deux cases de réponses ou l’espacement vertical entre deux questions, il suffit de redéfinir les dimensions suivantes :
\AMCformHSpace=.3em \AMCformVSpace=1.2ex
-
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 :
\def\AMCformBeforeQuestion{\vspace{\AMCformVSpace}\par} \def\AMCformQuestion#1{\textbf{Question #1 :}} \def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1}
Ces définitions sont à insérer juste après la balise
\begin{document}
dans le document LaTeX. -
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 multicols, les réponses écrites à la main des questions ouvertes demandant plus d’espace.
La commande
\AMCformFilter{!\AMCifcategory{open}}
affiche toutes les questions sauf les questions ouvertes puis la commande\AMCformFilter{\AMCifcategory{open}}
affiche uniquement les questions ouvertes. Les deux commandes doivent être utilisées ensemble.%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}}
L’ordre croissant des numéros est toujours respecté.
Saisie de codes
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
\AMCcodeGridInt[options]{identifiant}{nombre}
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 :
{\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}
}
Ici l’identifiant est etu qui servira à AMC pour attribuer chaque copie à un étudiant et 8 est le nombre de cases pour le code. Vous devrez sélectionner cet identifiant dans le menu déroulant Titre du code pour association automatique de l’onglet notation lors de l’association automatique des copies (voir Association). |
Dans le cas de l’utilisation de l’option ensemble
, la commande
AMCcodeGridInt
devra se trouver dans la partie formulaire,
c’est-à-dire après la commande AMCdebutFormulaire
.
La présentation de ces formulaires de saisie de codes peut être
légèrement modifiée en changeant la valeur des dimensions
\AMCcodeHspace
, \AMCcodeVspace
qui représentent les espaces
horizontaux et verticaux entre les cases. Les valeurs par défaut sont
définies de la manière suivante :
\AMCcodeHspace=.5em
\AMCcodeVspace=.5em
Pour la saisie de codes plus complexes, par exemple comportant des
lettres, on pourra utiliser la commande
\AMCcodeGrid[options]{identifiant}{description}
. L’argument
<description> 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
\AMCcodeGrid{client}{ABCDE,0123456789,0123456789,0123456789}
Les deux commandes \AMCcodeGrid
et \AMCcodeGridInt
acceptent des
options, séparées par des virgules, dans l’argument optionnel
<options> :
- vertical=<bool>
-
Indique la direction utilisée : donner à <bool> la valeur
true
(valeur par défaut) pour construire chaque chiffre en vertical, etfalse
en horizontal. - v
-
alias pour
vertical=true
. - h
-
alias pour
vertical=false
. - top
-
permet d’aligner les colonnes en haut en direction verticale.
- multi
-
permet de copier sur chaque page la grille du code élève.
Ne fonctionne qu’avec le mode photocopie (voir Photocopie du sujet) et avec l’option
ensemble
(voir Options du paquet)L’utilisation de cette option nécessite une modification du code pour la position des marques de calage.
Le code ci-dessous permet cela et doit être placé avant ou après
\begin{document}
.
\makeatletter
\def\IDbox{%
\begin{minipage}{10cm}
\noindent\AMCzone[id]{identification\thepage}{)
\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}{%
\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
-
Création d’une commande LaTeX qui entoure les cases à cocher pour l’étudiant.
-
Cette zone sera anonymée (voir Anonymat des copies) mais ce n’est pas obligatoire.
-
Code qui modifie le comportement habituel d’AMC. Les longueurs seront peut-être à adapter avec vos marges.
Choix du mélange
Si le mélange des question et des réponses ne nous convient pas, on peut
toujours en changer en modifiant la graine du générateur aléatoire
utilisé pour le mélange, grâce à la commande suivante (à utiliser juste
au début du document, et en tous cas en-dehors de la commande
exemplaire
) :
\AMCrandomseed{1527384}
Si la valeur fournie (à choisir entre 1 et 4194303) est modifiée, alors le mélange sera différent. Bien entendu, une fois les copies d’examen imprimées, il ne faut surtout pas modifier cette valeur !
La valeur est enregistrée dans le fichier xy (sous la forme
|
Sections et feuille de réponses séparée
Pour que les sections définies dans votre sujet soient reprises dans la
feuille de réponses séparées, utiliser \AMCsection
et \AMCsubsection
à la place de \section
et \subsection
(les commandes \AMCsection*
et \AMCsubsection*
sont également définies, pour des titres de section
sans numérotation).
Références à l’intérieur des copies
Dans la description du sujet, les commandes LaTeX \label
, \ref
et
\pageref
posent problème car elles seront appelées avec les mêmes
arguments pour chaque copie produite, ce qui perturbera la numérotation
des références. Pour résoudre ce problème, les commandes \AMClabel
,
\AMCref
et \AMCpageref
peuvent leur être substituées : elles
ajoutent le numéro de la copie avant leur argument avant de le
transmettre à \label
, \ref
et \pageref
.
Il faudra en outre penser à remettre les compteurs utilisés à zéro au début de chaque copie. Par exemple, si on veut inclure des références à des images regroupées dans une page à part dans certaines questions, on pourra écrire quelque chose comme
\element{animaux}{
\begin{figure}[p]
\centering
\includegraphics[width=.6\linewidth]{tigre}
\caption{Un animal}
\AMClabel{tigre}
\end{figure}
\begin{question}{tigre}
Quel est l'animal sur la photographie de la figure~\AMCref{tigre}
en page \AMCpageref{tigre}~?
\begin{reponses}
\bonne{Un tigre}
\mauvaise{Une girafe}
\mauvaise{Un éléphant}
\mauvaise{Un chat}
\end{reponses}
\end{question}
}
en prenant soin d’ajouter au début de l’appel à \exemplaire
(lors de
la description de l’en-tête des copies) la ligne
\setcounter{figure}{0}
afin que les figures soient numérotées à partir de 1 pour chaque copie. Sans cette dernière commande, la numérotation des figures continuerait d’une copie à l’autre, ce qui n’est pas souhaitable.
Utilisation du paquet Cleveref.
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 http://mirrors.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf)
Le paquet doit être déclaré après le paquet automuliplechoice.
|
Lors de l’utilisation de \cref
, les références des questions devront
être transformées par la commande \AMCstudentlabel
, comme dans
l’exemple suivant :
\cref{\AMCstudentlabel{dipole},\AMCstudentlabel{cours},\AMCstudentlabel{raisonnement}}
Avec dipole, cours et raisonnement 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.
Personnalisation des textes insérés par AMC
L’utilisation de la commande |
Il est possible de personnaliser certain textes insérés par le paquet
automultiplechoice, grâce à la commande \AMCtext
:
-
\AMCtext{none}{phrase}
remplace le texte par défaut « aucune de ces réponses n’est correcte » (en français) par la <phrase> fournie lors de l’utilisation de l’optioncompletemulti
. -
\AMCtext{corrected}{titre}
remplace « Correction » (en français) par le <titre> fourni sur la correction de l’examen. -
\AMCtext{catalog}{titre}
remplace « Catalogue » (en français) par le <titre> fourni sur le catalogue de questions fourni avec l’optioncatalog
. -
\AMCtext{explain}{titre}
remplace « Explication » (en français) par le <titre> avant le texte explicatif fourni avec la commande\explain
.La valeur par défaut de cette commande est :
\AMCtext{explain}{\textit{\textbf{Explanation: }}}
-
Vous pouvez aussi considérer l’utilisation de commandes comme celles-ci (données ici avec comme deuxième argument la valeur par défaut en français) :
\AMCtext{draft}{PROJET} \AMCtext{message}{Pour votre examen, imprimez de pr\'ef\'erence les documents compil\'es \`a l'aide de auto-multiple-choice.}
-
\AMCsetFoot{texte}
change le texte à afficher en pied de page (on pourra par exemple utiliser\AMCsetFoot{\thepage}
pour indiquer le numéro de page).
Le code binaire
Le code binaire permet à AMC de reconnaître le numéro du sujet et le numéro de la page du sujet.
-
Première ligne : 12 cases (valeur par défaut) : nombre maximal de sujets = 2^12-1 = 4 095.
-
Seconde ligne : 6 premières cases (valeur par défaut) : nombre maximal de pages par sujet = 2^6-1 = 63.
-
Seconde ligne : 6 dernières cases (valeur par défaut) : code de contrôle.
Pour augmenter le nombre de sujets ou/et de pages par sujet, modifiez
les valeurs par défaut des commandes \AMC@NCBetud
, \AMC@NCBpage
et
\AMC@NCBcheck
.
Dans le préambule, déclarez les commandes ci-dessous (ici avec les valeurs par défaut).
\makeatletter
\def\AMC@NCBetud{12}
\def\AMC@NCBpage{6}
\def\AMC@NCBcheck{6}
\makeatother
Pour démarrer le numéro de copies à une autre valeur que 1 (ici 141).
Pour changer la valeur du code de sécurité (60 par défaut) à 59.
|
Options pour AMC
Certaines options indiquées dans l’en-tête du fichier source au format LaTeX (c’est-à-dire les premières lignes qui commenecnt par un '%') peuvent être transmises à AMC :
%%AMC:preprocess_command=commandname
-
demande à AMC d’exécuter la commande <commandname> avant de compiler le fichier LaTeX. Cette commande sera appelée à l’intérieur du répertoire projet, avec comme argument le nom de la copie du fichier source à traiter. Comme il s’agit d’une copie du fichier source, la commande <commandname> peut en modifier le contenu.
%%AMC:latex_engine=engine
-
demande à AMC d’utiliser le moteur LaTeX <engine>, sans tenir compte de la valeur fournie par l’utilisateur dans les préférences du projet.
Des questions mathématiques à énoncés aléatoires
Utilisation du package fp
Grâce au paquet LaTeX fp, dont la documentation se trouve sur http://mirrors.ctan.org/macros/latex/contrib/fp/README et que l’on peut charger grâce à la commande
\usepackage{fp}
ajoutée avant celle correspondant à automultiplechoice, on peut créer des exercices dont les données sont aléatoires. Commençons par un petit exemple :
\begin{question}{addition}
\FPeval\VQa{trunc(1+random*8,0)}
\FPeval\VQb{trunc(4+random*5,0)}
\FPeval\VQsomme{clip(VQa+VQb)}
\FPeval\VQnonA{clip(VQa+VQb-1)}
\FPeval\VQnonB{clip(VQa*VQb)}
\FPeval\VQnonC{clip(VQa-VQb)}
Quelle est la somme de \VQa{} et \VQb{} ?
\begin{reponseshoriz}
\bonne{\VQsomme}
\mauvaise{\VQnonA}
\mauvaise{\VQnonB}
\mauvaise{\VQnonC}
\end{reponseshoriz}
\end{question}
La commande \FPeval
sert à faire des calculs :
-
Comme
random
renvoie un nombre réel de l’intervalle [0,1], cette commande met dans la variable VQa un entier aléatoire entre 1 et 8. La ligne suivante place dans VQb un entier aléatoire entre 4 et 8. -
On place la bonne réponse dans la variable VQsomme.
-
On place dans les variables VQnonA, VQnonB et VQnonC des mauvaises réponses…
Les noms de variables commençant par VQ ont été choisis afin de ne pas interférer avec d’autres commandes LaTeX.
Vous pouvez choisir la base de génération des nombres pseudo-aléatoires
(obtenus avec
<entier> doit être un entier immuable, qui ne changera jamais : ne pas utiliser de valeur liée à la date ! |
Choix parmi une suite d’intervalles
Le paquet automultiplechoice définit en outre une commande
\choixIntervalles
qui simplifie ce genre de constructions, comme
illustré dans l’exemple suivant :
\begin{question}{inf-expo-indep}
\FPeval\VQa{trunc(2 + random * 4,0)}
\FPeval\VQb{trunc(6 + random * 5,0)}
\FPeval\VQr{VQa/(VQa+VQb)}
Soient $X$ et $Y$ deux variables aléatoires indépendantes, de lois exponentielles
de paramètres respectifs \VQa{} et \VQb{}.
À quel intervalle appartient la probabilité $\mathbb{P}[X<Y]$ ?
\begin{multicols}{5}
\begin{reponses}[o]
\choixIntervalles{\VQr}{0}{1}{0.1}
\end{reponses}
\end{multicols}
\end{question}
-
Cette ligne insère dix réponses correspondant aux intervalles [0,0.1[ [0.1,0.2[ … [0.9,1[, tout en indiquant que le bon intervalle est celui qui contient VQr. Les arguments de la commande
\choixIntervalle
sont les suivants :-
La bonne réponse,
-
La borne gauche du premier intervalle,
-
La borne droite du dernier intervalle,
-
La longueur de chaque intervalle.
-
La mise en forme des intervalles peut être modifiée en redéfinissant la
commande \AMCintervalFormat
, définie originellement par
\def\AMCIntervalFormat#1#2{[#1,\,#2[}
pour suivre une convention différente (on rencontra par exemple souvent l’utilisation de [a,b) à la place de [a,b[).
Si vous préférez la virgule comme séparateur décimal, il faut utiliser
la commande
|
Codage du résultat
Vous pouvez également demander aux étudiants de coder leur réponse
numérique, grâce à la commande \AMCnumericChoices
, comme dans
l’exemple suivant :
\begin{questionmultx}{sqrt}
\FPeval\VQa{trunc(5+random*15,0)}
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}
Notez l’utilisation de l’environnement questionmultx
: nous avons
besoin ici d’une question multiple car plusieurs cases doivent être
cochées, mais pourtant une seule réponse est correcte, et nous ne
souhaitons donc pas afficher le symbole des questions multiples
normales.
Options
Les options disponibles dans le deuxième argument de cette commande sont les suivantes :
- digits=<num>
-
donne le nombre de chiffres à coder (la valeur par défaut est 3).
- decimals=<num>
-
donne le nombre de chiffres après la virgule (la valeur par défaut est 0). Quand <num> n’est pas nul, le paquet LaTeX
fp
doit être chargé. - base=<num>
-
donne la base dans laquelle sera écrit le nombre à coder (la valeur par défaut est 10).
- significant=<bool>
-
avec la valeur
true
, les chiffres à renseigner sont les premiers chiffres significatifs du premier argument de\AMCnumericChoices
.Par exemple, la bonne réponse à
\AMCnumericChoices{56945.23}{digits=2,significant=true}
est 57. - exponent=<num>
-
demande une saisie en notation scientifique, avec <num> chiffres pour la puissance de 10.
- nozero=<bool>
-
avec la valeur true, enlève le choix 0 pour tous les chiffres du nombre à saisir. Cette option peut être utile lors de la saisie de petits (<10) nombres non nuls.
- sign=<bool>
-
demande (ou non) la saisie d’un signe (la valeur par défaut est
true
). - exposign=<bool>
-
même chose pour l’exposant.
- strict=<bool>
-
avec la valeur
true
, une case doit être obligatoirement cochée pour le signe et pour chaque chiffre (même pour le chiffre 0). Avec la valeurfalse
(valeur par défaut), si pour certains chiffres aucune case n’est cochée, ces chiffres seront fixés à la valeur 0. - ignoreblank=<bool>
-
avec la valeur
true
, ignore les cases non cochées. Valable uniquement en base 10. - vertical=<bool>
-
avec la valeur
true
, chaque chiffre sera représenté par une colonne. Avec la valeurfalse
(valeur par défaut), chaque chiffre sera représenté par une ligne. - expovertical=<bool>
-
avec la valeur
true
, la mantisse et l’exposant seront présentés l’un en-dessous de l’autre. Avec la valeurfalse
(valeur par défaut), ils seront présentés l’un à côté de l’autre. - reverse=<bool>
-
avec la valeur
true
(valeur par défaut), en modevertical
, les grandes valeurs des chiffres seront placées en haut plutôt qu’en bas. - vhead=<bool>
-
avec la valeur
true
, en modevertical
, un en-tête sera placé au-dessus de chaque colonne correspondant à un chiffre.Le texte de cet en-tête est donné par la commande
\AMCntextVHead
, qui est originellement définie par\def\AMCntextVHead#1{\emph{b#1}}
Cette définition permet de numéroter les chiffres binaires.
La valeur par défaut est
false
. - Tvhead=<{text}>
-
Une liste séparée par des virgules comme \{km,hm,dam, m,dm,cm,mm} pour l’en-tête en mode
vhead
vertical.A besoin de
vhead=true
(par défaut la liste est vide{}
). - vheadunitindex=<num>
-
L’indice de l’unité dans la liste de
Tvhead
en partant de la droite (zéro est la valeur par défaut).L’élément à droite a pour valeur d’indice 0.
%%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}
%%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}
%%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}
%%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}
%%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}
%%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}
%%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}
%%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}
- hspace=<space>
-
donne l’espace horizontal entre les cases (
.5em
par défaut). - vspace=<space>
-
donne l’espace vertical entre les cases (
1ex
par défaut). - borderwidth=<space>
-
donne l’épaisseur du cadre qui entoure toutes les cases (
1mm
par défaut). - bordercol=<color>
-
donne la couleur du cadre (
lightgray
par défaut). - backgroundcol=<color>
-
donne la couleur du fond (
white
par défaut). - Tsign=<text>
-
donne le texte à inscrire au-dessus des deux cases correspondant au signe (vous pouvez obtenir le même résultat grâce à
\def\AMCntextSign{text}
, le texte par défaut étant vide). - Tpoint=<text>
-
donne le texte correspondant à la virgule (décimale). Il peut également être modifié par
\def\AMCdecimalPoint{text}
, et la valeur par défaut est\raisebox{1ex}{\bf .}
. - Texponent=<text>
-
donne le texte affiché entre la partie mantisse et la partie exposant.
Ce texte peut également être modifié par
\def\AMCexponent{text}
, et sa valeur par defaut est$\times10$\textasciicircum
. - scoring=<bool>
-
avec la valeur
true
(valeur par défaut), un barème sera transmis à AMC. - scoreexact=<num>
-
donne le score à affecter à une réponse exacte (2 par défaut).
- exact=<num>
-
donne la distance maximale à la valeur correcte en-dessous de laquelle une réponse sera considérée comme exacte (et sera rétribuée de
scoreexact
points). La valeur par défaut est 0. - scoreapprox=<num>
-
donne le score à affecter à une réponse approximative (1 par défaut).
- approx=<num>
-
donne la distance maximale à la valeur correcte en-dessous de laquelle une réponse sera considérée comme approximative (et sera rétribuée de
scoreapprox
points). La valeur par défaut est 0. - scorewrong=<num>
-
donne le score à affecter à une réponse fausse (0 par défaut).
AMC transforme tous les nombres (décimaux inclus) comme des entiers
|
- keepas=<text>
-
garde la valeur entrée par l’étudiant pour une future utilisation alsocorrect dans une autre question.
Toutes les questions qui suivent celle-ci doivent respecter l’ordre lexicographique des identifiants.
- alsocorrect=<text>
-
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 :
+, -, *, /, ** (puissance)
\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[<->] (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[<->] (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}
Vous pouvez modifier la valeur par défaut (pour tout votre
questionnaire) de toutes ces options grâce à la commande
\AMCnumericOpts
, comme
\AMCnumericOpts{scoreexact=3,borderwidth=2pt}
Vous pouvez de plus ajouter un texte à la suite des questions, quand la
réponse à celle-ci est reléguée à une feuille séparée (par l’utilisation
de l’option ensemble
), en redéfinissant la commande \AMCntextGoto
,
comme ceci par exemple :
\def\AMCntextGoto{\par{\bf\emph{Codez la réponse sur la feuille de réponses séparée.}}}
Accès aux valeurs
- intX
-
valeur brute entrée par l’étudiant.
- intV
-
bonne valeur brute.
Utilisation du package pgf/tikz
Vous devez déclarer ce paquet, ainsi que les bibliothèques, \usetikzlibrary\{arrows,patterns}_, après_ automuliplechoice.
Le paquet LaTeX pgf/tikz, dont la documentation se trouve sur http://www.ctan.org/tex-archive/graphics/pgf/base possède notamment une bibliothèque mathématique que l’on peut charger grâce à la commande :
\usepackage{tikz}
La première précaution à prendre pour avoir des sujets identiques malgré les recompilations latex est de choisir la base de génération des nombres pseudo-aléatoires.
\pgfmathsetseed{2056}
Réaliser un calcul simple
Voici un exemple d’utilisation avec un calcul simple :
\begin{question}{inverse}
\pgfmathrandominteger{\x}{1}{50}
Quel est l'inverse de $x=\x$ ?
\begin{reponses}
\bonne{\pgfmathparse{1/\x}\pgfmathresult }
\mauvaise{\pgfmathparse{1/(\x +1))}\pgfmathresult}
\mauvaise{\pgfmathparse{cos(\x)} \pgfmathresult}
\mauvaise{\pgfmathparse{\x^(-0.5)}\pgfmathresult}
\end{reponses}
\end{question}
Les commandes \pgfmathparse
et \pgfmathresult
permettent
respectivement d’effectuer le calcul et d’afficher son résultat.
Il est possible de choisir la mise en forme des résultats en utilisant
la commande \pgfmathprintnumber
, par exemple, ici on choisit une
notation avec trois décimales, en utilisant une virgule comme séparateur
décimal.
\begin{question}{inverse3}
\pgfmathrandominteger{\x}{1}{50}
\pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=3,use comma}
Quel est l'inverse de $x=\pgfmathprintnumber{\x}$ ?
\begin{reponses}
\bonne{\pgfmathparse{1/\x}\pgfmathprintnumber{\pgfmathresult}}
\mauvaise{\pgfmathparse{1/(\x +1))} \pgfmathprintnumber{\pgfmathresult}}
\mauvaise{\pgfmathparse{cos(\x)} \pgfmathprintnumber{\pgfmathresult}}
\mauvaise{\pgfmathparse{\x^(-0.5)} \pgfmathprintnumber{\pgfmathresult}}
\end{reponses}
\end{question}
Les commandes |
Questions de lecture graphique
Il est aussi possible de générer des graphiques aléatoires (ou non) et de poser des questions de lecture graphique.
\begin{questionmult}{graphique}
On considère trois fonctions f(x) dont les tracés sont représentés ci-dessous
dans un repère orthonormé~:
\pgfmathrandominteger{\a}{2}{4}
\begin{center}
\begin{tikzpicture}[domain=0:4]
\draw[very thin,color=gray] (-0.1,-4.1) grid (3.9,3.9);
\draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$};
\draw[->] (0,-4.2) -- (0,4.2) node[above] {$f(x)$};
\draw[color=red] plot (\x,{(1+\a/4)*\x-\a}) node[right] {$f_{1} (x)$};
\draw[color=blue] plot (\x,{\a*sin(\x r)}) node[right] {$f_{2}(x)$};
\draw[color=orange] plot (\x,{\a*cos(\x r)}) node[right] {$f_{3}(x)$};
\end{tikzpicture}
\end{center}
Alors :
\begin{reponses}
\pgfmathrandominteger{\x0}{2}{4}
\bonne{$f_{2}(\x0)$=\pgfmathparse{\a*sin(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.}
\bonne{$f_{3}(\x0)$=\pgfmathparse{\a*cos(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.}
\mauvaise{La fonction $f_{1}(x)$ est une fonction linéaire.}
\end{reponses}
\end{questionmult}
La mise en forme des graphiques peut être facilitée par l’utilisation du package pgfplots.
La précision des nombres sous pgfmath étant limitée, certains tracés de
graphiques ne sont pas possibles avec cette méthode, la compilation
LaTeX produisant alors une erreur du type "Arithmetic overflow". Les
packages tikz et pgfplots permettent de pallier à ce manque de précison
en faisant appel au programme gnuplot
(voir documentation du package)
pour obtenir les points de tracé. Dans ce cas, il faut installer au
préalable gnuplot
sur votre système, puis lancer la compilation LaTeX
avec l’option --shell-escape
. Pour cela, aller dans les préférences de
AMC et choisir pour moteur LaTeX du projet en cours :
“pdflatex --shell-escape” (sans les guillemets).
Utilisation de LuaLaTeX
Il est possible d’utiliser le langage de programmation LUA au sein de
documents latex en compilant le sujet grâce à la commande lualatex
. Si
vous choisissez cette compilation, votre sujet doit être encodé en
UTF-8, et il ne faut pas charger le package inputenc. Pour de plus
amples informations, lire l’article de Manuel Pégourié-Gonnard
présentant le projet à l’adresse suivante :
http://dante.ctan.org/tex-archive/info/luatex/lualatex-doc/lualatex-doc.pdf
Pour faire appel au langage LUA, il faut utiliser la commande
\directlua
. La fonction LUA la plus utile est tex.print
qui écrit un
résultat calculé par LUA dans le document LaTeX
Encore une fois, si vous utilisez des nombres aléatoires, commencez par choisir la base de génération des nombres pseudo-aléatoires.
\directlua{math.randomseed (2048)}
Voici un exemple très simple de fichier_:
\documentclass[a4paper]{article}
%\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti]{automultiplechoice}
\begin{document}
\exemplaire{10}{
%%% debut de l'en-tête des copies :
\noindent{\bf QCM \hfill TEST}
\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
\centering\large\bf Sujet simpliste
\end{minipage}
\champnom{\fbox{\begin{minipage}{.5\linewidth}
Nom et prénom :
\vspace*{.5cm}\dotfill
\vspace*{1mm}
\end{minipage}}}
%%% fin de l'en-tête
\directlua{math.randomseed (2048)}
\directlua{a=math.random()}
\begin{question}{calcul}
Quelle est la racine carrée de \directlua{tex.print(a)}?
\begin{reponses}
\bonne{\directlua{tex.print(math.sqrt(a))}}
\mauvaise{\directlua{tex.print(math.sqrt(2*a))}}
\mauvaise{\directlua{tex.print(math.sqrt(a*1.001))}}
\end{reponses}
\end{question}
}
\end{document}
Il est aussi possible de mettre en forme les résultats donnés par lua soit en écrivant des fonctions lua, soit en utilisant le package siunitx
Les commandes |
Conflits avec d’autres paquets
Paquets à déclarer après automultiplchoice
Vous devez déclarer ces paquets après automultiplechoice : fancyvrb
,
fancybox
, pstricks
, minted
.
Pour utiliser pstricks
, vous devez configurer AMC :
doit valoir
latex+dvipdf.
verbatim
Le paquet verbatim
(ou d’autres paquets équivalents) perturbe AMC et il devient impossible de l’utiliser
dans les environnements question
ou questionmult
.
Cette section propose plusieurs solutions pour faire apparaître dans votre sujet des morceaux de code informatique par exemple.
Changement de police de caractère
Pour les textes courts, vous pouvez simplement utiliser \texttt
,
mais il faudra faire attentions car de nombreux caractères ont une
fonction spéciale en LaTeX et ne pourront donc pas être utilisés tels
quels (ici, le ^
qui est produit avec \textasciicircum
, et les
accolades qui doivent être précédées d’un \
).
\begin{question}{program}
Quelle est la valeur renvoyée par le code R suivant~?
\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}
UseVerb
du paquet fancyvrb
Pour utiliser fancyverb
, il faut enregistrer le code à inclure en-dehors de la commande \exemplaire
dans une commande qui sera ensuite utilisée dans la question.
\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}
Paquet verbatimbox
Pour des textes plus longs, enregistrez le verbatim dans un
environnement myverbbox
, toujours avant \exemplaire
\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}
Utilisation de fichiers externes
On peut également placer le code à insérer dans le sujet dans un
fichier séparé prog.py
, placé dans le répertoire du projet, et
utiliser un des paquets listings
ou minted
dans le source LaTeX.
Paquet listings
\lstset{language=Python}
\lstinputlisting{prog.py}
Paquet minted
Il permet en outre la coloration syntaxique, mais ceci n’est pas forcément souhaitable pour une impression en noir et blanc…
Il nécessite de compiler avec l’option -shell-escape
.
\inputminted{python}{prog.py}