summaryrefslogtreecommitdiff
path: root/texmf-dist/tex/latex/eqexam/eqtextb.def
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/tex/latex/eqexam/eqtextb.def')
-rw-r--r--texmf-dist/tex/latex/eqexam/eqtextb.def1530
1 files changed, 765 insertions, 765 deletions
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'.