Forums » Utilisation d'AMC (french) »
Boucle pour générer des questions/réponses
Added by Albert Loa almost 6 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 6 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 6 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 almost 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 almost 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 10 months 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 10 months 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 10 months 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)