\explaincontext

Added by Liouba Leroux 7 months ago

Bonjour,
Désolé de poser une question qui me paraît aussi bête, mais je ne comprends pas comment utiliser la commande \explaincontext [[https://www.auto-multiple-choice.net/fr/doc/latex/#explaincontext.command]]

Que faut-il écrire dans la question ?
Que faut-il écrire après les questions ?

Mon objectif (mais je me trompe peut-être quand à l'utilisation de cette commande), c'est de définir des explications dans l'environnement question, mais qu'elles soient affichés (dans les corrections) sur une page supplémentaire, numérotées comme la question, afin de respecter la mise en page de la partie énoncé mais de regrouper dans un même include question et explication (jusqu'à présent j'utilisais

\makeatletter
\newcommand{\AffichageSiCorrige}[1]{\ifAMC@correc #1\fi}
\makeatother

mais cela a l'inconvénient de séparer énoncé et correction dans le fichier.

J'ai essayé comme cela par exemple (et avec d'autres variations) mais cela ne fonctionne pas, je rate qqch...

\documentclass[a4paper]{article}

\usepackage[utf8x]{inputenc}    
\usepackage[T1]{fontenc}

\usepackage[francais,bloc,completemulti]{automultiplechoice}    
\begin{document}

\exemplaire{1}{    

%%% 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}\namefielddots   
                  \vspace*{1mm}
                \end{minipage}
         }}

%%% 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}
  \explain{explication}
\end{question}

Fin du questionnaire 

Je voudrais que l'explication apparaisse ici :
\explaincontext
}   

\end{document}

Merci !


Replies (16)

RE: \explaincontext - Added by Frédéric Bréal 7 months ago

Si votre version AMC est 1.7.0, le petit code est devenu inutile ; il suffit d'utiliser \explain.
Les 2 commandes affichent leur argument lors de la correction mais \explain doit être dans un environnement question ce qui n'est pas obligatoire pour \explaincontext.

Pour votre question, se je l'ai bien comprise, j'utiliserais \AMClabel{} \AMCref{} voire le paquet \cleveref.

\begin{question}{prez}\AMClabel{prez}%ou un autre identifiant   
  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}

\newpage

 \AMCref{prez} : \explaincontext{}

RE: \explaincontext - Added by Liouba Leroux 7 months ago

Merci pour votre réponse !

Je ne crois pas que cela soit ce que je voulais. J'ai fait plusieurs tests à partir de votre code, la partie AMClabel/ref fonctionne, mais si je mets qqch dans \explaincontext à la fin cela s'affiche, mais je ne l'ai pas écrit là où je voulais et si je les mets dans un explain dans la question, cela s'affiche dans la question (normal).

Ce que je voudrais, c'est :
  • mettre les explications dans l'environnement question (pour à terme déporter les questions et leurs explications dans des fichiers include atomiques mis dans une forge)
  • que elles ne s'affichent jamais (quelque soit le mode de compilation) dans la question
  • que ces explications s'affichent à la fin du document corrigé et corrigé individuel, pour les élèves qui ont eu la question (si tous n'ont pas les mêmes questions).

Je ne sais pas si c'est plus clair ?
Je ne sais pas si c'est possible ?

RE: \explaincontext - Added by Frédéric Bréal 7 months ago

que elles ne s'affichent jamais (quelque soit le mode de compilation) dans la question

Je crois que j'ai réussi.

que ces explications s'affichent à la fin du document corrigé et corrigé individuel, pour les élèves qui ont eu la question (si tous n'ont pas les mêmes questions)

Pour l'instant pas d'idée.

simple.tex (1.8 kB)

RE: \explaincontext - Added by Liouba Leroux 7 months ago

ah oui, c'est pas mal... !
çà répond bien aux deux premiers points.
pour le troisième, s'il faut faire à la main... on fera à la main :-)

Si il y avait une variable contenant les référence de toutes les questions d'une copies, on pourrait parcourir ce tableau et automatiser cela je suppose, mais je ne sais pas si cela existe ?

Merci !

RE: \explaincontext - Added by Frédéric Bréal 7 months ago

Si il y avait une variable contenant les référence de toutes les questions d'une copies

Je n'ai pas ça mais la présence de chaque identifiant de question est vérifiée.

simple.tex (2 kB)

RE: \explaincontext - Added by Liouba Leroux 7 months ago

Parfait !
Je vous remercie vraiment pour ces découvertes de ces fonctionnalités plus avancées, je n'arrive pas toujours à identifier un chemin pour arriver au bout de l'idée.
Je vais essayer de mettre tout çà en musique sur des exemples réels, mais çà me paraît clairement très bien parti !
Merci encore !

RE: \explaincontext - Added by Alexis Bienvenüe 7 months ago

On peut également utiliser une liste de tokens et y ajouter les explications au fur et à mesure.

RE: \explaincontext - Added by Liouba Leroux 7 months ago

Je crois que çà fait tout...
Merci Alexis !
Je vais essayer d'intégrer tout cela au modèle d'exemples que j'ai déposé hier....

RE: \explaincontext - Added by Liouba Leroux 3 months ago

Bonjour,
j'ai essayé (enfin) de mettre en œuvre la solution des tokens qui me semblait parfaite... jusqu'à ce que j'ai une erreur de compilation si je tente de mettre plusieurs lignes dans une explication.
Or ce sera parfois nécessaire, avec parfois des corrigés complets et complexes (figures, maths, etc).
J'ai essayé d'encapsuler avec un \parbox sans succès.

Par exemple à partir de l'exemple d'Alexis :

