Forums » Utilisation d'AMC (french) »
Boucle pour générer des questions/réponses
Added by Albert Loa almost 7 years ago
Bonsoir,
Je cherche à créer un formulaire comportant un nombre N de questions formellement très proches.
J'ai essayé le script suivant (avec le package pgffor)
Il ne plante pas mais... il ne fonctionne pas => j'obtiens une page blanche :-(
Une idée pour résoudre cette énigme ?
Merci bien
foreach \k in {1,...,\N}{
\element{questions}{
\begin{question}{Question \k} Blabla0 \k
\begin{reponses}
\bonne{blabla1 \k} \bareme{1}
\mauvaise{blabla2 \k} \bareme{0.5} \\
\mauvaise{blabla3 \k} \bareme{0} \\
\end{reponsesh}
\end{question}}
}
Replies (7)
RE: Boucle pour générer des questions/réponses
-
Added by DENIS Sébastien almost 7 years ago
Bonsoir
\usepackage{fp}
.....
\element{groupe}
\FPeval{\LeNumeroAleatoireQuestion}{random}
\begin{question}{titre question \LeNumeroAleatoireQuestion}
RE: Boucle pour générer des questions/réponses
-
Added by Albert Loa almost 7 years ago
Bonjour,
Je reformule ma question car elle a été mal comprise.
Ce que je veux obtenir c'est le questionnaire suivant.
Question 1 Le texte de la la question dans lequel le paramètre de boucle vaut 1
- la bonne réponse dans lequel le paramètre de boucle vaut 1
- une mauvaise réponse dans lequel le paramètre de boucle vaut 1
- une autre mauvaise réponse dans lequel le paramètre de boucle vaut 1
Question 2 Le texte de la la question dans lequel le paramètre de boucle vaut 2
- la bonne réponse dans lequel le paramètre de boucle vaut 2
- une mauvaise réponse dans lequel le paramètre de boucle vaut 2
- une autre mauvaise réponse dans lequel le paramètre de boucle vaut 2
etc. jusqu'à avoir N questions formellement très proches (c'est moi qui fixe la valeur de N) rangées de manière déterministe de 1 à N.
Pour éviter d'avoir à copier/coller N fois la même chose (et à avoir à modifier manuellement l'identifiant de chaque question), je voudrais utiliser une boucle.
Voilà l'idée.
Merci bien
RE: Boucle pour générer des questions/réponses
-
Added by Alexis Bienvenüe over 6 years ago
Pouvez-vous donner un exemple concret de ce que vous voulez faire ?
RE: Boucle pour générer des questions/réponses
-
Added by Albert Loa over 6 years ago
Bonsoir,
En fait, je voulais créer un formulaire de correction, avec des cases à cocher (par moi).
J'ai fini par y parvenir en procédant comme suit.
Je fixe en début de script le nombre de questions souhaité (19 ici).
Puis boucle.
Cordialement
% NOMBRE DE QUESTIONS
\newcommand\nombrequestions{19}
\newcounter{indice}
\element{exercice}{
\forloop{indice}{0}{\value{indice} < \nombrequestions}{
\begin{question}{Q\arabic{indice}}
\vspace*{-1.1cm}
\begin{reponseshoriz}
\begin{tabular}{p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}p{0.8em}}
4,0 & {\scriptsize 3,5} & 3,0 & {\scriptsize 2,5} & 2,0 & {\scriptsize 1,5} & 1,0 & {\scriptsize 0,5} & 0,0 \\
\bonne{} \bareme{4} & \mauvaise{} \bareme{3.5} & \mauvaise{} \bareme{3} & \mauvaise{} \bareme{2.5}
& \mauvaise{} \bareme{2} & \mauvaise{} \bareme{1.5} & \mauvaise{} \bareme{1} & \mauvaise{} \bareme{0.5} & \mauvaise{} \bareme{0} \\
\end{tabular}
\end{reponseshoriz}
\vspace*{-0.5cm}
\traitdeseparation
\end{question}
}}
RE: Boucle pour générer des questions/réponses
-
Added by Bruno GUILLON over 1 year ago
Bonjour,
J'avais une envie similaire, et j'ai bidouillé un peu pour permettre la définition d'éléments de groupe, à l'intérieur d'une boucle foreach, avec accès aux variables de boucle (ou autre, d'ailleurs). Je mets ma solution, qui pourrait servir à d'autres.
\documentclass{article}
\usepackage[noshuffle,noshufflegroups,answers]{w-automultiplechoice}
\usepackage{pgffor}%pour faire foreach dans l'exemple
%% Redéfinition de \element
\usepackage{pgfkeys}
\pgfkeys{
/amc/element locals/.is family,
/amc/element locals/.unknown/.code={%
\expandafter\expandafter\expandafter\def%
\expandafter\csname\pgfkeyscurrentname\endcsname%
{#1}%
},
/amc/element locals/.unknown/.default={},
}
\makeatletter
% auxiliary macro of improved \element macro
\def\wamc@element@aux#1#2#3{%
% #1: already-expanded local definitions
% #2: group identifier
% #3: element body
\wamc@element@original{#2}{\pgfqkeys{/amc/element locals}{#1}#3}%
}
% save original \element macro
\let\wamc@element@original\element
% renew \element macro
\renewcommand\element[3][]{%
% #1: optional local definitions
% #2: group identifier
% #3: element body
\edef\wamc@element@locals{#1}% force expansion
\expandafter\wamc@element@aux\expandafter{\wamc@element@locals}{#2}{#3}%
}
\makeatother
%%% Exemple
% original usage is preserved
\element{mygroup}{%
\begin{question}{q-foo-bar}
Check the \textsf{foo}-box, but not the \texttt{bar}-box.
\begin{choices}
\correctchoice{\textsf{foo}}
\wrongchoice{\textsf{bar}}
\end{choices}
\end{question}
}
% using local declarations
\element[x=$b$,y=$a$]{mygroup}{%
\begin{question}{q-\x-\y}
Check the \x-box but not the \y-box.
\begin{choices}
\correctchoice{\x}
\wrongchoice{\y}
\end{choices}
\end{question}
}
% taking advantages of the local and foreach loop
\foreach \x/\y in {0/1, 1/0, a/b}{%
\element[x=$\x$,y=$\y$]{mygroup}{%
\begin{question}{q-\x-\y}
Check the \x-box but not the \y-box.
\begin{choices}
\correctchoice{\x}
\wrongchoice{\y}
\end{choices}
\end{question}
}
}
\begin{document}
\insertgroup{mygroup}
\end{document}
RE: Boucle pour générer des questions/réponses
-
Added by Bruno GUILLON over 1 year ago
Bruno GUILLON wrote:
Bonjour,
J'avais une envie similaire, et j'ai bidouillé un peu pour permettre la définition d'éléments de groupe, à l'intérieur d'une boucle foreach, avec accès aux variables de boucle (ou autre, d'ailleurs). Je mets ma solution, qui pourrait servir à d'autres.
[...]
Oups. Comment faites-vous pour mettre du code? Peut-on éditer le message précédent?
RE: Boucle pour générer des questions/réponses
-
Added by Frédéric Bréal over 1 year ago
Il y a un crayon sur le bord droit de la page pour éditer.
Cette mise en page provient d'une accolade ouvrante suivie du symbole pourcentage.
Il suffit d'écarter ces 2 symboles pour avoir une mise en page lisiible.
(1-7/7)