¿Cómo mostrar la clave de respuestas de opción múltiple al final del documento?

¿Cómo mostrar la clave de respuestas de opción múltiple al final del documento?

Quiero mostrar las claves de respuestas al final de la página del examen (de opción múltiple). Tengo un banco de preguntas y respuestas (siempre se supone que la primera respuesta del banco es la opción correcta) y algunas macros para mezclar las preguntas y sus respuestas. Todos los archivos están adjuntos (aquí). El resultado también se muestra a continuación. el problema es que no puedo mostrar las respuestas correctas al final de la página. Salida de muestra

Respuesta1

Existen varios paquetes que le ayudarán a crear exámenes y cuestionarios. Realmente no estoy familiarizado con ellos porque construí el mío propio. Aquí hay una versión muy simplificada de lo que uso:

\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}

ACTUALIZAR

Aquí hay una versión modificada de lo anterior:

\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

Guárdelo en un archivo llamado buildanswerkey.texy cárguelo en su commandsPerm.texarchivo.

En commandsPerm.tex, reescribí algunas de las líneas de la siguiente manera:

%%-----------------------------------------
\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

Luego, cuando compila su archivo, obtiene una clave de respuestas. No me molesté en averiguar cómo pretendías crear tu clave de respuestas, pero si llamas \presentanswerkeyantes de salir de tu mcquestionsentorno, obtendrás una clave correcta:

ingrese la descripción de la imagen aquí

información relacionada