summaryrefslogtreecommitdiff
path: root/texmf-dist/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-01-11 12:14:02 +0900
committerNorbert Preining <norbert@preining.info>2019-01-11 12:14:02 +0900
commitecacc7b84cdebdf9b1707a44c930b243bcfad52d (patch)
tree332f813c137c22497dbf77b79e51285e737fa9d7 /texmf-dist/tex
parentfe58f035cd3842213361d407fb3129cb4aa2d1ee (diff)
eqexam update
Diffstat (limited to 'texmf-dist/tex')
-rw-r--r--texmf-dist/tex/latex/eqexam/aebrandom.def5
-rw-r--r--texmf-dist/tex/latex/eqexam/eqalone.def87
-rw-r--r--texmf-dist/tex/latex/eqexam/eqecus.opt12
-rw-r--r--texmf-dist/tex/latex/eqexam/eqexam.def791
-rw-r--r--texmf-dist/tex/latex/eqexam/eqexam.sty6931
-rw-r--r--texmf-dist/tex/latex/eqexam/eqtextb.def1530
-rw-r--r--texmf-dist/tex/latex/eqexam/flextended.def303
-rw-r--r--texmf-dist/tex/latex/eqexam/fortextbook.sty62
8 files changed, 5362 insertions, 4359 deletions
diff --git a/texmf-dist/tex/latex/eqexam/aebrandom.def b/texmf-dist/tex/latex/eqexam/aebrandom.def
index 6a39db37..a8b8adae 100644
--- a/texmf-dist/tex/latex/eqexam/aebrandom.def
+++ b/texmf-dist/tex/latex/eqexam/aebrandom.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebrandom.def}
- [2017/03/16 v7.8g %
+ [2018/12/13 v8.2.8 %
Exerquiz support for randomization (dps)]
\@ifundefined{nextrandom}{\input{random.tex}}{}
\def\nextrandom{\begingroup
@@ -42,6 +42,7 @@
\ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
\endgroup
}
+\def\writeSeedToSolnFile{\writeT@ExSolns{\string\randomi=\the\randomi}}
\def\@ansChoices[#1]%
{%
\global\let\@tempholdSaveAns\@empty % 5/24
diff --git a/texmf-dist/tex/latex/eqexam/eqalone.def b/texmf-dist/tex/latex/eqexam/eqalone.def
index f9e68f24..de2a0a65 100644
--- a/texmf-dist/tex/latex/eqexam/eqalone.def
+++ b/texmf-dist/tex/latex/eqexam/eqalone.def
@@ -1,44 +1,43 @@
-%%
-%% This is file `eqalone.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eqexam.dtx (with options: `copyright,standalone')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eqexam.sty package, %%
-%% Copyright (C) 2005--2017 D. P. Story %%
-%% dpstory@uakron.edu %%
-%% %%
-%% This program can redistributed and/or modified under %%
-%% the terms of the LaTeX Project Public License 1.2 %%
-%% Distributed from CTAN archives in directory %%
-%% macros/latex/base/lppl.txt; either version 1 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqalone.def}
- [2012/25/01 v3.0t Minimal code used by eqexam (dps)]
-\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}% defined in eforms
-\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{} % defined in eforms
-\def\RadioFieldSize{11bp}
-\newdimen\eqcenterWidget
-\def\centerWidget
-#1{%
- \eqcenterWidget=#1
- \eqcenterWidget=.5\eqcenterWidget
- \advance\eqcenterWidget by-4bp
-}
-\providecommand\previewColor{black}
-\def\eqe@BboxRect#1#2{\hbox{\color{\previewColor}\vbox{\hrule width #1
- \hbox to#1{\vrule height#2\hfill\vrule height#2}\vfill\hrule}}}
-\def\useRectForMC{\let\Bbox\eqe@BboxRect}
-\def\selectedMC{\useRectForMC}
-\def\Rect#1{\textcolor{\@linkcolor}{#1}}
-\def\eqe@striphbox\mbox#1{#1}
-\newcommand{\ReturnTo}[2]{\eq@fititin{\eqe@striphbox#2}}
-\newcommand{\proofingsymbol}[1]{%
- \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
-\endinput
-%%
-%% End of file `eqalone.def'.
+%%
+%% This is file `eqalone.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,standalone')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqalone.def}
+ [2012/25/01 v3.0t Minimal code used by eqexam (dps)]
+\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}% defined in eforms
+\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{} % defined in eforms
+\def\RadioFieldSize{11bp}
+\newdimen\eqcenterWidget
+\def\centerWidget
+#1{%
+ \eqcenterWidget=#1
+ \eqcenterWidget=.5\eqcenterWidget
+ \advance\eqcenterWidget by-4bp
+}
+\def\eqe@BboxRect#1#2{\hbox{\ckbox@Color\vbox{\hrule width #1
+ \hbox to#1{\vrule height#2\hfill\vrule height#2}\vfill\hrule}}}
+\def\useRectForMC{\let\Bbox\eqe@BboxRect}
+\def\selectedMC{\useRectForMC}
+\def\Rect#1{\textcolor{\@linkcolor}{#1}}
+\def\eqe@striphbox\mbox#1{#1}
+\newcommand{\ReturnTo}[2]{\eq@fititin{\eqe@striphbox#2}}
+\newcommand{\proofingsymbol}[1]{%
+ \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
+\endinput
+%%
+%% End of file `eqalone.def'.
diff --git a/texmf-dist/tex/latex/eqexam/eqecus.opt b/texmf-dist/tex/latex/eqexam/eqecus.opt
deleted file mode 100644
index 15c45866..00000000
--- a/texmf-dist/tex/latex/eqexam/eqecus.opt
+++ /dev/null
@@ -1,12 +0,0 @@
-%
-% AcroTeX Software Development Teams -- 2010
-% http://www.acrotex.net
-%
-% The following options combination of options are special to the
-% @EASE application. Do not change.
-%
-\DeclareOptionX{atbdbopts}{%
- \ExecuteOptionsX{online,forcolorpaper,nosolutions,nopoints,nototals,nospacetowork,obeylocalversions,myconfig}
-}
-\endinput
-
diff --git a/texmf-dist/tex/latex/eqexam/eqexam.def b/texmf-dist/tex/latex/eqexam/eqexam.def
index 9142ea35..af1947a4 100644
--- a/texmf-dist/tex/latex/eqexam/eqexam.def
+++ b/texmf-dist/tex/latex/eqexam/eqexam.def
@@ -7,30 +7,38 @@
%% exerquiz.dtx (with options: `eqexam')
%%
\ProvidesFile{eqexam.def}
- [2017/03/16 v7.8g %
+ [2018/12/13 v8.2.8 %
Exerquiz support file for eqexam (dps)]
\let\eq@YES=y \let\eq@NO=n
\let\eq@One=1 \let\eq@Zero=0
\def\eq@r{r}\let\eq@f=f \let\eq@l=l
\newif\ifeq@noforms \eq@noformsfalse
-\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse % dps new
+\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse
\newif\ifnocorrections \nocorrectionsfalse
+\@ifundefined{ifeqe@flextended}{\newif\ifeqe@flextended
+ \eqe@flextendedfalse}{}
+\@ifundefined{ifcont@nnot}{\newif\ifcont@nnot \cont@nnotfalse}{}
+\@ifundefined{if@eqalignfilllinestoleft}
+ {\newif\if@eqalignfilllinestoleft\@eqalignfilllinestoleftfalse}{}
\newif\ifkeepdeclaredvspacing \keepdeclaredvspacingfalse
\newif\ifeq@nolink \eq@nolinkfalse
\def\eq@ckglobalhide{\ifeq@globalshowsolutions\eq@hidesolutionfalse\fi}
\def\hidesymbol{h}\def\Hidesymbol{H}
\newif\iftherearesolutions \therearesolutionsfalse
\newif\ifIsRespBox \global\IsRespBoxfalse
-\def\SolutionsAfter{\eq@solutionsaftertrue\eq@nolinktrue}
+\def\SolutionsAfter{\solutionsAtEndfalse\eq@solutionsaftertrue
+ \displayworkareafalse\eq@proofingfalse\eq@nolinktrue}
\newif\ifcqSA\cqSAfalse
-\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse}
+\def\SolutionsAtEnd{\solutionsAtEndtrue\vspacewithsolnstrue
+ \eq@solutionsafterfalse\eq@nolinkfalse
+ \displayworkareafalse\ifvspacewithsolns\eq@nosolutionsfalse\else
+ \eq@nosolutionstrue\fi\eq@proofingfalse\answerkeyfalse}
\def\NoSpaceToWork{\let\eq@insertverticalspace\eq@NO}
\def\SpaceToWork{\let\eq@insertverticalspace\eq@YES}
\SpaceToWork
\long\def\ifNoSolutions#1#2{%
\ifeq@nosolutions\expandafter#1\else
- \expandafter#2\fi
-}
+ \expandafter#2\fi}
\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
\def\turnOnRandomize{\eq@randomizeallChoicestrue}
@@ -44,37 +52,46 @@
\def\exSolafterDefault{#1}\resetSolnAfterToDefault}
\exsolafterDefault{\textit{Solution}:}
\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
-\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand\setDefShortQuizLabelName[1]%
{\def\eq@defaultShortQuizLabelName{#1}}
\setDefShortQuizLabelName{Quiz}
+\newcommand{\writeToExSolns@}[1]{%
+ \ifsolutionsonly\else
+ \ifOKToWriteExamData
+ \set@display@protect
+ \immediate\write\ex@solns{#1}\set@typeset@protect
+ \fi\fi}%
\ifsolutionsonly
-\InputIfFileExists{\jobname_xdefs.cut}{%
+ \InputIfFileExists{\jobname_xdefs.cut}{%
\typeout{^^JExerquiz|Eqexam: Reading \jobname_xdefs.cut^^J}}
{\PackageWarningNoLine{exerquiz|eqexam}{%
\jobname_xdefs.cut not found.\MessageBreak
Recompile file under the vspacewithsolns\MessageBreak
option, then compile with the solutionsonly\MessageBreak
option}}
+ \let\writeToExSolns\@gobble
\else
-\newwrite\ex@solns \immediate\openout \ex@solns \jobname.sol
-\newcommand{\writeToExSolns}[1]{%
- \set@display@protect
- \immediate\write\ex@solns{#1}%
- \set@typeset@protect
-}
-\newwrite\eq@xrefdefns \immediate\openout\eq@xrefdefns\jobname_xdefs.cut
+ \newwrite\ex@solns \immediate\openout \ex@solns \jobname.sol
+ \let\writeToExSolns\writeToExSolns@
+ \newwrite\eq@xrefdefns
+ \immediate\openout\eq@xrefdefns\jobname_xdefs.cut
\fi
+\let\writeT@ExSolns\writeToExSolns
\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
-\newcommand{\writeToQzSolns}[1]{%
- \set@display@protect
- \immediate\write\quiz@solns{#1}%
- \set@typeset@protect
-}
+\newcommand{\writeToQzSolns}[1]{\ifOKToWriteExamData\set@display@protect
+ \immediate\write\quiz@solns{#1}\set@typeset@protect\fi}
+\let\writeT@QzSolns\writeToQzSolns
\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
+\@ifundefined{ifOKToWriteExamData}{\newif\ifOKToWriteExamData
+ \OKToWriteExamDatatrue}{}
+\def\noSolnWrites{\OKToWriteExamDatafalse}
+\def\normalSolnWrites{\OKToWriteExamDatatrue}
+\def\bHideSolnIn#1{#1{\protect\iffalse}\noSolnWrites}
+\def\eHideSolnIn#1{\normalSolnWrites#1{\protect\fi^^J}}
\newcounter{eqexno} \setcounter{eqexno}{0}
\newcounter{@exno} \setcounter{@exno}{0} % running exno
\newcounter{quizno} \setcounter{quizno}{0}
@@ -172,8 +189,9 @@
\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
\includecomment{sPage}\excludecomment{qPage}%
\eq@turnMessageOn}
-\def\eqTopOfSolnPage{\cqSAfalse
+\def\eqTopOfSolnPage{\withinsoldoctrue\cqSAfalse
\eqCQDeclarations}
+\def\eqTopOfQslPage{\withinqsldoctrue}
\eq@turnMessageOff
\includecomment{qPage}\excludecomment{sPage}
\eq@turnMessageOn
@@ -208,15 +226,17 @@
\def\cqFmtPasteQues#1{\cq@Pre\input{#1}\cq@Post}
\def\p@ssQuesToSoln{\ifeq@hidesolution\else
\global\terminexchangedtrue % dps cq
- \writeToExSolns{\protect
- \decleqterminex{\protect\cqFmtPasteQues{\cq@CutName}}}\fi}
+ \ifeq@solutionsafter\else
+ \writeT@ExSolns{\protect\decleqterminex{\protect
+ \cqFmtPasteQues{\cq@CutName}}\eq@commentchar}\fi\fi}
\def\declCopyQues#1{\def\cqCopiedQues{#1}}
\def\def@QuesToSoln{\restoreNormalSolns
\global\terminexchangedfalse % dps cq
- \ifeq@hidesolution\else\writeToExSolns{\protect
+ \ifeq@hidesolution\else\writeT@ExSolns{\protect
\declCopyQues{\protect\input{\cq@CutName}}}\fi}
-\newcommand\restoreNormalSolns{%
- \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
+\newcommand\restoreNormalSolns{\ifeq@solutionsafter\else
+ \writeT@ExSolns{\protect\decleqterminex{\protect
+ \eqterminexDEF}\eq@commentchar}\fi}
\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
\let\eq@@CommonCmd\@empty
\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
@@ -297,9 +317,8 @@
\let\eq@setPrbSolnAftrIndnt\relax
\newcommand{\setPrbSolnAftrIndent}[1]{\ifdim#1=0pt
\def\eq@pslnaindnt{0pt}\let\eq@setPrbSolnAftrIndnt\relax\else
- \edef\eq@pslnaindnt{#1}\edef\eq@setPrbSolnAftrIndnt{%
- \expandafter\noexpand\expandafter\parindent#1\noexpand\relax}\fi
-}
+ \edef\eq@pslnaindnt{#1}\edef\eq@setPrbSolnAftrIndnt{\expandafter
+ \noexpand\expandafter\parindent#1\noexpand\relax}\fi}
\newif\if@restorejustify \@restorejustifyfalse
\newcommand\restoreJustifyOn{\@restorejustifytrue}
\newcommand\restoreJustifyOff{\@restorejustifyfalse}
@@ -345,32 +364,38 @@
\ifeq@exerciseheading
\prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
\afterlabelhskip\marginparafterhook\gEx@CommonCmd
- \eq@setPrbSolnAftrIndnt\ignorespaces\fi
-}
+ \eq@setPrbSolnAftrIndnt\ignorespaces\fi}
\newif\ifterminexchanged \terminexchangedfalse % dps cq
\newcommand\decleqterminex[1]{\def\eqterminex{#1}}
\def\eqterminexDEF{\relax\ignorespaces}
\decleqterminex{\eqterminexDEF}
+\newif\ifmakeExSlLocal \makeExSlLocalfalse
+\def\makeExSolnsLocalOn{\makeExSlLocaltrue}
+\def\makeExSolnsLocalOff{\makeExSlLocalfalse}
+\let\eqMrkSoln\@gobble
\def\eqExerSolnHeaderSngl{%
+ \ifmakeExSlLocal\protect\begingroup^^J\fi
+ \ifx\eqMrkCpyArg\@empty\else
+ \protect\eqMrkSoln{\eqMrkCpyArg}\fi
\protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
\solnItemMngt\protect\exerSolnHeader{\exsecrunhead}{ex.\the@exno}%
{\exsllabelformat}\exer@solnheadhook
- \exersolnheadhook\protect\eqterminex
-}
-\def\eq@@writeexheader{\set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnHeaderSngl}%
- \set@typeset@protect
-}
+ \exersolnheadhook\protect\eqterminex}
+\def\eq@@writeexheader{\ifeq@hidesolution\else\ifOKToWriteExamData
+ \set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnHeaderSngl}%
+ \set@typeset@protect\fi\fi}
\def\eqExerSolnHeaderList{%
+ \ifmakeExSlLocal\protect\begingroup^^J\fi
+ \ifx\eqMrkCpyArg\@empty\else
+ \protect\eqMrkSoln{\eqMrkCpyArg}\fi
\protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
\solnItemMngt\protect\exerSolnHeader{\exsecrunhead}%
{ex.\the@exno\thepartno}{\exsllabelformatwp}%
- \exer@solnheadhook\exersolnheadhook\protect\eqterminex
-}
-\def\eq@@writeexheaderlist{\set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnHeaderList}%
- \set@typeset@protect
-}
+ \exer@solnheadhook\exersolnheadhook\protect\eqterminex}
+\def\eq@@writeexheaderlist{\ifeq@hidesolution\else\ifOKToWriteExamData
+ \set@display@protect\immediate
+ \write\verbatim@out{\eqExerSolnHeaderList}\set@typeset@protect\fi\fi}
\long\def\setsolnspace#1{\def\newsolnspace{#1}%
\let\solnspace\newsolnspace}
\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
@@ -378,13 +403,26 @@
\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
\let\solnhspace\space
\let\solnspace\space
-\def\solnexer@woparts{\def\bLeaveVspace{x}% = no vertical space added
+\let\exsolnonceonlytophook\relax
+\def\solnexer@woparts{%
+ \ifanswerkey\ifeqe@flextended\ifcont@nnot
+ \ifx\solutionparshape\@empty\else % dpsj8
+ \pushEnvir
+ \everypar{}\if@eqalignfilllinestoleft\else
+ \parshape=1 \leadinIndent \linewidth\fi
+ \popEnvir
+ \fi\fi\fi\fi\def\bLeaveVspace{x}% = no vertical space added
+ \exsolnonceonlytophook % dps27
+ \global\let\exsolnonceonlytophook\relax
+ \@ifundefined{KV@eqefillLines@bgonly}{}
+ {\ifKV@eqefillLines@bgonly\ifvmode\else
+ \par\leavevmode\strut\fi\fi
+ \ifKV@eqefillLines@outlineonly\leavevmode\strut\fi}%
\ifeq@ckSolnVspace
- \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%
+ \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%]
{\solnexer@@woparts[\null]}}\else
\def\eq@next{\solnexer@@woparts[\null]}\fi
- \eq@next
-}
+ \eq@next}
\let\eqPriorVspace\@gobble
\newif\if@eqlinedfiller \@eqlinedfillerfalse
\newcommand{\vspaceFiller}[1]{\vfill}
@@ -395,29 +433,27 @@
\@tempcnta=0
\@whilenum\@tempcnta<\soln@keys@nLines\relax\do
{\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
- \advance\@tempcnta1\relax}\par\endgroup
-}
+ \advance\@tempcnta1\relax}\par\endgroup}
+\let\leavevspace\relax % dpsj5
\newcommand{\vspaceFmt}[1]{%
- \ifx\solutionparshape\@empty\else
- \advance\linewidth-\leadinIndentPrtSep\fi
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
\ifdim\sameVspace>0pt
- \let\bLeaveVspace\@empty
- \def\leavevspace{%
- \ifx\eq@insertverticalspace\eq@YES\par
- \eqPriorVspace{#1}{\nobreak\noindent
- \ifx\soln@keys@nLines\@empty
- \if@eqlinedfiller
- \def\eq@lines@next{\vspaceFiller{#1}}\else
- \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
- {\vspaceFiller{#1}}}\fi
- \else
- \def\eq@lines@next{\eq@linesXPgs}%
- \fi\eq@lines@next
- }%
- \fi
- }%
- \fi
-}
+ \let\bLeaveVspace\@empty
+ \def\leavevspace{%
+ \ifx\eq@insertverticalspace\eq@YES\par\eq@quessolskip
+ \eqPriorVspace{#1}{\nobreak\noindent
+ \if@eqlinedfiller
+ \ifx\soln@keys@nLines\@empty
+ \def\eq@lines@next{\vspaceFiller{#1}}\else
+ \def\eq@lines@next{\eq@linesXPgs}\fi
+ \else
+ \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
+ {\vspaceFiller{#1}}}%
+ \fi\eq@lines@next}%
+ \fi
+ }\expandafter\leavevspace
+ \fi}
\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
\let\soln@keys@nLines\@empty
\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
@@ -458,17 +494,21 @@
\let\soln@keys@nLines\@empty\fi
\xdef\sameVspace{\XKV@rm}%
}{\eqSolnForEqexam{#1}}%
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
- \ifvspacewithsolns\vspaceFmt{\sameVspace}\fi
- \ifeq@nosolutions\ifeq@solutionsafter\else
- \vspaceFmt{\sameVspace}\fi\fi
\fi\fi
\solnexer@@@woparts
}
\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
- \def\solnsafterSkipAmt{\the\@tempdima}%
- \def\solutionsafterSkip{\vskip#1\relax}}
+ \edef\solnsafterSkipAmt{\the\@tempdima}%
+ \def\solutionsafterSkip{\vskip\solnsafterSkipAmt\relax}}
\solnsafterSkip{\smallskipamount}
+\def\@solnafterSkipOnce#1{\setlength{\@tempdima}{#1}%
+ \xdef\@solnafterSkipOnceAmt{\the\@tempdima}}%
+\def\@@solnafterSkipOnce{\vskip\@solnafterSkipOnceAmt\relax %dpsj3
+ \gdef\@solnafterSkipOnceAmt{0pt}}
+\def\@solnafterSkipOnceAmt{0pt}
+\def\quessolSkip#1{\setlength{\@tempdima}{#1}%
+ \edef\eq@quessolskip{\noexpand\vskip\the\@tempdima\relax}}
+\def\eq@quessolskip{\vskip\smallskipamount}
\def\eqe@debugVertSkip#1{}
\def\eqe@showEndHere#1{#1}
\def\eqe@setStartSolns{%
@@ -492,118 +532,148 @@
\let\priorexsolafterTab\@empty
\let\priorexsolafterSngl\@empty
\def\eq@Hid{H}\def\eq@hid{h}
-\def\solnexer@@@woparts{%
- \global\thereissolutiontrue
- \def\exerwparts@cols{0}%
- \let\verbatim@out\ex@solns
- \if\currhideopt\eq@Hid
- \let\minVspacet@bs\@empty
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \def\eq@next{\procsoln}%
+\def\solutionafterExCmds#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\eqSolnExCmds\relax\else
+ \def\eqSolnExCmds{#1}\fi}
+\let\eqSolnExCmds\relax
+\def\eq@b@ddCodeSpecialDef#1{#1}%
+\let\eq@b@ddCodeSpecial\eq@b@ddCodeSpecialDef
+\def\solnexer@@@woparts{\ifeq@solutionsafter\else
+ \expandafter\begingroup\fi
+ \global\thereissolutiontrue
+ \global\let\procsoln\relax
+ \global\let\endprocsoln\relax
+ \def\exerwparts@cols{0}%
+ \let\verbatim@out\ex@solns
+ \if\currhideopt\eq@Hid
+ \let\minVspacet@bs\@empty
+ \let\procsoln\eqSavedComment
+ \let\endprocsoln\eqSavedEndCommet
+ \def\eq@next{\procsoln}%
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution
+ \let\procsoln\eqSavedComment
+ \let\endprocsoln\eqSavedEndCommet
\else
- \eq@ckglobalhide
- \ifeq@hidesolution
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \else
- \ifx\bLeaveVspace\@empty\leavevspace\fi
- \ifeq@solutionsafter\else
- \ifx\eq@@CommonCmd\@empty\else
- \set@display@protect
- \immediate\write\verbatim@out{\eq@@CommonCmd}%
- \set@typeset@protect
- \fi
- \fi
- \let\procsoln\verbatimwrite
- \let\endprocsoln\endverbatimwrite
- \fi
- \def\eq@next{%
- \ifeq@solutionsafter%\par
- \removelastskip\removelastparskip
- \cqSAtrue\eqCQDeclarations
- \declCopyQues{\input{\cq@CutName}}%
- \ifx\exsolafter\@empty
- \ifdim\sameVspace=0pt\eqe@setStartSolns
- \else
- \solutionsafterSkip
- \eqe@setStartSolns
- \fi
- \else\par\kern0pt
- \solutionsafterSkip
- \noindent\strut\eqe@setStartSolns
- \fi
- \parskip\eqeques@parsep
- \ifx\endparts\endexercise@parts@tabular
- \eq@setPrbSolnAftrIndnt
- \restorejustify
- \fi
- \ifx\endparts\endexercise@parts@tabular\expandafter
- \priorexsolafterTab\else
- \ifx\endparts\endexercise@parts@list\expandafter
- \priorexsolafterList\else\expandafter
- \priorexsolafterSngl\fi\fi
- \exsolafter\space\ignorespaces
- \solutionparshape
- \else
- \eqExerSolnHeader
- \global\let\eqExerSolnHeader\@empty
- \global\therearesolutionstrue\expandafter\procsoln
- \fi
- }%
+ \ifeq@solutionsafter\else
+ \ifx\eq@@CommonCmd\@empty\else
+ \set@display@protect
+ \immediate\write\verbatim@out{\eq@@CommonCmd}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \let\procsoln\verbatimwrite
+ \let\endprocsoln\endverbatimwrite
\fi
-\eq@next}
+ \def\eq@next{%
+ \ifeq@solutionsafter
+ \let\procsoln\relax
+ \let\endprocsoln\relax
+ \removelastskip\removelastparskip
+ \cqSAtrue\eqCQDeclarations
+ \declCopyQues{\input{\cq@CutName}}%
+ \ifx\exsolafter\@empty
+ \ifdim\sameVspace=0pt\eqe@setStartSolns
+ \else
+ \solutionsafterSkip
+ \@@solnafterSkipOnce
+ \eqe@setStartSolns
+ \fi
+ \else\par\kern0pt
+ \solutionsafterSkip
+ \@@solnafterSkipOnce
+ \noindent\strut\eqe@setStartSolns
+ \fi
+ \parskip\eqeques@parsep
+ \ifx\endparts\endexercise@parts@tabular
+ \eq@setPrbSolnAftrIndnt
+ \restorejustify
+ \fi
+ \ifx\endparts\endexercise@parts@tabular\expandafter
+ \priorexsolafterTab\else
+ \ifx\endparts\endexercise@parts@list\expandafter
+ \priorexsolafterList\else\expandafter
+ \priorexsolafterSngl\fi\fi
+ \exsolafter\space\ignorespaces
+ \solutionparshape
+ \else
+ \eqExerSolnHeader
+ \global\therearesolutionstrue\expandafter\procsoln
+ \fi
+ }%
+ \fi
+ \eq@b@ddCodeSpecial{\eq@next}%
+}% dpsj4
\let\endsolnexerhook\@empty
\let\pkg@endsolnexerhook\@empty
\let\endsolnexerhookaux\@empty
\def\eq@fititin#1{\noindent\unskip\nobreak\hfill\penalty100
\hskip1em\hbox{}\nobreak\hfill#1}%
\let\eqfititin\eq@fititin
+\bgroup\catcode`\%=12\relax
+\gdef\eq@commentchar{%}\egroup
\newcommand\eqExerSolnTrailer{%
\protect\ReturnTo{page.\the\c@page}%
{\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
\exrtnlabelformat\fi}}%
- \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
-}
-\def\endsolnexer@woparts{%
- \if\currhideopt H%
- \ifkeepdeclaredvspacing\vskip\sameVspace\fi
- \csname endprocsoln\endcsname
- \else
- \ifeq@solutionsafter
- \if\exerstar*%
- \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
- \eq@fititin{\mbox{\exrtnlabelformat}}\fi
- \ifx\istabularexer\eq@YES\kern0pt\else\par\fi
-\ifx\minVspacet@bs\@empty
- \ifkeepdeclaredvspacing
- \@tempdima\pagetotal
- \advance\@tempdima-\eq@startSoln
- \@tempdimb\sameVspace\relax
- \ifdim\@tempdimb>1sp\relax
- \advance\@tempdimb-\@tempdima
- \ifdim\@tempdimb>0pt\vglue\@tempdimb\kern0pt
- \let\eqe@showEndHere\@gobble
- \edef\tmp@exp{\noexpand\marginpar{%
- \noexpand\smash{e: adj \the\@tempdimb}}}%
- \eqe@debugVertSkip{\tmp@exp}%
- \fi
- \fi
- \fi
- \eqe@showEndHere{\eqe@debugVertSkip{\marginpar{\smash{e}}}}%
-\fi
- \else
- \endprocsoln
- \eq@ckglobalhide
- \ifeq@hidesolution\else
- \endsolnexerhookaux
- \set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnTrailer}%
- \set@typeset@protect
+ \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi
+ \eq@commentchar^^J%
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+}
+\let\eq@e@ddCodeSpecialDef\relax % dpsj4
+\let\eq@e@ddCodeSpecial\eq@e@ddCodeSpecialDef % dpsj6
+\let\kdvsp@Restore\relax
+\def\eq@clearMrkCpy{\if@targetforextr
+ \global\let\eqMrkCpyArg\@empty
+ \global\@targetforextrfalse\fi
+}
+\def\endsolnexer@woparts{\endprocsoln\eq@e@ddCodeSpecial
+ \pkg@endsolnexerhook
+ \eq@clearMrkCpy
+ \ifeq@solutionsafter\else
+ \expandafter\endgroup\fi % from \begingroup at \solnexer@@@woparts
+ \global\let\exsolnonceonlytophook\relax
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+ \ifvspacewithsolns\vspaceFmt{\sameVspace}\else
+ \ifeq@nosolutions\ifeq@solutionsafter\else
+ \vspaceFmt{\sameVspace}\fi\fi\fi
+ \if\currhideopt H%
+ \ifkeepdeclaredvspacing\vskip\sameVspace\fi
+ \else
+ \ifeq@solutionsafter
+ \ifx\isitleadin\eq@YES\parshape=0 \fi
+ \if\exerstar*%
+ \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
+ \eq@fititin{\mbox{\exrtnlabelformat}}\fi
+ \ifx\istabularexer\eq@YES\unskip\kern0pt\else\par\fi
+ \ifx\minVspacet@bs\@empty
+ \ifkeepdeclaredvspacing
+ \@tempdima\pagetotal
+ \advance\@tempdima-\eq@startSoln
+ \@tempdimb\sameVspace\relax
+ \ifdim\@tempdimb>1sp\relax
+ \advance\@tempdimb-\@tempdima
+ \ifdim\@tempdimb>0pt\vglue\@tempdimb\kern0pt
+ \let\eqe@showEndHere\@gobble
+ \edef\tmp@exp{\noexpand\marginpar{\noexpand
+ \smash{e: adj \the\@tempdimb}}}%
+ \eqe@debugVertSkip{\tmp@exp}%
\fi
+ \fi
+ \fi
+ \eqe@showEndHere{\eqe@debugVertSkip{\marginpar{\smash{e}}}}%
\fi
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\else
+ \endsolnexerhookaux
+ \writeT@ExSolns{\eqExerSolnTrailer}%
+ \fi
+ \fi
\fi
-\pkg@endsolnexerhook\endsolnexerhook}
+ \kdvsp@Restore
+ \endsolnexerhook\penalty0\relax}
\let\eq@exerstarEnv\relax
\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
{\endexercise}
@@ -624,7 +694,7 @@
parts environment}{Use \string\tableadin\space
in the problem* environment of eqexam.}%
}
-\let\istabularexer\eq@NO % dps 2016/12/16
+\let\istabularexer\eq@NO
\def\exercise@parts{\let\rlspar\relax
\ifx\solutionparshape\@empty
\let\isitleadin\eq@NO
@@ -632,14 +702,14 @@
\else\let\isitleadin\eq@YES\fi
\rlspar\removelastskip\par
\if\isitleadin\eq@YES
- \def\eqparts@topsep{0pt}% dps88
- \vskip\eqparts@itemsep\relax\fi % dps88
+ \def\eqparts@topsep{0pt}%
+ \vskip\eqparts@itemsep\relax\fi
\topofpartshook
- \let\itsExerParts\eq@YES % dps17
+ \let\itsExerParts\eq@YES
\global\let\@listiiredefined\eq@NO
\def\exerwparts@cols{0}\@ifnextchar[%
{%
- \if@tableadinitem\else\removelastparskip\fi % dps11
+ \if@tableadinitem\else\removelastparskip\fi
\let\endparts\endexercise@parts@tabular\exercise@parts@tabular@}%
{\let\endparts\endexercise@parts@list\exercise@parts@list}}
\def\eq@extralabelsep{0pt}
@@ -661,16 +731,16 @@
\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
\def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
\@ifnextchar[{\@ckhide}{\eq@item}}
-\newcommand{\partsitemsep}[1]{{% dps88
+\newcommand{\partsitemsep}[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@itemsep{\the\@tempdima}}}
\let\eqpartsitemsep\partsitemsep
\def\eqparts@itemsep{0pt}
-\newcommand\partsparsep[1]{{% dps88
+\newcommand\partsparsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@parsep{\the\@tempdima}}}
\def\eqparts@parsep{0pt}
-\newcommand\partstopsep[1]{{% dps88
+\newcommand\partstopsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@topsep{\the\@tempdima}}}
\def\eqparts@topsep{3pt}
@@ -678,16 +748,14 @@
{The \string\leadinitem\space command is designed to be\MessageBreak
the first item in the problem*\MessageBreak
environment above the parts environment}
- {Use \string\leadinitem\space in the problem* environment.}%
-}
+ {Use \string\leadinitem\space in the problem* environment.}}
\let\leadinitem\leadinitem@external
\let\itsforleadinitem\eq@NO
\newcommand{\eq@leadinitemparts}{\item\relax
\PackageError{exerquiz/eqexam}{The \string\leadinitem\space
command is not allowed in the\MessageBreak
parts environment}
- {Use \string\leadinitem\space in the problem* environment.}%
-}
+ {Use \string\leadinitem\space in the problem* environment.}}
\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
\def\eq@handleOptArgi{\expandafter
\eq@item@latex\eq@optArg\exlisttabheaderafterhook}
@@ -696,6 +764,7 @@
\newenvironment{exercise@parts@list}{%
\settowidth{\eq@tmplength}{\parts@indent}%
\edef\widthOfParts{\the\eq@tmplength}%
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist
\eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
\abovepartshook\list{\normalfont
\if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
@@ -718,11 +787,11 @@
\makebox[\widthOfParts][r]{\eqexlisttabheader}%
}{%
\usecounter{partno}%
- \if\isitleadin\eq@YES % dps7
- \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}% dps7
- \if\itsforleadinitem\eqe@YES\setcounter{partno}{\fliPartNo}\else
- \setcounter{partno}{1}\fi\fi
+ \if\isitleadin\eq@YES
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \if\itsforleadinitem\eqe@YES\setcounter{partno}{\fliPartNo}\else
+ \setcounter{partno}{1}\fi\fi
\let\leadinitem\eq@leadinitemparts
\let\tableadin\eq@tableadinparts
\global\let\solutionparshape\@empty
@@ -756,8 +825,7 @@
\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
{\global\let\eqeCurrProb\relax}
{\xdef\eqeCurrProb{\theeqquestionnoi}}%
- \xdef\eq@currProbStartPage{\arabic{page}}%
-}
+ \xdef\eq@currProbStartPage{\arabic{page}}}
\define@key{tabp@rts}{nCols}{\def\exerwparts@cols{#1}}
\define@key{tabp@rts}{minVspace}{\def\minVspacet@bs{#1}}
\let\minVspacet@bs\@empty
@@ -797,12 +865,12 @@
\def\inittabMark{\global\eq@extabColCnt=0 }
\def\resettabMark{\global\eq@extabColCnt=1 }
\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
- \ifnum\exerwparts@cols>0\relax % dps cq
+ \ifnum\exerwparts@cols>0\relax
\ifx\eq@tabMarkChk\@gobble
\def\eq@atnext{\expandafter
\tabularnewline\expandafter[#1]}\else
\def\eq@atnext{\resettabMark\tabularnewline
- \noalign{\expandafter\kern#1}}\fi % dps7
+ \noalign{\expandafter\kern#1}}\fi
\expandafter\eq@atnext\fi}
\def\eq@tabMark{%
\ifnum\eq@extabColCnt=0\relax
@@ -818,8 +886,7 @@
\fi
\fi
\eq@next
- \global\advance\eq@extabColCnt1\relax
-}
+ \global\advance\eq@extabColCnt1\relax}
\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
\partstabcolsep{1.5pt}
\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
@@ -830,8 +897,9 @@
\partstabrowsep{0pt}
\newenvironment{exercise@parts@tabular}{%
\setcounter{partno}{0}%
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist
\def\tablrIndent{\hglue\prtsIndntSep\relax}%
- \if\isitleadin\eq@YES % dps7
+ \if\isitleadin\eq@YES
\if$\the\everypar$\let\tablrIndent\relax\fi
\setcounter{partno}{1}\fi
\let\leadinitem\eq@leadinitemparts
@@ -861,9 +929,9 @@
\tabcolsep\@tempdima
\multiply\@tempdima\@tempcnta
\advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by\exerwparts@cols
- \advance\eq@tmpdima\prtsIndntSep\relax
- \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi % dps11
+ \divide\eq@tmpdima by\exerwparts@cols\relax %dpsj3
+ \edef\widthOfPartsBox{\the\eq@tmpdima}% dpsj2
+ \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi
\noindent\normalbaselines\kern0pt
\prior@parts@hook\abovepartshook
\tablrIndent\tabular[t]{@{}*{\exerwparts@cols}{>{\setTabulrSolnEnv
@@ -877,7 +945,6 @@
\aftergroup\eq@vpartstabtopsep}
\let\eqe@innermarkpts\relax
\def\item@part@tabular{\refstepcounter{partno}%
- \global\let\eqExerSolnHeader\@empty
\ifeq@solutionsafter
\eq@nolinktrue % no link to solution
\else\ifeq@nosolutions
@@ -894,57 +961,63 @@
\eq@tmpdima=\wd\eq@tmpbox
\addtolength\eq@tmplength{\eq@extralabelsep}%
\xdef\partshangamount{\the\eq@tmplength}%
- \advance\linewidth-\eq@tmplength
\parshape \@ne 0pt \linewidth
\everypar{\parshape \@ne 0pt \linewidth}%
\eq@setPrbSolnAftrIndnt
\makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
\ex@listtabheader@fterhook
- \exlisttabheaderafterhook\ignorespaces
-}
+ \exlisttabheaderafterhook\ignorespaces}
\def\@ckhide[#1]{\edef\eq@arg{#1}%
- \def\currhideopt{x}%
- \ifx\eq@arg\@empty\else
- \if\eq@arg\eq@Hid
- \eq@hidesolutiontrue\eq@nolinktrue%
- \edef\currhideopt{\Hidesymbol}%
- \else
- \ifeq@globalshowsolutions\else
- \if\eq@arg\eq@hid
- \eq@hidesolutiontrue\eq@nolinktrue%
- \def\currhideopt{h}%
- \fi
- \fi
- \fi\fi
- \eq@item
-}
+ \def\currhideopt{x}%
+ \ifx\eq@arg\@empty\else
+ \if\eq@arg\eq@Hid
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \edef\currhideopt{\Hidesymbol}%
+ \else
+ \ifeq@globalshowsolutions\else
+ \if\eq@arg\eq@hid
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \def\currhideopt{h}%
+ \fi
+ \fi
+ \fi\fi
+ \eq@item}
\def\tabControlOn{\@ifundefined{@xtabularcr}
- {\let\save@@xtabularcr\@xarraycr}
- {\let\save@@xtabularcr\@xtabularcr}}
+ {\let\save@@xtabularcr\@xarraycr}
+ {\let\save@@xtabularcr\@xtabularcr}}
\def\tabControlOff{\@ifundefined{@xtabularcr}
- {\let\@xarraycr\save@@xtabularcr}
- {\let\@xtabularcr\save@@xtabularcr}}
+ {\let\@xarraycr\save@@xtabularcr}
+ {\let\@xtabularcr\save@@xtabularcr}}
\AtBeginDocument{\tabControlOn}
\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
- {\eqe@tab@parts@rowsep}}%
+ {\eqe@tab@parts@rowsep}}%
\def\eqe@tab@parts@rowsep{\save@@xtabularcr
- \noalign{\expandafter\kern\eqparts@tabrowsep}}%
+ \noalign{\expandafter\kern\eqparts@tabrowsep}}%
+\let\eqgrii\relax
+\let\eqgriii\relax
\def\includeexersolutions{\@ifstar
- {\let\resetEXsolns\relax\includeexersolutionsi}
- {\def\resetEXsolns{\global\let\include@solutions\relax}%
- \includeexersolutionsi}%
-}
+ {\let\resetEXsolns\relax\includeexersolutionsi}
+ {\def\resetEXsolns{\global\let\include@solutions\relax}%
+ \includeexersolutionsi}}
\newcommand{\includeexersolutionsi}[1][]{%
- \filterFor{#1}\includeexersolutionsii
-}
+ \filterFor{#1}\includeexersolutionsii}
\def\includeexersolutionsii{%
- \include@solutions
- \resetEXsolns
- \let\eqFilterArg\@empty
+ \include@solutions
+ \resetEXsolns
+ \let\eqFilterArg\@empty
}
-\long\def\gobbleToEndEXt#1\endeqEXt{%
- \ifeqforpaper\expandafter\@gobbletwo\fi}
+\long\def\gobbleToEndEXt#1\endeqEXt{\ifeqforpaper
+ \expandafter\@gobbletwo\fi}
+\newif\if@targetforextr \@targetforextrfalse
\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
+\newcommand{\mrkForIns}[1]{\def\eqMrkCpyArg{#1}\global
+ \@targetforextrtrue\@ifundefined{#1@mfc}
+ {\global\@namedef{#1@mfc}{}}
+ {\PackageWarning{exerquiz/eqexam}
+ {The name '#1' has already been used.\MessageBreak
+ Please choose another, otherwise results may\MessageBreak
+ be as unexpected}}\ignorespaces}
+\let\eqMrkCpyArg\@empty
\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
\else\expandafter\gobbleToEndEXt\fi}
\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
@@ -962,34 +1035,36 @@
\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
{\let\eq@defaultlheader\relax}
\newif\ifExSolutionsSet \ExSolutionsSetfalse
+\def\eqExSolFileName{\jobname.sol}
\newcommand{\exerSolnInput}
{%
- \@ifundefined{eqe@IWO}{}{\ifsolutionsAtEnd%\ifvspacewithsolns
- \eqe@IWO\@auxout{\string\expandafter\string\gdef
- \string\csname\space eqExamQuesLastPage\string\endcsname
- {\arabic{page}}}\fi}
- \let\webnewpage\relax
- \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
- \ifeq@nosolutions\else
- \iftherearesolutions
- \ifsolutionsonly\eq@solutionshook
- \eqsolutionshook
- \else
- \newpage\eq@solutionshook
- \eqsolutionshook\markright{}\eq@normallheader
- \fi
- \markright{\exsectitle}%
- \ifx\webnewpage\relax
- \def\webnewpage{\let\webnewpage\newpage}%
- \fi
- \priorexsectitle\exerSolnsHeadnToc\priorexslinput
- \InputIfFileExists{\jobname.sol}
- {\global\ExSolutionsSettrue}{\PackageWarning{exerquiz}
- {!!! Solutions to exercises not found}}%
- \global\ExSolutionsSetfalse
- \newpage\eq@defaultlheader
- \fi
+ \@ifundefined{eqe@IWO}{}{\ifsolutionsAtEnd
+ \eqe@IWO\@auxout{\string\expandafter\string\gdef
+ \string\csname\space eqExamQuesLastPage\string\endcsname
+ {\arabic{page}}}\fi}\let\webnewpage\relax
+ \ifsolutionsonly\else
+ \bgroup\OKToWriteExamDatatrue
+ \writeT@ExSolns{\string\endinput}\egroup
+ \immediate\closeout\ex@solns\fi
+ \ifeq@nosolutions\else
+ \iftherearesolutions
+ \ifsolutionsonly\eq@solutionshook
+ \eqsolutionshook
+ \else
+ \newpage\eq@solutionshook
+ \eqsolutionshook\markright{}\eq@normallheader
+ \fi
+ \markright{\exsectitle}%
+ \ifx\webnewpage\relax
+ \def\webnewpage{\global\let\webnewpage\newpage}\fi
+ \priorexsectitle\exerSolnsHeadnToc\priorexslinput
+ \InputIfFileExists{\eqExSolFileName}
+ {\global\ExSolutionsSettrue}{\PackageWarning{exerquiz}
+ {!!! Solutions to exercises not found}}%
+ \global\ExSolutionsSetfalse
+ \newpage\eq@defaultlheader
\fi
+ \fi
}
\def\include@solutions{%
\exerSolnInput
@@ -1061,14 +1136,14 @@
\setlength{\itemsep}{\propQ@itemsep}%
\setlength{\itemindent}{0pt}%
\setlength{\leftmargin}{\labelwidth}%
- }%
+ }%
}{\endlist}
\def\pushquestions{\expandafter\xdef\csname save\@quesctr\endcsname
- {\expandafter\the\csname c@\@quesctr\endcsname}\end{questions}}
+ {\expandafter\the\csname c@\@quesctr\endcsname}\end{questions}}
\def\popquestions{%
- \begin{questions}[\csname quesOpts\@quesctr\endcsname]%
- \setcounter{\@quesctr}{\csname save\@quesctr\endcsname}%
- \@ifnextchar\popquestions{\item[]}{\@ifnextchar\begin{\item[]}{}}}
+ \begin{questions}[\csname quesOpts\@quesctr\endcsname]%
+ \setcounter{\@quesctr}{\csname save\@quesctr\endcsname}%
+ \@ifnextchar\popquestions{\item[]}{\@ifnextchar\begin{\item[]}{}}}
\newcommand{\priorsqhook}[1]{\def\sq@priorhook{#1}}
\priorsqhook{}
\newcommand{\abovesqskip}[1]{\def\sq@aboveskip{#1}}
@@ -1078,15 +1153,16 @@
\def\@shortquizCnt{0}
\def\@sqGenBaseName{eqSqBn\@shortquizCnt}
\let\sqhspace\space
+\let\ListOfSQuizNames\@empty
\newenvironment{shortquiz}
{%
- \xdef\eq@pageThisQ{\the\c@page}%
- \let\@currentQues\@empty
- {\count0=\@shortquizCnt \advance\count0by1\relax
- \xdef\@shortquizCnt{\the\count0}}%
- \goodbreak\@ifstar{\sqForms\@shortquiz}%
- {\if\aeb@FLOverride\eq@f\def\sqstar{*}\else
- \def\sqstar{}\sqLinks\fi\@shortquiz}%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \let\@currentQues\@empty
+ {\count0=\@shortquizCnt \advance\count0by1\relax
+ \xdef\@shortquizCnt{\the\count0}}%
+ \goodbreak\@ifstar{\sqForms\@shortquiz}%
+ {\if\aeb@FLOverride\eq@f\def\sqstar{*}\else
+ \def\sqstar{}\sqLinks\fi\@shortquiz}%
}{\aeb@endshortquiz}
\newenvironment{shortquiz*}
{%
@@ -1102,8 +1178,11 @@
\protected@edef\@currentlabelname{\@currentlabelname}\fi
}
\let\isQZ=q \let\isSQZ=s
+\let\eqQuizType\relax
\def\@@shortquiz[#1]{%\begingroup
\gdef\oField{#1}\gdef\curr@quiz{#1}\gdef\currQuiz{#1}%
+ \edef\tmp@Exp{\noexpand\g@addto@macro\noexpand
+ \ListOfSQuizNames{,#1}}\tmp@Exp
\global\let\eqQzQuesList\@empty
\let\eq@AddProbToQzQuesList\relax
\edef\@currentlabel{\@shortquizCnt}%
@@ -1149,6 +1228,9 @@
\let\prior@eqQt\@empty
\let\prior@eqSQt\@empty
\def\sqsolafterhspace{\space}
+\newif\ifmakeQzSlLocal \makeQzSlLocalfalse
+\def\makeQzSolnsLocalOn{\makeQzSlLocaltrue}
+\def\makeQzSolnsLocalOff{\makeQzSlLocalfalse}
\def\solution@sq{\let\eq@next\relax
\ifx\@qzsolndest\@empty
\PackageWarning{exerquiz}%
@@ -1161,13 +1243,18 @@
\if!\sqsolafter!\else
\sqsolafter\sqsolafterhspace\fi\ignorespaces
\else
- \global\therearequizsolutionstrue\let\verbatim@out=\quiz@solns
+ \global\therearequizsolutionstrue\let\verbatim@out\quiz@solns
\set@display@protect
\immediate\write\verbatim@out{%
+ \ifmakeQzSlLocal\protect\begingroup^^J\fi
\if\eqQuizType\isQZ
\ifx\prior@eqQt\@empty\else\prior@eqQt\fi
+ \ifx\eqMrkCpyArg\@empty\else
+ \protect\eqMrkSoln{\eqMrkCpyArg}\fi
\protect\eqQt{\eqFilterArg}\else
\ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
+ \ifx\eqMrkCpyArg\@empty\else
+ \protect\eqMrkSoln{\eqMrkCpyArg}\fi
\protect\eqSQt{\eqFilterArg}\fi
\protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
[{\curr@quiz}{\currQuizStartPage}]\fi\fi
@@ -1187,6 +1274,7 @@
\aftergroup\ignorespaces
\else
\endverbatimwrite
+ \eq@clearMrkCpy
\ifx\@qzsolndest\@empty\else\set@display@protect
\immediate\write\verbatim@out{\eqSqSolnTrailer}%
\set@typeset@protect
@@ -1208,6 +1296,7 @@
{\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
\fi
\ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+ \ifmakeQzSlLocal\protect\endgroup^^J\fi
}
\let\eqSQt\@gobble
\let\endeqSQt\relax
@@ -1225,16 +1314,12 @@
\def\includequizsolutions{\@ifstar
{\let\resetQZtsolns\relax\includequizsolutionsi}
{\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
- \includequizsolutionsi}%
-}
+ \includequizsolutionsi}}
\newcommand{\includequizsolutionsi}[1][]{%
- \filterFor{#1}\includequizsolutionsii
-}
-\def\includequizsolutionsii{%
- \include@quizsolutions
+ \filterFor{#1}\includequizsolutionsii}
+\def\includequizsolutionsii{\include@quizsolutions
\resetQZtsolns
- \let\eqFilterArg\@empty
-}
+ \let\eqFilterArg\@empty}
\newcommand\useForms{\def\aeb@FLOverride{f}}
\newcommand\useLinks{\def\aeb@FLOverride{l}}
\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
@@ -1247,20 +1332,20 @@
\edef\@currenvline{\on@line}%
}
\def\answers@sq{\parindent0pt
- \ifx\solutionparshape\@empty\else
- \pushEnvir\par\noindent\expandafter\popEnvir\fi
- \stepcounter{questionno}%
- \if\sqstar*\relax
- \if\aeb@FLOverride\eq@l
- \let\@Ans\Ans@sq@l\else
- \let\@Ans\Ans@sq@f\fi
- \else
- \if\aeb@FLOverride\eq@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[]}}}
+ \ifx\solutionparshape\@empty\else
+ \pushEnvir\par\noindent\expandafter\popEnvir\fi
+ \stepcounter{questionno}%
+ \if\sqstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \let\@Ans\Ans@sq@l\else
+ \let\@Ans\Ans@sq@f\fi
+ \else
+ \if\aeb@FLOverride\eq@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{\parindent0pt
\@ifundefined{ifuserectforms}{}
{\if\aeb@FLOverride\eq@f\ifuserectforms
@@ -1281,78 +1366,76 @@
{\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
\let\sq@hwdest\@empty % hard-wired destination
\def\answers@@sq[#1]#2{%
- \xdef\aeb@numCols{#2}%
- \ifx\sq@hwdest\@empty
- \xdef\@qzsolndest{#1}\else
- \gdef\@qzsolndest{\sq@hwdest}\fi
- \if\aeb@numCols1\gdef\eq@listType{1}\expandafter\answers@sq@list
- \else
- \gdef\eq@listType{0}\expandafter\answers@@sq@tabular
- \fi{\aeb@numCols}%
-}
+ \xdef\aeb@numCols{#2}%
+ \ifx\sq@hwdest\@empty
+ \xdef\@qzsolndest{#1}\else
+ \gdef\@qzsolndest{\sq@hwdest}\fi
+ \if\aeb@numCols1\gdef\eq@listType{1}\expandafter\answers@sq@list
+ \else
+ \gdef\eq@listType{0}\expandafter\answers@@sq@tabular
+ \fi{\aeb@numCols}}
\def\setMClabelsepDefault#1{\def\eq@hspanner@default{#1}}
\def\setMClabelsep#1{\def\eq@hspanner{#1}}
\setMClabelsep{\ }\setMClabelsepDefault{\ }
\def\resetMClabelsep{\expandafter\setMClabelsep\expandafter
- {\eq@hspanner@default}}
+ {\eq@hspanner@default}}
\def\eq@lw@l{\eq@l@l\eq@hspanner}
\def\eq@l@l{\normalsize\normalfont(d)}
\def\eq@lw@f{\kern\RadioFieldSize\eq@hspanner}
-\@ifundefined{ifwithsoldoc}{\newif\ifwithsoldoc\withsoldocfalse}{}
+\@ifundefined{ifwithinsoldoc}{\newif\ifwithinsoldoc\withinsoldocfalse}{}
+\@ifundefined{ifwithinqsldoc}{\newif\ifwithinqsldoc\withinqsldocfalse}{}
\let\eq@ansChoiceArray\@empty
\def\eq@recordAnsChoice{%
- \ifx\eq@ansChoiceArray\@empty
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\eq@ansChoiceArray{"\alph{quizno}"}}\else
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\eq@ansChoiceArray{,"\alph{quizno}"}}\fi
- \tmp@exp
-}
-\newcommand\Ans@list[2][0]{\gdef\eq@pPTs{#1}%
- \xdef\Ans@choice{#2}\item\relax\noindent\if\eq@listType\eq@One
- \addtocounter{quizno}{-1}\@ifundefined{ifwithsoldoc}
- {\refstepcounter{quizno}}{\ifwithsoldoc\stepcounter{quizno}\else
- \refstepcounter{quizno}\fi}\fi
- \ignorespaces}
-\newenvironment{answers@sq@list}[1]
-{%
- \ifx\aeb@answerType\eq@r
- \let\endanswers\endanswers@sq@list\else
- \let\endmanswers\endanswers@sq@list\fi
- \list{\strut\@Ans}{%
- \if\sqstar*\relax
- \settowidth{\labelwidth}{\eq@lw@f}\else
- \settowidth{\labelwidth}{\eq@lw@l}\fi
- \setlength{\topsep}{-\parskip+\aboveanswersSkip}%
- \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
- \setlength{\itemsep}{0pt}\setlength{\partopsep}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \ifnum\exerwparts@cols>1\relax
- \ifx\itsExerParts\eq@YES % dps17
- \setlength{\leftmargin}{\labelwidth}\else
- \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
- \else
- \ifx\solutionparshape\@empty
- \setlength{\leftmargin}{\labelwidth}\else
- \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi\fi
- \setlength{\labelsep}{0pt}%
- \def\Ans{\Ans@list}%
- }%
-}%
-{\endlist\setcounter{quizno}{0}\eq@answersEndHook}
-\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}%
- \xdef\Ans@choice{#2}\leavevmode\@Ans
+ \ifx\eq@ansChoiceArray\@empty
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansChoiceArray{"\alph{quizno}"}}\else
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansChoiceArray{,"\alph{quizno}"}}\fi
+ \tmp@exp}
+\newcommand\Ans@list[2][0]{\gdef\eq@pPTs{#1}\xdef\Ans@choice{#2}%
+ \item\relax\noindent\if\eq@listType\eq@One
+ \addtocounter{quizno}{-1}\@ifundefined{ifwithinsoldoc}
+ {\refstepcounter{quizno}}{\ifwithinsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi
+ \ignorespaces}
+\newenvironment{answers@sq@list}[1]{%
+ \ifx\aeb@answerType\eq@r
+ \let\endanswers\endanswers@sq@list\else
+ \let\endmanswers\endanswers@sq@list\fi
+ \list{\strut\@Ans}{%
+ \if\sqstar*\relax
+ \settowidth{\labelwidth}{\eq@lw@f}\else
+ \settowidth{\labelwidth}{\eq@lw@l}\fi
+ \setlength{\topsep}{-\parskip+\aboveanswersSkip}%
+ \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
+ \setlength{\itemsep}{0pt}\setlength{\partopsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \ifnum\exerwparts@cols>1\relax
+ \ifx\itsExerParts\eq@YES
+ \setlength{\leftmargin}{\labelwidth}\else
+ \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
+ \else
+ \ifx\solutionparshape\@empty
+ \setlength{\leftmargin}{\labelwidth}\else
+ \setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
+ \fi
+ \setlength{\labelsep}{0pt}%
+ \def\Ans{\Ans@list}%
+ }% list
+}{\endlist\setcounter{quizno}{0}\eq@answersEndHook}
+\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}\xdef\Ans@choice{#2}%
+ \leavevmode\@Ans
}
\newcommand\sqtabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
\def\sq@tabsep{1.5pt}\else\def\sq@tabsep{#1}\fi}
\sqtabsep{1.5pt}
\def\sqTabPos#1{\def\sq@TabPos{[#1]}}\sqTabPos{}
\def\answers@@sq@tabular#1{%
- \ifinner % dps17
- \ifx\itsExerParts\eq@YES\par\removelastskip
- \removelastparskip\vskip\aboveanswersSkip\fi
+ \ifinner
+ \ifx\itsExerParts\eq@YES\par\removelastskip
+ \removelastparskip\vskip\aboveanswersSkip\fi
\else\par\removelastskip\removelastparskip
- \vskip\aboveanswersSkip\fi
+ \vskip\aboveanswersSkip\fi
\noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
\tabcolsep=0pt
\eq@tmpdima=\linewidth
@@ -1398,8 +1481,8 @@
\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
\def\Ans@sq@l{%
\leavevmode\if\eq@listType\eq@One\stepcounter{quizno}\else
- \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
- {\ifwithsoldoc\stepcounter{quizno}\else
+ \@ifundefined{ifwithinsoldoc}{\refstepcounter{quizno}}
+ {\ifwithinsoldoc\stepcounter{quizno}\else
\refstepcounter{quizno}\fi}\fi\PBS\raggedright
\settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
\eq@tmpdima=\wd\eq@tmpbox
@@ -1411,8 +1494,8 @@
\let\rbf@Opts\@empty
\def\Ans@sq@f{%
\if\eq@listType\eq@One\stepcounter{quizno}\else
- \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
- {\ifwithsoldoc\stepcounter{quizno}\else
+ \@ifundefined{ifwithinsoldoc}{\refstepcounter{quizno}}
+ {\ifwithinsoldoc\stepcounter{quizno}\else
\refstepcounter{quizno}\fi}\fi\PBS\raggedright
\settowidth{\eq@tmplength}{\eq@lw@f}%
\eq@tmpdima=\wd\eq@tmpbox%
diff --git a/texmf-dist/tex/latex/eqexam/eqexam.sty b/texmf-dist/tex/latex/eqexam/eqexam.sty
index bd6a873a..5c78732e 100644
--- a/texmf-dist/tex/latex/eqexam/eqexam.sty
+++ b/texmf-dist/tex/latex/eqexam/eqexam.sty
@@ -1,3151 +1,3780 @@
-%%
-%% This is file `eqexam.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eqexam.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eqexam.sty package, %%
-%% Copyright (C) 2005--2017 D. P. Story %%
-%% dpstory@uakron.edu %%
-%% %%
-%% This program can redistributed and/or modified under %%
-%% the terms of the LaTeX Project Public License 1.2 %%
-%% Distributed from CTAN archives in directory %%
-%% macros/latex/base/lppl.txt; either version 1 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{eqexam}
- [2017/03/16 v4.9 An Exam Construction Package (dps)]
-\def\eqexamdefReq{2017/03/16}
-\RequirePackage{ifpdf}[2006/02/20]
-\RequirePackage{ifxetex}[2006/08/21]
-\usepackage{xkeyval}
-\DeclareOptionX{usecustomdesign}{\eqcustomdesigntrue}
-\newif\ifeqcustomdesign \eqcustomdesignfalse
-\DeclareOptionX{nocustomdesign}{\let\eqe@nocustomdesign=1}
-\let\eqe@nocustomdesign=0
-\DeclareOptionX{fortextbook}{\eqfortextbooktrue}
-\newif\ifeqfortextbook \eqfortextbookfalse
-\DeclareOptionX{forinstr}{\eqforinstrtrue}
-\DeclareOptionX{forstudent}{\eqforinstrfalse}
-\newif\ifeqforinstr \eqforinstrfalse
-\DeclareOptionX{nomarginwrite}{\eqwritetomarginsfalse}
-\newif\ifeqwritetomargins\eqwritetomarginstrue
-\define@key{eqexam.sty}{cfg}[]{%
- \def\arg@i{#1}\ifx\arg@i\@empty
- \PackageWarning{eqexam}{No value for `cfg' specified}\else
- \def\ifeqexamCFG{true}\def\eqexamCFG{#1.cfg}%
- \AtEndOfPackage{\InputIfFileExists{#1.cfg}
- {\typeout{Inputting #1.cfg}}{\PackageWarning{eqexam}{%
- Cannot find configuration file #1.cfg}}}\fi
- }
-\def\ifeqexamCFG{false}
-\let\eqexamCFG\@empty
-\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{%
- \edef\eqe@tmp@exp{%
- \noexpand\DeclareOptionX{myconfig\eqe@tmp@i}%
- {\noexpand\AtEndOfPackage{\expandafter\noexpand
- \csname eqemyconfig\eqe@tmp@i\endcsname}}%
- }\eqe@tmp@exp
-}
-\DeclareOptionX{pointsonleft}{\AtEndOfPackage{\PointsOnLeft}}
-\DeclareOptionX{pointsonright}{\AtEndOfPackage{\PointsOnRight}}
-\DeclareOptionX{pointsonboth}{\AtEndOfPackage{\PointsOnBothSides}}
-\DeclareOptionX{nopoints}{\AtEndOfPackage{\NoPoints}}
-\DeclareOptionX{totalsonleft}{\AtEndOfPackage{\TotalsOnLeft}}
-\DeclareOptionX{totalsonright}{\AtEndOfPackage{\TotalsOnRight}}
-\DeclareOptionX{nozerototals}{\AtEndOfPackage{\noZeroTotals}}
-\let\eqe@YES=y \let\eqe@NO=n
-\let\eqe@One=1 \let\eqe@Zero=0
-\let\eqe@Two=2 \let\eqe@Three=3 \let\eqe@Four=4
-\DeclareOptionX{nototals}{\AtEndOfPackage{\NoTotals}}
-\DeclareOptionX{noparttotals}{%
- \AtEndOfPackage{\let\eq@parttotals\eqe@NO}}
-\DeclareOptionX{parttotalsonright}{%
- \def\eqeomarginbox{\eqeomarginboxright}}
-\DeclareOptionX{parttotalsonleft}{%
- \def\eqeomarginbox{\eqeomarginboxleft}}
-\def\eqeomarginbox{\eqeomarginboxright}
-\DeclareOptionX{noseparationrule}{%
- \AtEndOfPackage{\separationruleOff}}
-\DeclareOptionX{nosummarytotals}{\let\eq@nosummarytotals\eqe@YES}
-\DeclareOptionX{coverpage}{\def\eqex@coverpage{\eqexcoverpage}%
- \setcounter{page}{0}}
-\define@choicekey+{eqexam.sty}{coverpagesumry}[\val\nr]%
- {byparts,bypages,none}{%
- \ifcase\nr\relax
- \def\sumryAnnots{\cpSumrybyparts}\or
- \def\sumryAnnots{\cpSumrybypages}\or
- \let\sumryAnnots\relax
- \fi
-}{\PackageWarning{aeb}{Bad choice for coverpagesumry, permissible values
- are byparts, bypages, and none. Try again}}
-\let\sumryAnnots\relax
-\DeclareOptionX{nospacetowork}{%
- \AtEndOfPackage{\let\eq@insertverticalspace\eqe@NO}}
-\newif\ifanswerkey \answerkeyfalse
-\DeclareOptionX{answerkey}{\AnswerKey}
-\def\AnswerKey{\answerkeytrue\eq@proofingtrue
- \eq@solutionsaftertrue}
-\newif\ifvspacewithsolns\vspacewithsolnsfalse
-\def\ifkeyalt{\csname ifvspacewithsolns\endcsname}
-\def\ifkeyOrkeyalt{\ifanswerkey
- \def\eqe@next{\csname iftrue\endcsname}\else
- \ifvspacewithsolns\def\eqe@next{\csname iftrue\endcsname}\else
- \def\eqe@next{\csname iffalse\endcsname}\fi\fi\eqe@next}
-\DeclareOptionX{vspacewithsolns}{%
- \vspacewithsolnstrue\displayworkareatrue}
-\DeclareOptionX{ftbsolns}{%
- \vspacewithsolnstrue\displayworkareatrue}
-\DeclareOptionX{useforms}{\AtEndOfPackage{\def\sqstar{*}}}
-\newif\ifallowcircmc \allowcircmcfalse
-\DeclareOptionX{allowcirc4mc}{\allowcircmctrue}
-\def\eqe@auto@chk@drivers{\ifpdf\ExecuteOptionsX{pdftex}\else
- \ifxetex\ExecuteOptionsX{xetex}\fi\fi}
-\newif\ifeqeonline \eqeonlinefalse
-\DeclareOptionX{online}{\eqe@auto@chk@drivers
- \let\eq@online\eqe@YES\eqeonlinetrue\ExecuteOptionsX{links}}
-\DeclareOptionX{pdf}{\eqe@auto@chk@drivers\let\load@web\eqe@YES}
-\DeclareOptionX{links}{\eqe@auto@chk@drivers
- \let\load@web\eqe@YES\let\load@exerquiz\eqe@YES}
-\DeclareOptionX{email}{\eqe@auto@chk@drivers
- \let\use@email\eqe@YES\ExecuteOptionsX{online}}
-\newif\ifeqobeylocalversion \eqobeylocalversionfalse
-\DeclareOptionX{obeylocalversions}{\eqobeylocalversiontrue}
-\DeclareOptionX{usexkv}{\let\eq@usexkeys\eqe@YES}
-\let\eq@usexkeys\eqe@YES
-\let\eq@renditionOptions\@empty
-\let\eq@max@selected\@empty \let\eq@ren@selected\@empty
-\DeclareOptionX{max}{\def\eq@max@selected{#1}%
- \g@addto@macro\eq@renditionOptions{\numVersions{#1}}}
-\DeclareOptionX{rendition}{\def\eq@ren@selected{#1}%
- \g@addto@macro\eq@renditionOptions{\forVersion{#1}}}
-\DeclareOptionX{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
-\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
- {\typeout{inputting aebrandom.def}}{cannot find aebrandom.def}}
-\let\eq@online\eqe@NO
-\def\ifisOnline{\ifx\eq@online\eqe@YES}
-\let\use@email\eqe@NO
-\let\load@web\eqe@NO
-\let\load@exerquiz\eqe@NO
-\def\sqLinks{\def\sqstar{}}\sqLinks
-\def\sqForms{\def\sqstar{*}}
-\def\NoSpaceToWork{\let\eq@insertverticalspace\eqe@NO}
-\def\SpaceToWork{\let\eq@insertverticalspace\eqe@YES}
-\let\eq@nototals\eqe@NO
-\let\eq@nosummarytotals\eqe@NO
-\let\eq@parttotals\eqe@YES
-\let\eqx@separationrule\eqe@YES
-\let\eq@insertverticalspace\eqe@YES
-\let\eqex@coverpage\relax
-\def\@reportpoints{0}
-\let\marginpoints\@empty
-\let\totalsbox=\hfil
-\@ifundefined{ifequsecolor}{\newif\ifequsecolor\equsecolorfalse}{}
-\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
- \PassOptionsToPackage{monochrome}{\eq@ColorPackage}}
-\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue} % for print
-\DeclareOptionX{preview}{\previewtrue}
-\define@key{eqexam.sty}{webOpts}[]{\def\eqe@webOpts{#1,\eqDriverName}}
-\def\eqe@webOpts{\eqDriverName}
-\define@key{eqexam.sty}{exerquizOpts}[]{\def\eqe@eqOpts{#1,nodljs}}
-\def\eqe@eqOpts{nodljs}
-\DeclareOptionX{nosolutions}{\eq@nolinktrue\eq@nosolutionstrue
- \displayworkareatrue}
-\DeclareOptionX{nohiddensolutions}{\eq@globalshowsolutionstrue}
-\DeclareOptionX{noHiddensolutions}%
- {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
-\DeclareOptionX{solutionsafter}{\eq@solutionsaftertrue
- \displayworkareafalse}
-\DeclareOptionX{solutionsonly}{%
- \solutionsonlytrue\answerkeytrue\displayworkareafalse
- \AtEndOfPackage{\therearesolutionstrue\let\exerSolnsHeadnToc\relax}}
-\DeclareOptionX{proofing}{\eq@proofingtrue}
-\newcommand{\showproofing}{\eq@proofingtrue}
-\newcommand{\hideproofing}{\eq@proofingfalse}
-\newif\ifaebshowgrayletters\aebshowgraylettersfalse
-\DeclareOptionX{showgrayletters}%
- {\AtEndOfPackage{\aebshowgrayletterstrue}}
-\newif\ifdisplayworkarea \displayworkareafalse
-\IfFileExists{xcolor.sty}%
-{\def\eq@ColorPackage{xcolor}\def\eqe@color@opt{table}%
- \PassOptionsToPackage{xcolor}{table}}
-{\def\eq@ColorPackage{color}\let\eqe@color@opt\@empty}
-\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
-\newif\if@eqeuseclassmaketitle \@eqeuseclassmaketitlefalse
-\DeclareOptionX{useclassmaketitle}{\@eqeuseclassmaketitletrue}
-\newif\if@bypasseqexamheading \@bypasseqexamheadingfalse
-\DeclareOptionX{bypasspkgpagestyle}{\@bypasseqexamheadingtrue
- \ExecuteOptionsX{nototals}}
-\DeclareOptionX{dvipsone}{%
- \def\eqe@drivernum{0}\def\eqDriverName{dvipsone}%
- \PassOptionsToPackage{\eq@ColorPackage}{dvipsone}}
-\DeclareOptionX{dvips}{\def\eqe@drivernum{0}\def\eqDriverName{dvips}%
- \PassOptionsToPackage{\eq@ColorPackage}{dvips}}
-\DeclareOptionX{pdftex}{\def\eqe@drivernum{1}\def\eqDriverName{pdftex}%
- \PassOptionsToPackage{\eq@ColorPackage}{pdftex}}
-\DeclareOptionX{dvipdfm}{%
- \def\eqe@drivernum{2}\def\eqDriverName{dvipdfm}%
- \PassOptionsToPackage{\eq@ColorPackage}{dvipdfm}}
-\DeclareOptionX{dvipdfmx}{\def\eqe@drivernum{2}%
- \def\eqDriverName{dvipdfmx}%
- \PassOptionsToPackage{\eq@ColorPackage}{dvipdfmx}}
-\DeclareOptionX{xetex}{\def\eqe@drivernum{2}\def\eqDriverName{xetex}%
- \PassOptionsToPackage{\eq@ColorPackage}{xetex}}
-\DeclareOptionX{textures}{%
- \def\eqe@drivernum{3}\def\eqDriverName{textures}%
- \PassOptionsToPackage{\eq@ColorPackage}{textures}}
-\DeclareOptionX*{%
- \PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
-\def\eqe@drivernum{5}
-\let\eqDriverName\@empty
-\newif\ifeq@solutionsafter \eq@solutionsafterfalse
-\newif\ifsolutionsonly\solutionsonlyfalse
-\newif\ifeq@hidesolution \eq@hidesolutionfalse
-\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
-\newif\ifeq@nosolutions \eq@nosolutionsfalse
-\newif\ifeq@proofing \eq@proofingfalse
-\newif\ifeq@nolink \eq@nolinkfalse
-\@ifundefined{ifpreview}{\newif\ifpreview \previewfalse}{}
-\newif\ifeqforpaper \eqforpaperfalse
-\def\eqe@csarg#1#2{\expandafter#1\csname#2\endcsname}
-\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{\eqe@csarg
- \edef{eqemyconfig\eqe@tmp@i}{\noexpand
- \InputIfFileExists{eqexam\eqe@tmp@i.cfg}{}{}}%
- \eqe@tmp@exp
-}
-\InputIfFileExists{web.cfg}{}{}
-\InputIfFileExists{eqecus.opt}{}{}
-\InputIfFileExists{rendition.cfg}{}{}
-\InputIfFileExists{exambuilder.cfg}{}{}
-\ProcessOptionsX
-\AtEndOfPackage{\selectedMC}
-\edef\eqe@tmpexp{\noexpand
-\RequirePackage{\eq@ColorPackage}}\eqe@tmpexp
-\@ifpackageloaded{xcolor}{\AtEndOfPackage{\let\CT@cell@color\relax
- \let\CT@arc@\relax}%
- \@ifpackagelater{xcolor}{2004/07/04}{}{\PackageError{eqexam}{%
- *************************************************\MessageBreak
- * Your Version of `xcolor.sty' is too old!\MessageBreak
- * You need the version from 2004/07/04 or newer\MessageBreak
- * or use: \string\usepackage[noxcolor]{eqexam}\MessageBreak
- * or \string\documentclass[noxcolor]{article}\MessageBreak
- *************************************************}{}%
- }%
-}{}
-\if\eqe@nocustomdesign1\eqcustomdesignfalse\fi
-\long\def\eqe@IWO#1{\immediate\write#1}
-\newcommand{\showAllAnsAtEnd}{%
- \makeAnsEnvForSolnsAtEnd\eqTopOfSolnPage
- \answerkeytrue\eq@proofingtrue
- \eq@solutionsaftertrue\vspacewithsolnstrue
- \displayworkareafalse\withsoldoctrue
-}
-\newcommand{\makeAnsEnvForSolnsAtEnd}{%
- \let\answers\answers@sq
- \let\endanswers\endanswers@sq
- \let\manswers\manswers@sq
- \let\endmanswers\endmanswers@sq
-}
-\newcommand{\solAtEndFormatting}[1]{\def\eqeAEFormatting{#1}}
-\let\eqeAEFormatting\@empty
-\def\writeAllAnsAtEnd{\ifsolutionsonly\else
- \let\quiz@solns\ex@solns
- \eqe@IWO\quiz@solns{\string\showAllAnsAtEnd}%
- \ifx\eqeAEFormatting\@empty\else
- \eqe@IWO\quiz@solns{\string\eqeAEFormatting}\fi
- \fi
-}
-\newcommand{\setSolnMargins}[1]{\setlength\eqemargin{#1}}
-\def\altSetSolnMargins#1{\def\alt@SetSolnMargins{#1}}
-\let\alt@SetSolnMargins\@empty
-\def\writeBeginEqeQuestions{%
- \ifsolutionsonly\else
- \let\quiz@solns\ex@solns
- \ifx\alt@SetSolnMargins\@empty
- \writeToSolnFile{\string\setSolnMargins{\the\eqemargin}}\else
- \writeToSolnFile{\alt@SetSolnMargins}\fi
- \writeToSolnFile{\string\noindent\string\begin{eqequestions}}%
- \fi
-}
-\newcommand{\setBtwnExamSkip}[1]{\gdef\btwnExamSkipAmt{#1}%
- \def\btwnExamSkip{\ifdim#1=0pt\else
- \vskip#1\relax\fi}}
-\setBtwnExamSkip{6pt}
-\def\writeEndEqeQuestions{%
- \ifsolutionsonly\else
- \let\quiz@solns\ex@solns
- \eqe@IWO\quiz@solns{\string\end{eqequestions}^^J}%
- \writeToSolnFile{\string\btwnExamSkip^^J}%
- \fi
-}
-\ifvspacewithsolns
- \answerkeyfalse\eq@proofingfalse\eq@solutionsafterfalse
- \eq@nolinkfalse\eq@nosolutionsfalse\displayworkareatrue
-\fi
-\let\savedeq@online\eq@online
-\let\savedifeq@solutionsafter\ifeq@solutionsafter
-\let\savedifeq@hidesolution\ifeq@hidesolution
-\let\savedifeq@globalshowsolutions\ifeq@globalshowsolutions
-\let\savedifeq@nosolutions\ifeq@nosolutions
-\let\savedifeq@proofing\ifeq@proofing
-\let\savedifeq@nolink\ifeq@nolink
-\let\savedifpreview\ifpreview
-\let\savedifeqforpaper\ifeqforpaper
-\let\ifnosolutions\ifeq@nosolutions
-\RequirePackage{amstext,amssymb}
-\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
- {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
-\RequirePackage{comment}
-\AtEndDocument{\includeexersolutions}
-\@ifpackageloaded{web}{\let\load@web\eqe@YES}{%
- \ifx\load@web\eqe@YES\ifnum\eqe@drivernum=5
- \PackageInfo{eqexam}{You have not selected a driver %
- for eqexam. Perhaps the \MessageBreak
- driver is introduced through web.cfg%
- }\fi\expandafter\RequirePackage\expandafter[\eqe@webOpts]{web}%
- \edef\@pdfcreator{\@pdfcreator, The eqexam Package}\fi
-}
-\@ifpackageloaded{exerquiz}{\let\load@exerquiz\eqe@YES}{%
- \let\symbolchoice\@gobble
- \ifx\load@exerquiz\eqe@YES\expandafter
- \RequirePackage\expandafter[\eqe@eqOpts]{exerquiz}[2011/08/30]
- \let\importdljs\eqe@YES\let\execjs\eqe@YES
- \fi
-}
-\@ifpackageloaded{eforms}{}{%
- \let\symbolchoice\@gobble
-}
-\def\eqDvipsone{dvipsone}
-\@ifpackageloaded{hyperref}
- {\ifx\eqDriverName\eqDvipsone
- \renewcommand\@pdfviewparams{ null null null}\fi
- }{\let\textorpdfstring\@firstoftwo}
-\let\eq@online\savedeq@online
-\let\ifeq@solutionsafter\savedifeq@solutionsafter
-\def\ifsolutionsafter{\ifeq@solutionsafter} % user interface
-\let\ifeq@hidesolution\savedifeq@hidesolution
-\let\ifeq@globalshowsolutions\savedifeq@globalshowsolutions
-\let\ifeq@nosolutions\savedifeq@nosolutions
-\let\ifeq@proofing\savedifeq@proofing
-\let\ifeq@nolink\savedifeq@nolink
-\let\ifpreview\savedifpreview
-\let\ifeqforpaper\savedifeqforpaper
-\RequirePackage{calc}
-\RequirePackage{pifont}
-\RequirePackage{array}
-\RequirePackage{verbatim}
-\RequirePackage{multicol}
-\setlength\columnseprule{.4pt}
-\raggedcolumns\multicolsep=3pt
-\newcommand{\setmulticolprob}{%
- \setlength{\linewidth}{\linewidth+\eqemargin}}
-\edef\eqe@reqPack{\ifeqfortextbook\noexpand\RequirePackage{eso-pic}\else
-\relax\fi}
-\eqe@reqPack
-\@ifundefined{ifsolutionsAtEnd}
- {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
-\ifvspacewithsolns\solutionsAtEndtrue\fi
-\ifanswerkey\solutionsAtEndfalse\fi
-\ifeq@nosolutions\solutionsAtEndfalse\fi
-\ifeq@solutionsafter\solutionsAtEndfalse\fi
-\@ifundefined{eqemargin}{\newlength{\eqemargin}}{}
-\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
-\def\eqe@decPointPrb{.}\def\eqe@dpsepPrb{\ }
-\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\def\eqe@prtsepPrb{\ }
-\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
-\def\eqe@hspannerPrb{\ }
-\newcommand{\eqexammargin}[2][\normalsize\normalfont\bfseries]{%
- \settowidth{\eqemargin}{#1#2\eqe@decPointPrb\eqe@hspannerPrb}}
-\eqexammargin{00}
-\def\eqe@hspannerSoln{\ } % space after prob number
-\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
-\newcommand{\eqeSetExamPageParams}{%
- \setlength{\headheight}{12pt}
- \setlength{\topmargin}{-.5in}
- \setlength{\headsep}{20pt}
- \setlength{\oddsidemargin}{0pt}
- \setlength{\evensidemargin}{0pt}
- \setlength{\marginparsep}{11pt}
- \setlength{\marginparwidth}{35pt}
- \setlength{\footskip}{11pt}
-}
-\newcommand{\eqExamPageLayout}{%
- \setlength\textwidth\paperwidth
- \addtolength{\textwidth}{-2in}
- \addtolength{\textwidth}{-\oddsidemargin}
- \setlength\textheight{\paperheight}
- \addtolength\textheight{-2in}
- \addtolength\textheight{-\headheight}
- \addtolength\textheight{-\headsep}
- \addtolength\textheight{-\topmargin}
- \addtolength\textheight{-\footskip}
-}
-\ifeqcustomdesign\else
-\eqeSetExamPageParams
-\eqExamPageLayout
-\fi
-\newcommand{\ps@eqExamheadings}
-{%
- \renewcommand{\@oddhead}{%
- {\normalfont\normalsize\ifnum\value{page}<2
- \hfil\else\eqExamRunHead\fi}}%
- \renewcommand{\@evenhead}{\@oddhead}
- \renewcommand{\@oddfoot}{\settotalsbox\runExamFooter}
- \renewcommand{\@evenfoot}{\@oddfoot}
-}
-\raggedbottom
-\newcounter{eqpointsofar}
-\newcounter{eqpointsthispage}
-\newcounter{eq@numparts}
-\newcounter{eq@count}
-\newtoks\partNames \partNames={}
-\newlength{\eq@tmplengthA}
-\newbox{\eq@pointbox}
-\newlength{\eq@pointboxtotalheight}
-\newlength{\eqetmplengtha}
-\newlength{\eqetmplengthb}
-\def\PointsOnLeft{\def\@reportpoints{1}\let\marginpoints\eqleftmargin}
-\def\PointsOnRight{\def\@reportpoints{2}\relax
- \let\marginpoints\eqrightmarginbox}
-\def\PointsOnBothSides{\def\@reportpoints{3}\relax
- \let\marginpoints\eqbothmargins}
-\newif\ifeqe@nopoints \eqe@nopointsfalse
-\def\NoPoints{\if\isInExamEnv\eqe@NO
- \eqe@nopointstrue\def\@reporttotals{0}\let\totalsbox=\hfil
- \let\marginpoints\@empty\let\eq@nosummarytotals\eqe@YES\else
- \PackageWarning{eqexam}{The \string\NoPoints\space ignored;
- it needs to be executed\MessageBreak outside of an
- exam environment}\fi}
-\def\TotalsOnLeft{\def\@reporttotals{1}\def\totalsbox{\totalsboxleft}}
-\def\TotalsOnRight{\def\@reporttotals{2}\def\totalsbox{\totalsboxright}}
-\def\noZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@NO}
-\def\allowZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@YES}
-\allowZeroTotals
-\def\NoTotals{\def\@reporttotals{0}\let\totalsbox=\hfil}
-\def\SummaryTotalsOn{\let\eq@nosummarytotals\eqe@NO}
-\def\SummaryTotalsOff{\let\eq@nosummarytotals\eqe@YES}
-\def\eoeTotalOff{\let\eq@parttotals\eqe@NO}
-\def\eoeTotalOn{\let\eq@parttotals\eqe@YES}
-\def\separationruleOn{\let\eqx@separationrule\eqe@YES}
-\def\separationruleOff{\let\eqx@separationrule\eqe@NO}
-\def\AllowFitItIn{\global\let\eq@fititin\eqfititin}
-\def\DoNotFitItIn{\global\let\eq@fititin\@gobble}
-\def\NoSolutions{\eq@nolinktrue\eq@nosolutionstrue
- \displayworkareatrue}
-\@onlypreamble\NoSolutions
-\def\vspacewithkeyOn{\keepdeclaredvspacingtrue}
-\def\vspacewithkeyOff{\keepdeclaredvspacingfalse}
-\newif\ifdispl@yPoints\displ@yPointstrue
-\newcommand{\displayPointsOn}{\displ@yPointstrue}
-\newcommand{\displayPointsOff}{\displ@yPointsfalse}
-\newif\ifl@stDispl@yPoints\l@stDispl@yPointsfalse
-\def\encloseProblemsWith#1{%
- \ifsolutionsonly\excludecomment{#1}\else
- \includecomment{#1}\fi
-}
-\providecommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
-\proofingsymbolColor{red}
-\providecommand{\instructionsColor}[1]{\def\@instructionsColor{#1}}
-\instructionsColor{blue}
-\providecommand{\eqCommentsColor}[1]{\def\@eqCommentsColor{#1}}
-\eqCommentsColor{blue}
-\providecommand{\eqCommentsColorBody}[1]{\def\@eqCommentsColorBody{#1}}
-\eqCommentsColorBody{black}
-\providecommand{\universityColor}[1]{\def\webuniversity@color{#1}}
-\universityColor{blue}
-\providecommand{\titleColor}[1]{\def\webtitle@color{#1}}
-\titleColor{black}
-\providecommand{\authorColor}[1]{\def\webauthor@color{#1}}
-\authorColor{black}
-\providecommand{\subjectColor}[1]{\def\websubject@color{#1}}
-\subjectColor{blue}
-\providecommand{\linkcolor}[1]{\def\@linkcolor{#1}}
-\linkcolor{blue}
-\providecommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
-\nolinkcolor{black}
-\providecommand{\eqEndExamTotalColor}[1]{\def\endexamtotal@color{#1}}
-\eqEndExamTotalColor{black}
-\newcommand\fillinColor[1]{\def\eq@fillinColor{#1}}\fillinColor{red}
-\providecommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
- \def\aeb@sectioncolor{#1}}
-\sectionColor{blue}
-\newcommand{\forceNoColor}{%
- \proofingsymbolColor{black}\instructionsColor{black}
- \eqCommentsColor{black}\universityColor{black}
- \titleColor{black}\authorColor{black}
- \subjectColor{black}\linkcolor{black}
- \nolinkcolor{black}\fillinColor{black}
- \eqEndExamTotalColor{black}
- \if\load@web\eqe@YES\sectionColor{black}\fi
-}
-\def\examNum#1{\def\nExam{#1}}
-\examNum{1}
-\def\Exam{\ifAB{\eq@VersionAtext}{\eq@VersionBtext}}
-\def\sExam{\ifAB{\eq@shortVersionAtext}{\eq@shortVersionBtext}}
-\def\VersionAtext#1{\def\eq@VersionAtext{#1}}
-\def\VersionBtext#1{\def\eq@VersionBtext{#1}}
-\def\shortVersionAtext#1{\def\eq@shortVersionAtext{#1}}
-\def\shortVersionBtext#1{\def\eq@shortVersionBtext{#1}}
-\VersionAtext{Exam~\nExam--Version A}
-\VersionBtext{Exam~\nExam--Version B}
-\shortVersionAtext{Exam~\nExam A}
-\shortVersionBtext{Exam~\nExam B}
-\newtoks\eqtemptokena
-\newtoks\eqtemptokenb
-\def\numVersions#1{\ifnum#1>26\def\eq@nVersions{26}%
- \PackageWarning{eqexam}{The value of \string\numVersions\space is
- too large. \MessageBreak Choose a natural number less than 27}
- \else\def\eq@nVersions{#1}\fi}
-\newcommand{\longTitleText}[1][]{%
- \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
- \else\let\eq@selectedVersion@save\relax\fi
- \uppercase{\def\eqe@localTextTitle{#1}}%
- \ifx\eqe@localTextTitle\@empty\else
- \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
- \eqe@contTitleText{\Exam}{\endlongTitleText}%
-}
-\def\endlongTitleText{l}
-\newcommand{\shortTitleText}[1][]{%
- \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
- \else\let\eq@selectedVersion@save\relax\fi
- \uppercase{\def\eqe@localTextTitle{#1}}%
- \ifx\eqe@localTextTitle\@empty\else
- \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
- \eqe@contTitleText{\sExam}{\endshortTitleText}%
-}
-\def\endshortTitleText{s}
-\def\eqe@contTitleText#1#2{%
- \setcounter{eq@count}{0}%
- \eqtemptokena={}\let\endtitleMarker#2
- \@gatherTitleText{#1}%
-}
-\def\@gatherTitleText#1#2{%
- \def\eqe@argii{#2}
- \if\endtitleMarker\eqe@argii
- \ifnum\value{eq@count}>\eq@nVersions\let\eqe@next\relax
- \else\def\eqe@next{\eq@shortTitlesFix{#1}}\fi
- \else
- \stepcounter{eq@count}
- \eqtemptokenb=\expandafter{#2}
- \xdef#1{\the\eqtemptokena\expandafter\noexpand
- \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
- \xdef\sExam{\the\eqtemptokena\expandafter\noexpand
- \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
- \eqtemptokena=\expandafter{#1}
- \ifnum\value{eq@count}<\eq@nVersions
- \def\eqe@next{\@gatherTitleText{#1}}%
- \else
- \def\eqe@next{%
- \if\endtitleMarker\endlongTitleText
- \expandafter\eqe@absorbTokensLong
- \else
- \expandafter\eqe@absorbTokensShort
- \fi
- }%
- \fi
- \fi
- \eqe@next
-}
-\long\def\eqe@absorbTokensLong#1\endlongTitleText{%
- \protected@xdef\Exam{\Exam}\ifx\eq@selectedVersion@save\relax
- \eqe@offVersion\else\expandafter\forVersion\expandafter
- {\eq@selectedVersion@save}\fi}
-\long\def\eqe@absorbTokensShort#1\endshortTitleText{%
- \protected@xdef\sExam{\sExam}\ifx\eq@selectedVersion@save\relax
- \eqe@offVersion\else\expandafter\forVersion\expandafter
- {\eq@selectedVersion@save}\fi}
-\def\eq@shortTitlesFix#1{%
- \PackageWarning{eqexam}{You have defined an insufficient number
- of titles\MessageBreak for the number of versions declared in
- \string\numVersions.\MessageBreak Please fix the problem}%
- \stepcounter{eq@count}%
- \if\endtitleMarker\endlongTitleText
- \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
- {??---Title \# \the\value{eq@count}---??}%
- \noexpand\endlongTitleText}
- \else
- \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
- {T\#\the\value{eq@count}??}\noexpand\endshortTitleText}
- \fi
- \addtocounter{eq@count}{-1}%
- \eqe@tmp
-}
-\def\ifAB#1#2{\if\eq@selectedVersion A#1%
- \else\if\eq@selectedVersion B#2\fi\fi}
-\def\eq@replaceToken#1{#1}
-\newif\ifeqglobalversion \eqglobalversionfalse
-\newif\ifeqlocalversion \eqlocalversionfalse
-\newif\if@templocalversion \@templocalversionfalse
-\def\eqe@initializeMultiVersions{%
- \let\save@message\message\let\message\@gobble
- \@tfor\eqe@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
- \expandafter\let\csname v\eqe@tmp\endcsname\@gobble
- \expandafter\excludecomment\expandafter{ver\eqe@tmp}%
- \expandafter\let\csname Afterver\eqe@tmp Comment\endcsname\relax
- }\let\message\save@message
-}
-\AtBeginDocument{\let\eqe@initializeMultiVersions\relax}
-\let\eqe@@onVersion\@empty
-\def\eqe@onVersion{\g@addto@macro\eqe@@onVersion}
-\let\eqe@@offVersion\@empty
-\def\eqe@offVersion{\g@addto@macro\eqe@@offVersion}
-\let\eqe@@holdTemp\@empty
-\def\eqe@holdTemp{\g@addto@macro\eqe@@holdTemp}
-\def\eqe@showArg#1{#1}
-\def\eqe@turnOnComment#1{%
- \csarg\let{v#1}\eqe@showArg
- \edef\exp@temp{\noexpand\includecomment{ver#1}}\exp@temp
-}
-\def\eqe@turnOffComment#1{%
- \csarg\let{v#1}\@gobble
- \edef\exp@temp{\noexpand\excludecomment{ver#1}}\exp@temp
- \csarg\let{Afterver#1Comment}\relax
-}
-\def\forVersion#1%
-{%
- \eqe@initializeMultiVersions
- \let\eqe@@onVersion\@empty
- \let\eqe@@offVersion\@empty
- \global\eqglobalversiontrue
- \setcounter{eq@count}{0}%
- \uppercase{\edef\eq@selectedVersion{#1}}%
- \edef\selVersion{\eq@selectedVersion}%
- \@ifundefined{eq@nVersions}{\PackageInfo{eqexam}{%
- \string\numVersions\space has not been declared, \MessageBreak
- taking the number of versions to be 2.}\def\eq@nVersions{2}}{}%
- \loop
- \stepcounter{eq@count}%
- \expandafter\if\Alph{eq@count}\eq@selectedVersion
- \xdef\eq@nSelectedVersion{\the\value{eq@count}}%
- \setcounter{eq@count}{27}\fi
- \ifnum\value{eq@count}<26\repeat
- \ifnum\eq@nSelectedVersion >\eq@nVersions
- \PackageError{eqexam}
- {The value of \string\forVersion
- \space(\eq@selectedVersion)\MessageBreak
- exceeds the value of \string\numVersions\space
- (\eq@nVersions)}%
- {Decrease the value of \string\forVersion.}%
- \fi
- \setcounter{eq@count}{0}%
- \let\save@message\message\let\message\@gobble
- \loop
- \stepcounter{eq@count}%
- \csarg\let{After\Alph{eq@count}Comment}\relax
- \lowercase
- {%
- \if#1\alph{eq@count}%
- \eqe@turnOnComment{\Alph{eq@count}}%
- \edef\temp@exp{\noexpand
- \eqe@turnOnComment{\Alph{eq@count}}}%
- \expandafter\eqe@onVersion\expandafter{\temp@exp}%
- \edef\temp@exp{\noexpand
- \eqe@turnOffComment{\Alph{eq@count}}}%
- \expandafter\eqe@offVersion\expandafter{\temp@exp}%
- \else
- \eqe@turnOffComment{\Alph{eq@count}}%
- \fi
- }%
- \ifnum\value{eq@count}<\eq@nVersions\repeat
- \let\message\save@message
-}
-\AtEndOfPackage{\numVersions{26}\forVersion{A}%
- \eq@renditionOptions}
-\def\selectVersion#1#2{% #1 \le #2
- \xdef\nLocalSelection{#1}\xdef\nLocalVersions{#2}%
- \let\needsModArith\eqe@YES
- \ifeqobeylocalversion\ifx\nLocalSelection\@empty\else
- \let\needsModArith\eqe@NO\fi\fi
- \edef\exer@solnheadhook{%
- \string\selectVersion{#1}{#2}}%
- \let\save@message\message\let\message\@gobble
- \eqe@@onVersion
- \ifx\eqe@@holdTemp\@empty\else
- \eqe@@onVersion\eqe@@holdTemp
- \let\eqe@@holdTemp\@empty
- \fi
-\ifx\needsModArith\eqe@YES
- \ifeqglobalversion\ifnum\eq@nSelectedVersion>\nLocalVersions
- \eqe@@offVersion
- {\count0=\eq@nSelectedVersion \count2=\count0
- \advance\count0by-1 \divide\count0by\nLocalVersions
- \multiply\count0by\nLocalVersions %\count2=\eq@nSelectedVersion
- \advance\count2by-\count0
- \xdef\nLocalSelection{\the\count2 }%
- \ifeqobeylocalversion\else
- \global\@templocalversiontrue
- \global\eqobeylocalversiontrue\fi}%
- \global\let\eqe@@holdTemp\@empty
- \fi\fi
-\fi
- \ifeqobeylocalversion
- \global\eqlocalversiontrue
- \setcounter{eq@count}{0}%
- \ifx\nLocalSelection\@empty
- \def\nLocalSelection{\eq@nSelectedVersion}%
- \fi
- \ifnum\nLocalSelection>\nLocalVersions
- {\count0=\nLocalSelection
- \count2=\count0
- \advance\count0by-1 \divide\count0by\nLocalVersions
- \multiply\count0by\nLocalVersions
- \advance\count2by-\count0
- \xdef\nLocalSelection{\the\count2 }}%
- \fi
- \let\save@message\message\let\message\@gobble
- \loop
- \stepcounter{eq@count}%
- \csarg\let{Afterver\Alph{eq@count}Comment}\relax
- \lowercase
- {%
- \ifnum\value{eq@count}=\nLocalSelection
- \eqe@turnOnComment{\Alph{eq@count}}%
- \edef\temp@exp{\noexpand
- \eqe@turnOffComment{\Alph{eq@count}}}%
- \expandafter\eqe@holdTemp\expandafter{\temp@exp}%
- \else
- \eqe@turnOffComment{\Alph{eq@count}}%
- \fi
- }%
- \ifnum\value{eq@count}<\nLocalVersions\repeat
- \let\message\save@message
- \fi
- \if@templocalversion\global\eqobeylocalversionfalse\fi
- \@templocalversionfalse
- \let\message\save@message
-}
-\@ifpackageloaded{web}{}{%
- \@ifpackageloaded{hyperref}{}{\let\texorpdfstring\@firstoftwo}%
- \let\web@save@title\title
- \def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
- \def\@web@title[#1]#2{\gdef\webtitle{#2}%
- \@ifundefined{hypersetup}{}{\hypersetup{pdftitle={#2}}}%
- \def\webArg{#1}\ifx\webArg\@empty\gdef\shortwebtitle{#2}\else
- \gdef\shortwebtitle{#1}\fi\web@save@title{#2}}
- \let\web@saved@author\author
- \def\author#1{\gdef\webauthor{#1}%
- \@ifundefined{hypersetup}{}{\hypersetup{pdfauthor={#1}}}%
- \web@saved@author{#1}}
- \def\subject{\@ifnextchar[{\@subject}{\@subject[]}}
- \def\@subject[#1]#2{\def\webArg{#1}%
- \ifx\webArg\@empty\gdef\shortwebsubject{#2}\else
- \gdef\shortwebsubject{#1}\fi\gdef\websubject{#2}%
- \@ifundefined{hypersetup}{}{\hypersetup{pdfsubject={#2}}}}
- \def\email#1{\gdef\webemail{#1}}
- \def\keywords#1{\gdef\webkeywords{#1}%
- \@ifundefined{hypersetup}{}{\hypersetup{pdfkeywords={#1}}}}
- \def\university#1{\gdef\webuniversity{#1}}
- \def\copyrightyears#1{\gdef\webcopyrightyears{#1}}
- \def\version#1{\gdef\web@version@value{#1}%
- \edef\webversion{\ifx\web@version@value\@empty\else
- \noexpand\web@versionlabel\noexpand\
- \noexpand\web@version@value\fi}%
- }
- \let\web@version@value\@empty
- \def\versionLabel#1{\def\web@versionlabel{#1}}
- \versionLabel{Version}
- \def\web@toc{Table of Contents}
- \def\web@continued{cont.}
- \title{}\author{}\email{}\subject{}\keywords{}\university{}
- \providecommand{\optionalPageMatter}[2][]{%
- \def\optionalpagematter{#2}}
- \def\optionalpagematter{}
-}
-\def\duedate#1{\def\theduedate{#1}}
-\duedate{}
-\def\duedate#1{\def\theduedate{#1}}
-\duedate{}
-\newcommand\thisterm{%
- \ifnum\month<6Spring\else
- \ifnum\month<8Summer\else
- \ifnum\month>8Fall\else
- \ifnum\day>25Fall\else
- Summer\fi\fi\fi\fi
-}
-\newcommand{\examAnsKeyLabel}[1]{%
- \def\@examAnsKeyLabel{\ifanswerkey\space #1\fi}}
-\examAnsKeyLabel{Answer Key}
-\newcommand\examNameLabel[1]{\gdef\@examNameLabel{#1\@examAnsKeyLabel}}
-\examNameLabel{Name:}
-\newcommand{\idinfoHighlight}[1]{\def\eqe@idinfohl{#1}}
-\idinfoHighlight{\underbar}
-\newcommand\eqExamName[2][]{%
- \def\eqExamName@argi{#1}\def\eqExamName@argii{#2}}
-\def\eq@ExamName{\bgroup
- \settowidth\eq@tmplengthA{\@examNameLabel\ }%
- \@tempdima=\eqExamName@argii\relax
- \advance\@tempdima by-\eq@tmplengthA
- \eqe@idinfohl{\makebox[\eqExamName@argii][l]{\@examNameLabel}}%
- \expandafter\insTxtFieldIdInfo\expandafter[\eqExamName@argi]%
- {\@tempdima}{IdInfo.Name}\egroup}
-\eqExamName[\Ff\FfRequired]{2.25in}
-\newcommand\examSIDLabel[1]{\gdef\@examSIDLabel{#1}}
-\examSIDLabel{SID:}
-\newcommand\eqSID[2][]{\def\eqSID@argi{#1}\def\eqSID@argii{#2}}
-\def\eq@SID{\bgroup\settowidth\eq@tmplengthA{\@examSIDLabel\ }%
- \@tempdima=\eqSID@argii\relax\advance\@tempdima by-\eq@tmplengthA
- \eqe@idinfohl{\makebox[\eqSID@argii][l]{\@examSIDLabel}}%
- \expandafter\insTxtFieldIdInfo\expandafter[\eqSID@argi]%
- {\@tempdima}{IdInfo.SID}\egroup}
-\eqSID[\Ff\FfRequired]{2.25in}
-\newcommand\examEmailLabel[1]{\gdef\@examEmailLabel{#1}}
-\examEmailLabel{Email:}
-\newcommand\eqEmail[2][]{%
- \def\eqExam@argi{#1}\def\eqEmail@argii{#2}}
-\gdef\eq@Email{\bgroup\settowidth\eq@tmplengthA{\@examEmailLabel\ }%
- \@tempdima=\eqEmail@argii\relax\advance\@tempdima by-\eq@tmplengthA
- \underbar{\makebox[\eqEmail@argii][l]{\@examEmailLabel}}%
- \expandafter\insTxtFieldIdInfo\expandafter[\eqEmail@argi]%
- {\@tempdima}{IdInfo.email}\egroup}
-\eqEmail{2.25in}
-\def\insTxtFieldIdInfo[#1]#2#3{%
- \@ifundefined{@quiz}{}{\if\eq@online\eqe@YES
- \ifeq@nosolutions\ifeq@solutionsafter\else
- \raisebox{-1bp}{\makebox[0pt][r]{%
- \textField[\BC{}#1]{#3}{#2}{11bp}}}%
- \fi\fi\fi
- }%
-}
-\def\SubmitInfo#1#2{%
- \def\EqExam@SubmitURL{#1}\def\@EmailInstr{#2}%
-}
-\def\EmailCourseName#1{\def\@EmailCourseName{#1}}
-\EmailCourseName{\websubject}
-\def\EmailExamName#1{\def\@EmailExamName{#1}}
-\EmailExamName{\webtitle}
-\def\EmailSubject#1{\def\@EmailSubject{#1}}
-\EmailSubject{}
-\def\ServerRetnMsg#1{\def\@ServerRetnMsg{#1}}
-\ServerRetnMsg{}
-\def\SubmitButtonLabel#1{\def\@SubmitButtonLabel{#1}}
-\SubmitButtonLabel{Submit}
-\let\priorSubmitJS\@gobble
-\let\postSubmitJS\@empty
-\def\SubmitButton
-{%
- \ifx\use@email\eqe@YES\ifeq@nosolutions\ifeq@solutionsafter\else
- \makebox[0pt][l]{\pushButton
- [\CA{\@SubmitButtonLabel}\A{\JS{%
- var _eqEok2Submit = true;\r
- var aSubmitFields = new Array("eqexam", "IdInfo");\r
- \priorSubmitJS\r
- if(_eqEok2Submit) this.submitForm("\EqExam@SubmitURL",
- true, false, aSubmitFields);\r
- \postSubmitJS
- }}]{Submit}{1.5in}{16bp}}%
- \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailInstr}
- \V{\@EmailInstr}]{IdInfo.mailTo}{11bp}{11bp}}%
- \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailCourseName}
- \V{\@EmailCourseName}]{IdInfo.courseName}{11bp}{11bp}}%
- \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailExamName}
- \V{\@EmailExamName}]{IdInfo.examName}{11bp}{11bp}}%
- \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailSubject}
- \V{\@EmailSubject}]{IdInfo.subject}{11bp}{11bp}}%
- \makebox[0pt][l]{\textField[\F\FHidden\DV{\@ServerRetnMsg}
- \V{\@ServerRetnMsg}]{IdInfo.retnmsg}{11bp}{11bp}}%
- \fi\fi\fi
-}
-\def\thequizno{\if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
-\def\linkContentFormat{%
- \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
-\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
-\def\Ans@r@l@Defaults
-{%
- \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}
- \textSize{12}\textColor{0 g}
-}
-\newcommand{\optsRadioBtnf}[1]{\def\eqe@optsRadiof{#1}}
-\newcommand{\optsRadioBtnl}[1]{\def\eqe@optsRadiol{#1}}
-\let\eqe@optsRadiof\@empty\let\eqe@optsRadiol\@empty
-\def\eqExam@Ans@sq@l{\leavevmode
- \if\eq@listType1\stepcounter{quizno}\else\ifwithsoldoc
- \stepcounter{quizno}\else\refstepcounter{quizno}\fi\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
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.part\thepartno%
- \else
- eqexam.\curr@quiz.\theeqquestionnoi%
- \fi
- }%
- \if\eq@online\eqe@YES\relax
- \makebox[0pt][l]{%
- \radio@@Button{\presets{\eqe@optsRadiol}}{\fieldName}%
- {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
- \else
- \edef\@linkcolor{\@nolinkcolor}%
- \fi
- \ifeq@nosolutions\edef\@linkcolor{\@nolinkcolor}\fi
- \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
- \Ans@proofing{\eq@tmpdima}%
- \eq@hspanner\ignorespaces
-}
-\def\eqExam@Ans@sq@f{\if\eq@listType1\stepcounter{quizno}\else
- \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
- \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
- \eq@tmpdima=\wd\eq@tmpbox%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \if\eq@online\eqe@NO\previewtrue
- \insertGrayLetters
- \Ans@sq@f@driver
- \else
- \ifanswerkey\previewtrue
- \Ans@sq@f@driver
- \else
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
- part\thepartno%
- \else
- eqexam.\curr@quiz.\theeqquestionnoi%
- \fi
- }\insertGrayLetters
- \radio@@Button{\presets{\eqe@optsRadiof}}%
- {\fieldName}{\RadioFieldSize}%
- {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
- \every@sqRadioButton\insert@circlesymbol}%
- \fi
- \fi
- \Ans@proofing{\RadioFieldSize}%
- \eq@hspanner\ignorespaces
-}
-\newcommand{\optsCkBxf}[1]{\def\eqe@optscbf{#1}}
-\newcommand{\optsCkBxl}[1]{\def\eqe@optscbl{#1}}
-\let\eqe@optscbl\@empty\let\eqe@optscbf\@empty
-\def\eqExam@Ans@ck@sq@l{\leavevmode
- \if\eq@listType1\stepcounter{quizno}\else
- \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\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
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
- part\thepartno.\alph{quizno}%
- \else
- eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
- \fi
- }%
- \if\eq@online\eqe@YES\relax
- \makebox[0pt][l]{\check@@Box{\presets{\eqe@optscbl}}{\fieldName}%
- {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
- \else
- \edef\@linkcolor{\@nolinkcolor}%
- \fi
- \ifeq@nosolutions\def\@linkcolor{\@nolinkcolor}\fi
- \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
- \Ans@proofing{\eq@tmpdima}%
- \eq@hspanner\ignorespaces
-}
-\def\eqExam@Ans@ck@sq@f{\if\eq@listType1\stepcounter{quizno}\else
- \ifwithsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
- \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
- \eq@tmpdima=\wd\eq@tmpbox%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \if\eq@online\eqe@NO\previewtrue
- \insertGrayLetters
- \Ans@sq@f@driver
- \else
- \ifanswerkey\previewtrue
- \Ans@sq@f@driver
- \else
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
- part\thepartno.\alph{quizno}%
- \else
- eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
- \fi
- }\insertGrayLetters
- \mbox{\check@@Box{\presets{\eqe@optscbf}}{\fieldName}%
- {\RadioFieldSize}{\RadioFieldSize}%
- {\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
- \every@sqRadioButton}}%
- \fi
- \fi
- \Ans@proofing{\RadioFieldSize}%
- \eq@hspanner\ignorespaces
-}
-\def\optsMlTextField#1{\def\eqe@optsmltf{#1}}
-\let\eqe@optsmltf\@empty
-\def\eqExamPriorVspace#1{%
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.%
- \theeqquestionnoi.part\thepartno.solution%
- \else
- eqexam.\curr@quiz.\theeqquestionnoi.solution%
- \fi
- }%
- \nobreak\noindent\textField[\BC{}\presets{\eqe@optsmltf}
- \Ff\FfMultiline]{\fieldName}{\linewidth}{#1}\@gobble
-}
-\@ifpackageloaded{exerquiz}{%
- \let\Ans@sq@l\eqExam@Ans@sq@l
- \let\Ans@sq@f\eqExam@Ans@sq@f
- \let\Ans@ck@sq@l\eqExam@Ans@ck@sq@l
- \let\Ans@ck@sq@f\eqExam@Ans@ck@sq@f
- \def\eqexheader@wrapper{\makebox[0pt][r]{%
- \hypertarget{qex.\the@exno}{\eqexheader}}}%
- \if\eq@online\eqe@YES\relax
- \newcounter{@cntfillin}%
- \let\eqPriorVspace\eqExamPriorVspace
- \fi
-}%
-{%
- \input{eqalone.def}
- \input{eqexam.def}
- \@ifl@ter{def}{eqexam}{\eqexamdefReq}{}
- {\PackageWarningNoLine{eqexam}
- {This version of eqexam requires eqexam.def\MessageBreak
- dated \eqexamdefReq\space or later}}
- \def\eqexheader@wrapper{\makebox[0pt][r]{\eqexheader}}
-}
-\AtBeginDocument{%
- \ifvspacewithsolns\writeAllAnsAtEnd\else
- \ifeqfortextbook\writeAllAnsAtEnd\fi\fi
-}
-\vspacewithkeyOff
-\def\selectedMC{\useRectForMC}
-\ifallowcircmc
- \font\eqe@lcir=lcircle10 at 12pt
- \bgroup
- \setbox0=\hbox{\eqe@lcir h}
- \xdef\eqe@cirDiam{\the\wd0}
- \@tempdima=.5\wd0
- \xdef\eqe@cirRadius{\the\@tempdima}
- \egroup
- \def\circ@Glyph#1#2{\hbox{\smash{\raisebox{\eqe@cirRadius}%
- {\makebox[\eqe@cirDiam]{\llap{\rlap{\eqe@lcir#1}%
- \hskip#2\relax}}}}}}
- \def\eqe@BboxCirc#1#2{\hbox{%
- \textcolor{\previewColor}{\circ@Glyph{h}{0pt}}}}
- \def\circProofingForCirc{\centerWidget\RadioFieldSize
- \lower\eqcenterWidget\circ@Glyph{x}{1.4pt}}
- \if\eq@online\eqe@YES
- \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
- \def\selectedMC{\useCircForMC}
- \@ifundefined{eqe@BboxRect}
- {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
- {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
- \else % if not online
- \@ifundefined{eqe@BboxRect}
- {\def\useRectForMC{\let\Bbox\ef@Bbox}}
- {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
- \def\useCircForMC{\let\Bbox\eqe@BboxCirc}
- \def\selectedMC{\useCircForMC}
- \fi
- \def\useCircForProof{\symbolchoice{circle}%
- \proofingsymbol{\circProofingForCirc}}
-\else
- \if\eq@online\eqe@YES
- \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
- \@ifundefined{eqe@BboxRect}
- {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
- {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
- \else
- \@ifundefined{eqe@BboxRect}
- {\def\useRectForMC{\let\Bbox\ef@Bbox}}
- {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
- \def\useCircForMC{\useRectForMC}
- \def\selectedMC{\useRectForMC}
- \fi
- \let\useCircForProof\relax
-\fi
-\newif\ifuserectforms
-\def\useRectForMS{\userectformstrue}
-\def\useCircForMS{\userectformsfalse}
-\newcommand{\useCheckForProof}{\symbolchoice{check}%
- \proofingsymbol{\ding{52}}}
-\useCheckForProof
-\newcommand{\useCrossForProof}{\symbolchoice{cross}%
- \proofingsymbol{\raisebox{-1pt}{\rlap{\kern-1pt\Large\ding{56}}}}}
-\def\MCcolor{black}
-\def\Ans@sq@l@driver{\edef\@linkcolor{\MCcolor}%
- \Rect{\makebox[\eq@tmpdima]{\linkContentWrapper}}%
- \Ans@proofing{\eq@tmpdima}%
-}
-\def\Ans@sq@f@driver{%
- \centerWidget\RadioFieldSize
- \leavevmode\lower\eqcenterWidget\Bbox %\eqe@Bbox
- {\RadioFieldSize}{\RadioFieldSize}%
- \Ans@proofing{\RadioFieldSize}%
-}
-\def\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
-\def\sqsllabel{\eq@sqsllabel}
-\let\quiz@solns\ex@solns
-\newcommand{\preExamSolnHead}{\goodbreak\noindent}
-\newcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
-\newcommand{\postExamSolnHead}{\par\medskip}
-\newcommand{\writeToSolnFile}[1]{%
- \let\quiz@solns\ex@solns
- \set@display@protect
- \eqe@IWO\quiz@solns{#1}%
- \set@typeset@protect
-}
-\def\eqe@writetoSolns#1{%
- \set@display@protect
- \eqe@IWO\quiz@solns{\string\preExamSolnHead
- \string\examSolnHeadFmt{#1}\string\postExamSolnHead}%
- \set@typeset@protect
-}
-\def\eqe@writetoAux#1{%
- \set@display@protect
- \eqe@IWO\@auxout{#1}%
- \set@typeset@protect
-}
-\def\Ans@sq@l@Actions{}
-\def\Ans@sq@f@Actions{}
-\def\Ans@proofing
-#1{%
- \ifeq@proofing\if\Ans@choice1\relax
- \llap{\rlap{\,\@proofingsymbol}\hskip#1\relax}%
- \fi\fi
-}
-\def\eq@ExamLastPage{\csname eqExamLastPage\endcsname}
-\newcommand{\nPagesOnExam}{\csname eqExamLastPage\endcsname}
-\newcommand{\nPagesOfQues}{\ifvspacewithsolns
- \csname eqExamQuesLastPage\endcsname\else
- \csname eqExamLastPage\endcsname\fi}
-\newcommand{\nPagesOfSols}{\def\eqExamNumPagesSolns{0}%
- \csarg\ifx{eqExamLastPage}\relax\else
- \csarg\ifx{eqExamLastPage}\relax\else
- {\count\z@=\nPagesOnExam\relax\advance
- \count\z@-\nPagesOfQues\relax
- \xdef\eqExamNumPagesSolns{\the\count\z@}}\fi\fi
- \eqExamNumPagesSolns
-}
-\newcommand{\lastPageOfExam}[1]{\pageref{#1PageEnd}}
-\newcommand{\firstPageOfExam}[1]{\pageref{#1PageBegin}}
-\newcommand{\eqe@defNumRefii}[1]{%
- \@ifundefined{hyperref}{\let\@getsecondOf\@secondoftwo}
- {\let\@getsecondOf\@secondoffive}%
- \@ifundefined{r@#1}{%
- \csarg\gdef{nRefii@#1}{0}}{%
- \expandafter\xdef\csname nRefii@#1\endcsname
- {\expandafter\expandafter\expandafter
- \@getsecondOf\csname r@#1\endcsname}%
- }%
-}
-\def\eqe@numRefii#1{%
- \csarg\ifx{nRefii@#1}\relax 0\else
- \@nameuse{nRefii@#1}\fi}
-\newcommand{\numLastPageOfExam}[1]{\eqe@numRefii{#1PageEnd}}
-\newcommand{\numFirstPageOfExam}[1]{\eqe@numRefii{#1PageBegin}}
-\newcommand{\makeRefsNums}{%
- \@ifundefined{thePartNames}{}{\begingroup
- \def\\##1{\typeout{processing ##1}%
- \eqe@defNumRefii
- {##1PageEnd}\eqe@defNumRefii{##1PageBegin}}%
- \thePartNames
- \endgroup}%
-}
-\AtBeginDocument{\makeRefsNums}
-\newcommand{\lheadeqe}[1]{\def\eq@lhead{#1}}
-\lheadeqe{\shortwebsubject/\shortwebtitle}
-\newcommand{\cheadeqe}[1]{\def\eq@chead{#1}}
-\cheadeqe{-- Page \arabic{page} of {\nPagesOnExam} --}
-\newcommand{\rheadeqe}[1]{\def\eq@rhead{#1}}
-\rheadeqe{\eq@ExamName}
-\@ifpackageloaded{fancyhdr}{}{%
- \let\lhead\lheadeqe
- \let\chead\cheadeqe
- \let\rhead\rheadeqe
-}
-\newcommand{\runExamHeader}{\eq@lhead\hfill\eq@chead\hfill\eq@rhead}
-\newcommand\eqExamRunHead{%
- \addtolength\textwidth{\oddsidemargin}%
- \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
- {\runExamHeader}%
-}
-\newcommand{\lfooteqe}[1]{\def\eq@lfoot{#1}}
-\lfooteqe{}
-\newcommand{\cfooteqe}[1]{\def\eq@cfoot{#1}}
-\cfooteqe{}
-\newcommand{\rfooteqe}[1]{\def\eq@rfoot{#1}}
-\rfooteqe{}
-\newcommand{\runExamFooter}{\eq@lfoot\hfill\eq@cfoot\hfill\eq@rfoot}
-\newcommand{\lheadSol}[1]{\def\eq@lheadSol{#1}}
-\lheadSol{\shortwebsubject/\shortwebtitle}
-\newcommand{\cheadSol}[1]{\def\eq@cheadSol{#1}}
-\cheadSol{-- Page \arabic{page} of {\eq@ExamLastPage} --}
-\newcommand{\rheadSol}[1]{\def\eq@rheadSol{#1}}
-\rheadSol{SOLUTIONS}
-\newcommand{\runExamHeaderSol}
- {\eq@lheadSol\hfill\eq@cheadSol\hfill\eq@rheadSol}
-\def\eq@solutionshook
-{%
- \gdef\eqExamRunHead{\addtolength\textwidth{\oddsidemargin}%
- \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
- {\runExamHeaderSol}}%
-}
-\newcommand\maketitledesign
-{%
- \makebox[\textwidth]{\normalsize
- \shortstack[l]{\strut\websubject\\\@date}\hfill
- \shortstack[c]{\webtitle\\\strut\@altTitle}\hfill
- \shortstack[l]{\strut\eq@ExamName\\\webauthor}}%
-}
-\def\altTitle#1{\def\@altTitle{#1}}
-\let\@altTitle\@empty
-\def\eqemaketitle
-{%
- \EQEcalculateAllTotals
- \begingroup
- \noindent%\hspace*{-\oddsidemargin}%
- \raisebox{.7in}[0pt][0pt]{\SubmitButton}%
- \maketitledesign
- \endgroup
-}
-\ifeqfortextbook
- \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
-\else
- \if@eqeuseclassmaketitle
- \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
- \else
- \let\maketitle\eqemaketitle
- \fi
-\fi
-\newcommand\placeCoverPageLogo[3]{%
- \def\eqe@insertLogo{\hbox to0pt{%
- \hspace*{#1}\smash{\raisebox{#2}{#3}}\hss}}}
-\let\eqe@insertLogo\relax
-\def\eqexcoverpage{%
- \begingroup
- \pagenumbering{roman}
- \eqe@insertLogo
- \eqexcoverpagedesign
- \endgroup\newpage
- \pagenumbering{arabic}
-}
-\newcommand{\coverpagesubject}[1]{\def\coverpage@subject{#1}}
-\let\coverpage@subject\@empty
-\def\eqexamsubject{\ifx\coverpage@subject\@empty\websubject
- \else\coverpage@subject\fi}
-\newcommand{\coverpageUniversityFmt}[1]{%
- \def\eqex@coverpageUniversityFmt{#1}}
-\coverpageUniversityFmt{\bfseries\large}
-\newcommand{\coverpageSubjectFmt}[1]{%
- \def\eqex@coverpageSubjectFmt{#1}}
-\coverpageSubjectFmt{\bfseries\large}
-\newcommand{\coverpageTitleFmt}[1]{%
- \def\eqex@coverpageTitleFmt{#1}}
-\coverpageTitleFmt{\bfseries\large}
-\newcommand\cpCID[1]{\def\cp@@CID{#1}}
-\let\cp@@CID\@empty
-\newcommand{\cpSetCIDWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
- \xdef\cpCID@argi{\the\@tempdima}\egroup}
-\def\cp@CID{\bgroup\settowidth\eq@tmplengthA{\cp@@CID}%
- \@tempdima=\cpCID@argi\relax
- \advance\@tempdima-\eq@tmplengthA
- \eqe@idinfohl{\makebox[\cpCID@argi][l]{\cp@@CID}}\egroup}
-\cpSetCIDWidth{2.25in}
-\def\eqeSumryVert{\def\eqe@SumryVert{\par\vfill}%
- \let\eqe@SumryHoriz\relax
- \def\eqe@@SumryVert{\vspace{\stretch{-1}}\bigskip}}
-\def\eqeSumryHoriz{\def\eqe@SumryHoriz{\hfill}\let\eqe@SumryVert\relax
- \let\eqe@@SumryVert\relax}
-\eqeSumryHoriz
-\def\eqe@coverPageNaming{0}
-\newcommand{\useUIPartNames}{\def\eqe@coverPageNaming{1}}
-\newcommand{\useCustomPartNames}{\def\eqe@coverPageNaming{2}}
-\newcommand{\customNaming}[2]{\@namedef{userCustom#1}{#2}}
-\newcommand{\cpSetNameAndIDWidth}[1]{\bgroup
- \setlength{\@tempdima}{#1}%
- \xdef\cp@SetNameAndIDWidth{\the\@tempdima}\egroup}
-\cpSetNameAndIDWidth{.45\textwidth}
-\newcommand{\cpEnclNameAndID}[1]{\def\cp@EnclNameAndID{#1}}
-\let\cp@EnclNameAndID\@empty
-\newcommand{\cpSetHghtFrstLn}[1]{\def\cp@HghtFrstLn{#1}}
-\def\cp@HghtFrstLn{0pt}
-\def\cp@setHghtFrstLn{\rule[\cp@HghtFrstLn]{0pt}{0pt}}
-\newcommand\cpNameAndID{\noindent
- \edef\eqExamName@argii{\cp@SetNameAndIDWidth}%
- \edef\eqSID@argii{\cp@SetNameAndIDWidth}%
- \edef\cpCID@argi{\cp@SetNameAndIDWidth}%
- \cp@EnclNameAndID{\parbox[b]{\cp@SetNameAndIDWidth}{\parindent0pt
- \cp@setHghtFrstLn\eq@ExamName\\[2ex]
- \ifx\cp@@CID\@empty\eq@SID\else\cp@CID\fi\\[2ex]
- \ifx\use@email\eqe@YES\eq@Email\\[2ex]\fi
- \textcolor{\webauthor@color}{\webauthor}, \@date\vskip0pt}}}
-\newcommand{\eqexcoverpagedesign}
-{%
- \begingroup
- \parindent0pt
- \thispagestyle{empty}
- \vspace*{.1\textheight}
- \noindent%\hspace*{-\oddsidemargin}%
- \makebox[\linewidth]{\parbox{\linewidth}%
- {\eqex@coverpageUniversityFmt
- \color{\webuniversity@color}%
- \centering\webuniversity}}
- \par\vspace{.1\textheight}
- \noindent%\hspace*{-\oddsidemargin}%
- \makebox[\linewidth]{\parbox{\linewidth}%
- {\eqex@coverpageSubjectFmt
- \color{\websubject@color}%
- \centering\eqexamsubject}}
- \par\vspace{\bigskipamount}
- \noindent%\hspace*{-\oddsidemargin}%
- \makebox[\linewidth]{\parbox{\linewidth}%
- {\eqex@coverpageTitleFmt
- \color{\webtitle@color}%
- \centering\webtitle}}
- \par\vspace{\stretch{1}}
- \optionalpagematter
- \par\vspace{\stretch{1}}\cpNameAndID
- \eqe@SumryHoriz\eqe@SumryVert
- \sumryAnnots
- \endgroup
-}
-\newcommand{\cpSumryHeader}{\textbf{Exam Record}}
-\newcommand{\cpSumryPts}{\,\text{pts}}
-\newcommand{\cpSumryPage}{Page}
-\newcommand{\cpSumryTotal}{Total:}
-\newcommand{\cpSumryGrade}{Grade:}
-\newcommand{\cpSetSumryWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
- \xdef\cp@SetSumryWidth{\the\@tempdima}\egroup}
-\cpSetSumryWidth{.5\textwidth}
-\newcommand{\cpUsefbox}{\let\cp@Usefbox\fbox}
-\cpUsefbox
-\newcommand{\cpNofbox}{\let\cp@Usefbox\mbox}
-\newcommand{\cprulelength}{1.5in}
-\def\cp@IsertNaming#1{%
- \ifcase\eqe@coverPageNaming
- #1\or\@nameuse{userFriendly#1}\or
- \@nameuse{userCustom#1}\else#1\fi
-}
-\newcommand{\cpSumrybyparts}{%
- \eqe@@SumryVert\cp@Usefbox{%
- \ifx\cp@Usefbox\fbox
- \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
- \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
- \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
- \begin{flushleft}
- \setlength{\eqetmplengtha}{\cprulelength}%
- \edef\eqe@cprulelength{\the\eqetmplengtha}%
- \csarg\ifx{NumberOfParts}\relax
- \else
- \count2=0
- \medskip
- \cpSumryHeader\par\parskip\bigskipamount
- \def\\##1{\advance\count2by\csname ##1total\endcsname
- \underbar{\makebox[0pt][l]{%
- \cp@IsertNaming{##1}}\hspace*{\eqe@cprulelength}}%
- / $\eqe@ptsFmt{\csname ##1total\endcsname}%
- \cpSumryPts$\par}\thePartNames
- \fi
- \underbar{\makebox[0pt][l]{\cpSumryTotal}%
- \hspace{\eqe@cprulelength}}/
- $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$ \par
- \underbar{\makebox[0pt][l]{\cpSumryGrade}%
- \hspace{\eqe@cprulelength}}%
- \ifx\cp@Usefbox\fbox\medskip\fi
- \end{flushleft}\kern0pt
- \end{minipage}}\par
-}
-\newcommand{\cpSumrybypages}{%
- \eqe@@SumryVert\cp@Usefbox{%
- \ifx\cp@Usefbox\fbox
- \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
- \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
- \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
- \begin{flushleft}
- \setlength{\eqetmplengtha}{\cprulelength}%
- \edef\eqe@cprulelength{\the\eqetmplengtha}%
- \csarg\ifx{NumberOfParts}\relax
- \else\medskip\count0=0\relax\count2=0\relax
- \cpSumryHeader\par\parskip\bigskipamount
- \ifsolutionsAtEnd
- \@ifundefined{eqExamQuesLastPage}{\def\NUMPAGES{0}}
- {\edef\NUMPAGES{\@nameuse{eqExamQuesLastPage}}}%
- \else
- \@ifundefined{eqExamLastPage}{\def\NUMPAGES{0}}
- {\edef\NUMPAGES{\@nameuse{eqExamLastPage}}}%
- \fi
- \@whilenum\count0<\NUMPAGES\relax\do{%
- \advance\count0by1\relax
- \@ifundefined{Page\the\count0total}{\count4=0\relax}
- {\count4=\@nameuse{Page\the\count0total}\relax}%
- \csarg\ifx{Page\the\count0spilltotal}\relax
- \else\advance\count4by\csname%
- Page\the\count0spilltotal\endcsname\relax\fi
- \advance\count2by\count4\relax\underbar{%
- \makebox[0pt][l]{\cpSumryPage~\the\count0}%
- \hspace*{\eqe@cprulelength}}/
- $\eqe@ptsFmt{\the\count4\relax}%
- \cpSumryPts$\csarg\ifx{Page\the\count0spilltotal}\relax
- \else\ $(\@nameuse{Page\the\count0spilltotal}%
- \cpSumryPts+\@nameuse{Page\the\count0total}%
- \cpSumryPts)$\fi\par
- }%
- \fi
- \underbar{\makebox[0pt][l]{\cpSumryTotal}%
- \hspace{\eqe@cprulelength}}/
- $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$\par
- \underbar{\makebox[0pt][l]{\cpSumryGrade}%
- \hspace{\eqe@cprulelength}}%
- \ifx\cp@Usefbox\fbox\medskip\fi
- \end{flushleft}\kern0pt
- \end{minipage}}\par
-}
-\AtBeginDocument{\eqex@coverpage}
-\def\@marktotalvalue{\global\let\eqe@innermarkpts\relax
- \if@bypasseqexamheading\else\def\eqe@marktxt{%
- \theeqpointvalue\@nameuse{eqExam}\theeq@numparts}%
- \ifx\endparts\endexercise@parts@tabular
- \xdef\eqe@innermarkpts{\noexpand\mark{\eqe@marktxt}}\else
- \mark{\eqe@marktxt}\fi\fi}
-\def\probvalue#1#2{\addtocounter{eqpointvalue}{#1}%
- \ifdispl@yPoints\marginpoints{#1}{#2}\fi
- \@marktotalvalue}
-\newcommand{\widthtpboxes}{35pt}
-\newcommand{\marginboxdesign}[2][]{%
- \parbox{\widthtpboxes}{\tabcolsep=0pt\relax
- \begin{tabular}{|c|}\hline
- \vrule height15pt width0pt#1\\\hline
- \makebox[\widthtpboxes-2\fboxrule]{#2}\\\hline
- \end{tabular}%
- }%
-}
-\newcommand{\eqleftmarginbox}[2]{\makebox[0pt][r]{%
- \setlength\tabcolsep{0pt}%
- \raisebox{-.5\height}[0pt][0pt]{%
- \marginboxdesign{\marginpointsboxtext{#1}{#2}}%
- }\hspace*{\marginparsep}\hspace*{\eqemargin}}%
-}
-\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
-\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
-\newcommand{\eachLabel}[1]{\def\eqeachLabel{#1}}\eachLabel{ea.}
-\newcommand{\pointsLabel}[1]{%
- \def\eqpointsLabel{#1}}\pointsLabel{points}
-\newcommand{\pointLabel}[1]{%
- \def\eqpointLabel{#1}}\pointLabel{point}
-\def\pointsAsText{\def\eqe@ptsFmt{\text}}
-\let\eqe@ptsFmt\relax
-\@onlypreamble\pointsAsText
-\newcommand{\marginpointtext}[2]{\ifnum#2=0\leftmarginPtsTxt{#1}\else
- \leftmarginPtsEaTxt{#2}\fi
-}
-\newcommand{\leftmarginPtsTxt}[1]{(\small$\eqe@ptsFmt{#1}^{\text{%
- \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}}$)}
-\newcommand{\leftmarginPtsEaTxt}[1]{(\small$\eqe@ptsFmt{#1}_{\text{%
- \eqeachLabel}}^{\text{\ifnum#1=1\relax\eqptLabel\else
- \eqptsLabel\fi}}$)}
-\newcommand{\eqleftmargin}[2]{\makebox[0pt][r]{\marginpointtext{#1}{#2}%
- \setlength{\@tempdima}{\marginparsep+\eqemargin}%
- \hspace*{\@tempdima}}}
-\newcommand{\marginpointsboxtext}[2]{\small$\eqe@ptsFmt{#1}\,\text{%
- \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
-\def\@insertPointsBoxPDF
-{
- \def\fieldName{pointsgiven.\curr@quiz.page\thepage.%
- \theeqquestionnoi}%
- \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}]
- {\fieldName}{\widthtpboxes}{15pt}%
-}
-\def\@insertTotalsBoxPDF
-{
- \def\fieldName{pagetotals.\curr@quiz.page\thepage}%
- \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}
- \AA{\AACalculate{AFSimple_Calculate("SUM",
- new Array("pointsgiven.\curr@quiz.page\thepage"));}}]
- {\fieldName}{\widthtpboxes}{15pt}%
-}
-\ifx\use@email y
- \let\insertPointsBoxPDF\@insertPointsBoxPDF
- \let\insertTotalsBoxPDF\@insertTotalsBoxPDF
-\else
- \let\insertPointsBoxPDF\@empty
- \let\insertTotalsBoxPDF\@empty
-\fi
-\newcommand{\eqrightmarginbox}[2]{\makebox[0pt][l]{%
- \setlength\tabcolsep{0pt}%
- \setlength{\@tempdima}{\textwidth-\eqemargin+\marginparsep}%
- \hspace*{\@tempdima}%
- \raisebox{-.5\height}[0pt][0pt]{%
- \marginboxdesign[\insertPointsBoxPDF]%
- {\marginpointsboxtext{#1}{#2}}%
- }\hfil
- }%
-}
-\newcommand{\eqeomarginboxright}[2]{\makebox[0pt][l]{%
- \setlength\tabcolsep{0pt}%
- \setlength{\@tempdima}{\textwidth+\marginparsep-\parindent}%-\parindent
- \hspace*{\@tempdima}%
- \raisebox{-.5\height}[0pt][0pt]{%
- \marginboxdesign[\insertTotalsBoxPDF]%
- {\marginpointsboxtext{#1}{#2}}%
- }\hfil
- }%
-}
-\newcommand{\eqeomarginboxleft}[2]{\noindent\makebox[0pt][r]{%
- \raisebox{-.5\height}[0pt][0pt]{%
- \marginboxdesign[\insertTotalsBoxPDF]%
- {\marginpointsboxtext{#1}{#2}}%
- }{\settowidth{\@tempdimb}{\eqe@hspannerPrb}%
- \setlength{\@tempdima}{\marginparsep+\eqemargin-\@tempdimb}%
- \hspace*{\@tempdima}}}\hfil
-}
-\newcommand{\measurePtBoxHt}{\setbox\eq@pointbox\hbox{%
- \marginboxdesign{\marginpointsboxtext{00}{0}}%
- }\setlength\eq@pointboxtotalheight{.5\ht\eq@pointbox}%
- \xdef\halfHtPtBox{\the\eq@pointboxtotalheight}%
- \setlength\eq@pointboxtotalheight{\dp\eq@pointbox+\ht\eq@pointbox}%
- \xdef\totHtPtBox{\the\eq@pointboxtotalheight}%
- \xdef\dpPtBox{\the\dp\eq@pointbox}%
- \xdef\htPtBox{\the\ht\eq@pointbox}%
-}
-\measurePtBoxHt
-\newcommand{\eqbothmargins}[2]{\eqleftmargin{#1}{#2}%
- \eqrightmarginbox{#1}{#2}}
-\def\lastparttotaled{0}
-\def\parsetotals#1\eqExam#2\end{\def\argi{#1}\def\argii{#2}}
-\def\stripeqExam#1\eqExam{\def\argii{#1}}
-\def\settotalsbox{%
- \expandafter\parsetotals\botmark\eqExam\end
- \ifx\argi\@empty\hfil
- \else\ifx\argii\@empty\hfil
- \else
- \expandafter\stripeqExam\argii
- \setcounter{eqpointsthispage}{\argi}%
- \addtocounter{eqpointsthispage}{-\value{eqpointsofar}}%
- \setcounter{eqpointsofar}{\argi}%
- \xdef\lastparttotaled{\argii}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef{Page\thepage total}%
- {\theeqpointsthispage}}%
- \totalsbox
- \fi
- \fi
-}
-\newcommand\totalsboxtext{\small$
- \eqe@ptsFmt{\theeqpointsthispage}\,\text{%
- \ifnum\theeqpointsthispage=1\relax\eqptLabel\else
- \eqptsLabel\fi}$}
-\newlength\eqevtranstotbox
-\setlength{\eqevtranstotbox}{0pt}
-\def\eqe@chkZeroTotals{\let\eqe@allow\eqe@YES
- \ifx\eqe@zeroTotalsAllowed\eqe@NO
- \ifnum\theeqpointsthispage=0 \let\eqe@allow\eqe@NO\fi\fi}
-\newcommand{\totalsboxleft}{\eqe@chkZeroTotals
- \ifx\eqe@allow\eqe@YES
- \makebox[0pt][r]{\setlength\tabcolsep{0pt}%
- \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
- \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
- }\hspace*{\marginparsep}%
- }\fi\hfil
-}
-\newcommand{\totalsboxright}{\eqe@chkZeroTotals
- \ifx\eqe@allow\eqe@YES
- \makebox[0pt][l]{\setlength\tabcolsep{0pt}%
- \hspace*{\textwidth}\hspace*{\marginparsep}%
- \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
- \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
- }%
- }\fi\hfil
-}
-\ifeqe@nopoints\else\if@bypasseqexamheading\else
-\AtBeginDocument{\mark{0\csname eqExam\endcsname0}}
-\fi\fi
-\AtEndDocument{%
- \eqe@IWO\@auxout{\string\csarg\string\gdef{NumberOfParts}%
- {\arabic{eq@numparts}}}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef{thePartNames}%
- {\the\partNames}}%
- \clearpage\addtocounter{page}{-1}\writelastpage\relax
- \addtocounter{page}{1}%
-}
-\newcommand\theGrandTotal{%
- $\eqe@ptsFmt{\csname eqeGrandTotal\endcsname}$}
-\newcommand{\totalForPart}[1]{$\eqe@ptsFmt{\csname#1total\endcsname}$}
-\def\tot@lForPart#1{\csname#1total\endcsname}
-\newcommand{\percentForPart}[1]{$\eqe@ptsFmt
- {\csname#1percent\endcsname}$\%}
-\newcounter{markerCnt}
-\def\placeMarkerHere#1{%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#1SaveTotalHere}{\theeqpointvalue}}%
-}
-\newcommand{\calcFromMarkers}[3][\@markerTotalFmt]{%
- \@ifundefined{#2SaveTotalHere}{}%
- {\@ifundefined{#3SaveTotalHere}{}{\setcounter{markerCnt}%
- {\@nameuse{#2SaveTotalHere}-\@nameuse{#3SaveTotalHere}}%
- \ifnum\value{markerCnt}<0\relax
- \setcounter{markerCnt}{-\value{markerCnt}}\fi#1}}%
-}
-\newcommand{\markerTotalFmt}[1]{\def\@markerTotalFmt{#1}}
-\markerTotalFmt{\space(\themarkerCnt\space points)}
-\newcommand{\calcQsBtwnMarkers}[2][]{\setcounter{markerCnt}{0}%
- \def\eqe@argi{#1}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#2thisQnum}{\theeqquestionnoi}}%
- \@ifundefined{#2thisQnum}{\csarg\xdef{#2Start}{0}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#2Start}{0}}%
- }{%
- \setcounter{markerCnt}{\value{eqquestionnoi}+1}\csarg
- \xdef{#2Start}{\the\value{markerCnt}}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#2Start}{\@nameuse{#2Start}}}%
- }
- \ifx\eqe@argi\@empty\else
- \@ifundefined{#2thisQnum}{\setcounter{markerCnt}{0}}%
- {\@ifundefined{#1thisQnum}{\setcounter{markerCnt}{0}}{%
- \setcounter{markerCnt}%
- {\@nameuse{#1thisQnum}-\@nameuse{#2thisQnum}}%
- }}%
- \fi
- \csarg\xdef{#2nQs}{\the\value{markerCnt}}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#2nQs}{\the\value{markerCnt}}}%
- \ifx\eqe@argi\@empty\else
- \@ifundefined{#1thisQnum}{\csarg\xdef{#2End}{0}%
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{#2End}{0}}%
- }{%
- \csarg\xdef{#2End}{\@nameuse{#1thisQnum}}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {#2End}{\@nameuse{#2End}}}%
- }%
- \fi
-}
-\newcommand{\markStartFor}[1]{\@nameuse{#1Start}}
-\newcommand{\markEndFor}[1]{\@nameuse{#1End}}
-\newcommand{\markNumQsFor}[1]{\@nameuse{#1nQs}}
-\newcommand{\placeAtxy}[3]{{%
- \par\nointerlineskip
- \ifdisplayworkarea
- \ifx\eq@insertverticalspace\eqe@YES
- \makebox[0pt][l]{\hspace*{-\parindent}\hspace*{#1}%
- \raisebox{#2}[0pt][0pt]{#3}}\fi
- \fi
-}}
-\newsavebox{\workareasb}
-\newenvironment{workarea}[2][\linewidth]
-{%
- \removelastparskip
- \edef\workareadepth{\if\currhideopt H0pt\else#2\fi}%
- \begin{lrbox}{\workareasb}\setlength{\eqetmplengtha}{#1}%
- \begin{minipage}[b][\workareadepth][t]{\eqetmplengtha}\vspace*{3pt}%
-}{%
- \end{minipage}\end{lrbox}%
- \par\ifdisplayworkarea
- \ifx\eq@insertverticalspace\eqe@YES
- \removelastparskip
- \vspace{-\baselineskip}%
- \if\currhideopt H\else
- \noindent\strut\smash{\usebox{\workareasb}}%
- \fi\fi
- \fi
-}
-\def\splitsolution{%
- \@ifnextchar[{\splitsolutioni}%
- {\splitsolutioniii{\panelwidth}{\panelheight}}%
-}
-\def\splitsolutioni[#1]{%
- \@ifnextchar[{\splitsolutionii{#1}}
- {\splitsolutioniii{\panelwidth}{#1}}%
-}
-\def\splitsolutionii#1[#2]{%
- \splitsolutioniii{#1}{#2}%
-}
-\def\splitsolutioniii#1#2{%
- \@ifundefined{panel@write}{\newwrite\panel@write}{}%
- \gdef\ss@Argiii{#1}\gdef\ss@Argii{#2}%
- \let\@sssolution\solution
- \let\end@sssolution\endsolution
- \let\solution\@ssSolution
- \let\endsolution\end@ssSolution
- \par\noindent\ignorespaces
-}
-\def\endsplitsolution{%
- \ifeq@solutionsafter\strut\par\fi
- \ifx\solutionparshape\@empty\else
- \advance\linewidth-\leadinIndentPrtSep\fi %%dps
- \edef\eqe@workwidth{\if\ss@Argi l\noexpand\ss@Argiii
- \else\noexpand\linewidth\fi}%
- \edef\eqe@workfill{\if\ss@Argi l\else\hfill\fi}%
- \begin{workarea}[\eqe@workwidth]{\eqedepth}%
- \let\panelGetDimen\relax%
- \eqe@workfill\input{panel\thepanel@cnt.cut}%
- \end{workarea}
- \strut\par
-}
-\newcommand\panelgap{3pt}
-\newsavebox{\eqpanelbox}
-\newdimen\eqepanelwidth
-\newdimen\eqepanelheight
-\newcommand{\getDimSSPanel}[1]{%
- \sbox{\eqpanelbox}{#1}%
- \eqepanelwidth=\wd\eqpanelbox
- \eqepanelheight=\ht\eqpanelbox
- \advance\eqepanelheight by\the\dp\eqpanelbox
-}
-\def\panelwidth{\eqepanelwidth}
-\def\panelheight{\eqepanelheight}
-\newcounter{panel@cnt}
-\def\panel{\def\eqe@panelir{\eqe@paneli[r]}%
- \@ifnextchar[{\eqe@paneli}
- {\@ifnextchar\relax{\expandafter\eqe@panelir\@gobble}%
- {\eqe@paneli[r]}}%
-}
-\def\eqe@paneli[#1]{%
- \gdef\ss@Argi{#1}\def\eqe@l{l}\def\eqe@r{r}%
- \ifx\ss@Argi\@empty\gdef\ss@Argi{r}\else
- \ifx\eqe@l\ss@Argi\else\ifx\eqe@r\ss@Argi\else
- \PackageError{eqexam}{Permissible arguments for panel are l and r}
- {Use l or r for the argument of panel.}\fi\fi\fi
- \stepcounter{panel@cnt}%
- \immediate\openout \panel@write panel\thepanel@cnt.cut
- \if\currhideopt H%
- \eqe@IWO\panel@write{\vfill}%
- \immediate\closeout\panel@write
- \gdef\ss@Argii{0pt}%
- \else
- \if\currhideopt h\ifeq@solutionsafter\else
- \ifeq@globalshowsolutions\else
- \eqe@IWO\panel@write{\vfill}%
- \immediate\closeout\panel@write
- \gdef\ss@Argii{0pt}%
- \fi\fi
- \fi
- \fi
- \begingroup
- \let\verbatim@out\panel@write
- {\lccode`C=`\%\lccode`P=`\{
- \lowercase{\eqe@IWO\verbatim@out{\string\panelGetDimen PC}}}%
- \verbatimwrite
-}
-\def\endpanel{%
- \endverbatimwrite
- {\lccode`P=`\}\lowercase{\eqe@IWO\verbatim@out{P}}}%
- \immediate\closeout\panel@write
- \endgroup
- \gdef\eqePANELCUT{%
- \let\panelGetDimen\getDimSSPanel
- \input{panel\thepanel@cnt.cut}%
- \setlength{\eq@tmpdima}{\ss@Argiii}%
- \xdef\ss@Argiii{\the\eq@tmpdima}%
- \xdef\mp@Width{\ifeq@solutionsafter\linewidth
- \else\linewidth-\ss@Argiii-\panelgap\fi}%
- }\aftergroup\eqePANELCUT
-}
-\long\def\eqe@IW#1{%
- \ifeq@solutionsafter
- \let\eqe@next\@empty
- \else
- \def\eqe@next{\eqe@IWO\verbatim@out{#1}}%
- \ifeq@nosolutions\else
- \if\currhideopt H%
- \gdef\ss@Argii{0pt}\let\eqe@next\@empty
- \else
- \if\currhideopt h%
- \ifeq@globalshowsolutions\else
- \gdef\ss@Argii{0pt}\let\eqe@next\@empty
- \fi
- \fi
- \fi
- \fi
- \fi
- \eqe@next
-}
-\newenvironment{@ssSolution}[1][\ss@Argii]%
-{%
- \def\eqe@argi{#1}\ifx\eqe@argi\@empty\else
- \let\soln@keys@nLines\@empty
- \edef\panelheight{\the\panelheight}%
- \edef\panelwidth{\the\panelwidth}%
- \edef\temp@exp{\noexpand
- \setkeys*{soln@keys}{#1}}\temp@exp
- \ifx\soln@keys@nLines\@empty
- \edef\ss@Argii{\XKV@rm}%
- \else
- \@tempdima\wlVspace\relax
- \@tempdima=\soln@keys@nLines\@tempdima
- \edef\ss@Argii{\the\@tempdima}%
- \ifx\XKV@rm\@empty\else
- \if@equsedim\edef\ss@Argii{\XKV@rm}\fi\fi
- \fi
- \setlength{\eq@tmpdima}{\ss@Argii}%
- \ifdim\eqepanelheight>\eq@tmpdima
- \eq@tmpdima\eqepanelheight\fi
- \xdef\ss@Argii{\the\eq@tmpdima}%
- \fi
- \xdef\eqedepth{%
- \ifvspacewithsolns\ss@Argii\else
- \ifeq@nosolutions\ss@Argii\else
- \ifeq@solutionsafter\ss@Argii\else0pt\fi\fi\fi}%
- \xdef\mp@Width{\ifeq@solutionsafter\noexpand\linewidth\else
- \noexpand\linewidth-\ss@Argiii-\panelgap\fi}%
- \if\ss@Argi l%
- \ifeq@solutionsafter
- \def\eqe@lPanel{\parbox[b][\eqedepth][t]{\ss@Argiii}
- {\let\panelGetDimen\relax
- \input{panel\thepanel@cnt.cut}\vfill}\hfill}%
- \def\eqe@rPanel{\@empty}%
- \else
- \def\eqe@subleftgutter{-\string\eqemargin}%
- \def\eqe@lPanel{%
- \string\parbox[b][\string\eqedepth]{\ss@Argiii}%
- {\string\let\string\panelGetDimen\string\relax
- \string\input{panel\thepanel@cnt.cut}%
- \string\vfill}\string\hfill^^J}%
- \def\eqe@rPanel{\@empty}%
- \fi
- \else
- \ifeq@solutionsafter
- \def\eqe@lPanel{\@empty}%
- \def\eqe@rPanel{%
- \hfill\parbox[b][\eqedepth][t]{\ss@Argiii}
- {\let\panelGetDimen\relax
- \hfill\input{panel\thepanel@cnt.cut}\vfill}}%
- \else
- \let\eqe@subleftgutter\@empty
- \def\eqe@lPanel{\@empty}%
- \def\eqe@rPanel{%
- \string\hfill\string\parbox[b][\string\eqedepth]%
- {\ss@Argiii}{\string\endgraf%
- \string\noindent\string\hfill%
- \string\let\string\panelGetDimen\string\relax
- \string\input{panel\thepanel@cnt.cut}%
- \string\vfill}}%
- \fi
- \fi
- \let\verbatim@out\ex@solns
- \par\ifeq@solutionsafter\smallskip\fi
- \ifx\solutionparshape\@empty\else
- \advance\linewidth-\leadinIndentPrtSep\fi %%dps
- \let\solutionparshape\@empty
- \noindent\minipage{\linewidth}%
- \if\ss@Argi l\noindent\parbox[b][\eqedepth][t]{\ss@Argiii}%
- {\vfill}\hfill\fi
- \minipage[b][\eqedepth][t]{\mp@Width}%
- {\lccode`C=`\%\lowercase{\eqe@IW{%
- \string\def\string\panelgap{\panelgap}%
- \string\setlength{\string\panelwidth}{\ss@Argiii}%
- \string\def\string\eqedepth
- {\ifeq@nosolutions\ss@Argii\else\ss@Argii\fi}C}}}%
- {\lccode`C=`\%\lowercase{\eqe@IW{%
- \string\strut\string\noindent%
- \string\hbox\space to\string\linewidth\bgroup^^J%
- \eqe@lPanel\string\minipage[b][\string\eqedepth][t]%
- {\string\linewidth\eqe@subleftgutter%
- -\string\panelwidth-\string\panelgap}C
- }}}%
- \ifeq@solutionsafter
- \noindent\strut\hbox to\linewidth\bgroup
- \eqe@lPanel
- \minipage[b][\eqedepth][t]{\linewidth-\ss@Argiii-\panelgap}%
- \def\solutionsafterSkip{}%
- \fi
- \ifx\soln@keys@nLines\@empty
- \edef\passedss@Argii{\ss@Argii}\else
- \edef\passedss@Argii{\ss@Argii,nLines=\soln@keys@nLines}\fi
- \expandafter\@sssolution\expandafter[\passedss@Argii]%
-}{%
- \eqe@IW{\string\endminipage\eqe@rPanel\egroup}%
- \ifeq@solutionsafter\endminipage\eqe@rPanel\egroup\fi
- \end@sssolution
- \endminipage\endminipage
-}
-\renewcommand{\paragraph}
- {\@startsection{paragraph}{4}{0pt}{12pt}{-3pt}{\bfseries}}
-\newcommand{\defaultInstructions}[1]{\def\eq@default@Instructions{#1}}
-\defaultInstructions{Instructions.}
-\newcommand{\beforeInstrSkip}{1ex}
-\newcommand{\afterInstrSkip}{-0em}
-\newcommand\hInstrSpace{\ }
-\newcommand\styleInstr{\bfseries}
-\newenvironment{instructions}[1][\eq@default@Instructions]{%
- \@ifundefined{\thisexamlabel total}{\let\eq@nosummarytotals\eqe@YES}
- {\ifnum\summaryPointTotal=0 \let\eq@nosummarytotals\eqe@YES\fi}%
- \expandafter\def\expandafter\eq@argi\expandafter{#1}%
- \def\hsi{\hInstrSpace}%
- \@startsection{paragraph}{4}{\z@}%
- {\beforeInstrSkip\space\@plus1ex \@minus.2ex}%
- {\afterInstrSkip}{\normalfont\normalsize\styleInstr}*%
- {\textcolor{\@instructionsColor}{#1}\normalcolor%
- \ifx\eq@nosummarytotals\eqe@YES\else\ifx\eq@argi\@empty\else\hsi\fi
- {\normalfont\summaryTotalsTxt}\hsi\fi}\hskip-\lastskip
- \ifx\eq@nosummarytotals\eqe@YES\ifx\eq@argi\@empty\else\hsi\fi\fi
- \normalfont\normalsize\ignorespaces
-}{\par\vskip\beforeInstrSkip\relax}
-\newcommand\summaryPointTotal{\csname\thisexamlabel total\endcsname}
-\newcommand\summaryTotalsTxt{($\eqe@ptsFmt{\summaryPointTotal}\,\text{%
- \@ifundefined{\thisexamlabel total}{\eqpointsLabel}%
- {\ifnum\summaryPointTotal=1\relax\eqpointLabel\else
- \eqpointsLabel\fi}}$)}
-\newcommand{\nQuesInExam}[1][\thisexamlabel]{%
- \def\eqe@argi{#1}%
- \ifx\thisexamlabel\@empty\ifx\eqe@argi\thisexamlabel
- \PackageError{eqexam}{The optional argument for
- \string\nQuesInExam\MessageBreak must be specified}{}\fi\fi
- \csname#1nQuestions\endcsname}
-\ifx\hyper@anchor\@undefined\else
- \renewcommand\theHeqquestionnoi
- {\curr@quiz.\theeqquestionnoi\eqe@fpmrk}
- \renewcommand\theHquizno{%
- \if\probstar*\curr@quiz.%
- \theeqquestionnoi.part\thepartno.\arabic{quizno}%
- \else
- \curr@quiz.%
- \theeqquestionnoi.\arabic{quizno}%
- \fi
- }
- \renewcommand\theHpartno{\curr@quiz.%
- \theeqquestionnoi.part\thepartno}
-\fi
-\newcommand{\beforeCommentSkip}{1.25ex}
-\newcommand{\afterCommentSkip}{-1ex}
-\newcommand\hCommSpace{\ }
-\newcommand\styleComm{\bfseries}
-\newenvironment{eqComments}[1][\strut]{\removelastskip
- \def\eqe@argi{#1}\def\eqe@Strut{\strut}\def\hsc{\styleComm}%
- \@startsection{paragraph}{4}{\z@}%
- {\beforeCommentSkip\space\@plus1ex \@minus.2ex}%
- {\afterCommentSkip}{\normalfont\normalsize\styleComm}*%
- {\textcolor{\@eqCommentsColor}{#1}}%
- \ifx\eqe@argi\eqe@Strut\hskip\afterCommentSkip
- \else\ifx\eqe@argi\@empty\hskip\afterCommentSkip\else
- \hsc\strut\fi\fi\normalfont\normalsize
- \color{\@eqCommentsColorBody}\ignorespaces
-}{\par\vskip\beforeCommentSkip\space\@plus1ex \@minus.2ex}
-\let\tb@beginexam@code\relax
-\def\partialspillovertotals{0}
-\def\exambegdef
-{%
- \csname\thisexamlabel pagemark\endcsname
- \@ifundefined{partialtotalpg}{}{%
- \ifnum\partialtotalpg=\arabic{page}%
- {\count0=\partialspillovertotals
- \advance\count0by\partialtotaleoe
- \xdef\partialspillovertotals{\the\count0}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {Page\partialtotalpg spilltotal}{\partialtotaleoe}}%
- }%
- \fi
- }%
- \csarg\ifx{\thisexamlabel pageno}\relax
- \else
- \csarg\ifx{pagenofirstprob\thisexamlabel}\relax
- \else
- \csarg\ifnum{\thisexamlabel pageno}
- < \@nameuse{pagenofirstprob\thisexamlabel}%
- \else
- \csarg\ifx{\thisexamlabel pagemark}\relax
- \else
- \ifnum\value{page}=%
- \csname\thisexamlabel pageno\endcsname
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {\thisexamlabel pagemark}{\string\newpage}}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \setcounter{eqquestionnoi}{0}\setcounter{eqpointvalue}{0}%
- \setcounter{eqpointsofar}{0}\setcounter{eqpointsthispage}{0}%
- \setcounter{eq@count}{0}%
- \writeBeginEqeQuestions
- \label{\thisexamlabel PageBegin}%
- \eqe@IWO\@auxout{\string\csarg\string\gdef
- {\thisexamlabel pageno}{\thepage}}%
- \ifeqfortextbook
- \global\examenvtrue\tb@beginexam@code
- \fi
-}
-\def\tb@insmargmark{\ifisinstred\ifismarginans
- \insMidMarg{\mark{}}\fi\fi}
-\def\eqe@adjForSepRule{\if\eq@parttotals\eqe@YES
- \eq@pointboxtotalheight\halfHtPtBox\relax
- \advance\eq@pointboxtotalheight\dpPtBox\relax
- \advance\eq@pointboxtotalheight\pointsmarginparpush
- \vspace*{\eq@pointboxtotalheight}\fi}
-\def\eqe@afterexamsepcode{% dps7
- \if\eq@parttotals\eqe@YES
- \@actionsAtPageBreak{\global\let\@spacetobreak1}%
- {\global\let\@spacetobreak0}%
- \ifx\@spacetobreak0\relax
- \bgroup\@tempdima=\pagetotal
- \advance\@tempdima\eq@pointboxtotalheight
- \ifdim\@tempdima>\pagegoal\aftergroup\newpage
- \else\ifnum\arabic{eq@count}>0\relax
- \removelastskip\vskip6pt\kern0pt %dps7
- \if\@reportpoints\eqe@One\else\@checkSpacing{0}\fi
- \textcolor{\endexamtotal@color}%
- {\eqeomarginbox{\arabic{eq@count}}{0}}\fi
- \ifx\eqx@separationrule\eqe@YES
- \separationrule\eqe@adjForSepRule\fi
- \fi\egroup
- \fi
- \else\ifx\eqx@separationrule\eqe@YES
- \separationrule\eqe@adjForSepRule\fi
- \fi
-}
-\def\examenddef
-{%
- \global\let\partialtotaleoe\relax
- \global\let\partialtotalpg\relax
- \global\let\afterexamsepcode\relax
- \csarg\ifx{NumberOfParts}\relax
- \else
- \ifnum\value{eq@numparts}<\NumberOfParts
- \setcounter{eq@count}{\value{eqpointvalue}}%
- \addtocounter{eq@count}{-\value{eqpointsofar}}%
- \xdef\partialtotaleoe{\arabic{eq@count}}%
- \xdef\partialtotalpg{\arabic{page}}%
- \global\let\afterexamsepcode\eqe@afterexamsepcode % dps7
- \fi
- \fi
- \ifeqfortextbook\global\examenvfalse\fi
- \writeEndEqeQuestions
- \writetotalstoaux
- \addtocounter{page}{-1}%
- \writelastpage[\thisexamlabel]\addtocounter{page}{1}%
- \ifeqfortextbook\tb@insmargmark\fi
-}
-\def\@actionsAtPageBreak#1#2{%
- \bgroup\@tempdima\pagegoal\advance\@tempdima-\pagetotal
- \@tempdimb\@fvsizeskip\vsize
- \ifdim\@tempdima < \@tempdimb #1\else #2\fi\egroup
-}
-\newcommand{\separationrule}{\makebox[\linewidth-\eqemargin][c]%
- {\rule{.67\linewidth}{.4pt}}}
-\def\eqe@hspannerPrb{\ }
-\@ifundefined{ifwithsoldoc}{\newif\ifwithsoldoc\withsoldocfalse}{}
-\newcommand{\eqequestopsep}[1]{\def\eqeques@topsep{#1}}
-\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
-\newcommand{\eqequesitemsep}[1]{\def\eqeques@itemsep{#1}}
-\newcommand{\eqequeslistparindent}[1]{\def\eqeques@listparindent{#1}}
-\eqequestopsep{0pt}
-\eqequesparsep{0pt}
-\eqequesitemsep{0pt}
-\eqequeslistparindent{0pt}
-\newif\iffirstitem
-\def\eqeSolnItemMngt{\iffirstitem\global\firstitemfalse
- \let\eqe@next\@empty\else\let\eqe@next\item\fi\eqe@next\relax}
-\newenvironment{eqequestions}{%
- \begin{list}{}{%
- \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
- \setlength{\labelwidth}{\eqemargin}%
- \setlength{\parsep}{\eqeques@parsep}%
- \setlength{\itemsep}{\eqeques@itemsep}%
- \setlength{\topsep}{\eqeques@topsep}%
- \setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{\eqeques@listparindent}%dps%
- \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
- \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
- \setlength{\leftmargin}{\labelwidth}%
- }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
-\def\setDefaultfvsizeskip#1{\def\default@fvsizeskip{#1}%
- \def\@fvsizeskip{#1}}
-\def\default@fvsizeskip{.3}
-\edef\@fvsizeskip{\default@fvsizeskip}
-\newcommand{\fvsizeskip}[1]{\def\@fvsizeskip{#1}}
-\def\autoExamName{exam\the\value{eq@numparts}}
-\def\nNumberOfP@rts{\csname NumberOfParts\endcsname}
-\abovesqskip{}
-\let\eqeWrtExamTitleToSolns\eqe@YES
-\def\wrtExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@YES}
-\def\noExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@NO}
-\let\thisexamlabel\@empty
-\let\isInExamEnv\eqe@NO
-\newenvironment{exam}[2][]
-{%
- \makeRoomForProb{\@fvsizeskip\textheight}{0}%
- \let\isInExamEnv\eqe@YES
- \stepcounter{eq@numparts}%
- \def\eqexamargii{#2}\ifx\eqexamargii\@empty
- \edef\eqexamargii{\autoExamName}\fi
- \xdef\thisexamlabel{\eqexamargii}\xdef\curr@quiz{\eqexamargii}%
- \def\eqexamargi{#1}\ifx\eqexamargi\@empty
- \edef\eqexamargi{\eqexamargii}\fi
- \expandafter\gdef\expandafter\thisUFexamlabel
- \expandafter{\eqexamargi}%
- \edef\eq@tmp{\the\partNames\string\\{\eqexamargii}}%
- \global\partNames=\expandafter{\eq@tmp}%
- \csarg\ifx{NumberOfParts}\relax\else
-\ifx\eqeWrtExamTitleToSolns\eqe@YES
- \ifnum\nNumberOfP@rts=1\relax\else
- \def\eqe@argi{#1}\ifx\eqe@argi\@empty
- \eqe@writetoSolns{\eqexamargii}\eqe@writetoAux{\string
- \csarg\string\gdef{userFriendly\eqexamargii}{\eqexamargii}}
- \else
- \eqe@writetoSolns{#1}\eqe@writetoAux{\string
- \csarg\string\gdef{userFriendly#2}{#1}}
- \fi
- \fi\fi
-\fi
- \exambegdef
- \edef\temp@Exp{\noexpand\shortquiz\sqstar[\eqexamargii]}\temp@Exp
-}{%
- \examenddef
- \vskip\eqeques@parsep\relax\kern0pt %dps88
- \endshortquiz
- \aftergroup\afterexamsepcode % dps7
- \par\penalty-100\vskip0pt
-}
-\newcommand{\EQEcalculateAllTotals}{%
- \begingroup
- \count\z@=0\relax
- \def\\##1{\csarg\ifx{##1total}\relax\else
- \advance\count\z@\csname##1total\endcsname
- \fi}\csname thePartNames\endcsname
- \xdef\eqeGrandTotal{\the\count\z@}%
- \ifnum\eqeGrandTotal=0 \else
- \def\\##1{\eqe@calc@percent{##1}}%
- \csname thePartNames\endcsname\fi
- \endgroup
-}
-\newcommand{\nPctDecPts}{1}
-\def\eqe@calc@percent#1{\@ifundefined{#1total}{%
- \csarg\gdef{#1percent}{??}}{%
- \csarg\ifx{FPdiv}\relax
- \count2=\tot@lForPart{#1}%
- \edef\expGT{\csname eqeGrandTotal\endcsname}%
- \multiply\count2by100\relax\divide\count2by\expGT\relax
- \csarg\xdef{#1percent}{\the\count2 }\else
- \FPdiv{\eqe@pForPart}{\csname#1total\endcsname}%
- {\csname eqeGrandTotal\endcsname}%
- \FPmul{\eqe@pForPart}{\eqe@pForPart}{100}%
- \FPround{\eqe@pForPart}{\eqe@pForPart}{\nPctDecPts}%
- \csarg\xdef{#1percent}{\eqe@pForPart}\fi
- }%
-}
-\def\writetotalstoaux{\eqe@IWO\@auxout{\string
- \csarg\string\gdef{\thisexamlabel total}{\theeqpointvalue}}%
- \eqe@IWO\@auxout{\string\csarg
- \string\gdef{\thisexamlabel nQuestions}{\theeqquestionnoi}}%
-}
-\newcommand{\writelastpage}[1][]{\def\eqe@argi{#1}%
- \ifx\eqe@argi\@empty\else\label{#1PageEnd}\fi
- \eqe@IWO\@auxout{\string\csarg
- \string\gdef{eqExamLastPage}{\arabic{page}}}%
-}
-\def\exlabel{}
-\def\sqlabel{}
-\def\exsolafter{\textit{Solution}:}
-\def\sqsolafter{\textit{Solution}:}
-\def\exlabelformat{\textbf{%
- \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerPrb}}
-\def\exlabelformatwp{\exlabelformat}
-\def\exsllabelformat
- {\string\makebox[0pt][r]{\string\textbf{%
- \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}}
-\def\exsllabelformatwp
- {\string\makebox[0pt][r]{\string\textbf{%
- \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}%
- (\thepartno)\eqe@hspannerSoln}
-\ifanswerkey
- \def\exrtnlabelformat{}
- \def\exrtnlabelformatwp{}
- \def\eq@sqslrtnlabel{}
-\else
- \def\exrtnlabelformat{$\square$}
- \def\exrtnlabelformatwp{$\square$}
- \def\eq@sqslrtnlabel{$\square$}
-\fi
-\def\sqslrtnlabel{\eq@sqslrtnlabel}
-\newcommand{\exsectitletext}{Solutions to \webtitle}
-\def\exsectitle{\normalsize\exsectitletext}
-\@ifpackageloaded{exerquiz}{%{Solutions to \websubject}
- \renewcommand{\exsecrunhead}{}}{\newcommand{\exsecrunhead}{}}
-\def\eq@sqslsectitle{}
-\def\eq@sqslsecrunhead{}
-\def\eq@sqsllabel{{\string\llap{\string\textbf{\theeqquestionnoi.\ }}}}
-\def\eq@sqlabel{}
-\let\include@quizsolutions\relax
-\let\solnhspace\@empty
-\newcommand{\optsFillIn}[1]{\def\eqe@optsFillIn{#1}}
-\let\eqe@optsFillIn\@empty
-\newcommand{\fillin}[3][u]{%
- \ifx#1u\let\@fillinFmt\underbar
- \else\ifx#1b\let\@fillinFmt\relax
- \else\let\@fillinFmt\relax\fi\fi
- \ifeq@proofing
- \@fillinFmt{\makebox[#2]{%
- \strut\hfil\bfseries\color{red}#3\hfil}}%
- \else
- \@fillinFmt{\makebox[#2]{\strut\hfil}}%
- \@ifundefined{@quiz}{}{%
- \if\eq@online\eqe@YES\relax
- \ifeq@nosolutions
- \ifeq@solutionsafter\else
- \ifx\eq@insertverticalspace\eqe@YES\relax
- \stepcounter{@cntfillin}%
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.fillin.%
- \theeqquestionnoi.part\thepartno.%
- fi\the@cntfillin%
- \else
- eqexam.\curr@quiz.fillin.%
- \theeqquestionnoi.fi\the@cntfillin%
- \fi
- }\makebox[0pt][r]{\textField[\BC{}
- \presets{\eqe@optsFillIn}]{%
- \fieldName}{#2}{11bp}}%
- \fi
- \fi
- \fi
- \fi
- }%
- \fi\space\ignorespaces}
-\newcommand\defaultTFwidth{30pt}
-\newcommand\TF[2][\defaultTFwidth]{%
- \def\eqe@next{\fillin{#1}{#2}}%
- \ifdim\eq@extralabelsep=0pt\relax\else
- \if\probstar*\relax\if\exerwparts@cols0
- \def\eqe@next{\makebox[0pt][r]{%
- \fillin{#1}{#2}}\ignorespaces}%
- \fi\fi\fi
-\eqe@next}
-\def\fillinWidth#1{%
- \if\probstar*
- \settowidth{\eq@tmplengthA}{\normalfont\ }%
- \addtolength{\eq@tmplengthA}{#1}%
- \edef\eq@extralabelsep{\the\eq@tmplengthA}%
- \fi
-}
-\let\fillInFormatDefault\@empty
-\def\eqe@DoWarning#1{\PackageWarning{eqexam}{\string#1\space
- requires the first argument\MessageBreak of problem* to be <num>ea}}
-\def\eqe@DoNum{\textbf{??}\eqe@DoWarning{\DoNum}}
-\def\eqe@nDoNum{\textbf{??}\eqe@DoWarning{\nDoNum}}
-\let\DoNum\eqe@DoNum
-\let\nDoNum\eqe@nDoNum
-\def\makeDoNum#1{\xdef\nDoNum{#1}%
- \def\ifc@sewrap{\ifcase#1??\or}%
- \xdef\DoNum{\expandafter\ifc@sewrap\eqe@wordNums\else
- \eqe@wordNumbsError\fi}}
-\def\makeOutOfNum#1{\xdef\nOutOfNum{#1}%
- \def\ifc@sewrap{\ifcase#1??\or}%
- \xdef\OutOfNum{\expandafter\ifc@sewrap\eqe@wordNums\else
- \eqe@wordNumbsError\fi}}
-\def\eqe@OutOfNum{\textbf{??}\eqe@DoWarning{\OutOfNum}}
-\def\eqe@nOutOfNum{\textbf{??}\eqe@DoWarning{\nOutOfNum}}
-\let\OutOfNum\eqe@OutOfNum
-\let\nOutOfNum\eqe@nOutOfNum
-\newcommand{\eqe@wordNums}{one\or two\or three\or
- four\or five\or six\or seven\or eight\or nine\or ten}
-\newcommand{\eqe@wordNumbsError}{\noexpand\PackageError{eqexam}%
- {Number out of range, 1--10}%
- {Use a smaller number, or redefine the command
- \string\eqe@wordNums.}}
-\def\makeRoomForProb#1#2{\par %\endgraf % dps 11/11/10
- \bgroup\@nobreakfalse\addpenalty{-500}%
- \setlength{\@tempdimb}{#1}%
- \@tempdima \pagegoal \advance \@tempdima -\pagetotal
- \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
- \else\newpage\fi\fi\egroup
- \ifnum\@reportpoints>1
- \ifx\eqe@prevProbZero\eqe@YES
- \if\eqe@isPts0\else\vskip-\halfHtPtBox\relax\fi
- \else
- \ifl@stDispl@yPoints
- \if\eqe@isPts0\@checkSpacing{1}\else
- \if#21 \@checkSpacing{0}\fi
- \fi\fi
- \fi
- \fi
-}
-\newcommand{\emitMessageNearBottom}{\@ifstar
- {\def\eqe@emnb{\ifnum\col@number>\@ne\columnbreak
- \else\newpage\fi\insertContAnnot}\eq@emitMessageNearBottom}
- {\let\eqe@emnb\relax\eq@emitMessageNearBottom}}
-\newcommand{\eq@emitMessageNearBottom}[2][\iacvspace]{%
- \eq@@emitMessageNearBottom{#1}{#2}}
-\def\eq@@emitMessageNearBottom#1#2{\par
- \bgroup\@nobreakfalse\addpenalty{-500}%
- \setlength{\@tempdimb}{#1}%
- \@tempdima \pagegoal \advance \@tempdima -\pagetotal
- \ifdim \@tempdima<\@tempdimb #2 \eqe@emnb\fi\egroup}
-\newcommand{\getSpaceLeftOnPage}{\par\bgroup
- \@tempdima \pagegoal \advance \@tempdima -\pagetotal
- \xdef\amtSpaceOnLeftOnPage{\the\@tempdima}\egroup}
-\newcommand{\pnpDflt}{\@fvsizeskip\textheight}
-\newcommand{\promoteNewPage}[1][\pnpDflt]{%
- \makeRoomForProb{#1}{0}}
-\def\pointsmarginparpush{3pt}
-\def\@checkSpacing#1{\bgroup\ifinner\else
- \@tempdima\lastPageTotal
- \@tempdimb\pagetotal
- \ifdim\@tempdima < \@tempdimb
- \advance\@tempdimb by-\@tempdima
- \ifdim\@tempdimb < \eq@pointboxtotalheight
- \if#11%
- \eq@pointboxtotalheight\halfHtPtBox\relax
- \advance\eq@pointboxtotalheight\dpPtBox\relax
- \fi
- \@tempdima=\eq@pointboxtotalheight
- \advance\@tempdima\pointsmarginparpush\relax
- \advance\@tempdima by-\@tempdimb
- \vspace*{\@tempdima}%
- \fi
- \fi\fi
-\egroup}
-\def\@checkSpacingi{\bgroup
- \@tempdima = \lastPageTotal
- \@tempdimb = \pagetotal
- \ifdim\@tempdima < \@tempdimb
- \advance\@tempdimb by-\@tempdima
- \eq@pointboxtotalheight\halfHtPtBox\relax
- \advance\eq@pointboxtotalheight\dpPtBox\relax
- \ifdim\@tempdimb < \eq@pointboxtotalheight
- \@tempdima=\eq@pointboxtotalheight
- \advance\@tempdima\pointsmarginparpush\relax
- \advance\@tempdima by-\@tempdimb
- \vspace*{\@tempdima}%
- \fi
- \fi
-\egroup}
-\newcommand{\setDefaultnbaselineskip}[1]{\def\default@nbaselineskip{#1}}
-\setDefaultnbaselineskip{6}
-\def\nbaselineskip#1{\def\@nbaselineskip{#1}}
-\def\nbaselineskipReset{\edef\@nbaselineskip{\default@nbaselineskip}}
-\nbaselineskipReset
-\def\eqe@gobbletoend#1\end{}
-\def\eqe@grabarg#1\end{\def\numpoints{#1}}
-\def\eqe@isPts{1}
-\aboveexskip{3pt}\belowexskip{3pt}
-\partstopsep{3pt}\partsitemsep{3pt}\partsparsep{0pt}
-\rowsepDefault{3pt}\partstabcolsep{1.5pt}%
-\partstabtopsep{3pt}\partstabrowsep{3pt}
-\renewcommand\belowexsolnskip{{}}%
-\let\isProbEnv\eqe@NO
-\let\topofprobhook\relax
-\newenvironment{problem}[1][]{\let\isProbEnv\eqe@YES
- \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
- \global\let\eqe@prevProbZero\eqe@NO\fi
- \global\thereissolutionfalse
- \def\numpointsEmpty{0}\def\numpoints{#1}%
- \ifx\numpoints\@empty\def\numpoints{0}\def\numpointsEmpty{1}%
- \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
- \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
- \gdef\probstar{x}\let\afterlabelhskip\@empty
- \ifx\marginpoints\@empty\else %\def\numpoints{#1}%
- \if\numpointsEmpty\eqe@One\let\marginpoints\@gobbletwo\fi
- \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
- {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
- \if\@isitstar\eqe@One\addtocounter{eqpointvalue}{\numpoints}%
- \@marktotalvalue
- \ifdispl@yPoints
- \def\marginparafterhook{\PTs{\numpoints}\space}\else
- \def\marginparafterhook{\PTs*{\numpoints}\space}\fi\else
- \def\marginparpriorhook{\noindent
- \probvalue{\numpoints}{0}}\fi
- \fi\setcounter{eq@count}{\value{eqquestionnoi}}%
- \addtocounter{eq@count}{1}%
- \ifnum\value{eq@count}=1\relax
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
- \fi
- \topofprobhook
- \begin{eqequestions}%
- \begin{exercise}[eqquestionnoi]%
-}{\end{exercise}%
- \end{eqequestions}%
- \ifeqlocalversion\ifeqglobalversion
- \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
- \aftergroup\eqe@tmp
- \fi\fi
- \global\eqlocalversionfalse
- \ifdispl@yPoints\global\l@stDispl@yPointstrue
- \else\global\l@stDispl@yPointsfalse\fi
- \global\let\eqe@fpmrk\@empty
-}
-\newcommand\itemPTsTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
- \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
-\newcommand\itemPTsEaTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
- \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi\space\eqeachLabel}$}
-\newcommand{\itemPTsFormated}[1]{(#1)}
-\newif\ifObeyPTsStar \ObeyPTsStartrue
-\def\obeyPTsStar{\global\ObeyPTsStartrue}
-\def\ignorePTsStar{\global\ObeyPTsStarfalse}
-\def\PTs{\leavevmode\@ifstar{\@PTs{*}}{\@PTs{x}}}
-\def\@PTs#1#2{%
- \if\@reportpoints\eqe@Zero\ignorespaces\else
- \if\eqe@pointsPartsId\eqe@One
- \addtocounter{eqpointvalue}{#2}\@marktotalvalue
- \addtocounter{eq@count}{#2}\fi
- \if#1*\ifObeyPTsStar\ignorespaces\else\expandafter\@gobble\fi
- \else
- \eqe@movePTs{\itemPTsFormated{\itemPTsTxt{#2}}}\fi
- \fi
-}
-\def\eqe@movePTs#1{#1}
-\let\auto\relax
-\def\isItD@{\@ifnextchar\Do{\let\yest@D@\eqe@YES\y@st@Do}
- {\let\yest@D@\eqe@NO\@gobblet@end}}
-\let\yest@D@\eqe@NO
-\let\D@Num\@empty
-\def\y@st@Do\Do#1\end{\gdef\D@Num{#1}}
-\def\@gobblet@end#1\end{}
-\def\is@uto#1\auto#2\@nil{\def\eqe@argi{#1}\def\eqe@argii{#2}%
- \ifx\eqe@argii\@empty\let\isit@uto\eqe@Zero\else
- \let\isit@uto\eqe@One\fi
-}
-\let\eqe@pointsPartsId\relax
-\def\leadinitemWarningStar{\PackageWarning{eqexam}
- {Using the star (*) in front of the points\MessageBreak
- designator is not allowed when there is a
- \MessageBreak\string\leadinitem}}
-\def\tableadinWarningStar{\PackageWarning{eqexam}
- {Using the star (*) in front of the points\MessageBreak
- designator is not allowed when there is a
- \MessageBreak\string\tableadin}}
-\let\isProbStarEnv\eqe@NO
-\let\topofprobstarhook\relax
-\csarg\def{problem*}{\let\isProbEnv\eqe@YES
- \let\isProbStarEnv\eqe@YES
- \global\thereissolutionfalse
- \@ifnextchar[{\pr@bl@m@star}{\pr@bl@m@star[]}}
-\def\pr@bl@m@star[#1]{%
- \@ifnextchar[{\pr@blem@star{#1}}{\pr@blem@star{#1}[]}}
-\def\pr@blem@star#1[#2]{%
- \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
- \global\let\eqe@prevProbZero\eqe@NO\fi
- \def\numpoints{#1}\ifx\numpoints\@empty
- \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
- \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
- \let\DoNum\eqe@DoNum\let\nDoNum\eqe@nDoNum
- \let\OutOfNum\eqe@OutOfNum\let\nOutOfNum\eqe@nOutOfNum
- \gdef\probstar{*}%
- \gdef\pr@b@secondarg{#2}\setcounter{eq@count}{0}%
- \let\afterlabelhskip\@empty
- \global\let\probpointseach\@empty\def\numpoints{#1}%
- \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
- {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
- \if\@isitstar\eqe@One
- \@tempcnta=\theeqquestionnoi\relax
- \advance\@tempcnta1\relax
- \@ifundefined{leadinitem\thisexamlabel-\the\@tempcnta}{}
- {\leadinitemWarningStar\let\@isitstar\eqe@Zero}%
- \@ifundefined{tableadin\thisexamlabel-\the\@tempcnta}{}
- {\tableadinWarningStar\let\@isitstar\eqe@Zero}%
- \fi
- \expandafter\is@uto\numpoints\auto\@nil
- \if\isit@uto\eqe@One\let\eqe@pointsPartsId\eqe@One
- \global\let\probpointseach\relax
- \def\eqe@next{\autocalcparts}%
- \else
- \ifx\pr@b@secondarg\@empty\else
- \let\eqe@pointsPartsId\eqe@Four
- \isItD@#2\end\fi
- \def\eqe@next{\manualcalcparts{\numpoints}}%
- \fi\eqe@next
- \let\leadinitem\eqe@leadinitem
- \let\tableadin\eqe@tableadin
- \topofprobstarhook
- \ifeqfortextbook
- \writeToSolnFile{\protect\global\protect\frstProbNumShownfalse}\fi
- \begin{eqequestions}%
- \begin{exercise}[eqquestionnoi]*}%
-\def\ftb@endprobstarCks{%
- \ifWithinANSGrp
- \PackageError{eqexam}{\string\bGrpANS\space is still open}
- {You need to match it with an \string\bGrpANS,
- or remove it.}%
- \fi
-}
-\csarg\def{endproblem*}{%
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{nPartsThisProb\thisexamlabel.\theeqquestionnoi}%
- {\arabic{partno}}}%
- \ifx\probpointseach\@empty\else
- \ifx\probpointseach\auto
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
- {\theeq@count}}%
- \else
- \setcounter{eq@count}{\value{partno}}%
- \ifx\pr@b@secondarg\@empty\else
- \bgroup\toks0=\expandafter{\pr@b@secondarg}%
- \expandafter\isItD@\the\toks0 \end
- \ifx\yest@D@\eqe@YES\ifx\eqe@pointsEach\eqe@YES
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{DoNumThisProb\thisexamlabel.%
- \theeqquestionnoi}{\D@Num}}%
- \@tempcnta = \value{eq@count}%
- \advance\@tempcnta -\D@Num
- \global\advance\value{eq@count}-\@tempcnta
- \@tempcnta=\value{partno}%
- \advance\@tempcnta -\D@Num
- \multiply\@tempcnta by\argi
- \addtocounter{eqpointvalue}{-\@tempcnta}%
- \fi\fi
- \egroup
- \fi
- \multiply\value{eq@count}\argi
- \eqe@IWO\@auxout{\string
- \csarg\string\gdef{prob\thisexamlabel.\theeqquestionnoi}%
- {\theeq@count}}%
- \fi\fi
- \end{exercise}%
- \end{eqequestions}%
- \ifeqfortextbook\ftb@endprobstarCks\fi
- \ifeqlocalversion\ifeqglobalversion
- \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
- \aftergroup\eqe@tmp
- \fi\fi
- \global\eqlocalversionfalse
- \@marktotalvalue
- \ifdispl@yPoints\global\l@stDispl@yPointstrue
- \else\global\l@stDispl@yPointsfalse\fi
-}
-\let\solutionparshape\@empty
-\def\eqe@leadinitem{%
- \ifx\solutionparshape\@empty
- \def\eqe@next{\eqe@@leadinitem}%
- \ifeqfortextbook\writeToSolnFile{\protect\bpartsmrk}\fi
- \else
- \def\eqe@next{\PackageError{eqexam}
- {The \string\leadinitem\space command may
- only be used\MessageBreak once per problem* environment}
- {Remove all but one of the \string\leadinitem\space
- commands.}}%
- \fi\eqe@next
-}
-\newif\ifisleadin \isleadinfalse
-\let\isparshapeExpanded\eqe@NO
-\def\eqe@@leadinitem{\if\itsforleadinitem\eqe@NO
- \setcounter{partno}{0}\fi\refstepcounter{partno}%
- \eq@initializeContAnnot
- \isleadintrue\let\isitleadin\eqe@YES
- \eqe@writetoAux{\string
- \csarg\string\gdef{leadinitem\thisexamlabel-\theeqquestionnoi}{}}%
- \settowidth{\eq@tmpdima}{\normalfont\parts@indent\eqe@prtsepPrb}%
- \xdef\leadinIndentPrtSep{\the\eq@tmpdima}%
- \setlength{\eq@tmpdima}{\eqemargin+\eq@tmpdima}%
- \xdef\leadinIndent{\the\eq@tmpdima}%
- \settowidth{\eq@tmplength}{\parts@indent}%
- \edef\partsleadinIndent{\the\eq@tmplength}%
- \setlength{\eq@tmplength}{\linewidth-\leadinIndentPrtSep}%
- \edef\leadinIndentLength{\the\eq@tmplength}%
-\@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
- \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
- \advance\leftmarginii\leadinIndentPrtSep\relax
- \leftmargin\leftmarginii \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- }%
- \parshape=2 \eqemargin \linewidth \leadinIndent \leadinIndentLength
- \xdef\solutionparshape{%\noexpand\linewidth\leadinIndentLength
- \noexpand\parshape=1 \leadinIndent\space\leadinIndentLength}%
- \global\let\isparshapeExpanded\eqe@NO
- \everypar{\solutionparshape
- \global\let\isparshapeExpanded\eqe@YES\everypar{}}%
- \let\eq@item\eq@leadin@item\eqp@rtc@lcm@rk
- \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
- \@ifnextchar[{\@ckhide}{\eq@item}%
-}
-\def\eq@leadin@item{\eq@ckglobalhide\ifeq@hidesolution\else
- \global\let\eqExerSolnHeader\eq@@writeexheaderlist\fi
- \ifeq@nosolutions\eq@nolinktrue\fi
- \unskip\noindent\makebox[\partsleadinIndent]{\eqexlisttabheader}%
- \eqe@prtsepPrb\ignorespaces
-}
-\def\eqe@tableadin{\@tableadinitemtrue\eqe@writetoAux{\protect
- \csarg\protect\gdef{tableadin\thisexamlabel-\theeqquestionnoi}{}}%
-}
-\newcommand\pushProblem{\xdef\nlastItem{\arabic{partno}}\end{parts}}
-\newcommand\popProblem[1][]{%
- \def\@argi{#1}\ifx\@argi\@empty
- \def\eqe@bParts{\begin{parts}}\else
- \def\eqe@bParts{\begin{parts}[#1]}\fi
- \eqe@bParts\setcounter{partno}{\nlastItem}}
-\def\lastPageTotal{0pt}
-\def\marginparafterhook{\xdef\lastPageTotal{\the\pagetotal}}
-\def\prob@Arg#1ea#2\end{\def\argi{#1}\def\argii{#2}}
-\let\eqe@pointsEach\eqe@NO
-\def\manualcalcparts#1{%
- \expandafter\prob@Arg#1ea\end
- \ifx\argii\@empty\edef\numpoints{#1}%
- \let\eqe@pointsEach\eqe@NO
- \let\eqe@pointsPartsId\eqe@Zero
- \else
- \gdef\probpointseach{x}\let\eqe@pointsPartsId\eqe@Two
- \let\eqe@pointsEach\eqe@YES
- \setcounter{eq@count}{\value{eqquestionnoi}}%
- \addtocounter{eq@count}{1}\csarg
- \ifx{prob\thisexamlabel.\theeq@count}\relax
- \def\numpoints{\argi}\else
- \def\numpoints{\expandafter
- \csname prob\thisexamlabel.\theeq@count\endcsname}%
- \fi
- \ifx\yest@D@\eqe@YES
- \setcounter{eq@count}{\value{eqquestionnoi}}%
- \addtocounter{eq@count}{1}%
- \@ifundefined{nPartsThisProb\thisexamlabel.\theeq@count}
- {\makeOutOfNum{0}\makeDoNum{0}}{%
- \expandafter\makeOutOfNum{%
- \csname nPartsThisProb\thisexamlabel.%
- \theeq@count\endcsname}%
- \expandafter\makeDoNum{%
- \csname DoNumThisProb\thisexamlabel.%
- \theeq@count\endcsname}}%
- \fi
- \fi
- \ifx\marginpoints\@empty
- \else
- \ifx\argi\@empty
- \let\marginpoints\@empty
- \else
- \ifx\argii\@empty
- \ifx\marginpoints\@empty\else
- \if\@isitstar\eqe@One
- \addtocounter{eqpointvalue}{#1}%
- \@marktotalvalue\ifdispl@yPoints
- \def\marginparafterhook{\itemPTsFormated{%
- \itemPTsTxt{\numpoints}}\space}\fi
- \else
- \def\marginparpriorhook{\noindent
- \probvalue{\numpoints}{0}}%
- \fi
- \fi
- \else
- \ifx\marginpoints\@empty\else
- \if\@isitstar\eqe@One\ifdispl@yPoints
- \def\marginparafterhook{%
- \itemPTsFormated{\itemPTsEaTxt{\argi}}\space}\fi
- \else
- \ifdispl@yPoints
- \def\marginparpriorhook{\noindent
- \marginpoints{\numpoints}{\argi}}\fi
- \fi
- \edef\eqp@rtc@lcm@rk{\noexpand
- \addtocounter{eqpointvalue}{\argi}%
- \noexpand\@marktotalvalue}%
- \fi
- \fi
- \fi
- \fi
- \ifnum\value{eq@count}=1\relax
- \eqe@IWO\@auxout{\string\csarg\string
- \gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
- \fi
-}
-\def\acp@mpah{\itemPTsFormated{\itemPTsTxt{\numpoints}}\space}
-\def\acp@mpph{\noindent\marginpoints{\numpoints}{0}}
-\def\autocalcparts{%
- \setcounter{eq@count}{\value{eqquestionnoi}}%
- \addtocounter{eq@count}{1}%
- \csarg\ifx{prob\thisexamlabel.\theeq@count}\relax
- \def\numpoints{0}% assume zero points until we get the total
- \else
- \edef\numpoints{\@nameuse{prob\thisexamlabel.\theeq@count}}%
- \fi
- \ifx\marginpoints\@empty\else
- \ifdispl@yPoints
- \if\@isitstar\eqe@One
- \def\marginparafterhook{\acp@mpah}\else
- \def\marginparpriorhook{\acp@mpph}\fi
- \fi
- \fi
- \setcounter{eq@count}{0}%
-}
-\let\eqe@fpmrk\@empty
-\newcommand{\forproblem}[1]{\def\eqe@fpmrk{-\the@exno}%
- \setcounter{eqquestionnoi}{#1 - 1}}
-\newcommand{\foritem}[2][]{%
- \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
- \def\eqe@nextitem{\item}\else
- \def\eqe@nextitem{\item[#1]}\fi
- \foritem@cont{#2}}
-\newcommand{\forleadinitem}[2][]{%
- \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
- \def\eqe@nextitem{\leadinitem}\else
- \def\eqe@nextitem{\leadinitem[#1]}\fi
- \foritem@cont{#2}}
-\def\foritem@cont#1{\ifuseNumForParts
- \edef\fliPartNo{#1}\setcounter{partno}{#1-1}\else
- \lowercase{\def\eq@selectedItem{#1}}%
- \let\eq@initLoop\eqe@NO
- \loop
- \stepcounter{partno}\expandafter
- \if\alph{partno}\eq@selectedItem
- \let\eq@initLoop\eqe@YES\fi
- \ifx\eq@initLoop\eqe@NO\repeat
- \edef\fliPartNo{\the\c@partno}%
- \addtocounter{partno}{-1}\fi\let\itsforleadinitem\eqe@YES
- \eqe@nextitem}
-\newcommand{\annotContStr}{%
- \textbf{Problem~{\eqeCurrProb} continued\strut}}
-\newcommand{\acvspace}[1]{\def\ic@vspace{#1}\setlength\iacvspace{#1}}
-\newlength\iacvspace
-\newcommand{\ic@vspacedefault}{1in} % changed .25in to 1in 2012/12/04
-\newcommand{\resetacvspace}{\setlength\iacvspace{\ic@vspacedefault}}
-\resetacvspace
-\newcommand{\eqe@insertContAnnot}[1][\iacvspace]{\promoteNewPage[#1]%
- \ifnum\arabic{page}>\eq@currProbStartPage
- \xdef\eq@currProbStartPage{\arabic{page}}%
- {\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\eqe@partsIndent{\the\eq@tmplength}}%
- \ifwithinparts
- \@ifundefined{eq@item@latex}{\item[]\hspace*{-\eqemargin}%
- \ifx\solutionparshape\@empty\else\hspace*{-\eqe@partsIndent}\fi}
- {\eq@item@latex[]\hspace*{-\eqemargin}%
- \hspace{-\eqe@partsIndent}}\else
- \hspace*{-\eqemargin}\fi\annotContStr
- \fi
-}
-\edef\eq@currProbStartPage{\arabic{page}}
-\newcommand{\turnContAnnotOff}{\global\let\eq@insertContAnnot\relax}
-\newcommand{\turnContAnnotOn}{%
- \global\let\eq@insertContAnnot\eqe@insertContAnnot}
-\turnContAnnotOff
-\def\insertContAnnot{\eq@insertContAnnot}
-\newcommand\aNewPage{\ifanswerkey\newpage\fi}
-\newcommand\qNewPage{\ifanswerkey\else\newpage\fi}
-\newcounter{backofpage}
-\newcommand\bopText{on the back of page~\boPage}
-\newcommand\bopCoverPageText{on the back of the cover page}
-\newcommand\OnBackOfPage[1][\bopText]{%
- \refstepcounter{backofpage}\label{bop\thebackofpage}
- \begingroup
- \csarg\ifx{r@bop\thebackofpage}\relax
- \def\boPage{??}\else
- \edef\eqe@temp{\csname r@bop\thebackofpage\endcsname}%
- \ifx\hyper@anchor\@undefined
- \edef\boPage{\expandafter\@secondoftwo\eqe@temp}\else
- \edef\boPage{\expandafter\@secondoffive\eqe@temp}\fi
- \c@eq@count\boPage
- \advance\c@eq@count-1\relax
- \edef\boPage
- {%
- \ifx\eqex@coverpage\relax
- \ifnum\value{eq@count}=0
- 1%
- \else
- \the\value{eq@count}%
- \fi
- \else
- \ifnum\value{eq@count}=0
- -1%
- \else
- \the\value{eq@count}%
- \fi
- \fi
- }%
- \fi
- \csarg\ifx{r@bop\thebackofpage}\relax#1\else
- \ifnum\boPage=-1\relax\bopCoverPageText\else#1\fi\fi
- \endgroup
-}
-\newcommand{\eqWriteLineColor}[1]{\def\eq@WriteLineColor{#1}}
-\eqWriteLineColor{gray}
-\newlength\wlVspace
-\newcommand{\eqWLSpacing}[1]{\setlength\wlVspace{#1}}
-\eqWLSpacing{14pt}
-\newcommand{\eqWriteLineFill}{%
- \textcolor{\eq@WriteLineColor}{\hrulefill}}
-\def\eqdotrulefile{\leavevmode
- \cleaders\hb@xt@ .44em{\hbox to0pt{\hss.\hss}\hss}\hfill\kern\z@}
-\newcommand{\eqWriteLineDots}{%
- \textcolor{\eq@WriteLineColor}{\eqdotrulefile}}
-\def\eqdashrulefill{\leavevmode%\kern-.11em
- \cleaders\hb@xt@ .44em{\rule{.22em}{.4pt}\hss}\hfill\kern\z@}
-\newcommand{\eqWriteLineDashFill}{%
- \textcolor{\eq@WriteLineColor}{\eqdashrulefill}}
-\newcommand{\eqWriteLineBlankFill}{\hfill}
-\newif\if@equsedim \@equsedimtrue
-\newcommand{\useVspaceDimen}{\@equsedimtrue}
-\newcommand{\usenLineDimen}{\@equsedimfalse}
-\newif\if@eqalignfilllinestoleft\@eqalignfilllinestoleftfalse
-\newcommand{\fillerLinesOnLeftMargin}{\@eqalignfilllinestolefttrue}
-\newcommand{\fillerLinesAlignDef}{\@eqalignfilllinestoleftfalse}
-\newcommand\priorPageBreakMsg[1]{\def\priorP@geBre@kMsg{#1}}
-\let\priorP@geBre@kMsg\@empty
-\newcommand{\flPageBreakMsg}[1]{%\acvspace{2\wlVspace}%
- \priorPageBreakMsg{\emitMessageNearBottom[2\wlVspace]
- {\eqfititin{{\Large\strut}#1}}}%
-}
-\newcommand{\vspaceFillerLines}[1]{\begingroup\offinterlineskip
- \parindent0pt\relax\parskip0pt
- \@tempdima\wlVspace\eqetmplengtha0pt
- \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
- \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
- \@whiledim\@tempdima<#1\relax\do{\priorP@geBre@kMsg
- \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
- \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
- \addtolength{\@tempdima}{.4pt+\wlVspace}\par
- }\endgroup
-}
-\def\eq@linesXPgs{\begingroup\offinterlineskip
- \parindent0pt\relax\parskip0pt
- \@tempcnta=0 \eqetmplengtha0pt
- \settowidth{\eqetmplengthb}{\eqe@decPointPrb}%
- \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
- \@whilenum\@tempcnta<\soln@keys@nLines\relax\do{\priorP@geBre@kMsg
- \eq@insertContAnnot\vskip\wlVspace\eqe@wrtLineKernal
- \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%
- \advance\@tempcnta1\relax}\par\endgroup
-}
-\def\eqe@wrtLineKernal{%
- \ifx\solutionparshape\@empty
- \if@eqalignfilllinestoleft
- \setlength{\eqetmplengtha}{\labelwidth+\eqemargin}%
- \setlength{\eqetmplengtha}
- {\eqetmplengtha+\eqetmplengthb}%
- \ifwithinparts
- \setlength{\eqetmplengtha}{\labelwidth}%
- \setlength{\eqetmplengtha}
- {\eqetmplengtha+\eqetmplengthb}%
- \ifx\eq@item\item@part@tabular
- \hspace*{-\eqemargin}\eqetmplengtha\eqemargin\else
- \hspace*{-\eqetmplengtha}\fi
- \else
- \hspace*{-\eqemargin}\eqetmplengtha\eqemargin
- \fi
- \else
- \ifwithinparts
- \setlength{\eqetmplengtha}{\labelwidth}%
- \setlength{\eqetmplengtha}
- {\eqetmplengtha-\eqetmplengthb}%
- \setlength{\eqetmplengtha}{\labelwidth}%
- \setlength{\eqetmplengtha}
- {\eqetmplengtha+\eqetmplengthb}%
- \ifx\eq@item\item@part@tabular
- \hspace*{\eqetmplengtha}%
- \settowidth{\eqetmplengthb}{\eqe@prtsepPrb}%
- \setlength{\eqetmplengtha}
- {-\labelwidth-\eqetmplengthb}\else
- \eqetmplengtha0pt\fi
- \else
- \eqetmplengtha0pt
- \fi
- \fi
- \else
- \if@eqalignfilllinestoleft
- \setlength{\eqetmplengtha}
- {\eqemargin+\leadinIndentPrtSep}%
- \hspace*{-\eqetmplengtha}\else\hspace*{0pt}\fi
- \fi
-}
-\newcommand{\useFillerLines}{\let\vspaceFiller\vspaceFillerLines
- \fillTypeDefault\@eqlinedfillertrue}
-\newcommand{\useFillerDefault}{\let\vspaceFiller\vspaceFillerDefault
- \let\eqWriteLine\hfill\@eqlinedfillerfalse}
-\newcommand{\fillTypeHRule}{\let\eqWriteLine\eqWriteLineFill}
-\newcommand{\fillTypeDots}{\let\eqWriteLine\eqWriteLineDots}
-\newcommand{\fillTypeDashLine}{\let\eqWriteLine\eqWriteLineDashFill}
-\newcommand{\fillTypeBlankLine}{\let\eqWriteLine\eqWriteLineBlankFill}
-\newcommand{\fillTypeDefault}{\let\eqWriteLine\eqWriteLineFill}
-\ifeqfortextbook\else
- \if@bypasseqexamheading\else
-\pagestyle{eqExamheadings}\fi\fi
-\ifeqfortextbook
-\AtBeginDocument{\tb@soln@choice
- \ifeqwritetomargins\chkmarginboxwidth
- \AddToShipoutPicture{\eqe@tb@shipout}\fi}
-\fi
-\edef\ftbInputEqTextb{\ifeqfortextbook\noexpand
- \InputIfFileExists{eqtextb.def}{}{}\fi}
-\ftbInputEqTextb
-\define@boolkey{eqFillin}{underline}[true]{}
-\define@key{eqFillin}{u}[]{\KV@eqFillin@underlinetrue}
-\define@key{eqFillin}{b}[]{\KV@eqFillin@underlinefalse}
-\define@boolkey{eqFillin}{boxed}[true]{}
-\define@key{eqFillin}{boxpretext}[]{\def\eq@fillintext{#1}}
-\let\eq@fillintext\@empty
-\define@key{eqFillin}{parbox}[\relax]{\def\eq@fillinparbox{#1}}
-\let\eq@fillinparbox\@empty
-\define@key{eqFillin}{hiddenbox}[]{%
- \def\eq@fillinhiddenbox{%
- \setlength{\fboxrule}{0pt}\setlength{\fboxsep}{0pt}}}
-\let\eq@fillinhiddenbox\@empty
-\define@boolkey{eqFillin}{enclosesoln}[true]{}
-\define@choicekey+{eqFillin}{boxsize}{tiny,scriptsize,footnotesize,%
- small,normalsize,large,Large,LARGE,huge,Huge}[normalsize]{%
- \def\eq@eqFillin@boxsize{\text{\csname#1\endcsname\strut}}%
-}{\PackageWarning{eqexam}{Bad choice for boxsize, permissible values
- are tiny, scriptsize, footnotesize, small, normalsize,
- large, Large, LARGE, huge and Huge. Try again}}
-\def\eq@eqFillin@boxsize{\text{\normalsize\strut}}
-\define@key{eqFillin}{color}[\eq@fillinColor]{\edef\eq@fillin@color{#1}}
-\define@choicekey+{eqFillin}{align}[\val\nr]%
- {l,r,c}[\eq@eqFillin@align@default]{%
- \def\eq@eqFillin@align{#1}%
- \ifcase\nr\relax
- \def\eqe@align@hfill{}\or
- \def\eqe@align@hfill{\hfill}\or
- \def\eqe@align@hfill{\hfil}\fi
- }{%
- \PackageWarning{eqexam}{Bad choice for align, permissible values
- are l, r, and c. Try again}}
-\let\eqe@align@hfill\relax
-\define@choicekey+{eqFillin}{defaultalign}[\val\nr]{l,r,c}[c]{%
- \def\eq@eqFillin@align@default{#1}%
- \ifcase\nr\relax
- \def\eqe@align@hfill@default{}\or
- \def\eqe@align@hfill@default{\hfill}\or
- \def\eqe@align@hfill@default{\hfil}\fi
- }{%
- \PackageWarning{eqexam}{Bad choice for defaultalign, permissible
- values are l, r, and c. Try again}}
-\setkeys{eqFillin}{defaultalign=c}
-\renewcommand{\fillInFormatDefault}{\normalfont}
-\define@key{eqFillin}{format}[\fillInFormatDefault]{%
- \def\eq@fillin@format{#1}}
-\def\eq@fillin@format{\bfseries}
-\def\eqe@fbox@corr#1{#1-2\fboxsep-2\fboxrule}
-\define@boolkey{eqFillin}{fitwidth}[true]{} %
-\@ifundefined{boxed}{%
- \def\eq@fillin@defaultbox{\fbox}%
- \def\eq@fillin@boxcmd{\fbox}%
- }{%
- \def\eq@fillin@defaultbox{\boxed}%
- \def\eq@fillin@boxcmd{\boxed}%
- }
-\define@key{eqFillin}{boxcmd}%
- [\eq@fillin@defaultbox]{\def\eq@fillin@boxcmd{#1}}
-\@ifundefined{underbar}{%
- \def\eq@fillin@defaultul{underline}%
- \def\eq@fillin@ulcmd{\underline}%
- }{%
- \def\eq@fillin@defaultul{underbar}%
- \def\eq@fillin@ulcmd{\underbar}%
- }
-\edef\ulcustom{\expandafter\noexpand\eq@fillin@ulcmd}
-\edef\temp@exp{\noexpand
-\define@choicekey+{eqFillin}{ulcmd}
- {underbar,underline,custom}[\eq@fillin@defaultul]}
-\temp@exp{\def\@rgi{#1}\def\eq@custom{custom}\ifx\@rgi\eq@custom
- \def\eq@fillin@ulcmd{\@nameuse{ulcustom}}\else
- \def\eq@fillin@ulcmd{\@nameuse{#1}}\fi
-}{\PackageWarning{aeb}{Bad choice for ulcmd, permissible values
- are underbar and underline. Try again}}
-\define@key{eqFillin}{lift}[-1sp]{\def\eq@fillin@lift{#1}}
-\define@boolkey{eqFillin}{autolift}[true]{} %
-\define@key{eqFillin}{addtoautolift}[0pt]{%
- \def\eq@fillin@addtoautolift{#1}}
-\def\eqe@getiiiOpts{%
- \@ifnextchar[%]
- \i@eqe@getiiiOpts
- {\iii@eqe@getiiiOpts{c}{\relax}[s]}}
-\def\i@eqe@getiiiOpts[#1]{%
- \@ifnextchar[%]
- {\ii@eqe@getiiiOpts{#1}}%
- {\iii@eqe@getiiiOpts{#1}{\relax}[s]}}
-\def\ii@eqe@getiiiOpts#1[#2]{%
- \@ifnextchar[%]
- {\iii@eqe@getiiiOpts{#1}{#2}}%
- {\iii@eqe@getiiiOpts{#1}{#2}[#1]}}
-\def\iii@eqe@getiiiOpts#1#2[#3]{%
- \def\eqe@opts@argi{#1}%
- \def\eqe@opts@argii{#2}%
- \def\eqe@opts@argiii{#3}}
-\newcommand{\setfillinDefaults}[1]{\def\eqe@argi{#1}\ifx\eqe@argi\@empty
- \let\eqe@setfillinDefaults\@empty\else
- \def\eqe@setfillinDefaults{#1}\fi}
-\let\eqe@setfillinDefaults\@empty
-\renewcommand{\fillin}[3][]{\begingroup%
- \expandafter\let\expandafter\ifsp\csname ifsp@expand\endcsname
- \setkeys{eqFillin}{boxsize,underline=true,boxed=false,%
- boxpretext,color,format,enclosesoln=false,fitwidth=false,lift,%
- autolift=false,addtoautolift}%
- \ifx\eqe@setfillinDefaults\@empty\else
- \protected@edef\eq@temp@exp{\noexpand
- \setkeys{eqFillin}{\eqe@setfillinDefaults}}%
- \eq@temp@exp
- \fi
- \protected@edef\eq@temp@exp{\noexpand\setkeys{eqFillin}{#1}}%
- \eq@temp@exp
- \ifKV@eqFillin@boxed\KV@eqFillin@underlinefalse\fi
- \ifKV@eqFillin@autolift\def\eq@fillin@lift{-2sp}\fi
- \edef\eqe@argii{#2}%
- \eq@fillinhiddenbox
- \ifx\eq@fillinhiddenbox\@empty\else
- \KV@eqFillin@boxedtrue\fi
- \ifx\eq@fillinparbox\@empty\def\eqe@argiii{#3}\else
- \ifx\eqe@align@hfill\relax
- \def\eq@eqFillin@align{l}\def\eqe@align@hfill{}\fi
- \expandafter\eqe@getiiiOpts\eq@fillinparbox\relax
- \ifKV@eqFillin@boxed
- \expandafter\ifx\eqe@opts@argii\relax\else
- \edef\eqe@opts@argii{\expandafter
- \eqe@fbox@corr\expandafter{\eqe@opts@argii}}\fi
- \fi
- \edef\eqe@parboxOptArgs{[\eqe@opts@argi]%
- \expandafter\ifx\eqe@opts@argii\relax\else
- [\eqe@opts@argii][\eqe@opts@argiii]\fi}%
- \def\eqe@argiii{\expandafter\parbox\eqe@parboxOptArgs{\eqe@bw}%
- {\eqe@align@hfill\ifKV@eqFillin@boxed\eq@fillintext\fi#3}}%
- \fi
- \ifx\eqe@align@hfill\relax
- \def\eq@eqFillin@align{c}%
- \edef\eqe@align@hfill{\eqe@align@hfill@default}\fi
- \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
- \ifx\eq@fillinparbox\@empty
- \ifx\eqe@argii\@empty
- \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
- \ifKV@eqFillin@boxed\eq@fillintext\fi\eqe@argiii}}%
- \ifKV@eqFillin@boxed
- \setlength{\eqetmplengthb}{%
- \eqetmplengthb+2\fboxsep+2\fboxrule}%
- \fi
- \else
- \setlength{\eqetmplengthb}{#2}%
- \fi
- \else
- \ifx\eqe@argii\@empty
- \setlength{\eqetmplengthb}{\linewidth}%
- \PackageWarning{eqexam}{Parameter \#2
- is empty with parbox option,\MessageBreak
- using \string\linewidth\space for width%
- }%
- \else
- \setlength{\eqetmplengthb}{#2}%
- \fi
- \fi
- \expandafter\let\expandafter\ifsp\csname ifsp@default\endcsname
- \edef\eqe@bw{\the\eqetmplengthb}%
- \ifKV@eqFillin@underline\let\@fillinFmt\eq@fillin@ulcmd
- \else\let\@fillinFmt\relax\fi
- \ifx\eq@fillinparbox\@empty\else
- \ifKV@eqFillin@underline\let\@fillinFmt\relax
- \PackageInfo{eqexam}{Removing underline option, not permissible
- \MessageBreak with parbox option}%
- \fi\fi
- \ifeq@proofing
- \ifKV@eqFillin@fitwidth
- \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
- \ifx\eq@fillinparbox\@empty\ifKV@eqFillin@boxed
- \eq@fillintext\fi\fi\eqe@argiii}}%
- \ifKV@eqFillin@boxed
- \setlength{\eqetmplengthb}{%
- \eqetmplengthb+2\fboxsep+2\fboxrule}%
- \fi
- \edef\eqe@bw{\the\eqetmplengthb}%
- \fi
- \ifKV@eqFillin@boxed
- \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
- \setbox\z@\hbox{\@eqmath{\eq@fillin@boxcmd{%
- \eq@eqFillin@boxsize
- \@fillinFmt{%
- \ifKV@eqFillin@boxed
- \edef\eqe@bw{\eqe@fbox@corr{\eqe@bw}}%
- \fi
- \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
- \@eqmath{\eq@fillin@format\color{\eq@fillin@color}%
- \ifx\eq@fillinparbox\@empty
- \eq@fillintext\fi\eqe@argiii}}%
- }% end \@fillinFmt
- }}}% end \mbox
- \setlength{\@tempdima}{\ht0+\dp0}%
- \xdef\fillinTotalHeight{\the\@tempdima}%
- \mbox{\unhbox\z@}%
- \else
- \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\relax\fi
- \setbox\z@\hbox{%
- \ifdim\eq@fillin@lift=-1sp\relax
- \@fillinFmt{\makebox[\eqe@bw][\eq@eqFillin@align]{\strut
- \color{\eq@fillin@color}%
- \@eqmath{\eq@fillin@format\eqe@argiii}}}%
- \else
- \ifKV@eqFillin@autolift
- \setbox2=\hbox{\@eqmath{\eq@fillin@format\eqe@argiii}}%
- \setlength{\@tempdima}{\dp2+\eq@fillin@addtoautolift}%
- \edef\eq@fillin@lift{\the\@tempdima}\fi
- \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
- \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
- \color{\eq@fillin@color}%
- \raisebox{\eq@fillin@lift}{\@eqmath{\eq@fillin@format
- \eqe@argiii}}}}}%
- \fi
- }\setlength{\@tempdima}{\ht0+\dp0}%
- \xdef\fillinTotalHeight{\the\@tempdima}%
- \mbox{\unhbox\z@}%
- \fi
- \else
- \ifKV@eqFillin@boxed
- \setbox\z@\hbox{\@eqmath{\eq@fillin@format
- \eq@fillin@boxcmd{\eq@eqFillin@boxsize\ifeq@nosolutions
- \rlap{\@eqmath{\eq@fillintext}}\fi
- \ifvspacewithsolns\rlap{\@eqmath{\eq@fillintext}}\fi
- \@fillinFmt{%
- \makebox[\eqe@fbox@corr{\eqe@bw}]{%
- \ifKV@eqFillin@enclosesoln\phantom
- {\setlength\eqetmplengthb{\eqe@bw-2\fboxsep}%
- \edef\eqe@bw{\the\eqetmplengthb}%
- \@eqmath{\eqe@argiii}}\else
- \strut\hfill\fi
- }%
- }%end \@fillinFmt
- }}}% end \hbox
- \setlength{\@tempdima}{\ht0+\dp0}%
- \xdef\fillinTotalHeight{\the\@tempdima}%
- \mbox{\unhbox\z@}%
- \else
- \setbox\z@\hbox{%
- \ifdim\eq@fillin@lift=-1sp\relax
- \@fillinFmt{\makebox[\eqe@bw]{%
- \strut\hfil}}%
- \else
- \ifKV@eqFillin@autolift
- \setbox2=\hbox{\@eqmath{\eq@fillin@format
- \eqe@argiii}}%
- \setlength{\@tempdima}%
- {\dp2+\eq@fillin@addtoautolift}%
- \edef\eq@fillin@lift{\the\@tempdima}\fi
- \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
- \makebox[\eqe@bw]{\raisebox{\eq@fillin@lift}
- {\phantom{\@eqmath{\eq@fillin@format
- \eqe@argiii}}\strut\hfil}}}}%
- \fi
- }\setlength{\@tempdima}{\ht0+\dp0}%
- \xdef\fillinTotalHeight{\the\@tempdima}%
- \mbox{\unhbox\z@}%
- \fi
- \@ifundefined{@quiz}{}{%
- \if\eq@online\eqe@YES\relax
- \ifeq@nosolutions
- \ifeq@solutionsafter\else
- \ifx\eq@insertverticalspace\eqe@YES\relax
- \stepcounter{@cntfillin}%
- \edef\fieldName{%
- \if\probstar*eqexam.\curr@quiz.fillin.%
- \theeqquestionnoi.part\thepartno.%
- fi\the@cntfillin%
- \else
- eqexam.\curr@quiz.fillin.%
- \theeqquestionnoi.fi\the@cntfillin%
- \fi
- }\ifx\eq@fillinparbox\@empty
- \raisebox{-1bp}{\makebox[0pt][r]{%
- \textField[\BC{}\presets{\eqe@optsFillIn}]
- {\fieldName}{#2}{\fillinTotalHeight}}}\else
- \setlength{\@tempdima}%
- {\eqe@opts@argii+2\fboxrule+2\fboxsep}%
- \raisebox{-1bp}{\makebox[0pt][r]{%
- \textField[\BC{}\presets{\eqe@optsFillIn}
- \Ff{\FfMultiline}]{\fieldName}{#2}
- {\fillinTotalHeight}}}\fi
- \fi
- \fi
- \fi
- \fi
- }%
- \fi\endgroup\space\ignorespaces}
-\renewcommand\TF[2][\defaultTFwidth]{%
- \def\eqe@next{\fillin[underline]{#1}{#2}}%
- \ifdim\eq@extralabelsep=0pt\relax\else
- \if\probstar*\relax\if\exerwparts@cols0
- \def\eqe@next{\makebox[0pt][r]{%
- \fillin[underline]{#1}{#2}}\ignorespaces}%
- \fi\fi\fi\eqe@next
-}
-\endinput
-%%
-%% End of file `eqexam.sty'.
+%%
+%% This is file `eqexam.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{eqexam}
+ [2018/12/13 v5.1.3 An Exam Construction Package (dps)]
+\def\eqexamdefReq{2018/12/13}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\usepackage{xkeyval}
+\DeclareOptionX{usecustomdesign}{\eqcustomdesigntrue}
+\newif\ifeqcustomdesign \eqcustomdesignfalse
+\DeclareOptionX{nocustomdesign}{\let\eqe@nocustomdesign=1}
+\let\eqe@nocustomdesign=0
+\DeclareOptionX{fortextbook}{\eqfortextbooktrue}
+\newif\ifeqfortextbook \eqfortextbookfalse
+\DeclareOptionX{forinstr}{\eqforinstrtrue}
+\DeclareOptionX{forstudent}{\eqforinstrfalse}
+\newif\ifeqforinstr \eqforinstrfalse
+\DeclareOptionX{nomarginwrite}{\eqwritetomarginsfalse}
+\newif\ifeqwritetomargins\eqwritetomarginstrue
+\define@key{eqexam.sty}{cfg}[]{%
+ \def\arg@i{#1}\ifx\arg@i\@empty
+ \PackageWarning{eqexam}{No value for `cfg' specified}\else
+ \def\ifeqexamCFG{true}\def\eqexamCFG{#1.cfg}%
+ \AtEndOfPackage{\InputIfFileExists{#1.cfg}
+ {\typeout{Inputting #1.cfg}}{\PackageWarning{eqexam}{%
+ Cannot find configuration file #1.cfg}}}\fi
+ }
+\def\ifeqexamCFG{false}
+\let\eqexamCFG\@empty
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{%
+ \edef\eqe@tmp@exp{%
+ \noexpand\DeclareOptionX{myconfig\eqe@tmp@i}%
+ {\noexpand\AtEndOfPackage{\expandafter\noexpand
+ \csname eqemyconfig\eqe@tmp@i\endcsname}}%
+ }\eqe@tmp@exp
+}
+\DeclareOptionX{pointsonleft}{\AtEndOfPackage{\PointsOnLeft}}
+\DeclareOptionX{pointsonright}{\AtEndOfPackage{\PointsOnRight}}
+\DeclareOptionX{pointsonboth}{\AtEndOfPackage{\PointsOnBothSides}}
+\DeclareOptionX{nopoints}{\AtEndOfPackage{\NoPoints}}
+\DeclareOptionX{totalsonleft}{\AtEndOfPackage{\TotalsOnLeft}}
+\DeclareOptionX{totalsonright}{\AtEndOfPackage{\TotalsOnRight}}
+\DeclareOptionX{nozerototals}{\AtEndOfPackage{\noZeroTotals}}
+\let\eqe@YES=y \let\eqe@NO=n
+\let\eqe@One=1 \let\eqe@Zero=0
+\let\eqe@Two=2 \let\eqe@Three=3 \let\eqe@Four=4
+\def\eqe@h{h}
+\DeclareOptionX{nototals}{\AtEndOfPackage{\NoTotals}}
+\DeclareOptionX{noparttotals}{%
+ \AtEndOfPackage{\let\eq@parttotals\eqe@NO}}
+\DeclareOptionX{parttotalsonright}{%
+ \def\eqeomarginbox{\eqeomarginboxright}}
+\DeclareOptionX{parttotalsonleft}{%
+ \def\eqeomarginbox{\eqeomarginboxleft}}
+\def\eqeomarginbox{\eqeomarginboxright}
+\DeclareOptionX{noseparationrule}{%
+ \AtEndOfPackage{\separationruleOff}}
+\DeclareOptionX{nosummarytotals}{\let\eq@nosummarytotals\eqe@YES}
+\DeclareOptionX{coverpage}{\def\eqex@coverpage{\eqexcoverpage}%
+ \setcounter{page}{0}}
+\define@choicekey+{eqexam.sty}{coverpagesumry}[\val\nr]%
+ {byparts,bypages,none}{%
+ \ifcase\nr\relax
+ \def\sumryAnnots{\cpSumrybyparts}\or
+ \def\sumryAnnots{\cpSumrybypages}\or
+ \let\sumryAnnots\relax
+ \fi
+}{\PackageWarning{aeb}{Bad choice for coverpagesumry, permissible values
+ are byparts, bypages, and none. Try again}}
+\let\sumryAnnots\relax
+\DeclareOptionX{nospacetowork}{%
+ \AtEndOfPackage{\let\eq@insertverticalspace\eqe@NO}}
+\@ifundefined{ifanswerkey}{\newif\ifanswerkey\answerkeyfalse}{}
+\@ifundefined{ifsolutionsAtEnd}
+ {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
+\let\thisOpt@OK \eqe@YES
+\def\w@rningBadOpts{\PackageWarningNoLine{eqexam}{You've chosen two
+ conflicting options,\MessageBreak \l@stPO\space and \CurrentOption.
+ We will recognize\MessageBreak the \l@stPO\space option.
+ Please correct\MessageBreak this if my guess is wrong}}
+\def\eqe@optiont@kenMsg{\PackageInfo{eqexam}
+ {Option \CurrentOption\space taken}}
+\DeclareOptionX{answerkey}{\ifx\thisOpt@OK\eqe@YES
+ \def\l@stPO{answerkey}\let\thisOpt@OK\eqe@NO
+ \eqe@optiont@kenMsg\expandafter\AnswerKey\else
+ \w@rningBadOpts\fi}
+\def\AnswerKey{\solutionsAtEndfalse\answerkeytrue
+ \eq@proofingtrue\eq@solutionsaftertrue\displayworkareafalse}
+\newif\ifvspacewithsolns\vspacewithsolnsfalse
+\def\ifkeyalt{\csname ifvspacewithsolns\endcsname}
+ \let\keyalttrue\vspacewithsolnstrue
+ \let\keyaltfalse\vspacewithsolnsfalse
+\def\ifkeyOrkeyalt{\ifanswerkey
+ \def\eqe@next{\csname iftrue\endcsname}\else
+ \ifvspacewithsolns\def\eqe@next{\csname iftrue\endcsname}\else
+ \def\eqe@next{\csname iffalse\endcsname}\fi\fi\eqe@next}
+\DeclareOptionX{vspacewithsolns}{\ifx\thisOpt@OK\eqe@YES
+ \def\l@stPO{vspacewithsolns}\let\thisOpt@OK\eqe@NO
+ \eqe@optiont@kenMsg
+ \vspacewithsolnstrue\expandafter\displayworkareatrue
+ \else\w@rningBadOpts\fi}
+\DeclareOptionX{ftbsolns}{\ExecuteOptionsX{vspacewithsolns}}
+\DeclareOptionX{flextended}{\AtEndOfPackage{\flextendedInput}}
+\def\flextendedInput{\eqe@flextendedtrue
+ \InputIfFileExists{flextended.def}
+ {\PackageInfo{eqexam}{Inputting flextended.def for
+ flextended\MessageBreak option}}
+ {\eqe@flextendedfalse\PackageWarning{eqexam}
+ {Cannot find flextended.def for flextended\MessageBreak
+ option. You should rebuild the package. Removing\MessageBreak
+ flextended for now}}}
+\@ifundefined{ifeqe@flextended}
+ {\newif\ifeqe@flextended \eqe@flextendedfalse}{}
+\DeclareOptionX{useforms}{\AtEndOfPackage{\def\sqstar{*}}}
+\newif\ifallowcircmc \allowcircmcfalse
+\DeclareOptionX{allowcirc4mc}{\allowcircmctrue}
+\def\eqe@auto@chk@drivers{\ifpdf\ExecuteOptionsX{pdftex}\else
+ \ifxetex\ExecuteOptionsX{xetex}\fi\fi}
+\newif\ifeqeonline \eqeonlinefalse
+\DeclareOptionX{online}{\eqe@auto@chk@drivers
+ \let\eq@online\eqe@YES\eqeonlinetrue\ExecuteOptionsX{links}}
+\DeclareOptionX{pdf}{\eqe@auto@chk@drivers\let\load@web\eqe@YES}
+\DeclareOptionX{links}{\eqe@auto@chk@drivers
+ \let\load@web\eqe@YES\let\load@exerquiz\eqe@YES}
+\DeclareOptionX{email}{\eqe@auto@chk@drivers
+ \let\use@email\eqe@YES\ExecuteOptionsX{online}}
+\newif\ifeqobeylocalversion \eqobeylocalversionfalse
+\DeclareOptionX{obeylocalversions}{\eqobeylocalversiontrue}
+\DeclareOptionX{usexkv}{\let\eq@usexkeys\eqe@YES}
+\let\eq@usexkeys\eqe@YES
+\let\eq@renditionOptions\@empty
+\let\eq@max@selected\@empty \let\eq@ren@selected\@empty
+\DeclareOptionX{max}{\def\eq@max@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\numVersions{#1}}}
+\DeclareOptionX{rendition}{\def\eq@ren@selected{#1}%
+ \g@addto@macro\eq@renditionOptions{\forVersion{#1}}}
+\DeclareOptionX{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
+\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
+ {\typeout{inputting aebrandom.def}}{cannot find aebrandom.def}}
+\let\eq@online\eqe@NO
+\def\ifisOnline{\ifx\eq@online\eqe@YES}
+\let\use@email\eqe@NO
+\let\load@web\eqe@NO
+\let\load@exerquiz\eqe@NO
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\def\NoSpaceToWork{\let\eq@insertverticalspace\eqe@NO}
+\def\SpaceToWork{\let\eq@insertverticalspace\eqe@YES}
+\let\eq@nototals\eqe@NO
+\let\eq@nosummarytotals\eqe@NO
+\let\eq@parttotals\eqe@YES
+\let\eqx@separationrule\eqe@YES
+\let\eq@insertverticalspace\eqe@YES
+\let\eqex@coverpage\relax
+\def\@reportpoints{0}
+\let\marginpoints\@empty
+\let\totalsbox=\hfil
+\@ifundefined{ifequsecolor}{\newif\ifequsecolor\equsecolorfalse}{}
+\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
+ \PassOptionsToPackage{monochrome}{\eq@ColorPackage}}
+\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue}
+\newif\ifForceNoColor\ForceNoColorfalse
+\DeclareOptionX{forcolorpaper*}{\equsecolortrue\eqforpapertrue
+ \ForceNoColortrue} % for print
+\DeclareOptionX{preview}{\previewtrue}
+\define@key{eqexam.sty}{webOpts}[]{\def\eqe@webOpts{#1,\eqDriverName}}
+\def\eqe@webOpts{\eqDriverName}
+\define@key{eqexam.sty}{exerquizOpts}[]{\def\eqe@eqOpts{#1,nodljs}}
+\def\eqe@eqOpts{nodljs}
+\DeclareOptionX{nosolutions}{\ifx\thisOpt@OK\eqe@YES
+ \def\l@stPO{nosolutions}\let\thisOpt@OK\eqe@NO
+ \eqe@optiont@kenMsg\eq@nolinktrue\eq@nosolutionstrue
+ \expandafter\displayworkareatrue
+ \else\w@rningBadOpts\fi}
+\DeclareOptionX{nohiddensolutions}{\eq@globalshowsolutionstrue}
+\DeclareOptionX{noHiddensolutions}%
+ {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
+\DeclareOptionX{solutionsafter}{\ifx\thisOpt@OK\eqe@YES
+ \def\l@stPO{solutionsafter}\let\thisOpt@OK\eqe@NO
+ \eqe@optiont@kenMsg
+ \eq@solutionsaftertrue\expandafter
+ \displayworkareafalse\else\w@rningBadOpts\fi}
+\DeclareOptionX{solutionsonly}{\ifx\thisOpt@OK\eqe@YES
+ \def\l@stPO{solutionsafter}\let\thisOpt@OK\eqe@NO
+ \eqe@optiont@kenMsg\AtEndOfPackage{\therearesolutionstrue
+ \let\exerSolnsHeadnToc\relax}
+ \solutionsonlytrue\answerkeytrue\expandafter
+ \displayworkareafalse\else\w@rningBadOpts\fi}
+\DeclareOptionX{proofing}{\eq@proofingtrue}
+\newcommand{\showproofing}{\eq@proofingtrue}
+\newcommand{\hideproofing}{\eq@proofingfalse}
+\newif\ifaebshowgrayletters\aebshowgraylettersfalse
+\DeclareOptionX{showgrayletters}%
+ {\AtEndOfPackage{\aebshowgrayletterstrue}}
+\@ifundefined{ifdisplayworkarea}{\newif\ifdisplayworkarea
+ \displayworkareafalse}{}
+\providecommand\displayworkareaOn{\displayworkareatrue}
+\providecommand\displayworkareaOff{\displayworkareafalse}
+\IfFileExists{xcolor.sty}%
+{\def\eq@ColorPackage{xcolor}\def\eqe@color@opt{table}%
+ \PassOptionsToPackage{xcolor}{table}}
+{\def\eq@ColorPackage{color}\let\eqe@color@opt\@empty}
+\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
+\newif\if@eqeuseclassmaketitle \@eqeuseclassmaketitlefalse
+\DeclareOptionX{useclassmaketitle}{\@eqeuseclassmaketitletrue}
+\newif\if@bypasseqexamheading \@bypasseqexamheadingfalse
+\DeclareOptionX{bypasspkgpagestyle}{\@bypasseqexamheadingtrue
+ \ExecuteOptionsX{nototals}}
+\DeclareOptionX{dvipsone}{%
+ \def\eqe@drivernum{0}\def\eqDriverName{dvipsone}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipsone}}
+\DeclareOptionX{dvips}{\def\eqe@drivernum{0}\def\eqDriverName{dvips}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvips}}
+\DeclareOptionX{pdftex}{\def\eqe@drivernum{1}\def\eqDriverName{pdftex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{pdftex}}
+\DeclareOptionX{dvipdfm}{%
+ \def\eqe@drivernum{2}\def\eqDriverName{dvipdfm}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfm}}
+\DeclareOptionX{dvipdfmx}{\def\eqe@drivernum{2}%
+ \def\eqDriverName{dvipdfmx}%
+ \PassOptionsToPackage{\eq@ColorPackage}{dvipdfmx}}
+\DeclareOptionX{xetex}{\def\eqe@drivernum{2}\def\eqDriverName{xetex}%
+ \PassOptionsToPackage{\eq@ColorPackage}{xetex}}
+\DeclareOptionX{textures}{%
+ \def\eqe@drivernum{3}\def\eqDriverName{textures}%
+ \PassOptionsToPackage{\eq@ColorPackage}{textures}}
+\DeclareOptionX*{%
+ \PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
+\def\eqe@drivernum{5}
+\let\eqDriverName\@empty
+\newif\ifeq@solutionsafter \eq@solutionsafterfalse
+\def\ifsolutionsafter{\csname ifeq@solutionsafter\endcsname}
+ \let\solutionsaftertrue\eq@solutionsaftertrue
+ \let\solutionsafterfalse\eq@solutionsafterfalse
+\newif\ifsolutionsonly\solutionsonlyfalse
+\newif\ifeq@hidesolution \eq@hidesolutionfalse
+\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
+\newif\ifeq@nosolutions \eq@nosolutionsfalse
+\newif\ifeq@proofing \eq@proofingfalse
+\newif\ifeq@nolink \eq@nolinkfalse
+\@ifundefined{ifpreview}{\newif\ifpreview \previewfalse}{}
+\newif\ifeqforpaper \eqforpaperfalse
+\def\eqe@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\@for\eqe@tmp@i:={},i,ii,iii,iv,v,vi\do{\eqe@csarg
+ \edef{eqemyconfig\eqe@tmp@i}{\noexpand
+ \InputIfFileExists{eqexam\eqe@tmp@i.cfg}{}{}}%
+ \eqe@tmp@exp
+}
+\InputIfFileExists{web.cfg}{}{}
+\InputIfFileExists{eqecus.opt}{}{}
+\InputIfFileExists{rendition.cfg}{}{}
+\InputIfFileExists{exambuilder.cfg}{}{}
+\ProcessOptionsX
+\ifeqeonline
+ \ifanswerkey
+ \def\flextendedInput{\let\turnfl@nskeyMsg\@empty
+ \PackageWarningNoLine{eqexam}
+ {You've chosen the online or email option\MessageBreak
+ with the flextended option. This is not\MessageBreak
+ supported, removing the flextended option}}\fi
+\fi
+\AtEndOfPackage{\selectedMC}
+\edef\eqe@tmpexp{\noexpand
+\RequirePackage{\eq@ColorPackage}}\eqe@tmpexp
+\@ifpackageloaded{xcolor}{\AtEndOfPackage{\let\CT@cell@color\relax
+ \let\CT@arc@\relax}%
+ \@ifpackagelater{xcolor}{2004/07/04}{}{\PackageError{eqexam}{%
+ *************************************************\MessageBreak
+ * Your Version of `xcolor.sty' is too old!\MessageBreak
+ * You need the version from 2004/07/04 or newer\MessageBreak
+ * or use: \string\usepackage[noxcolor]{eqexam}\MessageBreak
+ * or \string\documentclass[noxcolor]{article}\MessageBreak
+ *************************************************}{}%
+ }%
+}{}
+\if\eqe@nocustomdesign1\eqcustomdesignfalse\fi
+\long\def\eqe@IWO#1{\immediate\write#1}
+\newcommand{\showAllAnsAtEnd}{%
+ \makeAnsEnvForSolnsAtEnd\eqTopOfSolnPage
+ \answerkeytrue\eq@proofingtrue
+ \eq@solutionsaftertrue\vspacewithsolnstrue
+ \displayworkareafalse %\withinsoldoctrue % now within \eqTopOfSolnPage
+}
+\newcommand{\makeAnsEnvForSolnsAtEnd}{%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+}
+\newcommand{\solAtEndFormatting}[1]{\def\eqeAEFormatting{#1}}
+\let\eqeAEFormatting\@empty
+\def\writeAllAnsAtEnd{\ifsolutionsonly\else
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\showAllAnsAtEnd}%
+ \ifx\eqeAEFormatting\@empty\else
+ \eqe@IWO\quiz@solns{\string\eqeAEFormatting}\fi
+ \fi
+}
+\def\writeWithSolDocTrue{\writeT@SolnFile{\protect\withinsoldoctrue}}
+\newcommand{\setSolnMargins}[1]{\setlength\eqemargin{#1}\ignorespaces}
+\def\altSetSolnMargins#1{\def\alt@SetSolnMargins{#1}}
+\let\alt@SetSolnMargins\@empty
+\def\writeBeginEqeQuestions{\ifsolutionsonly\else
+ \ifOKToWriteExamData
+ \let\quiz@solns\ex@solns
+ \ifx\alt@SetSolnMargins\@empty
+ \writeT@SolnFile{\string\setSolnMargins{\the\eqemargin}}\else
+ \writeT@SolnFile{\alt@SetSolnMargins}\fi
+ \writeT@SolnFile{\protect\eqgriii\string\noindent
+ \string\begin{eqequestions}}%
+ \fi
+ \fi
+}
+\newcommand{\setBtwnExamSkip}[1]{\gdef\btwnExamSkipAmt{#1}%
+ \def\btwnExamSkip{\ifdim#1=0pt\else
+ \vskip#1\relax\fi}}
+\setBtwnExamSkip{6pt}
+\def\writeEndEqeQuestions{%
+ \ifsolutionsonly\else
+ \ifOKToWriteExamData
+ \let\quiz@solns\ex@solns
+ \eqe@IWO\quiz@solns{\string\eqgrii
+ \string\end{eqequestions}^^J}%
+ \writeT@SolnFile{\string\btwnExamSkip^^J}%
+ \fi\fi
+}
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+\def\saveIFEQE#1{\def\ARG{#1ifSave}%
+ \expandafter\csarg\expandafter
+ \let\expandafter\ARG\csname#1\if#1true\else false\fi\endcsname}
+\saveIFEQE{vspacewithsolns}\saveIFEQE{answerkey}
+\saveIFEQE{eq@proofing}\saveIFEQE{eq@solutionsafter}
+\saveIFEQE{eq@nolink}\saveIFEQE{eq@nosolutions}
+\saveIFEQE{displayworkarea}
+\def\vpwsSimulateNoSolns{% dps28
+ \ifvspacewithsolns
+ \answerkeyfalse\eq@proofingfalse\eq@solutionsafterfalse
+ \eq@nolinkfalse\eq@nosolutionsfalse\displayworkareatrue
+ \fi}
+\def\reverseVSWS{\vspacewithsolnsfalse
+ \answerkeyifSave\eq@proofingifSave
+ \eq@solutionsafterifSave\eq@nolinkifSave
+ \eq@nosolutionsifSave\displayworkareaifSave
+}
+\vpwsSimulateNoSolns
+\let\savedeq@online\eq@online
+\let\savedifeq@solutionsafter\ifeq@solutionsafter
+\let\savedifeq@hidesolution\ifeq@hidesolution
+\let\savedifeq@globalshowsolutions\ifeq@globalshowsolutions
+\let\savedifeq@nosolutions\ifeq@nosolutions
+\let\savedifeq@proofing\ifeq@proofing
+\let\savedifeq@nolink\ifeq@nolink
+\let\savedifpreview\ifpreview
+\let\savedifeqforpaper\ifeqforpaper
+\let\ifnosolutions\ifeq@nosolutions
+\RequirePackage{amstext,amssymb}
+\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
+ {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
+\RequirePackage{aeb-comment}
+\def\eqe@commentChkMsg{\@ifpackageloaded{comment}
+ {\PackageWarningNoLine{eqexam}
+ {The comment package is incompatible with the\MessageBreak
+ aeb-comment package, do not use the comment package}}{}}
+\AtBeginDocument{\eqe@commentChkMsg}
+\AtEndDocument{\includeexersolutions}
+\@ifpackageloaded{web}{\let\load@web\eqe@YES}{%
+ \ifx\load@web\eqe@YES\ifnum\eqe@drivernum=5
+ \PackageInfo{eqexam}{You have not selected a driver %
+ for eqexam. Perhaps the \MessageBreak
+ driver is introduced through web.cfg%
+ }\fi\expandafter\RequirePackage\expandafter[\eqe@webOpts]{web}%
+ \edef\@pdfcreator{\@pdfcreator, The eqexam Package}\fi
+}
+\@ifpackageloaded{exerquiz}{\let\load@exerquiz\eqe@YES}{%
+ \let\symbolchoice\@gobble
+ \ifx\load@exerquiz\eqe@YES\expandafter
+ \RequirePackage\expandafter[\eqe@eqOpts]{exerquiz}[2011/08/30]
+ \let\importdljs\eqe@YES\let\execjs\eqe@YES
+ \fi
+}
+\@ifpackageloaded{eforms}{}{%
+ \let\symbolchoice\@gobble
+}
+\def\eqDvipsone{dvipsone}
+\@ifpackageloaded{hyperref}
+ {\ifx\eqDriverName\eqDvipsone
+ \renewcommand\@pdfviewparams{ null null null}\fi
+ }{\let\textorpdfstring\@firstoftwo}
+\let\eq@online\savedeq@online
+\let\ifeq@solutionsafter\savedifeq@solutionsafter
+\def\ifsolutionsafter{\ifeq@solutionsafter} % user interface
+\let\ifeq@hidesolution\savedifeq@hidesolution
+\let\ifeq@globalshowsolutions\savedifeq@globalshowsolutions
+\let\ifeq@nosolutions\savedifeq@nosolutions
+\let\ifeq@proofing\savedifeq@proofing
+\let\ifeq@nolink\savedifeq@nolink
+\let\ifpreview\savedifpreview
+\let\ifeqforpaper\savedifeqforpaper
+\RequirePackage{calc}
+\RequirePackage{pifont}
+\RequirePackage{array}
+\RequirePackage{verbatim}
+\RequirePackage{multicol}
+\setlength\columnseprule{.4pt}
+\raggedcolumns\multicolsep=3pt
+\newcommand{\setmulticolprob}{%
+ \setlength{\linewidth}{\linewidth+\eqemargin}}
+\edef\eqe@reqPack{\ifeqfortextbook\noexpand\RequirePackage{eso-pic}\else
+\relax\fi}
+\eqe@reqPack
+\ifvspacewithsolns\solutionsAtEndtrue\fi
+\ifanswerkey\solutionsAtEndfalse\fi
+\ifeq@nosolutions\solutionsAtEndfalse\fi
+\ifeq@solutionsafter\solutionsAtEndfalse\fi
+\@ifundefined{eqemargin}{\newlength{\eqemargin}}{}
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\def\eqe@decPointPrb{.}\def\eqe@dpsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+\def\eqe@hspannerPrb{\ }
+\newcommand{\eqexammargin}[2][\normalsize\normalfont\bfseries]{%
+ \settowidth{\eqemargin}{#1#2\eqe@decPointPrb\eqe@hspannerPrb}}
+\eqexammargin{00}
+\def\eqe@hspannerSoln{\ } % space after prob number
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+\newcommand{\eqeSetExamPageParams}{%
+ \setlength{\headheight}{12pt}
+ \setlength{\topmargin}{-.5in}
+ \setlength{\headsep}{20pt}
+ \setlength{\oddsidemargin}{0pt}
+ \setlength{\evensidemargin}{0pt}
+ \setlength{\marginparsep}{11pt}
+ \setlength{\marginparwidth}{35pt}
+ \setlength{\footskip}{11pt}
+}
+\newcommand{\eqExamPageLayout}{%
+ \setlength\textwidth\paperwidth
+ \addtolength{\textwidth}{-2in}
+ \addtolength{\textwidth}{-\oddsidemargin}
+ \setlength\textheight{\paperheight}
+ \addtolength\textheight{-2in}
+ \addtolength\textheight{-\headheight}
+ \addtolength\textheight{-\headsep}
+ \addtolength\textheight{-\topmargin}
+ \addtolength\textheight{-\footskip}
+}
+\ifeqcustomdesign\else
+\eqeSetExamPageParams
+\eqExamPageLayout
+\fi
+\newcommand{\ps@eqExamheadings}
+{%
+ \renewcommand{\@oddhead}{%
+ {\normalfont\normalsize\ifnum\value{page}<2
+ \hfil\else\eqExamRunHead\fi}}%
+ \renewcommand{\@evenhead}{\@oddhead}
+ \renewcommand{\@oddfoot}{\settotalsbox\runExamFooter}
+ \renewcommand{\@evenfoot}{\@oddfoot}
+}
+\raggedbottom
+\newcount\eqe@tempcnta
+\newcounter{eqpointsofar}
+\newcounter{eqpointsthispage}
+\newcounter{eq@numparts}
+\newcounter{eq@count}
+\newtoks\partNames \partNames={}
+\newlength{\eq@tmplengthA}
+\newlength{\eq@tmplengthB}
+\newbox{\eq@pointbox}
+\newlength{\eq@pointboxtotalheight}
+\newlength{\eqetmplengtha}
+\newlength{\eqetmplengthb}
+\def\PointsOnLeft{\def\@reportpoints{1}\let\marginpoints\eqleftmargin}
+\def\PointsOnRight{\def\@reportpoints{2}\relax
+ \let\marginpoints\eqrightmarginbox}
+\def\PointsOnBothSides{\def\@reportpoints{3}\relax
+ \let\marginpoints\eqbothmargins}
+\newif\ifeqe@nopoints \eqe@nopointsfalse
+\def\NoPoints{\if\isInExamEnv\eqe@NO
+ \eqe@nopointstrue\def\@reporttotals{0}\let\totalsbox=\hfil
+ \let\marginpoints\@empty\let\eq@nosummarytotals\eqe@YES\else
+ \PackageWarning{eqexam}{The \string\NoPoints\space ignored;
+ it needs to be executed\MessageBreak outside of an
+ exam environment}\fi}
+\def\TotalsOnLeft{\def\@reporttotals{1}\def\totalsbox{\totalsboxleft}}
+\def\TotalsOnRight{\def\@reporttotals{2}\def\totalsbox{\totalsboxright}}
+\def\noZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@NO}
+\def\allowZeroTotals{\let\eqe@zeroTotalsAllowed\eqe@YES}
+\allowZeroTotals
+\def\NoTotals{\def\@reporttotals{0}\let\totalsbox=\hfil}
+\def\SummaryTotalsOn{\let\eq@nosummarytotals\eqe@NO}
+\def\SummaryTotalsOff{\let\eq@nosummarytotals\eqe@YES}
+\def\eoeTotalOff{\let\eq@parttotals\eqe@NO}
+\def\eoeTotalOn{\let\eq@parttotals\eqe@YES}
+\def\separationruleOn{\let\eqx@separationrule\eqe@YES}
+\def\separationruleOff{\let\eqx@separationrule\eqe@NO}
+\def\AllowFitItIn{\global\let\eq@fititin\eqfititin}
+\def\DoNotFitItIn{\global\let\eq@fititin\@gobble}
+\def\NoSolutions{\eq@nolinktrue\eq@nosolutionstrue
+ \displayworkareatrue}
+\@onlypreamble\NoSolutions
+\def\chngToNoSolns{\solutionsAtEndfalse\answerkeyfalse
+ \eq@proofingfalse\eq@solutionsafterfalse
+ \eq@nosolutionstrue\displayworkareatrue}
+\def\vspacewithkeyOn{\keepdeclaredvspacingtrue}
+\def\vspacewithkeyOff{\keepdeclaredvspacingfalse}
+\newif\ifdispl@yPoints\displ@yPointstrue
+\newcommand{\displayPointsOn}{\displ@yPointstrue}
+\newcommand{\displayPointsOff}{\displ@yPointsfalse}
+\newif\ifl@stDispl@yPoints\l@stDispl@yPointsfalse
+\def\encloseProblemsWith#1{%
+ \ifsolutionsonly\excludecomment{#1}\else
+ \includecomment{#1}\fi
+}
+\providecommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
+\proofingsymbolColor{red}
+\providecommand{\instructionsColor}[1]{\def\@instructionsColor{#1}}
+\instructionsColor{blue}
+\providecommand{\eqCommentsColor}[1]{\def\@eqCommentsColor{#1}}
+\eqCommentsColor{blue}
+\providecommand{\eqCommentsColorBody}[1]{\def\@eqCommentsColorBody{#1}}
+\eqCommentsColorBody{black}
+\providecommand{\universityColor}[1]{\def\webuniversity@color{#1}}
+\universityColor{blue}
+\providecommand{\titleColor}[1]{\def\webtitle@color{#1}}
+\titleColor{black}
+\providecommand{\authorColor}[1]{\def\webauthor@color{#1}}
+\authorColor{black}
+\providecommand{\subjectColor}[1]{\def\websubject@color{#1}}
+\subjectColor{blue}
+\providecommand{\linkcolor}[1]{\def\@linkcolor{#1}}
+\linkcolor{blue}
+\providecommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
+\nolinkcolor{black}
+\providecommand{\eqEndExamTotalColor}[1]{\def\endexamtotal@color{#1}}
+\eqEndExamTotalColor{black}
+\newcommand\fillinColor[1]{\def\eq@fillinColor{#1}}\fillinColor{red}
+\providecommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
+ \def\aeb@sectioncolor{#1}}
+\sectionColor{blue}
+\def\forceNoColorSet{\proofingsymbolColor{black}%
+ \instructionsColor{black}%
+ \eqCommentsColor{black}\universityColor{black}%
+ \titleColor{black}\authorColor{black}%
+ \subjectColor{black}\linkcolor{black}%
+ \nolinkcolor{black}\fillinColor{black}%
+ \instructionsColor{black}\eqCommentsColor{black}%
+ \eqCommentsColorBody{black}%
+ \eqEndExamTotalColor{black}\ckboxColor{}%
+ \ckcirColor{}\if\load@web\eqe@YES
+ \sectionColor{black}\fi
+}
+\ifForceNoColor
+ \AtBeginDocument{\forceNoColorSet}
+\fi
+\newcommand{\forceNoColor}{\ifForceNoColor\else\ForceNoColortrue
+ \AtBeginDocument{\forceNoColorSet}\fi}
+\providecommand{\ckboxColor}[1]{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\ckbox@Color\relax\else
+ \def\ckbox@Color{\color{#1}}\fi}\ckboxColor{}
+\providecommand{\ckcirColor}[1]{\def\eq@rgi{#1}\ifx\eq@rgi\@empty
+ \let\ckcir@Color\relax\else
+ \def\ckcir@Color{\color{#1}}\fi}\ckcirColor{}
+\def\examNum#1{\def\nExam{#1}}
+\examNum{1}
+\def\Exam{\ifAB{\eq@VersionAtext}{\eq@VersionBtext}}
+\def\sExam{\ifAB{\eq@shortVersionAtext}{\eq@shortVersionBtext}}
+\def\VersionAtext#1{\def\eq@VersionAtext{#1}}
+\def\VersionBtext#1{\def\eq@VersionBtext{#1}}
+\def\shortVersionAtext#1{\def\eq@shortVersionAtext{#1}}
+\def\shortVersionBtext#1{\def\eq@shortVersionBtext{#1}}
+\VersionAtext{Exam~\nExam--Version A}
+\VersionBtext{Exam~\nExam--Version B}
+\shortVersionAtext{Exam~\nExam A}
+\shortVersionBtext{Exam~\nExam B}
+\newtoks\eqtemptokena
+\newtoks\eqtemptokenb
+\def\numVersions#1{\ifnum#1>26\def\eq@nVersions{26}%
+ \PackageWarning{eqexam}{The value of \string\numVersions\space is
+ too large. \MessageBreak Choose a natural number less than 27}
+ \else\def\eq@nVersions{#1}\fi}
+\newcommand{\longTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\Exam}{\endlongTitleText}%
+}
+\def\endlongTitleText{l}
+\newcommand{\shortTitleText}[1][]{%
+ \ifeqglobalversion\let\eq@selectedVersion@save\eq@selectedVersion
+ \else\let\eq@selectedVersion@save\relax\fi
+ \uppercase{\def\eqe@localTextTitle{#1}}%
+ \ifx\eqe@localTextTitle\@empty\else
+ \expandafter\forVersion\expandafter{\eqe@localTextTitle}\fi
+ \eqe@contTitleText{\sExam}{\endshortTitleText}%
+}
+\def\endshortTitleText{s}
+\def\eqe@contTitleText#1#2{%
+ \setcounter{eq@count}{0}%
+ \eqtemptokena={}\let\endtitleMarker#2
+ \@gatherTitleText{#1}%
+}
+\def\@gatherTitleText#1#2{%
+ \def\eqe@argii{#2}
+ \if\endtitleMarker\eqe@argii
+ \ifnum\value{eq@count}>\eq@nVersions\let\eqe@next\relax
+ \else\def\eqe@next{\eq@shortTitlesFix{#1}}\fi
+ \else
+ \stepcounter{eq@count}
+ \eqtemptokenb=\expandafter{#2}
+ \xdef#1{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \xdef\sExam{\the\eqtemptokena\expandafter\noexpand
+ \csname v\Alph{eq@count}\endcsname{\the\eqtemptokenb}}
+ \eqtemptokena=\expandafter{#1}
+ \ifnum\value{eq@count}<\eq@nVersions
+ \def\eqe@next{\@gatherTitleText{#1}}%
+ \else
+ \def\eqe@next{%
+ \if\endtitleMarker\endlongTitleText
+ \expandafter\eqe@absorbTokensLong
+ \else
+ \expandafter\eqe@absorbTokensShort
+ \fi
+ }%
+ \fi
+ \fi
+ \eqe@next
+}
+\long\def\eqe@absorbTokensLong#1\endlongTitleText{%
+ \protected@xdef\Exam{\Exam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+\long\def\eqe@absorbTokensShort#1\endshortTitleText{%
+ \protected@xdef\sExam{\sExam}\ifx\eq@selectedVersion@save\relax
+ \eqe@offVersion\else\expandafter\forVersion\expandafter
+ {\eq@selectedVersion@save}\fi}
+\def\eq@shortTitlesFix#1{%
+ \PackageWarning{eqexam}{You have defined an insufficient number
+ of titles\MessageBreak for the number of versions declared in
+ \string\numVersions.\MessageBreak Please fix the problem}%
+ \stepcounter{eq@count}%
+ \if\endtitleMarker\endlongTitleText
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {??---Title \# \the\value{eq@count}---??}%
+ \noexpand\endlongTitleText}
+ \else
+ \edef\eqe@tmp{\noexpand\@gatherTitleText{\noexpand#1}
+ {T\#\the\value{eq@count}??}\noexpand\endshortTitleText}
+ \fi
+ \addtocounter{eq@count}{-1}%
+ \eqe@tmp
+}
+\def\ifAB#1#2{\if\eq@selectedVersion A#1%
+ \else\if\eq@selectedVersion B#2\fi\fi}
+\def\eq@replaceToken#1{#1}
+\newif\ifeqglobalversion \eqglobalversionfalse
+\newif\ifeqlocalversion \eqlocalversionfalse
+\newif\if@templocalversion \@templocalversionfalse
+\def\eqe@initializeMultiVersions{%
+ \let\save@message\message\let\message\@gobble
+ \@tfor\eqe@tmp:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
+ \expandafter\let\csname v\eqe@tmp\endcsname\@gobble
+ \expandafter\excludecomment\expandafter{ver\eqe@tmp}%
+ \expandafter\let\csname Afterver\eqe@tmp Comment\endcsname\relax
+ }\let\message\save@message
+}
+\AtBeginDocument{\let\eqe@initializeMultiVersions\relax}
+\let\eqe@@onVersion\@empty
+\def\eqe@onVersion{\g@addto@macro\eqe@@onVersion}
+\let\eqe@@offVersion\@empty
+\def\eqe@offVersion{\g@addto@macro\eqe@@offVersion}
+\let\eqe@@holdTemp\@empty
+\def\eqe@holdTemp{\g@addto@macro\eqe@@holdTemp}
+\def\eqe@showArg#1{#1}
+\def\eqe@turnOnComment#1{%
+ \csarg\let{v#1}\eqe@showArg
+ \edef\exp@temp{\noexpand\includecomment{ver#1}}\exp@temp
+}
+\def\eqe@turnOffComment#1{%
+ \csarg\let{v#1}\@gobble
+ \edef\exp@temp{\noexpand\excludecomment{ver#1}}\exp@temp
+ \csarg\let{Afterver#1Comment}\relax
+}
+\def\forVersion#1%
+{%
+ \eqe@initializeMultiVersions
+ \let\eqe@@onVersion\@empty
+ \let\eqe@@offVersion\@empty
+ \global\eqglobalversiontrue
+ \setcounter{eq@count}{0}%
+ \uppercase{\edef\eq@selectedVersion{#1}}%
+ \edef\selVersion{\eq@selectedVersion}%
+ \@ifundefined{eq@nVersions}{\PackageInfo{eqexam}{%
+ \string\numVersions\space has not been declared, \MessageBreak
+ taking the number of versions to be 2.}\def\eq@nVersions{2}}{}%
+ \loop
+ \stepcounter{eq@count}%
+ \expandafter\if\Alph{eq@count}\eq@selectedVersion
+ \xdef\eq@nSelectedVersion{\the\value{eq@count}}%
+ \setcounter{eq@count}{27}\fi
+ \ifnum\value{eq@count}<26\repeat
+ \ifnum\eq@nSelectedVersion >\eq@nVersions
+ \PackageError{eqexam}
+ {The value of \string\forVersion
+ \space(\eq@selectedVersion)\MessageBreak
+ exceeds the value of \string\numVersions\space
+ (\eq@nVersions)}%
+ {Decrease the value of \string\forVersion.}%
+ \fi
+ \setcounter{eq@count}{0}%
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{After\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \if#1\alph{eq@count}%
+ \eqe@turnOnComment{\Alph{eq@count}}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOnComment{\Alph{eq@count}}}%
+ \expandafter\eqe@onVersion\expandafter{\temp@exp}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@offVersion\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\eq@nVersions\repeat
+ \let\message\save@message
+}
+\AtEndOfPackage{\numVersions{26}\forVersion{A}%
+ \eq@renditionOptions}
+\def\selectVersion#1#2{% #1 \le #2
+ \xdef\nLocalSelection{#1}\xdef\nLocalVersions{#2}%
+ \let\needsModArith\eqe@YES
+ \ifeqobeylocalversion\ifx\nLocalSelection\@empty\else
+ \let\needsModArith\eqe@NO\fi\fi
+ \edef\exer@solnheadhook{%
+ \string\selectVersion{#1}{#2}}%
+ \let\save@message\message\let\message\@gobble
+ \eqe@@onVersion
+ \ifx\eqe@@holdTemp\@empty\else
+ \eqe@@onVersion\eqe@@holdTemp
+ \let\eqe@@holdTemp\@empty
+ \fi
+\ifx\needsModArith\eqe@YES
+ \ifeqglobalversion\ifnum\eq@nSelectedVersion>\nLocalVersions
+ \eqe@@offVersion
+ {\count0=\eq@nSelectedVersion \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions %\count2=\eq@nSelectedVersion
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }%
+ \ifeqobeylocalversion\else
+ \global\@templocalversiontrue
+ \global\eqobeylocalversiontrue\fi}%
+ \global\let\eqe@@holdTemp\@empty
+ \fi\fi
+\fi
+ \ifeqobeylocalversion
+ \global\eqlocalversiontrue
+ \setcounter{eq@count}{0}%
+ \ifx\nLocalSelection\@empty
+ \def\nLocalSelection{\eq@nSelectedVersion}%
+ \fi
+ \ifnum\nLocalSelection>\nLocalVersions
+ {\count0=\nLocalSelection
+ \count2=\count0
+ \advance\count0by-1 \divide\count0by\nLocalVersions
+ \multiply\count0by\nLocalVersions
+ \advance\count2by-\count0
+ \xdef\nLocalSelection{\the\count2 }}%
+ \fi
+ \let\save@message\message\let\message\@gobble
+ \loop
+ \stepcounter{eq@count}%
+ \csarg\let{Afterver\Alph{eq@count}Comment}\relax
+ \lowercase
+ {%
+ \ifnum\value{eq@count}=\nLocalSelection
+ \eqe@turnOnComment{\Alph{eq@count}}%
+ \edef\temp@exp{\noexpand
+ \eqe@turnOffComment{\Alph{eq@count}}}%
+ \expandafter\eqe@holdTemp\expandafter{\temp@exp}%
+ \else
+ \eqe@turnOffComment{\Alph{eq@count}}%
+ \fi
+ }%
+ \ifnum\value{eq@count}<\nLocalVersions\repeat
+ \let\message\save@message
+ \fi
+ \if@templocalversion\global\eqobeylocalversionfalse\fi
+ \@templocalversionfalse
+ \let\message\save@message
+}
+\@ifpackageloaded{web}{}{%
+ \@ifpackageloaded{hyperref}{}{\let\texorpdfstring\@firstoftwo}%
+ \let\web@save@title\title
+ \def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
+ \def\@web@title[#1]#2{\gdef\webtitle{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdftitle={#2}}}%
+ \def\webArg{#1}\ifx\webArg\@empty\gdef\shortwebtitle{#2}\else
+ \gdef\shortwebtitle{#1}\fi\web@save@title{#2}}
+ \let\web@saved@author\author
+ \def\author#1{\gdef\webauthor{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfauthor={#1}}}%
+ \web@saved@author{#1}}
+ \def\subject{\@ifnextchar[{\@subject}{\@subject[]}}
+ \def\@subject[#1]#2{\def\webArg{#1}%
+ \ifx\webArg\@empty\gdef\shortwebsubject{#2}\else
+ \gdef\shortwebsubject{#1}\fi\gdef\websubject{#2}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfsubject={#2}}}}
+ \def\email#1{\gdef\webemail{#1}}
+ \def\keywords#1{\gdef\webkeywords{#1}%
+ \@ifundefined{hypersetup}{}{\hypersetup{pdfkeywords={#1}}}}
+ \def\university#1{\gdef\webuniversity{#1}}
+ \def\copyrightyears#1{\gdef\webcopyrightyears{#1}}
+ \def\version#1{\gdef\web@version@value{#1}%
+ \edef\webversion{\ifx\web@version@value\@empty\else
+ \noexpand\web@versionlabel\noexpand\
+ \noexpand\web@version@value\fi}%
+ }
+ \let\web@version@value\@empty
+ \def\versionLabel#1{\def\web@versionlabel{#1}}
+ \versionLabel{Version}
+ \def\web@toc{Table of Contents}
+ \def\web@continued{cont.}
+ \title{}\author{}\email{}\subject{}\keywords{}\university{}
+ \providecommand{\optionalPageMatter}[2][]{%
+ \def\optionalpagematter{#2}}
+ \def\optionalpagematter{}
+}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+\def\duedate#1{\def\theduedate{#1}}
+\duedate{}
+\newcommand\thisterm{%
+ \ifnum\month<6Spring\else
+ \ifnum\month<8Summer\else
+ \ifnum\month>8Fall\else
+ \ifnum\day>25Fall\else
+ Summer\fi\fi\fi\fi
+}
+\newcommand{\examAnsKeyLabel}[1]{%
+ \def\@examAnsKeyLabel{\ifanswerkey\space #1\fi}}
+\examAnsKeyLabel{Answer Key}
+\newcommand\examNameLabel[1]{\gdef\@examNameLabel{#1\@examAnsKeyLabel}}
+\examNameLabel{Name:}
+\newcommand{\idinfoHighlight}[1]{\def\eqe@idinfohl{#1}}
+\idinfoHighlight{\underbar}
+\newcommand\eqExamName[2][]{%
+ \def\eqExamName@argi{#1}\def\eqExamName@argii{#2}}
+\def\eq@ExamName{\bgroup
+ \settowidth\eq@tmplengthA{\@examNameLabel\ }%
+ \@tempdima=\eqExamName@argii\relax
+ \advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqExamName@argii][l]{\@examNameLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqExamName@argi]%
+ {\@tempdima}{IdInfo.Name}\egroup}
+\eqExamName[\Ff\FfRequired]{2.25in}
+\newcommand\examSIDLabel[1]{\gdef\@examSIDLabel{#1}}
+\examSIDLabel{SID:}
+\newcommand\eqSID[2][]{\def\eqSID@argi{#1}\def\eqSID@argii{#2}}
+\def\eq@SID{\bgroup\settowidth\eq@tmplengthA{\@examSIDLabel\ }%
+ \@tempdima=\eqSID@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\eqSID@argii][l]{\@examSIDLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqSID@argi]%
+ {\@tempdima}{IdInfo.SID}\egroup}
+\eqSID[\Ff\FfRequired]{2.25in}
+\newcommand\examEmailLabel[1]{\gdef\@examEmailLabel{#1}}
+\examEmailLabel{Email:}
+\newcommand\eqEmail[2][]{%
+ \def\eqExam@argi{#1}\def\eqEmail@argii{#2}}
+\gdef\eq@Email{\bgroup\settowidth\eq@tmplengthA{\@examEmailLabel\ }%
+ \@tempdima=\eqEmail@argii\relax\advance\@tempdima by-\eq@tmplengthA
+ \underbar{\makebox[\eqEmail@argii][l]{\@examEmailLabel}}%
+ \expandafter\insTxtFieldIdInfo\expandafter[\eqEmail@argi]%
+ {\@tempdima}{IdInfo.email}\egroup}
+\eqEmail{2.25in}
+\def\insTxtFieldIdInfo[#1]#2#3{%
+ \@ifundefined{@quiz}{}{\if\eq@online\eqe@YES
+ \ifeq@nosolutions\ifeq@solutionsafter\else
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}#1]{#3}{#2}{11bp}}}%
+ \fi\fi\fi
+ }%
+}
+\def\SubmitInfo#1#2{%
+ \def\EqExam@SubmitURL{#1}\def\@EmailInstr{#2}%
+}
+\def\EmailCourseName#1{\def\@EmailCourseName{#1}}
+\EmailCourseName{\websubject}
+\def\EmailExamName#1{\def\@EmailExamName{#1}}
+\EmailExamName{\webtitle}
+\def\EmailSubject#1{\def\@EmailSubject{#1}}
+\EmailSubject{}
+\def\ServerRetnMsg#1{\def\@ServerRetnMsg{#1}}
+\ServerRetnMsg{}
+\def\SubmitButtonLabel#1{\def\@SubmitButtonLabel{#1}}
+\SubmitButtonLabel{Submit}
+\let\priorSubmitJS\@gobble
+\let\postSubmitJS\@empty
+\def\SubmitButton
+{%
+ \ifx\use@email\eqe@YES\ifeq@nosolutions\ifeq@solutionsafter\else
+ \makebox[0pt][l]{\pushButton
+ [\CA{\@SubmitButtonLabel}\A{\JS{%
+ var _eqEok2Submit = true;\r
+ var aSubmitFields = new Array("eqexam", "IdInfo");\r
+ \priorSubmitJS\r
+ if(_eqEok2Submit) this.submitForm("\EqExam@SubmitURL",
+ true, false, aSubmitFields);\r
+ \postSubmitJS
+ }}]{Submit}{1.5in}{16bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailInstr}
+ \V{\@EmailInstr}]{IdInfo.mailTo}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailCourseName}
+ \V{\@EmailCourseName}]{IdInfo.courseName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailExamName}
+ \V{\@EmailExamName}]{IdInfo.examName}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@EmailSubject}
+ \V{\@EmailSubject}]{IdInfo.subject}{11bp}{11bp}}%
+ \makebox[0pt][l]{\textField[\F\FHidden\DV{\@ServerRetnMsg}
+ \V{\@ServerRetnMsg}]{IdInfo.retnmsg}{11bp}{11bp}}%
+ \fi\fi\fi
+}
+\def\thequizno{\if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentFormat{%
+ \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\def\linkContentWrapper{(\hfil\linkContentFormat\hfil)}%
+\def\Ans@r@l@Defaults
+{%
+ \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}
+ \textSize{12}\textColor{0 g}
+}
+\newcommand{\optsRadioBtnf}[1]{\def\eqe@optsRadiof{#1}}
+\newcommand{\optsRadioBtnl}[1]{\def\eqe@optsRadiol{#1}}
+\let\eqe@optsRadiof\@empty\let\eqe@optsRadiol\@empty
+\def\eqExam@Ans@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else\ifwithinsoldoc
+ \stepcounter{quizno}\else\refstepcounter{quizno}\fi\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
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{%
+ \radio@@Button{\presets{\eqe@optsRadiol}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\edef\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithinsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi%
+ \fi
+ }\insertGrayLetters
+ \radio@@Button{\presets{\eqe@optsRadiof}}%
+ {\fieldName}{\RadioFieldSize}%
+ {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton\insert@circlesymbol}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+\newcommand{\optsCkBxf}[1]{\def\eqe@optscbf{#1}}
+\newcommand{\optsCkBxl}[1]{\def\eqe@optscbl{#1}}
+\let\eqe@optscbl\@empty\let\eqe@optscbf\@empty
+\def\eqExam@Ans@ck@sq@l{\leavevmode
+ \if\eq@listType1\stepcounter{quizno}\else
+ \ifwithinsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\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
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }%
+ \if\eq@online\eqe@YES\relax
+ \makebox[0pt][l]{\check@@Box{\presets{\eqe@optscbl}}{\fieldName}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton\every@qRadioButton}}%
+ \else
+ \edef\@linkcolor{\@nolinkcolor}%
+ \fi
+ \ifeq@nosolutions\def\@linkcolor{\@nolinkcolor}\fi
+ \textcolor{\@linkcolor}{\makebox[\eq@tmpdima]{\link@@Content}}%
+ \Ans@proofing{\eq@tmpdima}%
+ \eq@hspanner\ignorespaces
+}
+\def\eqExam@Ans@ck@sq@f{\if\eq@listType1\stepcounter{quizno}\else
+ \ifwithinsoldoc\stepcounter{quizno}\else\refstepcounter{quizno}\fi\fi
+ \PBS\raggedright\settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \if\eq@online\eqe@NO\previewtrue
+ \insertGrayLetters
+ \Ans@sq@f@driver
+ \else
+ \ifanswerkey\previewtrue
+ \Ans@sq@f@driver
+ \else
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.\theeqquestionnoi.%
+ part\thepartno.\alph{quizno}%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.\alph{quizno}%
+ \fi
+ }\insertGrayLetters
+ \mbox{\check@@Box{\presets{\eqe@optscbf}}{\fieldName}%
+ {\RadioFieldSize}{\RadioFieldSize}%
+ {\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
+ \every@sqRadioButton}}%
+ \fi
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+ \eq@hspanner\ignorespaces
+}
+\def\optsMlTextField#1{\def\eqe@optsmltf{#1}}
+\let\eqe@optsmltf\@empty
+\def\eqExamPriorVspace#1{%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.solution%
+ \else
+ eqexam.\curr@quiz.\theeqquestionnoi.solution%
+ \fi
+ }%
+ \nobreak\noindent\textField[\BC{}\presets{\eqe@optsmltf}
+ \Ff\FfMultiline]{\fieldName}{\linewidth}{#1}\@gobble
+}
+\@ifpackageloaded{exerquiz}{%
+ \let\Ans@sq@l\eqExam@Ans@sq@l
+ \let\Ans@sq@f\eqExam@Ans@sq@f
+ \let\Ans@ck@sq@l\eqExam@Ans@ck@sq@l
+ \let\Ans@ck@sq@f\eqExam@Ans@ck@sq@f
+ \def\eqexheader@wrapper{\makebox[0pt][r]{%
+ \hypertarget{qex.\the@exno}{\eqexheader}}}%
+ \if\eq@online\eqe@YES\relax
+ \newcounter{@cntfillin}%
+ \let\eqPriorVspace\eqExamPriorVspace
+ \fi
+}%
+{%
+ \input{eqalone.def}
+ \input{eqexam.def}
+ \@ifl@ter{def}{eqexam}{\eqexamdefReq}{}
+ {\PackageWarningNoLine{eqexam}
+ {This version of eqexam requires eqexam.def\MessageBreak
+ dated \eqexamdefReq\space or later}}
+ \def\eqexheader@wrapper{\makebox[0pt][r]{\eqexheader}}
+}
+\AtBeginDocument{%
+ \ifvspacewithsolns\writeAllAnsAtEnd\else
+ \ifeqfortextbook\writeAllAnsAtEnd\else
+ \writeWithSolDocTrue\fi\fi
+}
+\vspacewithkeyOff
+\def\selectedMC{\useRectForMC}
+\ifallowcircmc
+ \font\eqe@lcir=lcircle10 at 12pt
+ \bgroup
+ \setbox0=\hbox{\eqe@lcir h}
+ \xdef\eqe@cirDiam{\the\wd0}
+ \@tempdima=.5\wd0
+ \xdef\eqe@cirRadius{\the\@tempdima}
+ \egroup
+ \def\circ@Glyph#1#2{\hbox{\smash{\raisebox{\eqe@cirRadius}%
+ {\makebox[\eqe@cirDiam]{\llap{\ckcir@Color
+ \rlap{\eqe@lcir#1}\hskip#2\relax}}}}}}
+ \def\eqe@BboxCirc#1#2{\hbox{\ckcir@Color{\circ@Glyph{h}{0pt}}}}
+ \def\circProofingForCirc{\centerWidget\RadioFieldSize
+ \lower\eqcenterWidget\circ@Glyph{x}{1.4pt}}
+ \if\eq@online\eqe@YES
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \def\selectedMC{\useCircForMC}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+ \else % if not online
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc}
+ \def\selectedMC{\useCircForMC}
+ \fi
+ \def\useCircForProof{\symbolchoice{circle}%
+ \proofingsymbol{\circProofingForCirc}}
+\else
+ \if\eq@online\eqe@YES
+ \def\useCircForMC{\let\Bbox\eqe@BboxCirc\useMCCircles}
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox\useMCRects}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect\useMCRects}}
+ \else
+ \@ifundefined{eqe@BboxRect}
+ {\def\useRectForMC{\let\Bbox\ef@Bbox}}
+ {\def\useRectForMC{\let\Bbox\eqe@BboxRect}}
+ \def\useCircForMC{\useRectForMC}
+ \def\selectedMC{\useRectForMC}
+ \fi
+ \let\useCircForProof\relax
+\fi
+\newif\ifuserectforms
+\def\useRectForMS{\userectformstrue}
+\def\useCircForMS{\userectformsfalse}
+\newcommand{\useCheckForProof}{\symbolchoice{check}%
+ \proofingsymbol{\ding{52}}}
+\useCheckForProof
+\newcommand{\useCrossForProof}{\symbolchoice{cross}%
+ \proofingsymbol{\raisebox{-1pt}{\rlap{\kern-1pt\Large\ding{56}}}}}
+\def\MCcolor{black}
+\def\Ans@sq@l@driver{\edef\@linkcolor{\MCcolor}%
+ \Rect{\makebox[\eq@tmpdima]{\linkContentWrapper}}%
+ \Ans@proofing{\eq@tmpdima}%
+}
+\def\Ans@sq@f@driver{%
+ \centerWidget\RadioFieldSize
+ \leavevmode\lower\eqcenterWidget\Bbox %\eqe@Bbox
+ {\RadioFieldSize}{\RadioFieldSize}%
+ \Ans@proofing{\RadioFieldSize}%
+}
+\def\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
+\def\sqsllabel{\eq@sqsllabel}
+\let\quiz@solns\ex@solns
+\newcommand{\preExamSolnHead}{\goodbreak\noindent}
+\newcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\newcommand{\postExamSolnHead}{\par\medskip}
+\@ifundefined{ifOKToWriteExamData}{\newif\ifOKToWriteExamData
+ \OKToWriteExamDatatrue}{}
+\newcommand{\writeToSolnFile}[1]{%
+ \ifsolutionsonly\else\ifOKToWriteExamData
+ \let\quiz@solns\ex@solns
+ \set@display@protect
+ \eqe@IWO\quiz@solns{#1}%
+ \set@typeset@protect
+ \fi\fi}
+\let\writeT@SolnFile\writeToSolnFile
+\def\eqe@writetoSolns#1{% dpsD17
+ \ifsolutionsonly\else
+ \ifOKToWriteExamData
+ \set@display@protect
+ \eqe@IWO\quiz@solns{\string\preExamSolnHead
+ \string\examSolnHeadFmt{#1}\string\postExamSolnHead}%
+ \set@typeset@protect\fi\fi}
+\def\eqe@writetoAux#1{%
+ \set@display@protect
+ \eqe@IWO\@auxout{#1}%
+ \set@typeset@protect}
+\def\Ans@sq@l@Actions{}
+\def\Ans@sq@f@Actions{}
+\def\Ans@proofing
+#1{%
+ \ifeq@proofing\if\Ans@choice1\relax
+ \llap{\rlap{\,\@proofingsymbol}\hskip#1\relax}%
+ \fi\fi
+}
+\def\eq@ExamLastPage{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOnExam}{\csname eqExamLastPage\endcsname}
+\newcommand{\nPagesOfQues}{\ifvspacewithsolns
+ \csname eqExamQuesLastPage\endcsname\else
+ \csname eqExamLastPage\endcsname\fi}
+\newcommand{\nPagesOfSols}{\def\eqExamNumPagesSolns{0}%
+ \csarg\ifx{eqExamLastPage}\relax\else
+ \csarg\ifx{eqExamLastPage}\relax\else
+ {\count\z@=\nPagesOnExam\relax\advance
+ \count\z@-\nPagesOfQues\relax
+ \xdef\eqExamNumPagesSolns{\the\count\z@}}\fi\fi
+ \eqExamNumPagesSolns}
+\newcommand{\lastPageOfExam}[1]{\pageref{#1PageEnd}}
+\newcommand{\firstPageOfExam}[1]{\pageref{#1PageBegin}}
+\newcommand{\eqe@defNumRefii}[1]{%
+ \@ifundefined{hyperref}{\let\@getsecondOf\@secondoftwo}
+ {\let\@getsecondOf\@secondoffive}%
+ \@ifundefined{r@#1}{%
+ \csarg\gdef{nRefii@#1}{0}}{%
+ \expandafter\xdef\csname nRefii@#1\endcsname
+ {\expandafter\expandafter\expandafter
+ \@getsecondOf\csname r@#1\endcsname}%
+ }%
+}
+\def\eqe@numRefii#1{%
+ \csarg\ifx{nRefii@#1}\relax 0\else
+ \@nameuse{nRefii@#1}\fi}
+\newcommand{\numLastPageOfExam}[1]{\eqe@numRefii{#1PageEnd}}
+\newcommand{\numFirstPageOfExam}[1]{\eqe@numRefii{#1PageBegin}}
+\newcommand{\makeRefsNums}{%
+ \@ifundefined{thePartNames}{}{\begingroup
+ \def\\##1{\PackageInfo{eqexam}{processing exam: ##1}%
+ \eqe@defNumRefii
+ {##1PageEnd}\eqe@defNumRefii{##1PageBegin}}%
+ \thePartNames
+ \endgroup}%
+}
+\AtBeginDocument{\makeRefsNums}
+\newcommand{\lheadeqe}[1]{\def\eq@lhead{#1}}
+\lheadeqe{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadeqe}[1]{\def\eq@chead{#1}}
+\cheadeqe{-- Page \arabic{page} of {\nPagesOnExam} --}
+\newcommand{\rheadeqe}[1]{\def\eq@rhead{#1}}
+\rheadeqe{\eq@ExamName}
+\@ifpackageloaded{fancyhdr}{}{%
+ \let\lhead\lheadeqe
+ \let\chead\cheadeqe
+ \let\rhead\rheadeqe
+}
+\newcommand{\runExamHeader}{\eq@lhead\hfill\eq@chead\hfill\eq@rhead}
+\newcommand\eqExamRunHead{%
+ \addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeader}%
+}
+\newcommand{\lfooteqe}[1]{\def\eq@lfoot{#1}}
+\lfooteqe{}
+\newcommand{\cfooteqe}[1]{\def\eq@cfoot{#1}}
+\cfooteqe{}
+\newcommand{\rfooteqe}[1]{\def\eq@rfoot{#1}}
+\rfooteqe{}
+\newcommand{\runExamFooter}{\eq@lfoot\hfill\eq@cfoot\hfill\eq@rfoot}
+\newcommand{\lheadSol}[1]{\def\eq@lheadSol{#1}}
+\lheadSol{\shortwebsubject/\shortwebtitle}
+\newcommand{\cheadSol}[1]{\def\eq@cheadSol{#1}}
+\cheadSol{-- Page \arabic{page} of {\eq@ExamLastPage} --}
+\newcommand{\rheadSol}[1]{\def\eq@rheadSol{#1}}
+\rheadSol{SOLUTIONS}
+\newcommand{\runExamHeaderSol}
+ {\eq@lheadSol\hfill\eq@cheadSol\hfill\eq@rheadSol}
+\def\eq@solutionshook
+{%
+ \gdef\eqExamRunHead{\addtolength\textwidth{\oddsidemargin}%
+ \noindent\hspace*{-\oddsidemargin}\makebox[\textwidth]
+ {\runExamHeaderSol}}%
+}
+\newcommand\maketitledesign
+{%
+ \makebox[\textwidth]{\normalsize
+ \shortstack[l]{\strut\websubject\\\@date}\hfill
+ \shortstack[c]{\webtitle\\\strut\@altTitle}\hfill
+ \shortstack[l]{\strut\eq@ExamName\\\webauthor}}%
+}
+\def\altTitle#1{\def\@altTitle{#1}}
+\let\@altTitle\@empty
+\def\eqemaketitle
+{%
+ \EQEcalculateAllTotals
+ \begingroup
+ \noindent%\hspace*{-\oddsidemargin}%
+ \raisebox{.7in}[0pt][0pt]{\SubmitButton}%
+ \maketitledesign
+ \endgroup
+}
+\ifeqfortextbook
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+\else
+ \if@eqeuseclassmaketitle
+ \@ifpackageloaded{web}{\let\maketitle\web@save@maketitle}{}%
+ \else
+ \let\maketitle\eqemaketitle
+ \fi
+\fi
+\newcommand\placeCoverPageLogo[3]{%
+ \def\eqe@insertLogo{\hbox to0pt{%
+ \hspace*{#1}\smash{\raisebox{#2}{#3}}\hss}}}
+\let\eqe@insertLogo\relax
+\def\eqexcoverpage{%
+ \begingroup
+ \pagenumbering{roman}
+ \eqe@insertLogo
+ \eqexcoverpagedesign
+ \endgroup\newpage
+ \pagenumbering{arabic}
+}
+\newcommand{\coverpagesubject}[1]{\def\coverpage@subject{#1}}
+\let\coverpage@subject\@empty
+\def\eqexamsubject{\ifx\coverpage@subject\@empty\websubject
+ \else\coverpage@subject\fi}
+\newcommand{\coverpageUniversityFmt}[1]{%
+ \def\eqex@coverpageUniversityFmt{#1}}
+\coverpageUniversityFmt{\bfseries\large}
+\newcommand{\coverpageSubjectFmt}[1]{%
+ \def\eqex@coverpageSubjectFmt{#1}}
+\coverpageSubjectFmt{\bfseries\large}
+\newcommand{\coverpageTitleFmt}[1]{%
+ \def\eqex@coverpageTitleFmt{#1}}
+\coverpageTitleFmt{\bfseries\large}
+\newcommand\cpCID[1]{\def\cp@@CID{#1}}
+\let\cp@@CID\@empty
+\newcommand{\cpSetCIDWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cpCID@argi{\the\@tempdima}\egroup}
+\def\cp@CID{\bgroup\settowidth\eq@tmplengthA{\cp@@CID}%
+ \@tempdima=\cpCID@argi\relax
+ \advance\@tempdima-\eq@tmplengthA
+ \eqe@idinfohl{\makebox[\cpCID@argi][l]{\cp@@CID}}\egroup}
+\cpSetCIDWidth{2.25in}
+\def\eqeSumryVert{\def\eqe@SumryVert{\par\vfill}%
+ \let\eqe@SumryHoriz\relax
+ \def\eqe@@SumryVert{\vspace{\stretch{-1}}\bigskip}}
+\def\eqeSumryHoriz{\def\eqe@SumryHoriz{\hfill}\let\eqe@SumryVert\relax
+ \let\eqe@@SumryVert\relax}
+\eqeSumryHoriz
+\def\eqe@coverPageNaming{0}
+\newcommand{\useUIPartNames}{\def\eqe@coverPageNaming{1}}
+\newcommand{\useCustomPartNames}{\def\eqe@coverPageNaming{2}}
+\newcommand{\customNaming}[2]{\@namedef{userCustom#1}{#2}}
+\newcommand{\cpSetNameAndIDWidth}[1]{\bgroup
+ \setlength{\@tempdima}{#1}%
+ \xdef\cp@SetNameAndIDWidth{\the\@tempdima}\egroup}
+\cpSetNameAndIDWidth{.45\textwidth}
+\newcommand{\cpEnclNameAndID}[1]{\def\cp@EnclNameAndID{#1}}
+\let\cp@EnclNameAndID\@empty
+\newcommand{\cpSetHghtFrstLn}[1]{\def\cp@HghtFrstLn{#1}}
+\def\cp@HghtFrstLn{0pt}
+\def\cp@setHghtFrstLn{\rule[\cp@HghtFrstLn]{0pt}{0pt}}
+\newcommand\cpNameAndID{\noindent
+ \edef\eqExamName@argii{\cp@SetNameAndIDWidth}%
+ \edef\eqSID@argii{\cp@SetNameAndIDWidth}%
+ \edef\cpCID@argi{\cp@SetNameAndIDWidth}%
+ \cp@EnclNameAndID{\parbox[b]{\cp@SetNameAndIDWidth}{\parindent0pt
+ \cp@setHghtFrstLn\eq@ExamName\\[2ex]
+ \ifx\cp@@CID\@empty\eq@SID\else\cp@CID\fi\\[2ex]
+ \ifx\use@email\eqe@YES\eq@Email\\[2ex]\fi
+ \textcolor{\webauthor@color}{\webauthor}, \@date\vskip0pt}}}
+\newcommand{\eqexcoverpagedesign}
+{%
+ \begingroup
+ \parindent0pt
+ \thispagestyle{empty}
+ \vspace*{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageUniversityFmt
+ \color{\webuniversity@color}%
+ \centering\webuniversity}}
+ \par\vspace{.1\textheight}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageSubjectFmt
+ \color{\websubject@color}%
+ \centering\eqexamsubject}}
+ \par\vspace{\bigskipamount}
+ \noindent%\hspace*{-\oddsidemargin}%
+ \makebox[\linewidth]{\parbox{\linewidth}%
+ {\eqex@coverpageTitleFmt
+ \color{\webtitle@color}%
+ \centering\webtitle}}
+ \par\vspace{\stretch{1}}
+ \optionalpagematter
+ \par\vspace{\stretch{1}}\cpNameAndID
+ \eqe@SumryHoriz\eqe@SumryVert
+ \sumryAnnots
+ \endgroup
+}
+\newcommand{\cpSumryHeader}{\textbf{Exam Record}}
+\newcommand{\cpSumryPts}{\,\text{pts}}
+\newcommand{\cpSumryPage}{Page}
+\newcommand{\cpSumryTotal}{Total:}
+\newcommand{\cpSumryGrade}{Grade:}
+\newcommand{\cpSetSumryWidth}[1]{\bgroup\setlength{\@tempdima}{#1}
+ \xdef\cp@SetSumryWidth{\the\@tempdima}\egroup}
+\cpSetSumryWidth{.5\textwidth}
+\newcommand{\cpUsefbox}{\let\cp@Usefbox\fbox}
+\cpUsefbox
+\newcommand{\cpNofbox}{\let\cp@Usefbox\mbox}
+\newcommand{\cprulelength}{1.5in}
+\def\cp@IsertNaming#1{%
+ \ifcase\eqe@coverPageNaming
+ #1\or\@nameuse{userFriendly#1}\or
+ \@nameuse{userCustom#1}\else#1\fi
+}
+\newcommand{\cpSumrybyparts}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \count2=0
+ \medskip
+ \cpSumryHeader\par\parskip\bigskipamount
+ \def\\##1{\advance\count2by\csname ##1total\endcsname
+ \underbar{\makebox[0pt][l]{%
+ \cp@IsertNaming{##1}}\hspace*{\eqe@cprulelength}}%
+ / $\eqe@ptsFmt{\csname ##1total\endcsname}%
+ \cpSumryPts$\par}\thePartNames
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$ \par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+\newcommand{\cpSumrybypages}{%
+ \eqe@@SumryVert\cp@Usefbox{%
+ \ifx\cp@Usefbox\fbox
+ \def\cp@sumryWdth{\cp@SetSumryWidth-2\fboxrule-2\fboxsep}\else
+ \def\cp@sumryWdth{\cp@SetSumryWidth}\fi
+ \begin{minipage}[b]{\cp@sumryWdth}\kern0pt
+ \begin{flushleft}
+ \setlength{\eqetmplengtha}{\cprulelength}%
+ \edef\eqe@cprulelength{\the\eqetmplengtha}%
+ \csarg\ifx{NumberOfParts}\relax
+ \else\medskip\count0=0\relax\count2=0\relax
+ \cpSumryHeader\par\parskip\bigskipamount
+ \ifsolutionsAtEnd
+ \@ifundefined{eqExamQuesLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamQuesLastPage}}}%
+ \else
+ \@ifundefined{eqExamLastPage}{\def\NUMPAGES{0}}
+ {\edef\NUMPAGES{\@nameuse{eqExamLastPage}}}%
+ \fi
+ \@whilenum\count0<\NUMPAGES\relax\do{%
+ \advance\count0by1\relax
+ \@ifundefined{Page\the\count0total}{\count4=0\relax}
+ {\count4=\@nameuse{Page\the\count0total}\relax}%
+ \csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\advance\count4by\csname%
+ Page\the\count0spilltotal\endcsname\relax\fi
+ \advance\count2by\count4\relax\underbar{%
+ \makebox[0pt][l]{\cpSumryPage~\the\count0}%
+ \hspace*{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count4\relax}%
+ \cpSumryPts$\csarg\ifx{Page\the\count0spilltotal}\relax
+ \else\ $(\@nameuse{Page\the\count0spilltotal}%
+ \cpSumryPts+\@nameuse{Page\the\count0total}%
+ \cpSumryPts)$\fi\par
+ }% while
+ \fi
+ \underbar{\makebox[0pt][l]{\cpSumryTotal}%
+ \hspace{\eqe@cprulelength}}/
+ $\eqe@ptsFmt{\the\count2\relax}\cpSumryPts$\par
+ \underbar{\makebox[0pt][l]{\cpSumryGrade}%
+ \hspace{\eqe@cprulelength}}%
+ \ifx\cp@Usefbox\fbox\medskip\fi
+ \end{flushleft}\kern0pt
+ \end{minipage}}\par
+}
+\AtBeginDocument{\eqex@coverpage}
+\def\@marktotalvalue{\global\let\eqe@innermarkpts\relax
+ \if@bypasseqexamheading\else\def\eqe@marktxt{%
+ \theeqpointvalue\@nameuse{eqExam}\theeq@numparts}%
+ \ifx\endparts\endexercise@parts@tabular
+ \xdef\eqe@innermarkpts{\noexpand\mark{\eqe@marktxt}}\else
+ \mark{\eqe@marktxt}\fi\fi}
+\def\probvalue#1#2{\addtocounter{eqpointvalue}{#1}%
+ \ifdispl@yPoints\marginpoints{#1}{#2}\fi
+ \@marktotalvalue}
+\newcommand{\widthtpboxes}{35pt}
+\newcommand{\marginboxdesign}[2][]{%
+ \parbox{\widthtpboxes}{\tabcolsep=0pt\relax
+ \begin{tabular}{|c|}\hline
+ \vrule height15pt width0pt#1\\\hline
+ \makebox[\widthtpboxes-2\fboxrule]{#2}\\\hline
+ \end{tabular}%
+ }%
+}
+\newcommand{\eqleftmarginbox}[2]{\makebox[0pt][r]{%
+ \setlength\tabcolsep{0pt}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign{\marginpointsboxtext{#1}{#2}}%
+ }\hspace*{\marginparsep}\hspace*{\eqemargin}}%
+}
+\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
+\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
+\newcommand{\eachLabel}[1]{\def\eqeachLabel{#1}}\eachLabel{ea.}
+\newcommand{\pointsLabel}[1]{%
+ \def\eqpointsLabel{#1}}\pointsLabel{points}
+\newcommand{\pointLabel}[1]{%
+ \def\eqpointLabel{#1}}\pointLabel{point}
+\def\pointsAsText{\def\eqe@ptsFmt{\text}}
+\let\eqe@ptsFmt\relax
+\@onlypreamble\pointsAsText
+\newcommand{\marginpointtext}[2]{\ifnum#2=0\leftmarginPtsTxt{#1}\else
+ \leftmarginPtsEaTxt{#2}\fi
+}
+\newcommand{\leftmarginPtsTxt}[1]{(\small$\eqe@ptsFmt{#1}^{\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}}$)}
+\newcommand{\leftmarginPtsEaTxt}[1]{(\small$\eqe@ptsFmt{#1}_{\text{%
+ \eqeachLabel}}^{\text{\ifnum#1=1\relax\eqptLabel\else
+ \eqptsLabel\fi}}$)}
+\newcommand{\eqleftmargin}[2]{\makebox[0pt][r]{\marginpointtext{#1}{#2}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin}%
+ \hspace*{\@tempdima}}}
+\newcommand{\marginpointsboxtext}[2]{\small$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+\def\@insertPointsBoxPDF
+{
+ \def\fieldName{pointsgiven.\curr@quiz.page\thepage.%
+ \theeqquestionnoi}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\def\@insertTotalsBoxPDF
+{
+ \def\fieldName{pagetotals.\curr@quiz.page\thepage}%
+ \calcTextField[\F\FHidden\BC{}\Q1\textColor{1 0 0 rg}
+ \AA{\AACalculate{AFSimple_Calculate("SUM",
+ new Array("pointsgiven.\curr@quiz.page\thepage"));}}]
+ {\fieldName}{\widthtpboxes}{15pt}%
+}
+\ifx\use@email y
+ \let\insertPointsBoxPDF\@insertPointsBoxPDF
+ \let\insertTotalsBoxPDF\@insertTotalsBoxPDF
+\else
+ \let\insertPointsBoxPDF\@empty
+ \let\insertTotalsBoxPDF\@empty
+\fi
+\newcommand{\eqrightmarginbox}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+ \setlength{\@tempdima}{\textwidth-\eqemargin+\marginparsep}%
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertPointsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+\newcommand{\eqeomarginboxright}[2]{\makebox[0pt][l]{%
+ \setlength\tabcolsep{0pt}%
+ \setlength{\@tempdima}{\textwidth+\marginparsep-\parindent}%
+ \hspace*{\@tempdima}%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }\hfil
+ }%
+}
+\newcommand{\eqeomarginboxleft}[2]{\noindent\makebox[0pt][r]{%
+ \raisebox{-.5\height}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]%
+ {\marginpointsboxtext{#1}{#2}}%
+ }{\settowidth{\@tempdimb}{\eqe@hspannerPrb}%
+ \setlength{\@tempdima}{\marginparsep+\eqemargin-\@tempdimb}%
+ \hspace*{\@tempdima}}}\hfil
+}
+\newcommand{\measurePtBoxHt}{\setbox\eq@pointbox\hbox{%
+ \marginboxdesign{\marginpointsboxtext{00}{0}}%
+ }\setlength\eq@pointboxtotalheight{.5\ht\eq@pointbox}%
+ \xdef\halfHtPtBox{\the\eq@pointboxtotalheight}%
+ \setlength\eq@pointboxtotalheight{\dp\eq@pointbox+\ht\eq@pointbox}%
+ \xdef\totHtPtBox{\the\eq@pointboxtotalheight}%
+ \xdef\dpPtBox{\the\dp\eq@pointbox}%
+ \xdef\htPtBox{\the\ht\eq@pointbox}%
+}
+\measurePtBoxHt
+\newcommand{\eqbothmargins}[2]{\eqleftmargin{#1}{#2}%
+ \eqrightmarginbox{#1}{#2}}
+\def\lastparttotaled{0}
+\def\parsetotals#1\eqExam#2\end{\def\argi{#1}\def\argii{#2}}
+\def\stripeqExam#1\eqExam{\def\argii{#1}}
+\def\settotalsbox{%
+ \expandafter\parsetotals\botmark\eqExam\end
+ \ifx\argi\@empty\hfil
+ \else\ifx\argii\@empty\hfil
+ \else
+ \expandafter\stripeqExam\argii
+ \setcounter{eqpointsthispage}{\argi}%
+ \addtocounter{eqpointsthispage}{-\value{eqpointsofar}}%
+ \setcounter{eqpointsofar}{\argi}%
+ \xdef\lastparttotaled{\argii}%
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{Page\thepage total}%
+ {\theeqpointsthispage}}%
+ \totalsbox
+ \fi
+ \fi
+}
+\newcommand\totalsboxtext{\small$
+ \eqe@ptsFmt{\theeqpointsthispage}\,\text{%
+ \ifnum\theeqpointsthispage=1\relax\eqptLabel\else
+ \eqptsLabel\fi}$}
+\newlength\eqevtranstotbox
+\setlength{\eqevtranstotbox}{0pt}
+\def\eqe@chkZeroTotals{\let\eqe@allow\eqe@YES
+ \ifx\eqe@zeroTotalsAllowed\eqe@NO
+ \ifnum\theeqpointsthispage=0 \let\eqe@allow\eqe@NO\fi\fi}
+\newcommand{\totalsboxleft}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][r]{\setlength\tabcolsep{0pt}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }\hspace*{\marginparsep}%
+ }\fi\hfil
+}
+\newcommand{\totalsboxright}{\eqe@chkZeroTotals
+ \ifx\eqe@allow\eqe@YES
+ \makebox[0pt][l]{\setlength\tabcolsep{0pt}%
+ \hspace*{\textwidth}\hspace*{\marginparsep}%
+ \raisebox{-\height+\eqevtranstotbox}[0pt][0pt]{%
+ \marginboxdesign[\insertTotalsBoxPDF]{\totalsboxtext}%
+ }%
+ }\fi\hfil
+}
+\ifeqe@nopoints\else\if@bypasseqexamheading\else
+\AtBeginDocument{\mark{0\csname eqExam\endcsname0}}
+\fi\fi
+\AtEndDocument{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{NumberOfParts}%
+ {\arabic{eq@numparts}}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef{thePartNames}%
+ {\the\partNames}}%
+ \clearpage\addtocounter{page}{-1}\writelastpage\relax
+ \addtocounter{page}{1}%
+}
+\newcommand\theGrandTotal{%
+ $\eqe@ptsFmt{\csname eqeGrandTotal\endcsname}$}
+\newcommand{\totalForPart}[1]{$\eqe@ptsFmt{\csname#1total\endcsname}$}
+\def\tot@lForPart#1{\csname#1total\endcsname}
+\newcommand{\percentForPart}[1]{$\eqe@ptsFmt
+ {\csname#1percent\endcsname}$\%}
+\newcounter{markerCnt}
+\def\placeMarkerHere#1{%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#1SaveTotalHere}{\theeqpointvalue}}%
+}
+\newcommand{\calcFromMarkers}[3][\@markerTotalFmt]{%
+ \@ifundefined{#2SaveTotalHere}{}%
+ {\@ifundefined{#3SaveTotalHere}{}{\setcounter{markerCnt}%
+ {\@nameuse{#2SaveTotalHere}-\@nameuse{#3SaveTotalHere}}%
+ \ifnum\value{markerCnt}<0\relax
+ \setcounter{markerCnt}{-\value{markerCnt}}\fi#1}}%
+}
+\newcommand{\markerTotalFmt}[1]{\def\@markerTotalFmt{#1}}
+\markerTotalFmt{\space(\themarkerCnt\space points)}
+\newcommand{\calcQsBtwnMarkers}[2][]{\setcounter{markerCnt}{0}%
+ \def\eqe@argi{#1}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2thisQnum}{\theeqquestionnoi}}%
+ \@ifundefined{#2thisQnum}{\csarg\xdef{#2Start}{0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{0}}%
+ }{%
+ \setcounter{markerCnt}{\value{eqquestionnoi}+1}\csarg
+ \xdef{#2Start}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2Start}{\@nameuse{#2Start}}}%
+ }
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#2thisQnum}{\setcounter{markerCnt}{0}}%
+ {\@ifundefined{#1thisQnum}{\setcounter{markerCnt}{0}}{%
+ \setcounter{markerCnt}%
+ {\@nameuse{#1thisQnum}-\@nameuse{#2thisQnum}}%
+ }}%
+ \fi
+ \csarg\xdef{#2nQs}{\the\value{markerCnt}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2nQs}{\the\value{markerCnt}}}%
+ \ifx\eqe@argi\@empty\else
+ \@ifundefined{#1thisQnum}{\csarg\xdef{#2End}{0}%
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{#2End}{0}}%
+ }{%
+ \csarg\xdef{#2End}{\@nameuse{#1thisQnum}}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {#2End}{\@nameuse{#2End}}}%
+ }%
+ \fi
+}
+\newcommand{\markStartFor}[1]{\@nameuse{#1Start}}
+\newcommand{\markEndFor}[1]{\@nameuse{#1End}}
+\newcommand{\markNumQsFor}[1]{\@nameuse{#1nQs}}
+\newcommand{\placeAtxy}[3]{{%
+ \par\nointerlineskip
+ \ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \makebox[0pt][l]{\hspace*{-\parindent}\hspace*{#1}%
+ \raisebox{#2}[0pt][0pt]{#3}}\fi
+ \fi
+}}
+\newsavebox{\workareasb}
+\def\workareaVadj#1{\bgroup\def\eqe@rgi{#1}\ifx\eqe@rgi\@empty
+ \def\eqe@rgi{0pt}\fi\setlength{\@tempdima}{\eqe@rgi}%
+ \xdef\workareaV@dj{\the\@tempdima}\egroup
+} % dps1
+\workareaVadj{3pt}
+\def\workareaCmds#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\work@reaCmds\relax\else
+ \def\work@reaCmds{#1}}
+\let\work@reaCmds\relax
+\def\priorworkareaCmds#1{\def\@rgi{#1}\ifx\@rgi\@empty % dpsj6
+ \let\priorWorkAreaCmds\relax\else
+ \def\priorWorkAreaCmds{#1}\fi}
+\let\priorWorkAreaCmds\relax
+\newenvironment{workarea}[2][\linewidth]
+{%
+ \removelastparskip
+ \edef\workareadepth{\if\currhideopt H0pt\else#2\fi}%
+ \begin{lrbox}{\workareasb}\setlength{\eqetmplengtha}{#1}%
+ \ifx\makeVgrid\relax\else % dps2
+ \ifforceEqualCells
+ \ifx\fillLinesLineWidth\@empty\else
+ \setlength{\eqetmplengtha}{\fillLinesLineWidth}\fi
+ \fi
+ \fi
+ \begin{minipage}[b][\workareadepth][t]{\eqetmplengtha}%
+ \vglue\workareaV@dj
+ \@ifundefined{leadinIndentPrtSep}{}{\ifx\solutionparshape\@empty
+ \else\leftskip\leadinIndentPrtSep\fi}\work@reaCmds
+}{%
+ \end{minipage}\end{lrbox}%
+ \ifeq@solutionsafter\else
+ \par\ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \removelastparskip
+ \vglue-\baselineskip
+ \if\currhideopt H\else
+ \noindent\strut\smash{\usebox{\workareasb}}%
+ \fi\fi
+ \fi\fi
+}
+\def\splitsolution{%
+ \@ifnextchar[{\splitsolutioni}%
+ {\splitsolutioniii{\panelwidth}{\panelheight}}%
+}
+\def\splitsolutioni[#1]{%
+ \@ifnextchar[{\splitsolutionii{#1}}
+ {\splitsolutioniii{\panelwidth}{#1}}%
+}
+\def\splitsolutionii#1[#2]{%
+ \splitsolutioniii{#1}{#2}%
+}
+\def\splitsolutioniii#1#2{%
+ \@ifundefined{panel@write}{\newwrite\panel@write}{}%
+ \gdef\ss@Argiii{#1}\gdef\ss@Argii{#2}%
+ \let\@sssolution\solution
+ \let\end@sssolution\endsolution
+ \let\solution\@ssSolution
+ \let\endsolution\end@ssSolution
+ \par\noindent\ignorespaces
+}
+\def\endsplitsolution{%
+ \ifeq@solutionsafter\solutionsafterSkip\fi % dpsj10
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \edef\eqe@workwidth{\if\ss@Argi l\noexpand\ss@Argiii
+ \else\noexpand\linewidth\fi}%
+ \edef\eqe@workfill{\if\ss@Argi l\else\hfill\fi}%
+ \ifeq@solutionsafter\else
+ \begin{workarea}[\eqe@workwidth]{\eqedepth}%
+ \let\panelGetDimen\relax%
+ \eqe@workfill\input{panel\thepanel@cnt.cut}%
+ \end{workarea}
+ \fi\ifeq@solutionsafter\else\solutionsafterSkip\fi
+}
+\newcommand\panelgap{3pt}
+\newsavebox{\eqpanelbox}
+\newdimen\eqepanelwidth
+\newdimen\eqepanelheight
+\newcommand{\getDimSSPanel}[1]{%
+ \sbox{\eqpanelbox}{#1}%
+ \eqepanelwidth=\wd\eqpanelbox
+ \eqepanelheight=\ht\eqpanelbox
+ \advance\eqepanelheight by\the\dp\eqpanelbox
+}
+\def\panelwidth{\eqepanelwidth}
+\def\panelheight{\eqepanelheight}
+\newcounter{panel@cnt}
+\def\panel{\def\eqe@panelir{\eqe@paneli[r]}%
+ \@ifnextchar[{\eqe@paneli}
+ {\@ifnextchar\relax{\expandafter\eqe@panelir\@gobble}%
+ {\eqe@paneli[r]}}%
+}
+\def\eqe@paneli[#1]{%
+ \gdef\ss@Argi{#1}\def\eqe@l{l}\def\eqe@r{r}%
+ \ifx\ss@Argi\@empty\gdef\ss@Argi{r}\else
+ \ifx\eqe@l\ss@Argi\else\ifx\eqe@r\ss@Argi\else
+ \PackageError{eqexam}{Permissible arguments for panel are l and r}
+ {Use l or r for the argument of panel.}\fi\fi\fi
+ \stepcounter{panel@cnt}%
+ \immediate\openout \panel@write panel\thepanel@cnt.cut
+ \if\currhideopt H%
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \else
+ \if\currhideopt h\ifeq@solutionsafter\else
+ \ifeq@globalshowsolutions\else
+ \eqe@IWO\panel@write{\vfill}%
+ \immediate\closeout\panel@write
+ \gdef\ss@Argii{0pt}%
+ \fi\fi
+ \fi
+ \fi
+ \begingroup
+ \let\verbatim@out\panel@write
+ {\lccode`C=`\%\lccode`P=`\{
+ \lowercase{\eqe@IWO\verbatim@out{\string\panelGetDimen PC}}}%
+ \verbatimwrite
+}
+\def\endpanel{%
+ \endverbatimwrite
+ {\lccode`P=`\}\lowercase{\eqe@IWO\verbatim@out{P}}}%
+ \immediate\closeout\panel@write
+ \endgroup
+ \gdef\eqePANELCUT{%
+ \let\panelGetDimen\getDimSSPanel
+ \input{panel\thepanel@cnt.cut}%
+ \setlength{\eq@tmpdima}{\ss@Argiii}%
+ \xdef\ss@Argiii{\the\eq@tmpdima}%
+ \xdef\mp@Width{\ifeq@solutionsafter\linewidth
+ \else\linewidth-\ss@Argiii-\panelgap\fi}%
+ }\aftergroup\eqePANELCUT
+}
+\long\def\eqe@IW#1{%
+ \ifeq@solutionsafter
+ \let\eqe@next\@empty
+ \else
+ \def\eqe@next{\eqe@IWO\verbatim@out{#1}}%
+ \ifeq@nosolutions\else
+ \if\currhideopt H%
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \else
+ \if\currhideopt h%
+ \ifeq@globalshowsolutions\else
+ \gdef\ss@Argii{0pt}\let\eqe@next\@empty
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \eqe@next
+}
+\newenvironment{@ssSolution}[1][\ss@Argii]%
+{%
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty\else
+ \let\soln@keys@nLines\@empty
+ \edef\panelheight{\the\panelheight}%
+ \edef\panelwidth{\the\panelwidth}%
+ \edef\temp@exp{\noexpand
+ \setkeys*{soln@keys}{#1}}\temp@exp
+ \ifx\soln@keys@nLines\@empty
+ \edef\ss@Argii{\XKV@rm}%
+ \else
+ \@tempdima\wlVspace\relax
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \edef\ss@Argii{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\edef\ss@Argii{\XKV@rm}\fi\fi
+ \fi
+ \setlength{\eq@tmpdima}{\ss@Argii}%
+ \ifdim\eqepanelheight>\eq@tmpdima
+ \eq@tmpdima\eqepanelheight\fi
+ \xdef\ss@Argii{\the\eq@tmpdima}%
+ \fi
+ \xdef\eqedepth{%
+ \ifvspacewithsolns\ss@Argii\else
+ \ifeq@nosolutions\ss@Argii\else
+ \ifeq@solutionsafter\ss@Argii\else0pt\fi\fi\fi}%
+ \xdef\mp@Width{\ifeq@solutionsafter\noexpand\linewidth\else
+ \noexpand\linewidth-\ss@Argiii-\panelgap\fi}%
+ \if\ss@Argi l%
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\parbox[b][\eqedepth][t]{\ss@Argiii}
+ {\let\panelGetDimen\relax
+ \input{panel\thepanel@cnt.cut}\vfill}\hfill}%
+ \def\eqe@rPanel{\@empty}%
+ \else
+ \def\eqe@subleftgutter{-\string\eqemargin}%
+ \def\eqe@lPanel{%
+ \string\parbox[b][\string\eqedepth]{\ss@Argiii}%
+ {\string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}\string\hfill^^J}%
+ \def\eqe@rPanel{\@empty}%
+ \fi
+ \else
+ \ifeq@solutionsafter
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \hfill\parbox[b][\eqedepth][t]{\ss@Argiii}
+ {\let\panelGetDimen\relax
+ \hfill\input{panel\thepanel@cnt.cut}\vfill}}%
+ \else
+ \let\eqe@subleftgutter\@empty
+ \def\eqe@lPanel{\@empty}%
+ \def\eqe@rPanel{%
+ \string\hfill\string\parbox[b][\string\eqedepth]%
+ {\ss@Argiii}{\string\endgraf%
+ \string\noindent\string\hfill%
+ \string\let\string\panelGetDimen\string\relax
+ \string\input{panel\thepanel@cnt.cut}%
+ \string\vfill}}%
+ \fi
+ \fi
+ \let\verbatim@out\ex@solns
+ \par\ifeq@solutionsafter\smallskip\fi
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi %%dps
+ \let\solutionparshape\@empty
+ \noindent\minipage{\linewidth}%
+ \if\ss@Argi l\noindent\parbox[b][\eqedepth][t]{\ss@Argiii}%
+ {\vfill}\hfill\fi
+ \minipage[b][\eqedepth][t]{\mp@Width}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\def\string\panelgap{\panelgap}%
+ \string\setlength{\string\panelwidth}{\ss@Argiii}%
+ \string\def\string\eqedepth
+ {\ifeq@nosolutions\ss@Argii\else\ss@Argii\fi}C}}}%
+ {\lccode`C=`\%\lowercase{\eqe@IW{%
+ \string\strut\string\noindent%
+ \string\hbox\space to\string\linewidth\bgroup^^J%
+ \eqe@lPanel\string\minipage[b][\string\eqedepth][t]%
+ {\string\linewidth\eqe@subleftgutter%
+ -\string\panelwidth-\string\panelgap}C
+ }}}%
+ \ifeq@solutionsafter
+ \noindent\strut\hbox to\linewidth\bgroup
+ \eqe@lPanel
+ \minipage[b][\eqedepth][t]{\linewidth-\ss@Argiii-\panelgap}%
+ \def\solutionsafterSkip{}%
+ \fi
+ \ifx\soln@keys@nLines\@empty
+ \edef\passedss@Argii{\ss@Argii}\else
+ \edef\passedss@Argii{\ss@Argii,nLines=\soln@keys@nLines}\fi
+ \if\ss@Argi l\fillerLinesAlignDef\fi % dpsj10
+ \ifanswerkey % dpsj10
+ \gdef\p@ssToFLs{\let\eq@insertverticalspace\eqe@NO
+ \@eqlinedfillerfalse}\fi % dpsj10
+ \eqe@flextendedfalse
+ \expandafter\@sssolution\expandafter[\passedss@Argii]%
+}{%
+ \eqe@IW{\string\endminipage\eqe@rPanel\egroup}%
+ \ifeq@solutionsafter\endminipage\eqe@rPanel\egroup\fi
+ \end@sssolution
+ \endminipage\endminipage
+}
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{12pt}{-3pt}{\bfseries}}
+\newcommand{\defaultInstructions}[1]{\def\eq@default@Instructions{#1}}
+\defaultInstructions{Instructions.}
+\newcommand{\beforeInstrSkip}{1ex}
+\newcommand{\afterInstrSkip}{-0em}
+\newcommand\hInstrSpace{\ }
+\newcommand\styleInstr{\bfseries}
+\newenvironment{instructions}[1][\eq@default@Instructions]{%
+ \@ifundefined{\thisexamlabel total}{\let\eq@nosummarytotals\eqe@YES}
+ {\ifnum\summaryPointTotal=0 \let\eq@nosummarytotals\eqe@YES\fi}%
+ \expandafter\def\expandafter\eq@argi\expandafter{#1}%
+ \def\hsi{\hInstrSpace}%
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeInstrSkip\space\@plus1ex \@minus.2ex}%
+ {\afterInstrSkip}{\normalfont\normalsize\styleInstr}*%
+ {\textcolor{\@instructionsColor}{#1}\normalcolor%
+ \ifx\eq@nosummarytotals\eqe@YES\else\ifx\eq@argi\@empty\else\hsi\fi
+ {\normalfont\summaryTotalsTxt}\hsi\fi}\hskip-\lastskip
+ \ifx\eq@nosummarytotals\eqe@YES\ifx\eq@argi\@empty\else\hsi\fi\fi
+ \normalfont\normalsize\ignorespaces
+}{\par\vskip\beforeInstrSkip\relax}
+\newcommand\summaryPointTotal{\csname\thisexamlabel total\endcsname}
+\newcommand\summaryTotalsTxt{($\eqe@ptsFmt{\summaryPointTotal}\,\text{%
+ \@ifundefined{\thisexamlabel total}{\eqpointsLabel}%
+ {\ifnum\summaryPointTotal=1\relax\eqpointLabel\else
+ \eqpointsLabel\fi}}$)}
+\newcommand{\nQuesInExam}[1][\thisexamlabel]{%
+ \def\eqe@argi{#1}%
+ \ifx\thisexamlabel\@empty\ifx\eqe@argi\thisexamlabel
+ \PackageError{eqexam}{The optional argument for
+ \string\nQuesInExam\MessageBreak must be specified}{}\fi\fi
+ \csname#1nQuestions\endcsname}
+\ifx\hyper@anchor\@undefined\else
+ \renewcommand\theHeqquestionnoi
+ {\curr@quiz.\theeqquestionnoi\eqe@fpmrk}
+ \renewcommand\theHquizno{%
+ \if\probstar*\curr@quiz.%
+ \theeqquestionnoi.part\thepartno.\arabic{quizno}%
+ \else
+ \curr@quiz.%
+ \theeqquestionnoi.\arabic{quizno}%
+ \fi
+ }
+ \renewcommand\theHpartno{\curr@quiz.%
+ \theeqquestionnoi.part\thepartno}
+\fi
+\newcommand{\beforeCommentSkip}{1.25ex}
+\newcommand{\afterCommentSkip}{-1ex}
+\newcommand\hCommSpace{\ }
+\newcommand\styleComm{\bfseries}
+\newenvironment{eqComments}[1][\strut]{\removelastskip
+ \def\eqe@argi{#1}\def\eqe@Strut{\strut}\def\hsc{\styleComm}%
+ \@startsection{paragraph}{4}{\z@}%
+ {\beforeCommentSkip\space\@plus1ex \@minus.2ex}%
+ {\afterCommentSkip}{\normalfont\normalsize\styleComm}*%
+ {\textcolor{\@eqCommentsColor}{#1}}%
+ \ifx\eqe@argi\eqe@Strut\hskip\afterCommentSkip
+ \else\ifx\eqe@argi\@empty\hskip\afterCommentSkip\else
+ \hsc\strut\fi\fi\normalfont\normalsize
+ \color{\@eqCommentsColorBody}\ignorespaces
+}{\par\vskip\beforeCommentSkip\space\@plus1ex \@minus.2ex}
+\let\tb@beginexam@code\relax
+\def\partialspillovertotals{0}
+\def\exambegdef
+{%
+ \csname\thisexamlabel pagemark\endcsname
+ \@ifundefined{partialtotalpg}{}{%
+ \ifnum\partialtotalpg=\arabic{page}%
+ {\count0=\partialspillovertotals
+ \advance\count0by\partialtotaleoe
+ \xdef\partialspillovertotals{\the\count0}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {Page\partialtotalpg spilltotal}{\partialtotaleoe}}%
+ }%
+ \fi
+ }%
+ \csarg\ifx{\thisexamlabel pageno}\relax
+ \else
+ \csarg\ifx{pagenofirstprob\thisexamlabel}\relax
+ \else
+ \csarg\ifnum{\thisexamlabel pageno}
+ < \@nameuse{pagenofirstprob\thisexamlabel}%
+ \else
+ \csarg\ifx{\thisexamlabel pagemark}\relax
+ \else
+ \ifnum\value{page}=%
+ \csname\thisexamlabel pageno\endcsname
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pagemark}{\string\newpage}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \setcounter{eqquestionnoi}{0}\setcounter{eqpointvalue}{0}%
+ \setcounter{eqpointsofar}{0}\setcounter{eqpointsthispage}{0}%
+ \setcounter{eq@count}{0}%
+ \writeBeginEqeQuestions
+ \label{\thisexamlabel PageBegin}%
+ \eqe@IWO\@auxout{\string\csarg\string\gdef
+ {\thisexamlabel pageno}{\thepage}}%
+ \ifeqfortextbook
+ \global\examenvtrue\tb@beginexam@code
+ \fi
+}
+\def\tb@insmargmark{\ifisinstred\ifismarginans
+ \insMidMarg{\mark{}}\fi\fi}
+\def\eqe@adjForSepRule{\if\eq@parttotals\eqe@YES
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \advance\eq@pointboxtotalheight\pointsmarginparpush
+ \vspace*{\eq@pointboxtotalheight}\fi}
+\def\eqe@afterexamsepcode{%
+ \if\eq@parttotals\eqe@YES
+ \@actionsAtPageBreak{\global\let\@spacetobreak1}%
+ {\global\let\@spacetobreak0}%
+ \ifx\@spacetobreak0\relax
+ \bgroup\@tempdima=\pagetotal
+ \advance\@tempdima\eq@pointboxtotalheight
+ \ifdim\@tempdima>\pagegoal\aftergroup\newpage
+ \else\ifnum\arabic{eq@count}>0\relax
+ \removelastskip\vskip6pt\kern0pt
+ \if\@reportpoints\eqe@One\else\@checkSpacing{0}\fi
+ \textcolor{\endexamtotal@color}%
+ {\eqeomarginbox{\arabic{eq@count}}{0}}\fi
+ \ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi\egroup
+ \fi
+ \else\ifx\eqx@separationrule\eqe@YES
+ \separationrule\eqe@adjForSepRule\fi
+ \fi
+}
+\def\examenddef
+{%
+ \global\let\partialtotaleoe\relax
+ \global\let\partialtotalpg\relax
+ \global\let\afterexamsepcode\relax
+ \csarg\ifx{NumberOfParts}\relax
+ \else
+ \ifnum\value{eq@numparts}<\NumberOfParts
+ \setcounter{eq@count}{\value{eqpointvalue}}%
+ \addtocounter{eq@count}{-\value{eqpointsofar}}%
+ \xdef\partialtotaleoe{\arabic{eq@count}}%
+ \xdef\partialtotalpg{\arabic{page}}%
+ \global\let\afterexamsepcode\eqe@afterexamsepcode
+ \fi
+ \fi
+ \ifeqfortextbook\global\examenvfalse\fi
+ \writeEndEqeQuestions
+ \writetotalstoaux
+ \addtocounter{page}{-1}%
+ \writelastpage[\thisexamlabel]\addtocounter{page}{1}%
+ \ifeqfortextbook\tb@insmargmark\fi
+}
+\def\@actionsAtPageBreak#1#2{%
+ \bgroup\@tempdima\pagegoal\advance\@tempdima-\pagetotal
+ \@tempdimb\@fvsizeskip\vsize
+ \ifdim\@tempdima < \@tempdimb #1\else #2\fi\egroup
+}
+\newcommand{\separationrule}{\makebox[\linewidth-\eqemargin][c]%
+ {\rule{.67\linewidth}{.4pt}}}
+\def\eqe@hspannerPrb{\ }
+\@ifundefined{ifwithinsoldoc}{\newif\ifwithinsoldoc\withinsoldocfalse}{}
+\newcommand{\eqequestopsep}[1]{\def\eqeques@topsep{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\newcommand{\eqequesitemsep}[1]{\def\eqeques@itemsep{#1}}
+\newcommand{\eqequeslistparindent}[1]{\def\eqeques@listparindent{#1}}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\newif\iffirstitem
+\def\eqeSolnItemMngt{\iffirstitem\global\firstitemfalse
+ \let\eqe@next\@empty\else\let\eqe@next\item\fi\eqe@next\relax}
+\newenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithinsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}%
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%dps%
+ \ifwithinsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithinsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+\def\setDefaultfvsizeskip#1{\def\default@fvsizeskip{#1}%
+ \def\@fvsizeskip{#1}}
+\def\default@fvsizeskip{.3}
+\edef\@fvsizeskip{\default@fvsizeskip}
+\newcommand{\fvsizeskip}[1]{\def\@fvsizeskip{#1}}
+\def\autoExamName{exam\the\value{eq@numparts}}
+\def\nNumberOfP@rts{\csname NumberOfParts\endcsname}
+\abovesqskip{}
+\let\eqeWrtExamTitleToSolns\eqe@YES
+\def\wrtExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@YES}
+\def\noExamTitleInSolns{\let\eqeWrtExamTitleToSolns\eqe@NO}
+\let\thisexamlabel\@empty
+\let\isInExamEnv\eqe@NO
+\newif \ifDoNotRecordThisExam \DoNotRecordThisExamfalse % dpsf02
+\def\RecordThisExamOff{\DoNotRecordThisExamtrue} % dpsf02
+\def\bIFFalseWrtSolns{\writeT@SolnFile{\protect\iffalse^^J}}
+\def\eIFFalseWrtSolns{\writeT@SolnFile{\protect\fi^^J}}
+\newenvironment{exam}[2][]
+{%
+ \ifDoNotRecordThisExam % dpsf02
+ \expandafter\bIFFalseWrtSolns\fi
+ \makeRoomForProb{\@fvsizeskip\textheight}{0}%
+ \let\isInExamEnv\eqe@YES
+ \stepcounter{eq@numparts}%
+ \def\eqexamargii{#2}\ifx\eqexamargii\@empty
+ \edef\eqexamargii{\autoExamName}\fi
+ \xdef\thisexamlabel{\eqexamargii}\xdef\curr@quiz{\eqexamargii}%
+ \def\eqexamargi{#1}\ifx\eqexamargi\@empty
+ \edef\eqexamargi{\eqexamargii}\fi
+ \expandafter\gdef\expandafter\thisUFexamlabel
+ \expandafter{\eqexamargi}%
+ \edef\eq@tmp{\the\partNames\string\\{\eqexamargii}}%
+ \global\partNames=\expandafter{\eq@tmp}%
+ \csarg\ifx{NumberOfParts}\relax\else
+\ifx\eqeWrtExamTitleToSolns\eqe@YES
+ \ifnum\nNumberOfP@rts=1\relax\else
+ \def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \eqe@writetoSolns{\eqexamargii}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly\eqexamargii}{\eqexamargii}}
+ \else
+ \eqe@writetoSolns{#1}\eqe@writetoAux{\string
+ \csarg\string\gdef{userFriendly#2}{#1}}
+ \fi
+ \fi\fi
+\fi
+ \exambegdef
+ \edef\temp@Exp{\noexpand\shortquiz\sqstar[\eqexamargii]}\temp@Exp
+}{%
+ \examenddef
+ \vskip\eqeques@parsep\relax\kern0pt %dps88
+ \endshortquiz
+ \aftergroup\afterexamsepcode
+ \par\penalty-100\vskip0pt
+ \ifDoNotRecordThisExam % dpsf02
+ \expandafter\eIFFalseWrtSolns\fi
+ \global\DoNotRecordThisExamfalse
+}
+\newcommand{\EQEcalculateAllTotals}{%
+ \begingroup
+ \count\z@=0\relax
+ \def\\##1{\csarg\ifx{##1total}\relax\else
+ \advance\count\z@\csname##1total\endcsname
+ \fi}\csname thePartNames\endcsname
+ \xdef\eqeGrandTotal{\the\count\z@}%
+ \ifnum\eqeGrandTotal=0 \else
+ \def\\##1{\eqe@calc@percent{##1}}%
+ \csname thePartNames\endcsname\fi
+ \endgroup
+}
+\newcommand{\nPctDecPts}{1}
+\def\eqe@calc@percent#1{\@ifundefined{#1total}{%
+ \csarg\gdef{#1percent}{??}}{%
+ \csarg\ifx{FPdiv}\relax
+ \count2=\tot@lForPart{#1}%
+ \edef\expGT{\csname eqeGrandTotal\endcsname}%
+ \multiply\count2by100\relax\divide\count2by\expGT\relax
+ \csarg\xdef{#1percent}{\the\count2 }\else
+ \FPdiv{\eqe@pForPart}{\csname#1total\endcsname}%
+ {\csname eqeGrandTotal\endcsname}%
+ \FPmul{\eqe@pForPart}{\eqe@pForPart}{100}%
+ \FPround{\eqe@pForPart}{\eqe@pForPart}{\nPctDecPts}%
+ \csarg\xdef{#1percent}{\eqe@pForPart}\fi
+ }%
+}
+\def\writetotalstoaux{\eqe@IWO\@auxout{\string
+ \csarg\string\gdef{\thisexamlabel total}{\theeqpointvalue}}%
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{\thisexamlabel nQuestions}{\theeqquestionnoi}}%
+}
+\newcommand{\writelastpage}[1][]{\def\eqe@argi{#1}%
+ \ifx\eqe@argi\@empty\else\label{#1PageEnd}\fi
+ \eqe@IWO\@auxout{\string\csarg
+ \string\gdef{eqExamLastPage}{\arabic{page}}}%
+}
+\def\exlabel{}
+\def\sqlabel{}
+\def\exsolafter{\textit{Solution}:}
+\def\sqsolafter{\textit{Solution}:}
+\def\exlabelformat{\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerPrb}}
+\def\exlabelformatwp{\exlabelformat}
+\def\exsllabelformat
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}}
+\def\exsllabelformatwp
+ {\string\makebox[0pt][r]{\string\textbf{%
+ \theeqquestionnoi\eqe@decPointPrb\eqe@hspannerSoln}}%
+ (\thepartno)\eqe@hspannerSoln}
+\ifanswerkey
+ \def\exrtnlabelformat{}
+ \def\exrtnlabelformatwp{}
+ \def\eq@sqslrtnlabel{}
+\else
+ \def\exrtnlabelformat{$\square$}
+ \def\exrtnlabelformatwp{$\square$}
+ \def\eq@sqslrtnlabel{$\square$}
+\fi
+\def\sqslrtnlabel{\eq@sqslrtnlabel}
+\newcommand{\exsectitletext}{Solutions to \webtitle}
+\def\exsectitle{\normalsize\exsectitletext}
+\@ifpackageloaded{exerquiz}{%{Solutions to \websubject}
+ \renewcommand{\exsecrunhead}{}}{\newcommand{\exsecrunhead}{}}
+\def\eq@sqslsectitle{}
+\def\eq@sqslsecrunhead{}
+\def\eq@sqsllabel{{\string\llap{\string\textbf{\theeqquestionnoi.\ }}}}
+\def\eq@sqlabel{}
+\let\include@quizsolutions\relax
+\let\solnhspace\@empty
+\newcommand{\optsFillIn}[1]{\def\eqe@optsFillIn{#1}}
+\let\eqe@optsFillIn\@empty
+\newcommand{\fillin}[3][u]{%
+ \ifx#1u\let\@fillinFmt\underbar
+ \else\ifx#1b\let\@fillinFmt\relax
+ \else\let\@fillinFmt\relax\fi\fi
+ \ifeq@proofing
+ \@fillinFmt{\makebox[#2]{%
+ \strut\hfil\bfseries\color{red}#3\hfil}}%
+ \else
+ \@fillinFmt{\makebox[#2]{\strut\hfil}}%
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\makebox[0pt][r]{\textField[\BC{}
+ \presets{\eqe@optsFillIn}]{%
+ \fieldName}{#2}{11bp}}%
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\space\ignorespaces}
+\newcommand\defaultTFwidth{30pt}
+\newcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi
+\eqe@next}
+\def\fillinWidth#1{%
+ \if\probstar*
+ \settowidth{\eq@tmplengthA}{\normalfont\ }%
+ \addtolength{\eq@tmplengthA}{#1}%
+ \edef\eq@extralabelsep{\the\eq@tmplengthA}%
+ \fi
+}
+\let\fillInFormatDefault\@empty
+\def\eqe@DoWarning#1{\PackageWarning{eqexam}{\string#1\space
+ requires the first argument\MessageBreak of problem* to be <num>ea}}
+\def\eqe@DoNum{\textbf{??}\eqe@DoWarning{\DoNum}}
+\def\eqe@nDoNum{\textbf{??}\eqe@DoWarning{\nDoNum}}
+\let\DoNum\eqe@DoNum
+\let\nDoNum\eqe@nDoNum
+\def\makeDoNum#1{\xdef\nDoNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\DoNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\makeOutOfNum#1{\xdef\nOutOfNum{#1}%
+ \def\ifc@sewrap{\ifcase#1??\or}%
+ \xdef\OutOfNum{\expandafter\ifc@sewrap\eqe@wordNums\else
+ \eqe@wordNumbsError\fi}}
+\def\eqe@OutOfNum{\textbf{??}\eqe@DoWarning{\OutOfNum}}
+\def\eqe@nOutOfNum{\textbf{??}\eqe@DoWarning{\nOutOfNum}}
+\let\OutOfNum\eqe@OutOfNum
+\let\nOutOfNum\eqe@nOutOfNum
+\newcommand{\eqe@wordNums}{one\or two\or three\or
+ four\or five\or six\or seven\or eight\or nine\or ten}
+\newcommand{\eqe@wordNumbsError}{\noexpand\PackageError{eqexam}%
+ {Number out of range, 1--10}%
+ {Use a smaller number, or redefine the command
+ \string\eqe@wordNums.}}
+\let\priorPNPAction\relax % dps1
+\let\postPNPAction\relax
+\def\eqe@mkRoomPgBrk{\priorPNPAction\newpage\postPNPAction}
+\def\makeRoomForProb#1#2{\par %\endgraf % dps 11/11/10
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
+ \else\aftergroup\eqe@mkRoomPgBrk\fi\fi\egroup
+ \ifnum\@reportpoints>1
+ \ifx\eqe@prevProbZero\eqe@YES
+ \if\eqe@isPts0\else\vskip-\halfHtPtBox\relax\fi
+ \else
+ \ifl@stDispl@yPoints
+ \if\eqe@isPts0\@checkSpacing{1}\else
+ \if#21 \@checkSpacing{0}\fi
+ \fi\fi
+ \fi
+ \fi
+}
+\newcommand{\emitMessageNearBottom}{\@ifstar
+ {\def\eqe@emnb{\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\fi\insertContAnnot}\eq@emitMessageNearBottom}
+ {\let\eqe@emnb\relax\eq@emitMessageNearBottom}}
+\newcommand{\eq@emitMessageNearBottom}[2][2\wlVspace]{%
+ \eq@@emitMessageNearBottom{#1}{#2}}
+\def\eq@@emitMessageNearBottom#1#2{\par
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb #2 \eqe@emnb
+ \xdef\eq@currProbStartPage{0}\fi\egroup} % dps4
+\newcommand{\getSpaceLeftOnPage}{\par\bgroup
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \xdef\amtSpaceLeftOnPage{\the\@tempdima}\egroup}
+\newcommand{\pnpDflt}{\@fvsizeskip\textheight}
+\newcommand{\promoteNewPage}[1][\pnpDflt]{%
+ \makeRoomForProb{#1}{0}}
+\def\pointsmarginparpush{3pt}
+\def\@checkSpacing#1{\bgroup\ifinner\else
+ \@tempdima\lastPageTotal
+ \@tempdimb\pagetotal
+ \ifdim\@tempdima < \@tempdimb
+ \advance\@tempdimb by-\@tempdima
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \if#11%
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \fi
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi\fi
+\egroup}
+\def\@checkSpacingi{\bgroup
+ \@tempdima = \lastPageTotal
+ \@tempdimb = \pagetotal
+ \ifdim\@tempdima < \@tempdimb
+ \advance\@tempdimb by-\@tempdima
+ \eq@pointboxtotalheight\halfHtPtBox\relax
+ \advance\eq@pointboxtotalheight\dpPtBox\relax
+ \ifdim\@tempdimb < \eq@pointboxtotalheight
+ \@tempdima=\eq@pointboxtotalheight
+ \advance\@tempdima\pointsmarginparpush\relax
+ \advance\@tempdima by-\@tempdimb
+ \vspace*{\@tempdima}%
+ \fi
+ \fi
+\egroup}
+\newcommand{\setDefaultnbaselineskip}[1]{\def\default@nbaselineskip{#1}}
+\setDefaultnbaselineskip{6}
+\def\nbaselineskip#1{\def\@nbaselineskip{#1}}
+\def\nbaselineskipReset{\edef\@nbaselineskip{\default@nbaselineskip}}
+\nbaselineskipReset
+\def\eqe@gobbletoend#1\end{}
+\def\eqe@grabarg#1\end{\def\numpoints{#1}}
+\def\eqe@isPts{1}
+\aboveexskip{3pt}\belowexskip{3pt}
+\partstopsep{3pt}\partsitemsep{3pt}\partsparsep{0pt}
+\rowsepDefault{3pt}\partstabcolsep{1.5pt}%
+\partstabtopsep{3pt}\partstabrowsep{3pt}
+\renewcommand\belowexsolnskip{{}}%
+\let\isProbEnv\eqe@NO
+\let\topofprobhook\relax
+\def\eqe@p@gobnxtp@rDef{\@ifnextchar\par{\eqe@p@gobtop@rnext}{}}
+\def\eqe@p@gobtop@rnext#1\par{}
+\def\applyparfixesp{\let\eqe@p@gobnxtp@r\eqe@p@gobnxtp@rDef}
+\def\cancelparfixesp{\let\eqe@p@gobnxtp@r\ignorespaces}
+\newcommand{\problem}[1][]{\lowercase{\def\@rgi{#1}}%
+ \ifx\@rgi\eqe@h
+ \def\hidden@ttr{[#1]}\let\numpoints\@empty\else
+ \let\hidden@ttr\relax\def\numpoints{#1}\fi
+ \problem@cont}
+\newcommand{\problem@cont}[1][]{\let\isProbEnv\eqe@YES
+ \def\@rgi{#1}\ifx\hidden@ttr\relax % assume a number or empty
+ \ifx\@rgi\@empty\else\def\hidden@ttr{[#1]}\fi\fi
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \global\thereissolutionfalse
+ \def\numpointsEmpty{0}%
+ \ifx\numpoints\@empty\def\numpoints{0}\def\numpointsEmpty{1}%
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+ \gdef\probstar{x}\let\afterlabelhskip\@empty
+ \ifx\marginpoints\@empty\else
+ \if\numpointsEmpty\eqe@One\let\marginpoints\@gobbletwo\fi
+ \def\@lti{\let\@isitstar\eqe@One\eqe@grabarg}%
+ \def\@ltii{\let\@isitstar\eqe@Zero\eqe@gobbletoend}%
+ \expandafter\@ifstar\expandafter\@lti
+ \expandafter\@ltii\numpoints\end
+ \if\@isitstar\eqe@One\addtocounter{eqpointvalue}{\numpoints}%
+ \@marktotalvalue
+ \ifdispl@yPoints
+ \def\marginparafterhook{\PTs{\numpoints}\space}\else
+ \def\marginparafterhook{\PTs*{\numpoints}\space}\fi\else
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}\fi
+ \fi
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+ \topofprobhook
+ \begin{eqequestions}%
+ \edef\ctrld@exp@exercise{\noexpand
+ \begin{exercise}[eqquestionnoi]\hidden@ttr}%
+ \ctrld@exp@exercise\ignorespaces\eqe@p@gobnxtp@r}
+\def\endproblem{\end{exercise}%
+ \end{eqequestions}%
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+ \global\let\eqe@fpmrk\@empty}
+\newcommand\itemPTsTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi}$}
+\newcommand\itemPTsEaTxt[1]{$\eqe@ptsFmt{#1}\,\text{%
+ \ifnum#1=1\relax\eqptLabel\else\eqptsLabel\fi\space\eqeachLabel}$}
+\newcommand{\itemPTsFormated}[1]{(#1)}
+\newif\ifObeyPTsStar \ObeyPTsStartrue
+\def\obeyPTsStar{\global\ObeyPTsStartrue}
+\def\ignorePTsStar{\global\ObeyPTsStarfalse}
+\def\PTs{\leavevmode\@ifstar{\@PTs{*}}{\@PTs{x}}}
+\def\@PTs#1#2{%
+ \if\@reportpoints\eqe@Zero\ignorespaces\else
+ \if\eqe@pointsPartsId\eqe@One
+ \addtocounter{eqpointvalue}{#2}\@marktotalvalue
+ \addtocounter{eq@count}{#2}\fi
+ \if#1*\ifObeyPTsStar\ignorespaces\else\expandafter\@gobble\fi
+ \else
+ \eqe@movePTs{\itemPTsFormated{\itemPTsTxt{#2}}}\fi
+ \fi
+}
+\def\eqe@movePTs#1{#1}
+\let\auto\relax
+\def\isItD@{\@ifnextchar\Do{\let\yest@D@\eqe@YES\y@st@Do}
+ {\let\yest@D@\eqe@NO\@gobblet@end}}
+\let\yest@D@\eqe@NO
+\let\D@Num\@empty
+\def\y@st@Do\Do#1\end{\gdef\D@Num{#1}}
+\def\@gobblet@end#1\end{}
+\def\is@uto#1\auto#2\@nil{\def\eqe@argi{#1}\def\eqe@argii{#2}%
+ \ifx\eqe@argii\@empty\let\isit@uto\eqe@Zero\else
+ \let\isit@uto\eqe@One\fi
+}
+\let\eqe@pointsPartsId\relax
+\def\leadinitemWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\leadinitem}}
+\def\tableadinWarningStar{\PackageWarning{eqexam}
+ {Using the star (*) in front of the points\MessageBreak
+ designator is not allowed when there is a
+ \MessageBreak\string\tableadin}}
+\let\isProbStarEnv\eqe@NO
+\let\topofprobstarhook\relax
+\def\eqe@ps@gobtop@r#1\par{\eqe@isle@dinnext}
+\def\eqe@isle@dinnext{\@ifnextchar\leadinitem{}{\vskip-\baselineskip}}
+\def\restorele@dinpfixDef{\@ifnextchar\par{\eqe@ps@gobtop@r}{}}
+\let\eqe@ps@gobnxtpar\restorele@dinfixDef
+\def\applyleadinfix{\let\eqe@gobnxtpar\restorele@dinpfixDef}
+\def\cancelleadinfix{\let\eqe@gobnxtpar\relax}
+\def\applyparfixes{\PackageInfo{eqexam}
+ {Applying paragraph fixes to problem\MessageBreak
+ and problem* environments}\applyparfixesp\applyleadinfix}
+\def\cancelparfixes{\PackageInfo{eqexam}
+ {Cancelling paragraph fixes to problem\MessageBreak
+ and problem* environments}\cancelparfixesp
+ \cancelleadinfix}
+\cancelparfixesp\cancelleadinfix
+\let\neutralizeparfixes\cancelparfixes
+\csarg\def{problem*}{\let\isProbEnv\eqe@YES
+ \let\isProbStarEnv\eqe@YES
+ \global\thereissolutionfalse
+ \@ifnextchar[{\pr@bl@m@star}{\pr@bl@m@star[]}}
+\def\pr@bl@m@star[#1]{%
+ \@ifnextchar[{\pr@blem@star{#1}}{\pr@blem@star{#1}[]}}
+\def\pr@blem@star#1[#2]{%
+ \if\eqe@isPts0\global\let\eqe@prevProbZero\eqe@YES\else
+ \global\let\eqe@prevProbZero\eqe@NO\fi
+ \def\numpoints{#1}\ifx\numpoints\@empty
+ \gdef\eqe@isPts{0}\else\gdef\eqe@isPts{1}\fi
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{\eqe@isPts}%
+ \let\DoNum\eqe@DoNum\let\nDoNum\eqe@nDoNum
+ \let\OutOfNum\eqe@OutOfNum\let\nOutOfNum\eqe@nOutOfNum
+ \gdef\probstar{*}%
+ \gdef\pr@b@secondarg{#2}\setcounter{eq@count}{0}%
+ \let\afterlabelhskip\@empty
+ \global\let\probpointseach\@empty\def\numpoints{#1}%
+ \@ifstar{\let\@isitstar\eqe@One\eqe@grabarg}%
+ {\let\@isitstar\eqe@Zero\eqe@gobbletoend}#1\end
+ \if\@isitstar\eqe@One
+ \@tempcnta=\theeqquestionnoi\relax
+ \advance\@tempcnta1\relax
+ \@ifundefined{leadinitem\thisexamlabel-\the\@tempcnta}{}
+ {\leadinitemWarningStar\let\@isitstar\eqe@Zero}%
+ \@ifundefined{tableadin\thisexamlabel-\the\@tempcnta}{}
+ {\tableadinWarningStar\let\@isitstar\eqe@Zero}%
+ \fi
+ \expandafter\is@uto\numpoints\auto\@nil
+ \if\isit@uto\eqe@One\let\eqe@pointsPartsId\eqe@One
+ \global\let\probpointseach\relax
+ \def\eqe@next{\autocalcparts}%
+ \else
+ \ifx\pr@b@secondarg\@empty\else
+ \let\eqe@pointsPartsId\eqe@Four
+ \isItD@#2\end\fi
+ \def\eqe@next{\manualcalcparts{\numpoints}}%
+ \fi\eqe@next
+ \let\leadinitem\eqe@leadinitem
+ \let\tableadin\eqe@tableadin
+ \topofprobstarhook
+ \ifeqfortextbook
+ \writeT@SolnFile{\protect\global
+ \protect\frstProbNumShownfalse}\fi
+ \begin{eqequestions}%
+ \begin{exercise}[eqquestionnoi]*\eqe@gobnxtpar}%
+\def\ftb@endprobstarCks{%
+ \ifWithinANSGrp
+ \PackageError{eqexam}{\string\bGrpANS\space is still open}
+ {You need to match it with an \string\bGrpANS,
+ or remove it.}%
+ \fi
+}
+\csarg\def{endproblem*}{%
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{nPartsThisProb\thisexamlabel.\theeqquestionnoi}%
+ {\arabic{partno}}}%
+ \ifx\probpointseach\@empty\else
+ \ifx\probpointseach\auto
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{prob\thisexamlabel.\theeqquestionnoi}%
+ {\theeq@count}}%
+ \else
+ \setcounter{eq@count}{\value{partno}}%
+ \ifx\pr@b@secondarg\@empty\else
+ \bgroup\toks0=\expandafter{\pr@b@secondarg}%
+ \expandafter\isItD@\the\toks0 \end
+ \ifx\yest@D@\eqe@YES\ifx\eqe@pointsEach\eqe@YES
+ \eqe@IWO\@auxout{\string
+ \csarg\string\gdef{DoNumThisProb\thisexamlabel.%
+ \theeqquestionnoi}{\D@Num}}%
+ \@tempcnta = \value{eq@count}%
+ \advance\@tempcnta -\D@Num
+ \global\advance\value{eq@count}-\@tempcnta
+ \@tempcnta=\value{partno}%
+ \advance\@tempcnta -\D@Num
+ \multiply\@tempcnta by\argi
+ \addtocounter{eqpointvalue}{-\@tempcnta}%
+ \fi\fi
+ \egroup
+ \fi
+ \multiply\value{eq@count}\argi
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{prob\thisexamlabel.\theeqquestionnoi}{\theeq@count}}%
+ \fi\fi
+ \end{exercise}%
+ \end{eqequestions}%
+ \ifeqfortextbook\ftb@endprobstarCks\fi
+ \ifeqlocalversion\ifeqglobalversion
+ \xdef\eqe@tmp{\noexpand\forVersion{\eq@selectedVersion}}%
+ \aftergroup\eqe@tmp
+ \fi\fi
+ \global\eqlocalversionfalse
+ \@marktotalvalue
+ \ifdispl@yPoints\global\l@stDispl@yPointstrue
+ \else\global\l@stDispl@yPointsfalse\fi
+}
+\let\solutionparshape\@empty
+\def\eqe@leadinitem{%
+ \ifx\solutionparshape\@empty
+ \def\eqe@next{\eqe@@leadinitem}%
+ \ifeqfortextbook\writeT@SolnFile{\protect\bpartsmrk}\fi
+ \else
+ \def\eqe@next{\PackageError{eqexam}
+ {The \string\leadinitem\space command may
+ only be used\MessageBreak once per problem* environment}
+ {Remove all but one of the \string\leadinitem\space
+ commands.}}%
+ \fi\eqe@next
+}
+\newif\ifisleadin \isleadinfalse
+\let\isparshapeExpanded\eqe@NO
+\def\eqe@@leadinitem{\if\itsforleadinitem\eqe@NO
+ \setcounter{partno}{0}\fi\refstepcounter{partno}%
+ \eq@initializeContAnnot
+ \isleadintrue\let\isitleadin\eqe@YES
+ \eqe@writetoAux{\string\csarg\string
+ \gdef{leadinitem\thisexamlabel-\theeqquestionnoi}{}}%
+ \settowidth{\eq@tmpdima}{\normalfont\parts@indent\eqe@prtsepPrb}%
+ \xdef\leadinIndentPrtSep{\the\eq@tmpdima}%
+ \setlength{\eq@tmpdima}{\eqemargin+\eq@tmpdima}%
+ \xdef\leadinIndent{\the\eq@tmpdima}%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\partsleadinIndent{\the\eq@tmplength}%
+ \setlength{\eq@tmplength}{\linewidth-\leadinIndentPrtSep}%
+ \edef\leadinIndentLength{\the\eq@tmplength}%
+\@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \advance\leftmarginii\leadinIndentPrtSep\relax
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ }%
+ \parshape=2 \eqemargin \linewidth \leadinIndent \leadinIndentLength
+ \xdef\solutionparshape{%\noexpand\linewidth\leadinIndentLength
+ \noexpand\parshape=1 \leadinIndent\space\leadinIndentLength}%
+ \global\let\isparshapeExpanded\eqe@NO
+ \everypar{\solutionparshape
+ \global\let\isparshapeExpanded\eqe@YES\everypar{}}%
+ \let\eq@item\eq@leadin@item\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}%
+}
+\def\eq@leadin@item{\eq@ckglobalhide\ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist\fi
+ \ifeq@nosolutions\eq@nolinktrue\fi
+ \ifeq@solutionsafter\eq@nolinktrue\fi
+ \unskip\noindent\makebox[\partsleadinIndent]{\eqexlisttabheader}%
+ \eqe@prtsepPrb\ignorespaces
+}
+\def\eqe@tableadin{\@tableadinitemtrue\eqe@writetoAux{\protect
+ \csarg\protect\gdef{tableadin\thisexamlabel-\theeqquestionnoi}{}}%
+}
+\newcommand\pushProblem{\xdef\nlastItem{\arabic{partno}}\end{parts}}
+\newcommand\popProblem[1][]{%
+ \def\@argi{#1}\ifx\@argi\@empty
+ \def\eqe@bParts{\begin{parts}}\else
+ \def\eqe@bParts{\begin{parts}[#1]}\fi
+ \eqe@bParts\setcounter{partno}{\nlastItem}}
+\def\lastPageTotal{0pt}
+\def\marginparafterhook{\xdef\lastPageTotal{\the\pagetotal}}
+\def\prob@Arg#1ea#2\end{\def\argi{#1}\def\argii{#2}}
+\let\eqe@pointsEach\eqe@NO
+\def\manualcalcparts#1{%
+ \expandafter\prob@Arg#1ea\end
+ \ifx\argii\@empty\edef\numpoints{#1}%
+ \let\eqe@pointsEach\eqe@NO
+ \let\eqe@pointsPartsId\eqe@Zero
+ \else
+ \gdef\probpointseach{x}\let\eqe@pointsPartsId\eqe@Two
+ \let\eqe@pointsEach\eqe@YES
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}\csarg
+ \ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{\argi}\else
+ \def\numpoints{\expandafter
+ \csname prob\thisexamlabel.\theeq@count\endcsname}%
+ \fi
+ \ifx\yest@D@\eqe@YES
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \@ifundefined{nPartsThisProb\thisexamlabel.\theeq@count}
+ {\makeOutOfNum{0}\makeDoNum{0}}{%
+ \expandafter\makeOutOfNum{%
+ \csname nPartsThisProb\thisexamlabel.%
+ \theeq@count\endcsname}%
+ \expandafter\makeDoNum{%
+ \csname DoNumThisProb\thisexamlabel.%
+ \theeq@count\endcsname}}%
+ \fi
+ \fi
+ \ifx\marginpoints\@empty
+ \else
+ \ifx\argi\@empty
+ \let\marginpoints\@empty
+ \else
+ \ifx\argii\@empty
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One
+ \addtocounter{eqpointvalue}{#1}%
+ \@marktotalvalue\ifdispl@yPoints
+ \def\marginparafterhook{\itemPTsFormated{%
+ \itemPTsTxt{\numpoints}}\space}\fi
+ \else
+ \def\marginparpriorhook{\noindent
+ \probvalue{\numpoints}{0}}%
+ \fi
+ \fi
+ \else
+ \ifx\marginpoints\@empty\else
+ \if\@isitstar\eqe@One\ifdispl@yPoints
+ \def\marginparafterhook{%
+ \itemPTsFormated{\itemPTsEaTxt{\argi}}\space}\fi
+ \else
+ \ifdispl@yPoints
+ \def\marginparpriorhook{\noindent
+ \marginpoints{\numpoints}{\argi}}\fi
+ \fi
+ \edef\eqp@rtc@lcm@rk{\noexpand
+ \addtocounter{eqpointvalue}{\argi}%
+ \noexpand\@marktotalvalue}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifnum\value{eq@count}=1\relax
+ \eqe@IWO\@auxout{\string\csarg\string
+ \gdef{pagenofirstprob\thisexamlabel}{\thepage}}%
+ \fi
+}
+\def\acp@mpah{\itemPTsFormated{\itemPTsTxt{\numpoints}}\space}
+\def\acp@mpph{\noindent\marginpoints{\numpoints}{0}}
+\def\autocalcparts{%
+ \setcounter{eq@count}{\value{eqquestionnoi}}%
+ \addtocounter{eq@count}{1}%
+ \csarg\ifx{prob\thisexamlabel.\theeq@count}\relax
+ \def\numpoints{0}% assume zero points until we get the total
+ \else
+ \edef\numpoints{\@nameuse{prob\thisexamlabel.\theeq@count}}%
+ \fi
+ \ifx\marginpoints\@empty\else
+ \ifdispl@yPoints
+ \if\@isitstar\eqe@One
+ \def\marginparafterhook{\acp@mpah}\else
+ \def\marginparpriorhook{\acp@mpph}\fi
+ \fi
+ \fi
+ \setcounter{eq@count}{0}%
+}
+\let\eqe@fpmrk\@empty
+\newcommand{\forproblem}[1]{\def\eqe@fpmrk{-\the@exno}%
+ \setcounter{eqquestionnoi}{#1 - 1}}
+\newcommand{\foritem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\item}\else
+ \def\eqe@nextitem{\item[#1]}\fi
+ \foritem@cont{#2}}
+\newcommand{\forleadinitem}[2][]{%
+ \setcounter{partno}{0}\def\@rgi{#1}\ifx\@rgi\@empty
+ \def\eqe@nextitem{\leadinitem}\else
+ \def\eqe@nextitem{\leadinitem[#1]}\fi
+ \foritem@cont{#2}}
+\def\foritem@cont#1{\ifuseNumForParts
+ \edef\fliPartNo{#1}\setcounter{partno}{#1-1}\else
+ \lowercase{\def\eq@selectedItem{#1}}%
+ \let\eq@initLoop\eqe@NO
+ \loop
+ \stepcounter{partno}\expandafter
+ \if\alph{partno}\eq@selectedItem
+ \let\eq@initLoop\eqe@YES\fi
+ \ifx\eq@initLoop\eqe@NO\repeat
+ \edef\fliPartNo{\the\c@partno}%
+ \addtocounter{partno}{-1}\fi\let\itsforleadinitem\eqe@YES
+ \eqe@nextitem}
+\newcommand{\annotContStr}{%
+ \textbf{Problem~{\eqeCurrProb} continued\strut}}
+\newcommand{\acvspace}[1]{\def\ic@vspace{#1}\setlength\iacvspace{#1}}
+\newlength\iacvspace
+\newcommand{\ic@vspacedefault}{1in} % changed .25in to 1in 2012/12/04
+\newcommand{\resetacvspace}{\setlength\iacvspace{\ic@vspacedefault}}
+\resetacvspace
+\def\@nnotContStrSkip{\vskip3pt}
+\newcommand{\eqe@insertContAnnot}[1][\iacvspace]{\promoteNewPage[#1]%
+ \ifnum\arabic{page}>\eq@currProbStartPage
+ \xdef\eq@currProbStartPage{\arabic{page}}%
+ {\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\eqe@partsIndent{\the\eq@tmplength}}%
+ \ifwithinparts
+ \@ifundefined{eq@item@latex}{\item[]\hspace*{-\eqemargin}%
+ \ifx\solutionparshape\@empty\else\hspace*{-\eqe@partsIndent}\fi}
+ {\eq@item@latex[]\hspace*{-\eqemargin}%
+ \hspace{-\eqe@partsIndent}}\else
+ \hspace*{-\eqemargin}\fi
+ \annotContStr\@nnotContStrSkip % dpsj20
+ \fi
+}
+\edef\eq@currProbStartPage{\arabic{page}}
+\newif\ifcont@nnot \cont@nnotfalse
+\newcommand{\turnContAnnotOff}{\global\cont@nnotfalse
+ \global\let\eq@insertContAnnot\relax}
+\newcommand{\turnContAnnotOn}{\global\cont@nnottrue
+ \global\let\eq@insertContAnnot\eqe@insertContAnnot}
+\turnContAnnotOff
+\def\insertContAnnot{\eq@insertContAnnot}
+\newcommand\aNewPage{\ifanswerkey\newpage\fi}
+\newcommand\qNewPage{\ifanswerkey\else\newpage\fi}
+\newcounter{backofpage}
+\newcommand\bopText{on the back of page~\boPage}
+\newcommand\bopCoverPageText{on the back of the cover page}
+\newcommand\OnBackOfPage[1][\bopText]{%
+ \refstepcounter{backofpage}\label{bop\thebackofpage}
+ \begingroup
+ \csarg\ifx{r@bop\thebackofpage}\relax
+ \def\boPage{??}\else
+ \edef\eqe@temp{\csname r@bop\thebackofpage\endcsname}%
+ \ifx\hyper@anchor\@undefined
+ \edef\boPage{\expandafter\@secondoftwo\eqe@temp}\else
+ \edef\boPage{\expandafter\@secondoffive\eqe@temp}\fi
+ \c@eq@count\boPage
+ \advance\c@eq@count-1\relax
+ \edef\boPage
+ {%
+ \ifx\eqex@coverpage\relax
+ \ifnum\value{eq@count}=0
+ 1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \else
+ \ifnum\value{eq@count}=0
+ -1%
+ \else
+ \the\value{eq@count}%
+ \fi
+ \fi
+ }%
+ \fi
+ \csarg\ifx{r@bop\thebackofpage}\relax#1\else
+ \ifnum\boPage=-1\relax\bopCoverPageText\else#1\fi\fi
+ \endgroup
+}
+\newcommand{\useFillerLines}{\ifx\vspaceFiller % dpsj8
+ \vspaceFillerLines\else\@eqlinedfillertrue
+ \let\vspaceFiller\vspaceFillerLines\fillTypeDefault
+\fi}
+\newcommand{\useFillerDefault}{\@eqlinedfillerfalse
+ \let\vspaceFiller\vspaceFillerDefault
+ \let\eqWriteLine\hfill}
+\newcommand{\fillTypeHRule}{\let\eqWriteLine\eqWriteLineFill
+ \let\makeVgrid\relax}
+\newcommand{\fillTypeDots}{\let\eqWriteLine\eqWriteLineDots
+ \let\makeVgrid\relax}
+\newcommand{\fillTypeDashLine}{\let\eqWriteLine\eqWriteLineDashFill
+ \let\makeVgrid\relax}
+\newcommand{\fillTypeBlankLine}{\let\eqWriteLine\eqWriteLineBlankFill
+ \let\makeVgrid\relax}
+\newcommand{\fillTypeDefault}{\let\eqWriteLine\eqWriteLineFill
+ \let\makeVgrid\relax}
+\newcommand{\fillTypeGrid}{\ifx\vspaceFiller\vspaceFillerLines
+ \let\eqWriteLine\eqWriteLineFill\let\makeVgrid\eqe@makeVgrid\fi}
+\newcommand{\eqWriteLineColor}[1]{\def\eq@WriteLineColor{#1}}
+\eqWriteLineColor{gray}
+\newlength\wlVspace
+\newcommand{\eqWLSpacing}[1]{\setlength\wlVspace{#1}}
+\eqWLSpacing{14.0pt}
+\newcommand{\eqWriteLineFill}{%
+ \textcolor{\eq@WriteLineColor}{\leaders
+ \hrule height \flfboxrule\hfill}}
+\newbox\eqe@tempbox
+\newbox\eqe@nskeyflsplit
+\newbox\eqe@nskeyfltop
+\def\eqdotrulefill{\leavevmode
+ \cleaders\hb@xt@ .44em{\copy\eqe@tempbox\hss}\hfill} % dps16
+\newcommand{\eqWriteLineDots}{%
+ \textcolor{\eq@WriteLineColor}{\eqdotrulefill}}
+\def\eqdashrulefill{\leavevmode
+ \cleaders\hb@xt@ .44em{\rule{.22em}{\flfboxrule}\hss}\hfill\kern\z@}
+\newcommand{\eqWriteLineDashFill}{%
+ \textcolor{\eq@WriteLineColor}{\eqdashrulefill}}
+\newcommand{\eqWriteLineBlankFill}{\vphantom{\hrulefill}}
+\newcommand{\eqWriteLineVFill}{\leaders\vrule width\flfboxrule\vfill}
+\def\eqdotruleVfill{\cleaders\vbox to .44em{\vss
+ \hbox to0pt{\hss.\hss}}\vfill}
+\newcommand{\eqWriteLineVDots}{\eqdotruleVfill}
+\def\eqdashruleVfill{\cleaders\vbox to .44em{\vss
+ \hbox to0pt{\hss\rule{\flfboxrule}{.22em}\hss}}\vfill}
+\newcommand{\eqWriteLineDashVFill}{\eqdashruleVfill}
+\newif\if@equsedim \@equsedimtrue
+\newcommand{\useVspaceDimen}{\@equsedimtrue}
+\newcommand{\usenLineDimen}{\@equsedimfalse}
+\newif\if@eqalignfilllinestoleft\@eqalignfilllinestoleftfalse
+\newcommand{\fillerLinesOnLeftMargin}{\@eqalignfilllinestolefttrue}
+\newcommand{\fillerLinesAlignDef}{\@eqalignfilllinestoleftfalse}
+\newcommand\priorPageBreakMsg[1]{\def\priorP@geBre@kMsg{#1}}
+\let\priorP@geBre@kMsg\@empty
+\newcommand{\flPageBreakMsg}[1]{%
+ \priorPageBreakMsg{\emitMessageNearBottom[\iacvspace]
+ {\eqfititin{{\Large\strut}#1}}}%
+}
+\let\makeVgrid\relax %dps1
+\define@choicekey+{eqefillLines}{numbers}[\val\nr]%
+ {none,left,right}[none]{\ifcase\nr\relax
+ \let\eqe@numLinesL\relax\let\eqe@numLinesR\relax\or
+ \let\eqe@numLinesL\eqe@@numLinesL\let\eqe@numLinesR\relax\or
+ \let\eqe@numLinesL\relax\let\eqe@numLinesR\eqe@@numLinesR
+ \fi
+}{\PackageWarning{aeb}{Bad choice for numbers, permissible values
+ are none, left, and right. Try again}}
+\let\eqe@numLinesL\relax\let\eqe@numLinesR\relax
+\define@key{eqefillLines}{numbersep}[2pt]{%
+ \setlength{\eqetmplengtha}{#1}%
+ \edef\eqe@numbersep{\the\eqetmplengtha}}
+\def\eqe@numbersep{2pt}
+\define@key{eqefillLines}{color}[]{\def\eq@WriteLineColor{#1}}
+\define@boolkey{eqefillLines}{topline}[true]{}
+\KV@eqefillLines@toplinefalse
+\let\eqe@usedeffboxrule\eqe@NO % dps20
+\let\gridtypeselected\@empty % dps26
+\define@choicekey+{eqefillLines}{gridtype}[\val\nr]%
+ {line,dash,dots}[line]{\edef\gridtypeselected{\val}% dps26
+ \ifcase\nr\relax
+ \let\gridHLineFill\eqWriteLineFill
+ \let\gridVLineFill\eqWriteLineVFill
+ \or
+ \let\gridHLineFill\eqWriteLineDashFill
+ \let\gridVLineFill\eqWriteLineDashVFill
+ \or
+ \let\gridHLineFill\eqWriteLineDots
+ \let\gridVLineFill\eqWriteLineVDots
+ \let\eqe@usedeffboxrule\eqe@YES %dps20
+ \fi
+}{\PackageWarning{aeb}{Bad choice for numbers, permissible values
+ are line, dash, and dots. Try again}}
+\let\gridHLineFill\eqWriteLineFill
+\let\gridVLineFill\eqWriteLineVFill
+\define@choicekey+{eqefillLines}{fltype}[\val\nr]%
+ {line,dash,dots,blank,grid}[line]{\ifcase\nr\relax
+ \fillTypeHRule\or
+ \fillTypeDashLine\or
+ \fillTypeDots
+ \let\eqe@usedeffboxrule\eqe@YES\or % dps20
+ \fillTypeBlankLine\or
+ \fillTypeGrid\fi
+}{\PackageWarning{aeb}{Bad choice for numbers, permissible values
+ are line, dash, dots, blank, and grid. Try again}}
+\define@choicekey+{eqefillLines}{align}[\val\nr]%
+ {default,left}[default]{\ifcase\nr\relax
+ \fillerLinesAlignDef\or
+ \fillerLinesOnLeftMargin\fi
+}{\PackageWarning{aeb}{Bad choice for numbers, permissible values
+ are line, dash, dots, blank, and grid. Try again}}
+\define@choicekey*{eqefillLines}{equalcells}[\val\nr]%
+ {true,false}[true]{\ifcase\nr\relax
+ \equalCellSizesOn\or
+ \equalCellSizesOff\fi
+}
+\define@boolkey{eqefillLines}{outlineonly}[true]{}
+\KV@eqefillLines@outlineonlyfalse
+\define@choicekey{eqefillLines}{outlineonly*}{true,false}[true]{% dps26
+ \@nameuse{KV@eqefillLines@outlineonly#1}%
+ \def\eqefillLines@outlineonlystar{#1}}%
+\let\eqefillLines@outlineonlystar\@empty
+\define@boolkey{eqefillLines}{bgonly}[true]{} % dps11
+\KV@eqefillLines@bgonlyfalse
+\define@choicekey{eqefillLines}{bgonly*}{true,false}[true]{% dps26
+ \@nameuse{KV@eqefillLines@bgonly#1}%
+ \def\eqefillLines@bgonlystar{#1}}
+\let\eqefillLines@bgonlystar\@empty
+\define@key{eqefillLines}{bgcolor}[]{\def\eqe@BGColor{#1}} % dps11
+\let\eqe@BGColor\@empty
+\def\fillLinesNumFmt#1{\def\eqe@fillLinesNumFmt##1{\def\flnum{##1}#1}}
+\fillLinesNumFmt{\flnum} % set to default values
+\define@key{eqefillLines}{numfmt}[]{\fillLinesNumFmt{#1}} % dps21
+\define@key{eqefillLines}{linegap}[14pt]{\def\fl@wlspacing{#1}} % dps21
+\def\fl@wlspacing{14pt}
+\newcommand{\setFillLinesFmt}[1]{\def\@rgi{#1}%
+ \let\eqe@usedeffboxrule\eqe@NO %dps20
+ \let\gridtypeselected\@empty
+ \ifx\@rgi\@empty
+ \setkeys{eqefillLines}{numbers,numbersep,color,
+ gridtype,fltype,align}%
+ \else
+ \let\is@outlineonly\eqe@NO\let\is@bgonly\eqe@NO
+ \ifKV@eqefillLines@outlineonly\let\is@outlineonly\eqe@YES\fi
+ \ifKV@eqefillLines@bgonly\let\is@bgonly\eqe@YES\fi
+ \setkeys{eqefillLines}{#1}%
+ \eqWLSpacing{\fl@wlspacing}%
+ \ifx\makeVgrid\relax
+ \KV@eqefillLines@toplinefalse
+ \equalCellSizesOff % dpsj15
+ \ifx\is@bgonly\eqe@YES % carryover from prev prob
+ \ifKV@eqefillLines@bgonly
+ \KV@eqefillLines@bgonlyfalse
+ \else
+ \PackageWarning{eqexam}{You must specify fltype=grid for
+ bgonly to work.\MessageBreak
+ Ignoring this key for now}%
+ \KV@eqefillLines@bgonlyfalse
+ \let\is@bgonly\eqe@NO
+ \fi
+ \else % not continuation
+ \ifKV@eqefillLines@bgonly
+ \PackageWarning{eqexam}{You must specify fltype=grid for
+ bgonly to work.\MessageBreak
+ Ignoring this key for now}%
+ \KV@eqefillLines@bgonlyfalse
+ \let\is@bgonly\eqe@NO
+ \fi
+ \fi
+ \ifx\is@outlineonly\eqe@YES % carryover from prev prob
+ \ifKV@eqefillLines@outlineonly
+ \KV@eqefillLines@outlineonlyfalse
+ \else % dps18
+ \PackageWarning{eqexam}{You must specify fltype=grid for
+ outlineonly to work.\MessageBreak
+ Ignoring this key for now}%
+ \KV@eqefillLines@outlineonlyfalse
+ \let\is@outlineonly\eqe@NO
+ \fi
+ \else % not continuation
+ \ifKV@eqefillLines@outlineonly
+ \PackageWarning{eqexam}{You must specify fltype=grid for
+ outlineonly to work.\MessageBreak
+ Ignoring this key for now}%
+ \KV@eqefillLines@outlineonlyfalse
+ \let\is@outlineonly\eqe@NO
+ \fi
+ \fi
+ \let\gridHLineFill\eqWriteLine
+ \let\gridVLineFill\eqWriteLine
+ \else
+ \ifx\gridtypeselected\@empty % dps26
+ \let\gridHLineFill\eqWriteLineFill
+ \let\gridVLineFill\eqWriteLineVFill
+ \fi
+ \fi
+ \fi
+}
+\def\eqe@@numLinesL{\ifKV@eqefillLines@topline\ifnum\@tempcntb>0 % dps5
+ \smash{\llap{\tiny
+ \eqe@fillLinesNumFmt{\the\@tempcntb}\hglue\eqe@numbersep\relax}}\fi
+ \else\smash{\llap{\tiny
+ \eqe@fillLinesNumFmt{\the\@tempcntb}\hglue\eqe@numbersep\relax}}\fi}
+\def\eqe@@numLinesR{\smash{\rlap{\tiny
+ \hglue\eqe@numbersep\relax\eqe@fillLinesNumFmt{\the\@tempcntb}}}}
+\let\fillLinesLineWidth\@empty
+\newif\ifgridpgbrk\gridpgbrkfalse % dps7
+\newif\ifwriteVertic@lFLines \writeVertic@lFLinestrue % dps16
+\def\fl@set@nnotContStrSkip{\def\@nnotContStrSkip{\vskip6pt}} % dpsj23
+\let\p@ssToFLs\relax
+\newif\iffl@firstpass % dps27
+\newcommand{\vspaceFillerLines}[1]{\begingroup\offinterlineskip %dps1
+ \global\fl@firstpasstrue % dps27
+ \fl@set@nnotContStrSkip % dpsj20
+ \p@ssToFLs\if@eqlinedfiller
+ \def\eqe@next{\vspaceFillerLines@i{#1}}\else
+ \expandafter\def\expandafter\eqe@next
+ \expandafter{\expandafter\endgroup\p@ssToFLs}\fi
+ \global\let\p@ssToFLs\relax\eqe@next}
+\def\vspaceFillerLines@i#1{\advance\wlVspace-\flfboxrule % dps25
+ \ifx\eqe@usedeffboxrule\eqe@YES\flfboxrule=.4pt\fi % dps20
+ \ifKV@eqefillLines@outlineonly\KV@eqefillLines@toplinetrue %dps10
+ \KV@eqefillLines@bgonlyfalse % dps11
+ \equalCellSizesOff\let\makeVgrid\eqe@makeVgrid\fi %dps10
+ \ifKV@eqefillLines@bgonly\KV@eqefillLines@toplinetrue
+ \KV@eqefillLines@outlineonlyfalse\flfboxrule=.4pt % dps20
+ \equalCellSizesOff\let\makeVgrid\eqe@makeVgrid\fi %dps11
+ \parindent0pt\relax\parskip0pt
+ \@tempdima\wlVspace\eqetmplengtha0pt
+ \@tempcnta=0 \@tempcntb=1
+ \def\eqe@fillwidth{\linewidth+\eqetmplengtha}%
+ \eqe@wrtLineKernal
+ \setbox\eqe@tempbox\hbox{\hb@xt@0pt{\hss.\hss}}\ht\eqe@tempbox.33pt
+ \dp\eqe@tempbox0pt % dps16
+ \ifx\makeVgrid\relax
+ \equalCellSizesOff
+ \else % dps2
+ \let\eqWriteLine\gridHLineFill
+ \forceEqu@lCells % dps2
+ \ifx\flEqu@lLineWidth\@empty\else
+ \linewidth=\flEqu@lLineWidth\relax\fi
+ \ifKV@eqefillLines@bgonly\else
+ \ifKV@eqefillLines@topline\bgroup\@tempcntb=0% dps5
+ \makebox[0pt][l]{\eqe@x
+ \makebox[\eqe@fillwidth]{\eqWriteLine}}\egroup
+ \fi\fi % dps5
+ \fi
+ \settowidth{\eqetmplengthb}{\eqe@decPointPrb}\def\vfGo@l{#1}%
+ \ifx\makeVgrid\relax\else
+ \def\priorPNPAction{\xdef\fl@nRows{\the\@tempcnta}% dps27
+ \if@eqalignfilllinestoleft\eqe@x\fi % dpsj12
+ \makeVgrid\priorP@geBre@kMsg\global\fl@firstpassfalse}% dps4
+ \def\postPNPAction{\global\gridpgbrktrue % dps27
+ \setlength{\@tempdima}
+ {(\vfGo@l+\wlVspace)-\depthtodate}% dps25
+ \edef\vfGo@l{\the\@tempdima}\@tempdima=\wlVspace\relax
+ \@tempcnta=0\relax}% dps18
+ \fi
+ \@whiledim\@tempdima<\vfGo@l\relax\do
+ {\edef\depthtodate{\the\@tempdima}%
+ \ifx\eqe@insert@more@content\relax\ifx\makeVgrid\relax
+ \priorP@geBre@kMsg\fi\fi %dps15
+ \eq@insertContAnnot\vskip\wlVspace\eqe@x
+ \ifKV@eqefillLines@bgonly\vglue\flfboxrule\else % dpsj11 dpsj21
+ \ifKV@eqefillLines@outlineonly\vglue\flfboxrule\else %dps10
+ \makebox[0pt][l]{\eqe@numLinesL
+ \makebox[\eqe@fillwidth]{\eqWriteLine}\eqe@numLinesR}\fi
+ \fi
+ \advance\@tempcnta1\relax\advance\@tempcntb1\relax
+ \edef\depthtodate{\the\@tempdima}%
+ \addtolength{\@tempdima}{\wlVspace}%\par dps25
+ }\xdef\fl@nRows{\the\@tempcnta}\makeVgrid % dps27
+ \ifx\makeVgrid\relax\else %dps15
+ \ifvoid\eqe@nskeyflsplit\else\PackageWarning{eqexam}
+ {Some material from a solution environment does not\MessageBreak
+ appear. Increase space allotted}{\normalcolor
+ \llap{\smash{\rule{5pt}{5pt}}}}\aftergroup
+ \reset@color\fi % dpsj24
+ \fi
+ \setlength{\@tempdima}{\vfGo@l-\depthtodate}\vskip\@tempdima
+ \dimen0=\sameVspace\relax
+ \dimen2=\fboxrule\advance\dimen0by\dimen2
+ \xdef\sameVspace{\the\dimen0 }\endgroup
+ \global\flfrstsplittrue
+}
+\def\eq@linesXPgs{\@tempdimb\wlVspace % dpsj20
+ \advance\@tempdimb-\flfboxrule
+ \@tempdimb=\soln@keys@nLines\@tempdimb
+ \advance\@tempdimb\flfboxrule
+ \expandafter\vspaceFillerLines\expandafter{\the\@tempdimb}}
+\def\eqe@wrtLineKernal{\let\eqe@x\relax\let\eqe@y\relax % dpsj9
+ \ifx\solutionparshape\@empty % not lead-in
+ \if@eqalignfilllinestoleft % align on left
+ \setlength{\eqetmplengtha}{\labelwidth+\eqemargin}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifwithinparts
+ \ifx\istabularexer\eq@YES % tabular mode
+ \setlength{\eqetmplengtha}{\prtsIndntSep}% dps27
+ \eq@tmplengthA\eqetmplengtha
+ \def\eqe@x{\hglue-\prtsIndntSep}% dps27
+ \ifKV@eqefillLines@outlineonly\let\eqe@y\eqe@x\fi
+ \else
+ \settowidth{\eqetmplengtha}{\eqe@prtsepPrb}%
+ \setlength{\eqetmplengtha}{\eqetmplengtha+\widthOfParts}% dps9
+ \setlength{\eq@tmplengthA}{\eqetmplengtha}% dps9
+ \def\eqe@x{\hspace*{-\eqetmplengtha}\hglue-\flfboxrule}% dps27
+ \fi
+ \else % not parts, still align left
+ \def\eqe@x{\hspace*{-\eqemargin}}%
+ \eqetmplengtha\eqemargin
+ \eq@tmplengthA\eqemargin
+ \fi
+ \else % not lead-in, not align on left
+ \ifwithinparts
+ \setlength{\eqetmplengtha}{\labelwidth}%
+ \setlength{\eqetmplengtha}
+ {\eqetmplengtha+\eqetmplengthb}%
+ \ifx\istabularexer\eq@YES % tabular mode
+ \eqetmplengtha0pt
+ \eq@tmplengthA\eqetmplengtha % dps27
+ \else %dps2
+ \def\eqe@x{\hglue-\flfboxrule}% dps4
+ \eqetmplengtha0pt
+ \eq@tmplengthA\eqetmplengtha
+ \fi
+ \else % not parts, not align left
+ \eqetmplengtha0pt
+ \eq@tmplengthA\eqetmplengtha
+ \fi
+ \fi
+ \else % lead-in
+ \if@eqalignfilllinestoleft
+ \setlength{\eqetmplengtha}{\leadinIndentPrtSep}% dps27
+ \eq@tmplengthA\eqetmplengtha
+ \else
+ \eqetmplengtha0pt
+ \eq@tmplengthA\eqetmplengtha
+ \fi
+ \fi
+}
+\newif\ifforceEqualCells
+\def\equalCellSizesOn{\global\let\flEqu@lLineWidth\@empty
+ \global\forceEqualCellstrue}
+\def\equalCellSizesOff{\global\let\flEqu@lLineWidth\@empty
+ \global\forceEqualCellsfalse}
+\equalCellSizesOff
+\def\forceEqu@lCells{\bgroup
+ \ifforceEqualCells
+ \dimen6\wlVspace % reduced from \vspaceFillerLines
+ \advance\dimen6\flfboxrule
+ \dimen2=\z@
+ \dimen4\linewidth
+ \advance\dimen4by-\flfboxrule
+ \if@eqalignfilllinestoleft % dps8
+ \advance\dimen4\eq@tmplengthA
+ \fi
+ \@tempcnta0
+ \@whiledim \dimen2 < \dimen4 \do{%
+ \advance\@tempcnta1
+ \advance\dimen2by\dimen6
+ }%
+ \advance\@tempcnta-1
+ \advance\dimen2-\dimen6
+ \advance\dimen2\flfboxrule
+ \advance\dimen2by-\eq@tmplengthA
+ \xdef\flEqu@lLineWidth{\the\dimen2}%
+ \fi
+\egroup}
+\let\eqe@insert@more@content\relax
+\def\gobtodot#1.#2\@nil{\def\intPrt{#1}\def\fracPrt{#2}}
+\def\dbMrk#1{\textsf{\footnotesize#1}}
+\@ifundefined{ifeqedb}{\newif\ifeqedb \eqedbfalse}{}
+\def\fillerCustomBg#1{\def\fillerBgIm@ge##1##2{#1}}
+\def\resetFillerCustomBg{\let\fillerBgIm@ge\@empty}
+\resetFillerCustomBg
+\def\gridIndentAdj#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\gridIndent@dj\relax\else % dps4
+ \setlength{\@tempdima}{#1}\edef\gridIndent@dj{\the\@tempdima}\fi}
+\let\gridIndent@dj\relax
+\def\eqe@makeVgrid{\begingroup
+ \@tempcnta=\fl@nRows\relax
+ \advance\wlVspace\flfboxrule % dps25
+ \setlength{\@tempdima}{\eqe@fillwidth}%
+ \setlength{\@tempdimb}{\wlVspace}%
+ \edef\eqe@tmp{\strip@pt\@tempdimb}%
+ \expandafter\gobtodot\eqe@tmp.\@nil
+ \divide\@tempdima by\intPrt\relax
+ \dimen2=\@tempdima
+ \dimen4=1pt
+ \advance\dimen2 by 0.5\dimen4
+ \divide\dimen2 by \dimen4
+ \multiply\dimen2 by \dimen4
+ \edef\eqe@tmp{\strip@pt\dimen2}%
+ \expandafter\gobtodot\eqe@tmp.\@nil
+ \advance\@tempcnta-1\relax % dps21
+ \multiply\@tempdimb\@tempcnta
+ \edef\eqe@HOfVrule{\the\@tempdimb}% dps7
+ \ifKV@eqefillLines@topline % dps21
+ \advance\@tempdimb\wlVspace
+ \advance\@tempdimb\flfboxrule
+ \edef\eqe@HOfVruleFrstRow{\the\@tempdimb}%
+ \def\eqe@setVRule{\vbox
+ to\eqe@HOfVruleFrstRow\relax{\gridVLineFill}}% dps8
+ \else
+ \def\eqe@setVRule{\vbox
+ to\eqe@HOfVrule\relax{\gridVLineFill}}% dps8
+ \fi
+ \eqe@tempcnta=0
+ \dimen2=\wlVspace
+ \count4=\intPrt\relax
+ \setlength{\dimen4}{\eqe@fillwidth}%
+ \multiply\dimen2by\count4
+ \@whiledim \dimen2 > \dimen4 \do{%
+ \advance\count4by-1\relax
+ \edef\intPrt{\the\count4 }%
+ \dimen2\wlVspace
+ \multiply\dimen2by\count4
+ }%
+ \dimen2\wlVspace
+ \if@eqalignfilllinestoleft % dps27
+ \let\fl@oSmash\smash\let\fl@iSmash\relax
+ \else
+ \let\fl@iSmash\smash\let\fl@oSmash\relax
+ \fi
+ \fl@oSmash{%
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth][l]{\fl@iSmash{% dps27
+ \ifx\gridIndent@dj\relax\else
+ \hglue\gridIndent@dj\relax\fi
+ \eqe@y\ifeqedb\rlap{\dbMrk{D}}\fi % dpsj9 \eqe@y (fudge)
+ \rlap{\ifeqedb\rlap{\dbMrk{B}}\fi
+ \ifwriteVertic@lFLines % dps16
+ \setlength{\@tempdima}{\eqe@fillwidth}%
+ \ifKV@eqefillLines@bgonly % dps11
+ \ifx\fillerBgIm@ge\@empty
+ \ifx\eqe@BGColor\@empty\else
+ \rlap{\textcolor{\eqe@BGColor}
+ {\rule{\eqe@fillwidth}{\eqe@HOfVruleFrstRow}}}\fi
+ \else
+ \rlap{\fillerBgIm@ge{\eqe@fillwidth}{\eqe@HOfVruleFrstRow}}\fi
+ \else
+ \dimen2=\wlVspace
+ \dimen0=0pt
+ \@whilenum\eqe@tempcnta<\count4\do{\rlap{\hglue\dimen0
+ \ifKV@eqefillLines@outlineonly %dps10
+ \ifnum\eqe@tempcnta=0 \else\let\gridVLineFill\vfill\fi\fi
+ \textcolor{\eq@WriteLineColor}{\eqe@setVRule % dps27
+ \ifeqedb\rlap{\advance\eqe@tempcnta by1\relax\scriptsize
+ \raisebox{1pt}{\kern1pt\the\eqe@tempcnta}}\fi}}%
+ \advance\dimen0by\dimen2
+ \advance\eqe@tempcnta by1
+ }% dps27
+ \fi % dps11
+ \advance\dimen2by\flfboxrule
+ \ifKV@eqefillLines@bgonly\else % dps11
+ \rlap{\hglue\@tempdima
+ \textcolor{\eq@WriteLineColor}{\eqe@setVRule
+ \ifeqedb\rlap{\thinspace\dbMrk{R}}\fi}}%
+ \ifKV@eqefillLines@outlineonly %dps10
+ \makebox[0pt][l]{\makebox[\eqe@fillwidth]{\eqWriteLine}}%dps10
+ \fi
+ \ifKV@eqefillLines@topline% dps7
+ \ifgridpgbrk\@tempdima\eqe@HOfVruleFrstRow\relax % dps21
+ \raise\@tempdima\hbox{\makebox[0pt][l]{%
+ \makebox[\eqe@fillwidth]{\eqWriteLine}}}%
+ \global\gridpgbrkfalse
+ \fi
+ \fi
+ \fi
+ \ifx\eqefillLines@outlineonlystar\@empty\else % dps26
+ \global\let\eqefillLines@outlineonlystar\@empty
+ \global\KV@eqefillLines@outlineonlyfalse
+ \fi
+ \ifx\eqefillLines@bgonlystar\@empty\else % dps26
+ \global\let\eqefillLines@bgonlystar\@empty
+ \global\KV@eqefillLines@bgonlyfalse
+ \fi
+ \fi % ifwriteVertic@lFLines
+ \eqe@insert@more@content
+ }% rlap
+ }% smash (fl@iSmash)
+}}}% makeboxes and \fl@oSmash
+ \endgroup
+}% \eqe@makeVgrid
+\def\turnfl@nskeyMsg{\PackageWarning{eqexam}
+ {You must first take the flextended\MessageBreak
+ option for this command to have any\MessageBreak effect}}
+\def\turnflanskeyOn{\turnfl@nskeyMsg}
+\def\priorw@Msg{\PackageWarningNoLine{eqexam}
+ {The priorworkarea environment does nothing\MessageBreak
+ without the flextended option. All such content\MessageBreak in these
+ environments are absorbed}\global\let\priorw@Msg\@empty}
+\newenvironment{priorworkarea}{\priorw@Msg
+ \setbox\eqe@nskeyflsplit\vbox\bgroup}
+ {\egroup\setbox\eqe@nskeyflsplit\box\voidb@x}
+\let\turnflanskeyOff\turnflanskeyOn
+\newif\ifflfrstsplit \flfrstsplittrue
+\newif\ifeqe@flnosolns \eqe@flnosolnsfalse
+\def\turnflnosolnsOn{\eqe@flnosolnstrue\turnflanskeyOn}
+\def\turnflnosolnsOff{\eqe@flnosolnsfalse\turnflanskeyOn}
+\newdimen\flfboxrule \flfboxrule=.4pt
+\def\tweakBreakPoint#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \gdef\twe@kBre@kPoint{0pt}\else
+ {\setlength{\@tempdima}{#1}%
+ \xdef\twe@kBre@kPoint{\the\@tempdima}}\fi}
+\def\twe@kBre@kPoint{0pt}
+\def\eq@b@ddCodeSpecial#1{\if@eqlinedfiller
+ \ifKV@eqefillLines@bgonly\leavevmode
+ \vskip-\baselineskip\kern\lineskip\fi\fi#1}
+\def\flSeparateCutNames{\def\fl@CutName{flx\fl@Cnt-\jobname.cut}}
+\ifeqfortextbook\else
+ \if@bypasseqexamheading\else
+\pagestyle{eqExamheadings}\fi\fi
+\ifeqfortextbook
+\AtBeginDocument{\tb@soln@choice
+ \ifeqwritetomargins\chkmarginboxwidth
+ \AddToShipoutPicture{\eqe@tb@shipout}\fi}
+\fi
+\edef\ftbInputEqTextb{\ifeqfortextbook\noexpand
+ \InputIfFileExists{eqtextb.def}{}{}\fi}
+\ftbInputEqTextb
+\define@boolkey{eqFillin}{underline}[true]{}
+\define@key{eqFillin}{u}[]{\KV@eqFillin@underlinetrue}
+\define@key{eqFillin}{b}[]{\KV@eqFillin@underlinefalse}
+\define@boolkey{eqFillin}{boxed}[true]{}
+\define@key{eqFillin}{boxpretext}[]{\def\eq@fillintext{#1}}
+\let\eq@fillintext\@empty
+\define@key{eqFillin}{parbox}[\relax]{\def\eq@fillinparbox{#1}}
+\let\eq@fillinparbox\@empty
+\define@key{eqFillin}{hiddenbox}[]{%
+ \def\eq@fillinhiddenbox{%
+ \setlength{\fboxrule}{0pt}\setlength{\fboxsep}{0pt}}}
+\let\eq@fillinhiddenbox\@empty
+\define@boolkey{eqFillin}{enclosesoln}[true]{}
+\define@choicekey+{eqFillin}{boxsize}{tiny,scriptsize,footnotesize,%
+ small,normalsize,large,Large,LARGE,huge,Huge}[normalsize]{%
+ \def\eq@eqFillin@boxsize{\text{\csname#1\endcsname\strut}}%
+}{\PackageWarning{eqexam}{Bad choice for boxsize, permissible values
+ are tiny, scriptsize, footnotesize, small, normalsize,
+ large, Large, LARGE, huge and Huge. Try again}}
+\def\eq@eqFillin@boxsize{\text{\normalsize\strut}}
+\define@key{eqFillin}{fboxsep}[3pt]{\def\eq@fillin@fboxsep{#1}}
+\def\eq@fillin@fboxsep{3pt}
+\define@choicekey+{eqFillin}{fontsize}{tiny,scriptsize,footnotesize,%
+ small,normalsize,large,Large,LARGE,huge,Huge}[normalsize]{%
+ \def\eq@eqFillin@fontsize{\csname#1\endcsname}%
+}{\PackageWarning{eqexam}{Bad choice for boxsize, permissible values
+ are tiny, scriptsize, footnotesize, small, normalsize,
+ large, Large, LARGE, huge and Huge. Try again}}
+\def\eq@eqFillin@fontsize{\ifmmode\else\normalsize\fi}
+\define@key{eqFillin}{color}[\eq@fillinColor]{\edef\eq@fillin@color{#1}}
+\define@choicekey+{eqFillin}{align}[\val\nr]%
+ {l,r,c}[\eq@eqFillin@align@default]{%
+ \def\eq@eqFillin@align{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill{}\or
+ \def\eqe@align@hfill{\hfill}\or
+ \def\eqe@align@hfill{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for align, permissible values
+ are l, r, and c. Try again}}
+\let\eqe@align@hfill\relax
+\define@choicekey+{eqFillin}{defaultalign}[\val\nr]{l,r,c}[c]{%
+ \def\eq@eqFillin@align@default{#1}%
+ \ifcase\nr\relax
+ \def\eqe@align@hfill@default{}\or
+ \def\eqe@align@hfill@default{\hfill}\or
+ \def\eqe@align@hfill@default{\hfil}\fi
+ }{%
+ \PackageWarning{eqexam}{Bad choice for defaultalign, permissible
+ values are l, r, and c. Try again}}
+\setkeys{eqFillin}{defaultalign=c}
+\renewcommand{\fillInFormatDefault}{\normalfont}
+\define@key{eqFillin}{format}[\fillInFormatDefault]{%
+ \def\eq@fillin@format{#1}}
+\def\eq@fillin@format{\bfseries}
+\def\eqe@fbox@corr#1{#1-2\fboxsep-2\fboxrule}
+\define@boolkey{eqFillin}{fitwidth}[true]{} %
+\@ifundefined{boxed}{%
+ \def\eq@fillin@defaultbox{\fbox}%
+ \def\eq@fillin@boxcmd{\fbox}%
+ }{%
+ \def\eq@fillin@defaultbox{\boxed}%
+ \def\eq@fillin@boxcmd{\boxed}%
+ }
+\define@key{eqFillin}{boxcmd}%
+ [\eq@fillin@defaultbox]{\def\eq@fillin@boxcmd{#1}}
+\@ifundefined{underbar}{%
+ \def\eq@fillin@defaultul{underline}%
+ \def\eq@fillin@ulcmd{\underline}%
+ }{%
+ \def\eq@fillin@defaultul{underbar}%
+ \def\eq@fillin@ulcmd{\underbar}%
+ }
+\edef\ulcustom{\expandafter\noexpand\eq@fillin@ulcmd}
+\edef\temp@exp{\noexpand
+\define@choicekey+{eqFillin}{ulcmd}
+ {underbar,underline,custom}[\eq@fillin@defaultul]}
+\temp@exp{\def\@rgi{#1}\def\eq@custom{custom}\ifx\@rgi\eq@custom
+ \def\eq@fillin@ulcmd{\@nameuse{ulcustom}}\else
+ \def\eq@fillin@ulcmd{\@nameuse{#1}}\fi
+}{\PackageWarning{aeb}{Bad choice for ulcmd, permissible values
+ are underbar and underline. Try again}}
+\define@key{eqFillin}{lift}[-1sp]{\def\eq@fillin@lift{#1}}
+\define@boolkey{eqFillin}{autolift}[true]{} %
+\define@key{eqFillin}{addtoautolift}[0pt]{%
+ \def\eq@fillin@addtoautolift{#1}}
+\def\eqe@getiiiOpts{%
+ \@ifnextchar[%]
+ \i@eqe@getiiiOpts
+ {\iii@eqe@getiiiOpts{c}{\relax}[s]}}
+\def\i@eqe@getiiiOpts[#1]{%
+ \@ifnextchar[%]
+ {\ii@eqe@getiiiOpts{#1}}%
+ {\iii@eqe@getiiiOpts{#1}{\relax}[s]}}
+\def\ii@eqe@getiiiOpts#1[#2]{%
+ \@ifnextchar[%]
+ {\iii@eqe@getiiiOpts{#1}{#2}}%
+ {\iii@eqe@getiiiOpts{#1}{#2}[#1]}}
+\def\iii@eqe@getiiiOpts#1#2[#3]{%
+ \def\eqe@opts@argi{#1}%
+ \def\eqe@opts@argii{#2}%
+ \def\eqe@opts@argiii{#3}}
+\newcommand{\setfillinDefaults}[1]{\def\eqe@argi{#1}\ifx\eqe@argi\@empty
+ \let\eqe@setfillinDefaults\@empty\else
+ \def\eqe@setfillinDefaults{#1}\fi}
+\let\eqe@setfillinDefaults\@empty
+\AtBeginDocument{\@ifpackageloaded{collectbox}
+ {\let\eqe@cb\eqe@YES}{\let\eqe@cb\eqe@NO}}
+\def\fillineolTooLongMsg{\PackageWarning{eqexam}{%
+ The 'phrase' you are measuring is longer than\MessageBreak
+ \string\linewidth. Changing length to 0pt in hopes you\MessageBreak
+ can fix things}}
+\def\fillineolNoCBMsg{\PackageWarning{eqexam}{%
+ For the \string\fillineol*\space form, the
+ collectbox package\MessageBreak
+ is required, but not loaded at this time.\MessageBreak
+ Switching to \string\fillineol\space in hopes you
+ load collectbox\MessageBreak
+ next time or you remove the star-option if not\MessageBreak
+ really needed}}
+\newcommand\fillineol{\@ifstar{\ifx\eqe@cb\eqe@YES
+ \let\eqe@next\cbfillineol\else
+ \def\eqe@next{\fillineolNoCBMsg\fillineol@i}\fi
+ \eqe@next}{\fillineol@i}}
+\newcommand{\fillineol@i}[1]{\bgroup\setbox\z@\hbox{#1}\fillineol@ii}
+\newcommand\fillineol@ii[2][]{\setlength\eqetmplengthb{\linewidth-\wd\z@}%
+ \ifdim\eqetmplengthb<0pt\eqetmplengthb0pt\fillineolTooLongMsg\fi
+ \unhbox\z@\fillin[#1]{\eqetmplengthb}{#2}\egroup}
+\newcommand\cbfillineol{\bgroup\collectboxto{\@tempboxa}
+ {\setlength{\eqetmplengthb}{\linewidth-\wd\@tempboxa}%
+ \ifdim\eqetmplengthb<0pt\eqetmplengthb0pt\fillineolTooLongMsg\fi
+ \unhbox\@tempboxa\cbfillineol@i}}
+\newcommand\cbfillineol@i[2][]{\fillin[#1]{\eqetmplengthb}{#2}\egroup}
+\renewcommand{\fillin}[3][]{\begingroup
+ \expandafter\let\expandafter\ifsp\csname ifsp@expand\endcsname
+ \setkeys{eqFillin}{boxsize,underline=true,boxed=false,%
+ boxpretext,color,format,enclosesoln=false,fitwidth=false,lift,%
+ autolift=false,addtoautolift}%
+ \ifx\eqe@setfillinDefaults\@empty\else
+ \protected@edef\eq@temp@exp{\noexpand
+ \setkeys{eqFillin}{\eqe@setfillinDefaults}}%
+ \eq@temp@exp
+ \fi
+ \protected@edef\eq@temp@exp{\noexpand\setkeys{eqFillin}{#1}}%
+ \eq@temp@exp
+ \fboxsep\eq@fillin@fboxsep\relax
+ \ifKV@eqFillin@boxed\KV@eqFillin@underlinefalse\fi
+ \ifKV@eqFillin@autolift\def\eq@fillin@lift{-2sp}\fi
+ \edef\eqe@argii{#2}\ifx\eqe@argii\@empty\else
+ \ifdim\eqe@argii=0pt\let\eqe@argii\@empty\fi\fi
+ \eq@fillinhiddenbox
+ \ifx\eq@fillinhiddenbox\@empty\else
+ \KV@eqFillin@boxedtrue\fi
+ \ifx\eq@fillinparbox\@empty\def\eqe@argiii{#3}\else
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{l}\def\eqe@align@hfill{}\fi
+ \expandafter\eqe@getiiiOpts\eq@fillinparbox\relax
+ \ifKV@eqFillin@boxed
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ \edef\eqe@opts@argii{\expandafter
+ \eqe@fbox@corr\expandafter{\eqe@opts@argii}}\fi
+ \fi
+ \edef\eqe@parboxOptArgs{[\eqe@opts@argi]%
+ \expandafter\ifx\eqe@opts@argii\relax\else
+ [\eqe@opts@argii][\eqe@opts@argiii]\fi}%
+ \def\eqe@argiii{\expandafter\parbox\eqe@parboxOptArgs{\eqe@bw}%
+ {\eqe@align@hfill\ifKV@eqFillin@boxed\eq@fillintext\fi#3}}%
+ \fi
+ \ifx\eqe@align@hfill\relax
+ \def\eq@eqFillin@align{c}%
+ \edef\eqe@align@hfill{\eqe@align@hfill@default}\fi
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+ \ifx\eq@fillinparbox\@empty
+ \ifx\eqe@argii\@empty
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@eqFillin@fontsize
+ \eq@fillin@format\ifKV@eqFillin@boxed\eq@fillintext\fi
+ \eqe@argiii}}%
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \else
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \else
+ \ifx\eqe@argii\@empty
+ \setlength{\eqetmplengthb}{\linewidth}%
+ \PackageWarning{eqexam}{Parameter \#2
+ is empty with parbox option,\MessageBreak
+ using \string\linewidth\space for width%
+ }%
+ \else
+ \setlength{\eqetmplengthb}{#2}%
+ \fi
+ \fi
+ \expandafter\let\expandafter\ifsp\csname ifsp@default\endcsname
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \ifKV@eqFillin@underline\let\@fillinFmt\eq@fillin@ulcmd
+ \else\let\@fillinFmt\relax\fi
+ \ifx\eq@fillinparbox\@empty\else
+ \ifKV@eqFillin@underline\let\@fillinFmt\relax
+ \PackageInfo{eqexam}{Removing underline option, not permissible
+ \MessageBreak with parbox option}%
+ \fi\fi
+ \ifeq@proofing
+ \ifKV@eqFillin@fitwidth
+ \settowidth{\eqetmplengthb}{\@eqmath{\eq@fillin@format
+ \ifx\eq@fillinparbox\@empty\ifKV@eqFillin@boxed
+ \eq@fillintext\fi\fi\eqe@argiii}}%
+ \ifKV@eqFillin@boxed
+ \setlength{\eqetmplengthb}{%
+ \eqetmplengthb+2\fboxsep+2\fboxrule}%
+ \fi
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \fi
+ \ifKV@eqFillin@boxed
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\text\fi
+ \setbox\z@\hbox{\@eqmath{\eq@fillin@boxcmd{%
+ \eq@eqFillin@boxsize
+ \@fillinFmt{\eq@eqFillin@fontsize % dpsf0214
+ \ifKV@eqFillin@boxed
+ \edef\eqe@bw{\eqe@fbox@corr{\eqe@bw}}%
+ \fi
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \@eqmath{\eq@fillin@format\color{\eq@fillin@color}%
+ \ifx\eq@fillinparbox\@empty
+ \eq@fillintext\fi\eqe@argiii}}%
+ }% end \@fillinFmt
+ }}}% end \mbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+ \ifmmode\let\@eqmath\ensuremath\else\let\@eqmath\relax\fi
+ \setbox\z@\hbox{\eq@eqFillin@fontsize % dpsf0214
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \@eqmath{\eq@fillin@format\eqe@argiii}}}%
+ \else
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format\eqe@argiii}}%
+ \setlength{\@tempdima}{\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw][\eq@eqFillin@align]{\strut
+ \color{\eq@fillin@color}%
+ \raisebox{\eq@fillin@lift}{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+ \else
+ \ifKV@eqFillin@boxed
+ \setbox\z@\hbox{\eq@eqFillin@fontsize % dpsf0214
+ \@eqmath{\eq@fillin@format
+ \eq@fillin@boxcmd{\eq@eqFillin@boxsize\ifeq@nosolutions
+ \rlap{\@eqmath{\eq@eqFillin@fontsize % dpsf0214
+ \eq@fillintext}}\fi
+ \ifvspacewithsolns % dpsf0214 \eq@eqFillin@fontsize
+ \rlap{\@eqmath{\eq@eqFillin@fontsize\eq@fillintext}}\fi
+ \@fillinFmt{%
+ \makebox[\eqe@fbox@corr{\eqe@bw}]{%
+ \ifKV@eqFillin@enclosesoln\phantom
+ {\setlength\eqetmplengthb{\eqe@bw-2\fboxsep}%
+ \edef\eqe@bw{\the\eqetmplengthb}%
+ \@eqmath{\eqe@argiii}}\else
+ \strut\hfill\fi
+ }%
+ }%end \@fillinFmt
+ }}}% end \hbox
+ \setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \else
+ \setbox\z@\hbox{\eq@eqFillin@fontsize % dpsf0214
+ \ifdim\eq@fillin@lift=-1sp\relax
+ \@fillinFmt{\makebox[\eqe@bw]{%
+ \strut\hfil}}%
+ \else
+ \ifKV@eqFillin@autolift
+ \setbox2=\hbox{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}%
+ \setlength{\@tempdima}%
+ {\dp2+\eq@fillin@addtoautolift}%
+ \edef\eq@fillin@lift{\the\@tempdima}\fi
+ \raisebox{-\eq@fillin@lift}{\@fillinFmt{%
+ \makebox[\eqe@bw]{\raisebox{\eq@fillin@lift}
+ {\phantom{\@eqmath{\eq@fillin@format
+ \eqe@argiii}}\strut\hfil}}}}%
+ \fi
+ }\setlength{\@tempdima}{\ht0+\dp0}%
+ \xdef\fillinTotalHeight{\the\@tempdima}%
+ \mbox{\unhbox\z@}%
+ \fi
+ \@ifundefined{@quiz}{}{%
+ \if\eq@online\eqe@YES\relax
+ \ifeq@nosolutions
+ \ifeq@solutionsafter\else
+ \ifx\eq@insertverticalspace\eqe@YES\relax
+ \stepcounter{@cntfillin}%
+ \edef\fieldName{%
+ \if\probstar*eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.part\thepartno.%
+ fi\the@cntfillin%
+ \else
+ eqexam.\curr@quiz.fillin.%
+ \theeqquestionnoi.fi\the@cntfillin%
+ \fi
+ }\ifx\eq@fillinparbox\@empty
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}]
+ {\fieldName}{#2}{\fillinTotalHeight}}}\else
+ \setlength{\@tempdima}%
+ {\eqe@opts@argii+2\fboxrule+2\fboxsep}%
+ \raisebox{-1bp}{\makebox[0pt][r]{%
+ \textField[\BC{}\presets{\eqe@optsFillIn}
+ \Ff{\FfMultiline}]{\fieldName}{#2}
+ {\fillinTotalHeight}}}\fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }%
+ \fi\endgroup}
+\renewcommand\TF[2][\defaultTFwidth]{%
+ \def\eqe@next{\fillin[underline]{#1}{#2}}%
+ \ifdim\eq@extralabelsep=0pt\relax\else
+ \if\probstar*\relax\if\exerwparts@cols0
+ \def\eqe@next{\makebox[0pt][r]{%
+ \fillin[underline]{#1}{#2}}\ignorespaces}%
+ \fi\fi\fi\eqe@next
+}
+\endinput
+%%
+%% End of file `eqexam.sty'.
diff --git a/texmf-dist/tex/latex/eqexam/eqtextb.def b/texmf-dist/tex/latex/eqexam/eqtextb.def
index f388e3e7..470a959a 100644
--- a/texmf-dist/tex/latex/eqexam/eqtextb.def
+++ b/texmf-dist/tex/latex/eqexam/eqtextb.def
@@ -1,765 +1,765 @@
-%%
-%% This is file `eqtextb.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eqexam.dtx (with options: `copyright,textbook')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eqexam.sty package, %%
-%% Copyright (C) 2005--2017 D. P. Story %%
-%% dpstory@uakron.edu %%
-%% %%
-%% This program can redistributed and/or modified under %%
-%% the terms of the LaTeX Project Public License 1.2 %%
-%% Distributed from CTAN archives in directory %%
-%% macros/latex/base/lppl.txt; either version 1 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqtextb.def}
- [2016/01/18 v4.6 Cmds used by the fortextbook option (dps)]
-\define@boolkey{eqe@tbopts}[is]{instred}[true]{}
-\define@boolkey{eqe@tbopts}[is]{studented}[true]{%
- \ifisstudented
- \tbfilterOutEvenNums
- \fi
-}
-\def\tb@beginexam@code{%
- \ifisinstred\answerkeytrue\eq@proofingtrue\fi}
-\newcommand{\tbfilterOutEvenNums}{%
- \def\eqEXt##1##2{\ifodd##1\let\eqe@next\relax\else
- \def\eqe@next{\gobbletoEndEXt}\fi\eqe@next}%
-}
-\newcommand{\tballowAllNums}{%
- \let\eqEXt\@gobbletwo
- \let\endeqEXt\relax
-}
-\define@boolkey{eqe@tbopts}[is]{marginans}[true]{}
-\define@boolkey{eqe@tbopts}[is]{inlineans}[true]{}
-\define@boolkey{eqe@tbopts}[]{marginsonleft}[true]
- {\@mparswitchfalse\reversemarginpar}
-\define@boolkey{eqe@tbopts}[show]{ssols}[true]{}
-\define@boolkey{eqe@tbopts}[show]{lsols}[true]{%
- \ifshowlsols\let\tb@soln@choice\tb@showlsols\fi}
-\newcommand{\textbookOpts}[1]{\setkeys{eqe@tbopts}{#1}%
- \ifisinstred\global\isstudentedfalse\else
- \ifisstudented\global\isinstredfalse
- \fi\fi
- \ifdim\tbmarparboxwidth=1sp\else
- \expandafter\tbMakeFinalCalcs\fi
-}
-\isstudentedtrue
-\isinstredfalse
-\ismarginansfalse
-\isinlineansfalse
-\@onlypreamble{\textbookOpts}
-\newcommand{\turnOffMarAnsOnAnsInline}{%
- \global\ismarginansfalse\global\isinlineanstrue
- \insMidMarg{\global\ismarginansfalse
- \global\isinlineanstrue}%
-}
-\newcommand{\turnOnMarAnsOffAnsInline}{%
- \global\ismarginanstrue\global\isinlineansfalse
- \insMidMarg{\global\ismarginanstrue
- \global\isinlineansfalse}%
-}
-\newcommand{\toggleInstrAns}{%
- \ifisinstred\ifismarginans
- \global\ismarginansfalse\global\isinlineanstrue
- \insMidMarg{\global\ismarginansfalse
- \global\isinlineanstrue}%
- \else
- \global\ismarginanstrue\global\isinlineansfalse
- \insMidMarg{\global\ismarginanstrue
- \global\isinlineansfalse}%
- \fi\fi
-}
-\newif\ifWithinANSGrp\WithinANSGrpfalse
-\newif\ifftb@isANSListOpen\ftb@isANSListOpenfalse
-\newcommand{\bGrpANS}{%
- \if\probstar*\else
- \PackageError{eqexam}{Use of \string\bGrpANS\space
- only applies\MessageBreak to the problem* environment}{Please
- remove this \string\bGrpANS.}%
- \fi
- \ifWithinANSGrp
- \global\WithinANSGrpfalse
- \let\tb@next\relax
- \PackageError{eqexam}{\string\bGrpANS\space already open}
- {You issued an earlier \string\bGrpANS,
- but did not close it.}%
- \else
- \global\WithinANSGrptrue
- \global\ftb@isANSListOpenfalse
- \def\tb@next{\ANS}%
- \fi
- \tb@next
-}
-\newcommand{\eGrpANS}{%
- \if\probstar*\else
- \PackageError{eqexam}{Use of \string\eGrpANS\space
- only applies\MessageBreak to the problem* environment}{Please
- remove this \string\eGrpANS.}%
- \fi
- \ifWithinANSGrp
- \global\WithinANSGrpfalse
- \def\tb@next{\ANS}%
- \else
- \let\tb@next\relax
- \PackageError{eqexam}{\string\eGrpANS\space already closed}
- {You've issued two consecutive \string\eGrpANS\space
- commands,\MessageBreak either remove this one
- or the previous one.}%
- \fi
- \tb@next
-}
-\newcommand{\ANS}{\@ifstar{\let\tb@istart=1\tb@ANS}
- {\let\tb@istart=0\tb@ANS}}
-\def\ftb@defineInsSpan#1{\def\ftb@argi{#1}\ifx\ftb@argi\@empty
- \def\ftb@InsSpan{}\else\ftb@spanPrts{#1}%
- \def\ftb@InsSpan{\noexpand\hspace{-\labelsep}%
- \noexpand\textcolor{MRGPARTcolor}{--}\noexpand
- \makebox[\noexpand\tbmrgpartwdth]{\noexpand
- \tb@mrgPartFmt{\ftb@EndSpanPrts}}\eqe@hspannerMrg}\fi
-}
-\def\ftb@spanPrts#1{{%
- \advance\value{partno}by#1\relax
- \xdef\ftb@EndSpanPrts{\thepartno}}%
-}
-\def\ftb@EqeListPrtsFmt{\noexpand
- \makebox[\noexpand\tbmrgpartwdth]{\noexpand
- \tb@mrgPartFmt{\thepartno}}\nobreak
-}
-\def\ftb@OpenEqeListPrts{\noexpand
- \begin{eqeList}[\tb@wparts@len]{\noexpand
- \eqedsplyOnlyFrst{\theeqquestionnoi}%
- {\thepartno}\noexpand\eqe@hspannerMrg\ftb@EqeListPrtsFmt}%
-}
-\def\ftb@CloseEqeList#1{\expandafter\insMidMarg%
- \expandafter{\eqe@prehold#1\end{eqeList}}%
-}
-\newcommand{\grpANSDelimiter}{\textcolor{MRGPARTcolor}{,}\space}
-\newcommand{\tb@ANS}[2][]{%
- \ifisinstred
- \ifisinlineans
- \if\tb@istart0\ANSFmt{\theeqquestionnoi}{#2}\fi
- \fi
- \ifismarginans
- \ftb@defineInsSpan{#1}%
- \edef\eqe@prehold{%
- \if\probstar*%
- \ifftb@isANSListOpen
- \ftb@EqeListPrtsFmt\noexpand\eqe@hspannerMrg
- \else
- \noexpand\par\kern0pt\noindent
- \ftb@OpenEqeListPrts\ftb@InsSpan
- \fi
- \else
- \noexpand\begin{eqeList}%
- {\noexpand\tb@mrgDigitFmt{%
- \theeqquestionnoi\eqe@decPointMrg}}%
- \fi
- }%
- \ifWithinANSGrp\global\ftb@isANSListOpentrue\fi
- \ifWithinANSGrp
- \expandafter\insMidMarg\expandafter
- {\eqe@prehold#2\grpANSDelimiter}%
- \else
- \expandafter\insMidMarg%
- \expandafter{\eqe@prehold#2\end{eqeList}}%
- \global\ftb@isANSListOpenfalse
- \fi
- \fi % \ifismarginans
- \fi %\ifisinstred
-}
-\newenvironment{eqeList}[2][\tb@woparts@len]{\begin{list}{#2}{%
- \def\argi{#1}\setlength{\labelwidth}{#1}%
- \ifx\argi\tb@wparts@len
- \settowidth{\labelsep}{\eqe@prtsepMrg}\else
- \settowidth{\labelsep}{\eqe@hspannerMrg}\fi
- \setlength{\leftmargin}{\labelwidth+\labelsep}%
- \setlength{\parskip}{0pt}\setlength{\partopsep}{0pt}%
- \setlength{\topsep}{1pt}\setlength{\parsep}{0pt}%
- \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
-}\item\relax}{\end{list}}
-\newcommand{\mrgDigitFmt}[1]{\def\tb@mrgDigitFmt##1{#1}}
-\mrgDigitFmt{#1}
-\definecolor{MRGPARTcolor}{named}{black}
-\newcommand{\mrgPartFmt}[1]{\def\tb@mrgPartFmt##1{#1}}
-\mrgPartFmt{\textcolor{MRGPARTcolor}{(\hfil#1\hfil)}}
-\definecolor{ANScolor}{rgb}{0,0,.8}
-\newcommand{\ANSFmt}[2]{\textcolor{ANScolor}{#2}}
-\def\eqe@decPointPrb{.} % decimal point of prob number
-\def\eqe@prtsepPrb{\ } % prob with parts, space after part
-\def\eqe@hspannerPrb{\ } % space after prob number
-\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
-\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
-\def\eqedecPointSoln{.} % decimal point of prob number
-\def\eqe@prtsepSoln{\ } % prob with parts, space after part
-\def\eqe@hspannerSoln{\ } % space after prob number
-\newcommand{\solDecPt}[1]{\def\eqedecPointSoln{#1}}
-\newcommand{\solPrtsep}[1]{\def\eqe@prtsepSoln{#1}}
-\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
-\def\eqe@decPointMrg{.} % decimal point of prob number
-\def\eqe@prtsepMrg{\ } % prob with parts, space after part
-\def\eqe@hspannerMrg{\ } % space after prob number
-\newcommand{\mrgDecPt}[1]{\def\eqe@decPointMrg{#1}}
-\newcommand{\mrgPrtsep}[1]{\def\eqe@prtsepMrg{#1}}
-\newcommand{\mrgNumPrtsep}[1]{\def\eqe@hspannerMrg{#1}}
-\newcommand{\setMarIndents}[3][\normalsize\normalfont]{{%
- \settowidth{\@tempdima}{#1#2\eqe@decPointMrg}%
- \xdef\tb@woparts@len{\the\@tempdima}%
- \settowidth{\@tempdima}%
- {#1#2\eqe@decPointMrg\eqe@hspannerMrg#3}%
- \xdef\tb@wparts@len{\the\@tempdima}%
- \settowidth{\@tempdima}{#1#3}%
- \xdef\tbmrgpartwdth{\the\@tempdima}%
-}}
-\setMarIndents{00}{(d)}
-\newdimen\solnGutter
-\newcommand{\setSolnIndent}[3][\normalsize\normalfont\bfseries]{%
- {\settowidth{\@tempdima}{#1#2\eqedecPointSoln\eqe@hspannerSoln}%
- \global\solnGutter\@tempdima
- \settowidth{\@tempdima}{#1#3}%
- \xdef\tbsolnpartwdth{\the\@tempdima}%
-}}
-\setSolnIndent{00}{(d)}
-\renewcommand{\setSolnMargins}[1]{%
- \ifdim\solnGutter=0pt \setlength\eqemargin{#1}\else
- \setlength\eqemargin{\solnGutter}\fi}
-\newcommand{\defaultSolnIndent}{\global\solnGutter=0pt}
-\defaultSolnIndent
-\renewcommand{\exlabelformat}{%
- \tbprbNumFmt{\theeqquestionnoi\eqe@decPointPrb}}
-\newcommand{\prbNumFmt}[1]{\def\tbprbNumFmt##1{#1\eqe@hspannerPrb}}
-\prbNumFmt{\textbf{#1}}
-\renewcommand{\exsllabelformat}{\string\tbsolWoPrtsFmt{%
- \theeqquestionnoi\string\eqedecPointSoln}}
-\renewcommand{\exsllabelformatwp}{\string\tbsolWPrtsFmt%
- {\string\eqedsplyOnlyFrst{\theeqquestionnoi}{\thepartno}}%
- {\thepartno}%
-}
-\newcommand{\solWoPrtsFmt}[1]{\def\tbsolWoPrtsFmt##1{%
- \makebox[0pt][r]{#1\eqe@hspannerSoln}}}
-\solWoPrtsFmt{\textbf{#1}}
-\newcommand{\solWPrtsFmt}[2]{\def\tbsolWPrtsFmt##1##2{%
- \makebox[0pt][r]{#1\eqe@hspannerSoln}%
- \makebox[\tbsolnpartwdth][l]{#2}\eqe@prtsepSoln%
-}}
-\solWPrtsFmt{\textbf{#1}}{(\hfil#2\hfil)}
-\newcommand{\solWPrtsFmt@hang}[2]{%
- \def\tbsolWPrtsFmt##1##2{%
- \makebox[0pt][r]{#1\eqe@prtsepSoln%
- \makebox[\tbsolnpartwdth][l]{#2}\eqe@hspannerSoln}%
-}}
-\let\bpartsmrk\relax
-\let\epartsmrk\relax
-\newcommand{\hangSolWPrtsFmt}[2]{%
- \def\prior@parts@hook{%
- \ifisleadin\else
- \writeToSolnFile{^^J\protect\bpartsmrk}\fi}%
- \def\post@parts@hook{%
- \writeToSolnFile{\protect\epartsmrk^^J}}%
- \def\bpartsmrk{\global\firstitemtrue\begin{eqepartsquestions}}%
- \def\epartsmrk{\end{eqepartsquestions}\global\firstitemfalse}%
- \let\solWPrtsFmt\solWPrtsFmt@hang
- \solWPrtsFmt{#1}{#2}%
-}
-\newif\ifexamenv \examenvfalse
-\newif\iffirstemit \firstemittrue
-\newtoks\txtbkt@ks \txtbkt@ks={}
-\newtoks\txtbkt@ksi \txtbkt@ksi={}
-\newbox\txtbkb@xb@t
-\newbox\txtbkb@xt@p
-\newbox\txtbkb@xh@ld
-\let\tbTopMargin\relax
-\let\tbBotMargin\relax
-\long\def\tb@addtoTopMargin#1{\txtbkt@ksi={#1}%
- \edef\eqe@tmphold{\the\txtbkt@ksi\the\txtbkt@ks}%
- \global\txtbkt@ks=\expandafter{\eqe@tmphold}%
-}
-\newcommand{\tb@addtoMargin}[1]{%
- \edef\eqe@tmphold{\the\txtbkt@ks}%
- \global\txtbkt@ks=\expandafter{\eqe@tmphold#1}%
-}
-\newcommand{\tb@showlsols}{\includecomment{lsol}\excludecomment{ssol}}
-\newcommand{\tb@showssols}{\includecomment{ssol}\excludecomment{lsol}}
-\let\tb@soln@choice\tb@showssols
-\newcommand{\clearTopMargin}{\global\let\tbTopMargin\relax}
-\newcommand{\setTopMargin}[1]{%
- \gdef\tbTopMargin{\color@begingroup\normalcolor
- #1\color@endgroup}%
- \gdef\tbSaveTopMargin{\color@begingroup\normalcolor
- #1\color@endgroup}}
-\let\tbTopMargin\@empty
-\let\tbSaveTopMargin\@empty
-\newcommand{\clearBotMargin}{\global\let\tbBotMargin\relax}
-\newcommand{\setBotMargin}[1]{\gdef\tbBotMargin{#1}%
- \gdef\tbSaveBotMargin{#1}}
-\let\tbBotMargin\@empty
-\let\tbSaveBotMargin\@empty
-\newcommand{\restoreLastTopMargin}{\expandafter\setTopMargin
- \expandafter{\tbSaveTopMargin}}
-\newcommand{\restoreLastBotMargin}{\expandafter\setBotMargin
- \expandafter{\tbSaveBotMargin}}
-\newcommand{\MarParBoxFmt}{\normalsfcodes
- \normalfont\normalsize\normalbaselines\parindent0pt
- \vbadness\@Mi \hbadness5000 \tolerance9999
- \parskip0pt\raggedright %\spaceskip=0pt\xspaceskip=0pt
- \setlength{\linewidth}{\tbmarparboxwidth}%
-}
-\newlength\tbmarparboxwidth
-\setlength\tbmarparboxwidth{1sp}
-\definecolor{MidMargcolor}{rgb}{0,0,.8}
-\newcommand{\midMargFmt}[1]{%
- \def\tb@midMargFmt{\normalfont\normalsize\normalcolor#1}}
-\midMargFmt{\color{MidMargcolor}}
-\def\eqe@MarParBox#1{\lower\footskip\hbox{%
- \leavevmode\parbox[b][\textheight+\footskip][t]%
- {\tbmarparboxwidth}{\tb@midMargFmt#1}}} %
-\newcommand{\insMidMarg}[1]{%
- \let\eqe@margininsert\@empty
- \expandafter\tb@addtoMargin\expandafter{\eqe@margininsert#1}%
-}
-\newcommand{\tbPreMarginHeader}{\par\penalty0 \kern3pt}
-\newcommand{\tbPostMarginHeader}{\par\nobreak}
-\definecolor{HEADERcolor}{named}{black}
-\newcommand{\cngMargHeadColorTo}[1]{\insMidMarg{\gdef\tb@MHC{#1}}}
-\newcommand{\resetMargHeadColor}{\insMidMarg{\gdef\tb@MHC{HEADERcolor}}}
-\resetMargHeadColor
-\newcommand{\tbMarginHeaderFmt}[1]{\textcolor{\tb@MHC}{\textbf{#1}}}
-\newcommand{\insMargHead}[2][]{% dps
- \insMidMarg{\tb@marginHeader{#1}{#2}}}
-\newcommand{\insProbHead}[2][]{%
- \def\tb@argi{#1}\ifx\tb@argi\@empty
- \protected@xdef\currProbHead{#2 \tbcontinued}\else
- \protected@xdef\currProbHead{#1}\fi
- \ifisinstred\ifismarginans
- \insMidMarg{\tb@marginProbHeader{#1}{#2}}\fi\fi
-}
-\newcommand{\tb@marginProbHeader}[2]{%
- \def\tb@argi{#1}\ifx\tb@argi\@empty
- \tb@marginHeader{#2 \tbcontinued}{#2}\else
- \tb@marginHeader{#1}{#2}\fi
-}
-\newcommand{\tb@marginHeader}[2]{\tbPreMarginHeader
- \tbMarginHeaderFmt{#2}\def\tb@argi{#1}\ifx\tb@argi\@empty
- \mark{#2}\else\mark{#1}\fi\tbPostMarginHeader
-}
-\newcommand{\tbcontinued}{(cont.)}
-\newcommand{\marparboxwidth}[1]{%
- \setlength\tbmarparboxwidth{#1}%
- \setlength{\marginparwidth}{\tbmarparboxwidth}%
- \tbMakeFinalCalcs
-}
-\@onlypreamble\marparboxwidth
-\newcommand{\chkmarginboxwidth}{%
- \ifdim\tbmarparboxwidth=1sp \PackageError{eqexam}%
- {You have not set the value of\MessageBreak
- \string\marparboxwidth}%
- {Define the \string\marparboxwidth\space command}\fi
-}
-\newif\ifmarginsonleft \marginsonleftfalse
-\newcommand{\tbSetupForMargins}{%
- \ifmarginsonleft
- \setlength{\oddsidemargin}{\tbmarparboxwidth+\marginparsep}%
- \setlength{\evensidemargin}{\oddsidemargin}%
- \setlength{\textwidth}{\paperwidth-2in-\oddsidemargin}%
- \else
- \setlength{\oddsidemargin}{0pt}%
- \setlength{\evensidemargin}{\tbmarparboxwidth+\marginparsep}%
- \setlength{\textwidth}{%
- \paperwidth-2in-\oddsidemargin-\evensidemargin}%
- \fi
-}
-\newcommand{\tbplaceMargins}{{%
- \setlength{\@tempdima}{%
- \paperheight-1in-\topmargin-\headheight-\headsep-\textheight}%
- \xdef\@evenlly{\strip@pt\@tempdima}%
- \xdef\@oddlly{\@evenlly}%
- \setlength{\@tempdima}{1in}%
- \xdef\@evenllx{\strip@pt\@tempdima}%
- \ifmarginsonleft\else
- \setlength{\@tempdima}{1in+\textwidth+\marginparsep}\fi
- \xdef\@oddllx{\strip@pt\@tempdima}%
-}}
-\newcommand{\tbMakeFinalCalcs}{%
- \tbSetupForMargins
- \tbplaceMargins
-}
-\newlength\tbminskipbtnlayers
-\setlength{\tbminskipbtnlayers}{6pt}
-\newif\ifiscarryover \iscarryoverfalse
-\newenvironment{carryOverFmt}[1]{#1\let\tb@carryoverFmt\@empty
- \c@rryoverFmt{#1}}{}
-\def\c@rryoverFmt#1{%
- \ifx\tb@carryoverFmt\@empty
- \global\let\tb@carryoverFmt\@empty
- \xdef\tb@co@page{\thepage}%
- \gdef\tb@carryoverFmt{\ifnum\thepage>\tb@co@page\relax
- #1\global\let\tb@carryoverFmt\@empty\fi}%
- \fi
-}
-\let\tb@carryoverFmt\@empty
-\let\tb@rest@reMarginFmt\relax
-\def\tb@insertCarryOver#1{%
- \let\tb@rest@reMarginFmt\relax
- \ifiscarryover\ifx\tb@carryoverFmt\@empty\else
- \let\tb@rest@reMarginFmt\tb@midMargFmt
- \tb@carryoverFmt\fi\fi
- #1 \tb@rest@reMarginFmt
-}
-\newif\iftb@shipoutPermitted \tb@shipoutPermittedtrue
-\newcommand{\turnOnFTBShipout}{\global\tb@shipoutPermittedtrue}
-\newcommand{\turnOffFTBShipout}{\global\tb@shipoutPermittedfalse}
-\newcommand{\eqe@tb@shipout}{\iftb@shipoutPermitted
- \ifnum\arabic{page}=\tblastpageshipped
- \let\tb@so@next\relax\else
- \xdef\tblastpageshipped{\arabic{page}}%
- \def\tb@so@next{\eqe@tb@ship@ut}\fi
- \expandafter\tb@so@next\fi
-}
-\def\tblastpageshipped{-100}
-\newcommand{\eqe@tb@ship@ut}{%
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \global\setbox\txtbkb@xb@t=\vbox\bgroup
- \color@begingroup
- \hsize=\tbmarparboxwidth
- \vsize=\textheight
- \MarParBoxFmt
- \csname tbTopMargin\endcsname
- \vskip\tbminskipbtnlayers
-\set@typeset@protect
- \the\txtbkt@ks
- \color@endgroup\vfil
- \egroup
- \global\setbox\txtbkb@xt@p=\vsplit\txtbkb@xb@t to\textheight
- \ifvoid\txtbkb@xb@t\global\iscarryoverfalse
- \else\global\iscarryovertrue\fi
- \ifx\tbBotMargin\relax\else
- \bgroup\setbox2=\vbox{%
- \color@begingroup\normalcolor
- \hsize=\tbmarparboxwidth\kern0pt
- \MarParBoxFmt\csname tbBotMargin\endcsname
- \color@endgroup
- \kern0pt
- }%
- \dimen0=\textheight
- \advance\dimen0-\ht\txtbkb@xh@ld
- \advance\dimen0-\tbminskipbtnlayers
- \setbox0=\vsplit\txtbkb@xt@p to \dimen0
- \global\setbox\txtbkb@xb@t=\vbox{%
- \unvbox\txtbkb@xt@p\unvbox\txtbkb@xb@t}%
- \global\setbox\txtbkb@xt@p=\vbox{\unvbox0
- \vfill\vskip\tbminskipbtnlayers
- \vfil\unvbox2\relax}\egroup
- \fi
- \ifodd\value{page}%
- \put(\@oddllx,\@oddlly){%
- \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\else
- \put(\@evenllx,\@evenlly){%
- \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\fi
- \global\txtbkt@ks={}\ifvoid\txtbkb@xb@t\else
- \if!\splitbotmark!\global\let\tb@sbm@exp\relax\else
- \xdef\tb@sbm@exp{\noexpand\tbPreMarginHeader
- \noexpand\tbMarginHeaderFmt{\splitbotmark}%
- \noexpand\tbPostMarginHeader
- \noexpand\par\kern3pt}%
- \fi
- \global\txtbkt@ks=\expandafter{\tb@sbm@exp
- \tb@insertCarryOver{\unvbox\txtbkb@xb@t}}%
- \fi
-}
-\newcommand{\insertpageifcarryover}[1][\null]{%
- \newpage
- \ifiscarryover\def\eqeifnext{\csname iftrue\endcsname}%
- \PackageInfo{eqexam}{Carry over of content in margin
- from page \thepage.\MessageBreak Creating a blank page}\else
- \def\eqeifnext{\csname iffalse\endcsname}\fi\eqeifnext#1\fi}
-\newcommand{\setFullWidthHeader}{%
- \setlength{\@tempdima}{%
- \evensidemargin+\tbmarparboxwidth+\marginparsep}%
- \edef\@headoffset{\the\@tempdima}%
- \def\@evenhead{\makebox[0pt]{\makebox[0pt][l]
- {\thepage}\hspace{\@headoffset}}\hfil\slshape\leftmark}%
- \ifmarginsonleft
- \def\@oddhead{\makebox[0pt]{\makebox[0pt][l]
- {\slshape\rightmark}\hspace{\@headoffset}}\hfil\thepage}%
- \else
- \def\@oddhead{{\slshape\rightmark}\hfil\makebox[0pt]
- {\hspace{\@headoffset}\makebox[0pt][r]{\thepage}}}%
- \fi
-}
-\newif\ifchapterexercises \chapterexercisesfalse
-\let\chaptersolutions\relax
-\def\tb@EndOfChapterExercises{%
- \let\include@solutions@chapter\include@solutions
- \def\includeexersolutions{%
- \include@solutions@chapter
- \global\let\include@solutions\relax
- }%
- \def\chaptersolutions{%
- \includeexersolutions
- \immediate\closeout\ex@solns
- \newwrite \ex@solns \global\let\quiz@solns\ex@solns
- \immediate\openout \ex@solns \jobname.sol
- \ifvspacewithsolns\writeAllAnsAtEnd\fi
- }%
-}
-\def\writeallsolutions{\let\chaptersolutions\relax}
-\excludecomment{afterChapSolns}
-\def\NewCommentCutFile{\def\CommentCutFile{solnsAtEnd.cut}}
-\def\RestoreCommentCutFile{\def\CommentCutFile{comment.cut}}
-\@ifundefined{BeforeIncludedComment}{%
-\long\def\solnsAtEndcomment
- #1{\message{Special comment '#1'}%
- \csarg\def{#1}{\endgroup \message{Processing '#1' comment.}%
- \NewCommentCutFile\SetUpCutFile
- % #2 before SetUp, so we can do renaming.
- \message{Comment '#1' writing to \CommentCutFile.}%
- \ProcessComment{#1}}%
- \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
- \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
- \CommentEndDef{#1}}
-}{\long\def\solnsAtEndcomment
- #1{\message{Special comment '#1'}%
- \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
- \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
- \csarg\def{#1}{\NewCommentCutFile\BeforeIncludedComment\relax
- \ProcessComment{#1}}%
- \CommentEndDef{#1}}
- }
-\solnsAtEndcomment{solnsAtEnd}
-\newcommand{\exercisesAtEndOfChapter}{%
- \ifeq@nosolutions\else
- \typeout{^^J!!!!!Executing in chapter solutions!!!!!^^J}
- \chapterexercisestrue\tb@EndOfChapterExercises
- \ifchapterexercises
- \csarg\let{solnsAtEnd}\@gobble
- \excludecomment{solnsAtEnd}%
- \csarg\let{AftersolnsAtEndComment}\relax
- \includecomment{afterChapSolns}\else
- \excludecomment{afterChapSolns}\fi
- \fi
-}
-\@onlypreamble\exercisesAtEndOfChapter
-\newcommand{\setFullWidthLayout}{%
- \saveBasicLayoutParams
- \setlength{\oddsidemargin}{0in}%
- \setlength{\evensidemargin}{\oddsidemargin}%
- \setlength{\textwidth}{\paperwidth-2in}%
- \setlength{\linewidth}{\paperwidth-2in}%
- \setlength{\columnseprule}{0pt}%
- \def\@evenhead{\thepage\hfil\slshape\leftmark}%
- \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
-}
-\newenvironment{fullwidthtext}{%
-\begin{list}{}{%
- \setlength{\labelwidth}{0pt}\setlength{\labelsep}{0pt}%
- \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
- \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \setlength{\leftmargin}{0pt}\setlength{\rightmargin}{0pt}
-}\item\relax}{\end{list}}
-\newcommand{\restorePageLayout}{\newpage
- \setlength{\oddsidemargin}{\tb@osms}
- \setlength\evensidemargin{\tb@esms}
- \setlength{\textwidth}{\tb@tws}
- \setlength{\linewidth}{\tb@lws}
- \setlength{\columnseprule}{\tb@csr}
-}
-\newcommand{\saveBasicLayoutParams}{%
- \xdef\tb@osms{\the\oddsidemargin}%
- \xdef\tb@esms{\the\evensidemargin}%
- \xdef\tb@tws{\the\textwidth}%
- \xdef\tb@lws{\the\linewidth}%
- \xdef\tb@csr{\the\columnseprule}%
-}
-\newcommand{\initChapAfterSolns}{\newpage
- \clearTopMargin\clearBotMargin
- \setFullWidthLayout
-}
-\newcommand{\restoreFromChapAfterSolns}{\newpage
- \restorePageLayout\setFullWidthHeader
-}
-\eqequestopsep{0pt}
-\eqequesparsep{0pt}
-\eqequesitemsep{0pt}
-\eqequeslistparindent{0pt}
-\renewenvironment{eqequestions}{%
- \begin{list}{}{%
- \ifwithsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
- \setlength{\labelwidth}{\eqemargin}%
- \setlength{\parsep}{\eqeques@parsep}%
- \setlength{\itemsep}{\eqeques@itemsep}
- \setlength{\topsep}{\eqeques@topsep}%
- \setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{\eqeques@listparindent}%dps%
- \ifwithsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
- \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
- \setlength{\leftmargin}{\labelwidth}%
- }\ifwithsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
-\newcommand{\eqepquestopsep}[1]{\def\eqepques@topsep{#1}}
-\newcommand{\eqepquesparsep}[1]{\def\eqepques@parsep{#1}}
-\newcommand{\eqepquesitemsep}[1]{\def\eqepques@itemsep{#1}}
-\eqepquestopsep{\eqeques@itemsep}
-\eqepquesparsep{\eqeques@parsep}
-\eqepquesitemsep{\eqeques@itemsep}
-\newenvironment{eqepartsquestions}{%
- \begin{list}{}{%
- \settowidth{\labelwidth}{\eqe@prtsepSoln\hspace{\tbsolnpartwdth}}
- \setlength{\parsep}{\eqepques@parsep}%
- \setlength{\itemsep}{\eqepques@itemsep}%
- \setlength{\topsep}{\eqepques@topsep}%
- \setlength{\itemindent}{0pt}%
- \settowidth{\labelsep}{\eqe@hspannerSoln}
- \setlength{\leftmargin}{\labelwidth}%
- }\item\relax}{\end{list}}
-\long\def\gobbletoEndEXt#1\endeqEXt{\@gobbletwo}
-\def\eqExtArg{\theeqquestionnoi}
-\if\load@exerquiz\eqe@NO\DoNotFitItIn\fi
-\let\fillInFormatDefault\@empty
-\def\exerSolnsHeadnToc{}
-\renewcommand{\exerSolnInput}{%
- \let\webnewpage\relax
- \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
- \ifeq@nosolutions\else\newpage % 2012-03-14
- \iftherearesolutions\eq@solutionshook\eqsolutionshook
- \ifsolutionsonly\else\newpage\eq@solutionshook
- \eqsolutionshook\fi
- \ifx\webnewpage\relax
- \def\webnewpage{\let\webnewpage\newpage}%
- \fi
- \priorexsectitle\exerSolnsHeadnToc\priorexslinput
- \InputIfFileExists{\jobname.sol}{}{\PackageWarning{exerquiz}
- {!!! Solutions to exercises not found}}%
- \fi
- \fi
-}
-\setcounter{partno}{1}\edef\firstPartLtr{\thepartno}
-\newif\iffrstProbNumShown\frstProbNumShownfalse
-\def\tb@insertDecPoint{\ifwithsoldoc\eqedecPointSoln\else
- \eqe@decPointMrg\fi}
-\newcommand{\eqedsplyOnlyFrst}[2]{\def\thisPart{#2}%
- \ifx\thisPart\firstPartLtr\global\frstProbNumShowntrue
- \tb@mrgDigitFmt{#1}\tb@insertDecPoint\else
- \iffrstProbNumShown\tb@GenProbNum{#1}\else
- \global\frstProbNumShowntrue\tb@mrgDigitFmt{#1}%
- \tb@insertDecPoint\fi\fi\global\eqeGenProbNumfalse
-}
-\newif\ifeqeGenProbNum \eqeGenProbNumfalse
-\newcommand{\displayProbNumOnce}{\global\eqeGenProbNumtrue} %
-\def\tb@GenProbNum#1{\ifeqeGenProbNum#1\tb@insertDecPoint\else
- \phantom{#1\tb@insertDecPoint}\fi}%
-\def\sq@priorhook{\medskip}
-\def\default@fvsizeskip{.1}
-\aboveexskip{0pt}
-\belowexskip{0pt}
-\renewcommand\belowexsolnskip{{}}
-\renewcommand\exerSolnHeader[3]{%
- \ifeqforpaper\else\webnewpage\fi%\par
- \noindent\@ifundefined{hypertarget}
- {#3}{\hypertarget{#2}{#3}\relax}\solnhspace
-}
-\def\nNumberOfP@rts{0}
-\renewcommand{\preExamSolnHead}{\medbreak\noindent}
-\renewcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
-\renewcommand{\postExamSolnHead}{\smallskip}
-\newcommand{\wrtChapSolnHead}[1]{%
- \writeToSolnFile{%
- \protect\preChapSolnHead
- \protect\chapHeadSolnFmt{\protect\ftbFmtChapter{\thechapter}#1}%
- \protect\postChapSolnHead
-}}
-\newcommand{\preChapSolnHead}{\bigbreak\noindent}
-\newcommand{\chapHeadSolnFmt}[1]{{\large\textbf{#1}}}
-\newcommand{\postChapSolnHead}{\medbreak}
-\newcommand{\ftbFmtChapter}[1]{\chaptername\space#1.\space\ignorespaces}
-\newcommand{\convertChapHeadToChapters}{%
- \let\preChapSolnHead\relax
- \let\chapHeadSolnFmt\chapter
- \let\ftbFmtChapter\@gobble
- \let\postChapSolnHead\relax
-}
-\newcommand{\probSet}[1]{Problem Set #1}
-\newcommand{\annotPage}{\protect\annotThePage{\thepage}}
-\newcommand{\annotThePage}[1]{\space(page\protect~#1)}
-\def\noProbHeader{NPH}
-\newenvironment{probset}[2][\probSet{\thesection}]{%
- \exam[#2]{\autoExamName}\ifx#1\noProbHeader\else
- \protected@edef\ftb@tmp@exp{\noexpand\insProbHead{#1}}%
- \ftb@tmp@exp\fi}{\endexam}
-\newcounter{exampleno}[section]
-\renewcommand{\theexampleno}{\arabic{section}.\arabic{exampleno}}
-\newcommand{\examplenoname}{Example}
-\newenvironment{example}{%\medskip
- \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
- \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
- \renewcommand\exlabel{Example}%
- \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
- \let\eq@fititin\eqfititin
- \renewcommand\exrtnlabelformat{$\square$}%
- \def\eqexheader@wrapper{\eqexheader}%
- \SolutionsAfter
- \begin{exercise}[exampleno]}{\end{exercise}}
-\newenvironment{example*}{%\medskip
- \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
- \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
- \renewcommand\exlabel{Example}%
- \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
- \let\eq@fititin\eqfititin
- \renewcommand\exrtnlabelformat{$\square$}%
- \def\eqexheader@wrapper{\eqexheader}%
- \SolutionsAfter
- \begin{exercise*}[exampleno]}{\end{exercise*}}
-\setDefaultfvsizeskip{.1}
-\nbaselineskip{4}
-\newcommand{\ftbInputBookAux}[1]{%
- \filename@parse{#1}\@ifundefined{filename@ext}%
- {\def\filename@ext{tex}}{}%
- \xdef\tbBaseName{\filename@base}%
- \xdef\tbSourceFile{\filename@base.\filename@ext}%
- \let\save@writefile\@writefile
- \let\@writefile\@gobbletwo
- \let\save@setckpt\@setckpt
- \let\@setckpt\@gobbletwo
- \makeatletter
- \InputIfFileExists{\tbBaseName.aux}{%
- \PackageInfo{eqexam}
- {Inputting auxiliary files of\MessageBreak\tbSourceFile}%
- }{%
- \PackageError{eqexam}
- {Auxiliary files for \tbSourceFile\space were not found}
- {Compile the source file \tbSourceFile\space
- three times\MessageBreak%
- to create the required auxiliary files.}%
- }%
- \makeatother
- \global\let\ftblabel\label
- \let\label\@gobble
- \let\@writefile\save@writefile
- \let\@setckpt\save@setckpt
-}
-\@onlypreamble\ftbInputBookAux
-\newcommand{\restorelabel}{\global\let\label\ftblabel}
-\newcommand{\gobblelabel}{\let\label\@gobble}
-\newcommand{\ftbInputSolnFiles}[1][\tbBaseName.sol]{%
- \filename@parse{#1}\@ifundefined{filename@ext}%
- {\def\filename@ext{sol}}{}%
- \xdef\tbBaseName{\filename@base}%
- \xdef\tbSourceFile{\filename@base.\filename@ext}%
- \InputIfFileExists{\tbBaseName.sol}{%
- \PackageInfo{eqexam}
- {Inputting solutions file \tbBaseName.sol\MessageBreak}%
- }{%
- \PackageError{eqexam}
- {Solutions file for \tbSourceFile\space was not found}%
- {Compile the source files three times}%
- }%
-}
-\endinput
-%%
-%% End of file `eqtextb.def'.
+%%
+%% This is file `eqtextb.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,textbook')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqtextb.def}
+ [2016/01/18 v4.6 Cmds used by the fortextbook option (dps)]
+\define@boolkey{eqe@tbopts}[is]{instred}[true]{}
+\define@boolkey{eqe@tbopts}[is]{studented}[true]{%
+ \ifisstudented
+ \tbfilterOutEvenNums
+ \fi
+}
+\def\tb@beginexam@code{%
+ \ifisinstred\answerkeytrue\eq@proofingtrue\fi}
+\newcommand{\tbfilterOutEvenNums}{%
+ \def\eqEXt##1##2{\ifodd##1\let\eqe@next\relax\else
+ \def\eqe@next{\gobbletoEndEXt}\fi\eqe@next}%
+}
+\newcommand{\tballowAllNums}{%
+ \let\eqEXt\@gobbletwo
+ \let\endeqEXt\relax
+}
+\define@boolkey{eqe@tbopts}[is]{marginans}[true]{}
+\define@boolkey{eqe@tbopts}[is]{inlineans}[true]{}
+\define@boolkey{eqe@tbopts}[]{marginsonleft}[true]
+ {\@mparswitchfalse\reversemarginpar}
+\define@boolkey{eqe@tbopts}[show]{ssols}[true]{}
+\define@boolkey{eqe@tbopts}[show]{lsols}[true]{%
+ \ifshowlsols\let\tb@soln@choice\tb@showlsols\fi}
+\newcommand{\textbookOpts}[1]{\setkeys{eqe@tbopts}{#1}%
+ \ifisinstred\global\isstudentedfalse\else
+ \ifisstudented\global\isinstredfalse
+ \fi\fi
+ \ifdim\tbmarparboxwidth=1sp\else
+ \expandafter\tbMakeFinalCalcs\fi
+}
+\isstudentedtrue
+\isinstredfalse
+\ismarginansfalse
+\isinlineansfalse
+\@onlypreamble{\textbookOpts}
+\newcommand{\turnOffMarAnsOnAnsInline}{%
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+}
+\newcommand{\turnOnMarAnsOffAnsInline}{%
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+}
+\newcommand{\toggleInstrAns}{%
+ \ifisinstred\ifismarginans
+ \global\ismarginansfalse\global\isinlineanstrue
+ \insMidMarg{\global\ismarginansfalse
+ \global\isinlineanstrue}%
+ \else
+ \global\ismarginanstrue\global\isinlineansfalse
+ \insMidMarg{\global\ismarginanstrue
+ \global\isinlineansfalse}%
+ \fi\fi
+}
+\newif\ifWithinANSGrp\WithinANSGrpfalse
+\newif\ifftb@isANSListOpen\ftb@isANSListOpenfalse
+\newcommand{\bGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\bGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\bGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\bGrpANS\space already open}
+ {You issued an earlier \string\bGrpANS,
+ but did not close it.}%
+ \else
+ \global\WithinANSGrptrue
+ \global\ftb@isANSListOpenfalse
+ \def\tb@next{\ANS}%
+ \fi
+ \tb@next
+}
+\newcommand{\eGrpANS}{%
+ \if\probstar*\else
+ \PackageError{eqexam}{Use of \string\eGrpANS\space
+ only applies\MessageBreak to the problem* environment}{Please
+ remove this \string\eGrpANS.}%
+ \fi
+ \ifWithinANSGrp
+ \global\WithinANSGrpfalse
+ \def\tb@next{\ANS}%
+ \else
+ \let\tb@next\relax
+ \PackageError{eqexam}{\string\eGrpANS\space already closed}
+ {You've issued two consecutive \string\eGrpANS\space
+ commands,\MessageBreak either remove this one
+ or the previous one.}%
+ \fi
+ \tb@next
+}
+\newcommand{\ANS}{\@ifstar{\let\tb@istart=1\tb@ANS}
+ {\let\tb@istart=0\tb@ANS}}
+\def\ftb@defineInsSpan#1{\def\ftb@argi{#1}\ifx\ftb@argi\@empty
+ \def\ftb@InsSpan{}\else\ftb@spanPrts{#1}%
+ \def\ftb@InsSpan{\noexpand\hspace{-\labelsep}%
+ \noexpand\textcolor{MRGPARTcolor}{--}\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\ftb@EndSpanPrts}}\eqe@hspannerMrg}\fi
+}
+\def\ftb@spanPrts#1{{%
+ \advance\value{partno}by#1\relax
+ \xdef\ftb@EndSpanPrts{\thepartno}}%
+}
+\def\ftb@EqeListPrtsFmt{\noexpand
+ \makebox[\noexpand\tbmrgpartwdth]{\noexpand
+ \tb@mrgPartFmt{\thepartno}}\nobreak
+}
+\def\ftb@OpenEqeListPrts{\noexpand
+ \begin{eqeList}[\tb@wparts@len]{\noexpand
+ \eqedsplyOnlyFrst{\theeqquestionnoi}%
+ {\thepartno}\noexpand\eqe@hspannerMrg\ftb@EqeListPrtsFmt}%
+}
+\def\ftb@CloseEqeList#1{\expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#1\end{eqeList}}%
+}
+\newcommand{\grpANSDelimiter}{\textcolor{MRGPARTcolor}{,}\space}
+\newcommand{\tb@ANS}[2][]{%
+ \ifisinstred
+ \ifisinlineans
+ \if\tb@istart0\ANSFmt{\theeqquestionnoi}{#2}\fi
+ \fi
+ \ifismarginans
+ \ftb@defineInsSpan{#1}%
+ \edef\eqe@prehold{%
+ \if\probstar*%
+ \ifftb@isANSListOpen
+ \ftb@EqeListPrtsFmt\noexpand\eqe@hspannerMrg
+ \else
+ \noexpand\par\kern0pt\noindent
+ \ftb@OpenEqeListPrts\ftb@InsSpan
+ \fi
+ \else
+ \noexpand\begin{eqeList}%
+ {\noexpand\tb@mrgDigitFmt{%
+ \theeqquestionnoi\eqe@decPointMrg}}%
+ \fi
+ }%
+ \ifWithinANSGrp\global\ftb@isANSListOpentrue\fi
+ \ifWithinANSGrp
+ \expandafter\insMidMarg\expandafter
+ {\eqe@prehold#2\grpANSDelimiter}%
+ \else
+ \expandafter\insMidMarg%
+ \expandafter{\eqe@prehold#2\end{eqeList}}%
+ \global\ftb@isANSListOpenfalse
+ \fi
+ \fi % \ifismarginans
+ \fi %\ifisinstred
+}
+\newenvironment{eqeList}[2][\tb@woparts@len]{\begin{list}{#2}{%
+ \def\argi{#1}\setlength{\labelwidth}{#1}%
+ \ifx\argi\tb@wparts@len
+ \settowidth{\labelsep}{\eqe@prtsepMrg}\else
+ \settowidth{\labelsep}{\eqe@hspannerMrg}\fi
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \setlength{\parskip}{0pt}\setlength{\partopsep}{0pt}%
+ \setlength{\topsep}{1pt}\setlength{\parsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{3pt}%
+}\item\relax}{\end{list}}
+\newcommand{\mrgDigitFmt}[1]{\def\tb@mrgDigitFmt##1{#1}}
+\mrgDigitFmt{#1}
+\definecolor{MRGPARTcolor}{named}{black}
+\newcommand{\mrgPartFmt}[1]{\def\tb@mrgPartFmt##1{#1}}
+\mrgPartFmt{\textcolor{MRGPARTcolor}{(\hfil#1\hfil)}}
+\definecolor{ANScolor}{rgb}{0,0,.8}
+\newcommand{\ANSFmt}[2]{\textcolor{ANScolor}{#2}}
+\def\eqe@decPointPrb{.} % decimal point of prob number
+\def\eqe@prtsepPrb{\ } % prob with parts, space after part
+\def\eqe@hspannerPrb{\ } % space after prob number
+\providecommand{\prbDecPt}[1]{\def\eqe@decPointPrb{#1}}
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\prbNumPrtsep}[1]{\def\eqe@hspannerPrb{#1}}
+\def\eqedecPointSoln{.} % decimal point of prob number
+\def\eqe@prtsepSoln{\ } % prob with parts, space after part
+\def\eqe@hspannerSoln{\ } % space after prob number
+\newcommand{\solDecPt}[1]{\def\eqedecPointSoln{#1}}
+\newcommand{\solPrtsep}[1]{\def\eqe@prtsepSoln{#1}}
+\providecommand{\solNumPrtsep}[1]{\def\eqe@hspannerSoln{#1}}
+\def\eqe@decPointMrg{.} % decimal point of prob number
+\def\eqe@prtsepMrg{\ } % prob with parts, space after part
+\def\eqe@hspannerMrg{\ } % space after prob number
+\newcommand{\mrgDecPt}[1]{\def\eqe@decPointMrg{#1}}
+\newcommand{\mrgPrtsep}[1]{\def\eqe@prtsepMrg{#1}}
+\newcommand{\mrgNumPrtsep}[1]{\def\eqe@hspannerMrg{#1}}
+\newcommand{\setMarIndents}[3][\normalsize\normalfont]{{%
+ \settowidth{\@tempdima}{#1#2\eqe@decPointMrg}%
+ \xdef\tb@woparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}%
+ {#1#2\eqe@decPointMrg\eqe@hspannerMrg#3}%
+ \xdef\tb@wparts@len{\the\@tempdima}%
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbmrgpartwdth{\the\@tempdima}%
+}}
+\setMarIndents{00}{(d)}
+\newdimen\solnGutter
+\newcommand{\setSolnIndent}[3][\normalsize\normalfont\bfseries]{%
+ {\settowidth{\@tempdima}{#1#2\eqedecPointSoln\eqe@hspannerSoln}%
+ \global\solnGutter\@tempdima
+ \settowidth{\@tempdima}{#1#3}%
+ \xdef\tbsolnpartwdth{\the\@tempdima}%
+}}
+\setSolnIndent{00}{(d)}
+\renewcommand{\setSolnMargins}[1]{%
+ \ifdim\solnGutter=0pt \setlength\eqemargin{#1}\else
+ \setlength\eqemargin{\solnGutter}\fi\ignorespaces}
+\newcommand{\defaultSolnIndent}{\global\solnGutter=0pt}
+\defaultSolnIndent
+\renewcommand{\exlabelformat}{%
+ \tbprbNumFmt{\theeqquestionnoi\eqe@decPointPrb}}
+\newcommand{\prbNumFmt}[1]{\def\tbprbNumFmt##1{#1\eqe@hspannerPrb}}
+\prbNumFmt{\textbf{#1}}
+\renewcommand{\exsllabelformat}{\string\tbsolWoPrtsFmt{%
+ \theeqquestionnoi\string\eqedecPointSoln}}
+\renewcommand{\exsllabelformatwp}{\string\tbsolWPrtsFmt%
+ {\string\eqedsplyOnlyFrst{\theeqquestionnoi}{\thepartno}}%
+ {\thepartno}%
+}
+\newcommand{\solWoPrtsFmt}[1]{\def\tbsolWoPrtsFmt##1{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}}}
+\solWoPrtsFmt{\textbf{#1}}
+\newcommand{\solWPrtsFmt}[2]{\def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@hspannerSoln}%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@prtsepSoln%
+}}
+\solWPrtsFmt{\textbf{#1}}{(\hfil#2\hfil)}
+\newcommand{\solWPrtsFmt@hang}[2]{%
+ \def\tbsolWPrtsFmt##1##2{%
+ \makebox[0pt][r]{#1\eqe@prtsepSoln%
+ \makebox[\tbsolnpartwdth][l]{#2}\eqe@hspannerSoln}%
+}}
+\let\bpartsmrk\relax
+\let\epartsmrk\relax
+\newcommand{\hangSolWPrtsFmt}[2]{%
+ \def\prior@parts@hook{%
+ \ifisleadin\else
+ \writeT@SolnFile{^^J\protect\bpartsmrk}\fi}%
+ \def\post@parts@hook{%
+ \writeT@SolnFile{\protect\epartsmrk^^J}}%
+ \def\bpartsmrk{\global\firstitemtrue\begin{eqepartsquestions}}%
+ \def\epartsmrk{\end{eqepartsquestions}\global\firstitemfalse}%
+ \let\solWPrtsFmt\solWPrtsFmt@hang
+ \solWPrtsFmt{#1}{#2}%
+}
+\newif\ifexamenv \examenvfalse
+\newif\iffirstemit \firstemittrue
+\newtoks\txtbkt@ks \txtbkt@ks={}
+\newtoks\txtbkt@ksi \txtbkt@ksi={}
+\newbox\txtbkb@xb@t
+\newbox\txtbkb@xt@p
+\newbox\txtbkb@xh@ld
+\let\tbTopMargin\relax
+\let\tbBotMargin\relax
+\long\def\tb@addtoTopMargin#1{\txtbkt@ksi={#1}%
+ \edef\eqe@tmphold{\the\txtbkt@ksi\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold}%
+}
+\newcommand{\tb@addtoMargin}[1]{%
+ \edef\eqe@tmphold{\the\txtbkt@ks}%
+ \global\txtbkt@ks=\expandafter{\eqe@tmphold#1}%
+}
+\newcommand{\tb@showlsols}{\includecomment{lsol}\excludecomment{ssol}}
+\newcommand{\tb@showssols}{\includecomment{ssol}\excludecomment{lsol}}
+\let\tb@soln@choice\tb@showssols
+\newcommand{\clearTopMargin}{\global\let\tbTopMargin\relax}
+\newcommand{\setTopMargin}[1]{%
+ \gdef\tbTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}%
+ \gdef\tbSaveTopMargin{\color@begingroup\normalcolor
+ #1\color@endgroup}}
+\let\tbTopMargin\@empty
+\let\tbSaveTopMargin\@empty
+\newcommand{\clearBotMargin}{\global\let\tbBotMargin\relax}
+\newcommand{\setBotMargin}[1]{\gdef\tbBotMargin{#1}%
+ \gdef\tbSaveBotMargin{#1}}
+\let\tbBotMargin\@empty
+\let\tbSaveBotMargin\@empty
+\newcommand{\restoreLastTopMargin}{\expandafter\setTopMargin
+ \expandafter{\tbSaveTopMargin}}
+\newcommand{\restoreLastBotMargin}{\expandafter\setBotMargin
+ \expandafter{\tbSaveBotMargin}}
+\newcommand{\MarParBoxFmt}{\normalsfcodes
+ \normalfont\normalsize\normalbaselines\parindent0pt
+ \vbadness\@Mi \hbadness5000 \tolerance9999
+ \parskip0pt\raggedright %\spaceskip=0pt\xspaceskip=0pt
+ \setlength{\linewidth}{\tbmarparboxwidth}%
+}
+\newlength\tbmarparboxwidth
+\setlength\tbmarparboxwidth{1sp}
+\definecolor{MidMargcolor}{rgb}{0,0,.8}
+\newcommand{\midMargFmt}[1]{%
+ \def\tb@midMargFmt{\normalfont\normalsize\normalcolor#1}}
+\midMargFmt{\color{MidMargcolor}}
+\def\eqe@MarParBox#1{\lower\footskip\hbox{%
+ \leavevmode\parbox[b][\textheight+\footskip][t]%
+ {\tbmarparboxwidth}{\tb@midMargFmt#1}}} %
+\newcommand{\insMidMarg}[1]{%
+ \let\eqe@margininsert\@empty
+ \expandafter\tb@addtoMargin\expandafter{\eqe@margininsert#1}%
+}
+\newcommand{\tbPreMarginHeader}{\par\penalty0 \kern3pt}
+\newcommand{\tbPostMarginHeader}{\par\nobreak}
+\definecolor{HEADERcolor}{named}{black}
+\newcommand{\cngMargHeadColorTo}[1]{\insMidMarg{\gdef\tb@MHC{#1}}}
+\newcommand{\resetMargHeadColor}{\insMidMarg{\gdef\tb@MHC{HEADERcolor}}}
+\resetMargHeadColor
+\newcommand{\tbMarginHeaderFmt}[1]{\textcolor{\tb@MHC}{\textbf{#1}}}
+\newcommand{\insMargHead}[2][]{% dps
+ \insMidMarg{\tb@marginHeader{#1}{#2}}}
+\newcommand{\insProbHead}[2][]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \protected@xdef\currProbHead{#2 \tbcontinued}\else
+ \protected@xdef\currProbHead{#1}\fi
+ \ifisinstred\ifismarginans
+ \insMidMarg{\tb@marginProbHeader{#1}{#2}}\fi\fi
+}
+\newcommand{\tb@marginProbHeader}[2]{%
+ \def\tb@argi{#1}\ifx\tb@argi\@empty
+ \tb@marginHeader{#2 \tbcontinued}{#2}\else
+ \tb@marginHeader{#1}{#2}\fi
+}
+\newcommand{\tb@marginHeader}[2]{\tbPreMarginHeader
+ \tbMarginHeaderFmt{#2}\def\tb@argi{#1}\ifx\tb@argi\@empty
+ \mark{#2}\else\mark{#1}\fi\tbPostMarginHeader
+}
+\newcommand{\tbcontinued}{(cont.)}
+\newcommand{\marparboxwidth}[1]{%
+ \setlength\tbmarparboxwidth{#1}%
+ \setlength{\marginparwidth}{\tbmarparboxwidth}%
+ \tbMakeFinalCalcs
+}
+\@onlypreamble\marparboxwidth
+\newcommand{\chkmarginboxwidth}{%
+ \ifdim\tbmarparboxwidth=1sp \PackageError{eqexam}%
+ {You have not set the value of\MessageBreak
+ \string\marparboxwidth}%
+ {Define the \string\marparboxwidth\space command}\fi
+}
+\newif\ifmarginsonleft \marginsonleftfalse
+\newcommand{\tbSetupForMargins}{%
+ \ifmarginsonleft
+ \setlength{\oddsidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in-\oddsidemargin}%
+ \else
+ \setlength{\oddsidemargin}{0pt}%
+ \setlength{\evensidemargin}{\tbmarparboxwidth+\marginparsep}%
+ \setlength{\textwidth}{%
+ \paperwidth-2in-\oddsidemargin-\evensidemargin}%
+ \fi
+}
+\newcommand{\tbplaceMargins}{{%
+ \setlength{\@tempdima}{%
+ \paperheight-1in-\topmargin-\headheight-\headsep-\textheight}%
+ \xdef\@evenlly{\strip@pt\@tempdima}%
+ \xdef\@oddlly{\@evenlly}%
+ \setlength{\@tempdima}{1in}%
+ \xdef\@evenllx{\strip@pt\@tempdima}%
+ \ifmarginsonleft\else
+ \setlength{\@tempdima}{1in+\textwidth+\marginparsep}\fi
+ \xdef\@oddllx{\strip@pt\@tempdima}%
+}}
+\newcommand{\tbMakeFinalCalcs}{%
+ \tbSetupForMargins
+ \tbplaceMargins
+}
+\newlength\tbminskipbtnlayers
+\setlength{\tbminskipbtnlayers}{6pt}
+\newif\ifiscarryover \iscarryoverfalse
+\newenvironment{carryOverFmt}[1]{#1\let\tb@carryoverFmt\@empty
+ \c@rryoverFmt{#1}}{}
+\def\c@rryoverFmt#1{%
+ \ifx\tb@carryoverFmt\@empty
+ \global\let\tb@carryoverFmt\@empty
+ \xdef\tb@co@page{\thepage}%
+ \gdef\tb@carryoverFmt{\ifnum\thepage>\tb@co@page\relax
+ #1\global\let\tb@carryoverFmt\@empty\fi}%
+ \fi
+}
+\let\tb@carryoverFmt\@empty
+\let\tb@rest@reMarginFmt\relax
+\def\tb@insertCarryOver#1{%
+ \let\tb@rest@reMarginFmt\relax
+ \ifiscarryover\ifx\tb@carryoverFmt\@empty\else
+ \let\tb@rest@reMarginFmt\tb@midMargFmt
+ \tb@carryoverFmt\fi\fi
+ #1 \tb@rest@reMarginFmt
+}
+\newif\iftb@shipoutPermitted \tb@shipoutPermittedtrue
+\newcommand{\turnOnFTBShipout}{\global\tb@shipoutPermittedtrue}
+\newcommand{\turnOffFTBShipout}{\global\tb@shipoutPermittedfalse}
+\newcommand{\eqe@tb@shipout}{\iftb@shipoutPermitted
+ \ifnum\arabic{page}=\tblastpageshipped
+ \let\tb@so@next\relax\else
+ \xdef\tblastpageshipped{\arabic{page}}%
+ \def\tb@so@next{\eqe@tb@ship@ut}\fi
+ \expandafter\tb@so@next\fi
+}
+\def\tblastpageshipped{-100}
+\newcommand{\eqe@tb@ship@ut}{%
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \global\setbox\txtbkb@xb@t=\vbox\bgroup
+ \color@begingroup
+ \hsize=\tbmarparboxwidth
+ \vsize=\textheight
+ \MarParBoxFmt
+ \csname tbTopMargin\endcsname
+ \vskip\tbminskipbtnlayers
+\set@typeset@protect
+ \the\txtbkt@ks
+ \color@endgroup\vfil
+ \egroup
+ \global\setbox\txtbkb@xt@p=\vsplit\txtbkb@xb@t to\textheight
+ \ifvoid\txtbkb@xb@t\global\iscarryoverfalse
+ \else\global\iscarryovertrue\fi
+ \ifx\tbBotMargin\relax\else
+ \bgroup\setbox2=\vbox{%
+ \color@begingroup\normalcolor
+ \hsize=\tbmarparboxwidth\kern0pt
+ \MarParBoxFmt\csname tbBotMargin\endcsname
+ \color@endgroup
+ \kern0pt
+ }%
+ \dimen0=\textheight
+ \advance\dimen0-\ht\txtbkb@xh@ld
+ \advance\dimen0-\tbminskipbtnlayers
+ \setbox0=\vsplit\txtbkb@xt@p to \dimen0
+ \global\setbox\txtbkb@xb@t=\vbox{%
+ \unvbox\txtbkb@xt@p\unvbox\txtbkb@xb@t}%
+ \global\setbox\txtbkb@xt@p=\vbox{\unvbox0
+ \vfill\vskip\tbminskipbtnlayers
+ \vfil\unvbox2\relax}\egroup
+ \fi
+ \ifodd\value{page}%
+ \put(\@oddllx,\@oddlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\else
+ \put(\@evenllx,\@evenlly){%
+ \eqe@MarParBox{\unvbox\txtbkb@xt@p}}\fi
+ \global\txtbkt@ks={}\ifvoid\txtbkb@xb@t\else
+ \if!\splitbotmark!\global\let\tb@sbm@exp\relax\else
+ \xdef\tb@sbm@exp{\noexpand\tbPreMarginHeader
+ \noexpand\tbMarginHeaderFmt{\splitbotmark}%
+ \noexpand\tbPostMarginHeader
+ \noexpand\par\kern3pt}%
+ \fi
+ \global\txtbkt@ks=\expandafter{\tb@sbm@exp
+ \tb@insertCarryOver{\unvbox\txtbkb@xb@t}}%
+ \fi
+}
+\newcommand{\insertpageifcarryover}[1][\null]{%
+ \newpage
+ \ifiscarryover\def\eqeifnext{\csname iftrue\endcsname}%
+ \PackageInfo{eqexam}{Carry over of content in margin
+ from page \thepage.\MessageBreak Creating a blank page}\else
+ \def\eqeifnext{\csname iffalse\endcsname}\fi\eqeifnext#1\fi}
+\newcommand{\setFullWidthHeader}{%
+ \setlength{\@tempdima}{%
+ \evensidemargin+\tbmarparboxwidth+\marginparsep}%
+ \edef\@headoffset{\the\@tempdima}%
+ \def\@evenhead{\makebox[0pt]{\makebox[0pt][l]
+ {\thepage}\hspace{\@headoffset}}\hfil\slshape\leftmark}%
+ \ifmarginsonleft
+ \def\@oddhead{\makebox[0pt]{\makebox[0pt][l]
+ {\slshape\rightmark}\hspace{\@headoffset}}\hfil\thepage}%
+ \else
+ \def\@oddhead{{\slshape\rightmark}\hfil\makebox[0pt]
+ {\hspace{\@headoffset}\makebox[0pt][r]{\thepage}}}%
+ \fi
+}
+\newif\ifchapterexercises \chapterexercisesfalse
+\let\chaptersolutions\relax
+\def\tb@EndOfChapterExercises{%
+ \let\include@solutions@chapter\include@solutions
+ \def\includeexersolutions{%
+ \include@solutions@chapter
+ \global\let\include@solutions\relax
+ }%
+ \def\chaptersolutions{%
+ \includeexersolutions
+ \immediate\closeout\ex@solns
+ \newwrite \ex@solns \global\let\quiz@solns\ex@solns
+ \immediate\openout \ex@solns \jobname.sol
+ \ifvspacewithsolns\writeAllAnsAtEnd\fi
+ }%
+}
+\def\writeallsolutions{\let\chaptersolutions\relax}
+\excludecomment{afterChapSolns}
+\def\NewCommentCutFile{\def\CommentCutFile{solnsAtEnd.cut}}
+\def\RestoreCommentCutFile{\def\CommentCutFile{comment.cut}}
+\@ifundefined{BeforeIncludedComment}{%
+\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{#1}{\endgroup \message{Processing '#1' comment.}%
+ \NewCommentCutFile\SetUpCutFile
+ % #2 before SetUp, so we can do renaming.
+ \message{Comment '#1' writing to \CommentCutFile.}%
+ \ProcessComment{#1}}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \CommentEndDef{#1}}
+}{\long\def\solnsAtEndcomment
+ #1{\message{Special comment '#1'}%
+ \csarg\def{After#1Comment}{\immediate\closeout\CommentStream
+ \RestoreCommentCutFile\input{solnsAtEnd.cut}\relax}%
+ \csarg\def{#1}{\NewCommentCutFile\BeforeIncludedComment\relax
+ \ProcessComment{#1}}%
+ \CommentEndDef{#1}}
+ }
+\solnsAtEndcomment{solnsAtEnd}
+\newcommand{\exercisesAtEndOfChapter}{%
+ \ifeq@nosolutions\else
+ \typeout{^^J!!!!!Executing in chapter solutions!!!!!^^J}
+ \chapterexercisestrue\tb@EndOfChapterExercises
+ \ifchapterexercises
+ \csarg\let{solnsAtEnd}\@gobble
+ \excludecomment{solnsAtEnd}%
+ \csarg\let{AftersolnsAtEndComment}\relax
+ \includecomment{afterChapSolns}\else
+ \excludecomment{afterChapSolns}\fi
+ \fi
+}
+\@onlypreamble\exercisesAtEndOfChapter
+\newcommand{\setFullWidthLayout}{%
+ \saveBasicLayoutParams
+ \setlength{\oddsidemargin}{0in}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \setlength{\textwidth}{\paperwidth-2in}%
+ \setlength{\linewidth}{\paperwidth-2in}%
+ \setlength{\columnseprule}{0pt}%
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+}
+\newenvironment{fullwidthtext}{%
+\begin{list}{}{%
+ \setlength{\labelwidth}{0pt}\setlength{\labelsep}{0pt}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\leftmargin}{0pt}\setlength{\rightmargin}{0pt}
+}\item\relax}{\end{list}}
+\newcommand{\restorePageLayout}{\newpage
+ \setlength{\oddsidemargin}{\tb@osms}
+ \setlength\evensidemargin{\tb@esms}
+ \setlength{\textwidth}{\tb@tws}
+ \setlength{\linewidth}{\tb@lws}
+ \setlength{\columnseprule}{\tb@csr}
+}
+\newcommand{\saveBasicLayoutParams}{%
+ \xdef\tb@osms{\the\oddsidemargin}%
+ \xdef\tb@esms{\the\evensidemargin}%
+ \xdef\tb@tws{\the\textwidth}%
+ \xdef\tb@lws{\the\linewidth}%
+ \xdef\tb@csr{\the\columnseprule}%
+}
+\newcommand{\initChapAfterSolns}{\newpage
+ \clearTopMargin\clearBotMargin
+ \setFullWidthLayout
+}
+\newcommand{\restoreFromChapAfterSolns}{\newpage
+ \restorePageLayout\setFullWidthHeader
+}
+\eqequestopsep{0pt}
+\eqequesparsep{0pt}
+\eqequesitemsep{0pt}
+\eqequeslistparindent{0pt}
+\renewenvironment{eqequestions}{%
+ \begin{list}{}{%
+ \ifwithinsoldoc\let\solnItemMngt\eqeSolnItemMngt\fi
+ \setlength{\labelwidth}{\eqemargin}%
+ \setlength{\parsep}{\eqeques@parsep}%
+ \setlength{\itemsep}{\eqeques@itemsep}
+ \setlength{\topsep}{\eqeques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\eqeques@listparindent}%
+ \ifwithinsoldoc\settowidth{\labelsep}{\eqe@hspannerSoln}\else
+ \settowidth{\labelsep}{\eqe@hspannerPrb}\fi
+ \setlength{\leftmargin}{\labelwidth}%
+ }\ifwithinsoldoc\global\firstitemtrue\fi\item\relax}{\end{list}}
+\newcommand{\eqepquestopsep}[1]{\def\eqepques@topsep{#1}}
+\newcommand{\eqepquesparsep}[1]{\def\eqepques@parsep{#1}}
+\newcommand{\eqepquesitemsep}[1]{\def\eqepques@itemsep{#1}}
+\eqepquestopsep{\eqeques@itemsep}
+\eqepquesparsep{\eqeques@parsep}
+\eqepquesitemsep{\eqeques@itemsep}
+\newenvironment{eqepartsquestions}{%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{\eqe@prtsepSoln\hspace{\tbsolnpartwdth}}
+ \setlength{\parsep}{\eqepques@parsep}%
+ \setlength{\itemsep}{\eqepques@itemsep}%
+ \setlength{\topsep}{\eqepques@topsep}%
+ \setlength{\itemindent}{0pt}%
+ \settowidth{\labelsep}{\eqe@hspannerSoln}
+ \setlength{\leftmargin}{\labelwidth}%
+ }\item\relax}{\end{list}}
+\long\def\gobbletoEndEXt#1\endeqEXt{\@gobbletwo}
+\def\eqExtArg{\theeqquestionnoi}
+\if\load@exerquiz\eqe@NO\DoNotFitItIn\fi
+\let\fillInFormatDefault\@empty
+\def\exerSolnsHeadnToc{}
+\renewcommand{\exerSolnInput}{%
+ \global\let\webnewpage\relax
+ \ifsolutionsonly\else\immediate\closeout\ex@solns\fi
+ \ifeq@nosolutions\else\newpage % 2012-03-14
+ \iftherearesolutions\eq@solutionshook\eqsolutionshook
+ \ifsolutionsonly\else\newpage\eq@solutionshook
+ \eqsolutionshook\fi
+ \ifx\webnewpage\relax
+ \gdef\webnewpage{\global\let\webnewpage\newpage}%
+ \fi
+ \priorexsectitle\exerSolnsHeadnToc\priorexslinput
+ \InputIfFileExists{\jobname.sol}{}{\PackageWarning{exerquiz}
+ {!!! Solutions to exercises not found}}%
+ \fi
+ \fi
+}
+\setcounter{partno}{1}\edef\firstPartLtr{\thepartno}
+\newif\iffrstProbNumShown\frstProbNumShownfalse
+\def\tb@insertDecPoint{\ifwithinsoldoc\eqedecPointSoln\else
+ \eqe@decPointMrg\fi}
+\newcommand{\eqedsplyOnlyFrst}[2]{\def\thisPart{#2}%
+ \ifx\thisPart\firstPartLtr\global\frstProbNumShowntrue
+ \tb@mrgDigitFmt{#1}\tb@insertDecPoint\else
+ \iffrstProbNumShown\tb@GenProbNum{#1}\else
+ \global\frstProbNumShowntrue\tb@mrgDigitFmt{#1}%
+ \tb@insertDecPoint\fi\fi\global\eqeGenProbNumfalse
+}
+\newif\ifeqeGenProbNum \eqeGenProbNumfalse
+\newcommand{\displayProbNumOnce}{\global\eqeGenProbNumtrue} %
+\def\tb@GenProbNum#1{\ifeqeGenProbNum#1\tb@insertDecPoint\else
+ \phantom{#1\tb@insertDecPoint}\fi}%
+\def\sq@priorhook{\medskip}
+\def\default@fvsizeskip{.1}
+\aboveexskip{0pt}
+\belowexskip{0pt}
+\renewcommand\belowexsolnskip{{}}
+\renewcommand\exerSolnHeader[3]{%
+ \ifeqforpaper\else\webnewpage\fi%\par
+ \noindent\@ifundefined{hypertarget}
+ {#3}{\hypertarget{#2}{#3}\relax}\solnhspace
+}
+\def\nNumberOfP@rts{0}
+\renewcommand{\preExamSolnHead}{\medbreak\noindent}
+\renewcommand{\examSolnHeadFmt}[1]{\textbf{#1}}
+\renewcommand{\postExamSolnHead}{\smallskip}
+\newcommand{\wrtChapSolnHead}[1]{%
+ \writeT@SolnFile{%
+ \protect\preChapSolnHead
+ \protect\chapHeadSolnFmt{\protect\ftbFmtChapter{\thechapter}#1}%
+ \protect\postChapSolnHead
+}}
+\newcommand{\preChapSolnHead}{\bigbreak\noindent}
+\newcommand{\chapHeadSolnFmt}[1]{{\large\textbf{#1}}}
+\newcommand{\postChapSolnHead}{\medbreak}
+\newcommand{\ftbFmtChapter}[1]{\chaptername\space#1.\space\ignorespaces}
+\newcommand{\convertChapHeadToChapters}{%
+ \let\preChapSolnHead\relax
+ \let\chapHeadSolnFmt\chapter
+ \let\ftbFmtChapter\@gobble
+ \let\postChapSolnHead\relax
+}
+\newcommand{\probSet}[1]{Problem Set #1}
+\newcommand{\annotPage}{\protect\annotThePage{\thepage}}
+\newcommand{\annotThePage}[1]{\space(page\protect~#1)}
+\def\noProbHeader{NPH}
+\newenvironment{probset}[2][\probSet{\thesection}]{%
+ \exam[#2]{\autoExamName}\ifx#1\noProbHeader\else
+ \protected@edef\ftb@tmp@exp{\noexpand\insProbHead{#1}}%
+ \ftb@tmp@exp\fi}{\endexam}
+\newcounter{exampleno}[section]
+\renewcommand{\theexampleno}{\arabic{section}.\arabic{exampleno}}
+\newcommand{\examplenoname}{Example}
+\newenvironment{example}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise}[exampleno]}{\end{exercise}}
+\newenvironment{example*}{%\medskip
+ \belowexskip{\medskipamount}\aboveexskip{\medskipamount}%
+ \makeRoomForProb{\@nbaselineskip\baselineskip}{}%
+ \renewcommand\exlabel{Example}%
+ \renewcommand\exlabelformat{\textbf{\exlabel~\theexampleno.}}%
+ \let\eq@fititin\eqfititin
+ \renewcommand\exrtnlabelformat{$\square$}%
+ \def\eqexheader@wrapper{\eqexheader}%
+ \SolutionsAfter
+ \begin{exercise*}[exampleno]}{\end{exercise*}}
+\setDefaultfvsizeskip{.1}
+\nbaselineskip{4}
+\newcommand{\ftbInputBookAux}[1]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{tex}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+ \let\save@writefile\@writefile
+ \let\@writefile\@gobbletwo
+ \let\save@setckpt\@setckpt
+ \let\@setckpt\@gobbletwo
+ \makeatletter
+ \InputIfFileExists{\tbBaseName.aux}{%
+ \PackageInfo{eqexam}
+ {Inputting auxiliary files of\MessageBreak\tbSourceFile}%
+ }{%
+ \PackageError{eqexam}
+ {Auxiliary files for \tbSourceFile\space were not found}
+ {Compile the source file \tbSourceFile\space
+ three times\MessageBreak%
+ to create the required auxiliary files.}%
+ }%
+ \makeatother
+ \global\let\ftblabel\label
+ \let\label\@gobble
+ \let\@writefile\save@writefile
+ \let\@setckpt\save@setckpt
+}
+\@onlypreamble\ftbInputBookAux
+\newcommand{\restorelabel}{\global\let\label\ftblabel}
+\newcommand{\gobblelabel}{\let\label\@gobble}
+\newcommand{\ftbInputSolnFiles}[1][\tbBaseName.sol]{%
+ \filename@parse{#1}\@ifundefined{filename@ext}%
+ {\def\filename@ext{sol}}{}%
+ \xdef\tbBaseName{\filename@base}%
+ \xdef\tbSourceFile{\filename@base.\filename@ext}%
+ \InputIfFileExists{\tbBaseName.sol}{%
+ \PackageInfo{eqexam}
+ {Inputting solutions file \tbBaseName.sol\MessageBreak}%
+ }{%
+ \PackageError{eqexam}
+ {Solutions file for \tbSourceFile\space was not found}%
+ {Compile the source files three times}%
+ }%
+}
+\endinput
+%%
+%% End of file `eqtextb.def'.
diff --git a/texmf-dist/tex/latex/eqexam/flextended.def b/texmf-dist/tex/latex/eqexam/flextended.def
new file mode 100644
index 00000000..086e4850
--- /dev/null
+++ b/texmf-dist/tex/latex/eqexam/flextended.def
@@ -0,0 +1,303 @@
+%%
+%% This is file `flextended.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,flextended')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\fls@vebaselinelineskip{% dps22
+ \xdef\flbaselineskip{\the\baselineskip}}
+\def\fl@Cnt{0}
+\def\fl@CutName{flx-\jobname.cut}
+\def\flwriteexsol@fter{% dpsj23
+ \ifx\exsolafter\@empty
+ \immediate\write\verbatim@out{\string\ignorespaces}% dpsj23
+ \else
+ \immediate\write\verbatim@out{\string\exsolafter
+ \string\space\string\ignorespaces}%
+ \fi
+}
+\def\fl@getcontent#1{\begingroup
+ {\count0=\fl@Cnt\relax
+ \advance\count0by1\relax
+ \xdef\fl@Cnt{\the\count0 }}%
+ \global\let\verbatim@out\CommentStream
+ \immediate\openout\verbatim@out=#1
+ \ifwithinparts
+ \ifx\istabularexer\eq@YES
+ \immediate\write\verbatim@out{\string\hfuzz\string\hsize}%
+ \immediate\write\verbatim@out{\string\minipage[t]{\string\hsize}}%
+ \ifanswerkey
+ \immediate\write\verbatim@out{\string\expandafter
+ \string\noindent\string\eqSolnExCmds}% dps23
+ \flwriteexsol@fter
+ \else
+ \immediate\write\verbatim@out{\string\expandafter
+ \string\noindent\string\priorWorkAreaCmds
+ \string\ignorespaces}% dps23
+ \fi
+ \else
+ \ifanswerkey\flwriteexsol@fter\fi
+ \fi
+ \else
+ \ifanswerkey\flwriteexsol@fter\fi
+ \fi
+ \verbatimwrite
+}
+\def\fl@vsplitandplace#1{%
+ \iffl@firstpass
+ \global\setbox\eqe@nskeyflsplit\color@vbox
+ \normalbaselines
+ \predisplaypenalty=-50
+ \postdisplaypenalty=-50
+ \setlength{\hsize}{\eqe@fillwidth}%
+ \expandafter\noindent % dpsj23
+ \ifanswerkey\expandafter\eqSolnExCmds\else
+ \expandafter\priorWorkAreaCmds\fi
+ \ignorespaces\input{#1}\fls@vebaselinelineskip
+ \color@endbox\global\fl@firstpassfalse\fi
+ \@tempdima\eqe@HOfVrule\relax
+ \advance\@tempdima\flfboxrule
+ \advance\@tempdima\lineskip
+ \ifflfrstsplit\else\advance\@tempdima\wlVspace\fi
+ \advance\@tempdima\maxdepth
+ \advance\@tempdima by\twe@kBre@kPoint\relax
+ \eq@tmplengthB\@tempdima % target height
+ \splittopskip\wlVspace
+ \splitmaxdepth\maxdepth
+ \advance\splitmaxdepth by\twe@kBre@kPoint\relax
+ \setbox\eq@pointbox=\copy\eqe@nskeyflsplit
+ \setbox\eqe@nskeyfltop=\vsplit\eq@pointbox to \@tempdima
+ \setbox\eqe@nskeyfltop=\vbox{\unvbox\eqe@nskeyfltop}%
+ \ifvoid\eq@pointbox\else
+ \setlength{\@tempdimb}
+ {\eq@tmplengthB-\dp\eqe@nskeyfltop}%
+ \ifdim\@tempdimb<0pt
+ \@tempdimb=-\@tempdimb
+ \ifdim\@tempdimb>\maxdepth
+ \advance\@tempdima-\flbaselineskip\relax
+ \else
+ \fi
+ \else
+ \setbox\eq@pointbox=\copy\eqe@nskeyflsplit
+ \advance\@tempdima by\flbaselineskip\relax
+ \setbox\eqe@nskeyfltop=\vsplit\eq@pointbox to \@tempdima
+ \setbox\eqe@nskeyfltop=\vtop{\unvbox\eqe@nskeyfltop}%
+ \setlength{\@tempdimb}{\eq@tmplengthB-\dp\eqe@nskeyfltop}%
+ \ifdim\@tempdimb<0pt % too much
+ \advance\@tempdima-\flbaselineskip\relax
+ \else
+ \fi
+ \fi
+ \fi
+ \splittopskip\wlVspace
+ \lineskip1pt
+ \setbox\eq@pointbox=\copy\eqe@nskeyflsplit
+ \global\setbox\eqe@nskeyfltop=\vsplit\eqe@nskeyflsplit to \@tempdima
+ \global\setbox\eqe@nskeyfltop\vtop{\unvbox\eqe@nskeyfltop\vskip0pt}%
+ \ifvoid\eqe@nskeyflsplit
+ \ifeqedb\llap{Bot}\fi
+ \ifeqedb\raise\eqe@HOfVrule\llap{Top}\fi
+ \ifeqedb\llap{V\qquad}\fi
+ \ifflfrstsplit\global\flfrstsplitfalse
+ \ifeqedb\llap{FP\hskip.5in}\fi
+ \rlap{\raisebox{\eqe@HOfVrule+\flfboxrule+\lineskip}
+ {\vtop{\vsize=\eqe@HOfVrule\relax
+ \unvbox\eqe@nskeyfltop\vfil}}}\else
+ \ifeqedb\llap{SP\hskip.5in}\fi
+ \rlap{\raisebox{\eqe@HOfVrule+\flfboxrule+\wlVspace+\lineskip}
+ {\vtop{\vsize=\eqe@HOfVrule\relax
+ \unvbox\eq@pointbox\vfil}}}%
+ \global\setbox\eqe@nskeyflsplit\box\voidb@x
+ \fi
+ \else
+ \ifeqedb\llap{Bot}\fi
+ \ifeqedb\raise\eqe@HOfVrule\llap{Top}\fi
+ \ifeqedb\llap{nV\qquad}\fi
+ \ifflfrstsplit\global\flfrstsplitfalse
+ \ifeqedb\llap{FP\hskip.5in}\fi
+ \rlap{\raisebox{\eqe@HOfVrule+\flfboxrule+\lineskip}
+ {\vtop{\vsize=\eqe@HOfVrule\relax
+ \unvbox\eqe@nskeyfltop\vfil}}}\else
+ \ifeqedb\llap{SP\hskip.5in}\fi
+ \rlap{\raisebox{\eqe@HOfVrule+\flfboxrule+\wlVspace+\lineskip}
+ {\vtop{\vsize=\eqe@HOfVrule\relax
+ \unvbox\eqe@nskeyfltop\vfil}}}%
+ \fi
+ \fi
+ \setbox\eq@pointbox\box\voidb@x
+}
+\let\turnfl@nskeyOnOff\relax
+\def\turnflnosolnsOn{\eqe@flnosolnstrue}
+\def\turnflnosolnsOff{\eqe@flnosolnsfalse}
+\def\turnflanskeyOn{%
+ \def\turnfl@nskeyOnOff{%
+ \ifanswerkey
+ \ifx\makeVgrid\relax % already in grid mode, do nothing
+ \ifwriteVertic@lFLines\KV@eqefillLines@toplinefalse\fi % dps16
+ \writeVertic@lFLinesfalse
+ \let\makeVgrid\eqe@makeVgrid % dpsj5
+ \fi % dps17
+ \let\eqe@insert@more@content\eqe@insertSolns % dpsj5
+ \eqe@flextendedtrue % dps16
+ \fillTypeGrid % dps16
+ \global\let\eq@insertverticalspace\eq@YES
+ \global\vspacewithsolnstrue
+ \fi
+ }%
+}
+\def\turnflanskeyOff{%
+ \def\turnfl@nskeyOnOff{%
+ \ifanswerkey
+ \writeVertic@lFLinestrue
+ \eqe@flextendedfalse
+ \let\eq@insertverticalspace\eq@NO
+ \@eqlinedfillerfalse
+ \global\let\eqe@insert@more@content\relax
+ \global\let\eq@insertverticalspace\eq@YES
+ \ifvspacewithsolns\else
+ \global\vspacewithsolnsfalse\fi
+ \global\displayworkareafalse
+ \fi
+ }%
+}
+\turnflanskeyOff
+\let\p@ssToSolns\relax % dps30
+\def\eqe@insertSolns{\clubpenalty=50
+ \widowpenalty=50 \vbadness=10000
+ \fl@vsplitandplace{s\fl@CutName}}
+\def\eq@b@ddCodeSpecial#1{\global\gridpgbrkfalse % dpsj15
+ \global\let\eq@e@ddCodeSpecial\relax
+ \gdef\eqe@flnexti{#1}% dpsj5
+ \if@eqlinedfiller
+ \ifKV@eqefillLines@bgonly\leavevmode
+ \vskip-\baselineskip\kern\lineskip\fi % dpsj11
+ \ifKV@eqefillLines@outlineonly\leavevmode
+ \vskip-\baselineskip\kern\lineskip\fi
+ \ifanswerkey %\turnfl@nskeyOnOff % dps16
+ \ifeqe@flextended
+ \ifcont@nnot
+ \ifx\makeVgrid\relax
+ \gdef\p@ssToFLs{\turnfl@nskeyOnOff
+ \let\eqe@insert@more@content\eqe@insertSolns
+ \writeVertic@lFLinesfalse
+ \KV@eqefillLines@toplinefalse
+ \let\makeVgrid\eqe@makeVgrid
+ }%
+ \else
+ \gdef\p@ssToFLs{\turnfl@nskeyOnOff
+ \let\eqe@insert@more@content\eqe@insertSolns
+ \writeVertic@lFLinestrue}%
+ \fi
+ \gdef\eqe@flnexti{\turnfl@nskeyOnOff
+ \global\fl@firstpasstrue % dpsj5
+ \p@ssToSolns
+ \global\gridpgbrkfalse
+ \eqe@setStartSolns
+ \xdef\kdvsp@SAVE{\ifkeepdeclaredvspacing
+ true\else false\fi}%
+ \gdef\kdvsp@Restore{\@nameuse
+ {keepdeclaredvspacing\kdvsp@SAVE}%
+ \gdef\twe@kBre@kPoint{0pt}\global
+ \let\kdvsp@Restore\relax}% dpsj21
+ \expandafter\global\vspacewithkeyOff
+ \vbadness=10000
+ \fl@getcontent{s\fl@CutName}}%
+ \gdef\eq@e@ddCodeSpecial{\endverbatimwrite\endgroup
+ \ifwithinparts\ifx\istabularexer\eq@YES
+ \immediate\write\verbatim@out{\string\endminipage}\fi\fi
+ \immediate\closeout\verbatim@out
+ \global\let\eq@e@ddCodeSpecial\relax
+ }%
+ \else
+ \PackageWarningNoLine{eqexam}{For solutions to appear
+ using filler lines\MessageBreak
+ (with flextexded and answerkey options),\MessageBreak
+ you must first expand \string\turnContAnnotOn\MessageBreak
+ prior to line \the\inputlineno.\MessageBreak
+ Switching to \string\useFillerDefault}%
+ \useFillerDefault
+ \let\eq@insertverticalspace\eq@NO
+ \fi
+ \fi
+ \fi
+ \fi
+ \eqe@flnexti
+}% dpsj4
+\def\eqe@priorw@content{%
+ \clubpenalty=50 % dps15
+ \widowpenalty=50
+ \vbadness=10000
+ \fl@vsplitandplace{p\fl@CutName}%
+}%
+\renewenvironment{priorworkarea}{\par
+ \ifx\solutionparshape\@empty\else % dps28
+ \pushEnvir
+ \everypar{}\if@eqalignfilllinestoleft\else
+ \parshape=1 \leadinIndent \linewidth\fi
+ \popEnvir
+ \fi
+ \global\let\p@ssToFLs\relax
+ \global\let\p@ssToSolns\relax
+ \vspacewithkeyOff
+ \ifeq@nosolutions\else\sloppy\fi
+ \def\eqe@flnexti{\eqSavedComment}%
+ \ifeqe@flnosolns\ifdisplayworkarea
+ \def\eqe@flnexti{\fl@getcontent{p\fl@CutName}}\fi\fi % dpsj21
+ \gdef\eqe@flnextii{\eqSavedEndCommet}%
+ \ifeqe@flnosolns\ifdisplayworkarea
+ \gdef\eqe@flnextii{\endverbatimwrite\endgroup
+ \ifwithinparts\ifx\istabularexer\eq@YES
+ \immediate\write\verbatim@out{\string\endminipage}\fi\fi
+ \immediate\closeout\verbatim@out}\fi\fi
+ \eqe@flnexti
+}{%
+ \eqe@flnextii
+ \ifcont@nnot
+ \ifeqe@flnosolns
+ \ifdisplayworkarea
+ \ifx\eq@insertverticalspace\eqe@YES
+ \ifx\makeVgrid\relax
+ \gdef\p@ssToFLs{%
+ \let\eqe@insert@more@content\eqe@priorw@content
+ \writeVertic@lFLinesfalse
+ \KV@eqefillLines@toplinefalse
+ \let\makeVgrid\eqe@makeVgrid}%
+ \else
+ \gdef\p@ssToFLs{%
+ \let\eqe@insert@more@content\eqe@priorw@content
+ \writeVertic@lFLinestrue}%
+ \fi
+ \gdef\kdvsp@Restore{\gdef\twe@kBre@kPoint{0pt}\global
+ \let\kdvsp@Restore\relax}% dpsj21
+ \fi
+ \fi
+ \else
+ \global\setbox\eqe@nskeyflsplit\box\voidb@x
+ \global\setbox\eqe@nskeyfltop\box\voidb@x
+ \fi
+ \else
+ \PackageWarningNoLine{eqexam}{For priorworkarea to appear
+ using filler lines\MessageBreak
+ (with flextexded and nosolutions options),\MessageBreak
+ you must first expand \string\turnContAnnotOn\MessageBreak
+ prior to line \the\inputlineno.\MessageBreak
+ Switching to \string\useFillerDefault}%
+ \gdef\p@ssToSolns{\useFillerDefault}%
+ \fi
+}
+\endinput
+%%
+%% End of file `flextended.def'.
diff --git a/texmf-dist/tex/latex/eqexam/fortextbook.sty b/texmf-dist/tex/latex/eqexam/fortextbook.sty
index fcd541a9..34d3e2d0 100644
--- a/texmf-dist/tex/latex/eqexam/fortextbook.sty
+++ b/texmf-dist/tex/latex/eqexam/fortextbook.sty
@@ -1,31 +1,31 @@
-%%
-%% This is file `fortextbook.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eqexam.dtx (with options: `copyright,ftbsty')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eqexam.sty package, %%
-%% Copyright (C) 2005--2017 D. P. Story %%
-%% dpstory@uakron.edu %%
-%% %%
-%% This program can redistributed and/or modified under %%
-%% the terms of the LaTeX Project Public License 1.2 %%
-%% Distributed from CTAN archives in directory %%
-%% macros/latex/base/lppl.txt; either version 1 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{fortextbook}
- [2012/03/14 v1.0 A fortextbook Package (dps)]
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eqexam}}
-\ProcessOptions
-\RequirePackage[%
- ftbsolns,fortextbook,usecustomdesign,
- forcolorpaper,noseparationrule,usexkv
-]{eqexam}
-\endinput
-%%
-%% End of file `fortextbook.sty'.
+%%
+%% This is file `fortextbook.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eqexam.dtx (with options: `copyright,ftbsty')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eqexam.sty package, %%
+%% Copyright (C) 2005--2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{fortextbook}
+ [2012/03/14 v1.0 A fortextbook Package (dps)]
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{eqexam}}
+\ProcessOptions
+\RequirePackage[%
+ ftbsolns,fortextbook,usecustomdesign,
+ forcolorpaper,noseparationrule,usexkv
+]{eqexam}
+\endinput
+%%
+%% End of file `fortextbook.sty'.