Interros de calcul et placement aléatoire des questions

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Interros de calcul et placement aléatoire des questions

Messagepar Dryss » Mardi 14 Septembre 2010, 07:41

Bonjour,

Voilà, j'aurais aimé savoir s'il existait un package qui me permettrait de placer aléatoirement mes questions dans une interrogation de calcul mental.

Par exemple, je mets dans mon fichier source toutes mes questions dans un enumerate, et lors de la compilation, il me place tous les items dans un ordre au hasard.

Comme j'avais déjà vu un package qui permettait le placement aléatoire de réponses dans un QCM (http://www.altermundus.fr/pages/download.html, le package alterqcm) je me suis dit que ça devait être possible, mais la fonction recherche ne m'a rien donné.

Merci d'avance pour vos réponses !
TZR en lycée dans l'académie de Lyon.
Dryss
Déca-utilisateur
 
Messages: 19
Inscription: Dimanche 09 Mai 2010, 11:45
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Interros de calcul et placement aléatoire des questions

Messagepar JojoBoulix » Mardi 14 Septembre 2010, 13:04

Bonjour.

J'avais aussi besoin d'un mélange de réponses de QCM, alors je l'avais mis en place dans le paquet automultiplechoice [1]. Il est possible de l'utiliser pour mélanger ce qu'on veut :

Code: Tout sélectionner
\documentclass{article}
\usepackage{automultiplechoice}
\begin{document}

