根据我上一个问题的评论文档中 \label 的数量限制是多少?
在分析了关于内存使用的评论 (@UlrikeFischer、@DavidCarlisle) 后,尤其是防止在辅助文件中写入 4000 行的想法,并看到科学部门加入该项目并添加 4000 行的可能性。我决定通过改变 的使用来改变策略label/ref
。
我的想法是改变(或调整)xparse命令(\keych
基本上是一个自定义标签)\appenddata
在命令中存储字符串数组
不需要label/ref
为了我想要的东西而滥用,只需保留价值观,不需要参考它们。
我曾尝试使用列表进行一些尝试,但是,我尝试采用的解决方案在本地有效,我无法实现它(expl3 对我来说非常先进:)。
马德里理工学院:
% file mchoice.tex
% arara: latex: {draft: yes}
% arara: latex
% arara: dvips
% arara: ps2pdf
% arara: clean: { files:[mchoice.aux, mchoice.log, mchoice.out,mchoice.dvi,mchoice.ps] }
\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{pgffor}
\usepackage[colorlinks]{hyperref}
\usepackage{refcount}
\usepackage{tcolorbox}
\tcbuselibrary{many}
% Set key for multicols in enumitem
\SetEnumitemKey{columns}{before=\begin{multicols}{#1},after=\end{multicols}}%
% Custom label for save choice key
\makeatletter
\newcommand{\customlabel}[2]{%
\protected@write \@auxout {}{\string \newlabel {#1}{{#2}{\thepage}{#2}{#1}{}} }%
\hypertarget{#1}{}%
}
\makeatother
% Create a environment mchoice, scope enumerate and \keych
\NewDocumentEnvironment{mchoice}{m}{%
\label{#1}
% values for multicols
\setlength{\multicolsep}{5.0pt plus 2.0pt minus 1.5pt}
% values for enumitem
\setenumerate{parsep=3.5pt,partopsep=3.5pt,topsep=3.5pt,labelsep=5pt, leftmargin=*, itemsep=0pt,widest=80}%
\setenumerate[1]{labelsep=5pt,itemsep=1pt,label=\arabic*.}
\setenumerate[2]{leftmargin=16pt,nosep,itemsep=0pt,label=\Alph*)}
% Command to save key choice
\NewDocumentCommand\keych{o}{%
\IfNoValueTF{##1}%
{\customlabel{#1:\arabic{enumi}}{\Alph{enumii}}}%
{\customlabel{#1:\arabic{enumi}}{##1}}}% close \keych
}%
{%
\customlabel{max:#1}{\arabic{enumi}}
}% close mchoice
% Create a command to all key for test
% #1 : pass to tcolorbox
% #2 : name
% #3 : ref
% #4 : columns
\newcounter{last}
\DeclareTotalTColorBox{\keytest}{ O{} m m O{4}}
{ size=small,top=-1mm, left=0mm,width=\columnwidth,%
adjusted title=center,halign title=center,title filled,fontupper=\small,%
fonttitle=\small\sffamily,adjusted title={#2},center title,#1}
{%
\begin{enumerate}[columns=#4,leftmargin=15pt,labelsep=3pt,font=\small,nosep,widest=25]%
\small
\setlength{\columnsep}{0pt}
\setcounterref{last}{max:#3}
\foreach \x in {1,...,\value{last}} {
\item \ref{#3:\x}
}
\end{enumerate}
}%
\begin{document}
\section{National Prov}
\begin{mchoice}{paa-1985-a}
\begin{center}
\textbf{PAA 1985 (A)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item value
\item value
\item correct \keych
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only \keych
\item I and II only
\item I and III only
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B \keych
\item Altenativa C
\item Altenativa D
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline D) \keych[D]
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E)
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[\$2]
\end{enumerate}
\end{mchoice}
\begin{mchoice}{paa-1985-b}
\begin{center}
\textbf{PAA 1985 (B)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item correct \keych
\item value
\item value
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only
\item I and II only
\item I and III only \keych
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B
\item Altenativa C
\item Altenativa D \keych
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth} \centering
\includegraphics[scale=0.15]{example-image-a}\newline D)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E) \keych[E]
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[\$3]
\end{enumerate}
\end{mchoice}
\section{Answer key}
\begin{multicols}{2}
\setlength{\columnsep}{0pt}
\keytest{PAA 1985 (form A)}{paa-1985-a}[5]
\keytest{PAA 1985 (form B)}{paa-1985-b}[5]
\end{multicols}
\end{document}
再次感恩
编辑
除了David C大师给出的精彩答案外,我附上另一个答案:
% !file: mchoice.tex
% arara: pdflatex: {draft: yes}
% arara: clean: { files:[mchoice.aux, mchoice.log, mchoice.out] }
\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{pgffor}
\usepackage[colorlinks]{hyperref}
\usepackage{tcolorbox}
\tcbuselibrary{many}
% Set key for multicols in enumitem
\SetEnumitemKey{columns}{before=\begin{multicols}{#1},after=\end{multicols}}%
% Some definition
\newtheorem{theorem}{Theorem}
\newtheorem{exercise}[theorem]{Exercise}
% Custom label for save choice key and hypertarget :)
\makeatletter
\newcommand{\customlabel}[2]{%
\expandafter\xdef\csname#1\endcsname{#2}%
\hypertarget{#1}{}%
}
\makeatother
% Adapted from https://tex.stackexchange.com/a/364763/7832
\ExplSyntaxOn
% Reporter macro, is expandable
\cs_new:Npn \reportnumberofseqitems #1{%
\seq_count:c {l_bcp_data_#1_seq}%
}
\NewDocumentCommand{\storedata}{mm}
{
\bcp_store_data:nn { #1 } { #2 }
}
\NewDocumentCommand{\appenddata}{mm}
{
\bcp_append_data:nn { #1 } { #2 }
}
\DeclareExpandableDocumentCommand{\getdata}{O{1}m}
{
\bcp_get_data:nn { #1 } { #2 }
}
\cs_new_protected:Npn \bcp_store_data:nn #1 #2
{
% create the sequence if it doesn't exist or clear it if it exists
\seq_if_exist:cTF { l_bcp_data_#1_seq }
{ \seq_new:c { l_bcp_data_#1_seq } }
{ \seq_gclear:c { l_bcp_data_#1_seq } }
% append the items
\__bcp_append_data:nn { #1 } { #2 }
}
\cs_new_protected:Npn \bcp_append_data:nn #1 #2
{
% create the sequence if it doesn't exist, do nothing if it exists
\seq_if_exist:cF { l_bcp_data_#1_seq }
{ \seq_new:c { l_bcp_data_#1_seq } }
% append the items
\__bcp_append_data:nn { #1 } { #2 }
}
\cs_new_protected:Npn \__bcp_append_data:nn #1 #2
{
% append items one at a time
\tl_map_inline:nn { #2 }
{
\seq_gput_right:cn { l_bcp_data_#1_seq } { ##1 }
}
}
\cs_new:Npn \bcp_get_data:nn #1 #2
{
% retrieve the requested item
\seq_item:cn { l_bcp_data_#2_seq } { #1 }
}
\ExplSyntaxOff
% Create a environment mchoice, scope enumerate and \keych
\NewDocumentEnvironment{mchoice}{m}{%
% values for multicols
\setlength{\multicolsep}{5.0pt plus 2.0pt minus 1.5pt}
% values for enumitem
\setenumerate{parsep=3.5pt,partopsep=3.5pt,topsep=3.5pt,labelsep=5pt, leftmargin=*, itemsep=0pt,widest=80}%
\setenumerate[1]{labelsep=5pt,itemsep=1pt,label=\arabic*.}
\setenumerate[2]{leftmargin=16pt,nosep,itemsep=0pt,label=\Alph*)}
% Command to save key choice
\NewDocumentCommand\keych{o}{%
\IfNoValueTF{##1}%
{
\customlabel{#1:\arabic{enumi}}{\Alph{enumii}}\appenddata{#1}{{\Alph{enumii}}}
}%
{
\customlabel{#1:\arabic{enumi}}{XXX}\appenddata{#1}{{##1}}
} % close custom
}% close \keych
}%
{%
}% close mchoice
% Create a environment to encapsulate short answer
% #1 : short answer
\NewDocumentEnvironment{myenumerate}{m}{%
\NewDocumentCommand\sol{m}{%
\appenddata{#1}{{##1}}%
}% close \sol{
}%
{%
}% close myenumerate
% Create a command to all key/answer for test
% #1 : pass to tcolorbox
% #2 : name
% #3 : list/ref
% #4 : columns
\DeclareTotalTColorBox{\keytest}{ O{} m m O{4}}
{ colback=white,size=small,top=0mm,bottom=1.5mm, left=0mm,width=\columnwidth,title filled,%
fontupper=\small,fonttitle=\small\sffamily,adjusted title={#2},center title,#1}
{%
\begin{enumerate}[columns=#4,leftmargin=15pt,labelsep=3pt,font=\small,nosep,widest=25]%
\small
\setlength{\columnsep}{0pt}%
\edef\tmp{\noexpand\foreach \noexpand\x in {1,...,\reportnumberofseqitems{#3}} }%
\tmp{%
\item \hyperlink{#3:\x}{\getdata[\x]{#3}}%
}
\end{enumerate}%
}%
\begin{document}
\section{National Prov}
\begin{mchoice}{paa-1985-a}
\begin{center}
\textbf{PAA 1985 (A)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item value
\item value
\item correct \keych
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only \keych
\item I and II only
\item I and III only
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B \keych
\item Altenativa C
\item Altenativa D
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline D) \keych[D]
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E)
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[$\sqrt{2}$]
\end{enumerate}
\end{mchoice}
\begin{mchoice}{paa-1985-b}
\begin{center}
\textbf{PAA 1985 (B)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item correct \keych
\item value
\item value
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only
\item I and II only
\item I and III only \keych
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B
\item Altenativa C
\item Altenativa D \keych
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth} \centering
\includegraphics[scale=0.15]{example-image-a}\newline D)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E) \keych[E]
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[\$3]
\end{enumerate}
\end{mchoice}
\section{Exercices}
\begin{exercise}
Factoring next expression:
\end{exercise}
\begin{myenumerate}{exe:1}
\begin{enumerate}
\item $a^{2}-b^{2}$ \sol{$\left(a-b\right)\left(a+b\right)$}
\item $x^{2}-2x+1$ \sol{$\left(x-1\right)^{2}$}
\item $3x+3y+3z$ \sol{$3x+3y+3z$}
\item $3x+3y-6z$ \sol{$3\left(x+y-2z\right)$}
\end{enumerate}
\end{myenumerate}
\section{Answer key}
\begin{multicols}{2}
\setlength{\columnsep}{0pt}
\keytest{PAA 1985 (form A)}{paa-1985-a}[5]
\keytest{PAA 1985 (form B)}{paa-1985-b}[5]
\end{multicols}
\keytest{Exercise 1}{exe:1}
\end{document}
答案1
% file mchoice.tex
% arara: latex: {draft: yes}
% arara: latex
% arara: dvips
% arara: ps2pdf
% arara: clean: { files:[mchoice.aux, mchoice.log, mchoice.out,mchoice.dvi,mchoice.ps] }
\documentclass{article}
\usepackage{enumitem}
\usepackage{multicol}
\usepackage{pgffor}
\usepackage[colorlinks]{hyperref}
\usepackage{refcount}
\usepackage{tcolorbox}
\tcbuselibrary{many}
% Set key for multicols in enumitem
\SetEnumitemKey{columns}{before=\begin{multicols}{#1},after=\end{multicols}}%
% Custom label for save choice key
\makeatletter
\newcommand{\customlabel}[2]{%
\expandafter\xdef\csname#1\endcsname{#2}%
\hypertarget{#1}{}%
}
\makeatother
% Create a environment mchoice, scope enumerate and \keych
\NewDocumentEnvironment{mchoice}{m}{%
\label{#1}
% values for multicols
\setlength{\multicolsep}{5.0pt plus 2.0pt minus 1.5pt}
% values for enumitem
\setenumerate{parsep=3.5pt,partopsep=3.5pt,topsep=3.5pt,labelsep=5pt, leftmargin=*, itemsep=0pt,widest=80}%
\setenumerate[1]{labelsep=5pt,itemsep=1pt,label=\arabic*.}
\setenumerate[2]{leftmargin=16pt,nosep,itemsep=0pt,label=\Alph*)}
% Command to save key choice
\NewDocumentCommand\keych{o}{%
\IfNoValueTF{##1}%
{\customlabel{#1:\arabic{enumi}}{\Alph{enumii}}}%
{\customlabel{#1:\arabic{enumi}}{\noexpand##1}}}% close \keych
}%
{%
\customlabel{max:#1}{\arabic{enumi}}%
}% close mchoice
% Create a command to all key for test
% #1 : pass to tcolorbox
% #2 : name
% #3 : ref
% #4 : columns
\newcounter{last}
\DeclareTotalTColorBox{\keytest}{ O{} m m O{4}}
{ size=small,top=-1mm, left=0mm,width=\columnwidth,%
adjusted title=center,halign title=center,title filled,fontupper=\small,%
fonttitle=\small\sffamily,adjusted title={#2},center title,#1}
{%
\begin{enumerate}[columns=#4,leftmargin=15pt,labelsep=3pt,font=\small,nosep,widest=25]%
\small
\setlength{\columnsep}{0pt}%
\edef\tmp{\noexpand\foreach \noexpand\x in {1,...,\csname max:#3\endcsname}}%
\tmp{%
\item \hyperlink{#3:\x}{\csname#3:\x\endcsname}%
}
\end{enumerate}%
}%
\begin{document}
\section{National Prov}
\begin{mchoice}{paa-1985-a}
\begin{center}
\textbf{PAA 1985 (A)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item value
\item value
\item correct \keych
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only \keych
\item I and II only
\item I and III only
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B \keych
\item Altenativa C
\item Altenativa D
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline D) \keych[D]
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E)
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[\$2]
\end{enumerate}
\end{mchoice}
\begin{mchoice}{paa-1985-b}
\begin{center}
\textbf{PAA 1985 (B)}
\end{center}
\begin{enumerate}
\item First type of questions
\begin{enumerate}%
\item value
\item correct \keych
\item value
\item value
\item value
\end{enumerate}
\item Second type of questions
\begin{enumerate}[leftmargin=3pc,label=\Roman*.]
\item $2\alpha+2\delta=90^{\circ}$
\item $\alpha=\delta$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item I only
\item II only
\item I and II only
\item I and III only \keych
\item I, II, and III
\end{enumerate}
\item Third type of questions
\begin{enumerate}[leftmargin=3pc,label=(\arabic*)]
\item $2\alpha+2\delta=90^{\circ}$
\item $\angle EDF=45^{\circ}$
\end{enumerate}
\begin{enumerate}[columns=2]%
\item Altenativa A
\item Altenativa B
\item Altenativa C
\item Altenativa D \keych
\item Altenativa E
\end{enumerate}
\item Fourth type of questions (these need manual tuning for alternatives,
usually carrying pictures or tables)
\begin{center}
\noindent
\hspace*{0.75cm}\includegraphics[scale=0.15]{example-image-b}
\end{center}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline A)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline B)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline C)
\end{minipage}
\begin{minipage}{0.2\textwidth} \centering
\includegraphics[scale=0.15]{example-image-a}\newline D)
\end{minipage}
\begin{minipage}{0.2\textwidth}
\centering
\includegraphics[scale=0.15]{example-image-a}\newline E) \keych[E]
\end{minipage}
\item Fifth type of questions, a problem with numerical response \keych[\$3]
\end{enumerate}
\end{mchoice}
\section{Answer key}
\begin{multicols}{2}
\setlength{\columnsep}{0pt}
\keytest{PAA 1985 (form A)}{paa-1985-a}[5]
\keytest{PAA 1985 (form B)}{paa-1985-b}[5]
\end{multicols}
\end{document}