<..hook Hirschhorn’ exam..>
\let\exam:questions=\questions
\def\questions{%
\let\exam:list=\list
\def\list{\let\list=\exam:list\begin{list}}%
\exam:questions }
\pend:def\endquestions{%
\let\exam:list=\endlist
\def\endlist{\let\endlist=\exam:list \end{list}}}
\let\exam:parts=\parts
\def\parts{%
\let\exam:list=\list
\def\list{\let\list=\exam:list\begin{list}}%
\exam:parts }
\pend:def\endparts{%
\let\exam:list=\endlist
\def\endlist{\let\endlist=\exam:list \end{list}}}
\let\exam:subparts=\subparts
\def\subparts{%
\let\exam:list=\list
\def\list{\let\list=\exam:list\begin{list}}%
\exam:subparts }
\pend:def\endsubparts{%
\let\exam:list=\endlist
\def\endlist{\let\endlist=\exam:list \end{list}}}
-_-_-
<..hook Hirschhorn’ exam..>+
\long\def\uplevel#1{\par\a:uplevel{#1}\b:uplevel\par}
\long\def\fullwidth#1{\par\a:fullwidth{#1}\b:fullwidth\par}
\NewConfigure{uplevel}{2}
\NewConfigure{fullwidth}{2}
-_-_-
<..hook Hirschhorn’ exam..>+
\def\@setpoints{%
\if@placepoints
\if@pointsinmargin
\a:setpoints(\@points\@marginpointname)\b:setpoints
\else
\a:setpoints(\@points\@pointname)\b:setpoints
\fi
\@placepointsfalse
\fi
}
\NewConfigure{setpoints}{2}
-_-_-