%%
%% This is file `eqexam.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% exerquiz.dtx  (with options: `eqexam')
%% 
\newif\ifeq@noforms \eq@noformsfalse
\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse % dps new
\newif\ifeq@nocorrections \eq@nocorrectionsfalse
\newif\ifeq@nolink \eq@nolinkfalse
\def\eq@ckglobalhide{\ifeq@globalshowsolutions\eq@hidesolutionfalse\fi}
\def\hidesymbol{h}\def\Hidesymbol{H}
\newif\iftherearesolutions \therearesolutionsfalse
\def\SolutionsAfter{\eq@solutionsaftertrue\eq@nolinktrue}
\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse}
\def\NoSpaceToWork{\let\eq@insertverticalspace=n}
\def\SpaceToWork{\let\eq@insertverticalspace=y}
\SpaceToWork
\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
\def\turnOnRandomize{\eq@randomizeallChoicestrue}
\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
\let\saveRandomSeed\relax
\let\inputRandomSeed\relax
\newcommand{\exsolafter}{\eq@exsolafterDefault}
\newcommand{\eq@exsolafterDefault}{\textit{Solution}:}
\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
\newcommand{\resetSolnAfterToDefault}{%
    \def\exsolafter{\eq@exsolafterDefault}}
\ifsolutionsonly\else
\newwrite \ex@solns \immediate\openout \ex@solns \jobname.sol
\fi
\newwrite \quiz@solns \immediate\openout \quiz@solns \jobname.qsl
\newcounter{eqexno} \setcounter{eqexno}{0}
\newcounter{@exno} \setcounter{@exno}{0}  % running exno
\newcounter{quizno} \setcounter{quizno}{0}
\renewcommand\thequizno{\alph{quizno}}
\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
\newlength\eq@tmplength
\newcounter{eqquestionnoi}
\newcounter{eqquestionnoii}
\newcounter{eqquestionnoiii}
\newcount\@eqquestiondepth \@eqquestiondepth=0
\newcounter{questionno}
\newcounter{partno}
\renewcommand\thepartno{\alph{partno}}
\def\verbatimwrite{\@bsphack
  \let\do\@makeother\dospecials
  \catcode`\^^M\active \catcode`\^^I=12
  \def\verbatim@processline{%
    \immediate\write\verbatim@out
      {\the\verbatim@line}}%
  \verbatim@start}
