Détecter le mode corrigé

Added by Gérard Carpeaux about 6 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 about 6 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 Gérard Carpeaux about 6 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 2 months 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 Gérard Carpeaux 2 months 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 2 months 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 2 months 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 Gérard Carpeaux 2 months 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 2 months 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 Gérard Carpeaux 2 months 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 2 months 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)