Korrigieren Sie die ersten (zwei) Fragen mit dem McExam-Paket

Korrigieren Sie die ersten (zwei) Fragen mit dem McExam-Paket

Ich schreibe eine McExam mit dem McExam-Paket mit mehreren Versionen. Die ersten beiden Fragen sollen lauten

\documentclass{article}
\usepackage{mcexam}
\begin{document}
    \begin{mcquestions}

    %%%% Header questions (not be included in randomization) %%%

    \question What is the version of your question booklet?
    \begin{mcanswerslist}
        \answer[correct] Version A
        \answer Version B
    \end{mcanswerslist}

    \question Your exam will be graded only if you write your version on top of the bubble
    sheet provided. Did you write the version number on top of the bubble sheet?
    \begin{mcanswerslist}
        \answer[correct] Yes, I have written the version number on top of the bubble sheet.
        \answer No, I have not yet written the version number on top of the bubble sheet.
    \end{mcanswerslist}

    %%%% Main test questions (starting with #3, included in randomization) %%%       

    \question What is 5 + 2?
    \begin{mcanswerslist}
        \answer[correct] 7
        \answer 5
        \answer 3   
    \end{mcanswerslist}

    \question What is 1 + 3?
    \begin{mcanswerslist}
        \answer[correct] 4
        \answer 6
        \answer 2   
    \end{mcanswerslist}
    \end{mcquestions}

\end{document}

Die Kopffragen sollen in beiden Prüfungsversionen Frage Nr. 1 und Frage Nr. 2 sein.

Ich kann jedoch nicht herausfinden, wie ich diese beiden Fragen bei der Randomisierung ausschließen kann.

Ich habe versucht, die Option [folgen] zu verwenden, aber das Paket lässt nicht zu, dass die erste Frage die Option „Folgen“ enthält.

Ich habe auch versucht, das Paket mcexam.sty anzupassen, um die ersten beiden Fragen von der Zufallsauswahl auszuschließen oder eine Option [fixposition] einzuführen. Ich habe es geschafft, dass die ersten beiden Fragen immer die Fragen 1 und 2 sind, aber die Zufallsauswahl hat auch einige andere Fragen als Nr. 1 und Nr. 2 zugewiesen und meine beabsichtigten Fragen 1 und 2 überschrieben.

Ich habe auch versucht, die beiden Fragen einzubinden, bevor ich die mcquestion-Umgebung gestartet habe, konnte aber nicht herausfinden, wie ich der mcquestion-Umgebung sagen kann, den Zähler bei 3 zu starten. Ich habe versucht, \setcounter zu verwenden, konnte aber nicht herausfinden, welcher Zähler gesetzt werden soll.

Zuletzt habe ich versucht, nur zwei Abschnitte der McQuestion-Umgebung zu haben, aber dadurch wurde der Zähler in der zweiten Umgebung auf 1 zurückgesetzt.

Irgendwelche Gedanken oder Vorschläge?

Antwort1

Nachdem ich mit der .sty-Datei herumgespielt habe, habe ich etwas gefunden, das funktioniert.

In Abschnitt 3.1 der .sty-Datei werden die Fragen randomisiert. Ich habe die Zeilen 978 bis 1007 im Originalcode ersetzt durch

\def\mc@randomizeQuestions{{    
  % Make the mcquestionblock control sequences which include macro's to set the randomization question counters 
  % exclude first two questions from randomization by setting counter to 2 and assigning the first two questions the first two numbers
  \setcounter{mc@counter}{2}
  \foreach \v in {1,...,\mc@totalNumberOfVersions}{
    \foreach \q in {1,...,2}{
      \csxdef{mc@randomQuestionNumberV\v Q\q}{\q}
      \csxdef{mc@originalQuestionNumberV\v Q\q}{\q} 
       }
    }   % For the randomization start at question q=3
  \foreach \q in {3,...,\mc@totalNumberOfQuestions}{
    \ifcsstring{mc@questionOption\q}{follow}{}{
      \refstepcounter{mc@counter}
      \csgdef{mc@questionblock\arabic{mc@counter}}{}
      }
    \csxappto{mc@questionblock\arabic{mc@counter}}{
      \noexpand\refstepcounter{mc@counter}
      \noexpand\csxdef{mc@randomQuestionNumberV\noexpand\v Q\q}{\noexpand\arabic{mc@counter}}
      \noexpand\csxdef{mc@originalQuestionNumberV\noexpand\v Q\noexpand\arabic{mc@counter}}{\q}        
      }  
    }
  % randomize question blocks
  \numdef\@numberofswaps{\mc@totalNumberOfQuestionblocks-1}
  \foreach \v in {1,...,\mc@totalNumberOfVersions}{
    \foreach \q in {1,...,\@numberofswaps}{
      \pgfmathrandominteger{\r}{\q}{\@numberofswaps}
      \numdef\r{\r+1}
      \global\letcs\@swap{mc@questionblock\r}
      \global\csletcs{mc@questionblock\r}{mc@questionblock\q}  
      \global\cslet{mc@questionblock\q}{\@swap}
      } % For the randomization  question block 2
    \setcounter{mc@counter}{2}  
    \foreach \q in {1,...,\mc@totalNumberOfQuestionblocks}{  
      \csuse{mc@questionblock\q}
      }
    }  
  }}

Dies funktionierte durch

  • die ersten beiden Fragen als Nummer 1 und 2 zuzuweisen und
  • Erhöhen Sie jeweils den mc@counter und den Startzähler bei der Randomisierung.

Da ich in jeder MC-Prüfung genau dieselben zwei Fragen als Kopffragen habe, funktioniert das für mich.

Allerdings ist das keine sehr elegante Lösung und ich wäre dennoch an einer besseren interessiert.

verwandte Informationen