Eu uso principalmente a xparse
biblioteca para criar listas organizadas. Aqui está um MWE:
\documentclass{article}
\usepackage{xparse}
\newcounter{quest}
\newcommand{\quest}{\noindent\stepcounter{quest}{\bf Q}{\bf \arabic{quest}.\ }}
\ExplSyntaxOn
\NewDocumentCommand{\answer}{ m }{ \malmedal_input_add:n { #1 } }
\NewDocumentCommand{\listanswers}{ }{ \malmedal_output_direct: }
\seq_new:N \g_malmedal_input_seq
\seq_new:N \l_malmedal_temp_seq
\int_new:N \l_malmedal_count_int
\cs_new:Npn \malmedal_input_add:n #1
{
\seq_gput_right:Nn \g_malmedal_input_seq { #1 }
}
\cs_new_protected:Npn \malmedal_output_direct:
{
\int_zero:N \l_malmedal_count_int
\seq_map_inline:Nn \g_malmedal_input_seq
{
\int_incr:N \l_malmedal_count_int
\malmedal_print:n { ##1 }
}
}
\cs_new:Npn \malmedal_print:n #1
{
\noindent{\textbf{Question } ~ \bfseries\int_to_arabic:n { \l_malmedal_count_int }} ~ : ~ #1 \par
}
\ExplSyntaxOff
\begin{document}
\section{Math}
\quest $1 + 1 = ?$
\answer{$2$.}
\quest If $a = 2$ and $b = 5$, then $a - b = ?$
\answer{$-3$.}
\quest Are there any natural numbers between $8$ and $9$?
\answer{No.}
\section{Physics}
\quest What's the speed of light in vacuum?
\answer{$\approx 3\cdot 10^8$ m/s}
\quest Name one thing one can't do without atmospheric pressure.
\answer{To drink water with a straw.}
\section{Answer Key}
\listanswers
\end{document}
Isso gera:
Fiquei me perguntando se existe uma maneira de dividir essa lista gerada por cada uma das seções, conforme abaixo:
E por favor, se você quiser ajudar, não diga apenas que existe uma maneira mais simples de gerar chaves de resposta. Preciso de uma solução dentro do pacote xparse. Obrigado desde já!