%% %% 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'.