Interraction entre \bareme \baremeDefautS \baremeDefautM

Added by Olivier V about 3 years ago

Bonjour,

Sur le principe je souhaiterais définir en commun le nombre de points par question avec la variable PPQ = 20 / NBQ (nombre de questions)

Le code auquel j'ai pensé est le suivant :

\bareme{setglobal.NBQ=10,setglobal.PPQ=(20/NBQ)}
\baremeDefautS{p=0,e=0,v=0,b=PPQ,m=0} %barème pour les questions simples
\baremeDefautM{formula=( NBC+NMC==N ? 0 : (PPQ/NB)*NBC-0.5*NMC )} %barème pour les questions multiples (code qui en lui même est correct et fait ce que je veux)

Le code ci-dessus ne fonctionne pas car il me crée un bug incompréhensible se manifestant par une question qui est notée sur 0 (sur les 10 questions) et donc un total sur 18 points pour mes 10 questions.

Par contre le code suivant fonctionne mais je souhaiterais automatiser le b=2

\bareme{p=0,e=0,v=0,b=2,m=0}
\baremeDefautM{setglobal.NBQ=10,setglobal.PPQ=(20/NBQ),formula=( NBC+NMC==N ? 0 : (PPQ/NB)*NBC-0.5*NMC )}

Voyez vous comment corriger le premier code ?

Merci beaucoup.


Replies (7)

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Alexis Bienvenüe about 3 years ago

Est-ce que cela fonctionne avec \bareme{setglobal.PPQ=(20/10)} ?
Par ailleurs, il me semble que vous pouvez obtenir un résultat similaire en utilisant un nombre de points entier (un ou deux par exemple), et en rapportant le score final à 20 à la fin avec Préférences/Projet/Note maximale.

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Frédéric Bréal about 3 years ago

J'ai trouvé une méthode qui s'apparente au syndrome XYZ mais ça fonctionne avec mon test.
Dans le préambule, déclarez les paquets totcount et xfp puis

\regtotcounter{AMCquestionaff}

AMCquestionaff est le compteur interne des questions.

Après \begin{document}

\makeatletter
\def\bonPoints{\fpeval{20/\value{AMCquestionaff@totc}}}
\makeatother

\bareme{p=0,e=0,v=0,b=\bonPoints,m=0}
\baremeDefautM{formula=( NBC+NMC==N ? 0 : \bonPoints/NB*NBC-0.5*NMC )}

Inconvénient, vous devez compiler 2 fois manuellement (Mettre à jour les documents).

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Olivier V about 3 years ago

Bonjour,

Merci à tous les deux pour vos réponses que je n'ai pas eu le temps de regarder les jours derniers.

@Alexis Bienvenüe

Oui avec la modification le code ci-dessous fonctionne

\bareme{setglobal.PPQ=(20/10)}
%\bareme{setglobal.NBQ=10,setglobal.PPQ=(20/NBQ)}
\baremeDefautS{p=0,e=0,v=0,b=PPQ,m=0} %barème pour les questions simples
\baremeDefautM{p=0,formula=( NBC+NMC==N ? 0 : (PPQ/NB)*NBC-0.5*NMC )} %barème pour les questions multiples (code qui en lui même est correct et fait ce que je veux)

@Alexis Carpeaux

Merci beaucoup pour cette solution qui semble fonctionner. Il faut par contre je suppose être très vigilent à avoir un document bien doublement compilé à la création sans quoi le barème ne fonctionnera pas par la suite... A moins que vous ne vouliez dire de faire une double correction ?

Ayant pour mauvaise habite de me souvent modifier le barème durant la phase de correction, j'ai peut de me trouver avec quelque chose de bloquant.

Je pensais donc mettre simplement :

\def\bonPoints{\fpeval{20/10}}
\bareme{p=0,e=0,v=0,b=\bonPoints,m=0}
\baremeDefautM{p=0,formula=( NBC+NMC==N ? 0 : \bonPoints/NB*NBC-0.5*NMC )}

Mais chose étrange en mettant \def\bonPoints{\fpeval{20/5}} je me retrouve avec une question simple notée sur 2 et une question multiple notée sur 4 alors que les autres sont bien sur 2.

Qu'ai-je encore fait de mal ?

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Frédéric Bréal about 3 years ago

L'astuce pour obliger AMC à recompiler, c'est d'utiliser \AMCpageref{XX} et \AMClabel{XX}.
Au début de vos consignes, vous écrivez : ce sujet contient \AMCpageref{XX} pages.
Et à la fin du sujet, juste avant l'accolade fermante, \AMClabel{XX}.

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Olivier V about 3 years ago

Merci. Je vais tester.

Avez vous une idée sur le problème décrit précédemment concernant le code :

\def\bonPoints{\fpeval{20/5}}
\bareme{p=0,e=0,v=0,b=\bonPoints,m=0}
\baremeDefautM{p=0,formula=( NBC+NMC==N ? 0 : \bonPoints/NB*NBC-0.5*NMC )}

Je me retrouve avec une question simple notée sur 2 et une question multiple notée sur 4 alors que les autres sont bien sur 2.

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Alexis Bienvenüe about 3 years ago

Est-ce que ça marche sans fpeval ?

\def\bonPoints{20/5}

RE: Interraction entre \bareme \baremeDefautS \baremeDefautM - Added by Olivier V about 3 years ago

Bonjour,

Non le problème est le même avec \def\bonPoints{20/5} et aussi avec \def\bonPoints{4} :
une question simple et une question multiple sont sur deux.

Il faudrait que je prenne le temps de créer un fichier simple et propre mettant en évidence l'erreur et que je puisse poster ici. Je le ferai dès que possible pour ne pas abuser du vôtre de temps...

(1-7/7)