\element{liste}{\item Premier item}
\element{liste}{\item Deuxi\`eme item}
\element{liste}{\item Troisi\`eme item}

\begin{enumerate}
\melangegroupe{liste}
\restituegroupe{liste}
\end{enumerate}

\end{document}


Par contre, ce package met aussi en place par défaut une mise en forme de la page très particulière adaptée à la reconnaissance des réponses à partir des scans, ce dont vous n'aurez pas besoin...
Une solution consisterait donc à extraire de automultiplechoice.sty la partie concernant les commandes de mélange de groupe de morceaux de code.

Si cela vous intéresse, je peux regarder ça - mais il y a certainement un autre package qui fait déjà ça ?

Cordialement,
AB

[1] http://home.gna.org/auto-qcm/
et http://svn.gna.org/viewcvs/auto-qcm/tru ... iew=markup
JojoBoulix
Déca-utilisateur
 
Messages: 36
Inscription: Lundi 08 Décembre 2008, 15:07
Statut actuel: Actif et salarié | Maître de conférence

Re: Interros de calcul et placement aléatoire des questions

Messagepar Dryss » Mardi 14 Septembre 2010, 19:17

JojoBoulix

Merci beaucoup ! C'est effectivement dans l'idée ce que je désirais.

Maintenant mon souci à régler vont être d'enlever la mise en page étrange (J'ai réussi pour le moment à enlever le texte en pied de page, le gros DRAFT en plein milieu en tripotant le .sty, mais la présence de l'etête et du pied de page m'embêtent encore)

Pour ce qui est de chercher les commandes permettant le mélange, désolé mais ça dépasse mes capacités en TeX.

Cependant, merci encore !
TZR en lycée dans l'académie de Lyon.
Dryss
Déca-utilisateur
 
Messages: 19
Inscription: Dimanche 09 Mai 2010, 11:45
Statut actuel: Actif et salarié | Enseignant

Re: Interros de calcul et placement aléatoire des questions

Messagepar JojoBoulix » Mardi 14 Septembre 2010, 20:06

Voici un fichier melange.sty qui extrait les commandes utiles :
Code: Tout sélectionner
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{melange}
%--------------------------------------------------------------
% generateur aleatoire de bits, cf. TuGBoat1994, vol 15,1
%--------------------------------------------------------------
\ifx\AMC@SR\undefined\newcount\AMC@SR\fi
\providecommand\AMC@SRconst{2097152}
\providecommand\AMC@SRset[1]{\global\AMC@SR#1 \ignorespaces}
\providecommand\AMC@SRadvance{%
  \begingroup
  \ifnum\AMC@SR<\AMC@SRconst\relax\AMC@SR@count\z@\else\AMC@SR@count\@ne\fi
  \ifodd\AMC@SR\advance\AMC@SR@count\@ne\fi
  \global\divide\AMC@SR\tw@
  \ifodd\AMC@SR@count\global\advance\AMC@SR\AMC@SRconst\relax\fi
  \endgroup}
\providecommand\AMC@SRbit{\AMC@SRadvance\ifodd\AMC@SR1\else0\fi}
\providecommand\AMC@SRtest[2]{\AMC@SRadvance
  \ifodd\AMC@SR#2\else#1\fi\ignorespaces}
\providecommand\AMC@SRvalue{\number\AMC@SR }
\AMC@SRset{1515}
%
\def\AMCrandomseed#1{\AMC@SRset{#1}}
%--------------------------------------------------------------
% pour tirer des *nombres* (presque) uniformement
%--------------------------------------------------------------
\newcount\AMC@SR@count
\def\AMC@SR@time{\AMC@SRset{\time}}
\newcount\AMC@SRnum
\def\AMC@SRnextByte{\AMC@SRnum=0
\AMC@SR@count=20
\loop\multiply\AMC@SRnum by 2
     \AMC@SRtest{\advance\AMC@SRnum by 1}{}
\ifnum\AMC@SR@count>1\advance\AMC@SR@count by -1\repeat
}
% fabrique un entier de zero a #1-1 dans \AMC@SRnum
% #1 peut valoir au maximum 2^20
\newcommand\AMC@SRmax[1]{\AMC@SRnextByte
\AMC@SR@count=\AMC@SRnum
\divide\AMC@SR@count by #1
\multiply\AMC@SR@count by #1
\advance\AMC@SRnum by -\AMC@SR@count
}
%--------------------------------------------------------------
% melange aleatoire de tokens
%--------------------------------------------------------------
\newcount\AMC@sti
\newtoks\AMCsw@p@
\newcommand\AMCsw@p[2]{\global\AMCsw@p@=#1 \global #1=#2 \global #2=\AMCsw@p@}
\newcommand\AMC@shuffletoks[2]{ % nbre_de_toks nom_de_base
  \AMC@sti=#1
  \@whilenum\AMC@sti>1\do{
  \AMC@SRmax{\AMC@sti}\advance\AMC@SRnum by 1
% pour debogage : affiche les permutations effectuees
%  \number\AMC@SRnum$\leftrightarrow$\number\AMC@sti\par
  \AMCsw@p{\csname #2\romannumeral\AMC@SRnum\endcsname}{\csname #2\romannumeral\AMC@sti\endcsname}
  \advance\AMC@sti by -1
}}
%--------------------------------------------------------------
% groupes et melange des elements du groupe
%--------------------------------------------------------------
%
\newcount\AMCtok@k
\newcount\AMCtok@max
\newcommand{\nouveaugroupe}[2]{% nom_groupe (nombre_max)
% (le deuxieme argument ne sert plus a rien)
% definition du compteur
\expandafter\newcount\csname #1@k\endcsname
\csname #1@k\endcsname=0
}
\newcommand{\element}[2]{% nom_groupe tok
  % definition du compteur si pas deja fait
  \expandafter\ifx\csname #1@k\endcsname\relax\nouveaugroupe{#1}{}\fi
  % augmentation du compteur
  \advance\csname #1@k\endcsname by 1
  \AMCtok@k=\csname #1@k\endcsname
%  < \the\AMCtok@k >
  \expandafter\ifx\csname #1@\romannumeral\AMCtok@k\endcsname\relax\expandafter\newtoks\csname #1@\romannumeral\AMCtok@k\endcsname\fi
  \csname #1@\romannumeral\AMCtok@k\endcsname={#2}
}
\newcommand{\melangegroupe}[1]{%
  {\AMC@shuffletoks{\number\csname #1@k\endcsname}{#1@}}
}
\newcommand{\restituegroupe}[2][0]{%
\AMCtok@max=#1
\ifnum\the\AMCtok@max<1
  \AMCtok@max=\csname #2@k\endcsname
\fi
\AMCtok@k=0
%
{\loop
    \advance\AMCtok@k by 1
    \the\csname #2@\romannumeral\AMCtok@k\endcsname
\ifnum\AMCtok@k<\AMCtok@max\repeat}%
}


On peut utiliser mon exemple précédent, en remplaçant bien sûr automultiplechoice par melange...

Cordialement,
AB.
JojoBoulix
Déca-utilisateur
 
Messages: 36
Inscription: Lundi 08 Décembre 2008, 15:07
Statut actuel: Actif et salarié | Maître de conférence

Re: Interros de calcul et placement aléatoire des questions

Messagepar Dryss » Mercredi 15 Septembre 2010, 16:12

Merci encore une fois, vous sauvez un contrôle de multiplications !

Cordialement,

Dryss
TZR en lycée dans l'académie de Lyon.
Dryss
Déca-utilisateur
 
Messages: 19
Inscription: Dimanche 09 Mai 2010, 11:45
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Bing [Bot], Google [Bot], Proximic [Spider], Yandex [Bot] et 23 invités