Ce paragraphe détaille la rédaction en LaTeX d'une questionnaire à choix multiples utilisable par AMC. Si vous avez choisi un autre format de fichier source, vous pouvez passer directement au chapitre suivant.
Un questionnaire à choix multiples peut être décrit sous la forme d'une fichier LaTeX utilisant le package automultiplechoice. Vous pouvez à tout moment tester le fichier LaTeX que vous êtes en train de concevoir en le compilant avec la commande latex puis en visualisant le fichier dvi qui en résulte.
Nous commençons par quelques exemples qui permettent d'appréhender rapidement la construction de fichiers LaTeX de QCM ; les fichiers tex de ces exemples sont fournis avec AMC sous la forme de modèles utilisables en créant un nouveau projet de QCM à partir d'un de ces modèles.
\documentclass[a4paper]{article} \usepackage[utf8x]{inputenc}\usepackage[T1]{fontenc} \usepackage[francais,bloc,completemulti]{automultiplechoice}
\begin{document} \exemplaire{10}{
%%% debut de l'en-tête des copies :
\noindent{\bf QCM \hfill TEST} \vspace*{.5cm} \begin{minipage}{.4\linewidth} \centering\large\bf Test\\ Examen du 01/01/2008\end{minipage} \champnom{\fbox{
\begin{minipage}{.5\linewidth} Nom et prénom : \vspace*{.5cm}\dotfill \vspace*{1mm} \end{minipage} }} \begin{center}\em Durée : 10 minutes. Aucun document n'est autorisé. L'usage de la calculatrice est interdit. Les questions faisant apparaître le symbole \multiSymbole{} peuvent présenter zéro, une ou plusieurs bonnes réponses. Les autres ont une unique bonne réponse. Des points négatifs pourront être affectés à de \emph{très mauvaises} réponses. \end{center} \vspace{1ex} %%% fin de l'en-tête \begin{question}{prez}
Parmi les personnalités suivantes, laquelle a été présidente de la république française~? \begin{reponses} \bonne{René Coty} \mauvaise{Alain Prost} \mauvaise{Marcel Proust} \mauvaise{Claude Monet} \end{reponses} \end{question} \begin{questionmult}{pref}
Parmi les villes suivantes, lesquelles sont des préfectures~? \begin{reponses} \bonne{Poitiers} \mauvaise{Sainte-Menehould} \bonne{Avignon} \end{reponses} \end{questionmult} \clearpage
}
\end{document}
Quelques précisions sur cet exemple :
Les deux paquets inputenc et fontenc permettent d'écrire le texte du questionnaire en utilisant l'encodage ISO-8859-1 (latin1). Vous pouvez bien entendu les modifier suivant l'encodage que vous utilisez. | |
Les options utilisées ici pour le paquet LaTeX
automultiplechoice permettent d'éviter le
changement de page à l'intérieur des questions
( | |
La commande exemplaire permet de fabriquer autant d'exemplaires (différents) du questionnaire QCM que l'on souhaite (ici, 10). Voir la section intitulée « 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. | |
Les environnements question et reponses permettent de fabriquer une question à choix multiples pour laquelle une unique réponse est correcte. Il faut indiquer un identifiant unique de la question (ici : prez). | |
Les environnements questionmult et
reponses permettent de fabriquer une question
pouvant avoir zéro, une ou plusieurs bonnes réponses. L'étudiant
est donc invité à cocher toutes les cases correspondant aux
réponses qu'il pense correctes, ou la dernière case (ajoutée
automatiquement grâce à l'option | |
La commande clearpage permet de passer à la page suivante pour le début de la copie suivante. | |
Cette fermeture d'accolade marque la fin de la commande exemplaire (débutée à la ligne 9). |
Dans cet exemple, on veut que l'ordre dans lequel les questions sont posées soit différent d'une copie à l'autre, tout en laissant ensemble les questions traitant du même sujet. On va donc créer deux groupes de questions, et les mélanger lors de la fabrication de chaque copie.
\documentclass[a4paper]{article} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage[francais,bloc,completemulti]{automultiplechoice} \begin{document} %%% préparation des groupes \element{geographie}{ \begin{question}{Paris} Dans quel continent se situe Paris~? \begin{reponses} \bonne{L'Europe} \mauvaise{L'Afrique} \mauvaise{L'Asie} \mauvaise{La planète Mars} \end{reponses} \end{question} } \element{geographie}{ \begin{question}{Cameroun} Quelle est la capitale du Cameroun~? \begin{reponses} \bonne{Yaoundé} \mauvaise{Douala} \mauvaise{Abou-Dabi} \end{reponses} \end{question} } \element{histoire}{ \begin{question}{Marignan} En quelle année a eu lieu la bataille de Marignan~? \begin{reponseshoriz} \bonne{1515} \mauvaise{1915} \mauvaise{1519} \end{reponseshoriz} \end{question} } \element{histoire}{ \begin{questionmult}{Nantes} Que peut-on dire de l'Édit de Nantes~? \begin{reponses} \bonne{Il a été signé en 1598} \bonne{Il a été définitivement révoqué par Louis XIV} \mauvaise{Il a été signé par Henri II} \end{reponses} \end{questionmult} } %%% fabrication des copies \exemplaire{10}{ %%% debut de l'en-tête des copies : \noindent{\bf QCM \hfill TEST} \vspace*{.5cm} \begin{minipage}{.4\linewidth} \centering\large\bf Histoire et géographie\\ Examen du 01/01/2008 \end{minipage} \champnom{\fbox{\begin{minipage}{.5\linewidth} Nom et prénom : \vspace*{.5cm}\dotfill \vspace*{1mm} \end{minipage}}} %%% fin de l'en-tête \begin{center} \hrule\vspace{2mm} \bf\Large Géographie \vspace{1mm}\hrule \end{center} \melangegroupe{geographie} \restituegroupe{geographie} \begin{center} \hrule\vspace{2mm} \bf\Large Histoire \vspace{2mm}\hrule \end{center} \melangegroupe{histoire} \restituegroupe{histoire} \clearpage } \end{document}
Dans cet exemple, on souhaite que les cases à cocher soient toutes rassemblées sur une feuille à part. De cette manière, la triche entre étudiants est plus difficile, et surtout, il suffira de scanner une seule page par étudiant, ce qui allège la tâche de l'enseignant dans le cas où son matériel ne lui permet de scanner les copies que de manière manuelle. Dans cet exemple, le nombre de questions est réduit : elles tiennent toutes sur une page et il serait donc inutile d'utiliser une telle mise en page dans ce cas précis. À vous de modifier cette base pour utiliser cette mise en page avec de nombreuses questions !
\documentclass[a4paper]{article} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage[francais,bloc,completemulti,ensemble]{automultiplechoice}\begin{document} \AMCrandomseed{1237893} \def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par {\sc Question #1 :} }
\element{general}{ \begin{question}{prez} Parmi les personnalités suivantes, laquelle a été présidente de la république française~? \begin{reponses} \bonne{René Coty} \mauvaise{Alain Prost} \mauvaise{Marcel Proust} \mauvaise{Claude Monet} \end{reponses} \end{question} } \element{general}{ \begin{questionmult}{pref} Parmi les villes suivantes, lesquelles sont des préfectures~? \begin{reponses} \bonne{Poitiers} \mauvaise{Sainte-Menehould} \bonne{Avignon} \end{reponses} \end{questionmult} } \element{general}{ \begin{question}{nb-ue} Combien d'états sont membres de l'Union Européenne en janvier 2009 ? \begin{reponseshoriz}[o] \mauvaise{15} \mauvaise{21} \mauvaise{25} \bonne{27} \mauvaise{31} \end{reponseshoriz} \end{question} } \exemplaire{5}{ %%% debut de l'en-tête des copies : \noindent{\bf QCM \hfill TEST} \vspace*{.5cm} \begin{minipage}{.4\linewidth} \centering\large\bf Test\\ Examen du 01/01/2008 \end{minipage} \begin{center}\em Durée : 10 minutes. Aucun document n'est autorisé. L'usage de la calculatrice est interdit. Les questions faisant apparaître le symbole \multiSymbole{} peuvent présenter zéro, une ou plusieurs bonnes réponses. Les autres ont une unique bonne réponse. Des points négatifs pourront être affectés à de \emph{très mauvaises} réponses. \end{center} \vspace{1ex} %%% fin de l'en-tête \melangegroupe{general} \restituegroupe{general} \AMCcleardoublepage
\AMCdebutFormulaire
%%% début de l'en-tête de la feuille de réponses {\large\bf Feuille de réponses :} \hfill \champnom{\fbox{
\begin{minipage}{.5\linewidth} Nom et prénom : \vspace*{.5cm}\dotfill \vspace*{1mm} \end{minipage} }} \begin{center} \bf\em Les réponses aux questions sont à donner exclusivement sur cette feuille : les réponses données sur les feuilles précédentes ne seront pas prises en compte. \end{center} %%% fin de l'en-tête de la feuille de réponses \formulaire
\clearpage } \end{document}
Les remarques suivantes devraient éclaircir cet exemple :
C'est l'option | |
On peut redéfinir de cette manière la façon dont les questions seront identifiées sur la page des réponses (cette ligne est facultative). | |
Ce saut de page précède la page spéciale où seront regroupées toutes les cases à cocher. Si on imprime en recto-verso, il vaut mieux utiliser \AMCcleardoublepage pour que la page de formulaire soit sur une feuille séparée des autres. Si on imprime en recto simple, on peut utiliser simplement \clearpage. | |
Cette commande marque le début de la partie formulaire de la copie. Son utilisation est indispensable pour un bon traitement des questions qui n'apparaissent que dans cette partie, comme par exemple celles générées par AMCcode. | |
La case où écrire son nom doit normalement être située sur la page des réponses ! | |
C'est la commande LaTeX formulaire qui écrit toutes les cases à cocher. |
![]() | Avertissement |
---|---|
Quand on utilise une page de réponses séparée, des lettres (ou
des chiffres, avec l'utilisation de l'option
|
L'utilisation du paquet automultiplechoice se fait grâce à la ligne
\usepackage[...]{automultiplechoice}
où les pointillés sont remplacés par une liste d'options séparées par des virgules. Les options disponibles sont les suivantes :
francais
: indique que le sujet d'examen
est en français. Les quelques mentions éventuellement ajoutées par
automultiplechoice seront alors écrites en
français (on peut en particulier penser à la phrase
« aucune de ces réponses n'est correcte »,
voir option completemulti
plus loin).
lang=
:
indique que le sujet est dans la langue
XX
XX
. Pour le moment, seules les langues
FR (français), DE (allemand), ES (espagnol), IT (Italien), JA
(Japonais) et NL (Néerlandais) sont disponibles.
bloc
: place chaque question dans un bloc,
de telle sorte qu'elle ne puisse pas être coupée par un saut de
page.
completemulti
: ajoute de manière
automatique une réponse type « aucune de ces réponses n'est
correcte » à la fin de chaque question multiple. Ceci permet de
différencier, pour ces questions, une absence de réponse et la
réponse qui consiste à ne choisir aucune des réponses proposées.
Que cette option soit utilisée ou non, on peut demander l'ajout de
cette dernière réponse ou l'annuler pour une question particulière
en utilisant une des commandes
\AMCcompleteMulti et
\AMCnoCompleteMulti à l'intérieur de
l'environnement questionmult
correspondant.
ordre
: annule le mélange automatique de
l'ordre des réponses dans toutes les questions.
correc
: produit la correction du QCM, et
non le sujet.
ensemble
: demande à ce que les cases à
cocher soient toutes rassemblées en fin de copie (cette option est
en général utilisée quand on ne veut scanner qu'une seule page par
étudiant - voir l'exemple de la la section intitulée « Un exemple avec une feuille de réponses séparée »).
chiffres
: si on utilise l'option
ensemble
, l'option chiffres
demande d'identifier les questions avec des chiffres plutôt
qu'avec des lettres (ce qui est le comportement par défaut). Avec
cette option, il faut bien entendu veiller à ce que le nombre de
réponses ne dépasse pas 9 pour chaque question.
outsidebox
: si on utilise l'option
ensemble
, cette option demande à ce que les
lettres ou chiffres soient inscrits, sur la feuille de réponses, à
l'extérieur des cases à cocher plutôt qu'à l'intérieur.
insidebox
: si on n'utilise pas l'option
ensemble
, cette option permet d'inscrire des
lettres (ou chiffres) à l'intérieur des cases à cocher (ce n'est
pas le cas par défaut).
catalog
: option utilisée pour présenter
les questions sous forme d'un catalogue dans lequel on piochera
pour constituer un examen. Les questions ne sont pas identifiées
par des numéros mais par leur nom. En général, on n'utilise pas la
commande \exemplaire pour cette
présentation.
postcorrect
: option utilisée si on
souhaite indiquer les bonnes réponses après l'examen, grâce à une
copie remplie par l'enseignant - voir la section intitulée « Correction a posteriori ».
automarks
: en mode
ensemble
, utilisez cette option si vous voulez
que les marques de calage ne soient pas imprimées sur les pages de
sujet, mais uniquement sur les pages de réponse. Vous pouvez alors
personnaliser la façon d'imprimer les numéros de page sur le sujet
en redéfinissant la commande
\AMCsubjectPageTag :
\renewcommand\AMCsubjectPageTag{% \fbox{\texttt{\the\AMCid@etud:\thepage}}% }
![]() | Avertissement |
---|---|
L'option |
Le code LaTeX décrivant le contenu de chaque copie doit être inclus dans un appel à la commande \exemplaire, avec pour premier argument le nombre de copies et pour deuxième argument le code utilisé pour générer une copie.
\exemplaire{50}{ ... }
Si vous avez chargé le paquet LaTeX environ avant automultiplechoice, vous disposez d'une syntaxe alternative utilisant l'environnement copieexamen, qui a en option le nombre de copies désiré (5 par défaut).
\begin{copieexamen}[50] ... \end{copieexamen}
![]() | Note |
---|---|
Le paquet environ n'est pas disponible dans la distribution TeX Live 2007, encore utilisée dans des distributions Ubuntu jusqu'à la version 9.10 (Karmic Koala). |
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}
![]() | Important |
---|---|
Il faut utiliser un |
![]() | Note |
---|---|
Le nombre de réponses pour une question est actuellement limité à 20. |
Pour demander à garder l'ordre des réponses pour cette
question-ci, on peut utiliser l'option o
de
l'environnement reponses
, en remplaçant la ligne 3
par
\begin{reponses}[o]
Pour mettre les réponses sur deux colonnes, on peut utiliser le package multicol en mettant dans le préambule (juste après l'appel au paquet automultiplechoice par exemple) la ligne
\usepackage{multicol}
et en incluant l'environnement reponses à l'intérieur d'un environnement multicols de la manière suivante :
\begin{multicols}{2} \begin{reponses} \bonne{La bonne réponse} \mauvaise{Une mauvaise réponse} \mauvaise{Une autre mauvaise réponse} \end{reponses} \end{multicols}
Pour les réponses plus courtes encore, on peut demander à ce que
les réponses soient imprimées les unes à la suite des autres, en
utilisant l'environnement reponseshoriz
au lieu de
reponses
.
Les questions multiples (celles pour lesquelles aucune, une ou
plusieurs réponses peuvent être correctes) utiliseront l'environnement
questionmult
au lieu de
question
.
Dans le cas où la question posée est juste informative et ne
doit pas contribuer à la note de l'étudiant, on utilisera la commande
\QuestionIndicative
, comme dans l'exemple
suivant :
\begin{question}{facilite}\QuestionIndicative \bareme{auto=0,v=-1,e=-2} Vous êtes-vous sentis à l'aise ou en difficulté dans cet enseignement ? Répondez sur une échelle de 0 (grandes difficultés) à 5 (très à l'aise). \begin{reponseshoriz}[o] \bonne{0} \bonne{1} \bonne{2} \bonne{3} \bonne{4} \bonne{5} \end{reponseshoriz} \end{question}
Afin de présenter les réponses sur plusieurs colonnes (et gagner
de la place), on pourra englober l'environnement
reponses
dans un environnement
multicols
, en utilisant le paquet LaTeX
multicol.
Si de plus les réponses tiennent sur plusieurs lignes, cela pourrait entraîner le passage d'une réponse d'une colonne à l'autre, ce qui est un peu déroutant pour le lecteur. La commande \AMCBoxedAnswers a été définie afin d'éviter ce phénomène, en enveloppant chaque réponse dans une boite. On pourra l'utiliser comme dans l'exemple suivant :
\begin{question}{deux colonnes} Qu'est-ce qu'un oiseau ? \begin{multicols}{2}\AMCBoxedAnswers \begin{reponses} \bonne{C'est un animal à ailes et qui pond des \oe{}ufs. Il y en a de toutes les couleurs} \mauvaise{C'est un grand meuble en bois qui sert la plupart du temps à ranger du linge de maison} \mauvaise{C'est une machine à vapeur qui permet de fermer les boîtes de conserve à grande vitesse} \end{reponses} \end{multicols} \end{question}
On notera qu'il est aussi possible de paramétrer l'espace
vertical séparant deux blocs de réponse grâce à la dimension
AMCinterBrep
:
\AMCinterBrep=.5ex
Il est possible d'augmenter l'espace vertical séparant plusieurs
réponses en modifiant la dimension
AMCinterIrep
:
\AMCinterIrep=.75ex
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} }
![]() | Important |
---|---|
La constitution du groupe, par les commandes element, doit être faite une seule fois : ces commandes doivent donc être utilisées avant la commande exemplaire, qui va répéter certaines actions pour chaque copie. |
Une fois un groupe constitué, on peut mélanger les questions qui le composent par la commande melangegroupe : par exemple,
\melangegroupe{ungroupe}
Enfin, on restitue les questions du groupe par la commande restituegroupe, comme dans
\restituegroupe{ungroupe}
![]() | Note |
---|---|
Ces deux dernières commandes (melangegroupe et restituegroupe) seront quand à elles normalement utilisées à l'intérieur du texte en argument de la commande exemplaire, pour que le mélange soit effectué avant chaque copie. |
On peut manipuler les groupes de questions de manière plus précise grâce aux commandes suivantes :
\restituegroupe[n]{ungroupe}
(utilisation du
paramètre optionnel n
) restitue
uniquement les n
premiers éléments du
groupe.
\cleargroup{groupe}
efface tout le contenu du
groupe.
\copygroup{depuis}{vers}
copie le contenu du
groupe depuis
à la fin du groupe
vers
. Cette commande admet un argument
optionnel qui permet de ne copier qu'un certain nombre d'éléments,
comme dans \copygroup[n]{depuis}{vers}
.
À l'aide de ces commandes, on peut par exemple composer un sujet en prenant 4 questions au hasard dans le groupe GA, 5 questions au hasard dans le groupe GB, toutes les questions du groupe GO, puis en mélangeant le tout, grâce aux commandes suivantes (à mettre à l'intérieur du texte en argument de la commande exemplaire) :
\cleargroup{tout} \melangegroupe{GA}\copygroup[4]{GA}{tout} \melangegroupe{GB}\copygroup[5]{GB}{tout} \copygroup{GO}{tout} \melangegroupe{tout} \restituegroupe{tout}
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}
La commande \AMCboxDimensions permet de modifier une ou plusieurs dimensions relatives aux cases à cocher :
shape
représente la forme des cases à
cocher. La valeur square
produit des
carrés (ou des rectangles si on donne des dimensions différentes
pour la hauteur et la largeur). La valeur
oval
produit des cercles ou des ovales.
Si vous voulez utiliser oval
, vous
devez charger le paquet LaTeX tikz.
width
représente la largeur des
cases ;
height
représente la hauteur des
cases ;
size
représente la taille (à la fois
width
et height
) de ces
cases ;
rule
représente l'épaisseur du contour des
cases ;
down
représente la taille du déplacement
vers le bas des cases.
Pour obtenir des cases plus petites, on pourra par exemple utiliser la commande
\AMCboxDimensions{size=1.7ex,down=.2ex}
Lors de l'utilisation de l'option ensemble
, il
est possible de modifier la manière de nommer les cases à cocher
(c'est-à-dire ce qui sera inscrit dans chaque case). Le comportement
par défaut est d'écrire des lettres majuscules, ou des chiffres si
l'option chiffres
est utilisée. Pour changer cela, il
faut redéfinir la commande \AMCchoiceLabel, qui
prend comme unique argument le nom du compteur utilisé pour la
numérotation des cases. Ainsi, pour obtenir des lettres minuscules, on
utilisera
\def\AMCchoiceLabel#1{\alph{#1}}
De même, lors de l'utilisation du paquet LaTeX arabxetex, la commande suivante pourra se révéler utile :
\def\AMCchoiceLabel#1{\textLR{\Alph{#1}}}
Pour changer le style des lettres inscrites dans les cases, on pourra également redéfinir la commande \AMCchoiceLabelFormat. Par exemple, pour obtenir des lettres grasses, on utilisera
\def\AMCchoiceLabelFormat#1{\textbf{#1}}
Notons enfin que la couleur des cases à cocher par les étudiants peut être modifiée grâce à la commande
\AMCboxColor{red}
en remplaçant red
par la couleur désirée (qui doit
être reconnue par le paquet LaTeX xcolor). Pour
obtenir un vert clair par exemple, on pourra par exemple
utiliser
\definecolor{amcboxcolor}{rgb}{0.67,0.88,0.5} \AMCboxColor{amcboxcolor}
La façon dont chaque question est présentée peut être modifiée en redéfinissant la commande LaTeX AMCbeginQuestion, dont la définition par défaut est la suivante :
\def\AMCbeginQuestion#1#2{\par\noindent{\bf Question #1} #2\hspace*{1em}}
Le premier paramètre transmis à cette commande est le numéro de
question à afficher. Le second paramètre contient
\multiSymbole
dans le cas dune question à plusieurs
réponses possibles, et est vide dans les autres cas. La commande
\multiSymbole
peut aussi être modifiée : elle a pour
charge de différentier les questions à réponses multiples des autres.
Par défaut, elle affiche un trèfle :
\def\multiSymbole{$\clubsuit$}
Enfin, on peut modifier le numéro de la prochaine question à
laide de la commande \AMCnumero
. Au début de chaque
copie, un appel à
\AMCnumero{1}
est effectué, mais cette commande peut être utilisée à tout moment.
La présentation des réponses peut être modifiée de la même
façon, si on utilise l'environnement reponsesperso
au
lieu de reponses
ou reponseshoriz
,
en redéfinissant les trois macros LaTeX suivantes :
\def\AMCbeginAnswer{} \def\AMCendAnswer{} \def\AMCanswer#1#2{#1 #2}
Certains espacements peuvent également être modifiés :
\AMCinterIrep=0pt \AMCinterBrep=.5ex \AMCinterIquest=0pt \AMCinterBquest=3ex
Ces dimensions correspondent aux espaces verticaux ajoutés entre
les questions (quest
) ou les réponses (rep
),
en mode boîte (B
, obtenu avec
\AMCBoxedAnswers ou l'option de package
bloc
) ou standard (I
).
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}
.
Il est aussi possible de modifier la mise en page du formulaire
de réponses séparé produit avec l'option ensemble
(voir section la section intitulée « 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 (ici c'est la définition par défaut) :
\def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par{\bf Question #1 :}} \def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1}
Ces définitions sont à insérer juste après la balise
\begin{document}
dans le document LaTeX.
L'entrée de codes peut être aisément effectuée à l'aide de la commande LaTeX AMCcode, par exemple pour que chaque étudiant codifie son numéro d'étudiant lui-même sur sa copie. Les deux arguments de cette commande sont un identifiant de question, auquel sera ajouté le numéro du chiffre dans le code, ainsi que le nombre de chiffres du codage désiré. On pourra par exemple utiliser l'entête de copie suivant :
{\setlength{\parindent}{0pt}\hspace*{\fill}\AMCcode{etu}{8}\hspace*{\fill} \begin{minipage}[b]{6.5cm} $\longleftarrow{}$\hspace{0pt plus 1cm} codez votre numéro d'étu\-diant ci-contre, et inscrivez votre nom et prénom ci-dessous. \vspace{3ex} \hfill\champnom{\fbox{ \begin{minipage}{.9\linewidth} Nom et prénom : \vspace*{.5cm}\dotfill \vspace*{.5cm}\dotfill \vspace*{1mm} \end{minipage} }}\hfill\vspace{5ex}\end{minipage}\hspace*{\fill} }
Dans le cas de l'utilisation de l'option
ensemble
, la commande AMCcode
devra se trouver dans la partie formulaire, c'est-à-dire après la
commande AMCdebutFormulaire.
Notez enfin que la présentation de ces formulaires de saisie de codes peut être légèrement modifiée en changeant la valeur des dimensions \AMCcodeHspace, \AMCcodeVspace et \AMCcodeBoxSep, qui représentent les espaces horizontaux et verticaux entre les cases, ainsi que les espaces entre les cases et leurs étiquette (dans le cas où celles-ci sont inscrites à côté). Les valeurs par défaut sont définies de la manière suivante :
\AMCcodeHspace=.5em \AMCcodeVspace=.5em \AMCcodeBoxSep=.1em
Notons enfin qu'il existe aussi la version horizontale AMCcodeH de cette commande, particulièrement utile pour un faible nombre de chiffres dans le code à saisir.
On peut ajouter des questions ouvertes (qui ne sont pas à choix multiple) à l'intérieur du sujet.
Une manière de procéder consiste à présenter des cases à cocher par le correcteur. Après l'examen, le correcteur lit la réponse fournie par l'étudiant et affecte les points qui correspondent en cochant certaines cases qui lui sont réservées. Il peut ensuite scanner les copies et utiliser AMC pour les corriger, tout en intégrant les résultats des questions ouvertes dans la notation (dans l'exemple suivant, chaque case cochée rapporte un demi-point à l'étudiant) :
\begin{question}{ouverte} Donnez la d\'efinition de l'inflation. \AMCOpen{lines=5}{\wrongchoice[F]{f}\scoring{0}\wrongchoice[P]{p}\scoring{1}\correctchoice[J]{j}\scoring{2}} \end{question}
Dans cet exemple, l'enseignant disposera de trois cases. En cochant la première (nommée F pour faux), l'étudiant n'aura aucun point. En cochant la deuxième (appelée P pour partielle), l'étudiant aura 1 point. En cochant la dernière (nommée J pour juste), l'étudiant optiendra 2 points.
Le premier argument de la commande \AMCOpen est une liste d'options séparées par des virgules. Les options disponibles sont les suivantes :
bool
avec la valeur true
, la zone de réponse et
les cases de notation sont présentées sur la même ligne. Avec la
valeur false
(c'est la valeur par défaut), la zone
de réponse est présentée dans un cadre placé en-dessous des
cases à cocher).
num
fixe le nombre de lignes allouées à la réponse (la valeur
par défaut est 1)
.
dim
fixe la hauteur de chaque ligne (la valeur par défaut est
1cm
).
bool
avec la valeur true
(par défaut), chaque
ligne sera matérialisée par des pointillés. Donner la valeur
false
pour les supprimer.
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é.
dim
fixe l'espace à ajouter entre les cases de la zone de notation.
color
fixe la couleur de fond de la zone de notation.
color
fixe la couleur utilisée dans la zone de notation.
bool
avec la valeur false
, la saisie automatique
(à partir des scans) n'est pas effectuée pour cette question
(cela peut être utile si vous souhaitez utiliser uniquement la
saisie manuelle pour noter la question, et que vous ne voulez
pas que les étudiants puissent perturber le processus en cochant
ces cases). La valeur par défaut est true
.
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).
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.
texte
donne un texte court qui sera inscrit dans la zone de réponse sur la correction.
dim
donne la dimension horizontale du cadre entoutant la zone
de réponse dans le cas lineup=false
. La valeur par
défaut est .95\linewidth
.
dim
donne l'épaisseur du trait pour le cadre entoutant la zone de réponse.
color
donne la couleur du cadre entoutant la zone de réponse.
dim
donne la taille de la marge entourant les cases de la zone de notation.
dim
donne l'épaisseur du trait pour le cadre entourant la zone de notation.
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 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 !
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.
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.
Il est possible de personnaliser certain textes insérés par le paquet automultiplechoice, grâce à la commande \AMCtext :
\AMCtext{none}{
remplace le texte par défaut « aucune de ces réponses n'est
correcte » (en français) par la phrase
}phrase
fournie lors de l'utilisation de l'option
completemulti
.
\AMCtext{corrected}{
remplace « Correction » (en français) par le
titre
}titre
fourni sur la correction de
l'examen.
\AMCtext{catalog}{
remplace « Catalogue » (en français) par le
titre
}titre
fourni sur le catalogue de
questions fourni avec l'option catalog
.
Vous pouvez aussi considérer l'utilisation de commandes comme celles-ci (données ici avec comme deuxième argument la valeur par défaut en français) :
\AMCtext{draft}{PROJET} \AMCtext{message}{Pour votre examen, imprimez de pr\'ef\'erence les documents compil\'es \`a l'aide de auto-multiple-choice.}
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.
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.
La paquet automultiplechoice définit en outre une commande \choixIntervalle qui simplifie ce genre de constructions, comme illustré dans l'exemple suivant :
\begin{question}{inf-expo-indep} \FPeval\VQa{trunc(2 + random * 4,0)} \FPeval\VQb{trunc(6 + random * 5,0)} \FPeval\VQr{VQa/(VQa+VQb)} Soient $X$ et $Y$ deux variables aléatoires indépendantes, de lois exponentielles de paramètres respectifs \VQa{} et \VQb{}. À quel intervalle appartient la probabilité $\mathbb{P}[X<Y]$ ? \begin{multicols}{5} \begin{reponses}[o] \choixIntervalles{\VQr}{0}{1}{0.1}\end{reponses} \end{multicols} \end{question}
Cette ligne insère dix réponses correspondant aux intervalles [0,0.1[ [0.1,0.2[ ... [0.9,1[, tout en indiquant que le bon intervalle est celui qui contient VQr. Les arguments de la commande \choixIntervalle sont les suivants :
|
La mise en forme des intervalles peut être modifiée en redéfinissant la commande LaTeX \AMCintervalFormat, définie originellement par
\def\AMCIntervalFormat#1#2{[#1,\,#2[}
pour suivre une convention différente (on rencontra par exemple souvent l'utilisation de [a,b) à la place de [a,b[).
Vous pouvez également demander aux étudiants de coder leur réponse numérique, grâce à la commande \AMCnumericChoices, comme dans l'exemple suivant :
\begin{questionmultx}{sqrt} \FPeval\VQa{trunc(5+random*15,0)} \FPeval\VQs{VQa^0.5} Calculez $\sqrt{\VQa}$ et arrondissez le résultat avec deux chiffres après la virgule. \AMCnumericChoices{\VQs}{digits=3,decimals=2,sign=true, borderwidth=0pt,backgroundcol=lightgray,approx=5} \end{questionmultx}
Notez l'utilisation de l'environnement
questionmultx
: nous avons besoin ici d'une question
multiple car plusieurs cases doivent être cochées, mais pourtant une
seule réponse est correcte, et nous ne souhaitons donc pas afficher
le symbole des questions multiples normales.
Les options disponibles dans le deuxième argument de cette commande sont les suivants :
num
donne le nombre de chiffres à coder (la valeur par défaut est 3).
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é.
num
donne la base dans laquelle sera écrit le nombre à coder (la valeur par défaut est 10).
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.
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.
bool
demande (ou non) la saisie d'un signe (la valeur par
défaut les true
).
bool
avec la valeur true
, une case doit être
obligatoirement cochée pour le signe et pour chaque chiffre.
Avec la valeur false
(valeur par défaut), si pour
certains chiffres aucune case n'est cochée, ces chiffres
seront fixés à la valeur 0.
bool
avec la valeur true
, chaque chiffre sera
représenté par une colonne. Avec la valeur false
(valeur par défaut), chaque chiffre sera représenté par une
ligne.
bool
avec la valeur true
(valeur par défaut), en
mode vertical
, les grandes valeurs des chiffres
seront placées en haut plutôt qu'en bas.
bool
avec la valeur true
, en mode
vertical
, un en-tête sera placé au-dessus de
chaque colonne correspondant à un chiffre. Le texte de cet
en-tête est donné par la commande
\AMCntextVHead, qui est originellement
définie par
\def\AMCntextVHead#1{\emph{b#1}}
Cette définition permet de numéroter les chiffres binaires.
La valeur par défaut est false
.
space
donne l'espace horizontal entre les cases
(.5em
par défaut).
space
donne l'espace vertical entre les cases
(1ex
par défaut).
space
donne l'épaisseur du cadre qui entoure toutes les cases
(1mm
par défaut).
color
donne la couleur du cadre (lightgray
par
défaut).
color
donne la couleur du fond (white
par
défaut).
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{
,
le texte par défaut étant vide).text
}
text
donne le texte correspondant à la virgule (décimale). Il
peut également être modifié par
\def\AMCdecimalPoint{
,
et la valeur par défaut est text
}\raisebox{1ex}{\bf
.}
.
bool
avec la valeur true
(valeur par défaut), un
barème sera transmis à AMC.
num
donne le score à affecter à une réponse exacte (2 par défaut).
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.
num
donne le score à affecter à une réponse approximative (1 par défaut).
num
donne la distance maximale à la valeur correcte
en-dessous de laquelle une réponse sera considérée comme
approximative (et sera rétribuée de
scoreapprox
points). La valeur par défaut est
0.
Vous pouvez modifier la valeur par défaut (pour tout votre questionnaire) de toutes ces options grâce à la commande \AMCnumericOpts, comme
\AMCnumericOpts{scoreexact=3,borderwidth=2pt}
Vous pouvez de plus ajouter un texte à la suite des questions,
quand la réponse à celle-ci est reléguée à une feuille séparée (par
l'utilisation de l'option ensemble
), en redéfinissant
la commande \AMCntextGoto, comme ceci par
exemple :
\def\AMCntextGoto{\par{\bf\emph{Codez la réponse sur la feuille de réponses séparée.}}}
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}
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}
![]() | Note |
---|---|
Les commandes \AMCIntervals et \AMCnumericChoices peuvent aussi être utilisées dans ce contexte (voir la section intitulée « Choix parmi une suite d'intervalles » et la section intitulée « Codage du résultat ») |
Il est aussi possible de générer des graphiques aléatoires(ou non),et de poser des questions de lecture graphique.
\begin{questionmult}{graphique} On considère trois fonctions f(x) dont les tracés sont représentés ci-dessous dans un repère orthonormé~: \pgfmathrandominteger{\a}{2}{4} \begin{center} \begin{tikzpicture}[domain=0:4] \draw[very thin,color=gray] (-0.1,-4.1) grid (3.9,3.9); \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$}; \draw[->] (0,-4.2) -- (0,4.2) node[above] {$f(x)$}; \draw[color=red] plot (\x,{(1+\a/4)*\x-\a}) node[right] {$f_{1} (x)$}; \draw[color=blue] plot (\x,{\a*sin(\x r)}) node[right] {$f_{2}(x)$}; \draw[color=orange] plot (\x,{\a*cos(\x r)}) node[right] {$f_{3}(x)$}; \end{tikzpicture} \end{center} Alors : \begin{reponses} \pgfmathrandominteger{\x0}{2}{4} \bonne{$f_{2}(\x0)$=\pgfmathparse{\a*sin(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.} \bonne{$f_{3}(\x0)$=\pgfmathparse{\a*cos(\x0 r)} \pgfmathprintnumber{\pgfmathresult}.} \mauvaise{La fonction $f_{1}(x)$ est une fonction linéaire.} \end{reponses} \end{questionmult}
La mise en forme des graphiques peut être facilitée par l'utilisation du package pgfplots.
La précision des nombres sous pgfmath étant limitée, certains
tracés de graphiques ne sont pas possibles avec cette méthode, la
compilation latex adressant alors une erreur du type : "Arithmetic
overflow". Les packages tikz et
pgfplots permettent de pallier à ce manque de
précison en faisant appel au programme gnuplot
(voir documentation du package) pour obtenir les points de tracé.
Dans ce cas, il faut installer au préalable
gnuplot sur votre distribution, puis lancer la
compilation latex avec l'option --shell-escape
.
Pour cela, aller dans les préférences de AMC et choisir pour moteur
LaTeX du projet en cours : "pdflatex
--shell-escape
" (sans les guillemets).
Il est possible d'utiliser le langage de programmation LUA au sein de documents latex en compilant le sujet grâce à la commande lualatex. Si vous choisissez cette compilation, votre sujet doit être encodé en UTF-8, et il ne faut pas charger le package inputenc. Pour de plus amples informations, lire l'article de Manuel Pégourié-Gonnard présentant le projet à l'adresse suivante : http://dante.ctan.org/tex-archive/info/luatex/lualatex-doc/lualatex-doc.pdf
Pour faire appel au langage LUA, il faut utiliser la commande \directlua. La fonction la plus utile est de pouvoir écrire un résultat calculé par LUA dans le document tex grâce à la commande : tex.print
Encore une fois, si vous utilisez des nombres aléatoires, commencer par choisir la base de génération des nombres pseudo-aléatoires.
\directlua{math.randomseed (2048)}
Voici un exemple très simple, de fichier:
\documentclass[a4paper]{article} %\usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage[francais,bloc,completemulti]{automultiplechoice} \begin{document} \exemplaire{10}{ %%% debut de l'en-tête des copies : \noindent{\bf QCM \hfill TEST} \vspace*{.5cm} \begin{minipage}{.4\linewidth} \centering\large\bf Sujet simpliste \end{minipage} \champnom{\fbox{\begin{minipage}{.5\linewidth} Nom et prénom : \vspace*{.5cm}\dotfill \vspace*{1mm} \end{minipage}}} %%% fin de l'en-tête \directlua{math.randomseed (2048)} \directlua{a=math.random()} \begin{question}{calcul} Quelle est la racine carrée de \directlua{tex.print(a)}? \begin{reponses} \bonne{\directlua{tex.print(math.sqrt(a))}} \mauvaise{\directlua{tex.print(math.sqrt(2*a))}} \mauvaise{\directlua{tex.print(math.sqrt(a*1.001))}} \end{reponses} \end{question} \clearpage } \end{document}
Il est aussi possible de mettre en forme les résultats donnés par lua soit en écrivant des fonctions lua, soit en utilisant le package siunitx
![]() | Note |
---|---|
Les commandes \AMCIntervals et \AMCnumericChoices peuvent aussi être utilisées dans ce contexte (voir la section intitulée « Choix parmi une suite d'intervalles » et la section intitulée « Codage du résultat ») |