Forums » Utilisation d'AMC (french) »
Détecter le mode corrigé
Added by Frédéric Bréal over 9 years ago
Depuis ce message, j'utilise le paquet environ mais couplé avec les commandes \AMCOpen ou \begin{reponses}, il perturbe la compilation et la fabrication du corrigé. Les questions et les réponses sont dans un ordre différent par rapport au sujet.
Comment puis-je détecter le mode corrigé pour réaliser ceci ?
\AMCOpen{si mode corrigé alors lines=0\newline\explain{réponse} sinon lines=3}{\bonne{1}\bareme{1}}
La seule idée que j'ai eue est
\makeatletter \ifAMC@correchead \FPset{\ModeCorrige}{1}\fi} \makeatother
puis j'ai essayé 2 méthodes qui ne fonctionnent pas.
\AMCOpen{\FPeq{\ModeCorrige}{1} lines=0\newline\explain{réponse} \else lines=3 \fi}{\bonne{1}\bareme{1}}
\AMCOpen{\ifthenelse{\ModeCorrige=1} {lines=0\newline\explain{réponse}} {lines=3}}{\bonne{1}\bareme{1}}
Merci
Replies (10)
RE: Détecter le mode corrigé - Added by Alexis Bienvenüe over 9 years ago
Peut-être en créant une nouvelle commande, qui appellera \AMCOpen{lines=3}{...}
en mode normal, et \AMCOpen{lines=0}{...} explication
en mode corrigé ?
RE: Détecter le mode corrigé - Added by Frédéric Bréal over 9 years ago
Je n'avais pas pensé que le else pouvait s'utiliser dans vos commandes.
Je mets mon exemple à des fins de documentation
\makeatletter \newcommand{\QuestionOuverteModeCorrige}[2][3]{ \ifAMC@correchead \def\AMCotextReserved{} \AMCOpen{lines=0,lineup=true}{} \vspace*{-1em}\explain{blabla} \else% \AMCOpen{lines=#1}{#2} \fi} \makeatother
\begin{question}{CourtCircuitJustification} Justifie ta réponse. \QuestionOuverteModeCorrige[6]{\mauvaise{0.5}\bareme{0.5}\bonne{1}\bareme{1}} \end{question}
Merci
RE: Détecter le mode corrigé - Added by Hervé Cabaud over 3 years ago
bonjour, je deterre le sujet mais je me voudrais continuer de me servir de \QuestionOuverteModeCorrige , mais avec pdfform.
Je peux ajouter à chaque fois des \namefielddots ,
mais je n'ai pas réussi à changer la commande pour remplacer automatiquement dans mes anciens sujets.
\def\correction{correction}
\makeatletter
\newcommand{\QuestionOuverteModeCorrige}[2][3]{
\ifAMC@correchead
\def\AMCotextReserved{}
\AMCOpen{lines=0,lineup=false,framerulecol=white,dots=false,lineheight=0cm}{}
\vspace*{-3em}\explain{ \color{red} \correction}
\else%
\AMCOpen{lines=#1,framerulecol=white,lineheight=0.5cm}{#2}
\fi}
\makeatother
Auriez vous une solution ?
Merci
RE: Détecter le mode corrigé - Added by Frédéric Bréal over 3 years ago
Je n'utilise pas pdfform mais j'ai proposé une solution lors de petits tests https://project.auto-multiple-choice.net/issues/717 à Alexis.
Je ne peux que vous conseiller de tester. Cette solution est basée sur une copie du code d'hyperref ou de son adaptattion dans le fichier sty d'AMC ; en bref, je ne sais pas coder et je ne suis pas certain que ce soit la meilleure.
RE: Détecter le mode corrigé - Added by Hervé Cabaud over 3 years ago
Merci ! J'ai testé à l'instant.
j'ai inséré votre proposition .
\makeatletter
\newcommand{\AMCOpenfielddots}{ %
\noindent%
\ifAMC@pdfform%
\hspace*{\fill}%
\TextField[name={\the\AMCid@etud:namefield},width=\linewidth,bordercolor=0 0 0,multiline=true]{}%
\hspace*{\fill}
\else%
\dotfill
\fi%
}
\makeatother
puis
\makeatletter
\newcommand{\QuestionOuverteModeCorrige}[2][3]{
\ifAMC@correchead
\def\AMCotextReserved{}
\AMCOpen{lines=0,lineup=false,framerulecol=white,dots=false,lineheight=0cm}{}
\vspace*{-3em}\explain{ \color{red} \correction}
\else%
\AMCOpen{lines=#1,framerulecol=white,lineheight=0.5cm,contentcommand=AMCOpenfielddots}{#2}
\fi}
\makeatother
cela crée bien tous les formulaires souhaités, mais ne change pas leur nom : 1:namefield. Le compteur ne semble pas s'incrémenter. \the\AMCid@etud:namefield ?
Du coup , si on remplit un champs, cela les remplit tous de manière identique.
RE: Détecter le mode corrigé - Added by Hervé Cabaud over 3 years ago
j'ai réussi , j'ai remplacé \the\AMCid@etud:namefield par \theAMCquestionaff, et ça fonctionne, les champs de pdfform des questions ouvertes sont bien numérotés.
RE: Détecter le mode corrigé - Added by Frédéric Bréal over 3 years ago
Bravo !
Effectivement, en ayant la solution sous les yeux, cela me paraît évident.\theAMCquestionaff
est le compteur des questions alors que \the\AMCid@etud
est le compteur du sujet.
Peut-être pouvez-vous mettre à jour la demande 717 (lien indiqué plus haut) ?
RE: Détecter le mode corrigé - Added by Hervé Cabaud over 3 years ago
J'ai bien mis à jour la demande 717, mais j'ai encore un soucis. Je n'arrive pas à faire varier la hauteur de la case réponse.
Avec multiline, j'ai bien la possibilité de mettre plusieurs lignes dans les cadres, mais \AMCOpen{lines=#1 ne semble pas changer quoique ce soit.
J'ai essayé avec un "height=#1\baselineskip" dans textfield mais cela ne fonctionne pas. Auriez vous une idée ?
RE: Détecter le mode corrigé - Added by Frédéric Bréal over 3 years ago
L'option pdfform
fonctionne avec le paquet hyperref
. Dans la documentation, j'ai trouvé à la page 38 la commande \def\DefaultHeightofTextMultiline{4\baselineskip}
\begin{question}{pdf} Quel lecteur utilises-tu et sous quel OS ? \def\DefaultHeightofTextMultiline{1.5\baselineskip} \AMCOpen{contentcommand=AMCOpenfielddots}{\bonne{1}\bareme{1}} \end{question}
Cela semble fonctionner.
RE: Détecter le mode corrigé - Added by Hervé Cabaud over 3 years ago
Super !
Je cherchais à mettre le \baslineskip dans AMCOpen ! Merci.
Et en mettant
\def\DefaultHeightofTextMultiline{#1\baselineskip}
j'ai mes cadres à la taille demandée. Plus besoin de rajouter des Textfield supplémentaires.
\def\correction{correction}
\makeatletter
\newcommand{\QuestionOuverteModeCorrige}[2][3]{
\ifAMC@correchead
\def\AMCotextReserved{}
\AMCOpen{lines=0,lineup=false,framerulecol=white,dots=false,lineheight=0cm}{}
\vspace*{-3em}\explain{ \color{red} \correction}
\else%
\def\DefaultHeightofTextMultiline{#1\baselineskip}
\AMCOpen{lines=#1,framerulecol=white,lineheight=1cm, contentcommand=AMCOpenfielddots}{#2}
\fi}
\makeatother
(1-10/10)