Wie wird am Ende des Dokuments ein Multiple-Choice-Antwortschlüssel angezeigt?

Wie wird am Ende des Dokuments ein Multiple-Choice-Antwortschlüssel angezeigt?

Ich möchte die Antwortschlüssel am Ende der (Multiple-Choice-)Prüfungsseite anzeigen. Ich habe eine Datenbank mit Fragen und Antworten (immer wird davon ausgegangen, dass die erste Antwort in der Datenbank die richtige ist) und einige Makros, um die Fragen und ihre Antworten zu mischen. Alle Dateien sind angehängt (Hier). Die Ausgabe wird auch unten angezeigt. Das Problem ist, dass ich die richtigen Antworten am Ende der Seite nicht anzeigen kann. Beispielausgabe

Antwort1

Es gibt verschiedene Pakete, die Ihnen beim Erstellen von Prüfungen und Tests helfen. Ich bin mit ihnen nicht wirklich vertraut, da ich meine eigenen erstellt habe. Hier ist eine sehr vereinfachte Version dessen, was ich verwende:

\documentclass{article}

\makeatletter

\newcounter{ae@prob@cnt}
\let\ae@answer@key\relax

\newcommand\problem[1][a]{%%
  \stepcounter{ae@prob@cnt}%%
  \edef\ae@tmp{\theae@prob@cnt/#1}%%
  \ifx\relax\ae@answer@key
    \edef\ae@answer@key{\ae@tmp}%%
  \else
    \edef\ae@answer@key{\ae@answer@key,\ae@tmp}%%
  \fi
  Problem \theae@prob@cnt\hspace{1em}%%%
  }

\newcommand\presentanswerkey{%%
  \expandafter\ae@present@answers\ae@answer@key,\relax\@nil}

\def\ae@present@answers#1,#2\@nil{%%
  \def\ae@continue{}%%
  \ae@parse@pair#1\@nil
  \ifx\relax#2
  \else
    \def\ae@continue{\ae@present@answers#2\@nil}%%
  \fi
  \ae@continue}

\def\ae@parse@pair#1/#2\@nil{%%
  #1\hspace{0.25cm}#2\par}

\makeatother

\begin{document}

\problem[a] This is a question

\problem[b] This is another question

\problem[d] This is the penultimate question

\problem[c] My favorite question.

\presentanswerkey

\end{document}

AKTUALISIEREN

Hier ist eine modifizierte Version des obigen:

\makeatletter
\let\ae@answer@key\relax
\newcommand\buildanswerkey[2]{%%
  \typeout{===>#1:#2}%%
  \edef\ae@tmp{#1/#2}%%
  \ifx\relax\ae@answer@key
    \xdef\ae@answer@key{\ae@tmp}%%
  \else
    \xdef\ae@answer@key{\ae@answer@key,\ae@tmp}%%
  \fi}

\newcommand\presentanswerkey{%%
  \typeout{===>\detokenize\expandafter{\ae@answer@key}}%%
  \expandafter\ae@present@answers\ae@answer@key,\relax\@nil}

\def\ae@present@answers#1,#2\@nil{%%
  \def\ae@continue{}%%
  \ae@parse@pair#1\@nil
  \ifx\relax#2
  \else
    \def\ae@continue{\ae@present@answers#2\@nil}%%
  \fi
  \ae@continue}

\def\ae@parse@pair#1/#2\@nil{%%
  #1\hspace{0.25cm}#2\par}

\makeatother

Speichern Sie es in einer Datei namens buildanswerkey.texund laden Sie es in Ihre commandsPerm.texDatei.

In commandsPerm.texhabe ich einige der Zeilen wie folgt umgeschrieben:

%%-----------------------------------------
\pgfmathrandomitemwithoutreplacement\j{tmp}
\sbox\answera{\ifx\j\correctAnswer * \expandafter\buildanswerkey\expandafter{\thequestion}{a}\fi\ifcase\j\relax\or#1\or#2\or#3\or#4\fi}%
\ifx\j\javab \questionhaspoints{\thequestion = 1} \fi
%%-----------------------------------------
\pgfmathrandomitemwithoutreplacement\j{tmp}
\sbox\answerb{\ifx\j\correctAnswer * \expandafter\buildanswerkey\expandafter{\thequestion}{b}\fi\ifcase\j\relax\or#1\or#2\or#3\or#4\fi}%
\ifx\j\javab \questionhaspoints{\thequestion = 2} \fi
%%-----------------------------------------
\pgfmathrandomitemwithoutreplacement\j{tmp}
\sbox\answerc{\ifx\j\correctAnswer * \expandafter\buildanswerkey\expandafter{\thequestion}{c}\fi\ifcase\j\relax\or#1\or#2\or#3\or#4\fi}%
\ifx\j\javab \questionhaspoints{\thequestion = 3} \fi
%%-----------------------------------------
\pgfmathrandomitemwithoutreplacement\j{tmp}
\sbox\answerd{\ifx\j\correctAnswer * \expandafter\buildanswerkey\expandafter{\thequestion}{d}\fi\ifcase\j\relax\or#1\or#2\or#3\or#4\fi}%
\ifx\j\javab \questionhaspoints{\thequestion = 4} \fi

Wenn Sie dann Ihre Datei kompilieren, erhalten Sie einen Antwortschlüssel. Ich habe mir nicht die Mühe gemacht, herauszufinden, wie Sie Ihren Antwortschlüssel erstellen wollten, aber wenn Sie aufrufen, \presentanswerkeybevor Sie Ihre mcquestionsUmgebung verlassen, erhalten Sie einen korrekten Schlüssel:

Bildbeschreibung hier eingeben

verwandte Informationen