\def\endverbatimwrite{\@esphack}
\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
\newcommand{\eqexerskip}[1]{\def\eq@exerskip{\vskip#1}}
\eqexerskip{\medskipamount}
\newcommand{\priorexskip}[1]{\def\eq@priorexskip{\vspace{#1}}}
\priorexskip{\medskipamount}
\let\eq@postexerciseHook\relax
\newcommand\eqafterexersolnskip{\string\medskip}
\def\marginparpriorhook{} % used to material before the exercise
\def\marginparafterhook{} % used to material after the exercise
\let\afterlabelhskip=\space
\let\exersolnheadhook=\@empty
\newcommand{\eqexheader}
{%
        \hbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
        \exlabelformat\fi}%
}
\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
\partsformat{(\hfil\alph{partno}\hfil)}
\newcommand{\defaultpartsformat}{%
    \partsformat{(\hfil\alph{partno}\hfil)}}
\newcommand{\eqexlisttabheader}
{%
      \color{\@nolinkcolor}\eq@partsformat
}
\newenvironment{exercise}
{%
    \par\eq@priorexskip\noindent%\begingroup % set defaults
    \def\eq@argi{eqexno}%  % use eqexno counter
    \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
    \def\currhideopt{x}%
    \@ifnextchar[{\exercise@}{%
    \if\exerstar*%
        \def\eq@next{\@exercise}%
    \else
        \def\eq@next{\exercise@@}%
    \fi\eq@next}%
}{\eq@postexerciseHook\par\global\eq@exerciseheadingtrue\eq@exerskip}
\def\exercise@[#1]{\def\eq@arg{#1}%
    \if\eq@arg h%
        \def\currhideopt{h}%
        \eq@hidesolutiontrue\eq@nolinktrue%
        \ifeq@globalshowsolutions
            \eq@hidesolutionfalse\eq@nolinkfalse
        \fi
        \def\eq@next{\@exercise}%   h, no *, no counter
    \else
        \if\eq@arg H%
            \edef\currhideopt{\Hidesymbol}%
            \eq@hidesolutiontrue\eq@nolinktrue%
            \ifeq@globalshowsolutions
                \eq@hidesolutionfalse\eq@nolinkfalse
            \fi
            \def\eq@next{\@exercise}%   h, no *, no counter
        \else
            \def\currhideopt{x}%
            \if\exerstar*%
                \def\eq@next{\def\eq@argi{#1}\@exercise}%
            \else
                \def\eq@next{\def\eq@argi{#1}\exercise@@}%
            \fi
        \fi
    \fi
\eq@next}
\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}% was \exercise@@@
   {\exercise@@@}}%
\def\exercise@@@{%
\@ifnextchar[{\exercise@@@@}{\@exercise}}
\def\exercise@@@@[#1]{\def\eq@arg{#1}%
    \if\eq@arg h%
        \def\currhideopt{h}%
        \eq@hidesolutiontrue\eq@nolinktrue
        \ifeq@globalshowsolutions
            \eq@hidesolutionfalse\eq@nolinkfalse
        \fi
        \def\eq@next{\@exercise}%   h, no *, no counter
    \else
        \if\eq@arg H%
            \edef\currhideopt{\Hidesymbol}%
            \eq@hidesolutiontrue\eq@nolinktrue%
            \def\eq@next{\@exercise}%   h, no *, no counter
        \else
            \def\currhideopt{x}%
            \typeout{The option #1 is not recognized}
            \let\eq@next=\relax
        \fi
    \fi
\eq@next}
\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
\newcommand\exerSolnHeader[3]
{%
    \ifeqforpaper\else\webnewpage\fi\markright{#1}\par\noindent%
    #3%
    \solnhspace
}
\let\eqEXt=\relax
\let\endeqEXt=\relax
\let\eq@writeexheader\@empty
\def\@exercise
{%
    \let\verbatim@out=\ex@solns
    \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
    \if\exerstar*% if exercise with parts
        \eq@nolinktrue
    \else
        \if\currhideopt H%
        \else
            \ifeq@solutionsafter
                \eq@nolinktrue  % no link to solution
            \else
                \eq@ckglobalhide %
                \ifeq@hidesolution\else
                   \gdef\eq@writeexheader{%
                   \set@display@protect
                   \immediate\write\verbatim@out{\protect\eqEXt
                   \protect\exerSolnHeader{\exsecrunhead}{ex.\the@exno}%
                   {\exsllabelformat}\exersolnheadhook\protect\relax}%
                   \set@typeset@protect}%
                \fi
            \fi
        \fi
    \fi
    \ifvmode\ifdim\lastskip>\z@
        \vskip-\lastskip
    \fi\fi
    \if\exerstar*%
        \let\solution=\solnexer@woparts
        \let\endsolution=\endsolnexer@woparts
        \let\parts=\exercise@parts
        \let\endparts\endexercise@parts
    \else
        \let\solution=\solnexer@woparts
        \let\endsolution=\endsolnexer@woparts
        \let\parts=\relax
        \let\endparts=\relax
        \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
            \eq@nolinktrue\fi\fi
    \fi
    \ifeq@exerciseheading
    \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
    \afterlabelhskip\marginparafterhook\ignorespaces
    \fi
}
\long\def\setsolnspace#1{%
    \def\newsolnspace{#1}%
    \let\solnhspace\newsolnspace
}
\let\solnhspace\space
\def\solnexer@woparts{\def\bLeaveVspace{x}% = no vertical space added
    \def\next{\@ifnextchar[{\solnexer@@woparts}%
        {\solnexer@@woparts[\null]}}%
    \ifx\endparts\endexercise@parts@tabular
        \def\next{\solnexer@@@woparts}%
    \fi
    \next}
\let\eqPriorVspace\@gobble
\def\solnexer@@woparts[#1]{%
    \ifx#1\null
    \else
        \xdef\sameVspace{#1}%
        \ifeq@nosolutions
            \ifeq@solutionsafter\else
                \let\bLeaveVspace=\@empty
                \def\leavevspace{%
                    \ifx\eq@insertverticalspace y\par\eqPriorVspace{#1}%
                        {\nobreak\parbox[b][#1][t]{\linewidth}{\vfill}}%
                    \fi
                }%
            \fi
        \fi
    \fi
    \solnexer@@@woparts
}
\def\solutionsafterSkip{\smallskip}
\def\solnexer@@@woparts
{%
    \def\exerwparts@cols{x}%
    \let\verbatim@out=\ex@solns
    \if\currhideopt H%
        \let\procsoln=\comment
        \let\endprocsoln=\endcomment
        \def\eq@next{\procsoln}%
    \else
        \eq@ckglobalhide
        \ifeq@hidesolution
            \let\procsoln=\comment
            \let\endprocsoln=\endcomment
        \else
            \ifx\bLeaveVspace\@empty\leavevspace\fi
            \let\procsoln=\verbatimwrite
            \let\endprocsoln=\endverbatimwrite
        \fi
        \def\eq@next{%
            \ifeq@solutionsafter
                \ifx\exsolafter\@empty\else
                \par\solutionsafterSkip
                \noindent\exsolafter\space\ignorespaces\fi
            \else
                \eq@writeexheader % write the solution header 11/03/05
                \global\let\eq@writeexheader\@empty
                \global\therearesolutionstrue\expandafter\procsoln
            \fi
        }%
    \fi
\eq@next}
\def\endsolnexerhook{}
\def\endsolnexerhookaux{}
\def\eq@fititin{\noindent\unskip\nobreak\hfill\penalty50
    \hskip2em\hbox{}\nobreak\hfill}
\let\eqfititin=\eq@fititin
\newcommand\eqExerSolnTrailer
{%
    \string\ReturnTo{page.\the\c@page}%
    {\hbox{\if\exerstar*\exrtnlabelformatwp\else\exrtnlabelformat\fi}}%
    \string\endeqEXt\ifeqforpaper\string\par\eqafterexersolnskip\fi^^J
}
\def\endsolnexer@woparts
{%
    \if\currhideopt H%
        \csname endprocsoln\endcsname
    \else
        \ifeq@solutionsafter
            \eq@fititin\hbox{\exrtnlabelformat}%
        \else
            \endprocsoln
            \eq@ckglobalhide
            \ifeq@hidesolution\else
                \endsolnexerhookaux
                \set@display@protect
                \immediate\write\verbatim@out{\eqExerSolnTrailer}%
                \set@typeset@protect
            \fi
        \fi
    \fi
\endsolnexerhook}
\let\eq@exerstarEnv\relax
\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
{\endexercise}
\def\exercise@parts{\@@par\ifdim\parskip>\z@\vskip-\parskip\fi
  \def\exerwparts@cols{x}\@ifnextchar[%
  {\let\endparts=\endexercise@parts@tabular\exercise@parts@tabular@}%
  {\let\endparts=\endexercise@parts@list\exercise@parts@list}}
\def\eq@extralabelsep{0pt}
\newenvironment{exercise@parts@list}
{\settowidth{\eq@tmplength}{\normalfont(d)}%
\eq@nolinkfalse
\begin{list}{\normalfont
    \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
        \eq@nolinktrue\fi\fi
    \if\currhideopt H%
    \else
        \ifeq@solutionsafter
            \eq@nolinktrue  % no link to solution
        \else
            \ifeq@nosolutions
                \eq@nolinktrue  % no link to solution
            \else
                \eq@ckglobalhide
                \ifeq@hidesolution\eq@nolinktrue\else
                    \gdef\eq@writeexheader{%
                    \set@display@protect
                    \immediate\write\verbatim@out{\protect\eqEXt
                    \protect\exerSolnHeader{\exsecrunhead}%
                    {ex.\the@exno\alph{partno}}{\exsllabelformatwp}\relax}%
                    \set@typeset@protect
                    }%
                \fi
            \fi
        \fi
    \fi
    \makebox[\eq@tmplength]{\eqexlisttabheader}%
}{%
    \usecounter{partno}%
    \setlength{\topsep}{3pt}%
    \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
    \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
    \setlength{\listparindent}{\parindent}%
    \settowidth{\labelsep}{\normalfont\ }%
    \addtolength{\labelsep}{\eq@extralabelsep}%
    \settowidth{\labelwidth}{\normalfont(d)}%
    \setlength{\leftmargin}{\labelwidth}%
    \addtolength{\leftmargin}{\labelsep}%
    \let\eq@item=\item
    \def\item{\def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse%
    \@ifnextchar[\@ckhide\eq@item}}%
}{\end{list}}
\def\exercise@parts@tabular@[#1]{%
  \def\exerwparts@cols{#1}\exercise@parts@tabular}
\newenvironment{exercise@parts@tabular}
{%
    \setcounter{partno}{0}%
    \settowidth{\eq@tmplength}{\normalfont(d)\ }\sbox{\eq@tmpbox}{(d)}%
    \let\eq@item=\item@part@tabular
    \def\item{\eq@hidesolutionfalse\eq@nolinkfalse
        \@ifnextchar[\@ckhide\eq@item}\eq@nolinkfalse
    \eq@tmpdima=\linewidth \divide\eq@tmpdima by\exerwparts@cols
    \vskip\partopsep\noindent\normalbaselines\tabcolsep=0pt
    \begin{tabular}{*{\exerwparts@cols}{p{\eq@tmpdima}}}%
}{\end{tabular}}
\def\item@part@tabular{\leavevmode\refstepcounter{partno}%
  \eq@solutionsafterfalse % no solutionsafter are allowed
  \ifeq@solutionsafter
    \eq@nolinktrue  % no link to solution
  \else\ifeq@nosolutions
    \eq@nolinktrue  % no link to solution
  \else
      \eq@ckglobalhide
      \ifeq@hidesolution\eq@nolinktrue\else
      \gdef\eq@writeexheader{%
        \set@display@protect
        \immediate\write\verbatim@out{%
        \protect\eqEXt\string\exerSolnHeader{\exsecrunhead}%
            {ex.\the@exno\alph{partno}}{\exsllabelformatwp}\relax}%
        \set@typeset@protect
      }%
  \fi\fi\fi
  \PBS\raggedright
  \settowidth{\eq@tmplength}{\normalfont(d)\ }%
  \sbox{\eq@tmpbox}{\normalfont(d)}%
  \eq@tmpdima=\wd\eq@tmpbox
  \addtolength\eq@tmplength{\eq@extralabelsep}%
  \hangindent=\eq@tmplength\hangafter=1\relax
  \makebox[\eq@tmpdima]{\eqexlisttabheader}\ \ignorespaces
}
\def\@ckhide[#1]{\def\eq@arg{#1}%
    \def\currhideopt{x}%
    \if\eq@arg H%
        \eq@hidesolutiontrue\eq@nolinktrue%
        \edef\currhideopt{\Hidesymbol}%
    \else
        \ifeq@globalshowsolutions\else
            \if\eq@arg h%
                \eq@hidesolutiontrue\eq@nolinktrue%
                \def\currhideopt{h}%
            \fi
        \fi
    \fi
    \eq@item
}
\def\includeexersolutions
{%
       \include@solutions\let\include@solutions\relax
}
\let\eqsolutionshook\@empty
\let\priorexsectitle\@empty
\let\priorexslinput\@empty
\def\exerSolnsHeadnToc{\section*{\exsectitle}%
    \addcontentsline{toc}{section}{%
    \@ifundefined{web@latextoc}{}{%
    \ifx\web@latextoc y\else
    \protect\numberline{}\fi}\exsectitle}}
\newcommand{\exerSolnInput}
{%
    \let\webnewpage=\relax
    \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
    \ifeq@nosolutions\else
        % changed from \exsecrunhead, 6/1/05
        \iftherearesolutions\ifsolutionsonly\else\newpage\fi
        \markright{\exsectitle}%
            \ifx\webnewpage\relax
                \def\webnewpage{\let\webnewpage\newpage}%
            \fi
            \priorexsectitle\exerSolnsHeadnToc\priorexslinput
            \InputIfFileExists{\jobname.sol}{}{\PackageWarning{exerquiz}
            {!!! Solutions to exercises not found}}%
            \eqsolutionshook
        \fi
    \fi
}
\def\include@solutions
{%
        \exerSolnInput
}
\newcommand{\prior@questionsHook}{}
\let\qMark@Hook\@empty
\let\aeb@titleQuiz\@empty
\newcommand{\post@questionsHook}{}
\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
\newcommand{\labeleqquestionnoi}{%
    \color{blue}\bfseries\theeqquestionnoi.}
\renewcommand{\theeqquestionnoii}{\alph{eqquestionnoii}}
\newcommand{\labeleqquestionnoii}{%
    \color{blue}\bfseries(\theeqquestionnoii)}
\renewcommand{\theeqquestionnoiii}{\roman{eqquestionnoiii}}
\newcommand{\labeleqquestionnoiii}{%
    \color{blue}\bfseries(\theeqquestionnoiii)}
\newenvironment{questions}
{%
    \ifnum\@eqquestiondepth>\tw@\@toodeep\else
    \advance\@eqquestiondepth\@ne\fi
    \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
    \begin{list}{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
    \global\let\eqQT=\eq@na\makebox[\labelwidth][r]{\normalfont\bfseries
    \csname label\@quesctr\endcsname}%
        \post@questionsHook}%
    {\usecounter{\@quesctr}%
    \settowidth{\labelwidth}{\normalfont\bfseries00.\ }%
    \setlength{\topsep}{3pt}\setlength{\parsep}{0pt}%
    \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
    \setlength{\leftmargin}{\labelwidth}%
    \settowidth{\labelsep}{\ }}%
}{\end{list}}
\def\pushquestions{%
    \expandafter\xdef\csname save\@quesctr\endcsname{%
        \expandafter\the\csname c@\@quesctr\endcsname}%
    \end{questions}}
\def\popquestions{%
    \begin{questions}
    \setcounter{\@quesctr}{\csname save\@quesctr\endcsname}}
\def\sq@priorhook{\medskip\noindent}
\def\@shortquizCnt{0}
\def\@sqGenBaseName{eqSqBn\@shortquizCnt}
\newenvironment{shortquiz}
{%
    {\count0=\@shortquizCnt \advance\count0by1\relax
        \xdef\@shortquizCnt{\the\count0}}%
    \goodbreak\@ifstar{\gdef\sqstar{*}\@shortquiz}%
        {\gdef\sqstar{}\@shortquiz}%
}{\aeb@endshortquiz}
\newenvironment{shortquiz*}
{%
    {\count0=\@shortquizCnt\advance\count0by1\relax
        \xdef\@shortquizCnt{\the\count0 }}%
    \gdef\sqstar{*}\@shortquiz
}{\aeb@endshortquiz}
\def\@shortquiz{\@ifnextchar[%
    {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
\def\@@shortquiz[#1]{%\begingroup
  \gdef\oField{#1}\gdef\curr@quiz{#1}\gdef\currQuiz{#1}%
  \global\let\eqQuizType=s\let\@qzsolndest\@empty
  \if\sqstar*\relax
    \let\@Ans\Ans@sq@f
    \ifx\oField\@empty
        \typeout{^^JExerquiz: Base field name required when using
                shortquiz with '*' option}
        \typeout{Exerquiz: Assuming link style^^J}
        \let\@Ans\Ans@sq@l
    \fi
  \else
     \let\@Ans\Ans@sq@l
  \fi
  \setcounter{questionno}{0}%
  \let\answers\answers@sq
  \let\endanswers\endanswers@sq
  \let\manswers\manswers@sq
  \let\endmanswers\endmanswers@sq
  \let\solution\solution@sq
  \let\endsolution\endsolution@sq
  \sq@priorhook\sqlabel\space\ignorespaces
}
\def\aftershortquizskip{\medskip}
\def\aeb@endshortquiz{\setcounter{quizno}{0}%
    \global\let\sqlabel=\eq@sqlabel
    \global\let\sqslrtnlabel=\eq@sqslrtnlabel
    \global\let\sqsllabel=\eq@sqsllabel
    \par\aftershortquizskip
}
\def\sqLinks{\gdef\sqstar{}}\sqLinks{}
\def\sqForms{\gdef\sqstar{*}}
\let\eq@tq@star\relax
\def\solution@sq{\let\eq@next=\relax
  \ifx\@qzsolndest\@empty
    \typeout{exerquiz: * Solutions unexpected here *}%
    \typeout{exerquiz: * Will assume 'solutionsafter' option *}%
    \eq@solutionsaftertrue
  \fi
  \ifeq@solutionsafter
    \par\smallskip\noindent
    \sqsolafter
  \else
    \global\therearequizsolutionstrue\let\verbatim@out=\quiz@solns
    \set@display@protect
    \immediate\write\verbatim@out{%
      \ifx\eqQuizType q\string\eqQt\else\string\eqSQt\fi%
      \string\quizSolnHeader\ifx\eqQuizType q\ifx\allow@peek n%
        [{\curr@quiz}{\currQuizStartPage}]\fi\fi%
        {\@qzsolndest}{\sqsllabel}\relax}%
    \set@typeset@protect
    \expandafter\verbatimwrite\fi
}
\def\solutionsAfterSkip{\par\bigskip}
\def\endsolution@sq
{%
    \ifeq@solutionsafter
        \eq@fititin\hbox{\sqslrtnlabel}\solutionsAfterSkip
    \else
        \endverbatimwrite
        \ifx\@qzsolndest\@empty\else\set@display@protect
            \immediate\write\verbatim@out{\eqSqSolnTrailer}%
         \set@typeset@protect
        \fi
    \fi
    \global\let\@qzsolndest=\@empty
}
\def\fpAfterSolutionsSkip{\par\medskip}
\newcommand\eqSqSolnTrailer{%
    \ifx\eqQuizType q%
        \string\ReturnTo{page.\the\c@page}%
            {\hbox{\sqslrtnlabel}}\string\endeqQt
    \else
        \string\ReturnTo{page.\the\c@page}%
            {\hbox{\sqslrtnlabel}}\string\endeqSQt
    \fi
    \ifeqforpaper\string\fpAfterSolutionsSkip\fi^^J%
}
\let\eqSQt\relax
\let\endeqSQt\relax
\let\eqQt\relax
\let\endeqQt\relax
\newcommand\quizSolnHeader[3][]{%
    \ifeqforpaper\else\webnewpage\fi\noindent
    #2%
    \solnhspace
}
\newif\iftherearequizsolutions \therearequizsolutionsfalse
\let\aeb@FLOverride\relax
\def\includequizsolutions
{%
        \include@quizsolutions
        \let\include@quizsolutions=\relax
}
\def\answers@sq{\stepcounter{questionno}%
    \if\sqstar*\relax
        \if\aeb@FLOverride l
            \let\@Ans\Ans@sq@l
        \else
            \let\@Ans\Ans@sq@f
        \fi
    \else
        \if\aeb@FLOverride f
            \let\@Ans\Ans@sq@f
        \else
            \let\@Ans\Ans@sq@l
        \fi
    \fi
    \def\aeb@answerType{r}\@ifnextchar[{\answers@@sq}%
    {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
\def\manswers@sq{\stepcounter{questionno}%
    \if\sqstar*\relax
        \if\aeb@FLOverride l
            \let\@An\Ans@ck@sq@f
        \fi
    \else
        \if\aeb@FLOverride f
            \let\@An\Ans@ck@sq@f
        \else
            \let\@Ans\Ans@ck@sq@l
        \fi
    \fi
    \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
    {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
\let\sq@hwdest\@empty % hard-wired destination
\def\answers@@sq[#1]#2{%
    \gdef\aeb@numCols{#2}%
    \ifx\sq@hwdest\@empty
        \xdef\@qzsolndest{#1}%
    \else
        \gdef\@qzsolndest{\sq@hwdest}%
    \fi
    \ifx#21\gdef\eq@listType{1}\expandafter\answers@sq@list\else
    \gdef\eq@listType{0}\expandafter\answers@@sq@tabular\fi{#2}%
}
\def\eq@hspanner{\ }
\def\eq@hspanner@default{\ }
\def\eq@lw@l{\eq@l@l\eq@hspanner}
\def\setMClabelsep#1{\def\eq@hspanner{#1}}
\def\resetMClabelsep{\let\eq@hspanner\eq@hspanner@default}
\def\eq@l@l{\normalsize\normalfont(d)}
\def\eq@lw@f{\kern\RadioFieldSize\eq@hspanner}
\newcommand\Ans@list[2][0]{\gdef\eq@pPTs{#1}%
    \xdef\Ans@choice{#2}\item\relax\if\eq@listType1%
    \addtocounter{quizno}{-1}\refstepcounter{quizno}\fi}
\newenvironment{answers@sq@list}[1]
{%
    \if\aeb@answerType r
        \let\endanswers=\endanswers@sq@list
    \else
        \let\endmanswers=\endanswers@sq@list
    \fi
    \vskip\aboveanswersSkip
    \begin{list}{\strut\@Ans}%\begin{list}{\strut\@Ans\ }
    {%
        \if\sqstar*\relax
            \settowidth{\labelwidth}{\eq@lw@f}%
        \else
            \settowidth{\labelwidth}{\eq@lw@l}%
        \fi
        \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
        \setlength{\topsep}{0pt}\setlength{\partopsep}{0pt}%
        \setlength{\listparindent}{\parindent}%
        \setlength{\leftmargin}{\labelwidth}%
        \setlength{\labelsep}{0pt}%
        \def\Ans{\Ans@list}%
    }%
}%
{\end{list}\setcounter{quizno}{0}}
\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}%
    \xdef\Ans@choice{#2}\leavevmode\@Ans
}
\def\answers@@sq@tabular#1{%
    \vskip\aboveanswersSkip\noindent\tabcolsep=0pt
    \eq@tmpdima=\linewidth \divide \eq@tmpdima by#1 %
    \def\Ans{\Ans@tabular}%
    \begin{tabular}{*{#1}{p{\eq@tmpdima}}}}%
\def\endanswers@sq{\end{tabular}\setcounter{quizno}{0}}%
\def\endmanswers@sq{\end{tabular}\setcounter{quizno}{0}}%
\def\popiiictm{\special{CTM: pop pop pop}}
\def\linkContentFormat{%
    \if\probstar*\arabic{quizno}\else\alph{quizno}\fi}
\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
\def\Ans@sq@l{%
    \leavevmode\if\eq@listType1\stepcounter{quizno}%
    \else\refstepcounter{quizno}\fi\PBS\raggedright
    \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
    \eq@tmpdima=\wd\eq@tmpbox
    \def\link@@Content{\linkContentWrapper}%
    \hangindent=\eq@tmplength\hangafter=1\relax
    \Ans@sq@l@driver
\eq@hspanner\ignorespaces}
\let\Ans@ck@sq@l=\Ans@sq@l
\def\Ans@sq@f{%
    \if\eq@listType1\stepcounter{quizno}%
    \else\refstepcounter{quizno}\fi\PBS\raggedright
    \settowidth{\eq@tmplength}{\eq@lw@f}%
    \eq@tmpdima=\wd\eq@tmpbox%
    \hangindent=\eq@tmplength\hangafter=1\relax
    \insertGrayLetters % 6.3d
    \Ans@sq@f@driver
\eq@hspanner\ignorespaces}
\let\Ans@ck@sq@f=\Ans@sq@f
\newskip\aboveanswersSkip
\setlength\aboveanswersSkip{3pt}
\def\insertGrayLetters{\ifaebshowgrayletters
    \rlap{\makebox[\RadioFieldSize]%
        {\textcolor{gray}{\Alph{quizno}}}}\else\relax\fi}
\newcount\eq@tabColCnt
\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
    \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
        \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
    }\temp@expand@def
}
\def\bChoiceNumCols{\aeb@numCols}
\define@key{bchoice}{random}[true]{%
    \csname if#1\endcsname\eq@randomizeChoicestrue
        \else\eq@randomizeChoicesfalse\fi
}
\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
\def\@ansChoices[#1]%
{%
    \setkeys{bchoice}{#1}%
    \global\eq@tabColCnt=0
    \ifnum\aeb@numCols=1 % list mode
        \def\eq@next{\@layoutListAns}%
    \else % tabular mode
         \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}%
    \fi
    \eq@next
}
\let\eChoices\relax
\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
    {\@lookforendansChoices{\@layoutListAns}}%
}
\long\def\@getListAns\Ans#1\eAns{%
    \Ans#1\vspace{\@rowskip}%
    \@layoutListAns
}
\long\def\@lookforendansChoices#1{%
    \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
        \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
}
\def\@layoutTabularAns#1{%
    \let\eq@tabSep=\@empty
    \xdef\numShortCols{#1}%
    \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
    \@@layoutTabularAns
}
\def\@@layoutTabularAns{%
    \@ifnextchar\Ans{\@getTabAns}%
        {\@lookforendansChoices{\@@layoutTabularAns}}%
}
\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
    \rowsep{\rowsep@default}
\def\rowsepDefault#1{\def\rowsep@default{#1}}
\def\rowsep@default{0pt}
\long\def\@getTabAns\Ans#1\eAns{%
    \global\advance\eq@tabColCnt1
    \let\@save@tabSep=\eq@tabSep
    \ifnum\eq@tabColCnt=\numShortCols
        \global\eq@tabColCnt=0
            \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
    \else
        \gdef\eq@tabSep{&}%
    \fi
    \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
        \expandafter\@findendans\@gobble}%
        {\@save@tabSep\Ans#1\@@layoutTabularAns}%
}
\def\@findendans{\@ifnextchar\end{}{\expandafter\@findendans\@gobble}}
\def\graylettersOn{\aebshowgrayletterstrue}
\def\graylettersOff{\aebshowgraylettersfalse}
\def\aeb@exiii{\expandafter\expandafter\expandafter}
\def\REF{\@ifstar{\aeb@REFstar}{\aeb@REF}}
\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
    {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
     \else\ref*{#1}\fi}%
}
\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
    {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
     \else\ref{#1}\fi}%
}
\def\aeb@buildUpperCaseRef#1{%
    \xdef\tmp@expand{\aeb@exiii\@firstoftwo\csname r@#1\endcsname}%
    \xdef\tmp@expand{\uppercase{\tmp@expand}}\tmp@expand
}
\endinput
%%
%% End of file `eqexam.def'.