\element{geographie}{
  \begin{question}{Paris}\AMClabel{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}
    \expliqueplustard{Paris}{\parbox{\linewidth}{Paris est en France, 

    qui est bien un pays européen !}}
  \end{question}
}

Une idée ?

RE: \explaincontext - Added by Alexis Bienvenüe 3 months ago

Oui en effet il faut utiliser \long\def\expliqueplustard au lieu de \def\expliqueplustard.

RE: \explaincontext - Added by Liouba Leroux 3 months ago

Ah oui, en effet !
Merci !

RE: \explaincontext - Added by Frédéric Bréal 3 months ago

J'ai mis \endgraf sans ajouter \long et cela fonctionne aussi.

\expliqueplustard{Nantes}{C'est Henri IV qui l'a signé en 1598. \endgraf Il
 a été révoqué par Louis XIV en signant l'édit de Fontainebleau en 1685}

RE: \explaincontext - Added by Liouba Leroux 4 days ago

J'utilise depuis la rentrée 2025 avec bonheur la solution d'Alexis, encore une fois merci !
Aujourd'hui, j'ai un problème que je n'arrive pas à résoudre.
Le code de l'exercice est :

\element{evolutions}{ % Taux d'évolution : calcul de la valeur finale
    \begin{question}{E.F}\AMClabel{E.F}
        \FPeval\VQaT{trunc(3+random*7,0)} % valeur du taux entier entre 3 et 9
        \FPeval\VQaS{clip(1000100*(1+VQaT /100))} % solution
        \FPeval\VQaNSa{clip(1000100*VQaT /100)} % Vi * T/100 
        \FPeval\VQaNSb{clip(1000100*(1+VQaT /10))} % Vi *1.T
        \FPeval\VQaNSc{clip(1000100+VQaT)} % Vi + T

        \begin{minipage}{0.65\textwidth}
            Au cours du premier trimestre 2024, le nombre de demandeurs d’emploi inscrits en catégorie A ou B qui ont accédé à un emploi était de \num{1000100}. Il a augmenté de \VQaT{}~\% durant le second trimestre 2024. Le nombre de demandeurs d’emploi inscrits en catégorie A ou B qui ont accédé à un emploi entre avril et juin 2024 était égal à….
            \begin{reponseshoriz}
                \bonne{\num{\VQaS}}
                \mauvaise{\num{\VQaNSa}}
                \mauvaise{\num{\VQaNSb}}
                \mauvaise{\num{\VQaNSc}}
            \end{reponseshoriz}
        \end{minipage}
        \hfill \fbox{\parbox[3cm]{0.28\textwidth}{Schéma et calculs (non notés)\\ \\ \\ \\}}
        \expliqueplustard{E.F}{La valeur finale est $V_f=V_i\times (1+t)=\num{1000100}\times\left(1+\dfrac{\VQaT}{100}\right)=\num{\VQaS}$}
    \end{question}

Il ne compile pas car \VQaT n'est pas reconnu au moment où l'explication est fournie : Undefined control sequence.
<argument> \VQaT
Le fichier ci-dessous compile si on commente le \expliqueplustard...
Je suppose que cela vient de la portée de la variable \VQaT, mais je ne comprends pas pourquoi elle est donnée comme non définie...
Une idée ?

explications.tex (2.8 kB)

RE: \explaincontext - Added by Alexis Bienvenüe 4 days ago

La macro \expliqueplustard ajoute le contenu à une liste de matériel qui n'est interprété qu'à la fin de la copie quand on fait appel à \AMCexpliqueTout, et à cet endroit là vos variables ne sont plus définies…
On peut ajouter des commandes pour transmettre la valeur des variables à la liste de matériel en question.

\cs_generate_variant:Nn \expl_ajoute:n { x }
\cs_new:Npn \expl_variable:N #1 {
  \expl_ajoute:n { \def#1 }
  \expl_ajoute:x { { #1 } }
}
\cs_new_eq:NN \expliquevariable \expl_variable:N

puis dans la question
        \expliquevariable{\VQaT}%
        \expliquevariable{\VQaS}%
        \expliqueplustard{E.F}{La valeur finale est $V_f=V_i\times (1+t)=\num{1000100}\times\left(1+\dfrac{\VQaT}{100}\right)=\num{\VQaS}$}

RE: \explaincontext - Added by Liouba Leroux 4 days ago

Super ! Je vais pouvoir adapter à mes autres questions.
Je me doutais de la cause mais j'étais bien incapable de résoudre le problème.
Encore MERCI !

RE: \explaincontext - Added by Liouba Leroux 4 days ago

PS : je ne sais pas si mon usage est général, mais dans le secondaire, où on donne presque systématiquement des corrigés complets des devoirs, ces options m'apportent un confort formidable : l'énoncé et la correction sont au même endroit du code, sans avoir de contraintes de place pour la correction puisque c'est déporté sur une page supplémentaire.
Quand je rends les copies numériques, je fais "ajouter la correction" et les élèves ont à la suite leur copie et la correction complète (bon, ils ont même deux fois la correction des cases de qcm, une fois en surimpression sur leur copie et une fois vierge, mais ce n'est pas très grave).
Je trouve "qu'on" pourrait davantage communiquer sur cet ensemble de macros, voir l'intégrer au code d'AMC pour factoriser le code dans le package. Je veux bien réfléchir à une présentation un peu plus structurée que ce fil, dans le wiki, mais si vous décidez de l'intégrer dans le code, ce n'est peut-être pas le meilleure endroit ?

(1-16/16)