QCM avec cases à cocher Latex

Bonsoir,

savez-vous comment créer un qcm semblable à celui mis en PJ ?

quels packages utiliser ?
un exemple ?
Merci.

Réponses

  • Bonjour,

    J'ai une réponse alternative à proposer : l'utilisation de formules dans un logiciel de traitement de texte "autre" (Open/LibreOffice, logiciels propriétaires, ...). Ce document donne l'impression d'avoir été composé ainsi, mais je peux tout à fait me tromper. Je vous ai joint un exemple presque minimal rédigé avec un logiciel propriétaire (Pages, et son éditeur d'équation à la syntaxe proche de celle de $\LaTeX$).

    En $\LaTeX$ pur, il vous faudrait insérer dans votre document un flottant qui serait multi-colonne, où vous mettriez vos questions. Les carrés de couleurs sont sans doute des dessins. Noter qu'il existe des caractères qui pourraient convenir (comme $\Box$, qu'on peut agrandir ${\Large \Box}$).76234
  • Merci mais je travaille avec un PC et pas un Mac...

    En latex je sais faire des qcm "figés" c'est à dire pour une impression papier... mais c'est le côté interactif qui m'intéresse...
  • D'accord, alors désolé d'être passé totalement à côté de la plaque.

    (i) Pour me faire pardonner, j'ai tenté une recherche, et suis tombé sur cette référence au package hyperref. Une solution pour vous ? https://tex.stackexchange.com/questions/14842/creating-fillable-pdfs

    (ii) Puisque vous êtes sur PC, notez que LibreOffice permet d'éditer des équations plus que potables. MS Word sans doute aussi, mais je n'ai plus touché à ce logiciel depuis longtemps.
  • Merci, je vais regarder, mais c'est le traitement des données que je ne vois pas...

    En fait je sais faire en php mais ce qui me plaisait c'est fabriquer un fichier uniquement avec LateX... je creuse et je vous rends compte...

    Libre office et autres font des choses moches à mon sens, et sortir de LateX me déplaît...
  • J'utilise ça: https://www.auto-multiple-choice.net/index.fr

    Edit: oups, je n'avais pas bien compris la question. Désolé pour le bruit.
  • Vos contraintes sont plus claires, merci. Je note que le fichier que vous avez joint semble traiter les données d'une façon qui semble ne pas être à votre convenance : ces dernières semblent être gérées non-localement (je dis peut-être une énorme bêtise).

    Autre remarque : c'est peut-être bien le package en question qui a permis de réaliser ce fichier, car l'ouvrir avec un éditeur de texte donne à lire, lignes 3156 à 3167 :
    650 0 obj
    (EC2 Thiers - QCM Matrices)
    endobj
    651 0 obj
    (Mac OS X 10.13.1 Quartz PDFContext)
    endobj
    652 0 obj
    (LaTeX with hyperref package)
    endobj
    653 0 obj
    (D:20180518210127Z00'00')
    endobj
    
    Mais je ne sais pas décrypter ces informations.
  • ça progresse :-)

    Voici un exemple que je viens de réaliser en faisant des essais....

    cela correspond presque à ce que je veux.... il faudrait un bouton pour calculer le résultat...

    \documentclass{article}
    
    \usepackage{hyperref}
    \usepackage[T1]{fontenc}
    \usepackage{amssymb}
    
    
    \textwidth=17cm
    
    \begin{document}
    
    \begin{Form}
    
    \begin{enumerate}
    \item \ChoiceMenu[name=Q1,radio,default=0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \item \ChoiceMenu[name=Q2,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \item \ChoiceMenu[name=Q3,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \end{enumerate}
    
    \TextField[readonly=true,value=0,calculate={event.value=this.getField("Q1").value+this.getField("Q2").value+this.getField("Q3").value;}]{Summary score:}
    \end{Form}
    
    \end{document}
    
    
  • \documentclass{article}
    
    \usepackage{hyperref}
    \usepackage[T1]{fontenc}
    \usepackage{amssymb}
    
    
    \textwidth=17cm
    
    \begin{document}
    
    \begin{Form}
    
    \begin{enumerate}
    \item 
    Une primitive de $x \mapsto x^2$ est :
    
    \ChoiceMenu[name=Q1,radio,default=-0]{}{\qquad $x \mapsto x^3$=0,\qquad $x \mapsto \frac{1}{3}x^3$=1,\qquad $x \mapsto 2x$=0}
    
    \item \ChoiceMenu[name=Q2,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \item \ChoiceMenu[name=Q3,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \end{enumerate}
    
    \TextField[readonly=true,value=0,calculate={event.value=this.getField("Q1").value+this.getField("Q2").value+this.getField("Q3").value;}]{score final : }
    \end{Form}
    
    \end{document}
    
    
  • On s'approche du résultat...
    \documentclass{article}
    
    \usepackage{hyperref}
    \usepackage[T1]{fontenc}
    \usepackage{amssymb}
    
    
    \textwidth=17cm
    
    \begin{document}
    
    \begin{Form}
    
    \TextField[bordercolor=1 0 0,width=10em,charsize=0pt,name=box]{NOM : }
    
    \vspace{1cm }
    
    \begin{enumerate}
    \item 
    Une primitive de $x \mapsto x^2$ est :
    
    \ChoiceMenu[name=Q1,radio,default=-0]{}{\qquad $x \mapsto x^3$=0,\qquad $x \mapsto \frac{1}{3}x^3$=1,\qquad $x \mapsto 2x$=0}
    
    \item \ChoiceMenu[name=Q2,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \item \ChoiceMenu[name=Q3,radio,default=-0]{Ma Question 2}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    
    
    \end{enumerate}
    
    \vspace{4cm }
    
    \ChoiceMenu[name=OBTENIRREPONSE,radio,default=0]{Obtenir la note}{CALCUL DU SCORE =1,PAS ENCORE DE CALCUL =0}
    
    \vspace{1cm }
    
    
    \TextField[readonly=true,value=0,calculate={event.value=(this.getField("Q1").value+this.getField("Q2").value+this.getField("Q3").value)*this.getField("OBTENIRREPONSE").value;}]{score final : }
    \end{Form}
    
    \end{document}
    
    
  • L'idéal maintenant ce serait de créer une case "CODE POUR OBTENIR SA NOTE"

    si le code est bon (par exemple =12345) alors la note est affichée, sinon il affiche 0

    cela permettrait de faire travailler mes étudiants, qu'ils enregistrent le PDF et me l'envoient pas mail.... puis que je mette le code pour obtenir leur note...

    si quelqu'un trouve.... il est tard, je vais dormir.... peut-être avec le package if then else ?
  • Voici où j'en suis...

    je souhaiterais pouvoir calculer le total sous condition : créer un champ texte nommé "code de validation"
    et afficher le total que si ce code est exact, disons "123456".

    Avez-vous une idée ?
    Merci
    \documentclass{article}
    
    \usepackage{hyperref}
    \usepackage[T1]{fontenc}
    \usepackage{amssymb}
    
    
    \textwidth=17cm
    
    \usepackage{ifthen}
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    \begin{document}
    
    \begin{Form}
    
    \TextField[bordercolor=1 0 0,width=10em,charsize=0pt,name=box]{NOM : }
    
    \vspace{1cm }
    
    \begin{enumerate}
    \item 
    Une primitive de $x \mapsto x^2$ est :
    
    \ChoiceMenu[name=Q1,radio,default=-0]{}{\qquad $x \mapsto x^3$=0,\qquad $x \mapsto \frac{1}{3}x^3$=1,\qquad $x \mapsto 2x$=0}
    
    \item \ChoiceMenu[name=Q2,radio,default=-0]{Ma Question 1}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    \item \ChoiceMenu[name=Q3,radio,default=-0]{Ma Question 2}{r\'eponse à 2 points=2,r\'eponse à 1 point=1,R\'eponse fausse=0}
    
    
    
    \end{enumerate}
    
    \vspace{4cm }
    
    \ChoiceMenu[name=OBTENIRREPONSE,radio,default=0]{Obtenir la note}{CALCUL DU SCORE =1,PAS ENCORE DE CALCUL =0}
    
    \vspace{1cm }
    
    \PushButton[name=go,%      
            onclick={var moy=this.getField("moy");%
            moy.value=(this.getField("Q1").value+this.getField("Q2").value+this.getField("Q3").value)*this.getField("OBTENIRREPONSE").value;}%
                  ]{Cliquez ici pour calculer votre }
    \TextField[name=moy,readonly=true]{NOTE FINALE}              
    \end{Form}
    
    
    
    \end{document}
    
    
    %%%%%%%%%%%%
    
    
  • Très intéressant Lapin Crétin.

    As-tu réussi à mettre le code?

    Fois2
  • désolé j'ai tardé à répondre...

    oui j'ai trouvé un "truc"....

    le code est 123456

    il peut être changé dans le source... si vous avez des idées d'améliorations, je suis preneur...
Connectez-vous ou Inscrivez-vous pour répondre.