summaryrefslogtreecommitdiff
path: root/texmf-dist/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2018-09-13 10:28:30 +0900
committerNorbert Preining <norbert@preining.info>2018-09-13 10:28:30 +0900
commit26f4947f509c2440ce28e625133a15f6a2446920 (patch)
tree8789ff207ced3a161133a246fca03446b24b3edc /texmf-dist/tex
parent6ec0713f46508d1e4aa5741e30152add5e10776f (diff)
update acrotex
Diffstat (limited to 'texmf-dist/tex')
-rw-r--r--texmf-dist/tex/latex/acrotex/aebdocfmt.def87
-rw-r--r--texmf-dist/tex/latex/acrotex/aebdonotindex.def24
-rw-r--r--texmf-dist/tex/latex/acrotex/aebjs.def3048
-rw-r--r--texmf-dist/tex/latex/acrotex/aebrandom.def340
-rw-r--r--texmf-dist/tex/latex/acrotex/aebsumrytbls.def512
-rw-r--r--texmf-dist/tex/latex/acrotex/altadbfncs.def82
-rw-r--r--texmf-dist/tex/latex/acrotex/dljscc.def152
-rw-r--r--texmf-dist/tex/latex/acrotex/dljslib.sty3482
-rw-r--r--texmf-dist/tex/latex/acrotex/edvipdfm.def198
-rw-r--r--texmf-dist/tex/latex/acrotex/eforms.sty2752
-rw-r--r--texmf-dist/tex/latex/acrotex/epdfmark.def254
-rw-r--r--texmf-dist/tex/latex/acrotex/epdftex.def212
-rw-r--r--texmf-dist/tex/latex/acrotex/eqbr.def168
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcat.def156
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcolor.def172
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcz.def228
-rw-r--r--texmf-dist/tex/latex/acrotex/eqda.def166
-rw-r--r--texmf-dist/tex/latex/acrotex/eqde.def228
-rw-r--r--texmf-dist/tex/latex/acrotex/eqes.def156
-rw-r--r--texmf-dist/tex/latex/acrotex/eqexam.def3430
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfin.def158
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfr.def152
-rw-r--r--texmf-dist/tex/latex/acrotex/eqit.def128
-rw-r--r--texmf-dist/tex/latex/acrotex/eqnl.def160
-rw-r--r--texmf-dist/tex/latex/acrotex/eqno.def162
-rw-r--r--texmf-dist/tex/latex/acrotex/eqpo.def180
-rw-r--r--texmf-dist/tex/latex/acrotex/eqru.def358
-rw-r--r--texmf-dist/tex/latex/acrotex/eqtr.def212
-rw-r--r--texmf-dist/tex/latex/acrotex/exerquiz.sty9334
-rw-r--r--texmf-dist/tex/latex/acrotex/insdljs.sty1815
-rw-r--r--texmf-dist/tex/latex/acrotex/pdfdochex.def556
-rw-r--r--texmf-dist/tex/latex/acrotex/setcorder.def132
-rw-r--r--texmf-dist/tex/latex/acrotex/taborder.sty184
-rw-r--r--texmf-dist/tex/latex/acrotex/template.def514
-rw-r--r--texmf-dist/tex/latex/acrotex/uieforms.def778
-rw-r--r--texmf-dist/tex/latex/acrotex/usemcfi.def156
-rw-r--r--texmf-dist/tex/latex/acrotex/web.cfg10
-rw-r--r--texmf-dist/tex/latex/acrotex/web.sty4418
-rw-r--r--texmf-dist/tex/latex/acrotex/webpro.def1752
-rw-r--r--texmf-dist/tex/latex/acrotex/websec.def384
40 files changed, 18757 insertions, 18633 deletions
diff --git a/texmf-dist/tex/latex/acrotex/aebdocfmt.def b/texmf-dist/tex/latex/acrotex/aebdocfmt.def
new file mode 100644
index 00000000..2b17e769
--- /dev/null
+++ b/texmf-dist/tex/latex/acrotex/aebdocfmt.def
@@ -0,0 +1,87 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Web package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% History: Noel Vaillant began developing a better web.sty
+%% based on my earlier published web.sty. Many thanks
+%% to him for starting me off.
+%%---------------------------------------------------------
+\newcommand{\setupFullwidth}{%
+ \setlength{\textwidth}{\paperwidth}%
+ \advance\textwidth-2in
+ \setlength{\linewidth}{\textwidth}%
+ \setlength{\columnseprule}{0pt}%
+ \setlength{\oddsidemargin}{0in}%
+ \setlength{\evensidemargin}{0in}%
+}
+\makeatletter
+\def\clindx{\ifcodeline@index\expandafter\@firstoftwo\else
+ \expandafter\@secondoftwo\fi}
+\GlossaryPrologue{\section{Change History}}
+\IndexPrologue{\section{Index} \parbox{\linewidth}{Numbers written in italic
+ refer to the page where the corresponding entry is described;
+ numbers underlined refer to the
+\clindx{code line of the}{}
+ definition; numbers in roman refer to the
+\clindx{code lines}{pages}
+ where the entry is used.}\medskip}
+\value{IndexColumns}=2
+\value{GlossaryColumns}=2
+\def\changes@#1#2#3{%
+ \protected@edef\@tempa{\noexpand\glossary{#1 (#2)\levelchar
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \expandafter\@gobble
+ \saved@macroname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
+ \@tempa\endgroup\@esphack}
+\def\SpecialMainOptIndex#1{\@bsphack\index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (option)%
+ \encapchar usage}%
+ \index{options:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ usage}\@esphack}
+\def\SpecialMainKeyIndex#1{\@bsphack\index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (key)%
+ \encapchar usage}%
+ \index{keys:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ usage}\@esphack}
+\def\SpecialMainJSIndex#1{\@bsphack\index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (JS function)%
+ \encapchar usage}%
+ \index{JS functions:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ usage}\@esphack}
+\makeatother
+\def\IndexOpt#1{\SpecialMainOptIndex{#1}%
+ \marginpar{\raggedleft\PrintDescribeMacro{#1}}}
+\def\IndexKey#1{\SpecialMainKeyIndex{#1}%
+ \marginpar{\raggedleft\PrintDescribeMacro{#1}}}
+\def\IndexJS#1{\SpecialMainJSIndex{#1}%
+ \marginpar{\raggedleft\PrintDescribeMacro{#1}}}
+\endinput
+%%
+%% End of file `aebdocfmt.def'.
diff --git a/texmf-dist/tex/latex/acrotex/aebdonotindex.def b/texmf-dist/tex/latex/acrotex/aebdonotindex.def
new file mode 100644
index 00000000..e8ab1f73
--- /dev/null
+++ b/texmf-dist/tex/latex/acrotex/aebdonotindex.def
@@ -0,0 +1,24 @@
+% \DoNotIndex{\",\-,\#,\%,\&,\',\),\(,\*,\+,\-,\.,\,,\/,\<,\>,\@}
+% \DoNotIndex{\def,\edef,\gdef,\xdef,\global,\long,\let,\catcode}
+% \DoNotIndex{\expandafter,\string,\the,\ifx,\else,\fi,\advance}
+% \DoNotIndex{\csname,\endcsname,\relax,\begingroup,\endgroup,\bgroup,\egroup.\begin,\end}
+% \DoNotIndex{\newenvironment,\renewenvironment,\newcommand,\renewcommand}
+% \DoNotIndex{\DeclareTextCommand,\DeclareTextCompositeCommand}
+% \DoNotIndex{\space,\@empty,\special,\arabic,\meaning,\message,\MessageBreak,\medskip,\makebox,\parbox,\noexpand,\expandafter,\noindent,\indent}
+% \DoNotIndex{\par,\@@par,\@@temp,\@@tmp,\@M,\@esphack,\@for,\@firstoffive,\@firstoftwo,\@fleqnfalse,\@fleqntrue}
+% \DoNotIndex{\@gobble,\@gobbletwo,\@gobblethree,\@ifnextchar, \@ifpackagelater,\@ifpackageloaded,\@ifstar,\@ifundefined}
+% \DoNotIndex{\@namedef,\@nameuse,\@ne,\@par,\@temp,\@tempa,\@tempcnta,\@tempcntb,\@tempdima,\@tempdimb,\@tfor}
+% \DoNotIndex{\@tfor,\@temptokena,\@toodeep,\@whilenum,\@xarraycr,\@xtabularcr,\toks@}
+% \DoNotIndex{\alph,\bfseries,\count,\count@,\count@ii,\cs,\closein,\closeout,\define@key,\protect}
+% \DoNotIndex{\if,\i,\ifcase,\ifdimen,\ifnum,\ifinner,\ifnum,\ifodd,\ignorespaces,\immediate,\jobname}
+% \DoNotIndex{\jsR,\jsT,\leavevmode,\linewidth,\newif,\newlength,\newcounter,\newcount,\newread,\newtoks,\newpage}
+% \DoNotIndex{\setkeys,\setlength,\settowidth,\typeout,\tw@,\c@page,\z@,\z@skip,\@nil,\@makeatletter,\@makeatother}
+% \DoNotIndex{\[,\],\{,\},\^,\|}
+% \DoNotIndex{\\,\0,\1,\2,\3,\8}
+% \DoNotIndex{\do,\dp,\ht,\wd,\hfill,\hfil,\hoffset,\hfuzz,\hss,\hsize,\hskip,\hspace,\hbox,
+% \vfill,\vfuzz,\vglue,\voffset,\vskip,\vspace,\vbox,\vtop}
+% \DoNotIndex{\ifcase,\or,\value,\addtolength,\settowidth,\val,\nr}
+% \DoNotIndex{\unskip,\marginpar,\mbox,\quad,\qquad}
+\endinput
+%%
+%% End of file `aebdonotindex.def'.
diff --git a/texmf-dist/tex/latex/acrotex/aebjs.def b/texmf-dist/tex/latex/acrotex/aebjs.def
index 59be747d..57fd0c3b 100644
--- a/texmf-dist/tex/latex/acrotex/aebjs.def
+++ b/texmf-dist/tex/latex/acrotex/aebjs.def
@@ -1,1524 +1,1524 @@
-%%
-%% This is file `aebjs.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,aebjs')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{aebjs.def}
- [2018/03/21 v8.2.2 %
- Exerquiz document level JavaScript (dps)]
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\def\aeb@array{new Array}
-\def\refac#1{\\(#1\\)}\def\regrp#1{(#1)}\def\rechrclass#1{[#1]}
-\def\redm{\\.}\def\remul{\\*}\def\rediv{\\/}\def\repow{\\^}
-\def\redigit{\\d}\def\reany{.}\def\rebstr{\string^}\def\reestr{\string$}
-\def\preReqForm{\Array(requireForm,\@gobble}
-\def\preDenyForm{\Array(denyForm,\@gobble}
-\def\postDenyForm{\Array(requireFormNot,\@gobble}
-\newcommand{\noPeekArgs}[1]{%
- \def\NoPeekAlert{eqAppAlert(#1)}}\def\newNoPeekArgs{}
-\def\NoPeekAlert{eqAppAlert(\noPeekMsg,3)}
-\newcommand{\dlLibSpecRespJS}{"none","undefined","empty"}
-\newif\ifSubstVars\SubstVarsfalse % dps17
-\newif\ifShowAppr\ShowApprtrue % dps17
-\def\altApprOn{\ShowApprtrue} % dps17
-\def\altApprOff{\ShowApprfalse} % dps17
-\def\corrChoiceFullyOn{\def\eqCorrChoiceFully{true}}
-\def\corrChoiceFullyOff{\def\eqCorrChoiceFully{false}}
-\corrChoiceFullyOn
-\def\corrLocalChoiceFullyOn{\def\eqCorrLocalChoiceFully{true}} % dpsf07
-\def\corrLocalChoiceFullyOff{\def\eqCorrLocalChoiceFully{false}} % dpsf07
-\def\resetLocalChoiceFully{\let\eqCorrLocalChoiceFully\@empty} % dpsf07
-\resetLocalChoiceFully % no local implementation
-\begin{insDLJS*}[exerquizLoaded]{exerquiz}
-\begin{newsegment}{AeB: AcroTeX eDucation Bundle}
-/*
- Document Level JavaScript
- AcroTeX eDucation Bundle
- D. P. Story copyright 2000-\the\year
-*/
-var exerquizLoaded = true;
-this.disclosed = true;
-app.runtimeHighlight=false;
-\end{newsegment}
-\begin{newsegment}{Eq: Global Data}
-var ok2Continue = true;
-var ProcessIt = true;
-var retn;
-var Score=0;
-var ptScore=0;
-var pcScore=0;
-var quizGrade="C";
-var NQuestions=0;
-var NPointTotal=0;
-var e = Math.E;
-var pi = Math.PI;
-var replaceExclaim = \replaceexclaim;
-var negPointsAllowed = \negpointsallowed;
-var negPointsMarkupAllowed = \negpointsmarkupallowed;
-var aQuizControl = new Object;
-var RightWrong=new Array();
-var ProbValue = new Array();
-var ProbDist = new Array();
-var ProbType = new Array();
-var Responses=new Array();
-var appAlerts = new Object;
-var _mathVars="x";
-var _ModalNotOn=true;
-var GradeScaleDefault=new Array(\eqGradeScale);
-var aDlLibSpecResp=new Array(\dlLibSpecRespJS);
-var JSfBuiltIn = new Array
- ( "abs","acos","asin","atan","ceil", "floor","cos","exp",
- "log","max","min","pow","random","round","sin",
- "sqrt","tan");
-var JSfCustomEarly = new Array ("arctan", "arcsin", "arccos")
-var JSfCustomLate = new Array
- ( "logc", "ln","sec","csc","cot",
- "asinh", "acosh","atanh","acoth","asech","acsch",
- "sinh", "cosh","tanh","coth","sech","csch","sgn",
- "C","P","fact","pi");
-var JSf = new Array().concat(JSfCustomEarly, JSfBuiltIn, JSfCustomLate);
-var JSfCustom = new Array().concat(JSfCustomEarly, JSfCustomLate);
-var JSc = new Array("PI","E")
-function ln(x) { return Math.log(x); }
-function sec(x) { return 1/Math.cos(x); }
-function csc(x) { return 1/Math.sin(x);}
-function cot(x) { return Math.cos(x)/Math.sin(x); }
-function arctan(x) { return Math.atan(x); }
-function arcsin(x) { return Math.asin(x); }
-function arccos(x) { return Math.acos(x); }
-function logc(x) { return Math.LOG10E * Math.log(x); }
-function C(x,y) {return ch(x,y);}
-function P(x,y) {return perm(x,y);}
-function sinh(x) { return ( Math.exp(x) - Math.exp(-x) )/2; }
-function cosh(x) { return ( Math.exp(x) + Math.exp(-x) )/2; }
-function tanh(x) {
- return (Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x)); }
-function coth(x) {
- return ( Math.exp(x)+Math.exp(-x))/(Math.exp(x)-Math.exp(-x)); }
-function sech(x) { return 2/( Math.exp(x) + Math.exp(-x) )/2; }
-function csch(x) { return 2/( Math.exp(x) - Math.exp(-x) )/2; }
-function asinh(x) { return Math.log (x+Math.sqrt(Math.pow(x,2)+1)); }
-function acosh(x) {
- return Math.log (x+Math.sqrt(Math.pow(x,2)-1)); } // x ge 1
-function atanh(x) { return .5*Math.log ((1+x)/(1-x)); } // -1 < x < 1
-function acoth(x) { return atanh(1/x); } // |x| > 1
-function asech(x) { return acosh(1/x); } // 0 < x le 1
-function asch(x) { return asinh(1/x); } // x ne 0
-function acsch(x) { return asinh(1/x); } // x ne 0
-function sgn(x) { return (x==0?0:(x<0?-1:1)) };
-var aGroup = new Array
- ( ["\(","\)",\eqParens],
- ["[","]",\eqBrackets],
- ["{","}",\eqBraces]
- );
-\end{newsegment}
-\begin{newsegment}{Eq: Support for Math Fill-in}
-var _mto;
-function eqAppAlert(args) {
- _ModalNotOn = false;
- var retn=app.alert(args);
- _mto= app.setTimeOut("_ModalNotOn = true", 100);
- return retn;
-}
-function CkBalP(UserInput,lDelimiter,rDelimiter)
-{
- var Lcount=0, Rcount=0;
- for (var k=0; k < UserInput.length; k++)
- {
- if (UserInput.charAt(k) == lDelimiter) Lcount++;
- else if (UserInput.charAt(k) == rDelimiter) Rcount++;
- }
- return (Lcount==Rcount);
-}
-function CkBalVert(UserInput)
-{
- var Lcount=0;
- for (var k=0; k < UserInput.length; k++)
- if (UserInput.charAt(k)=="|") Lcount++;
- return (Lcount \% 2 == 0);
-}
-function Ckfuncs(UserInput)
-{
- var re, rei, reii;
- re = /[a-zA-Z]{2,}/g;
- reii=/r:|i:|,/g
- var _v=_mathVars.replace(reii,"");
-rei=new RegExp("[^"+_v+"]", "g");
- aF = UserInput.match(re);
- if ( aF == null ) return true;
- for (var i=0; i < aF.length; i++)
- {
-if ( rei.exec(aF[i]) == null ) continue;
- for(var j=0; j < JSf.length; j++)
- if ( aF[i].indexOf(JSf[j]) != -1 ) break;
- if (j < JSf.length) continue;
- for(var j=0; j < JSc.length; j++)
- if ( aF[i].indexOf(JSc[j]) != -1 ) break;
- if(j==JSc.length)
- {
- eqAppAlert(\eqerrBadMathFunc,3);
- ok2Continue=false;
- return false;
- }
- }
- return true;
-}
-function DisplayAnswer(fieldname,theanswer)
-{
- ProcessIt = false;
- var oDefault;
- if (arguments.length > 2 )
- var oQName = arguments[2];
- else var oQName = oDefault;
- if (typeof oQName=="undefined")
- var oQName = new Object;
- var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
-?\defaultColorJS:oQName.DefaultColorJSLoc;
- try {
- this.getField(fieldname).value=(theanswer);
- } catch(e) {}
- ProcessIt = true;
-}
-function EvalCorrAnsButton(fieldname,theanswer)
-{
- theanswer = eval(theanswer);
- DisplayAnswer(fieldname,theanswer);
-}
-function FindBalP(UserInput,Poff,Forward)
-{
- var j,depth;
- if (Forward)
- {
- for (depth=-1, j=Poff+1; depth !=0; j++)
- {
- if ( j > UserInput.length) return null;
- if (UserInput.charAt(j)=="\(") depth--;
- else if (UserInput.charAt(j)=="\)") depth++;
- }
- j--
- }
- else
- {
- for (depth=-1, j=Poff-1; depth !=0; j--)
- {
- if ( j < 1 ) return null;
- if (UserInput.charAt(j)=="\)") depth--;
- else if (UserInput.charAt(j)=="\(") depth++;
- }
- j++
- }
- return j;
-}
-function stripWhiteSpace (UserInput)
-{
- UserInput = UserInput.replace(/\s/g,"");
- if(UserInput==null || UserInput.length==0)
- {
- ok2Continue = false;
- return false;
- } else return UserInput;
-}
-function stripOutMuli (UserInput)
-{
- UserInput = UserInput.replace(/\*/g,"");
- return UserInput;
-}
-function addMathObject(UserInput)
-{
- for ( var i=0; i < JSfBuiltIn.length; i++) {
- var re = new RegExp("\\b("+JSfBuiltIn[i]+")\\b","g");
- UserInput = UserInput.replace(re,"Math.$1");
- }
- re = /\b(PI)\b/g;
- UserInput = UserInput.replace(re,"Math.$1");
- return UserInput;
-}
-function ParseInput(UserInput)
-{
- var re, repi;
- re = /\b(a)\b/g;
- UserInput = UserInput.replace(re, "(a)");
- UserInput = stripWhiteSpace (UserInput);
- if (!ok2Continue) return null;
- for(var i=0; i< aGroup.length; i++)
- {
- if(!CkBalP(UserInput, aGroup[i][0], aGroup[i][1]))
- {
- eqAppAlert(\eqerrDelimNotBal,3);
- ok2Continue = false;
- return false;
- }
- }
- UserInput = ChngAllGrpsToParens(UserInput);
- if ( replaceExclaim &&(typeof fact == "function") )
- UserInput = UserInput.replace(%
-/(?=\()?(\d+)(?=\))?!/g,"fact($1)");
- if (!CkBalVert(UserInput))
- {
- eqAppAlert(\eqerrABS,3);
- ok2Continue = false;
- return false;
- }
- UserInput=groupJSf(UserInput);
- re=/(\w)(e)(\^)/g;
- repi=/(\w)(pi)/g;
- UserInput=UserInput.replace(re, "$1*$2$3");
- UserInput=UserInput.replace(repi, "$1*$2");
- UserInput=UserInput.replace(/(sec)/g, "s@e@c");
- re=/(\w)(e)([^\^])?/g;
- UserInput=UserInput.replace(re,"$1($2\^1)$3");
- UserInput=UserInput.replace(/(s@e@c)/g, "sec");
- re=/E(\d)/g;
- UserInput=UserInput.replace(re,"E+$1");
- re=/(\d)\*E/g;
- UserInput=UserInput.replace(re,"$1E");
- if(!Ckfuncs(UserInput)) return false;
- if (typeof(Ck4Exponents) != "undefined")
- UserInput = Ck4Exponents(UserInput);
- if (typeof(Ck4Products) != "undefined" )
- UserInput = Ck4Products(UserInput);
- ok2Continue = true;
- re = /\b(log)\b/g;
- UserInput = UserInput.replace(re, "logc");
- while (/\|/.test(UserInput)&&(ok2Continue))
- {
- re = /(\|)([^\|]*)(\|)([-\+\/\*\^\)\|])/;
- if (re.test(UserInput))
- if (re.exec(UserInput)[4] == '^')
- UserInput = UserInput.replace(re, "(abs($2))$4");
- else
- UserInput = UserInput.replace(re, "abs($2)$4");
- else
- {
- re = /(\|)([^\|]*)(\|$)/;
- if (re.test(UserInput))
- UserInput = UserInput.replace(re, "abs($2)");
- }
- }
- re=/\b(pi)\b/g;
- UserInput=UserInput.replace(re,"($1)")
- var reTstExp = /(\))?\^(\()?/g;
- while ( ((aResults=reTstExp.exec(UserInput))!=null)&&(ok2Continue) )
- {
- var firstGroup = Number(Boolean(aResults[1])); // 0 or 1
- var secondGroup = 2*Number(Boolean(aResults[2])); // 0 or 2
- var caseStudy = firstGroup+secondGroup; // 0,1,2,3
- switch(caseStudy) {
- case 0:
- re=/([a-zA-Z]|\d*\.?\d*)\^([a-zA-Z]|[\+-]?\d+\.?\d*|%
-[\+-]?\d*\.?\d+)/;
- if (re.test(UserInput))
- UserInput=Ck4OddRoots(UserInput,re);
- else ok2Continue=false;
- break;
- case 1:
- aP =/\)\^/.exec(UserInput);
- LeftP=FindBalP(UserInput,aP.index,0);
- re = new RegExp("\\((.{"+eval(aP.index-LeftP-1)
- +"})\\)\\^([a-zA-Z]|[\+-]?\\d+\\.?\\d*|%
-[\+-]?\\d*\\.?\\d+)");
- if (re.test(UserInput))
- UserInput=Ck4OddRoots(UserInput,re);
- else ok2Continue=false;
- break;
- case 2:
- aP = /\^\(/.exec(UserInput);
- RightP=FindBalP(UserInput,aP.index+1,1);
- re = new RegExp("([a-zA-Z]|\\d*\\.?\\d*)\\^\\((.{"
- +eval(RightP-aP.index-2)+"})\\)");
- if (re.test(UserInput))
- UserInput=Ck4OddRoots(UserInput,re);
- else ok2Continue=false;
- break;
- case 3:
- aP = /\)\^\(/.exec(UserInput);
- LeftP=FindBalP(UserInput,aP.index,0);
- RightP=FindBalP(UserInput,aP.index+2,1);
- re = new RegExp("\\((.{"+eval(aP.index-LeftP-1)
- +"})\\)\\^\\((.{"+eval(RightP-aP.index-3)+"})\\)");
- if (re.test(UserInput))
- UserInput=Ck4OddRoots(UserInput,re);
- else ok2Continue=false;
- break;
- default:
- ok2Continue=false;
- }
- }
- if (!ok2Continue)
- {
- eqAppAlert(\eqerrBadExp,3);
- return false;
- }
- else {
- UserInput=addMathObject(UserInput);
- return UserInput;
- }
-}
-function ChngAllGrpsToParens(UserInput)
-{
- UserInput = UserInput.replace(/\[|\{/g, "\(");
- UserInput = UserInput.replace(/\]|\}/g, "\)");
- return UserInput;
-}
-function Ck4OddRoots(UserInput,re) {
- var a=re.exec(UserInput);
- while ( a[2].charAt(0)=="\(") {
- var RightP=FindBalP(a[2],0,1); // forward search
- if (RightP == a[2].length-1)
- a[2]=a[2].substring(1,a[2].length-1);
- else break;
- }
- var b=a[2].split("/");
- if ( b.length==2 ) {
- try { _m=eval(b[1])
- if ( _m == undefined || isNaN(_m) ) throw new Error();
- var d = b[1];
- var isEnclosed=(d.charAt(0) == "\(" && d.charAt(d.length-1)=="\)");
- if (!isEnclosed)
- if (/.+[\+\-].+/.test(d)) throw new Error();
- if (isEnclosed) d = s.substring(1,d.length-1);
- var n = b[0];
- isEnclosed=(n.charAt(0) == "\(" && n.charAt(d.length-1)=="\)");
- if (!isEnclosed)
- if (/.+[\+\-].+/.test(n)) throw new Error();
- if ( d == parseInt(d) && ( Boolean(d \% 2) ) ) {
- UserInput=UserInput.replace(re,
- "(pow(sgn($1),"+n+")*(pow(abs($1),$2)))");
- return UserInput;
- }
- } catch(e) {}
- }
- UserInput=UserInput.replace(re,"(pow($1,$2))");
- return UserInput;
-}
-function groupJSf(UserInput)
-{
- var re, regexp, aP, RightP;
- for (var i=0; (i<JSf.length) && (ok2Continue); i++)
- {
- re = new RegExp(JSf[i]+"\\\(");
- while ( re.test(UserInput) && (ok2Continue) )
- {
- regexp = new RegExp(JSf[i]+"\\\(", "g");
- if ( (aP = regexp.exec(UserInput)) != null )
- {
- RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
- offsetArg = RightP - regexp.lastIndex;
- regexp = new RegExp(%
-"("+JSf[i]+")\\((.{"+offsetArg+"})\\)");
- regexp.lastIndex=0;
- if (regexp.test(UserInput))
- UserInput=UserInput.replace(regexp,"($1@($2))");
- else ok2Continue=false;
- continue;
- }
- }
- }
- UserInput=UserInput.replace(/@/g,"");
- return UserInput;
-}
-function TypeParameters(v)
-{
- var aV;
- aV = ( (v.indexOf(":") == -1) && (v.indexOf(",") == -1) ) ?
- v.split("") : v.split(",");
- for ( var i=0; i < aV.length; i++)
- if ( aV[i].indexOf(":") == -1 ) aV[i] = "r:"+aV[i];
- return aV.join(",")
-}
-function ProcResp(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(arguments.length>7)?arguments[7]:event.value;
- var success = _ProcResp(flag,CorrAns,UserAns,%
-n,epsilon,domain,indepVars,oComp);
- if ( success == -1 || !ok2Continue )
- { resetHeadsUp(flag,fieldname); return null; } // dps17
- if ( success == null )
- { resetHeadsUp(flag,fieldname);
- return syntaxError(), null; } // dps17
- return notifyField(success, flag, fieldname);
-}
-// changed name of var comp -> oComp
-function _ProcResp(flag,CorrAns,UserAns,n,epsilon,domain,%
-indepVars,oComp){
- ok2Continue = true;
- CorrAns = ParseInput(CorrAns);
- if (!ok2Continue) {
- eqAppAlert("Syntax error in author's answer! Check console.",3);
- return null;
- }
- var comp = ( typeof oComp == "object" ) ?
- ((typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp ) : oComp;
- if ( (typeof(oComp)=="object") %
-&& (typeof(oComp.priorParse)!="undefined") ) {
- var retn=processSpecialParse(oComp.priorParse,UserAns);
- if (retn==null) return -1;
- }
- var reCP=/((C|P)\(.+?)(,)(.+?\))/g
- UserAns=UserAns.replace(reCP,"$1@c@$4");
- var reComma=/,/;
- if ( reComma.test(UserAns) ) {
- eqAppAlert(\eqSyntaxErrorComma,3);
- return -1;
- }
- var reRlCommaSubst=/@c@/g;
- UserAns=UserAns.replace(reRlCommaSubst,",");
- UserAns = ParseInput(UserAns);
- indepVars = TypeParameters(indepVars);
- if (!ok2Continue) return null;
- var success=randomPointCompare(n,domain,indepVars,%
-epsilon,CorrAns,UserAns,comp);
- if ( success && (typeof(oComp)=="object") %
-&& (typeof(oComp.postParse)!="undefined") )
- success=processSpecialParse(oComp.postParse,UserAns);
- return success;
-}
-function processSpecialParse(oParse,UserAns) {
- var retn, f, _o
- if ( typeof(oParse) == "object" ) {
- for ( var i=0; i < oParse.length; i++) {
- _o=oParse[i];
- if (typeof(_o)=="function") {
- retn=_o(UserAns);
- if (retn==null) return retn;
- } else {
- retn=_o[0].apply(null, [ UserAns ].concat(_o.slice(1)));
- if (retn==null) return null;
- }
- }
- } else {
- retn = oParse(UserAns);
- }
- return retn;
-}
-function randomPointCompare (n,domain,indepVars,epsilon,%
-CorrAns,userAns,comp)
-{
- var error, i, j, k;
- var aXY = new Array();
- domain = domain.replace(/[\[\]\s]/g, "");
- var aIntervals = domain.split("&");
- for (k=0; k < aIntervals.length; k++)
- {
- var aInterval = aIntervals[k].split("x");
- nI = aInterval.length;
- with (Math) {
- for (j=0; j < n; j++)
- {
- for (i=0; i < nI; i++)
- {
- var endpoints = aInterval[i].split(",");
- aXY[i] = eval(endpoints[0])-0+(eval(endpoints[1])%
--eval(endpoints[0]))*Math.random();
- }
- var cXY = aXY.toString();
- error = comp(domain,cXY,indepVars,CorrAns,userAns);
- if (error == null) return null;
- if ( (error == -1) || (error > epsilon) ) {j=-1; break;}
- }
- }
- if (j!=n) return false;
- }
- return true;
-}
-function diffCompare(_a,_c,_v,_F,_G) {
- var aXY = _c.split(",");
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = aXY.length;
- for (var _i=0; _i < _n; _i++)
- {
- if (_V[_i].charAt(0) == "r" )
- eval ("var "+_V[_i].charAt(2)+"="+aXY[_i]+";");
- else // assume type "i"
- eval ("var "+_V[_i].charAt(2)+"="+Math.ceil(aXY[_i])+";");
- }
- _F = eval(_F);
- if ( app.viewerVersion >= 5)
- {
- var rtnCode = 0;
- eval("try {if(isNaN(_G = eval(_G))) rtnCode=-1; }"
- +"catch (e) { rtnCode=1; }");
- switch(rtnCode)
- {
- case 0: break;
- case 1: return null;
- case -1: return -1;
- }
- }
- else
- if(isNaN(_G = eval(_G))) return -1;
- return Math.abs ( _F - _G );
-}
-function reldiffCompare(_a,_c,_v,_F,_G) {
- var aXY = _c.split(",");
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = aXY.length
- for (var _i=0; _i < _n; _i++)
- {
- if (_V[_i].charAt(0) == "r" )
- eval ("var "+_V[_i].charAt(2)+"="+aXY[_i]+";");
- else // assume type "i"
- eval ("var "+_V[_i].charAt(2)+"="+Math.ceil(aXY[_i])+";");
- }
- _F = eval(_F);
- if ( app.viewerVersion >= 5)
- {
- var rtnCode = 0;
- eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
- +"catch (e) { rtnCode=1; }");
- switch(rtnCode)
- {
- case 0: break;
- case 1: return null;
- case -1: return -1;
- }
- }
- else
- if(isNaN(_G = eval(_G))) return -1;
- return Math.abs ( (_F - _G)/_G );
-}
-function requireForm(UserAns, regexpr) {
- var msg=\defaultReqFormMsg;
- UserAns = stripWhiteSpace (UserAns);
- if (!ok2Continue) return null;
- UserAns = ChngAllGrpsToParens(UserAns);
- if (arguments.length>2) msg=arguments[2];
- if (typeof(regexpr.length)=="undefined") {
- if (regexpr.test(UserAns)) return true;
- else { eqAppAlert(msg,3); return null; }
- } else {
- for (var i=0; i<regexpr.length; i++)
- if (regexpr[i].test(UserAns)) break;
- if ( i < regexpr.length ) return true;
- else { eqAppAlert(msg,3); return null; }
- }
-}
-function denyForm(UserAns, regexpr) {
- var msg=\defaultReqFormMsg;
- UserAns = stripWhiteSpace (UserAns);
- if (!ok2Continue) return null;
- UserAns = ChngAllGrpsToParens(UserAns);
- if (arguments.length>2) msg=arguments[2];
- if (typeof(regexpr.length)=="undefined") {
- if (regexpr.test(UserAns)) { eqAppAlert(msg,3); return null; }
- else return true;
- } else {
- for (var i=0; i<regexpr.length; i++)
- if (regexpr[i].test(UserAns)) break;
- if ( i < regexpr.length ) { eqAppAlert(msg,3); return null; }
- else return true;
- }
-}
-function requireFormNot(UserAns, regexpr) {
- UserAns = stripWhiteSpace (UserAns);
- if (!ok2Continue) return null;
- UserAns = stripOutMuli(UserAns);
- UserAns = ChngAllGrpsToParens(UserAns);
- if (typeof(regexpr.length)=="undefined") {
- if (regexpr.test(UserAns)) return false;
- else return true;
- } else {
- for (var i=0; i<regexpr.length; i++)
- if (regexpr[i].test(UserAns)) break;
- if ( i < regexpr.length ) return false;
- else return true;
- }
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Support for multi-letter variables}
-if (!String.prototype.trim) {
- String.prototype.trim = function () {
- return this.replace(/^[\s\string\uFEFF\string\xA0]+|%
-[\s\string\uFEFF\string\xA0]+$/g, '');
- };
-}
-function _rplVarsBy(str1,str2) {
- var re=new RegExp(str1,"g");
- var result=str1.replace(re,str2);
- return result;
-}
-function processMathVars(str) {
- var pos1,pos2,lead,tmp;
- while ((pos1=str.indexOf("_rplVarsBy"))!=-1) {
- pos2=str.indexOf("@");
- lead=str.substring(0,pos1);
- tmp=str.substring(pos1,pos2);
- str=str.substring(pos2+1);
- tmp=eval(tmp);
- str=lead+tmp+str;
- }
- str=str.replace(/\s/g,"");
- return str;
-}
-getSubstValue.aSubsts=new Array(); // dps17
-function getSubstValue(v,s){
-/*
- v=variable list, it may have the form "xyz", or if there
- substitutions, it might look like "_rplVarsBy('theta','x')@";
- s=Either the user's answer or the author's answer.
-
- First develop an array of all variables are their substitutes.
- ie, getSubstValue.aSubsts=[ "c","h", ["theta",x"], ["alpha",y],...];
-*/
- var pos1,pos2,tmp,args,re,arg1,arg2;
-/*
- change new style to old
- New style: v="c,_rplVarsBy('theta->\u03B8','r:x')@,%
-_rplVarsBy('alpha->\u03B1','r:y')@";
- Old style: v="c_rplVarsBy('theta->\u03B8','x')@%
-_rplVarsBy('alpha->\u03B1','y')@";
-*/
- re=/([^'])(,)/g;
- v=v.replace(re,'$1');
- re=/([ri]\string\:)+(\string\w)/g;
- v=v.replace(re,'$2');
- getSubstValue.aSubsts=[]; // dps17
- var start=0;
- while (true) {
- v=v.substring(start);
- pos1=v.indexOf("_rplVarsBy");
- if (pos1==-1) break;
- pos2=v.indexOf("@");
- args=v.substring(pos1+10+1,pos2-1);
- tmp=args.split(",");
- arg1=eval(tmp[0].toString());
- tmp1=arg1.split("->");
- for (var i=0; i<tmp1.length; i++)
- tmp1[i]=tmp1[i].trim();
- if (tmp1.length==1) getSubstValue.aSubsts.push(tmp1[0]);
- else getSubstValue.aSubsts.push(tmp1);
- arg2=eval(tmp[1].toString());
- re=new RegExp(tmp1[0],"g");
- s=s.replace(re,arg2);
- start=pos2+1;
- }
- return s;
-}
-function RespBoxAppr(e){
- var value=(typeof e=="object")?e.value:e;
- var re;
- for (var i=0; i<getSubstValue.aSubsts.length; i++) {
- if (typeof getSubstValue.aSubsts[i]=="object") {
- re=new RegExp(getSubstValue.aSubsts[i][0],"g");
- value=(value.replace(re,getSubstValue.aSubsts[i][1],"g"));
- }
- }
- return value;
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Support Text Fill-in}
-function ProcRespTxt() {
- var i, success, authorAnswer, userAnswer = event.value;
- var fieldname=event.target.name;
- var flag = arguments[0];
- var filterMethod = arguments[1];
- var compareMethod = arguments[2];
- if ( !ProcessIt || userAnswer == "" ) return null;
- for (i = 3; i < arguments.length; i++)
- if ( success = compareTxt(userAnswer,arguments[i],%
-filterMethod, compareMethod)) break;
- return notifyField(success, flag, fieldname);
-}
-function ProcRespTxtPC() {
- var i, success, authorAnswer, userAnswer = event.value;
- ProcRespTxtPC.txtPCpCr=0;
- var fieldname=event.target.name;
- var flag = arguments[0];
- var filterMethod = arguments[1];
- var compareMethod = arguments[2];
- if ( !ProcessIt || userAnswer == "" ) return null;
- for (i=3;i<arguments.length;i++)
- if(compareTxt(userAnswer,arguments[i][0],%
-filterMethod,compareMethod))
- ProcRespTxtPC.txtPCpCr+=(arguments[i][1]);
- success=(ProcRespTxtPC.txtPCpCr>0);
- return notifyField(success,flag,fieldname);
-}
-function compareTxt(userAnswer,authorAnswer,filterMethod,compareMethod)
-{
- var caseSensitive = ( compareMethod==3 ) ? "" : "i";
- var reSwitches = "g"+caseSensitive;
- userAnswer = new String(userAnswer).filter(filterMethod);
- switch(compareMethod) {
- case 1:
- var AuthorAnswer;
- var aAuthorAnswer = authorAnswer.split(/\s+/);
- for (var j=0; j < aAuthorAnswer.length; j++) {
- AuthorAnswer = new String(%
-aAuthorAnswer[j]).filter(filterMethod);
- AuthorAnswer = AuthorAnswer.replace(/\./g,"\\.");
- AuthorAnswer = AuthorAnswer.replace(/@any@/g,".");
- var re = new RegExp(AuthorAnswer, reSwitches);
- if (!re.test(userAnswer)) return false;
- }
- return true;
- default:
- authorAnswer=new String(authorAnswer).filter(filterMethod);
- return (userAnswer == authorAnswer) ? true : false;
- }
-}
-String.prototype.filter = eqFilter;
-function eqFilter(filterMethod) {
- switch (filterMethod) {
- case 0:
- var re = /\W/g;
- return this.replace(re,"").toLowerCase();
- case 1:
- var re = /\s/g;
- return this.replace(re,"").toLowerCase();
- case 2:
- var re = /\s/g;
- return this.replace(re,"");
- case 3:
- default:
- return this.toString();
- }
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Quiz Management}
-function InitMsg(msg) { return (\eqInitQuizMsg) }
-function syntaxError() { eqAppAlert(\eqSyntaxErrorUndefVar,3); }
-var lstOfQuizzes=new Object();
-var reExtractBaseName=/^.+?\.(.+?)\..+$/;
-function ProcUserResp(key,userresp,probno,notify)
-{
- if (key==null) {
- ProcUserNoResp.apply(null,arguments);
- return;
- }
- if ( arguments.length > 4 ) {
- if ( typeof RightWrong[probno] == "undefined" ) {
- RightWrong[probno] = new Array();
- RightWrong[probno][0] = "grp";
- Responses[probno] = new Array();
- }
- RightWrong[probno][arguments[4]] = (!!key) ? 1 : 0;
- Responses[probno][arguments[4]] = userresp;
- } else {
- if ( typeof key == "object" ) {
- RightWrong[probno][0] = key[0];
- RightWrong[probno][1] = key[1];
-Responses[probno] = userresp;
-if (Responses[probno].length==0)
- Responses[probno]=undefined;
- } else {
- RightWrong[probno] = (!!key)?1:0;
-Responses[probno] = userresp;
-}
- }
- if ( (typeof fieldPopTbl == "function")&&(event.type != "Link") ) {
- var a=reExtractBaseName.exec(event.target.name);
- fieldPopTbl(a[1]);
- }
-}
-function ProcUserNoResp(key,userresp,probno,notify)
-{
- if ( arguments.length > 4 ) {
- RightWrong[probno][arguments[4]] = undefined;
- Responses[probno][arguments[4]] = undefined;
-var bVoidArray=true;
-for (var i=0; i<Responses[probno].length; i++) {
-if ( typeof Responses[probno][i] != "undefined") {
-bVoidArray=false;
-break;
-}
-}
-if (bVoidArray) {
-Responses[probno]=undefined;
-RightWrong[probno]=undefined;
- ProbValue[probno]=undefined;
-}
- } else {
- RightWrong[probno] = undefined;
- Responses[probno] = undefined;
- }
- if ( typeof fieldPopTbl == "function" ) {
- var a=reExtractBaseName.exec(event.target.name);
- fieldPopTbl(a[1]);
- }
-}
-function InitializeQuiz(qtfield,mark) {
- var oQName=eval(qtfield);
- Score=0;
- retn = null;
- if (!isQuizInitialized(qtfield)&&!isAQuizUnfinished()) return null;
- neutralizeQuizzes();
- ProcessIt = false;
- aQuizControl[qtfield] = 1;
- this.resetForm(["ScoreField." + qtfield,"mc."+qtfield,
- "obj."+qtfield,"mck."+qtfield,"Ans."+qtfield,
- "PointsField."+qtfield,"PercentField."+qtfield,
- "essay."+qtfield,"GradeField."+qtfield,
- "grpobj."+qtfield,"qMark."+qtfield, qtfield+"SanityCheck",
- qtfield+"SanityCheckPts",qtfield+"SanityCheckOOPts",
- "rbmarkup."+qtfield]);
- ProcessIt = true;
- var f = this.getField("qMark."+qtfield);
- if ( f != null ) f.display = display.hidden;
- f = this.getField("promptButton."+qtfield);
- if (f != null) f.display=display.visible;
- if (arguments.length<3) {
- f = this.getField("obj." + qtfield);
- if ( f != null ) f.readonly = false;
- }
- RightWrong=new Array();
- Responses=new Array();
- ProbValue=new Array();
- ProbDist=new Array();
- ProbType=new Array();
- if (mark==1)
- {
- var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
-?\defaultColorJS:oQName.DefaultColorJSLoc;
- var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
-?\rghtColorJS:oQName.RightColorJSLoc;
- var corrAnsSymb=(typeof oQName.CorrAnsSymbJSLoc=="undefined")%
-?\corrAnsSymbJS:oQName.CorrAnsSymbJSLoc;
- var f = this.getField("mcq." + qtfield);
- if (f != null) {
- f.delay=true;
- f.display=display.hidden;
- this.resetForm([f.name]);
- f.textColor = rightColor;
- var a = f.getArray();
- for (var i=0; i<a.length; i++) a[i].style=corrAnsSymb;
- f.delay=false;
- }
- f = this.getField("obj." + qtfield);
- if ( f != null ) f.strokeColor = defaultColor;
- f = this.getField("grpobj." + qtfield);
- if ( f != null ) f.strokeColor = defaultColor;
- f = this.getField("corr." + qtfield);
- if ( f != null ) f.display = display.hidden;
- f = this.getField(qtfield+"SanityCheck");
- if ( f != null ) f.strokeColor=defaultColor;
- f = this.getField("rbmarkup."+qtfield);
- if ( f != null ) f.display = display.hidden;
- }
- return null;
-}
-function resetHeadsUp(flag,fieldname) {
- if (flag==1) return;
- var pos1=fieldname.indexOf(".");
- var pos2=fieldname.indexOf(".",pos1+1);
- var baseName=fieldname.substring(pos1+1,pos2);
- var oQName=eval(baseName);
- var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
-?\defaultColorJS:oQName.DefaultColorJSLoc;
- var f=this.getField(fieldname);
- if (f!=null) f.strokeColor=defaultColor;
-
-}
-function neutralizeQuizzes()
-{
- for ( var qtfield in aQuizControl ) aQuizControl[qtfield] = 0;
-}
-isAQuizUnfinished.check=true;
-function isAQuizUnfinished()
-{
- if (!isAQuizUnfinished.check) return true;
- for ( var qtfield in aQuizControl )
- if ( aQuizControl[qtfield] == 1 )
- {
- eqAppAlert(\eqerrUnfinishQuiz, 3);
- return false;
- }
- return true;
-}
-function isQuizInitialized(qtfield)
-{
- if (typeof (aQuizControl[qtfield]) == "undefined")
- return false;
- else
- return (aQuizControl[qtfield] == 1);
-}
-function isEndQuizPushed(qtfield)
-{
- if (typeof (aQuizControl[qtfield]) == "undefined")
- return false;
- else
- return (aQuizControl[qtfield] == -1);
-}
-function resetQuiz(qtfield)
-{
- aQuizControl[qtfield] = -1;
-}
-function RecordPointValue(ptvalue,probno)
-{
- if (arguments.length > 2) {
- if ( typeof ProbValue[probno] == "undefined" ) {
- ProbValue[probno]=[1,arguments[5],arguments[3],arguments[4]];
- ProbValue[probno][3+arguments[2]] = ptvalue;
- } else ProbValue[probno][3+arguments[2]] = ptvalue;
- }
- else {
- ProbValue[probno]=ptvalue;
- }
-}
-function RecordProblemType(qType,probno)
-{
- ProbType[probno]=qType;
-}
-function GrpRight( a, nProb, qtfield )
-{
- var f = this.getField("grpobj."+qtfield+"."+nProb);
- var l = f.getArray().length
- var prod = 1;
- for ( var i=1; i <= l; i++) prod *= !!a[i];
- return prod;
-}
-function DisplayQuizResults(qtfield,nPointTotal,nQuestions)
-{
- Score = 0; ptScore = 0;
- NPointTotal=nPointTotal; NQuestions=nQuestions;
- for (var i=1; i < RightWrong.length; i++)
- {
- if ( (typeof RightWrong[i] == "object" ) %
- && ( RightWrong[i][0] == "grp" ) ) {
- // grouped question
- Score += GrpRight(RightWrong[i], i, qtfield);
- var aWeights = ProbValue[i].slice(2);
- var evalGrpJS = eval(ProbValue[i][1]);
- var evalGrpJSValue = evalGrpJS(this,qtfield,i,
- RightWrong[i],aWeights);
- ProbDist[i] = evalGrpJSValue;
- ptScore = ptScore + evalGrpJSValue;
- } else {
- if (typeof RightWrong[i] == "object") {
- if ( RightWrong[i][0] == 1 ) {
- Score++;
- ProbDist[i]=(typeof ProbValue[i] == "object") ?
- 1*ProbValue[i][1] : 1*ProbValue[i];
- ptScore += (1*ProbDist[i]);
- } else {
- if (RightWrong[i][1] == 1)
- ProbDist[i]=(typeof ProbValue[i]=="object") ?
- 1*ProbValue[i][1] : 1*ProbValue[i];
- else
- ProbDist[i]=(typeof ProbValue[i] == "object") ?
- 1*ProbValue[i][1] : 0;
- ptScore += (1*ProbDist[i]);
- }
- } else {
- if (RightWrong[i]==1) {
- Score++;
- ProbDist[i] = ( typeof ProbValue[i] == "object") ?
- 1*ProbValue[i][1] : 1*ProbValue[i];
- ptScore += (1*ProbDist[i]);
- }
- else {
- ProbDist[i] = ( typeof ProbValue[i] == "object") ?
- 1*ProbValue[i][2] : 0;
- ptScore += (1*ProbDist[i]);
- }
- }
- }
- }
- if ( !negPointsAllowed && (ptScore < 0) ) ptScore = 0;
- if (ptScore == nPointTotal) pcScore = 100;
- else pcScore = util.printf("\%.1f", (100 * ptScore) / nPointTotal);
- var oQName=eval(qtfield);
- var gradeScale=%
-(typeof oQName.GradeScaleLoc=="undefined")%
-?GradeScaleDefault:oQName.GradeScaleLoc;
- quizGrade = GetGrade.apply(null,gradeScale);
- var f = this.getField("ScoreField."+qtfield);
- if ( f != null ) f.value=(\eqQuizTotalMsg);
- f = this.getField("PointsField."+qtfield);
- if ( f != null) f.value=(\eqQuizPointsMsg);
- f = this.getField("PercentField."+qtfield);
- if ( f != null) f.value=(\eqQuizPercentMsg);
- f = this.getField("GradeField."+qtfield);
- if ( f != null) f.value=(\eqQuizGradeMsg);
-}
-function GetGrade()
-{
- var cGrade, aRange;
- var l = arguments.length/2;
- if (pcScore >=100) return arguments[0];
- if (pcScore < 0 ) return arguments[arguments.length-2];
- for (var i=0; i < l; i++)
- {
- cGrade = arguments[2*i];
- aRange = arguments[2*i+1];
- if ( (pcScore >= arguments[2*i+1][0])
- && (pcScore < arguments[2*i+1][1])) return cGrade;
- }
- return null;
-}
-function ProcessQuestion (key,letterresp,probno,
- quizno,qtfield,notify,mark,msg) {
- var silent = ( arguments.length > 8 ) ? true : false;
- if (!isQuizInitialized(qtfield))
- {
- if (!silent) eqAppAlert(InitMsg(msg),3);
- this.resetForm(["mc."+qtfield+"."+probno,
- "mck."+qtfield+"."+probno]);
- }
- else
- {
- ProcUserResp(key,letterresp,probno,notify);
- if (mark==1)
- {
- var oQName=eval(qtfield);
- var defaultColor=%
-(typeof oQName.DefaultColorJSLoc=="undefined")%
-?\defaultColorJS:oQName.DefaultColorJSLoc;
- var rightColor=%
-(typeof oQName.RightColorJSLoc== "undefined")%
-?\rghtColorJS:oQName.RightColorJSLoc;
- var wrongColor=%
-(typeof oQName.WrongColorJSLoc=="undefined")%
-?\wrngColorJS:oQName.WrongColorJSLoc;
- var rightAnsSymb=%
-(typeof oQName.RightAnsSymbJSLoc=="undefined")%
-?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
- var wrongAnsSymb=%
-(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
-?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
- var corrAnsSymb=%
-(typeof oQName.CorrAnsSymbJSLoc=="undefined")%
-?\corrAnsSymbJS:oQName.CorrAnsSymbJSLoc;
- var f = this.getField("mcq."+qtfield+"."+probno);
- var fck = this.getField("mck."+qtfield+"."+probno);
- var bMultiSelect = ( fck != null ) ? true : false;
- f.delay=true;
- this.resetForm([f.name]);
- var a = f.getArray();
- var l = a.length;
- if ( bMultiSelect ) {
- var ack = fck.getArray();
- for ( var i=0; i<l; i++) {
- if ( ack[i].isBoxChecked(0) ) {
- a[i].style = ( a[i].isDefaultChecked(0) ) ?
- rightAnsSymb : wrongAnsSymb;
- a[i].textColor = ( a[i].isDefaultChecked(0) ) ?
- rightColor : wrongColor;
- a[i].value = "Yes";
- } else {
- a[i].style = ( a[i].isDefaultChecked(0) ) ?
- corrAnsSymb : wrongAnsSymb;
- a[i].textColor = ( a[i].isDefaultChecked(0) ) ?
- rightColor : wrongColor;
- a[i].value = ( a[i].isDefaultChecked(0) ) ?
- "Yes" : "Off";
- }
- }
- } else {
- for (var i=0; i < a.length; i++)
- if (a[i].style == rightAnsSymb)
- {
- a[i].style = corrAnsSymb;
- a[i].textColor = rightColor;
- }
- var qr=this.getField(%
-"mcq."+qtfield+"."+probno+"."+quizno);
- qr.textColor = key ? rightColor :wrongColor;
- qr.style = key ? rightAnsSymb : wrongAnsSymb;
- qr.value="Yes"; // gr.checkThisBox(0); // ver 5.0
- }
- this.getField("mcq."+qtfield+"."+probno).delay=false;
- }
- }
- if ( typeof fieldPopTbl == "function" ) fieldPopTbl(qtfield);
-}
-function correctQuiz(qtfield,nQuestions)
-{
- var oQName=eval(qtfield);
- var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
-?\defaultColorJS:oQName.DefaultColorJSLoc;
- var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
-?\rghtColorJS:oQName.RightColorJSLoc;
- var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
-?\wrngColorJS:oQName.WrongColorJSLoc;
- var rightAnsSymb=(typeof oQName.RightAnsSymbJSLoc=="undefined")%
-?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
- var wrongAnsSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
-?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
- var bFullyCorrect=(typeof oQName.fullyCorrectLoc=="undefined")%
-?\eqCorrChoiceFully:oQName.fullyCorrectLoc; // dpsf07
- var f = this.getField("mcq." + qtfield);
- if ( f != null) {
- if (bFullyCorrect) { // dpsf07
- f.display = display.visible;
- } else {
- for (var n=1; n<=nQuestions; n++) {
- var h=this.getField("mc."+qtfield+"."+n);
- var bOk=(h!=null);
- if(bOk) var choiceType="mc";
- else {
- h=this.getField("mck."+qtfield+"."+n);
- bOk=(h!=null);
- var choiceType="mck";
- }
- if (bOk) {
- var mcq=this.getField("mcq."+qtfield+"."+n);
- var g=mcq.getArray();
- if (choiceType=="mc") {
- for (var j=0; j< g.length; j++) {
- g[j].display=(h.isBoxChecked(j))?%
-display.visible:display.hidden;
- }
- } else {
- var ck=h.getArray();
- for (var j=0; j< g.length; j++) {
- g[j].display=(ck[j].isBoxChecked(0))?%
-display.visible:display.hidden;
- }
- }
- }
- }
- }
- }
- f = this.getField("obj." + qtfield);
- if ( f != null ) {
- var a = f.getArray();
- var re=/^obj\./;
- for (var i = 0; i < a.length; i++) {
- var probno = a[i].name.replace(/.*\./g,"");
- var rbmuname = a[i].name.replace(re,"rbmarkup\.");
- var oRBMarkup = this.getField(rbmuname);
- var bRBMU = ( oRBMarkup != null );
- if ( RightWrong[probno] == 1 ) {
- a[i].strokeColor = rightColor;
- if (bRBMU) {
- oRBMarkup.textColor=rightColor;
- oRBMarkup.style=rightAnsSymb;
- }
- } else {
- a[i].strokeColor = wrongColor;
- if (bRBMU) {
- oRBMarkup.textColor=wrongColor;
- oRBMarkup.style=wrongAnsSymb;
- }
- }
- }
- }
- f = this.getField("grpobj." + qtfield);
- var re=/^grpobj\./;
- if ( f != null ) {
- var a = f.getArray();
- for ( var i = 0; i < a.length; i++) {
- var rbmuname = a[i].name.replace(re,"rbmarkup\.");
- var oRBMarkup = this.getField(rbmuname);
- var bRBMU = ( oRBMarkup != null );
- var aX = a[i].name.split(".");
- var probno = 1*aX[aX.length-2];
- var grpProbno = 1*aX[aX.length-1];
- if ( ( RightWrong[probno] != undefined ) %
-&& ( RightWrong[probno][grpProbno] == 1 ) ) {
- a[i].strokeColor = rightColor;
- if (bRBMU) {
- oRBMarkup.textColor=rightColor;
- oRBMarkup.style=rightAnsSymb;
- }
- } else {
- a[i].strokeColor = wrongColor;
- if (bRBMU) {
- oRBMarkup.textColor=wrongColor;
- oRBMarkup.style=wrongAnsSymb;
- }
- }
- }
- }
- f=this.getField("rbmarkup."+qtfield);
- if ( f != null ) f.display = display.visible;
- % if ( f != null ) f.strokeColor = defaultColor;
- f = this.getField("promptButton." + qtfield)
- if ( f != null ) f.display = display.hidden;
- f = this.getField("corr." + qtfield);
- if ( f != null ) f.display = display.noPrint;
- f = this.getField("qMark."+qtfield);
- if ( f != null )
- {
- for ( var i = 1; i <= nQuestions; i++)
- {
- if ( ProbValue[i] == undefined ) ProbValue[i]=0
- f = this.getField("qMark."+qtfield+"."+(i-1));
- if ( f != null )
- {
- // find the next non-null field
- for ( var j=i; j <= nQuestions; j++)
- {
- var h = this.getField("qMark."+qtfield+"."+j);
- if ( h != null ) break;
- }
- var g = f.getArray();
- var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
- if ( !negPointsMarkupAllowed && (qpts < 0) ) qpts=0;
- g[0].value = qpts + (( qpts == 1 ) ? " \eqptLabel\space"
- : " \eqptsLabel");
- }
- }
- this.getField("qMark."+qtfield).display = display.visible;
- }
-}
-function getTotalTally(basename) {
- var sqtotal=0;
- var f=this.getField("tally."+basename);
- var g = f.getArray();
- for (var i=0; i<g.length; i++) {
- if ( g[i] == event.target ) sqtotal += (1*event.value);
- else sqtotal += (1*g[i].value);
- }
- if ( ( f=this.getField("tallytotal."+basename) ) != null )
- f.value = sqtotal;
-}
-function clearAllSubQuizzes() {
- isAQuizUnfinished.check=false;
- for ( var o in lstOfQuizzes) {
- if (lstOfQuizzes[o].isSubmitted)
- eval ( lstOfQuizzes[o].initializeWith );
- }
- isAQuizUnfinished.check=true;
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Support for Multi-Selection}
-function ProcessMultiSelection(key,letterresp,probno,%
-quizno,qtfield,pts,ppts) {
- var f = this.getField("mck."+qtfield+"."+probno);
- if ( typeof ProbValue[probno] == "undefined" ) {
- var g = f.getArray();
- var nTotalCorrect = 0;
- for ( var i=0; i<g.length; i++ )
- nTotalCorrect += (1*g[i].exportValues[0].charAt(0));
- ProbValue[probno] = new Array();
- RightWrong[probno] = new Array();
- ProbValue[probno] = [nTotalCorrect,pts,[]];
- RightWrong[probno][2] = new Array();
- } else var nTotalCorrect = ProbValue[probno][0];
- var fck = this.getField("mck."+qtfield+"."+probno+"."+quizno);
- if ( fck.isBoxChecked(0) ) {
- ProbValue[probno][2][quizno] = ppts;
- RightWrong[probno][2][quizno] = key;
- } else {
- ProbValue[probno][2][quizno] = undefined;
- }
- var pointsThisProblem=0;
- var scoreThisProblem = 0;
- var letterResponses = new Array();
- var areAllCorrect=1;
- var numCorrect=0;
- for ( var i=1; i< ProbValue[probno][2].length; i++ ) {
- if ( typeof ProbValue[probno][2][i] != "undefined" )
- letterResponses[i] = (String.fromCharCode(96+i));
- pointsThisProblem += ( ( typeof ProbValue[probno][2][i]==%
-"undefined" )?0:ProbValue[probno][2][i]);
- if ( typeof ProbValue[probno][2][i]!="undefined" ) {
- areAllCorrect *= (1*RightWrong[probno][2][i]);
- numCorrect +=(1*RightWrong[probno][2][i]);
- }
- }
- scoreThisProblem = areAllCorrect*numCorrect;
- var scoreThisProblem = Number( scoreThisProblem == nTotalCorrect );
- if (scoreThisProblem==1 && pointsThisProblem==0 )
- pointsThisProblem=pts;
- ProbValue[probno][1] =
- ( (ProbValue[probno][1] == 0) && (scoreThisProblem == 1) )
- ? pts : pointsThisProblem;
- var passKey = ( pointsThisProblem > 0 ) ? 1 : 0;
- var retn = [ [ scoreThisProblem, passKey ], letterResponses ] ;
- return retn;
-}
-function LimitSelection(n,fname,k) {
- var f = this.getField(fname);
- var g = f.getArray();
- var total=0;
- for (var i=0; i<g.length; i++) {
- total+=( g[i].isBoxChecked(0) );
- }
- if (total > n) {
- eqAppAlert(\limSelWarningMsg,3);
- f=this.getField(fname+"."+k);
- f.checkThisBox(0,false);
- return false
- } else return true;
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Miscellaneous JS}
-function chooseJSColor( b, c1, c2 ) {
- return ( b ) ? c1 : c2;
-}
-function notifyField(success, flag, fieldname) {
- if ( flag != 0 )
- return (success)?true:false;
- var f = this.getField(fieldname);
- var re=/^(obj|grpobj)\./;
- var gname=fieldname.replace(re,"rbmarkup\.");
- var g =this.getField(gname);
- var isthereRBUP = ( g !=null );
- var h = fieldname.replace(re,"");
- var index=h.indexOf(".");
- var oQName = eval(h.substring(0,index));
- var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
-?\rghtColorJS:oQName.RightColorJSLoc;
- var rightSymb=(typeof oQName.RightColorJSLoc=="undefined")%
-?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
- var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
-?\wrngColorJS:oQName.WrongColorJSLoc;
- var wrongSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
-?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
- if (success) {
- f.strokeColor = rightColor;
- if (isthereRBUP) {
- g.style = rightSymb;
- g.textColor=rightColor;
- g.display=display.visible;
- }
- return true;
- } else {
- updateTally.downState=false;
- updateTally(fieldname);
- f.strokeColor = wrongColor;
-if (isthereRBUP) {
- b2 = ( typeof oQName.WrongAnsSymbJSLoc == "undefined" );
- g.style = wrongSymb;
- g.textColor=wrongColor;
- g.display=display.visible;
- }
- return false;
- }
-// return null; // remove ?
-}
-function updateTally(fieldname)
-{
- var objre = /^obj\./;
- var grpre = /^grpobj\./;
- if ( grpre.test(fieldname) ) {
- fieldname = fieldname.replace(grpre,"");
- var pos = fieldname.lastIndexOf(".");
- fieldname = fieldname.substring(0,pos);
- } else if ( objre.test(fieldname) )
- fieldname = fieldname.replace(objre,"");
- var f = this.getField("tally."+fieldname);
- if ( f != null ) {
- if (!updateTally.downState) f.value += 1;
- return true;
- } else return false;
-
-}
-var bNoPeekWait=false;
-var oNoPeekTimer;
-function noPeek(qtfield,rtnPage)
-{
- if (!bNoPeekWait) {
- if ( (typeof (aQuizControl[qtfield]) == "undefined") %
-|| (aQuizControl[qtfield] != -1) ) {
- bNoPeekWait=true;
- oNoPeekTimer=app.setTimeOut("bNoPeekWait=false;%
-app.clearTimeOut(oNoPeekTimer);",5);
- this.pageNum = rtnPage-1;
- \NoPeekAlert;
- }
- } else this.pageNum = rtnPage-1;
-}
-var oCB=\bcheckboxused
-function OnBlurRespBox (retn)
-{
- var qname = arguments[1];
- var oQName = eval(qname);
- var respMsg;
- var cTitle = "AcroTeX eDucation Bundle";
- if (retn != null) {
- if ( typeof appAlerts[qname] == "undefined")
- appAlerts[qname] = {bAfterValue: false, %
-cMsg: "\doNotShowAgainMsg"};
- var respMsg = (retn) ? \eqsqrtmsg\space : \eqsqwgmsg;
- if ( (event.target == this) || !oCB)
- eqAppAlert({ cMsg: respMsg, nIcon: 3, cTitle: cTitle });
- else {
- if ( ! appAlerts[arguments[1]].bAfterValue )
- eqAppAlert({ cMsg: respMsg, nIcon: 3, cTitle: cTitle, %
-oCheckbox: appAlerts[qname]});
- }
- }
- else {
- var re=/^(obj|grpobj)\./;
- var gname=event.target.name.replace(re,"rbmarkup\.");
- var g =this.getField(gname);
- var isthereRBUP = ( g !=null );
- var str = event.target.value.toString();
- if (str.replace(/\s/g,"") == "") {
- var defaultColor=%
-(typeof oQName.DefaultColorJSLoc=="undefined")%
-?color.black:oQName.DefaultColorJSLoc;
- if (isthereRBUP) g.display=display.hidden;
- event.target.strokeColor = defaultColor;
- }
- }
-}
-function jmpToNamedDest(fName,cDest,bAlert) {
- if ( (typeof appAlerts[fName]!="undefined" %
-&& appAlerts[fName].bAfterValue) || bAlert==0)
- app.setTimeOut("this.gotoNamedDest(\""+cDest+"\")",500);
- else
- this.gotoNamedDest(cDest);
-}
-function lowThreshold(nQuestions)
-{
- return true;
-}
-function highThreshold(nQuestions)
-{
- var cnt=0;
- for ( var i=0; i< Responses.length; i++ ) {
- if ( typeof Responses[i]!="undefined") cnt++
- }
- if ( cnt<nQuestions )
- eqAppAlert(\highThresholdMsg,3);
- return (cnt >= nQuestions);
-}
-\end{newsegment}
-\begin{newsegment}{Eq: Support for Grouped Questions}
-function groupEval(doc,qtfield,probno,aKey,aWeights)
-{
- var totalGrpPts = aWeights[0];
- var totalWeight = aWeights[1];
- for ( var i=1,total=0; i< aKey.length; i++ )
- if (aKey[i] != undefined) total += aKey[i]*aWeights[i+1];
- return total;
-}
-function WeightedEval(doc,qtfield,probno,aKey,aWeights)
-{
- var f = doc.getField("grpobj." + qtfield + "." + probno);
- var nGrpQno = f.getArray().length;
- var totalGrpPts = aWeights[0];
- var totalWeight = aWeights[1];
- for ( var i=1,total=0; i < aKey.length; i++ )
- if (aKey[i] != undefined) total += aKey[i]*aWeights[i+1];
- total /= totalWeight;
- total = Math.floor( total * totalGrpPts );
- return total;
-}
-function groupBernoulliEval(doc,qtfield,probno,aKey,aWeights)
-{
- var f = doc.getField("grpobj." + qtfield + "." + probno);
- var nGrpQno = f.getArray().length;
- var totalGrpPts = aWeights[0];
- for ( var i=1,isCorrect=1; i<= nGrpQno; i++ )
- isCorrect *= (aKey[i] != undefined) ? (Number(aKey[i])) : 0;
- return (isCorrect*totalGrpPts);
-}
-\end{newsegment}
-\end{insDLJS*}
-\endinput
-%%
-%% End of file `aebjs.def'.
+%%
+%% This is file `aebjs.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,aebjs')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{aebjs.def}
+ [2018/03/21 v8.2.2 %
+ Exerquiz document level JavaScript (dps)]
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\def\aeb@array{new Array}
+\def\refac#1{\\(#1\\)}\def\regrp#1{(#1)}\def\rechrclass#1{[#1]}
+\def\redm{\\.}\def\remul{\\*}\def\rediv{\\/}\def\repow{\\^}
+\def\redigit{\\d}\def\reany{.}\def\rebstr{\string^}\def\reestr{\string$}
+\def\preReqForm{\Array(requireForm,\@gobble}
+\def\preDenyForm{\Array(denyForm,\@gobble}
+\def\postDenyForm{\Array(requireFormNot,\@gobble}
+\newcommand{\noPeekArgs}[1]{%
+ \def\NoPeekAlert{eqAppAlert(#1)}}\def\newNoPeekArgs{}
+\def\NoPeekAlert{eqAppAlert(\noPeekMsg,3)}
+\newcommand{\dlLibSpecRespJS}{"none","undefined","empty"}
+\newif\ifSubstVars\SubstVarsfalse % dps17
+\newif\ifShowAppr\ShowApprtrue % dps17
+\def\altApprOn{\ShowApprtrue} % dps17
+\def\altApprOff{\ShowApprfalse} % dps17
+\def\corrChoiceFullyOn{\def\eqCorrChoiceFully{true}}
+\def\corrChoiceFullyOff{\def\eqCorrChoiceFully{false}}
+\corrChoiceFullyOn
+\def\corrLocalChoiceFullyOn{\def\eqCorrLocalChoiceFully{true}} % dpsf07
+\def\corrLocalChoiceFullyOff{\def\eqCorrLocalChoiceFully{false}} % dpsf07
+\def\resetLocalChoiceFully{\let\eqCorrLocalChoiceFully\@empty} % dpsf07
+\resetLocalChoiceFully % no local implementation
+\begin{insDLJS*}[exerquizLoaded]{exerquiz}
+\begin{newsegment}{AeB: AcroTeX eDucation Bundle}
+/*
+ Document Level JavaScript
+ AcroTeX eDucation Bundle
+ D. P. Story copyright 2000-\the\year
+*/
+var exerquizLoaded = true;
+this.disclosed = true;
+app.runtimeHighlight=false;
+\end{newsegment}
+\begin{newsegment}{Eq: Global Data}
+var ok2Continue = true;
+var ProcessIt = true;
+var retn;
+var Score=0;
+var ptScore=0;
+var pcScore=0;
+var quizGrade="C";
+var NQuestions=0;
+var NPointTotal=0;
+var e = Math.E;
+var pi = Math.PI;
+var replaceExclaim = \replaceexclaim;
+var negPointsAllowed = \negpointsallowed;
+var negPointsMarkupAllowed = \negpointsmarkupallowed;
+var aQuizControl = new Object;
+var RightWrong=new Array();
+var ProbValue = new Array();
+var ProbDist = new Array();
+var ProbType = new Array();
+var Responses=new Array();
+var appAlerts = new Object;
+var _mathVars="x";
+var _ModalNotOn=true;
+var GradeScaleDefault=new Array(\eqGradeScale);
+var aDlLibSpecResp=new Array(\dlLibSpecRespJS);
+var JSfBuiltIn = new Array
+ ( "abs","acos","asin","atan","ceil", "floor","cos","exp",
+ "log","max","min","pow","random","round","sin",
+ "sqrt","tan");
+var JSfCustomEarly = new Array ("arctan", "arcsin", "arccos")
+var JSfCustomLate = new Array
+ ( "logc", "ln","sec","csc","cot",
+ "asinh", "acosh","atanh","acoth","asech","acsch",
+ "sinh", "cosh","tanh","coth","sech","csch","sgn",
+ "C","P","fact","pi");
+var JSf = new Array().concat(JSfCustomEarly, JSfBuiltIn, JSfCustomLate);
+var JSfCustom = new Array().concat(JSfCustomEarly, JSfCustomLate);
+var JSc = new Array("PI","E")
+function ln(x) { return Math.log(x); }
+function sec(x) { return 1/Math.cos(x); }
+function csc(x) { return 1/Math.sin(x);}
+function cot(x) { return Math.cos(x)/Math.sin(x); }
+function arctan(x) { return Math.atan(x); }
+function arcsin(x) { return Math.asin(x); }
+function arccos(x) { return Math.acos(x); }
+function logc(x) { return Math.LOG10E * Math.log(x); }
+function C(x,y) {return ch(x,y);}
+function P(x,y) {return perm(x,y);}
+function sinh(x) { return ( Math.exp(x) - Math.exp(-x) )/2; }
+function cosh(x) { return ( Math.exp(x) + Math.exp(-x) )/2; }
+function tanh(x) {
+ return (Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x)); }
+function coth(x) {
+ return ( Math.exp(x)+Math.exp(-x))/(Math.exp(x)-Math.exp(-x)); }
+function sech(x) { return 2/( Math.exp(x) + Math.exp(-x) )/2; }
+function csch(x) { return 2/( Math.exp(x) - Math.exp(-x) )/2; }
+function asinh(x) { return Math.log (x+Math.sqrt(Math.pow(x,2)+1)); }
+function acosh(x) {
+ return Math.log (x+Math.sqrt(Math.pow(x,2)-1)); } // x ge 1
+function atanh(x) { return .5*Math.log ((1+x)/(1-x)); } // -1 < x < 1
+function acoth(x) { return atanh(1/x); } // |x| > 1
+function asech(x) { return acosh(1/x); } // 0 < x le 1
+function asch(x) { return asinh(1/x); } // x ne 0
+function acsch(x) { return asinh(1/x); } // x ne 0
+function sgn(x) { return (x==0?0:(x<0?-1:1)) };
+var aGroup = new Array
+ ( ["\(","\)",\eqParens],
+ ["[","]",\eqBrackets],
+ ["{","}",\eqBraces]
+ );
+\end{newsegment}
+\begin{newsegment}{Eq: Support for Math Fill-in}
+var _mto;
+function eqAppAlert(args) {
+ _ModalNotOn = false;
+ var retn=app.alert(args);
+ _mto= app.setTimeOut("_ModalNotOn = true", 100);
+ return retn;
+}
+function CkBalP(UserInput,lDelimiter,rDelimiter)
+{
+ var Lcount=0, Rcount=0;
+ for (var k=0; k < UserInput.length; k++)
+ {
+ if (UserInput.charAt(k) == lDelimiter) Lcount++;
+ else if (UserInput.charAt(k) == rDelimiter) Rcount++;
+ }
+ return (Lcount==Rcount);
+}
+function CkBalVert(UserInput)
+{
+ var Lcount=0;
+ for (var k=0; k < UserInput.length; k++)
+ if (UserInput.charAt(k)=="|") Lcount++;
+ return (Lcount \% 2 == 0);
+}
+function Ckfuncs(UserInput)
+{
+ var re, rei, reii;
+ re = /[a-zA-Z]{2,}/g;
+ reii=/r:|i:|,/g
+ var _v=_mathVars.replace(reii,"");
+rei=new RegExp("[^"+_v+"]", "g");
+ aF = UserInput.match(re);
+ if ( aF == null ) return true;
+ for (var i=0; i < aF.length; i++)
+ {
+if ( rei.exec(aF[i]) == null ) continue;
+ for(var j=0; j < JSf.length; j++)
+ if ( aF[i].indexOf(JSf[j]) != -1 ) break;
+ if (j < JSf.length) continue;
+ for(var j=0; j < JSc.length; j++)
+ if ( aF[i].indexOf(JSc[j]) != -1 ) break;
+ if(j==JSc.length)
+ {
+ eqAppAlert(\eqerrBadMathFunc,3);
+ ok2Continue=false;
+ return false;
+ }
+ }
+ return true;
+}
+function DisplayAnswer(fieldname,theanswer)
+{
+ ProcessIt = false;
+ var oDefault;
+ if (arguments.length > 2 )
+ var oQName = arguments[2];
+ else var oQName = oDefault;
+ if (typeof oQName=="undefined")
+ var oQName = new Object;
+ var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
+?\defaultColorJS:oQName.DefaultColorJSLoc;
+ try {
+ this.getField(fieldname).value=(theanswer);
+ } catch(e) {}
+ ProcessIt = true;
+}
+function EvalCorrAnsButton(fieldname,theanswer)
+{
+ theanswer = eval(theanswer);
+ DisplayAnswer(fieldname,theanswer);
+}
+function FindBalP(UserInput,Poff,Forward)
+{
+ var j,depth;
+ if (Forward)
+ {
+ for (depth=-1, j=Poff+1; depth !=0; j++)
+ {
+ if ( j > UserInput.length) return null;
+ if (UserInput.charAt(j)=="\(") depth--;
+ else if (UserInput.charAt(j)=="\)") depth++;
+ }
+ j--
+ }
+ else
+ {
+ for (depth=-1, j=Poff-1; depth !=0; j--)
+ {
+ if ( j < 1 ) return null;
+ if (UserInput.charAt(j)=="\)") depth--;
+ else if (UserInput.charAt(j)=="\(") depth++;
+ }
+ j++
+ }
+ return j;
+}
+function stripWhiteSpace (UserInput)
+{
+ UserInput = UserInput.replace(/\s/g,"");
+ if(UserInput==null || UserInput.length==0)
+ {
+ ok2Continue = false;
+ return false;
+ } else return UserInput;
+}
+function stripOutMuli (UserInput)
+{
+ UserInput = UserInput.replace(/\*/g,"");
+ return UserInput;
+}
+function addMathObject(UserInput)
+{
+ for ( var i=0; i < JSfBuiltIn.length; i++) {
+ var re = new RegExp("\\b("+JSfBuiltIn[i]+")\\b","g");
+ UserInput = UserInput.replace(re,"Math.$1");
+ }
+ re = /\b(PI)\b/g;
+ UserInput = UserInput.replace(re,"Math.$1");
+ return UserInput;
+}
+function ParseInput(UserInput)
+{
+ var re, repi;
+ re = /\b(a)\b/g;
+ UserInput = UserInput.replace(re, "(a)");
+ UserInput = stripWhiteSpace (UserInput);
+ if (!ok2Continue) return null;
+ for(var i=0; i< aGroup.length; i++)
+ {
+ if(!CkBalP(UserInput, aGroup[i][0], aGroup[i][1]))
+ {
+ eqAppAlert(\eqerrDelimNotBal,3);
+ ok2Continue = false;
+ return false;
+ }
+ }
+ UserInput = ChngAllGrpsToParens(UserInput);
+ if ( replaceExclaim &&(typeof fact == "function") )
+ UserInput = UserInput.replace(%
+/(?=\()?(\d+)(?=\))?!/g,"fact($1)");
+ if (!CkBalVert(UserInput))
+ {
+ eqAppAlert(\eqerrABS,3);
+ ok2Continue = false;
+ return false;
+ }
+ UserInput=groupJSf(UserInput);
+ re=/(\w)(e)(\^)/g;
+ repi=/(\w)(pi)/g;
+ UserInput=UserInput.replace(re, "$1*$2$3");
+ UserInput=UserInput.replace(repi, "$1*$2");
+ UserInput=UserInput.replace(/(sec)/g, "s@e@c");
+ re=/(\w)(e)([^\^])?/g;
+ UserInput=UserInput.replace(re,"$1($2\^1)$3");
+ UserInput=UserInput.replace(/(s@e@c)/g, "sec");
+ re=/E(\d)/g;
+ UserInput=UserInput.replace(re,"E+$1");
+ re=/(\d)\*E/g;
+ UserInput=UserInput.replace(re,"$1E");
+ if(!Ckfuncs(UserInput)) return false;
+ if (typeof(Ck4Exponents) != "undefined")
+ UserInput = Ck4Exponents(UserInput);
+ if (typeof(Ck4Products) != "undefined" )
+ UserInput = Ck4Products(UserInput);
+ ok2Continue = true;
+ re = /\b(log)\b/g;
+ UserInput = UserInput.replace(re, "logc");
+ while (/\|/.test(UserInput)&&(ok2Continue))
+ {
+ re = /(\|)([^\|]*)(\|)([-\+\/\*\^\)\|])/;
+ if (re.test(UserInput))
+ if (re.exec(UserInput)[4] == '^')
+ UserInput = UserInput.replace(re, "(abs($2))$4");
+ else
+ UserInput = UserInput.replace(re, "abs($2)$4");
+ else
+ {
+ re = /(\|)([^\|]*)(\|$)/;
+ if (re.test(UserInput))
+ UserInput = UserInput.replace(re, "abs($2)");
+ }
+ }
+ re=/\b(pi)\b/g;
+ UserInput=UserInput.replace(re,"($1)")
+ var reTstExp = /(\))?\^(\()?/g;
+ while ( ((aResults=reTstExp.exec(UserInput))!=null)&&(ok2Continue) )
+ {
+ var firstGroup = Number(Boolean(aResults[1])); // 0 or 1
+ var secondGroup = 2*Number(Boolean(aResults[2])); // 0 or 2
+ var caseStudy = firstGroup+secondGroup; // 0,1,2,3
+ switch(caseStudy) {
+ case 0:
+ re=/([a-zA-Z]|\d*\.?\d*)\^([a-zA-Z]|[\+-]?\d+\.?\d*|%
+[\+-]?\d*\.?\d+)/;
+ if (re.test(UserInput))
+ UserInput=Ck4OddRoots(UserInput,re);
+ else ok2Continue=false;
+ break;
+ case 1:
+ aP =/\)\^/.exec(UserInput);
+ LeftP=FindBalP(UserInput,aP.index,0);
+ re = new RegExp("\\((.{"+eval(aP.index-LeftP-1)
+ +"})\\)\\^([a-zA-Z]|[\+-]?\\d+\\.?\\d*|%
+[\+-]?\\d*\\.?\\d+)");
+ if (re.test(UserInput))
+ UserInput=Ck4OddRoots(UserInput,re);
+ else ok2Continue=false;
+ break;
+ case 2:
+ aP = /\^\(/.exec(UserInput);
+ RightP=FindBalP(UserInput,aP.index+1,1);
+ re = new RegExp("([a-zA-Z]|\\d*\\.?\\d*)\\^\\((.{"
+ +eval(RightP-aP.index-2)+"})\\)");
+ if (re.test(UserInput))
+ UserInput=Ck4OddRoots(UserInput,re);
+ else ok2Continue=false;
+ break;
+ case 3:
+ aP = /\)\^\(/.exec(UserInput);
+ LeftP=FindBalP(UserInput,aP.index,0);
+ RightP=FindBalP(UserInput,aP.index+2,1);
+ re = new RegExp("\\((.{"+eval(aP.index-LeftP-1)
+ +"})\\)\\^\\((.{"+eval(RightP-aP.index-3)+"})\\)");
+ if (re.test(UserInput))
+ UserInput=Ck4OddRoots(UserInput,re);
+ else ok2Continue=false;
+ break;
+ default:
+ ok2Continue=false;
+ }
+ }
+ if (!ok2Continue)
+ {
+ eqAppAlert(\eqerrBadExp,3);
+ return false;
+ }
+ else {
+ UserInput=addMathObject(UserInput);
+ return UserInput;
+ }
+}
+function ChngAllGrpsToParens(UserInput)
+{
+ UserInput = UserInput.replace(/\[|\{/g, "\(");
+ UserInput = UserInput.replace(/\]|\}/g, "\)");
+ return UserInput;
+}
+function Ck4OddRoots(UserInput,re) {
+ var a=re.exec(UserInput);
+ while ( a[2].charAt(0)=="\(") {
+ var RightP=FindBalP(a[2],0,1); // forward search
+ if (RightP == a[2].length-1)
+ a[2]=a[2].substring(1,a[2].length-1);
+ else break;
+ }
+ var b=a[2].split("/");
+ if ( b.length==2 ) {
+ try { _m=eval(b[1])
+ if ( _m == undefined || isNaN(_m) ) throw new Error();
+ var d = b[1];
+ var isEnclosed=(d.charAt(0) == "\(" && d.charAt(d.length-1)=="\)");
+ if (!isEnclosed)
+ if (/.+[\+\-].+/.test(d)) throw new Error();
+ if (isEnclosed) d = s.substring(1,d.length-1);
+ var n = b[0];
+ isEnclosed=(n.charAt(0) == "\(" && n.charAt(d.length-1)=="\)");
+ if (!isEnclosed)
+ if (/.+[\+\-].+/.test(n)) throw new Error();
+ if ( d == parseInt(d) && ( Boolean(d \% 2) ) ) {
+ UserInput=UserInput.replace(re,
+ "(pow(sgn($1),"+n+")*(pow(abs($1),$2)))");
+ return UserInput;
+ }
+ } catch(e) {}
+ }
+ UserInput=UserInput.replace(re,"(pow($1,$2))");
+ return UserInput;
+}
+function groupJSf(UserInput)
+{
+ var re, regexp, aP, RightP;
+ for (var i=0; (i<JSf.length) && (ok2Continue); i++)
+ {
+ re = new RegExp(JSf[i]+"\\\(");
+ while ( re.test(UserInput) && (ok2Continue) )
+ {
+ regexp = new RegExp(JSf[i]+"\\\(", "g");
+ if ( (aP = regexp.exec(UserInput)) != null )
+ {
+ RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
+ offsetArg = RightP - regexp.lastIndex;
+ regexp = new RegExp(%
+"("+JSf[i]+")\\((.{"+offsetArg+"})\\)");
+ regexp.lastIndex=0;
+ if (regexp.test(UserInput))
+ UserInput=UserInput.replace(regexp,"($1@($2))");
+ else ok2Continue=false;
+ continue;
+ }
+ }
+ }
+ UserInput=UserInput.replace(/@/g,"");
+ return UserInput;
+}
+function TypeParameters(v)
+{
+ var aV;
+ aV = ( (v.indexOf(":") == -1) && (v.indexOf(",") == -1) ) ?
+ v.split("") : v.split(",");
+ for ( var i=0; i < aV.length; i++)
+ if ( aV[i].indexOf(":") == -1 ) aV[i] = "r:"+aV[i];
+ return aV.join(",")
+}
+function ProcResp(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
+ var success = _ProcResp(flag,CorrAns,UserAns,%
+n,epsilon,domain,indepVars,oComp);
+ if ( success == -1 || !ok2Continue )
+ { resetHeadsUp(flag,fieldname); return null; } // dps17
+ if ( success == null )
+ { resetHeadsUp(flag,fieldname);
+ return syntaxError(), null; } // dps17
+ return notifyField(success, flag, fieldname);
+}
+// changed name of var comp -> oComp
+function _ProcResp(flag,CorrAns,UserAns,n,epsilon,domain,%
+indepVars,oComp){
+ ok2Continue = true;
+ CorrAns = ParseInput(CorrAns);
+ if (!ok2Continue) {
+ eqAppAlert("Syntax error in author's answer! Check console.",3);
+ return null;
+ }
+ var comp = ( typeof oComp == "object" ) ?
+ ((typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp ) : oComp;
+ if ( (typeof(oComp)=="object") %
+&& (typeof(oComp.priorParse)!="undefined") ) {
+ var retn=processSpecialParse(oComp.priorParse,UserAns);
+ if (retn==null) return -1;
+ }
+ var reCP=/((C|P)\(.+?)(,)(.+?\))/g
+ UserAns=UserAns.replace(reCP,"$1@c@$4");
+ var reComma=/,/;
+ if ( reComma.test(UserAns) ) {
+ eqAppAlert(\eqSyntaxErrorComma,3);
+ return -1;
+ }
+ var reRlCommaSubst=/@c@/g;
+ UserAns=UserAns.replace(reRlCommaSubst,",");
+ UserAns = ParseInput(UserAns);
+ indepVars = TypeParameters(indepVars);
+ if (!ok2Continue) return null;
+ var success=randomPointCompare(n,domain,indepVars,%
+epsilon,CorrAns,UserAns,comp);
+ if ( success && (typeof(oComp)=="object") %
+&& (typeof(oComp.postParse)!="undefined") )
+ success=processSpecialParse(oComp.postParse,UserAns);
+ return success;
+}
+function processSpecialParse(oParse,UserAns) {
+ var retn, f, _o
+ if ( typeof(oParse) == "object" ) {
+ for ( var i=0; i < oParse.length; i++) {
+ _o=oParse[i];
+ if (typeof(_o)=="function") {
+ retn=_o(UserAns);
+ if (retn==null) return retn;
+ } else {
+ retn=_o[0].apply(null, [ UserAns ].concat(_o.slice(1)));
+ if (retn==null) return null;
+ }
+ }
+ } else {
+ retn = oParse(UserAns);
+ }
+ return retn;
+}
+function randomPointCompare (n,domain,indepVars,epsilon,%
+CorrAns,userAns,comp)
+{
+ var error, i, j, k;
+ var aXY = new Array();
+ domain = domain.replace(/[\[\]\s]/g, "");
+ var aIntervals = domain.split("&");
+ for (k=0; k < aIntervals.length; k++)
+ {
+ var aInterval = aIntervals[k].split("x");
+ nI = aInterval.length;
+ with (Math) {
+ for (j=0; j < n; j++)
+ {
+ for (i=0; i < nI; i++)
+ {
+ var endpoints = aInterval[i].split(",");
+ aXY[i] = eval(endpoints[0])-0+(eval(endpoints[1])%
+-eval(endpoints[0]))*Math.random();
+ }
+ var cXY = aXY.toString();
+ error = comp(domain,cXY,indepVars,CorrAns,userAns);
+ if (error == null) return null;
+ if ( (error == -1) || (error > epsilon) ) {j=-1; break;}
+ }
+ }
+ if (j!=n) return false;
+ }
+ return true;
+}
+function diffCompare(_a,_c,_v,_F,_G) {
+ var aXY = _c.split(",");
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = aXY.length;
+ for (var _i=0; _i < _n; _i++)
+ {
+ if (_V[_i].charAt(0) == "r" )
+ eval ("var "+_V[_i].charAt(2)+"="+aXY[_i]+";");
+ else // assume type "i"
+ eval ("var "+_V[_i].charAt(2)+"="+Math.ceil(aXY[_i])+";");
+ }
+ _F = eval(_F);
+ if ( app.viewerVersion >= 5)
+ {
+ var rtnCode = 0;
+ eval("try {if(isNaN(_G = eval(_G))) rtnCode=-1; }"
+ +"catch (e) { rtnCode=1; }");
+ switch(rtnCode)
+ {
+ case 0: break;
+ case 1: return null;
+ case -1: return -1;
+ }
+ }
+ else
+ if(isNaN(_G = eval(_G))) return -1;
+ return Math.abs ( _F - _G );
+}
+function reldiffCompare(_a,_c,_v,_F,_G) {
+ var aXY = _c.split(",");
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = aXY.length
+ for (var _i=0; _i < _n; _i++)
+ {
+ if (_V[_i].charAt(0) == "r" )
+ eval ("var "+_V[_i].charAt(2)+"="+aXY[_i]+";");
+ else // assume type "i"
+ eval ("var "+_V[_i].charAt(2)+"="+Math.ceil(aXY[_i])+";");
+ }
+ _F = eval(_F);
+ if ( app.viewerVersion >= 5)
+ {
+ var rtnCode = 0;
+ eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
+ +"catch (e) { rtnCode=1; }");
+ switch(rtnCode)
+ {
+ case 0: break;
+ case 1: return null;
+ case -1: return -1;
+ }
+ }
+ else
+ if(isNaN(_G = eval(_G))) return -1;
+ return Math.abs ( (_F - _G)/_G );
+}
+function requireForm(UserAns, regexpr) {
+ var msg=\defaultReqFormMsg;
+ UserAns = stripWhiteSpace (UserAns);
+ if (!ok2Continue) return null;
+ UserAns = ChngAllGrpsToParens(UserAns);
+ if (arguments.length>2) msg=arguments[2];
+ if (typeof(regexpr.length)=="undefined") {
+ if (regexpr.test(UserAns)) return true;
+ else { eqAppAlert(msg,3); return null; }
+ } else {
+ for (var i=0; i<regexpr.length; i++)
+ if (regexpr[i].test(UserAns)) break;
+ if ( i < regexpr.length ) return true;
+ else { eqAppAlert(msg,3); return null; }
+ }
+}
+function denyForm(UserAns, regexpr) {
+ var msg=\defaultReqFormMsg;
+ UserAns = stripWhiteSpace (UserAns);
+ if (!ok2Continue) return null;
+ UserAns = ChngAllGrpsToParens(UserAns);
+ if (arguments.length>2) msg=arguments[2];
+ if (typeof(regexpr.length)=="undefined") {
+ if (regexpr.test(UserAns)) { eqAppAlert(msg,3); return null; }
+ else return true;
+ } else {
+ for (var i=0; i<regexpr.length; i++)
+ if (regexpr[i].test(UserAns)) break;
+ if ( i < regexpr.length ) { eqAppAlert(msg,3); return null; }
+ else return true;
+ }
+}
+function requireFormNot(UserAns, regexpr) {
+ UserAns = stripWhiteSpace (UserAns);
+ if (!ok2Continue) return null;
+ UserAns = stripOutMuli(UserAns);
+ UserAns = ChngAllGrpsToParens(UserAns);
+ if (typeof(regexpr.length)=="undefined") {
+ if (regexpr.test(UserAns)) return false;
+ else return true;
+ } else {
+ for (var i=0; i<regexpr.length; i++)
+ if (regexpr[i].test(UserAns)) break;
+ if ( i < regexpr.length ) return false;
+ else return true;
+ }
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Support for multi-letter variables}
+if (!String.prototype.trim) {
+ String.prototype.trim = function () {
+ return this.replace(/^[\s\string\uFEFF\string\xA0]+|%
+[\s\string\uFEFF\string\xA0]+$/g, '');
+ };
+}
+function _rplVarsBy(str1,str2) {
+ var re=new RegExp(str1,"g");
+ var result=str1.replace(re,str2);
+ return result;
+}
+function processMathVars(str) {
+ var pos1,pos2,lead,tmp;
+ while ((pos1=str.indexOf("_rplVarsBy"))!=-1) {
+ pos2=str.indexOf("@");
+ lead=str.substring(0,pos1);
+ tmp=str.substring(pos1,pos2);
+ str=str.substring(pos2+1);
+ tmp=eval(tmp);
+ str=lead+tmp+str;
+ }
+ str=str.replace(/\s/g,"");
+ return str;
+}
+getSubstValue.aSubsts=new Array(); // dps17
+function getSubstValue(v,s){
+/*
+ v=variable list, it may have the form "xyz", or if there
+ substitutions, it might look like "_rplVarsBy('theta','x')@";
+ s=Either the user's answer or the author's answer.
+
+ First develop an array of all variables are their substitutes.
+ ie, getSubstValue.aSubsts=[ "c","h", ["theta",x"], ["alpha",y],...];
+*/
+ var pos1,pos2,tmp,args,re,arg1,arg2;
+/*
+ change new style to old
+ New style: v="c,_rplVarsBy('theta->\u03B8','r:x')@,%
+_rplVarsBy('alpha->\u03B1','r:y')@";
+ Old style: v="c_rplVarsBy('theta->\u03B8','x')@%
+_rplVarsBy('alpha->\u03B1','y')@";
+*/
+ re=/([^'])(,)/g;
+ v=v.replace(re,'$1');
+ re=/([ri]\string\:)+(\string\w)/g;
+ v=v.replace(re,'$2');
+ getSubstValue.aSubsts=[]; // dps17
+ var start=0;
+ while (true) {
+ v=v.substring(start);
+ pos1=v.indexOf("_rplVarsBy");
+ if (pos1==-1) break;
+ pos2=v.indexOf("@");
+ args=v.substring(pos1+10+1,pos2-1);
+ tmp=args.split(",");
+ arg1=eval(tmp[0].toString());
+ tmp1=arg1.split("->");
+ for (var i=0; i<tmp1.length; i++)
+ tmp1[i]=tmp1[i].trim();
+ if (tmp1.length==1) getSubstValue.aSubsts.push(tmp1[0]);
+ else getSubstValue.aSubsts.push(tmp1);
+ arg2=eval(tmp[1].toString());
+ re=new RegExp(tmp1[0],"g");
+ s=s.replace(re,arg2);
+ start=pos2+1;
+ }
+ return s;
+}
+function RespBoxAppr(e){
+ var value=(typeof e=="object")?e.value:e;
+ var re;
+ for (var i=0; i<getSubstValue.aSubsts.length; i++) {
+ if (typeof getSubstValue.aSubsts[i]=="object") {
+ re=new RegExp(getSubstValue.aSubsts[i][0],"g");
+ value=(value.replace(re,getSubstValue.aSubsts[i][1],"g"));
+ }
+ }
+ return value;
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Support Text Fill-in}
+function ProcRespTxt() {
+ var i, success, authorAnswer, userAnswer = event.value;
+ var fieldname=event.target.name;
+ var flag = arguments[0];
+ var filterMethod = arguments[1];
+ var compareMethod = arguments[2];
+ if ( !ProcessIt || userAnswer == "" ) return null;
+ for (i = 3; i < arguments.length; i++)
+ if ( success = compareTxt(userAnswer,arguments[i],%
+filterMethod, compareMethod)) break;
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespTxtPC() {
+ var i, success, authorAnswer, userAnswer = event.value;
+ ProcRespTxtPC.txtPCpCr=0;
+ var fieldname=event.target.name;
+ var flag = arguments[0];
+ var filterMethod = arguments[1];
+ var compareMethod = arguments[2];
+ if ( !ProcessIt || userAnswer == "" ) return null;
+ for (i=3;i<arguments.length;i++)
+ if(compareTxt(userAnswer,arguments[i][0],%
+filterMethod,compareMethod))
+ ProcRespTxtPC.txtPCpCr+=(arguments[i][1]);
+ success=(ProcRespTxtPC.txtPCpCr>0);
+ return notifyField(success,flag,fieldname);
+}
+function compareTxt(userAnswer,authorAnswer,filterMethod,compareMethod)
+{
+ var caseSensitive = ( compareMethod==3 ) ? "" : "i";
+ var reSwitches = "g"+caseSensitive;
+ userAnswer = new String(userAnswer).filter(filterMethod);
+ switch(compareMethod) {
+ case 1:
+ var AuthorAnswer;
+ var aAuthorAnswer = authorAnswer.split(/\s+/);
+ for (var j=0; j < aAuthorAnswer.length; j++) {
+ AuthorAnswer = new String(%
+aAuthorAnswer[j]).filter(filterMethod);
+ AuthorAnswer = AuthorAnswer.replace(/\./g,"\\.");
+ AuthorAnswer = AuthorAnswer.replace(/@any@/g,".");
+ var re = new RegExp(AuthorAnswer, reSwitches);
+ if (!re.test(userAnswer)) return false;
+ }
+ return true;
+ default:
+ authorAnswer=new String(authorAnswer).filter(filterMethod);
+ return (userAnswer == authorAnswer) ? true : false;
+ }
+}
+String.prototype.filter = eqFilter;
+function eqFilter(filterMethod) {
+ switch (filterMethod) {
+ case 0:
+ var re = /\W/g;
+ return this.replace(re,"").toLowerCase();
+ case 1:
+ var re = /\s/g;
+ return this.replace(re,"").toLowerCase();
+ case 2:
+ var re = /\s/g;
+ return this.replace(re,"");
+ case 3:
+ default:
+ return this.toString();
+ }
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Quiz Management}
+function InitMsg(msg) { return (\eqInitQuizMsg) }
+function syntaxError() { eqAppAlert(\eqSyntaxErrorUndefVar,3); }
+var lstOfQuizzes=new Object();
+var reExtractBaseName=/^.+?\.(.+?)\..+$/;
+function ProcUserResp(key,userresp,probno,notify)
+{
+ if (key==null) {
+ ProcUserNoResp.apply(null,arguments);
+ return;
+ }
+ if ( arguments.length > 4 ) {
+ if ( typeof RightWrong[probno] == "undefined" ) {
+ RightWrong[probno] = new Array();
+ RightWrong[probno][0] = "grp";
+ Responses[probno] = new Array();
+ }
+ RightWrong[probno][arguments[4]] = (!!key) ? 1 : 0;
+ Responses[probno][arguments[4]] = userresp;
+ } else {
+ if ( typeof key == "object" ) {
+ RightWrong[probno][0] = key[0];
+ RightWrong[probno][1] = key[1];
+Responses[probno] = userresp;
+if (Responses[probno].length==0)
+ Responses[probno]=undefined;
+ } else {
+ RightWrong[probno] = (!!key)?1:0;
+Responses[probno] = userresp;
+}
+ }
+ if ( (typeof fieldPopTbl == "function")&&(event.type != "Link") ) {
+ var a=reExtractBaseName.exec(event.target.name);
+ fieldPopTbl(a[1]);
+ }
+}
+function ProcUserNoResp(key,userresp,probno,notify)
+{
+ if ( arguments.length > 4 ) {
+ RightWrong[probno][arguments[4]] = undefined;
+ Responses[probno][arguments[4]] = undefined;
+var bVoidArray=true;
+for (var i=0; i<Responses[probno].length; i++) {
+if ( typeof Responses[probno][i] != "undefined") {
+bVoidArray=false;
+break;
+}
+}
+if (bVoidArray) {
+Responses[probno]=undefined;
+RightWrong[probno]=undefined;
+ ProbValue[probno]=undefined;
+}
+ } else {
+ RightWrong[probno] = undefined;
+ Responses[probno] = undefined;
+ }
+ if ( typeof fieldPopTbl == "function" ) {
+ var a=reExtractBaseName.exec(event.target.name);
+ fieldPopTbl(a[1]);
+ }
+}
+function InitializeQuiz(qtfield,mark) {
+ var oQName=eval(qtfield);
+ Score=0;
+ retn = null;
+ if (!isQuizInitialized(qtfield)&&!isAQuizUnfinished()) return null;
+ neutralizeQuizzes();
+ ProcessIt = false;
+ aQuizControl[qtfield] = 1;
+ this.resetForm(["ScoreField." + qtfield,"mc."+qtfield,
+ "obj."+qtfield,"mck."+qtfield,"Ans."+qtfield,
+ "PointsField."+qtfield,"PercentField."+qtfield,
+ "essay."+qtfield,"GradeField."+qtfield,
+ "grpobj."+qtfield,"qMark."+qtfield, qtfield+"SanityCheck",
+ qtfield+"SanityCheckPts",qtfield+"SanityCheckOOPts",
+ "rbmarkup."+qtfield]);
+ ProcessIt = true;
+ var f = this.getField("qMark."+qtfield);
+ if ( f != null ) f.display = display.hidden;
+ f = this.getField("promptButton."+qtfield);
+ if (f != null) f.display=display.visible;
+ if (arguments.length<3) {
+ f = this.getField("obj." + qtfield);
+ if ( f != null ) f.readonly = false;
+ }
+ RightWrong=new Array();
+ Responses=new Array();
+ ProbValue=new Array();
+ ProbDist=new Array();
+ ProbType=new Array();
+ if (mark==1)
+ {
+ var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
+?\defaultColorJS:oQName.DefaultColorJSLoc;
+ var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
+?\rghtColorJS:oQName.RightColorJSLoc;
+ var corrAnsSymb=(typeof oQName.CorrAnsSymbJSLoc=="undefined")%
+?\corrAnsSymbJS:oQName.CorrAnsSymbJSLoc;
+ var f = this.getField("mcq." + qtfield);
+ if (f != null) {
+ f.delay=true;
+ f.display=display.hidden;
+ this.resetForm([f.name]);
+ f.textColor = rightColor;
+ var a = f.getArray();
+ for (var i=0; i<a.length; i++) a[i].style=corrAnsSymb;
+ f.delay=false;
+ }
+ f = this.getField("obj." + qtfield);
+ if ( f != null ) f.strokeColor = defaultColor;
+ f = this.getField("grpobj." + qtfield);
+ if ( f != null ) f.strokeColor = defaultColor;
+ f = this.getField("corr." + qtfield);
+ if ( f != null ) f.display = display.hidden;
+ f = this.getField(qtfield+"SanityCheck");
+ if ( f != null ) f.strokeColor=defaultColor;
+ f = this.getField("rbmarkup."+qtfield);
+ if ( f != null ) f.display = display.hidden;
+ }
+ return null;
+}
+function resetHeadsUp(flag,fieldname) {
+ if (flag==1) return;
+ var pos1=fieldname.indexOf(".");
+ var pos2=fieldname.indexOf(".",pos1+1);
+ var baseName=fieldname.substring(pos1+1,pos2);
+ var oQName=eval(baseName);
+ var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
+?\defaultColorJS:oQName.DefaultColorJSLoc;
+ var f=this.getField(fieldname);
+ if (f!=null) f.strokeColor=defaultColor;
+
+}
+function neutralizeQuizzes()
+{
+ for ( var qtfield in aQuizControl ) aQuizControl[qtfield] = 0;
+}
+isAQuizUnfinished.check=true;
+function isAQuizUnfinished()
+{
+ if (!isAQuizUnfinished.check) return true;
+ for ( var qtfield in aQuizControl )
+ if ( aQuizControl[qtfield] == 1 )
+ {
+ eqAppAlert(\eqerrUnfinishQuiz, 3);
+ return false;
+ }
+ return true;
+}
+function isQuizInitialized(qtfield)
+{
+ if (typeof (aQuizControl[qtfield]) == "undefined")
+ return false;
+ else
+ return (aQuizControl[qtfield] == 1);
+}
+function isEndQuizPushed(qtfield)
+{
+ if (typeof (aQuizControl[qtfield]) == "undefined")
+ return false;
+ else
+ return (aQuizControl[qtfield] == -1);
+}
+function resetQuiz(qtfield)
+{
+ aQuizControl[qtfield] = -1;
+}
+function RecordPointValue(ptvalue,probno)
+{
+ if (arguments.length > 2) {
+ if ( typeof ProbValue[probno] == "undefined" ) {
+ ProbValue[probno]=[1,arguments[5],arguments[3],arguments[4]];
+ ProbValue[probno][3+arguments[2]] = ptvalue;
+ } else ProbValue[probno][3+arguments[2]] = ptvalue;
+ }
+ else {
+ ProbValue[probno]=ptvalue;
+ }
+}
+function RecordProblemType(qType,probno)
+{
+ ProbType[probno]=qType;
+}
+function GrpRight( a, nProb, qtfield )
+{
+ var f = this.getField("grpobj."+qtfield+"."+nProb);
+ var l = f.getArray().length
+ var prod = 1;
+ for ( var i=1; i <= l; i++) prod *= !!a[i];
+ return prod;
+}
+function DisplayQuizResults(qtfield,nPointTotal,nQuestions)
+{
+ Score = 0; ptScore = 0;
+ NPointTotal=nPointTotal; NQuestions=nQuestions;
+ for (var i=1; i < RightWrong.length; i++)
+ {
+ if ( (typeof RightWrong[i] == "object" ) %
+ && ( RightWrong[i][0] == "grp" ) ) {
+ // grouped question
+ Score += GrpRight(RightWrong[i], i, qtfield);
+ var aWeights = ProbValue[i].slice(2);
+ var evalGrpJS = eval(ProbValue[i][1]);
+ var evalGrpJSValue = evalGrpJS(this,qtfield,i,
+ RightWrong[i],aWeights);
+ ProbDist[i] = evalGrpJSValue;
+ ptScore = ptScore + evalGrpJSValue;
+ } else {
+ if (typeof RightWrong[i] == "object") {
+ if ( RightWrong[i][0] == 1 ) {
+ Score++;
+ ProbDist[i]=(typeof ProbValue[i] == "object") ?
+ 1*ProbValue[i][1] : 1*ProbValue[i];
+ ptScore += (1*ProbDist[i]);
+ } else {
+ if (RightWrong[i][1] == 1)
+ ProbDist[i]=(typeof ProbValue[i]=="object") ?
+ 1*ProbValue[i][1] : 1*ProbValue[i];
+ else
+ ProbDist[i]=(typeof ProbValue[i] == "object") ?
+ 1*ProbValue[i][1] : 0;
+ ptScore += (1*ProbDist[i]);
+ }
+ } else {
+ if (RightWrong[i]==1) {
+ Score++;
+ ProbDist[i] = ( typeof ProbValue[i] == "object") ?
+ 1*ProbValue[i][1] : 1*ProbValue[i];
+ ptScore += (1*ProbDist[i]);
+ }
+ else {
+ ProbDist[i] = ( typeof ProbValue[i] == "object") ?
+ 1*ProbValue[i][2] : 0;
+ ptScore += (1*ProbDist[i]);
+ }
+ }
+ }
+ }
+ if ( !negPointsAllowed && (ptScore < 0) ) ptScore = 0;
+ if (ptScore == nPointTotal) pcScore = 100;
+ else pcScore = util.printf("\%.1f", (100 * ptScore) / nPointTotal);
+ var oQName=eval(qtfield);
+ var gradeScale=%
+(typeof oQName.GradeScaleLoc=="undefined")%
+?GradeScaleDefault:oQName.GradeScaleLoc;
+ quizGrade = GetGrade.apply(null,gradeScale);
+ var f = this.getField("ScoreField."+qtfield);
+ if ( f != null ) f.value=(\eqQuizTotalMsg);
+ f = this.getField("PointsField."+qtfield);
+ if ( f != null) f.value=(\eqQuizPointsMsg);
+ f = this.getField("PercentField."+qtfield);
+ if ( f != null) f.value=(\eqQuizPercentMsg);
+ f = this.getField("GradeField."+qtfield);
+ if ( f != null) f.value=(\eqQuizGradeMsg);
+}
+function GetGrade()
+{
+ var cGrade, aRange;
+ var l = arguments.length/2;
+ if (pcScore >=100) return arguments[0];
+ if (pcScore < 0 ) return arguments[arguments.length-2];
+ for (var i=0; i < l; i++)
+ {
+ cGrade = arguments[2*i];
+ aRange = arguments[2*i+1];
+ if ( (pcScore >= arguments[2*i+1][0])
+ && (pcScore < arguments[2*i+1][1])) return cGrade;
+ }
+ return null;
+}
+function ProcessQuestion (key,letterresp,probno,
+ quizno,qtfield,notify,mark,msg) {
+ var silent = ( arguments.length > 8 ) ? true : false;
+ if (!isQuizInitialized(qtfield))
+ {
+ if (!silent) eqAppAlert(InitMsg(msg),3);
+ this.resetForm(["mc."+qtfield+"."+probno,
+ "mck."+qtfield+"."+probno]);
+ }
+ else
+ {
+ ProcUserResp(key,letterresp,probno,notify);
+ if (mark==1)
+ {
+ var oQName=eval(qtfield);
+ var defaultColor=%
+(typeof oQName.DefaultColorJSLoc=="undefined")%
+?\defaultColorJS:oQName.DefaultColorJSLoc;
+ var rightColor=%
+(typeof oQName.RightColorJSLoc== "undefined")%
+?\rghtColorJS:oQName.RightColorJSLoc;
+ var wrongColor=%
+(typeof oQName.WrongColorJSLoc=="undefined")%
+?\wrngColorJS:oQName.WrongColorJSLoc;
+ var rightAnsSymb=%
+(typeof oQName.RightAnsSymbJSLoc=="undefined")%
+?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
+ var wrongAnsSymb=%
+(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
+?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
+ var corrAnsSymb=%
+(typeof oQName.CorrAnsSymbJSLoc=="undefined")%
+?\corrAnsSymbJS:oQName.CorrAnsSymbJSLoc;
+ var f = this.getField("mcq."+qtfield+"."+probno);
+ var fck = this.getField("mck."+qtfield+"."+probno);
+ var bMultiSelect = ( fck != null ) ? true : false;
+ f.delay=true;
+ this.resetForm([f.name]);
+ var a = f.getArray();
+ var l = a.length;
+ if ( bMultiSelect ) {
+ var ack = fck.getArray();
+ for ( var i=0; i<l; i++) {
+ if ( ack[i].isBoxChecked(0) ) {
+ a[i].style = ( a[i].isDefaultChecked(0) ) ?
+ rightAnsSymb : wrongAnsSymb;
+ a[i].textColor = ( a[i].isDefaultChecked(0) ) ?
+ rightColor : wrongColor;
+ a[i].value = "Yes";
+ } else {
+ a[i].style = ( a[i].isDefaultChecked(0) ) ?
+ corrAnsSymb : wrongAnsSymb;
+ a[i].textColor = ( a[i].isDefaultChecked(0) ) ?
+ rightColor : wrongColor;
+ a[i].value = ( a[i].isDefaultChecked(0) ) ?
+ "Yes" : "Off";
+ }
+ }
+ } else {
+ for (var i=0; i < a.length; i++)
+ if (a[i].style == rightAnsSymb)
+ {
+ a[i].style = corrAnsSymb;
+ a[i].textColor = rightColor;
+ }
+ var qr=this.getField(%
+"mcq."+qtfield+"."+probno+"."+quizno);
+ qr.textColor = key ? rightColor :wrongColor;
+ qr.style = key ? rightAnsSymb : wrongAnsSymb;
+ qr.value="Yes"; // gr.checkThisBox(0); // ver 5.0
+ }
+ this.getField("mcq."+qtfield+"."+probno).delay=false;
+ }
+ }
+ if ( typeof fieldPopTbl == "function" ) fieldPopTbl(qtfield);
+}
+function correctQuiz(qtfield,nQuestions)
+{
+ var oQName=eval(qtfield);
+ var defaultColor=(typeof oQName.DefaultColorJSLoc=="undefined")%
+?\defaultColorJS:oQName.DefaultColorJSLoc;
+ var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
+?\rghtColorJS:oQName.RightColorJSLoc;
+ var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
+?\wrngColorJS:oQName.WrongColorJSLoc;
+ var rightAnsSymb=(typeof oQName.RightAnsSymbJSLoc=="undefined")%
+?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
+ var wrongAnsSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
+?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
+ var bFullyCorrect=(typeof oQName.fullyCorrectLoc=="undefined")%
+?\eqCorrChoiceFully:oQName.fullyCorrectLoc; // dpsf07
+ var f = this.getField("mcq." + qtfield);
+ if ( f != null) {
+ if (bFullyCorrect) { // dpsf07
+ f.display = display.visible;
+ } else {
+ for (var n=1; n<=nQuestions; n++) {
+ var h=this.getField("mc."+qtfield+"."+n);
+ var bOk=(h!=null);
+ if(bOk) var choiceType="mc";
+ else {
+ h=this.getField("mck."+qtfield+"."+n);
+ bOk=(h!=null);
+ var choiceType="mck";
+ }
+ if (bOk) {
+ var mcq=this.getField("mcq."+qtfield+"."+n);
+ var g=mcq.getArray();
+ if (choiceType=="mc") {
+ for (var j=0; j< g.length; j++) {
+ g[j].display=(h.isBoxChecked(j))?%
+display.visible:display.hidden;
+ }
+ } else {
+ var ck=h.getArray();
+ for (var j=0; j< g.length; j++) {
+ g[j].display=(ck[j].isBoxChecked(0))?%
+display.visible:display.hidden;
+ }
+ }
+ }
+ }
+ }
+ }
+ f = this.getField("obj." + qtfield);
+ if ( f != null ) {
+ var a = f.getArray();
+ var re=/^obj\./;
+ for (var i = 0; i < a.length; i++) {
+ var probno = a[i].name.replace(/.*\./g,"");
+ var rbmuname = a[i].name.replace(re,"rbmarkup\.");
+ var oRBMarkup = this.getField(rbmuname);
+ var bRBMU = ( oRBMarkup != null );
+ if ( RightWrong[probno] == 1 ) {
+ a[i].strokeColor = rightColor;
+ if (bRBMU) {
+ oRBMarkup.textColor=rightColor;
+ oRBMarkup.style=rightAnsSymb;
+ }
+ } else {
+ a[i].strokeColor = wrongColor;
+ if (bRBMU) {
+ oRBMarkup.textColor=wrongColor;
+ oRBMarkup.style=wrongAnsSymb;
+ }
+ }
+ }
+ }
+ f = this.getField("grpobj." + qtfield);
+ var re=/^grpobj\./;
+ if ( f != null ) {
+ var a = f.getArray();
+ for ( var i = 0; i < a.length; i++) {
+ var rbmuname = a[i].name.replace(re,"rbmarkup\.");
+ var oRBMarkup = this.getField(rbmuname);
+ var bRBMU = ( oRBMarkup != null );
+ var aX = a[i].name.split(".");
+ var probno = 1*aX[aX.length-2];
+ var grpProbno = 1*aX[aX.length-1];
+ if ( ( RightWrong[probno] != undefined ) %
+&& ( RightWrong[probno][grpProbno] == 1 ) ) {
+ a[i].strokeColor = rightColor;
+ if (bRBMU) {
+ oRBMarkup.textColor=rightColor;
+ oRBMarkup.style=rightAnsSymb;
+ }
+ } else {
+ a[i].strokeColor = wrongColor;
+ if (bRBMU) {
+ oRBMarkup.textColor=wrongColor;
+ oRBMarkup.style=wrongAnsSymb;
+ }
+ }
+ }
+ }
+ f=this.getField("rbmarkup."+qtfield);
+ if ( f != null ) f.display = display.visible;
+ % if ( f != null ) f.strokeColor = defaultColor;
+ f = this.getField("promptButton." + qtfield)
+ if ( f != null ) f.display = display.hidden;
+ f = this.getField("corr." + qtfield);
+ if ( f != null ) f.display = display.noPrint;
+ f = this.getField("qMark."+qtfield);
+ if ( f != null )
+ {
+ for ( var i = 1; i <= nQuestions; i++)
+ {
+ if ( ProbValue[i] == undefined ) ProbValue[i]=0
+ f = this.getField("qMark."+qtfield+"."+(i-1));
+ if ( f != null )
+ {
+ // find the next non-null field
+ for ( var j=i; j <= nQuestions; j++)
+ {
+ var h = this.getField("qMark."+qtfield+"."+j);
+ if ( h != null ) break;
+ }
+ var g = f.getArray();
+ var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ if ( !negPointsMarkupAllowed && (qpts < 0) ) qpts=0;
+ g[0].value = qpts + (( qpts == 1 ) ? " \eqptLabel\space"
+ : " \eqptsLabel");
+ }
+ }
+ this.getField("qMark."+qtfield).display = display.visible;
+ }
+}
+function getTotalTally(basename) {
+ var sqtotal=0;
+ var f=this.getField("tally."+basename);
+ var g = f.getArray();
+ for (var i=0; i<g.length; i++) {
+ if ( g[i] == event.target ) sqtotal += (1*event.value);
+ else sqtotal += (1*g[i].value);
+ }
+ if ( ( f=this.getField("tallytotal."+basename) ) != null )
+ f.value = sqtotal;
+}
+function clearAllSubQuizzes() {
+ isAQuizUnfinished.check=false;
+ for ( var o in lstOfQuizzes) {
+ if (lstOfQuizzes[o].isSubmitted)
+ eval ( lstOfQuizzes[o].initializeWith );
+ }
+ isAQuizUnfinished.check=true;
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Support for Multi-Selection}
+function ProcessMultiSelection(key,letterresp,probno,%
+quizno,qtfield,pts,ppts) {
+ var f = this.getField("mck."+qtfield+"."+probno);
+ if ( typeof ProbValue[probno] == "undefined" ) {
+ var g = f.getArray();
+ var nTotalCorrect = 0;
+ for ( var i=0; i<g.length; i++ )
+ nTotalCorrect += (1*g[i].exportValues[0].charAt(0));
+ ProbValue[probno] = new Array();
+ RightWrong[probno] = new Array();
+ ProbValue[probno] = [nTotalCorrect,pts,[]];
+ RightWrong[probno][2] = new Array();
+ } else var nTotalCorrect = ProbValue[probno][0];
+ var fck = this.getField("mck."+qtfield+"."+probno+"."+quizno);
+ if ( fck.isBoxChecked(0) ) {
+ ProbValue[probno][2][quizno] = ppts;
+ RightWrong[probno][2][quizno] = key;
+ } else {
+ ProbValue[probno][2][quizno] = undefined;
+ }
+ var pointsThisProblem=0;
+ var scoreThisProblem = 0;
+ var letterResponses = new Array();
+ var areAllCorrect=1;
+ var numCorrect=0;
+ for ( var i=1; i< ProbValue[probno][2].length; i++ ) {
+ if ( typeof ProbValue[probno][2][i] != "undefined" )
+ letterResponses[i] = (String.fromCharCode(96+i));
+ pointsThisProblem += ( ( typeof ProbValue[probno][2][i]==%
+"undefined" )?0:ProbValue[probno][2][i]);
+ if ( typeof ProbValue[probno][2][i]!="undefined" ) {
+ areAllCorrect *= (1*RightWrong[probno][2][i]);
+ numCorrect +=(1*RightWrong[probno][2][i]);
+ }
+ }
+ scoreThisProblem = areAllCorrect*numCorrect;
+ var scoreThisProblem = Number( scoreThisProblem == nTotalCorrect );
+ if (scoreThisProblem==1 && pointsThisProblem==0 )
+ pointsThisProblem=pts;
+ ProbValue[probno][1] =
+ ( (ProbValue[probno][1] == 0) && (scoreThisProblem == 1) )
+ ? pts : pointsThisProblem;
+ var passKey = ( pointsThisProblem > 0 ) ? 1 : 0;
+ var retn = [ [ scoreThisProblem, passKey ], letterResponses ] ;
+ return retn;
+}
+function LimitSelection(n,fname,k) {
+ var f = this.getField(fname);
+ var g = f.getArray();
+ var total=0;
+ for (var i=0; i<g.length; i++) {
+ total+=( g[i].isBoxChecked(0) );
+ }
+ if (total > n) {
+ eqAppAlert(\limSelWarningMsg,3);
+ f=this.getField(fname+"."+k);
+ f.checkThisBox(0,false);
+ return false
+ } else return true;
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Miscellaneous JS}
+function chooseJSColor( b, c1, c2 ) {
+ return ( b ) ? c1 : c2;
+}
+function notifyField(success, flag, fieldname) {
+ if ( flag != 0 )
+ return (success)?true:false;
+ var f = this.getField(fieldname);
+ var re=/^(obj|grpobj)\./;
+ var gname=fieldname.replace(re,"rbmarkup\.");
+ var g =this.getField(gname);
+ var isthereRBUP = ( g !=null );
+ var h = fieldname.replace(re,"");
+ var index=h.indexOf(".");
+ var oQName = eval(h.substring(0,index));
+ var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
+?\rghtColorJS:oQName.RightColorJSLoc;
+ var rightSymb=(typeof oQName.RightColorJSLoc=="undefined")%
+?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
+ var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
+?\wrngColorJS:oQName.WrongColorJSLoc;
+ var wrongSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
+?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
+ if (success) {
+ f.strokeColor = rightColor;
+ if (isthereRBUP) {
+ g.style = rightSymb;
+ g.textColor=rightColor;
+ g.display=display.visible;
+ }
+ return true;
+ } else {
+ updateTally.downState=false;
+ updateTally(fieldname);
+ f.strokeColor = wrongColor;
+if (isthereRBUP) {
+ b2 = ( typeof oQName.WrongAnsSymbJSLoc == "undefined" );
+ g.style = wrongSymb;
+ g.textColor=wrongColor;
+ g.display=display.visible;
+ }
+ return false;
+ }
+// return null; // remove ?
+}
+function updateTally(fieldname)
+{
+ var objre = /^obj\./;
+ var grpre = /^grpobj\./;
+ if ( grpre.test(fieldname) ) {
+ fieldname = fieldname.replace(grpre,"");
+ var pos = fieldname.lastIndexOf(".");
+ fieldname = fieldname.substring(0,pos);
+ } else if ( objre.test(fieldname) )
+ fieldname = fieldname.replace(objre,"");
+ var f = this.getField("tally."+fieldname);
+ if ( f != null ) {
+ if (!updateTally.downState) f.value += 1;
+ return true;
+ } else return false;
+
+}
+var bNoPeekWait=false;
+var oNoPeekTimer;
+function noPeek(qtfield,rtnPage)
+{
+ if (!bNoPeekWait) {
+ if ( (typeof (aQuizControl[qtfield]) == "undefined") %
+|| (aQuizControl[qtfield] != -1) ) {
+ bNoPeekWait=true;
+ oNoPeekTimer=app.setTimeOut("bNoPeekWait=false;%
+app.clearTimeOut(oNoPeekTimer);",5);
+ this.pageNum = rtnPage-1;
+ \NoPeekAlert;
+ }
+ } else this.pageNum = rtnPage-1;
+}
+var oCB=\bcheckboxused
+function OnBlurRespBox (retn)
+{
+ var qname = arguments[1];
+ var oQName = eval(qname);
+ var respMsg;
+ var cTitle = "AcroTeX eDucation Bundle";
+ if (retn != null) {
+ if ( typeof appAlerts[qname] == "undefined")
+ appAlerts[qname] = {bAfterValue: false, %
+cMsg: "\doNotShowAgainMsg"};
+ var respMsg = (retn) ? \eqsqrtmsg\space : \eqsqwgmsg;
+ if ( (event.target == this) || !oCB)
+ eqAppAlert({ cMsg: respMsg, nIcon: 3, cTitle: cTitle });
+ else {
+ if ( ! appAlerts[arguments[1]].bAfterValue )
+ eqAppAlert({ cMsg: respMsg, nIcon: 3, cTitle: cTitle, %
+oCheckbox: appAlerts[qname]});
+ }
+ }
+ else {
+ var re=/^(obj|grpobj)\./;
+ var gname=event.target.name.replace(re,"rbmarkup\.");
+ var g =this.getField(gname);
+ var isthereRBUP = ( g !=null );
+ var str = event.target.value.toString();
+ if (str.replace(/\s/g,"") == "") {
+ var defaultColor=%
+(typeof oQName.DefaultColorJSLoc=="undefined")%
+?color.black:oQName.DefaultColorJSLoc;
+ if (isthereRBUP) g.display=display.hidden;
+ event.target.strokeColor = defaultColor;
+ }
+ }
+}
+function jmpToNamedDest(fName,cDest,bAlert) {
+ if ( (typeof appAlerts[fName]!="undefined" %
+&& appAlerts[fName].bAfterValue) || bAlert==0)
+ app.setTimeOut("this.gotoNamedDest(\""+cDest+"\")",500);
+ else
+ this.gotoNamedDest(cDest);
+}
+function lowThreshold(nQuestions)
+{
+ return true;
+}
+function highThreshold(nQuestions)
+{
+ var cnt=0;
+ for ( var i=0; i< Responses.length; i++ ) {
+ if ( typeof Responses[i]!="undefined") cnt++
+ }
+ if ( cnt<nQuestions )
+ eqAppAlert(\highThresholdMsg,3);
+ return (cnt >= nQuestions);
+}
+\end{newsegment}
+\begin{newsegment}{Eq: Support for Grouped Questions}
+function groupEval(doc,qtfield,probno,aKey,aWeights)
+{
+ var totalGrpPts = aWeights[0];
+ var totalWeight = aWeights[1];
+ for ( var i=1,total=0; i< aKey.length; i++ )
+ if (aKey[i] != undefined) total += aKey[i]*aWeights[i+1];
+ return total;
+}
+function WeightedEval(doc,qtfield,probno,aKey,aWeights)
+{
+ var f = doc.getField("grpobj." + qtfield + "." + probno);
+ var nGrpQno = f.getArray().length;
+ var totalGrpPts = aWeights[0];
+ var totalWeight = aWeights[1];
+ for ( var i=1,total=0; i < aKey.length; i++ )
+ if (aKey[i] != undefined) total += aKey[i]*aWeights[i+1];
+ total /= totalWeight;
+ total = Math.floor( total * totalGrpPts );
+ return total;
+}
+function groupBernoulliEval(doc,qtfield,probno,aKey,aWeights)
+{
+ var f = doc.getField("grpobj." + qtfield + "." + probno);
+ var nGrpQno = f.getArray().length;
+ var totalGrpPts = aWeights[0];
+ for ( var i=1,isCorrect=1; i<= nGrpQno; i++ )
+ isCorrect *= (aKey[i] != undefined) ? (Number(aKey[i])) : 0;
+ return (isCorrect*totalGrpPts);
+}
+\end{newsegment}
+\end{insDLJS*}
+\endinput
+%%
+%% End of file `aebjs.def'.
diff --git a/texmf-dist/tex/latex/acrotex/aebrandom.def b/texmf-dist/tex/latex/acrotex/aebrandom.def
index 76ec48c1..d753e9b3 100644
--- a/texmf-dist/tex/latex/acrotex/aebrandom.def
+++ b/texmf-dist/tex/latex/acrotex/aebrandom.def
@@ -1,170 +1,170 @@
-%%
-%% This is file `aebrandom.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,randomize')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{aebrandom.def}
- [2018/03/21 v8.2.2 %
- Exerquiz support for randomization (dps)]
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\@ifundefined{nextrandom}{\input{random.tex}}{}
-\def\nextrandom{\begingroup
- \ifnum\randomi<\@ne % then initialize with time
- \global\randomi\time
- \global\multiply\randomi388 \global\advance\randomi\year
- \global\multiply\randomi31 \global\advance\randomi\day
- \global\multiply\randomi97 \global\advance\randomi\month
- \message{Randomizer initialized to \the\randomi.}%
- \nextrandom \nextrandom \nextrandom
- \xdef\InitSeedValue{\the\randomi}%
- \fi
- \count@ii\randomi
- \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
- \count@\count@ii
- \multiply\count@ii 127773
- \global\advance\randomi-\count@ii % random mod 127773
- \global\multiply\randomi 16807
- \multiply\count@ 2836
- \global\advance\randomi-\count@
- \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
- \endgroup
-}
-\def\writeSeedToSolnFile{\writeToExSolns{\string\randomi=\the\randomi}}
-\def\@ansChoices[#1]%
-{%
- \global\let\@tempholdSaveAns\@empty % 5/24
- \global\let\@tempholdSaveChoice\@empty % 5/24
- \global\let\bChoiceLabel\@empty % 5/24
- \ifeq@randomizeallChoices
- \setkeys{bchoice}{#1,random=true}\else
- \setkeys{bchoice}{#1}\fi
- \global\eq@tabColCnt=0
- \ifeq@randomizeChoices\expandafter\@@bChoices
- \else\expandafter\@@ansChoices\fi
-}
-\def\@@ansChoices{%
- \ifnum\aeb@numCols=1 % list mode
- \def\eq@next{\@layoutListAns}%
- \else % tabular mode
- \edef\eq@next{\noexpand\@layoutTabularAns{\bChoiceNumCols}}%
- \fi
- \eq@next
-}
-\newcount\aeb@numChoices
-\newcount\aeb@ranChoice
-\newtoks\aeb@hold\aeb@hold={}
-\def\@@bChoices{\gdef\@temphold{}\gdef\@tempholdrandom{}%
- \gdef\@tempholdfreeze{}\aeb@searchfortoken{\@getAns}%
-}
-\def\aeb@searchfortoken#1{%
- \@ifnextchar\Ans{\advance\aeb@numChoices1\relax#1}
- {\@ifnextchar\eFreeze{\expandafter\@getFreezeAns\@gobble}
- {\@ifnextchar\par{\def\@@temp{\aeb@searchfortoken{#1}}%
- \expandafter\@@temp\@gobble}{\@eChoices}}}%
-}
-\long\def\@getAns\Ans#1\eAns{%
- \g@addto@macro\@temphold{{\Ans#1\eAns}}%
- \aeb@searchfortoken{\@getAns}%
-}
-\def\@getFreezeAns{\aeb@searchfortoken{\@@getFreezeAns}}
-\long\def\@@getFreezeAns\Ans#1\eAns{%
- \g@addto@macro\@tempholdfreeze{\Ans#1\eAns}%
- \aeb@searchfortoken{\@@getFreezeAns}%
-}
-\long\def\@eChoices#1\eChoices{%
- \aeb@randomizeChoices{\the\aeb@numChoices}%
-}
-\def\aeb@randomizeChoices#1{%
- \setrannum{\aeb@ranChoice}{1}{#1}
- \count0=0 \aeb@hold=\expandafter{\@temphold}\def\@temphold{}%
- \expandafter\@tfor\expandafter
- \@temp\expandafter:\expandafter=\the\aeb@hold \do {%
- \advance\count0by1
- \ifnum\count0=\aeb@ranChoice
- \aeb@hold=\expandafter\expandafter\expandafter
- {\expandafter\@tempholdrandom\@temp}%
- \edef\@tempholdrandom{\the\aeb@hold}%
- \else
- \aeb@hold=\expandafter\expandafter\expandafter
- {\expandafter\@temphold\expandafter{\@temp}}%
- \edef\@temphold{\the\aeb@hold}%
- \fi
- }%
- \aeb@numChoices=#1
- \advance\aeb@numChoices-1
- \ifnum\aeb@numChoices=0\relax
- \def\aeb@next{\aeb@finishedRandomizing}\else
- \def\aeb@next{\aeb@randomizeChoices{\the\aeb@numChoices}}\fi
- \aeb@next
-}
-\def\aeb@finishedRandomizing{%
- \aeb@hold=\expandafter\expandafter\expandafter
- {\expandafter\@tempholdrandom\@tempholdfreeze}%
- \gdef\@temphold{}\gdef\@tempholdrandom{}\gdef\@tempholdfreeze{}%
- \edef\finished@Randomizing{%
- \noexpand\@@ansChoices
- \the\aeb@hold
- \noexpand\eChoices}%
- \finished@Randomizing
-}
-\def\saveRandomSeed{\PackageInfo{exerquiz}
- {The command \string\saveRandomSeed\space
- is deprecated.\MessageBreak Seed automatically saved}}
-\@ifpackageloaded{ran_toks}{%
- \let\inputRandomSeed\useLastAsSeed
- \let\useRandomSeed\useThisSeed
-}{%
- \def\inputRandomSeed{\eq@readRandomData}%
- \def\useRandomSeed#1{\saveseedfalse\randomi=#1}%
-}
-\def\InitSeedValue{\the\randomi} % dps
-\@ifundefined{ifsaveseed}{\newif\ifsaveseed\saveseedtrue}{} % dps
-\def\eq@writeRandomData
-{%
- \ifsaveseed
- \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
- \immediate\openout \saveseedinfo \jobname_rt.sav
- \let\verbatim@out\saveseedinfo
- \def\eqrt@msgi{initializing seed value}%
- \def\eqrt@msgii{last random number used}%
- \uccode`c=`\%\uppercase{%
- \immediate\write\verbatim@out
- {\InitSeedValue\space c \eqrt@msgi}%
- \immediate\write\verbatim@out
- {\the\randomi\space c \eqrt@msgii}%
- }\immediate\closeout\saveseedinfo
- \fi
-}
-\AtEndDocument{\eq@writeRandomData}
-\def\eq@readRandomData{\IfFileExists{\jobname_rt.sav}{%
- \PackageInfo{exerquiz}{Inputting \jobname_rt.sav}%
- \@ifundefined{readsavfile}{\newread\readsavfile}{}%
- \openin\readsavfile=\jobname_rt.sav
- \read\readsavfile to \InitSeedValue
- \read\readsavfile to \eqlastRandomNum
- \closein\readsavfile
- \randomi=\eqlastRandomNum
- \xdef\InitSeedValue{\the\randomi}%
- \immediate\closeout\readsavfile
-}{%
- \PackageInfo{exerquiz}{\jobname_rt.sav cannot
- be found, \MessageBreak
- using the random initializer}%
-}}
-\endinput
-%%
-%% End of file `aebrandom.def'.
+%%
+%% This is file `aebrandom.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,randomize')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{aebrandom.def}
+ [2018/03/21 v8.2.2 %
+ Exerquiz support for randomization (dps)]
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\@ifundefined{nextrandom}{\input{random.tex}}{}
+\def\nextrandom{\begingroup
+ \ifnum\randomi<\@ne % then initialize with time
+ \global\randomi\time
+ \global\multiply\randomi388 \global\advance\randomi\year
+ \global\multiply\randomi31 \global\advance\randomi\day
+ \global\multiply\randomi97 \global\advance\randomi\month
+ \message{Randomizer initialized to \the\randomi.}%
+ \nextrandom \nextrandom \nextrandom
+ \xdef\InitSeedValue{\the\randomi}%
+ \fi
+ \count@ii\randomi
+ \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
+ \count@\count@ii
+ \multiply\count@ii 127773
+ \global\advance\randomi-\count@ii % random mod 127773
+ \global\multiply\randomi 16807
+ \multiply\count@ 2836
+ \global\advance\randomi-\count@
+ \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi
+ \endgroup
+}
+\def\writeSeedToSolnFile{\writeToExSolns{\string\randomi=\the\randomi}}
+\def\@ansChoices[#1]%
+{%
+ \global\let\@tempholdSaveAns\@empty % 5/24
+ \global\let\@tempholdSaveChoice\@empty % 5/24
+ \global\let\bChoiceLabel\@empty % 5/24
+ \ifeq@randomizeallChoices
+ \setkeys{bchoice}{#1,random=true}\else
+ \setkeys{bchoice}{#1}\fi
+ \global\eq@tabColCnt=0
+ \ifeq@randomizeChoices\expandafter\@@bChoices
+ \else\expandafter\@@ansChoices\fi
+}
+\def\@@ansChoices{%
+ \ifnum\aeb@numCols=1 % list mode
+ \def\eq@next{\@layoutListAns}%
+ \else % tabular mode
+ \edef\eq@next{\noexpand\@layoutTabularAns{\bChoiceNumCols}}%
+ \fi
+ \eq@next
+}
+\newcount\aeb@numChoices
+\newcount\aeb@ranChoice
+\newtoks\aeb@hold\aeb@hold={}
+\def\@@bChoices{\gdef\@temphold{}\gdef\@tempholdrandom{}%
+ \gdef\@tempholdfreeze{}\aeb@searchfortoken{\@getAns}%
+}
+\def\aeb@searchfortoken#1{%
+ \@ifnextchar\Ans{\advance\aeb@numChoices1\relax#1}
+ {\@ifnextchar\eFreeze{\expandafter\@getFreezeAns\@gobble}
+ {\@ifnextchar\par{\def\@@temp{\aeb@searchfortoken{#1}}%
+ \expandafter\@@temp\@gobble}{\@eChoices}}}%
+}
+\long\def\@getAns\Ans#1\eAns{%
+ \g@addto@macro\@temphold{{\Ans#1\eAns}}%
+ \aeb@searchfortoken{\@getAns}%
+}
+\def\@getFreezeAns{\aeb@searchfortoken{\@@getFreezeAns}}
+\long\def\@@getFreezeAns\Ans#1\eAns{%
+ \g@addto@macro\@tempholdfreeze{\Ans#1\eAns}%
+ \aeb@searchfortoken{\@@getFreezeAns}%
+}
+\long\def\@eChoices#1\eChoices{%
+ \aeb@randomizeChoices{\the\aeb@numChoices}%
+}
+\def\aeb@randomizeChoices#1{%
+ \setrannum{\aeb@ranChoice}{1}{#1}
+ \count0=0 \aeb@hold=\expandafter{\@temphold}\def\@temphold{}%
+ \expandafter\@tfor\expandafter
+ \@temp\expandafter:\expandafter=\the\aeb@hold \do {%
+ \advance\count0by1
+ \ifnum\count0=\aeb@ranChoice
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@tempholdrandom\@temp}%
+ \edef\@tempholdrandom{\the\aeb@hold}%
+ \else
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@temphold\expandafter{\@temp}}%
+ \edef\@temphold{\the\aeb@hold}%
+ \fi
+ }%
+ \aeb@numChoices=#1
+ \advance\aeb@numChoices-1
+ \ifnum\aeb@numChoices=0\relax
+ \def\aeb@next{\aeb@finishedRandomizing}\else
+ \def\aeb@next{\aeb@randomizeChoices{\the\aeb@numChoices}}\fi
+ \aeb@next
+}
+\def\aeb@finishedRandomizing{%
+ \aeb@hold=\expandafter\expandafter\expandafter
+ {\expandafter\@tempholdrandom\@tempholdfreeze}%
+ \gdef\@temphold{}\gdef\@tempholdrandom{}\gdef\@tempholdfreeze{}%
+ \edef\finished@Randomizing{%
+ \noexpand\@@ansChoices
+ \the\aeb@hold
+ \noexpand\eChoices}%
+ \finished@Randomizing
+}
+\def\saveRandomSeed{\PackageInfo{exerquiz}
+ {The command \string\saveRandomSeed\space
+ is deprecated.\MessageBreak Seed automatically saved}}
+\@ifpackageloaded{ran_toks}{%
+ \let\inputRandomSeed\useLastAsSeed
+ \let\useRandomSeed\useThisSeed
+}{%
+ \def\inputRandomSeed{\eq@readRandomData}%
+ \def\useRandomSeed#1{\saveseedfalse\randomi=#1}%
+}
+\def\InitSeedValue{\the\randomi} % dps
+\@ifundefined{ifsaveseed}{\newif\ifsaveseed\saveseedtrue}{} % dps
+\def\eq@writeRandomData
+{%
+ \ifsaveseed
+ \@ifundefined{saveseedinfo}{\newwrite\saveseedinfo}{}
+ \immediate\openout \saveseedinfo \jobname_rt.sav
+ \let\verbatim@out\saveseedinfo
+ \def\eqrt@msgi{initializing seed value}%
+ \def\eqrt@msgii{last random number used}%
+ \uccode`c=`\%\uppercase{%
+ \immediate\write\verbatim@out
+ {\InitSeedValue\space c \eqrt@msgi}%
+ \immediate\write\verbatim@out
+ {\the\randomi\space c \eqrt@msgii}%
+ }\immediate\closeout\saveseedinfo
+ \fi
+}
+\AtEndDocument{\eq@writeRandomData}
+\def\eq@readRandomData{\IfFileExists{\jobname_rt.sav}{%
+ \PackageInfo{exerquiz}{Inputting \jobname_rt.sav}%
+ \@ifundefined{readsavfile}{\newread\readsavfile}{}%
+ \openin\readsavfile=\jobname_rt.sav
+ \read\readsavfile to \InitSeedValue
+ \read\readsavfile to \eqlastRandomNum
+ \closein\readsavfile
+ \randomi=\eqlastRandomNum
+ \xdef\InitSeedValue{\the\randomi}%
+ \immediate\closeout\readsavfile
+}{%
+ \PackageInfo{exerquiz}{\jobname_rt.sav cannot
+ be found, \MessageBreak
+ using the random initializer}%
+}}
+\endinput
+%%
+%% End of file `aebrandom.def'.
diff --git a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
index b345be1f..33f1f3ce 100644
--- a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
+++ b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
@@ -1,256 +1,256 @@
-%%
-%% This is file `aebsumrytbls.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,sumrytbls')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{aebsumrytbls.def}
- [2018/03/21 v8.2.2 %
- Exerquiz support for summary tables (dps)]
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\def\ccatCurrQzWith(#1){\currQuiz#1}
-\def\pbPopulateSumTable{\pushButton[\W0\BG{}\BC{}\S{S}\autoCenter{n}
- \TU{\thequestionno}\Ff{\FfReadOnly}
- \AA{\AAPageVisible{try{popVisitsTbl("\currQuiz",\thequestionno)}%
- catch(e){}}}]{\currQuiz activateSC}{0pt}{0pt}}
-\def\pbDoNoCorrectSumryTbl{\makebox[0pt][l]{\pushButton[\F{\FHidden}]%
- {\currQuiz NoCorrections}{0pt}{0pt}}}
-\newcount\eq@rowcnt
-\newcommand{\sumryTblQ}{Question}
-\newcommand{\sumryTblR}{Responded}
-\newcommand{\sumryTblP}{Page}
-\define@key{smrytbl}{ntables}{%
- \@tempcntb=#1
- \ifnum\@tempcntb<1 \@tempcntb=1 \fi
- \ifnum\@tempcntb>3 \@tempcntb=3 \fi
- \edef\smrytbl@ntables{\the\@tempcntb}%
-}
-\def\smrytbl@ntables{2}
-\define@key{smrytbl}{showmarkup}[true]{%
- \csname if#1\endcsname\eqshowmarkuptrue
- \else\eqshowmarkupfalse\fi
-}
-\newif\ifsmrytbl@corrections\smrytbl@correctionstrue
-\define@key{smrytbl}{nocorrections}[true]{%
- \csname if#1\endcsname\smrytbl@correctionsfalse
- \else\smrytbl@correctionstrue\fi
-}
-\define@key{smrytbl}{showOutOf}[true]{%
- \csname if#1\endcsname\eqshowOutOftrue\def\stfmtType{OO}%
- \gdef\showOutOfinSmryTbl{true}\let\stmarkupbox\relax
- \else
- \eqshowOutOffalse\let\stfmtType\@empty
- \gdef\showOutOfinSmryTbl{false}%
- \fi
-}
-\let\stfmtType\@empty
-\define@key{smrytbl}{setDimens}[]{#1}
-\def\showOutOfinSmryTbl{false}
-\def\stmarkupbox{\makebox[0pt][l]}
-\newcommand{\displaySumryTbl}[2][]{%
- \begingroup\edef\currQuiz{#2}\edef\oField{#2}\edef\curr@quiz{#2}%
- \setkeys{smrytbl}{#1}%
- \count0=\smrytbl@ntables
- \eq@rowcnt=0\relax\@tempcntb=\value{questionno}%
- \ifnum\count\z@=2\relax
- \divide\@tempcntb2\relax
- \advance\@tempcntb\ifodd\value{questionno}2\else1\fi
- \xdef\@beginSecCol{\the\@tempcntb}%
- \advance\@tempcntb-1\relax
- \fi
- \ifnum\count\z@=3
- \edef\eq@n{\the\@tempcntb}%
- \divide\@tempcntb\count\z@
- \edef\eq@q{\the\@tempcntb}%
- \@tempcnta=\@tempcntb\multiply\@tempcnta3
- \edef\eq@p{\the\@tempcnta}%
- \@tempcnta=\eq@n
- \advance\@tempcnta-\eq@p\relax
- \ifnum\@tempcnta=0
- \@tempcntb=\eq@q \advance\@tempcntb1
- \xdef\@beginSecCol{\the\@tempcntb}%
- \advance\@tempcntb\eq@q\relax
- \xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=1
- \@tempcntb=\eq@q \advance\@tempcntb1
- \edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1\relax
- \xdef\@beginSecCol{\the\@tempcntb}%
- \advance\@tempcntb\eq@q\relax
- \xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=2
- \@tempcntb=\eq@q \advance\@tempcntb1
- \edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1
- \xdef\@beginSecCol{\the\@tempcntb}%
- \advance\@tempcntb\nB@lCols
- \xdef\@beginThrdCol{\the\@tempcntb}%
- \fi\fi\fi
- \@tempcntb=\eq@n
- \fi
- \let\@eqListExp\@@eqListExp
- \eqQzQuesList
- \endgroup
-}
-\def\eq@begintab{%
- \begin{tabular}[t]{lcc}\sumryTblQ&\sumryTblR&\sumryTblP\\\sthline
- {\Large\strut}%
-}
-\def\sthline{\hline}
-\def\eq@endtab{\end{tabular}}
-\def\sumrytblCkMUsep{\kern3bp}
-\def\sumrytbllinkHook#1{#1}
-\newcommand{\sumryTblProbFmt}[1]{\textbf{\textcolor{blue}{#1}}}
-\newcommand{\sumrytablesep}{\space}
-\def\stmarkupWidth{12bp}\def\stmarkupHeight{9bp}\def\stmarkupTextSize{0}
-\def\st@scndclmn{%
- \checkBox[\Ff{\FfReadOnly}]%
- {\ccatCurrQzWith(SanityCheck).\the\eq@rowcnt}%
- {\markupHeight}{\markupHeight}{Yes}\ifeqshowmarkup
- \stmarkupbox{\sumrytblCkMUsep\textField[%
- \Ff\FfReadOnly\BC{}\textColor{\pcMarkupColor}%
- \textSize{\stmarkupTextSize}\autoCenter{n}%
- ]{\ccatCurrQzWith(SanityCheck\stfmtType Pts).\the\eq@rowcnt}%
- {\stmarkupWidth}{\stmarkupHeight}}\fi
-}
-\def\st@thrdclmn#1{%
- \setLink[\linktxtcolor{\@linkcolor}
- \A{\JS{this.pageNum=(#1-1)}}]{\sumrytbllinkHook{#1}}}
-\def\@@eqListExp#1#2{\global\advance\eq@rowcnt1\relax
- \ifnum\eq@rowcnt=1\relax
- \pbPopulateSumTable\ifsmrytbl@corrections\else
- \pbDoNoCorrectSumryTbl\fi\expandafter\eq@begintab\fi
- \ifnum\count0>1 \ifnum\eq@rowcnt=\@beginSecCol\relax
- \eq@endtab\expandafter\sumrytablesep\expandafter\eq@begintab
- \fi\fi
- \ifnum\count0=3 \ifnum\eq@rowcnt=\@beginThrdCol\relax
- \eq@endtab\expandafter\sumrytablesep\expandafter\eq@begintab
- \fi\fi
- \sumryTblProbFmt{#1}&\st@scndclmn&\st@thrdclmn{#2}\\[1bp]
- \ifnum\eq@rowcnt=\thequestionno\relax\expandafter\eq@endtab\fi
-}
-\def\writeProListAux{%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz QzQuesList\string\endcsname
- {\eqQzQuesList}}%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz nQuestions\string\endcsname
- {\thequestionno}}%
-}
-\def\setParamSumryTblAux{%
- \edef\eqQzQuesList{\@nameuse{\currQuiz QzQuesList}}%
- \@ifundefined{\currQuiz nQuestions}{}{%
- \value{questionno}=\@nameuse{\currQuiz nQuestions}}%
-}
-\newenvironment{sumryTblAux}[1]{%
- \DeclareQuiz{#1}\setParamSumryTblAux}{}%
-\begin{insDLJS}[correctSumryTbl]{sumtbljs}{Eq: Populate Summary Table}
-function correctSumryTbl(qtfield,nQuestions) {
- var oQName=eval(qtfield);
- var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
-?\rghtColorJS:oQName.RightColorJSLoc;
- var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
-?\wrngColorJS:oQName.WrongColorJSLoc;
- var partialColor=(typeof oQName.PartialColorJSLoc=="undefined")%
-?\partialColorJS:oQName.PartialColorJSLoc;
- var sc=this.getField(qtfield+"SanityCheck");
- var nc=this.getField(qtfield+"NoCorrections");
- if (sc != null && nc == null ) {
- for (var i=0; i<nQuestions; i++) {
- var cb=this.getField(qtfield+"SanityCheck."+(i+1));
- if (typeof RightWrong[i+1] == "undefined" ) {
- cb.strokeColor=wrongColor;
- continue;
- }
- if ( RightWrong[i+1] == 1 ) {
- cb.strokeColor=rightColor;
- continue;
- }
- if ( RightWrong[i+1] == 0 ) {
- // this is either an obj or multiple choice q
- if ( typeof ProbValue[i+1] == "object" )
- cb.strokeColor=( ProbValue[i+1][2] > 0 )?%
-partialColor:wrongColor;
- else cb.strokeColor=wrongColor; // obj q
- continue;
- }
- // either multiple selection or grouped math
- if ( RightWrong[i+1][0] == "grp" ) {
- // grouped question
- var f = this.getField("grpobj."+qtfield+"."+(i+1));
- var l = f.getArray().length;
- // is this right?
- for (var sum=0, j=1; j<=l; j++)
- sum+=(!!RightWrong[i+1][j]);
- if ( sum == l ) cb.strokeColor=["RGB", 0, .6, 0];
- else cb.strokeColor=( sum > 0 )?%
-partialColor:wrongColor;
- continue;
- }
- // multiple selection
- if ( RightWrong[i+1][0] == 1 ) cb.strokeColor=rightColor;
- else cb.strokeColor=(RightWrong[i+1][1]== 1)?%
-partialColor:wrongColor;
- }
- }
- var f1=this.getField(qtfield+"SanityCheckPts");
- var f2=this.getField(qtfield+"SanityCheckOOPts");
- var h=this.getField(qtfield+"activateSC");
- if ( f1 != null ) {
- for ( var i = 1; i <= nQuestions; i++) {
- if ( ProbValue[i] == undefined ) ProbValue[i]=0
- // find the next non-null field
- var g=this.getField(qtfield+"SanityCheckPts."+i);
- var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
- var thesePts= qpts + (( qpts == 1 )?%
-" \eqptLabel":" \eqptsLabel");
- g.value = thesePts;
- }
- }
- if ( f2 != null ) {
- for ( var i = 1; i <= nQuestions; i++) {
- if ( ProbValue[i] == undefined ) ProbValue[i]=0
- // find the next non-null field
- var g=this.getField(qtfield+"SanityCheckOOPts."+i);
- var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
- var ptValue = oQName.PtValues[i];
- var probPts = ptValue + (( ptValue == 1 )?%
-" \eqptLabel":" \eqptsLabel");
- g.value = qpts +" \stOutOf\space"+probPts;
- }
- }
-}
-function popVisitsTbl(qtfield,nQuestions) {
- if ( aQuizControl[qtfield] == 1) {
- this.resetForm([qtfield+"SanityCheck"]);
- for ( var i=0; i < nQuestions; i++ ) {
- var f=this.getField(qtfield+"SanityCheck."+(i+1));
- f.checkThisBox(0,(typeof Responses[i+1]!="undefined"));
- }
- }
-}
-function fieldPopTbl(qtfield) {
- var f=this.getField(qtfield+"activateSC");
- if ( f != null) {
- var n=Number(f.userName);
- var a = [ qtfield, n ];
- popVisitsTbl.apply(null,a);
- }
-}
-\end{insDLJS}
-\endinput
-%%
-%% End of file `aebsumrytbls.def'.
+%%
+%% This is file `aebsumrytbls.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,sumrytbls')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{aebsumrytbls.def}
+ [2018/03/21 v8.2.2 %
+ Exerquiz support for summary tables (dps)]
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\def\ccatCurrQzWith(#1){\currQuiz#1}
+\def\pbPopulateSumTable{\pushButton[\W0\BG{}\BC{}\S{S}\autoCenter{n}
+ \TU{\thequestionno}\Ff{\FfReadOnly}
+ \AA{\AAPageVisible{try{popVisitsTbl("\currQuiz",\thequestionno)}%
+ catch(e){}}}]{\currQuiz activateSC}{0pt}{0pt}}
+\def\pbDoNoCorrectSumryTbl{\makebox[0pt][l]{\pushButton[\F{\FHidden}]%
+ {\currQuiz NoCorrections}{0pt}{0pt}}}
+\newcount\eq@rowcnt
+\newcommand{\sumryTblQ}{Question}
+\newcommand{\sumryTblR}{Responded}
+\newcommand{\sumryTblP}{Page}
+\define@key{smrytbl}{ntables}{%
+ \@tempcntb=#1
+ \ifnum\@tempcntb<1 \@tempcntb=1 \fi
+ \ifnum\@tempcntb>3 \@tempcntb=3 \fi
+ \edef\smrytbl@ntables{\the\@tempcntb}%
+}
+\def\smrytbl@ntables{2}
+\define@key{smrytbl}{showmarkup}[true]{%
+ \csname if#1\endcsname\eqshowmarkuptrue
+ \else\eqshowmarkupfalse\fi
+}
+\newif\ifsmrytbl@corrections\smrytbl@correctionstrue
+\define@key{smrytbl}{nocorrections}[true]{%
+ \csname if#1\endcsname\smrytbl@correctionsfalse
+ \else\smrytbl@correctionstrue\fi
+}
+\define@key{smrytbl}{showOutOf}[true]{%
+ \csname if#1\endcsname\eqshowOutOftrue\def\stfmtType{OO}%
+ \gdef\showOutOfinSmryTbl{true}\let\stmarkupbox\relax
+ \else
+ \eqshowOutOffalse\let\stfmtType\@empty
+ \gdef\showOutOfinSmryTbl{false}%
+ \fi
+}
+\let\stfmtType\@empty
+\define@key{smrytbl}{setDimens}[]{#1}
+\def\showOutOfinSmryTbl{false}
+\def\stmarkupbox{\makebox[0pt][l]}
+\newcommand{\displaySumryTbl}[2][]{%
+ \begingroup\edef\currQuiz{#2}\edef\oField{#2}\edef\curr@quiz{#2}%
+ \setkeys{smrytbl}{#1}%
+ \count0=\smrytbl@ntables
+ \eq@rowcnt=0\relax\@tempcntb=\value{questionno}%
+ \ifnum\count\z@=2\relax
+ \divide\@tempcntb2\relax
+ \advance\@tempcntb\ifodd\value{questionno}2\else1\fi
+ \xdef\@beginSecCol{\the\@tempcntb}%
+ \advance\@tempcntb-1\relax
+ \fi
+ \ifnum\count\z@=3
+ \edef\eq@n{\the\@tempcntb}%
+ \divide\@tempcntb\count\z@
+ \edef\eq@q{\the\@tempcntb}%
+ \@tempcnta=\@tempcntb\multiply\@tempcnta3
+ \edef\eq@p{\the\@tempcnta}%
+ \@tempcnta=\eq@n
+ \advance\@tempcnta-\eq@p\relax
+ \ifnum\@tempcnta=0
+ \@tempcntb=\eq@q \advance\@tempcntb1
+ \xdef\@beginSecCol{\the\@tempcntb}%
+ \advance\@tempcntb\eq@q\relax
+ \xdef\@beginThrdCol{\the\@tempcntb}%
+ \else\ifnum\@tempcnta=1
+ \@tempcntb=\eq@q \advance\@tempcntb1
+ \edef\nB@lCols{\the\@tempcntb}%
+ \advance\@tempcntb1\relax
+ \xdef\@beginSecCol{\the\@tempcntb}%
+ \advance\@tempcntb\eq@q\relax
+ \xdef\@beginThrdCol{\the\@tempcntb}%
+ \else\ifnum\@tempcnta=2
+ \@tempcntb=\eq@q \advance\@tempcntb1
+ \edef\nB@lCols{\the\@tempcntb}%
+ \advance\@tempcntb1
+ \xdef\@beginSecCol{\the\@tempcntb}%
+ \advance\@tempcntb\nB@lCols
+ \xdef\@beginThrdCol{\the\@tempcntb}%
+ \fi\fi\fi
+ \@tempcntb=\eq@n
+ \fi
+ \let\@eqListExp\@@eqListExp
+ \eqQzQuesList
+ \endgroup
+}
+\def\eq@begintab{%
+ \begin{tabular}[t]{lcc}\sumryTblQ&\sumryTblR&\sumryTblP\\\sthline
+ {\Large\strut}%
+}
+\def\sthline{\hline}
+\def\eq@endtab{\end{tabular}}
+\def\sumrytblCkMUsep{\kern3bp}
+\def\sumrytbllinkHook#1{#1}
+\newcommand{\sumryTblProbFmt}[1]{\textbf{\textcolor{blue}{#1}}}
+\newcommand{\sumrytablesep}{\space}
+\def\stmarkupWidth{12bp}\def\stmarkupHeight{9bp}\def\stmarkupTextSize{0}
+\def\st@scndclmn{%
+ \checkBox[\Ff{\FfReadOnly}]%
+ {\ccatCurrQzWith(SanityCheck).\the\eq@rowcnt}%
+ {\markupHeight}{\markupHeight}{Yes}\ifeqshowmarkup
+ \stmarkupbox{\sumrytblCkMUsep\textField[%
+ \Ff\FfReadOnly\BC{}\textColor{\pcMarkupColor}%
+ \textSize{\stmarkupTextSize}\autoCenter{n}%
+ ]{\ccatCurrQzWith(SanityCheck\stfmtType Pts).\the\eq@rowcnt}%
+ {\stmarkupWidth}{\stmarkupHeight}}\fi
+}
+\def\st@thrdclmn#1{%
+ \setLink[\linktxtcolor{\@linkcolor}
+ \A{\JS{this.pageNum=(#1-1)}}]{\sumrytbllinkHook{#1}}}
+\def\@@eqListExp#1#2{\global\advance\eq@rowcnt1\relax
+ \ifnum\eq@rowcnt=1\relax
+ \pbPopulateSumTable\ifsmrytbl@corrections\else
+ \pbDoNoCorrectSumryTbl\fi\expandafter\eq@begintab\fi
+ \ifnum\count0>1 \ifnum\eq@rowcnt=\@beginSecCol\relax
+ \eq@endtab\expandafter\sumrytablesep\expandafter\eq@begintab
+ \fi\fi
+ \ifnum\count0=3 \ifnum\eq@rowcnt=\@beginThrdCol\relax
+ \eq@endtab\expandafter\sumrytablesep\expandafter\eq@begintab
+ \fi\fi
+ \sumryTblProbFmt{#1}&\st@scndclmn&\st@thrdclmn{#2}\\[1bp]
+ \ifnum\eq@rowcnt=\thequestionno\relax\expandafter\eq@endtab\fi
+}
+\def\writeProListAux{%
+ \eq@IWAuxOut{\string\expandafter\string\gdef
+ \string\csname\space\currQuiz QzQuesList\string\endcsname
+ {\eqQzQuesList}}%
+ \eq@IWAuxOut{\string\expandafter\string\gdef
+ \string\csname\space\currQuiz nQuestions\string\endcsname
+ {\thequestionno}}%
+}
+\def\setParamSumryTblAux{%
+ \edef\eqQzQuesList{\@nameuse{\currQuiz QzQuesList}}%
+ \@ifundefined{\currQuiz nQuestions}{}{%
+ \value{questionno}=\@nameuse{\currQuiz nQuestions}}%
+}
+\newenvironment{sumryTblAux}[1]{%
+ \DeclareQuiz{#1}\setParamSumryTblAux}{}%
+\begin{insDLJS}[correctSumryTbl]{sumtbljs}{Eq: Populate Summary Table}
+function correctSumryTbl(qtfield,nQuestions) {
+ var oQName=eval(qtfield);
+ var rightColor=(typeof oQName.RightColorJSLoc=="undefined")%
+?\rghtColorJS:oQName.RightColorJSLoc;
+ var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
+?\wrngColorJS:oQName.WrongColorJSLoc;
+ var partialColor=(typeof oQName.PartialColorJSLoc=="undefined")%
+?\partialColorJS:oQName.PartialColorJSLoc;
+ var sc=this.getField(qtfield+"SanityCheck");
+ var nc=this.getField(qtfield+"NoCorrections");
+ if (sc != null && nc == null ) {
+ for (var i=0; i<nQuestions; i++) {
+ var cb=this.getField(qtfield+"SanityCheck."+(i+1));
+ if (typeof RightWrong[i+1] == "undefined" ) {
+ cb.strokeColor=wrongColor;
+ continue;
+ }
+ if ( RightWrong[i+1] == 1 ) {
+ cb.strokeColor=rightColor;
+ continue;
+ }
+ if ( RightWrong[i+1] == 0 ) {
+ // this is either an obj or multiple choice q
+ if ( typeof ProbValue[i+1] == "object" )
+ cb.strokeColor=( ProbValue[i+1][2] > 0 )?%
+partialColor:wrongColor;
+ else cb.strokeColor=wrongColor; // obj q
+ continue;
+ }
+ // either multiple selection or grouped math
+ if ( RightWrong[i+1][0] == "grp" ) {
+ // grouped question
+ var f = this.getField("grpobj."+qtfield+"."+(i+1));
+ var l = f.getArray().length;
+ // is this right?
+ for (var sum=0, j=1; j<=l; j++)
+ sum+=(!!RightWrong[i+1][j]);
+ if ( sum == l ) cb.strokeColor=["RGB", 0, .6, 0];
+ else cb.strokeColor=( sum > 0 )?%
+partialColor:wrongColor;
+ continue;
+ }
+ // multiple selection
+ if ( RightWrong[i+1][0] == 1 ) cb.strokeColor=rightColor;
+ else cb.strokeColor=(RightWrong[i+1][1]== 1)?%
+partialColor:wrongColor;
+ }
+ }
+ var f1=this.getField(qtfield+"SanityCheckPts");
+ var f2=this.getField(qtfield+"SanityCheckOOPts");
+ var h=this.getField(qtfield+"activateSC");
+ if ( f1 != null ) {
+ for ( var i = 1; i <= nQuestions; i++) {
+ if ( ProbValue[i] == undefined ) ProbValue[i]=0
+ // find the next non-null field
+ var g=this.getField(qtfield+"SanityCheckPts."+i);
+ var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ var thesePts= qpts + (( qpts == 1 )?%
+" \eqptLabel":" \eqptsLabel");
+ g.value = thesePts;
+ }
+ }
+ if ( f2 != null ) {
+ for ( var i = 1; i <= nQuestions; i++) {
+ if ( ProbValue[i] == undefined ) ProbValue[i]=0
+ // find the next non-null field
+ var g=this.getField(qtfield+"SanityCheckOOPts."+i);
+ var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ var ptValue = oQName.PtValues[i];
+ var probPts = ptValue + (( ptValue == 1 )?%
+" \eqptLabel":" \eqptsLabel");
+ g.value = qpts +" \stOutOf\space"+probPts;
+ }
+ }
+}
+function popVisitsTbl(qtfield,nQuestions) {
+ if ( aQuizControl[qtfield] == 1) {
+ this.resetForm([qtfield+"SanityCheck"]);
+ for ( var i=0; i < nQuestions; i++ ) {
+ var f=this.getField(qtfield+"SanityCheck."+(i+1));
+ f.checkThisBox(0,(typeof Responses[i+1]!="undefined"));
+ }
+ }
+}
+function fieldPopTbl(qtfield) {
+ var f=this.getField(qtfield+"activateSC");
+ if ( f != null) {
+ var n=Number(f.userName);
+ var a = [ qtfield, n ];
+ popVisitsTbl.apply(null,a);
+ }
+}
+\end{insDLJS}
+\endinput
+%%
+%% End of file `aebsumrytbls.def'.
diff --git a/texmf-dist/tex/latex/acrotex/altadbfncs.def b/texmf-dist/tex/latex/acrotex/altadbfncs.def
index f277e2b7..149a6466 100644
--- a/texmf-dist/tex/latex/acrotex/altadbfncs.def
+++ b/texmf-dist/tex/latex/acrotex/altadbfncs.def
@@ -1,41 +1,41 @@
-%%
-%% This is file `altadbfncs.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% insdljs.dtx (with options: `copyright,altadbfncs')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% insdljs.sty package, %%
-%% Copyright (C) 2001-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{insDLJS}{altadbfncs}{eforms: Alternate Adobe Function Names}
-var EFNumber_Keystroke=AFNumber_Keystroke;
-var EFNumber_Format=AFNumber_Format;
-var EFPercent_Keystroke=AFPercent_Keystroke;
-var EFPercent_Format=AFPercent_Format;
-var EFDate_Format=AFDate_Format;
-var EFDate_Keystroke=AFDate_Keystroke;
-var EFDate_FormatEx=AFDate_FormatEx;
-var EFTime_Keystroke=AFTime_Keystroke;
-var EFTime_Format=AFTime_Format;
-var EFTime_FormatEx=AFTime_FormatEx;
-var EFDate_KeystrokeEx=AFDate_KeystrokeEx;
-var EFSpecial_Keystroke=AFSpecial_Keystroke;
-var EFSpecial_Format=AFSpecial_Format;
-var EFSpecial_KeystrokeEx=AFSpecial_KeystrokeEx;
-var EFRange_Validate=AFRange_Validate;
-var EFSimple_Calculate=AFSimple_Calculate;
-var EFMergeChange=AFMergeChange;
-\end{insDLJS}
-\endinput
-%%
-%% End of file `altadbfncs.def'.
+%%
+%% This is file `altadbfncs.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% insdljs.dtx (with options: `copyright,altadbfncs')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% insdljs.sty package, %%
+%% Copyright (C) 2001-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{insDLJS}{altadbfncs}{eforms: Alternate Adobe Function Names}
+var EFNumber_Keystroke=AFNumber_Keystroke;
+var EFNumber_Format=AFNumber_Format;
+var EFPercent_Keystroke=AFPercent_Keystroke;
+var EFPercent_Format=AFPercent_Format;
+var EFDate_Format=AFDate_Format;
+var EFDate_Keystroke=AFDate_Keystroke;
+var EFDate_FormatEx=AFDate_FormatEx;
+var EFTime_Keystroke=AFTime_Keystroke;
+var EFTime_Format=AFTime_Format;
+var EFTime_FormatEx=AFTime_FormatEx;
+var EFDate_KeystrokeEx=AFDate_KeystrokeEx;
+var EFSpecial_Keystroke=AFSpecial_Keystroke;
+var EFSpecial_Format=AFSpecial_Format;
+var EFSpecial_KeystrokeEx=AFSpecial_KeystrokeEx;
+var EFRange_Validate=AFRange_Validate;
+var EFSimple_Calculate=AFSimple_Calculate;
+var EFMergeChange=AFMergeChange;
+\end{insDLJS}
+\endinput
+%%
+%% End of file `altadbfncs.def'.
diff --git a/texmf-dist/tex/latex/acrotex/dljscc.def b/texmf-dist/tex/latex/acrotex/dljscc.def
index 6d9ee746..55f0b491 100644
--- a/texmf-dist/tex/latex/acrotex/dljscc.def
+++ b/texmf-dist/tex/latex/acrotex/dljscc.def
@@ -1,76 +1,76 @@
-%%
-%% This is file `dljscc.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% insdljs.dtx (with options: `copyright,cc4js')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% insdljs.sty package, %%
-%% Copyright (C) 2001-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\r{\eqesc r\ckivspace}
-\def\t{\eqesc t\ckivspace}
-\def\n{\eqesc n\ckivspace}
-\def\f{\eqesc f\ckivspace}
-\def\v{\eqesc v\ckivspace}
-\def\b{\eqesc b\ckivspace}
-\def\B{\eqesc B\ckivspace}
-\def\d{\eqesc d\ckivspace}
-\def\D{\eqesc D\ckivspace}
-\def\s{\eqesc s\ckivspace}
-\def\S{\eqesc S\ckivspace}
-\def\w{\eqesc w\ckivspace}
-\def\W{\eqesc W\ckivspace}
-\begingroup
-\catcode`\:=12\relax
-\dljstfor\dlhex:={AA}{AB}{AC}{AD}{AE}{AF}%
- {BA}{BB}{BC}{BD}{BE}{BF}{CA}{CB}{CC}{CD}{CE}{CF}%
- {DA}{DB}{DC}{DD}{DE}{DF}{EA}{EB}{EC}{ED}{EE}{EF}%
- {FA}{FB}{FC}{FD}{FE}{FF}\do{%
- \expandafter\xdef\csname x\dlhex\endcsname{\noexpand\eqesc x\dlhex}%
-}
-\endgroup
-\def\u{\eqesc u\ckivspace}
-\def\0{\eqesc0}
-\def\1{\eqesc1}
-\def\2{\eqesc2}
-\def\3{\eqesc3}
-\definebraces
-\def\({\eqesc\eqesci(}
-\def\){\eqesc\eqesci)}
-\def\.{\eqesc.}
-\def\/{\eqesc/}
-\def\[{\eqesc[}
-\def\]{\eqesc]}
-\def\|{\eqesc|}
-\def\+{\eqesc+}
-\def\*{\eqesc*}
-\def\-{\eqesc-}
-\def\?{\eqesc?}
-\def\${\eqesc$}
-\def\^{\eqesc^}
-\def\\{\eqesc\eqesc}
-\def\'{\eqesc'}
-\catcode`\"=12
-\def\"{\eqesc"}
-\catcode`\<=12
-\def\<{\eqesc<}
-\catcode`\>=12
-\def\>{\eqesc>}
-\catcode`\%=12
-\def\%{%}
-\catcode`\%=14
-\catcode`\& = 12
-\def\&{\eqesc&}
-\endinput
-%%
-%% End of file `dljscc.def'.
+%%
+%% This is file `dljscc.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% insdljs.dtx (with options: `copyright,cc4js')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% insdljs.sty package, %%
+%% Copyright (C) 2001-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\r{\eqesc r\ckivspace}
+\def\t{\eqesc t\ckivspace}
+\def\n{\eqesc n\ckivspace}
+\def\f{\eqesc f\ckivspace}
+\def\v{\eqesc v\ckivspace}
+\def\b{\eqesc b\ckivspace}
+\def\B{\eqesc B\ckivspace}
+\def\d{\eqesc d\ckivspace}
+\def\D{\eqesc D\ckivspace}
+\def\s{\eqesc s\ckivspace}
+\def\S{\eqesc S\ckivspace}
+\def\w{\eqesc w\ckivspace}
+\def\W{\eqesc W\ckivspace}
+\begingroup
+\catcode`\:=12\relax
+\dljstfor\dlhex:={AA}{AB}{AC}{AD}{AE}{AF}%
+ {BA}{BB}{BC}{BD}{BE}{BF}{CA}{CB}{CC}{CD}{CE}{CF}%
+ {DA}{DB}{DC}{DD}{DE}{DF}{EA}{EB}{EC}{ED}{EE}{EF}%
+ {FA}{FB}{FC}{FD}{FE}{FF}\do{%
+ \expandafter\xdef\csname x\dlhex\endcsname{\noexpand\eqesc x\dlhex}%
+}
+\endgroup
+\def\u{\eqesc u\ckivspace}
+\def\0{\eqesc0}
+\def\1{\eqesc1}
+\def\2{\eqesc2}
+\def\3{\eqesc3}
+\definebraces
+\def\({\eqesc\eqesci(}
+\def\){\eqesc\eqesci)}
+\def\.{\eqesc.}
+\def\/{\eqesc/}
+\def\[{\eqesc[}
+\def\]{\eqesc]}
+\def\|{\eqesc|}
+\def\+{\eqesc+}
+\def\*{\eqesc*}
+\def\-{\eqesc-}
+\def\?{\eqesc?}
+\def\${\eqesc$}
+\def\^{\eqesc^}
+\def\\{\eqesc\eqesc}
+\def\'{\eqesc'}
+\catcode`\"=12
+\def\"{\eqesc"}
+\catcode`\<=12
+\def\<{\eqesc<}
+\catcode`\>=12
+\def\>{\eqesc>}
+\catcode`\%=12
+\def\%{%}
+\catcode`\%=14
+\catcode`\& = 12
+\def\&{\eqesc&}
+\endinput
+%%
+%% End of file `dljscc.def'.
diff --git a/texmf-dist/tex/latex/acrotex/dljslib.sty b/texmf-dist/tex/latex/acrotex/dljslib.sty
index 67f0867b..bad34c8f 100644
--- a/texmf-dist/tex/latex/acrotex/dljslib.sty
+++ b/texmf-dist/tex/latex/acrotex/dljslib.sty
@@ -1,1741 +1,1741 @@
-%%
-%% This is file `dljslib.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% dljslib.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% dljsLib.sty package, %%
-%% Copyright (C) 2001-2018 D. P. Story %%
-%% dpstory@uakron.edu %%
-%% %%
-%% This program can redistributed and/or modified under %%
-%% the terms of the LaTeX Projet Public License %%
-%% 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{dljslib}
- [2017/08/11 v2.1 Manage a Library of Document Level JavaScripts (dps)]
-\newcommand\dljsRegister[2][n]
- {\expandafter\let\csname checkout@#2\endcsname=#1}
-\def\@ifcheckedout#1{\expandafter\if\csname checkout@#1\endcsname y}
-\newcommand\DeclareAndRegister[1]
- {\DeclareOption{#1}{\dljsRegister[y]{#1}}\dljsRegister{#1}}
-\dljsRegister[y]{dljslib}
-\DeclareAndRegister{equations}
-\DeclareAndRegister{vectors}
-\DeclareAndRegister{indefIntegral}
-\DeclareAndRegister{ImplMulti}
-\DeclareAndRegister{nodec}
-\DeclareAndRegister{noBinFac}
-\DeclareAndRegister{limitArith}
-\DeclareAndRegister{combinatorics}
-\DeclareAndRegister{setSupport}
-\DeclareOption{unordered}{\PackageWarning{dljslib}
- {The `unordered' option is now combined with the\MessageBreak
- `setSupport' option, will use the `setSupport' option\MessageBreak
- instead}\ExecuteOptions{setSupport}}
-\DeclareAndRegister{complex}
-\DeclareAndRegister{satisfyEq}
-\DeclareAndRegister{useGermanNums}
-\DeclareAndRegister{factors}
-\DeclareAndRegister{point}
-\DeclareAndRegister{intervals}
-\def\includeOptions#1{\@for\@option:=#1\do{\dljsRegister[y]{\@option}}}
-\InputIfFileExists{libcusopt.opt}{}{}
-\ProcessOptions
-\RequirePackage{exerquiz}[2017/08/04]
-\RequirePackage{insdljs}
-\def\setdecimalpoint#1{\def\aebdecimalpoint{\eqbs#1}}
-\setdecimalpoint{.}
-\newwrite\dljslib@verbatim@out
-\immediate\openout\dljslib@verbatim@out=dljslib.ljs
-\newenvironment{library@holding}[1]
-{%
- \expandafter\ifx\csname checkout@#1\endcsname y%
- \let\js@verbatim@out\dljslib@verbatim@out
- \let\dljs@verbatim\js@verbatimwrite
- \let\enddljs@verbatim\endjs@verbatimwrite\else
- \let\dljs@verbatim\comment
- \let\enddljs@verbatim\endcomment\fi\dljs@verbatim
-}{\enddljs@verbatim}
-\begin{library@holding}{dljslib}
-\begin{insDLJS*}[dljslib]{dljslib}
-\begin{newsegment}{dljslib: AcroTeX DLJS Library}
-/*
- The Document Level JavaScript Library
- D. P. Story copyright 2001-\the\year
-*/
-var dljslib = true;
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{equations}
-\newcommand\equationsAlertMsg{"An equation is expected"}
-\fi
-\begin{library@holding}{equations}
-\begin{newsegment}{dljslib: Equation Handling}
-function ProcRespEq(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- if (!ProcessIt) return null;
- ok2Continue = true;
- var success;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- var CorrExpressions = CorrAns.split("=");
- var zCorrAns = "("+CorrExpressions[0]+")-("+CorrExpressions[1] +")";
- UserAns = stripWhiteSpace (UserAns);
- if(!ok2Continue ) return null;
- if (!/[=]/.test(UserAns)) {
- eqAppAlert(\equationsAlertMsg, 3);
- return null;
- }
- var reComma=/,/;
- if ( reComma.test(UserAns) ) {
- eqAppAlert(\eqSyntaxErrorComma,3);
- return null;
- }
- var UserExpressions = UserAns.split("=");
- var zUserAns = "("+UserExpressions[0]+")-("+UserExpressions[1] +")";
-
- var comp = ( typeof oComp == "object" ) ?
- (typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp : oComp;
- if ( typeof oComp == "object"
- && typeof oComp.priorParse != "undefined" ) {
- if ( typeof oComp.priorParse == "object" ) {
- for ( var i=0; i < oComp.priorParse.length; i++) {
- var retn = oComp.priorParse[i](zUserAns);
- if ( retn == null ) return null;
- }
- } else {
- var retn = oComp.priorParse(zUserAns);
- if ( retn == null ) return null;
- }
- }
- zCorrAns = ParseInput(zCorrAns);
- if (!ok2Continue) {
- eqAppAlert("Syntax error in author's answer! Check console.", 3);
- console.println("Syntax Error: " + CorrAns);
- return null;
- }
- zUserAns = ParseInput(zUserAns);
- if (!ok2Continue) return null;
- indepVars = TypeParameters(indepVars);
- var lambda = getNonZeroRatio (domain, indepVars, zCorrAns, zUserAns);
- if ( lambda == null ) {
- eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; };
- if ( !ok2Continue ) return notifyField(false, flag, fieldname);
- zCorrAns = lambda + "*(" + zCorrAns + ")";
- success=randomPointCompare (n,domain,indepVars,epsilon,
- zCorrAns,zUserAns,comp)
- if ( success == null ) { eqAppAlert(\eqSyntaxErrorUndefVar,3);
- return null; }
- return notifyField(success, flag, fieldname);
-}
-function getNonZeroRatio (_a, _v, _F, _G)
-{
- var _i, _j;
- var aXY = new Array();
- _a = _a.replace(/[\[\]\s]/g, "");
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = _V.length;
- var aIntervals = _a.split("&");
- var aInterval = aIntervals[0].split("x");
- var endpoints = aInterval[0].split(",");
- for (_j=0; _j < 4; _j++) {
- for (_i = 0; _i < _n; _i++) {
- var endpoints = aInterval[_i].split(",");
- aXY[_i] = endpoints[0]-0
- +(endpoints[1]-endpoints[0])*Math.random();
-\db console.println("aXY["+_i+"] = " + aXY[_i]);\db%
- }
- for (var _i = 0; _i< _n; _i++) {
- if (_V[_i].charAt(0) == "r" )
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + aXY[_i] + ";");
- else // assume type "i"
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + Math.ceil(aXY[_i]) + ";");
- }
- _F = eval(_F);
- if ( app.viewerVersion >= 5)
- {
- var rtnCode = 0;
- eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
- +"catch (e) { rtnCode=1; }");
- switch(rtnCode) {
- case 0: break;
- case 1: return null;
- case -1: ok2Continue=false;
- return -1;
- }
- }
- else
- if(isNaN(_G=eval(_G))) {ok2Continue=false;return -1;}
- if ( _F != 0 && _G != 0 ) return _G/_F;
- }
- console.println( "Can't find a non zero scalar");
- return null;
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{vectors}
-\newcommand\vectorsErrorMsgi{"I'm looking for a vector.
- You need to use proper vector notation, try using
- angle brackets <....>."}
-\newcommand\vectorsErrorMsgii{"Angle brackets are not balanced.
- Check the expression you typed in."}
-\newcommand\vectorsErrorMsgiii{"Incorrect number of components.
- The answer requires " + aCorrAns.length+" components."}
-\def\vectorEmptyCompMsgiv(#1){"You entered nothing for the
- component " +(#1+1) +" of your answer. Please enter
- a component for the vector."}
-\fi
-\begin{library@holding}{vectors}
-\begin{newsegment}{dljslib: Vector Handling}
-function ProcVec (flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- if (!ProcessIt) return null;
- ok2Continue = true;
- var i, success, truthCnt=1;
- var aScalar, scalar = 1;
- var fieldname = event.target.name;
- var UserAns = event.value;
- UserAns = stripWhiteSpace(UserAns); // sets ok2Continue
- CorrAns = stripWhiteSpace(CorrAns);
- if ( !ok2Continue ) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- if (!/[<>]/.test(UserAns)) {
- eqAppAlert(\vectorsErrorMsgi, 3);
- return null;
- }
- if (!CkBalP(UserAns,"<",">")) {
- eqAppAlert(\vectorsErrorMsgii, 3);
- return null;
- }
- // see if there is a scalar multiple to the left of '<'
- aScalar = UserAns.match(/(.*)(\*)(\s*<)/);
- if (aScalar != null) {
- scalar = aScalar[1];
- UserAns = UserAns.slice(aScalar.index + aScalar[0].length-1)
- }
- var comp = ( typeof oComp == "object" ) ?
- (typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp : oComp;
- CorrAns = CorrAns.replace(/[<>]/g, ""); // strip of < and >
- UserAns = UserAns.replace(/[<>]/g, "");
- if ( typeof oComp == "object" && %
-typeof oComp.priorParse != "undefined" ) {
- var retn=processSpecialParse(oComp.priorParse,UserAns);
- if (retn==null) return null;
- }
- aUserAns = UserAns.split(",");
- aCorrAns = CorrAns.split(",");
- if (scalar != 1)
- for (i=0; i<aUserAns.length; i++)
- aUserAns[i]=""+scalar+"*"+aUserAns[i];
- if (aCorrAns.length != aUserAns.length) {
- eqAppAlert(\vectorsErrorMsgiii,3);
- return null;
- }
- // convert to new format, if needed
- indepVars = TypeParameters(indepVars);
- for (i=0; i<aCorrAns.length; i++) {
- aCorrAns[i] = ParseInput(aCorrAns[i]);
- if (!ok2Continue) {
- eqAppAlert("Author Syntax error!", 3);
- return null;
- }
- aUserAns[i] = ParseInput(aUserAns[i]);
- if (aUserAns[i]==null) {
- eqAppAlert(\vectorEmptyCompMsgiv(i), 3);
- return null;
- }
- if (!ok2Continue) return null;
- success=randomPointCompare (n,domain,indepVars,epsilon,
- aCorrAns[i],aUserAns[i],comp)
- if ( success == null ) {
- eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
- truthCnt *= (success) ? 1 : 0;
- }
- return notifyField(!!truthCnt, flag, fieldname);
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{setSupport}
-\newcommand{\noBracesInAnsMsg}{"Do not insert braces in your answer.
- Please remove the braces (\{\})."}
-\newcommand{\noBracketsInAnsMsg}{"Do not insert braces in your answer.
- Please remove the angle brackets (<>)."}
-\fi
-\begin{library@holding}{setSupport}
-\begin{newsegment}{dljslib: Support for Sets}
-function ProcRespSetNum(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- var retn=ck4Braces(UserAns);
- if (retn==null) return null;
- var aUserAns = UserAns.split(",");
- for ( var i=0; i < aUserAns.length; i++) {
- try {
- if (isNaN(eval(aUserAns[i]))) return syntaxError(), null;
- } catch(e) { return syntaxError(), null; }
- }
- var aUserAns = aUserAns.sort(
- function(a,b) { return eval(a) - eval(b);} );
- var aCorrAns = CorrAns.split(",").sort(
- function(a,b) { return eval(a) - eval(b);} );
- var numCorrect = 0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- for ( var i=0; i< aCorrAns.length; i++) {
- var retn = _ProcResp(%
-flag,aCorrAns[i],aUserAns[i],n,epsilon,domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- numCorrect += (retn) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-var ok2format=true;
-function formatAsSet() {
- if (ok2format&&event.value.replace(/\\s/g,"") != "")
- event.value = "{ " + event.value + " }";
-}
-function ck4Braces (UserAns) {
- ok2format=true;
- if (/^\{/.test(UserAns) || /\}$/.test(UserAns) ) {
- ok2format=false;
- return eqAppAlert(\noBracesInAnsMsg,3), null;
- }
- else return true;
-}
-function ck4AngleBrackets (UserAns) {
- ok2format=true;
- if (/^</.test(UserAns) || />$/.test(UserAns) ) {
- ok2format=false;
- return eqAppAlert(\noBracketsInAnsMsg,3), null;
- }
- else return true;
-}
-function formatAsVector() {
- if (ok2format&&event.value.replace(/\\s/g,"") != "") {
- event.value = "< " + event.value + " >";
- }
-}
-function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- var retn=ck4Braces(UserAns);
- if (retn==null) return null;
- var aUserAns = UserAns.split(",");
- var _V = indepVars.split(",");
- for ( var _i=0; _i < _V.length; _i++) {
- eval ( "var "+ _V[_i] + " = \"" + _i + "\";");
- }
- for ( var _i=0; _i < aUserAns.length; _i++) {
- try {
- if (isNaN(eval(aUserAns[_i]))) return syntaxError(), null;
- aUserAns[_i] = eval(aUserAns[_i]);
- } catch(e) { return syntaxError(), null; }
- }
- var aCorrAns = CorrAns.split(",");
- for ( var _i=0; _i < aCorrAns.length; _i++) {
- try {
- if (isNaN(eval(aCorrAns[_i])))
- return eqAppAlert(%
-"Author error, recheck your code",3), null;
- aCorrAns[_i] = eval(aCorrAns[_i]);
- } catch(e) { return eqAppAlert(
- "Author error, recheck your code",3), null; }
- }
- var aUserAns = aUserAns.sort(
- function(a,b) { return eval(a) - eval(b);} );
- var aCorrAns = aCorrAns.sort(
- function(a,b) { return eval(a) - eval(b);} );
- var numCorrect = 0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- for ( var _i=0; _i< aCorrAns.length; _i++) {
- var retn = _ProcResp(%
-flag,aCorrAns[_i],aUserAns[_i],n,epsilon,"[0,1]","i:_x",oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- numCorrect += (retn) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-function ProcRespListFormula(flag,CorrAns,n,epsilon,domain,%
-indepVars,oComp) {
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- var retn=ck4AngleBrackets(UserAns);
- if (retn==null) return null;
- UserAns = UserAns.replace(/,+/g, ",");
- UserAns = UserAns.replace(/,$/, "");
- UserAns = UserAns.replace(/^,/, "");
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var aUserAns = UserAns.split(",");
- var aCorrAns = CorrAns.split(",");
- var numCorrect = 0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- for ( var i=0; i< aCorrAns.length; i++) {
- var retn =_ProcResp(flag,aCorrAns[i],aUserAns[i],%
-n,epsilon,domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- numCorrect += (retn) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-function ProcRespSetFormula(flag,CorrAns,n,epsilon,%
-domain,indepVars,oComp) {
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- var retn=ck4Braces(UserAns);
- if (retn==null) return null;
- UserAns = UserAns.replace(/,+/g, ",");
- UserAns = UserAns.replace(/,$/, "");
- UserAns = UserAns.replace(/^,/, "");
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var aUserAns = UserAns.split(",");
- var aCorrAns = CorrAns.split(",");
- var numCorrect = 0, match = 0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- for ( var i=0; i<aCorrAns.length; i++) {
- match = 0;
- for ( var j=i; j< aUserAns.length; j++) {
- var retn = _ProcResp(%
-flag,aCorrAns[i],aUserAns[j],n,epsilon,domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- if (retn==1) {
- var temp=aUserAns[j];
- aUserAns[j]=aUserAns[i];
- aUserAns[i]=temp;
- match = match + 1;
- }
- }
- numCorrect += (match) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{complex}
-\newcommand{\complexPowerAlertMsg}{%
- "Powers of i (for example, i^2, i^3) are not supported,
- replace powers of i with their complex equivalents."}
-\newcommand{\complexCisAlertMsg}{%
- "The cis function does not support exponents. Write,
- for example, cis^3(x) as cis(3*x), instead."}
-\newcommand{\alertNotComplexMsg}{%
- "The expression is not in the form of a complex
- number, a+bi"}
-\def\emptyCompComplexMsg(#1){%
- "You entered nothing for the component "
- +(#1+1)+" of your answer. Please enter a complex number."}
-\fi
-\begin{library@holding}{complex}
-\begin{newsegment}{dljslib: Support for Complex Numbers}
-function cis(x,i) { return Math.cos(x) + i*Math.sin(x); }
-JSfCustom.push("cis");
-JSf = JSf.concat(JSfBuiltIn, JSfCustom);
-function ProcRespComplex(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- if (!ProcessIt) return null;
- ok2Continue = true;
- var i, success;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- CorrAns = stripWhiteSpace (CorrAns);
- UserAns = stripWhiteSpace (UserAns); // sets ok2Continue
- if ( !ok2Continue ) return null;
- indepVars+="i";
- domain+="x[0,1]";
- if (/(\b|[^a-zA-Z])i\^/.test(UserAns)) {
- eqAppAlert(\complexPowerAlertMsg,3);
- return null;
- }
- if ( /cis\^/.test(UserAns) ) {
- eqAppAlert(\complexCisAlertMsg,3);
- return null;
- }
- var reComma=/,/;
- if ( reComma.test(UserAns) ) {
- eqAppAlert(\eqSyntaxErrorComma,3);
- return null;
- }
- UserAns=changeArgs4Cis(UserAns);
- CorrAns=changeArgs4Cis(CorrAns);
- var aMatch = UserAns.match(/(\b|[^a-zA-Z])i/g);
- if ( aMatch != null && aMatch.length > 1) {
- eqAppAlert(\alertNotComplexMsg, 3);
- return null;
- }
- var comp = ( typeof oComp == "object" ) ?
- (typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp : oComp;
- if ( typeof oComp == "object" &&
- typeof oComp.priorParse != "undefined" ) {
- if ( typeof oComp.priorParse == "object" ) {
- for ( var i=0; i < oComp.priorParse.length; i++) {
- var retn = oComp.priorParse[i](UserAns);
- if ( retn == null ) return null;
- }
- } else {
- var retn = oComp.priorParse(UserAns);
- if ( retn == null ) return null;
- }
- }
- UserAns = ParseInput(UserAns);
- CorrAns = ParseInput(CorrAns);
- indepVars = TypeParameters(indepVars);
- if (!ok2Continue) return null;
- success=randomPointCompare(
- n,domain,indepVars,epsilon,CorrAns,UserAns,comp);
- if ( success == null ) { eqAppAlert(%
-\eqSyntaxErrorUndefVar,3); return null; }
- return notifyField(success, flag, fieldname);
-}
-function ProcRespListComplex(flag,CorrAns,n,epsilon,%
-domain,indepVars,oComp) {
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns); // sets ok2Continue
- if ( !ok2Continue ) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- UserAns = UserAns.replace(/,+/g, ",");
- UserAns = UserAns.replace(/,$/, "");
- UserAns = UserAns.replace(/^,/, "");
- var aUserAns = UserAns.split(",");
- var aCorrAns = CorrAns.split(",");
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- var numCorrect = 0;
- var match = 0;
- for ( var i=0; i< aCorrAns.length; i++) {
- match = 0;
- var retn = ProcRespComplex(%
-flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[i]);
- if ( retn == null ) return null;
- numCorrect += (retn) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-function ProcRespSetComplex(flag,CorrAns,n,epsilon,%
-domain,indepVars,oComp) {
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns); // sets ok2Continue
- if ( !ok2Continue ) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- UserAns = UserAns.replace(/,+/g, ",");
- UserAns = UserAns.replace(/,$/, "");
- UserAns = UserAns.replace(/^,/, "");
- event.value = UserAns;
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- var aUserAns = UserAns.split(",");
- var aCorrAns = CorrAns.split(",");
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- var numCorrect = 0;
- var match = 0;
- for ( var i=0; i< aCorrAns.length; i++) {
- match = 0;
- for ( var j=i; j< aUserAns.length; j++) {
- var retn = ProcRespComplex(%
-flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[j]);
- if ( retn == null ) return null;
- if (retn==1) {
- var temp=aUserAns[j];
- aUserAns[j]=aUserAns[i];
- aUserAns[i]=temp;
- match = match + 1;
- }
- }
- numCorrect += (match) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-function changeArgs4Cis(str) {
- var re =/cis\(/g;
- while ( (aP=re.exec(str) ) != null ) {
- var LeftP=re.lastIndex;
- var RightP=FindBalP(str,re.lastIndex,1);
- str = str.substring(0,RightP)
- +",i"+str.substring(RightP);
- }
- return str;
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{satisfyEq}
-\newcommand{\notifyWrongNumEntries}{\def\satisfyEqNotify{true}}
-\def\satisfyEqNotify{false}
-\newcommand{\wrongNumEntriesMsg}{"You don't have the correct number
- of entries in your coordinate points. Expecting "+_n
- +" entries per point." }
-\newcommand{\eqSyntaxErrorNoParens}{"Syntax Error: Enter the point
- using parentheses, for example (1,2) or (1,2,3), as applicable."}
-\newcommand{\eqNonzeroEntries}{"Syntax Error: All entries are required
- to be nonzero, try again."}
-\newcommand{\eqTooManyEntries}{"You've entered more points than
- requested, enter only "+l+" points."}
-\newcommand{\eqTooFewEntries}{"You've entered fewer points than
- requested, enter only "+l+" points."}
-\newcommand{\eqDuplEntries}{"One or more points are the same,
- provide "+l+" distinct points."}
-\fi
-\begin{library@holding}{satisfyEq}
-\begin{newsegment}
- {dljslib: Support for n-tuple input to Satisfy an Equation}
-var bNotifyWrngNumEntries=\satisfyEqNotify;
-function ProcRespEvalEq(flag,CorrAns,n,epsilon,domain,indepVars,oComp){
- var UserAns=(arguments.length>7)?arguments[7]:event.value;
- var retn=_ProcRespEvalEq(true,flag,CorrAns,n,epsilon,%
-indepVars,UserAns);
- return retn;
-}
-function ProcRespEvalEqNonZero(flag,CorrAns,n,epsilon,%
-domain,indepVars,oComp) {
- var UserAns=(arguments.length>7)?arguments[7]:event.value;
- var retn=_ProcRespEvalEq(false,flag,CorrAns,n,epsilon,
-indepVars,UserAns);
- return retn;
-}
-function _ProcRespEvalEq(allowzero,flag,CorrAns,n,epsilon,indepVars)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>6); // dps17
- var UserAns=(bSubstVars)?arguments[6]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- if (!ok2Continue) return null;
- if ( (UserAns.charAt(0) != "\(") || %
-(UserAns.charAt(UserAns.length-1) != "\)"))
- return eqAppAlert(\eqSyntaxErrorNoParens,3), null;
- UserAns=UserAns.substring(1,UserAns.length-1);
- var aUserAns = UserAns.split(",");
- for ( var i=0; i < aUserAns.length; i++) {
- try {
- if (isNaN(eval(aUserAns[i]))) return syntaxError(), null;
- if (!allowzero && (eval(aUserAns[i])==0))
- return eqAppAlert(\eqNonzeroEntries,3), null;
- } catch(e) { return syntaxError(), null; }
- }
- var _v = TypeParameters(indepVars);
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = _V.length;
- if ( aUserAns.length != _n) {
- if (bNotifyWrngNumEntries)
- return eqAppAlert(\wrongNumEntriesMsg,3), null;
- else
- return notifyField(false, flag, fieldname);
- }
- for (var _i=0; _i < _n; _i++) {
- if (_V[_i].charAt(0) == "r" )
- eval("var "+_V[_i].charAt(2)+"="+aUserAns[_i]+";");
- else // assume type "i"
- eval("var "+_V[_i].charAt(2)+"="+Math.ceil(aUserAns[_i])+";");
- }
- var UserInput=ParseInput(CorrAns);
- var UserAns=eval(UserInput);
- success=(Math.abs(UserAns) < epsilon)?true:false;
- return notifyField(success, flag, fieldname);
-}
-function ProcRespEvalEqList(flag,CorrAns,n,epsilon,domain,%
-indepVars,oComp) {
- var UserAns=(arguments.length>7)?arguments[7]:event.value;
- var retn=_ProcRespEvalEqList(true,flag,CorrAns,n,epsilon,%
-indepVars,UserAns);
- return retn;
-}
-function ProcRespEvalEqListNonZero(flag,CorrAns,n,epsilon,domain,%
-indepVars,oComp){
- var UserAns=(arguments.length>7)?arguments[7]:event.value;
- var retn=_ProcRespEvalEqList(false,flag,CorrAns,n,epsilon,%
-indepVars,UserAns);
- return retn;
-}
-function _ProcRespEvalEqList(allowzero,flag,CorrAns,n,epsilon,indepVars)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>6); // dps17
- var UserAns=(bSubstVars)?arguments[6]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- if (!ok2Continue) return null;
- var success;
- UserAns=UserAns.replace(/;+$/,"");
- UserAns=UserAns.replace(/;+/g,";");
- var aUsersArray = new Array();
- var aUserAns = UserAns.split(";");
- var aCorrAns = CorrAns.split(";");
- var l = aCorrAns[0];
- if (l < aUserAns.length )
- return eqAppAlert(\eqTooManyEntries,3), null;
- if (l > aUserAns.length )
- return eqAppAlert(\eqTooFewEntries,3), null;
- var _v = TypeParameters(indepVars);
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = _V.length;
- var testFunc="";
- for (var _i=0; _i < _n; _i++)
- testFunc += ("+"+(Math.random()*9)+"*"+_V[_i].charAt(2));
- var isCorrect=1;
- for (var pair=0; pair< l; pair++) {
- if ( (aUserAns[pair].charAt(0) != "\(") || %
-(aUserAns[pair].charAt(aUserAns[pair].length-1) != "\)"))
- return eqAppAlert(\eqSyntaxErrorNoParens,3), null;
- UserAnsPair=aUserAns[pair].substring(1,aUserAns[pair].length-1);
- var aUserAnsPair = UserAnsPair.split(",");
- for ( var i=0; i < aUserAnsPair.length; i++) {
- try { if (isNaN(eval(aUserAnsPair[i]))) %
-return syntaxError(), null;
- if (!allowzero && (eval(aUserAnsPair[i])==0))
- return eqAppAlert(\eqNonzeroEntries,3), null;
- } catch(e) { return syntaxError(), null; }
- }
- if ( aUserAnsPair.length != _n) {
- if (bNotifyWrngNumEntries)
- return eqAppAlert(\wrongNumEntriesMsg,3), null;
- else
- return notifyField(false, flag, fieldname);
- }
- for (var _i=0; _i < _n; _i++) {
- if (_V[_i].charAt(0) == "r" )
- eval ("var "+_V[_i].charAt(2)+"="+aUserAnsPair[_i]+";");
- else // assume type "i"
- eval ("var "+_V[_i].charAt(2)+"="%
-+Math.ceil(aUserAnsPair[_i])+";");
- }
- var UserInput=ParseInput(aCorrAns[1]);
- var UserAns=eval(UserInput);
- aUsersArray[pair]=eval(testFunc);
- success=(Math.abs(UserAns) < epsilon)?true:false;
-isCorrect *=Number(success);
- }
- success=(isCorrect==1);
- var aOrderArray = aUsersArray.sort(function(a,b){return a-b});
- var m = aUsersArray.length - 1;
- for (i=0; i<m; i++)
- if (Math.abs(aUsersArray[i]-aUsersArray[i+1])<.0001)
- return eqAppAlert(\eqDuplEntries,3), null;
- return notifyField(success, flag, fieldname);
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{useGermanNums}
-\newcommand{\noDecPtGerMsg}{"A period (.) is not allowed in answer,
- use German notation for numbers"}
-\fi
-\begin{library@holding}{useGermanNums}
-\begin{newsegment}
- {dljslib: Support for process numbers in the German format}
-function ProcRespNumsDe (flag,CorrAns,n,epsilon,%
-domain,indepVars,oComp) {
- if (!ProcessIt) return null;
- ok2Continue = true;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- var success = _ProcRespNumsDe(flag,CorrAns,UserAns,n,%
-epsilon,domain,indepVars,oComp);
- if ( success == -1 || !ok2Continue ) return null;
- if ( success == null ) { return syntaxError(), null; }
- return notifyField(success, flag, fieldname);
-}
-function _ProcRespNumsDe(flag,CorrAns,UserAns,n,epsilon,%
-domain,indepVars,oComp) {
- ok2Continue = true;
- CorrAns = ParseInput(CorrAns);
- if (!ok2Continue) {
- eqAppAlert("Syntax error in author's answer! Check console.", 3);
- return null;
- }
- var UserAnsSave=UserAns;
- var reDe=/,/g;
- var reDec=/\./g;
- if ( reDec.test(UserAns) ) {
- eqAppAlert(\noDecPtGerMsg,3);
- return -1;
- }
- UserAns=UserAns.replace(reDe,".");
- var comp = ( typeof oComp == "object" ) ?
- (typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp : oComp;
- if ( (typeof(oComp)=="object") %
-&& (typeof(oComp.priorParse)!="undefined") ) {
- var retn=processSpecialParse(oComp.priorParse,UserAnsSave);
- if (retn==null) return -1;
- }
- var reComma=/,/;
- if ( reComma.test(UserAns) ) {
- eqAppAlert(\eqSyntaxErrorComma,3);
- return -1;
- }
- UserAns = ParseInput(UserAns);
- indepVars = TypeParameters(indepVars);
- if (!ok2Continue) return null;
- var success=randomPointCompare(n,domain,indepVars,%
-epsilon,CorrAns,UserAns,comp);
- if ( success && (typeof(oComp)=="object") %
-&& (typeof(oComp.postParse)!="undefined") )
- success=processSpecialParse(oComp.postParse,UserAns);
- return success;
-}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{unordered}
-\begin{newsegment}{dljslib: Contrib - Processing Unordered Responses}
-/*
-** The ProcRespSetFormula function is now listed under the
-** setSupport option, titled 'dljslib: Support for Sets'
-*/
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{factors}
-\newcommand{\facNoPropForm}{"Factorization is not in the proper form,
- try placing the constant, if any, at the beginning of the
- factorization"}
-\newcommand{\noNotEncloseMonos}{"Do not enclose constants or
- monomials in parentheses"}
-\fi
-\begin{library@holding}{factors}
-\begin{newsegment}{dljslib: Contrib - Processing Factors as Responses}
-function ProcRespFactors(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- if (!ok2Continue) return null;
- var retn = _ProcResp(flag,CorrAns,UserAns,n,epsilon,%
-domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- if ( retn == 0 ) {
- var initialsuccess = false;
- return notifyField(initialsuccess, flag, fieldname);
- }
- var aUserAns=new Array();
- var aCorrAns=new Array();
- var aNegCorrAns=new Array();
- aUserAns=getFactorArray(UserAns);
- if (aUserAns==null) {
- eqAppAlert(\facNoPropForm, 3);
- return null;
- }
- if (aUserAns==-1) return null;
- aCorrAns=getFactorArray(CorrAns);
- if ( aCorrAns==null) {
- app.beep(); console.show();
- console.println("Author error in factorization, its not in %
-the proper form");
- return null;
- }
- for ( var i=0; i< aCorrAns.length; i++) {
- aNegCorrAns[i] = "-" + "(" + aCorrAns[i] + ")"}
- var numCorrect = 0, match=0,signflag=0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false, flag, fieldname);
- for ( var i=0; i< aCorrAns.length; i++) {
- match = 0;
- for ( var j=i; j< aUserAns.length; j++) {
- var retn = _ProcResp(flag,aCorrAns[i],aUserAns[j],%
-n,epsilon,domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- if (retn==1) {
- var temp=aUserAns[j];
- aUserAns[j]=aUserAns[i];
- aUserAns[i]=temp;
- match = match + 1;
- }
- else {
- var retn = _ProcResp(flag,aNegCorrAns[i],aUserAns[j],%
-n,epsilon,domain,indepVars,oComp);
- if ( retn == -1 ) return null;
- if ( retn == null ) return syntaxError(), null;
- if (retn==1) {
- var temp=aUserAns[j];
- aUserAns[j]=aUserAns[i];
- aUserAns[i]=temp;
- match = match + 1;
- signflag = signflag + 1;
- }
- }
- }
- numCorrect += (match) ? 1 : 0;
- }
- var success = ((numCorrect==aCorrAns.length)&&(signflag\%2==0));
- if ( success == null ) return syntaxError(), null;
- return notifyField(success, flag, fieldname);
-}
-function getFactorArray(str) {
- var aFactors=new Array();
- var i,j,front,factor,back,bInitGrped=true;
- if (str.charAt(0) != "\(" ) {
- bInitGrped=false;
- i=str.indexOf("\(");
- if ( i != -1 ) {
- aFactors.push(str.substring(0,i));
- str=str.substring(i);
- }
- }
- while ( (i=str.indexOf("\(")) != -1 ) {
- j=FindBalP(str,i,true);
- front=str.substring(0,i);
- factor=str.substring(i,j+1);
- back = str.substring(j+1);
- if ( back.charAt(0) == "\^" ) {
- getExp=back.match(/\^\d+/);
- theExp=back.substring(0,getExp[0].length);
- factor+=(theExp);
- aFactors.push(factor);
- back=back.substring(getExp[0].length);
- } else {
- aFactors.push(factor);
- }
- str=front + back;
- if ( factor.charAt(1)=="-" || factor.charAt(1)=="+" )
- factor=factor.substring(2);
- if (!/[+-]/.test(factor)) {
- eqAppAlert(\noNotEncloseMonos, 3);
- return -1;
- }
- }
- if (/[A-Za-z]/.test(str)) {
- var aExp = str.match(/[A-Za-z](\^\d+)*/);
- factor=aExp[0];
- i=aExp.index;
- front=str.substring(0,i);
- back=str.substring(i+factor.length);
- str=front+back;
- if (!bInitGrped) {
- if (aFactors[0]=="-" || aFactors[0]=="+")
- aFactors[0]=aFactors[0]+factor;
- else
- aFactors[0]="\("+aFactors[0]+"\)"+"\("+factor+"\)";
- } else {
- aFactors.push(str);
- str="";
- }
- }
- if (aFactors[0]=="-"||aFactors[0]=="+"||isFinite(aFactors[0])){
- factor=aFactors.shift();
- aFactors[0]=factor+aFactors[0];
- }
- return (str!="") ? null : aFactors
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{point}
-\newcommand{\pointErrorMsgi}{%
- "I'm looking for a point. You need to use proper point notation."}
-\newcommand{\pointErrorMsgii}{"Parentheses are not balanced."}
-\newcommand{\pointErrorMsgiii}{"Incorrect number of components.
- The answer requires "+ aCorrAns.length+" components."}
-\def\pointEmptyCompMsgiv(#1){
- "You entered nothing for the component " +(#1+1)
- +" of your answer. Please enter a component for the point."}
-\fi
-\begin{library@holding}{point}
-\begin{newsegment}{dljslib: Contrib - Processing a Point Response}
-function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- if (!ProcessIt) return null;
- ok2Continue = true;
- var i, success, truthCnt=1;
- var aScalar, scalar = 1;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace (UserAns); // sets ok2Continue
- CorrAns = stripWhiteSpace(CorrAns);
- if ( !ok2Continue ) return null;
- var isSpecResp=false;
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (CorrAns == aDlLibSpecResp[i]) {
- isSpecResp=true; break;
- }
- }
- for ( var i=0; i<aDlLibSpecResp.length; i++) {
- if (UserAns == aDlLibSpecResp[i]) {
- success = (CorrAns == UserAns);
- return notifyField(success, flag, fieldname);
- }
- }
- if (isSpecResp) return notifyField(false, flag, fieldname);
- if (!/[()]/.test(UserAns)) {
- return eqAppAlert(\pointErrorMsgi, 3), null;
- }
- if (!CkBalP(UserAns,"(",")")) {
- return eqAppAlert(\pointErrorMsgii, 3), null;
- }
- var comp = ( typeof oComp == "object" ) ?
- (typeof oComp.comp == "undefined" ) ?
- diffCompare : oComp.comp : oComp;
- CorrAns = CorrAns.replace(/[()]/g, ""); // strip off ( and )
- UserAns = UserAns.replace(/[()]/g, "");
- if ( typeof oComp == "object" &&
- typeof oComp.priorParse != "undefined" ) {
- if ( typeof oComp.priorParse == "object" ) {
- for ( var i=0; i < oComp.priorParse.length; i++) {
- var retn = oComp.priorParse[i](UserAns);
- if ( retn == null ) return null;
- }
- } else {
- var retn = oComp.priorParse(UserAns);
- if ( retn == null ) return null;
- }
- }
- aUserAns = UserAns.split(",");
- aCorrAns = CorrAns.split(",");
- if (scalar != 1)
- for (i=0; i<aUserAns.length; i++)
- aUserAns[i]=""+scalar+"*"+aUserAns[i];
- if (aCorrAns.length != aUserAns.length) {
- eqAppAlert(\pointErrorMsgiii,3);
- return null;
- }
- indepVars = TypeParameters(indepVars);
- for (i=0; i<aCorrAns.length; i++) {
- aCorrAns[i] = ParseInput(aCorrAns[i]);
- if (!ok2Continue) {
- eqAppAlert("Author Syntax error!", 3);
- return null;
- }
- aUserAns[i] = ParseInput(aUserAns[i]);
- if (aUserAns[i]==null) {
- eqAppAlert(\pointEmptyCompMsgiv(i), 3);
- return null;
- }
- if (!ok2Continue) return null;
- success=randomPointCompare (
- n,domain,indepVars,epsilon,aCorrAns[i],aUserAns[i],comp)
- if ( success == null ) {
- eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
- truthCnt *= (success) ? 1 : 0;
- }
- return notifyField(!!truthCnt, flag, fieldname);
-}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{intervals}
-\begin{newsegment}{dljslib: Contrib - Processing Interval Responses}
-function ProcRespIntervals(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
-{
- ok2Continue = true;
- if (!ProcessIt) return null;
- var fieldname = event.target.name;
- var bSubstVars=(arguments.length>7); // dps17
- var UserAns=(bSubstVars)?arguments[7]:event.value;
- UserAns = stripWhiteSpace(UserAns);
- CorrAns = stripWhiteSpace(CorrAns);
- if (!ok2Continue) return null;
- UserAns = UserAns.replace(/inf/g, "x");
- CorrAns = CorrAns.replace(/inf/g, "x");
- indepVars = "x";
- domain="[0,1]";
- var aUserAns = UserAns.split("U");
- var aCorrAns = CorrAns.split("U");
- var numCorrect = 0;
- var match = 0;
- var matchparts = 0;
- if ( aUserAns.length != aCorrAns.length )
- return notifyField(false,flag, fieldname);
- for ( var i=0; i< aCorrAns.length; i++) {
- match = 0;
- for ( var j=i; j< aUserAns.length; j++) {
- CorrInt=aCorrAns[i];
- UserInt=aUserAns[j];
- var levaUser = UserInt.charAt(0);
- var pravaUser = UserInt.charAt(UserInt.length-1);
- var stredUser = UserInt.substring(1,UserInt.length-1);
- UserInt = levaUser+","+stredUser+","+pravaUser;
- var levaCorr = CorrInt.charAt(0);
- var pravaCorr = CorrInt.charAt(CorrInt.length-1);
- var stredCorr = CorrInt.substring(1,CorrInt.length-1);
- CorrInt = levaCorr+","+stredCorr+","+pravaCorr;
- var aCorrInt = CorrInt.split(",");
- var aUserInt = UserInt.split(",");
- if ( aUserInt.length != 4 )
- return notifyField(false, flag, fieldname);
- matchparts = 0;
- if (aCorrInt[0] == aUserInt[0]) matchparts+=1;
- if (aCorrInt[3] == aUserInt[3]) matchparts+=1;
- var retn1 = _ProcResp(flag,aCorrInt[1],aUserInt[1],%
-n,epsilon,domain,indepVars,oComp);
- if (retn1 == -1 ) return null;
- if (retn1 == null) return syntaxError(), null;
- if (retn1 == 1) matchparts+=1;
- var retn2 = _ProcResp(flag,aCorrInt[2],aUserInt[2],%
-n,epsilon,domain,indepVars,oComp);
- if (retn2 == -1 ) return null;
- if (retn2 == null) return syntaxError(), null;
- if (retn2 == 1) matchparts+=1;
- if (matchparts == 4) {
- var temp=aUserAns[j];
- aUserAns[j]=aUserAns[i];
- aUserAns[i]=temp;
- match = match + 1;
- }
- }
- numCorrect += (match) ? 1 : 0;
- }
- var success = (numCorrect == aCorrAns.length);
- return notifyField(success, flag, fieldname);
-}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{indefIntegral}
-\begin{newsegment}{dljslib: Indefinite Integral Handling}
-function indefCompare(_a,_c,_v,_F,_G) {
- var eqC;
- var aAB = _a.split(",");
- var aXY = _c.split(",");
- var _V = _v.split(","); // e.g. _V[0] = "i:x"
- var _n = aXY.length
- for (var _i=0; _i< _n; _i++) {
- if (_V[_i].charAt(0) == "r" )
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + aAB[2*_i] + ";");
- else // assume type "i"
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + Math.ceil(aAB[2*_i]) + ";");
- }
- var C = 0;
- if ( app.viewerVersion >= 5)
- {
- var rtnCode = 0;
- eval("try {if (isNaN(eqC = eval(_F)-eval(_G))) rtnCode=-1;}"
- +" catch (e) { rtnCode=1; }");
- switch(rtnCode)
- {
- case 0: break;
- case 1: return null;
- case -1: return -1;
- }
- }
- else
- if (isNaN(eqC = eval(_F)-eval(_G))) return -1;
- for (var _i=0; _i< _n; _i++)
- {
- if (_V[_i].charAt(0) == "r" )
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + aXY[_i] + ";");
- else // assume type "i"
- eval ( "var "+ _V[_i].charAt(2)
- + " = " + Math.ceil(aXY[_i]) + ";");
- }
- _F = eval(_F);
- if ( app.viewerVersion >= 5)
- {
- var rtnCode = 0;
- eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
- +" catch (e) { rtnCode=1; }");
- switch(rtnCode)
- {
- case 0: break;
- case 1: return null;
- case -1: return -1;
- }
- }
- else
- if(isNaN(_G = eval(_G))) return -1;
- return Math.abs( _F - _G - eqC );
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{nodec}
-\newcommand\nodecAlertMsg{%
- "A decimal answer is not acceptable here.
- Please express your answer using fractions, square roots,
- e, log, etc."}
-\fi
-\begin{library@holding}{nodec}
-\begin{newsegment}{dljslib: Contrib - No Decimals}
-function nodec(UserAns)
-{
- var dot = /[\.\aebdecimalpoint]/;
- if (dot.test(UserAns)) {
- eqAppAlert(\nodecAlertMsg,3);
- return null;
- } else return true;
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{noBinFac}
-\newcommand\noBinFactBinCoeffAlertMsg{%
- "You may not use this notation here.
- Please evaluate the binomial coefficient.
- You may present your answer as a product rather
- than calculating a very large number."}
-\newcommand\noBinFactPermAlertMsg{%
- "You may not use this notation here.
- Please evaluate the permutation.
- You may present your answer as a product rather
- than calculating a very large number."}
-\newcommand\noBinFactFactAlertMsg{%
- "You may not use this notation here.
- Please evaluate the factorial.
- You may present your answer as a product rather
- than calculating a very large number."}
-\fi
-\begin{library@holding}{noBinFac}
-\begin{newsegment}{dljslib: Contrib - No Binomial Coefficients Allowed}
-aReFact = new Array(
- /(?=\()?(\d+)(?=\))?!/,
- /(?=\[)?(\d+)(?=\])?!/,
- /(?=\{)?(\d+)(?=\})?!/
-);
-function noBinFac(UserAns)
-{
- var bad = /(C\()/;
- if (bad.test(UserAns)) {
- eqAppAlert(\noBinFactBinCoeffAlertMsg,3);
- return null;
- }
- bad = /(P\()/;
- if (bad.test(UserAns)) {
- eqAppAlert(\noBinFactPermAlertMsg,3);
- return null;
- }
- for ( var i=0; i<aReFact.length; i++) {
- if (aReFact[i].test(UserAns)) {
- eqAppAlert(\noBinFactFactAlertMsg,3);
- return null;
- }
- }
- bad = /(fact)/;
- if (bad.test(UserAns)) {
- eqAppAlert(\noBinFactFactAlertMsg,3);
- return null;
- }
- return true
-}
-\end{newsegment}
-\end{library@holding}
-\@ifcheckedout{limitArith}
-\newcommand{\allowWrngNormSciNotn}{\def\allowWrngNSN{true}}
-\def\allowWrngNSN{false}
-\newcommand{\DecimalsOnlyErrorMsg}{%
- "Enter only an integer, e.g., 17, or a decimal number, e.g. 12.4.
- Using arithmetic operations or built in function is not acceptable
- for this problem."}
-\newcommand{\NoProductsErrorMsg}{%
- "Multiplication is not allowed for this problem."}
-\newcommand{\NoDivisionErrorMsg}{%
- "Division is not allowed for this problem."}
-\newcommand{\NoAddOrSubErrorMsg}{%
- "Neither addition nor subtraction is allowed for this problem."}
-\newcommand{\NoExpAllowedErrorMsg}{%
- "The use of exponents is not allowed for this problem."}
-\newcommand{\NoTrigAllowedErrorMsg}{%
- "The use of trig functions in this problem is not allowed."}
-\newcommand{\NoPiAllowedErrorMsg}{%
- "The use of PI or pi is not allowed in this problem."}
-\newcommand{\NoTrigLogAllowedErrorMsg}{%
- "The use of trig and log functions is not allowed
- in this problem."}
-\newcommand{\sciNotSyntaxError}{"Enter the answer in
- scientific notation."}
-\newcommand{\sciNotNormalForm}{"The scientific notation entered
- is not in normalized form."}
-\newcommand{\NoNegExpMsg}{"No negative exponents permitted,
- keep working!"}
-\fi
-\begin{library@holding}{limitArith}
-\begin{newsegment}{dljslib: Limit Arithmetic and Built in Functions}
-function DecimalsOnly(UserAns) {
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- if( !isFinite( UserAns ) ) {
- eqAppAlert(\DecimalsOnlyErrorMsg,3);
- return null;
- }
- return true;
-}
-function NoProducts (UserAns) {
- // Requires the ImplMulti option of dljslib
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- UserAns = Ck4Products(UserAns);
- if ( /\*/.test( UserAns ) )
- return eqAppAlert(\NoProductsErrorMsg,3), null;
- return true;
-}
-function NoDivision (UserAns) {
- if ( /\//.test( UserAns) )
- return eqAppAlert(\NoDivisionErrorMsg,3), null;
- return true;
-}
-function NoAddOrSub (UserAns) {
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- UserAns=ChngAllGrpsToParens(UserAns);
- var result;
- var re = /.[+-]/g;
- re.lastIndex = 0;
- while ( (result = re.exec( UserAns )) != null ) {
- if ( result[0].charAt(0) != "\(" )
- return eqAppAlert(\NoAddOrSubErrorMsg,3), null;
- }
- return true;
-}
-function NoArithAllowed (UserAns) {
- var aNoArithmetic = new Array ( NoAddOrSub, NoProducts,
- NoDivision, NoExpAllowed );
- for ( var i = 0; i < aNoArithmetic.length; i++ )
- if ( (retn = aNoArithmetic[i](UserAns)) == null ) return null;
- return true;
-}
-function NoExpAllowed (UserAns) {
- // Requires the ImplMulti option of dljslib
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- if ( /\^/.test( UserAns ) || /pow/.test( UserAns ) )
- return eqAppAlert(\NoExpAllowedErrorMsg,3), null;
- return true;
-}
-function NoTrigAllowed (UserAns)
-{
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- var aTrigfuncs = new Array
- ( "acos","asin","atan","cos", "sin", "tan","sec","csc","cot",
- "arcsin", "arccos", "arctan"
- );
- var re, regexp;
- re = /[a-zA-Z]{2,}/g;
- aF = UserAns.match(re);
- if ( aF != null ) {
- for (var i=0; i < aF.length; i++)
- {
- for(var j=0; j < aTrigfuncs.length; j++) {
- if ( aF[i].indexOf(aTrigfuncs[j]) != -1 )
- return eqAppAlert(\NoTrigAllowedErrorMsg,3), null;
- }
- }
- }
- return true;
-}
-function NoPiAllowed(UserAns)
-{
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- var re=/PI|pi/;
- if ( re.test(UserAns) )
- return eqAppAlert(\NoPiAllowedErrorMsg,3), null;
- return true;
-}
-function NoTrigLogAllowed (UserAns)
-{
- UserAns = stripWhiteSpace(UserAns);
- if ( !ok2Continue ) return null;
- var aTrigfuncs = new Array
- ( "acos","asin","atan","cos", "sin",
- "tan","sec","csc","cot", "arcsin", "arccos", "arctan",
- "logc","log", "ln"
- );
- var re, regexp;
- re = /[a-zA-Z]{2,}/g;
- aF = UserAns.match(re);
- if ( aF != null ) {
- for (var i=0; i < aF.length; i++)
- {
- for(var j=0; j < aTrigfuncs.length; j++) {
- if ( aF[i].indexOf(aTrigfuncs[j]) != -1 )
- return eqAppAlert(\NoTrigLogAllowedErrorMsg,3), null;
- }
- }
- }
- return true;
-}
-var bAllowWrngNormSciNotn=false;
-var bItsNormSciNot=false;
-function SciNotNoNotify(UserAns) {
- bAllowWrngNormSciNotn=true;
- var rtn=SciNotResp(UserAns);
- return rtn;
-}
-function SciNotResp(UserAns) {
- bItsNormSciNot=false;
- var _sciNotation, _a, _b;
- _sciNotation = /^[+-]*(\d*)*(\.\d*)*E[+-]*\d+$/;
- UserAns=stripWhiteSpace(UserAns);
- if ( (_a=_sciNotation.exec(UserAns)) !=null) {
- if (isNaN(_a[1])) {
- if (bAllowWrngNormSciNotn)
- return true;
- else
- return eqAppAlert(\sciNotNormalForm,3), null;
- }
- if (isNaN(_a[2])) _a[2]=0;
- _b = Math.abs(Number(_a[1])+Number(_a[2]));
- if ( _b < 1 || _b >= 10 ) {
- if (bAllowWrngNormSciNotn)
- return true;
- else
- return eqAppAlert(\sciNotNormalForm,3), null;
- }
- else {
- bItsNormSciNot=true;
- return true
- }
- } else
- return eqAppAlert(\sciNotSyntaxError,3), null;
-}
-function sciNotResp(UserAns) {return SciNotResp(UserAns);}
-function postSciNotResp(UserAns) {
- bAllowWrngNormSciNotn=false;
- return bItsNormSciNot;
-}
-function NoNegExp (UserAns) {
- var re=/(\^|\^\()+-/g;
- UserAns=ChngAllGrpsToParens(UserAns);
- if (re.test(UserAns))
- return eqAppAlert(\NoNegExpMsg,3), null;
- return true;
-}
-function noNegExp(UserAns){return NoNegExp(UserAns)}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{combinatorics}
-\begin{newsegment}{dljslib: Contrib - Combinatorial Functions}
-function ch(n,r)
-{
- if ((n==r)||(r==0)) return(1);
- if ((n==(r+1))||(r==1)) return(n);
- if (r > (n-r))
- var coeff = factorialCancel(
- expandFactorial(r+1,n),expandFactorial(1,n-r));
- else
- var coeff = factorialCancel(
- expandFactorial(n-r+1,n),expandFactorial(1,r));
- return (eval(coeff));
-}
-function perm(n,r)
-{
- if (r==0) return(1);
- else
- var coeff = factorialCancel(
- expandFactorial(n-r+1,n),expandFactorial(1,n-r));
- return (eval(coeff));
-}
-function expandFactorial(lo,hi)
-{
- var f = lo;
- for (var i=lo+1;i<=hi;i++) f = i+"*"+f;
- return f;
-}
-function factorialCancel(top,bot)
-{
- var num = top.split("*");
- var denom = bot.split("*");
- var len = denom.length;
- var temp = 0;
- var i, j;
- for (i=0;i<=len-1;i++) {
- for (j=0;j<=len-1;j++) {
- temp = num[i]/denom[j];
- if ((temp - Math.round(temp)) == 0) {
- num[i] = temp;
- denom[j] = 1;
- }
- }
- }
- var t = denom.join("");
- var reg = /[^1]/;
- if (reg.test(t)) {
- temp = factorialCancel(denom.join("*"),num.join("*"));
- } else {
- temp = num.join("*");
- }
- return (temp);
-}
-function fact(num)
-{
- var tot = 1;
- for (var r=1; r <= num; r++) tot *= r;
- return(tot);
-}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{ImplMulti}
-\begin{newsegment}{dljslib: Implied Multiplication}
-function Ck4Products(UserInput)
-{
- var re, aR;
- for (var i=0; i<JSf.length; i++)
- {
- re = new RegExp("("+JSf[i]+")(\\\()","g");
- UserInput = UserInput.replace(re, "\\$1@$2");
- re = new RegExp("([\\w\\\)])(\\"+JSf[i]+")(@\\\()","g");
- UserInput = UserInput.replace(re, "$1*$2$3");
- }
- for (var i=0; i<JSc.length; i++)
- {
- re = new RegExp("("+JSc[i]+")","g");
- if ( JSc[i] != "E" ) {
- UserInput = UserInput.replace(re, "\\$1@");
- re = new RegExp("([\\w\\\)])(\\"+JSc[i]+")(@)","g");
- }
- }
- UserInput = UserInput.replace(
- /([\d\)])([A-DF-Za-z\(\\])/g, "$1*$2");
- UserInput = UserInput.replace(/(\))(\d)/g, "$1*$2");
- UserInput = UserInput.replace(/([A-Za-z])([\d\(\\])/g, "$1*$2");
- UserInput = UserInput.replace(/(@)([A-Za-z\d])/g, "$1*$2");
- UserInput = UserInput.replace(/(\\)([A-Za-z]{1,})(@)/g, "$2");
- re = /[A-Za-z]{1,}/g;
- while ( (aR = re.exec(UserInput)) != null)
- {
- for (var i=0; i<JSf.length; i++) if ( aR[0] == JSf[i]) break;
- if ( i < JSf.length ) continue;
- for (var i=0; i<JSc.length; i++) if ( aR[0] == JSc[i]) break;
- if ( i < JSc.length ) continue;
- aR[0] = aR[0].replace(/([A-Za-z])\B/g,"$1*");
- UserInput = UserInput.substring(0,aR.index)
- +aR[0]+UserInput.substring(re.lastIndex);
- }
- return UserInput;
-}
-function Ck4Exponents(UserInput)
-{
- var re, regexp, aP, RightP;
- for (var i=0; (i<JSf.length) && (ok2Continue); i++)
- {
- re = new RegExp(JSf[i]+"\\^");
- while ( re.test(UserInput) && (ok2Continue) )
- {
- regexp = new RegExp(JSf[i]+"\\^\\\(", "g");
- if ( (aP = regexp.exec(UserInput)) != null ) {
- // forward search
- RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
- var offsetExp = RightP-regexp.lastIndex;
- regexp = new RegExp(
- JSf[i]+"\\^\\(.{"+offsetExp+"}\\)\\\(", "g");
- regexp.lastIndex=0;
- if ( (aP = regexp.exec(UserInput)) != null ) {
- // forward search
- RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
- var offsetArg = RightP - regexp.lastIndex;
- regexp = new RegExp("("+JSf[i]
- +")\\^\\((.{"+offsetExp+"})\\)\\((.{"
- +offsetArg+"})\\)");
- regexp.lastIndex=0;
- if (regexp.test(UserInput))
- UserInput=UserInput.replace(
- regexp,"(pow($1($3),$2))");
- else ok2Continue=false;
- continue;
- }
- }
- regexp = new RegExp(JSf[i]
- +"\\^([a-zA-Z]|[+-]?\\d+\\.?\\d*|[+-]?\\d*\\.?\\d+)"
- +"\\\(","g");
- if ( (aP = regexp.exec(UserInput)) != null ) {
- // forward search
- RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
- regexp = new RegExp("("
- +JSf[i]+")\\^([a-zA-Z]|[+-]?\\d+"
- +"\\.?\\d*|[+-]?\\d*\\.?\\d+)\\((.{"
- +eval(RightP-regexp.lastIndex)+"})\\)");
- regexp.lastIndex=0;
- if (regexp.test(UserInput))
- UserInput=UserInput.replace(
- regexp,"(pow($1($3),$2))");
- else ok2Continue=false;
- }
- else ok2Continue=false;
- }
- }
- for (var i=0; (i < JSc.length) && (ok2Continue); i++)
- {
- re = new RegExp(JSc[i]+"\\^", "g");
- while ( re.test(UserInput) && (ok2Continue) )
- {
- re.lastIndex = 0;
- aR = re.exec(UserInput);
- if (UserInput.charAt(re.lastIndex)=='\(') {
- // forward search
- RightP=FindBalP(UserInput,re.lastIndex,1);
- var offsetExp = RightP - re.lastIndex - 1;
- re.lastIndex=0;
- regexp = new RegExp("("+JSc[i]
- +")\\^\\((.{"+offsetExp+"})\\)");
- if ( regexp.test(UserInput) )
- UserInput = UserInput.replace(
- regexp, "(pow($1,$2))");
- else ok2Continue = false;
- }
- else
- {
- re.lastIndex=0;
- regexp = new RegExp("("+JSc[i]
- +")\\^([a-zA-Z]|[+-]?\\d+\\.?\\d*|[+-]?\\d*\\.?\\d+)");
- if (regexp.test(UserInput))
- UserInput = UserInput.replace(
- regexp, "(pow($1,$2))");
- else ok2Continue = false;
- }
- }
- }
- return UserInput;
-}
-\end{newsegment}
-\end{library@holding}
-\begin{library@holding}{dljslib}
-\end{insDLJS*}
-\end{library@holding}
-\immediate\closeout\dljslib@verbatim@out
-\advance\count17 by -1
-\input{dljslib.ljs}
-\endinput
-%%
-%% End of file `dljslib.sty'.
+%%
+%% This is file `dljslib.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% dljslib.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% dljsLib.sty package, %%
+%% Copyright (C) 2001-2018 D. P. Story %%
+%% dpstory@uakron.edu %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Projet Public License %%
+%% 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{dljslib}
+ [2017/08/11 v2.1 Manage a Library of Document Level JavaScripts (dps)]
+\newcommand\dljsRegister[2][n]
+ {\expandafter\let\csname checkout@#2\endcsname=#1}
+\def\@ifcheckedout#1{\expandafter\if\csname checkout@#1\endcsname y}
+\newcommand\DeclareAndRegister[1]
+ {\DeclareOption{#1}{\dljsRegister[y]{#1}}\dljsRegister{#1}}
+\dljsRegister[y]{dljslib}
+\DeclareAndRegister{equations}
+\DeclareAndRegister{vectors}
+\DeclareAndRegister{indefIntegral}
+\DeclareAndRegister{ImplMulti}
+\DeclareAndRegister{nodec}
+\DeclareAndRegister{noBinFac}
+\DeclareAndRegister{limitArith}
+\DeclareAndRegister{combinatorics}
+\DeclareAndRegister{setSupport}
+\DeclareOption{unordered}{\PackageWarning{dljslib}
+ {The `unordered' option is now combined with the\MessageBreak
+ `setSupport' option, will use the `setSupport' option\MessageBreak
+ instead}\ExecuteOptions{setSupport}}
+\DeclareAndRegister{complex}
+\DeclareAndRegister{satisfyEq}
+\DeclareAndRegister{useGermanNums}
+\DeclareAndRegister{factors}
+\DeclareAndRegister{point}
+\DeclareAndRegister{intervals}
+\def\includeOptions#1{\@for\@option:=#1\do{\dljsRegister[y]{\@option}}}
+\InputIfFileExists{libcusopt.opt}{}{}
+\ProcessOptions
+\RequirePackage{exerquiz}[2017/08/04]
+\RequirePackage{insdljs}
+\def\setdecimalpoint#1{\def\aebdecimalpoint{\eqbs#1}}
+\setdecimalpoint{.}
+\newwrite\dljslib@verbatim@out
+\immediate\openout\dljslib@verbatim@out=dljslib.ljs
+\newenvironment{library@holding}[1]
+{%
+ \expandafter\ifx\csname checkout@#1\endcsname y%
+ \let\js@verbatim@out\dljslib@verbatim@out
+ \let\dljs@verbatim\js@verbatimwrite
+ \let\enddljs@verbatim\endjs@verbatimwrite\else
+ \let\dljs@verbatim\comment
+ \let\enddljs@verbatim\endcomment\fi\dljs@verbatim
+}{\enddljs@verbatim}
+\begin{library@holding}{dljslib}
+\begin{insDLJS*}[dljslib]{dljslib}
+\begin{newsegment}{dljslib: AcroTeX DLJS Library}
+/*
+ The Document Level JavaScript Library
+ D. P. Story copyright 2001-\the\year
+*/
+var dljslib = true;
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{equations}
+\newcommand\equationsAlertMsg{"An equation is expected"}
+\fi
+\begin{library@holding}{equations}
+\begin{newsegment}{dljslib: Equation Handling}
+function ProcRespEq(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ if (!ProcessIt) return null;
+ ok2Continue = true;
+ var success;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ var CorrExpressions = CorrAns.split("=");
+ var zCorrAns = "("+CorrExpressions[0]+")-("+CorrExpressions[1] +")";
+ UserAns = stripWhiteSpace (UserAns);
+ if(!ok2Continue ) return null;
+ if (!/[=]/.test(UserAns)) {
+ eqAppAlert(\equationsAlertMsg, 3);
+ return null;
+ }
+ var reComma=/,/;
+ if ( reComma.test(UserAns) ) {
+ eqAppAlert(\eqSyntaxErrorComma,3);
+ return null;
+ }
+ var UserExpressions = UserAns.split("=");
+ var zUserAns = "("+UserExpressions[0]+")-("+UserExpressions[1] +")";
+
+ var comp = ( typeof oComp == "object" ) ?
+ (typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp : oComp;
+ if ( typeof oComp == "object"
+ && typeof oComp.priorParse != "undefined" ) {
+ if ( typeof oComp.priorParse == "object" ) {
+ for ( var i=0; i < oComp.priorParse.length; i++) {
+ var retn = oComp.priorParse[i](zUserAns);
+ if ( retn == null ) return null;
+ }
+ } else {
+ var retn = oComp.priorParse(zUserAns);
+ if ( retn == null ) return null;
+ }
+ }
+ zCorrAns = ParseInput(zCorrAns);
+ if (!ok2Continue) {
+ eqAppAlert("Syntax error in author's answer! Check console.", 3);
+ console.println("Syntax Error: " + CorrAns);
+ return null;
+ }
+ zUserAns = ParseInput(zUserAns);
+ if (!ok2Continue) return null;
+ indepVars = TypeParameters(indepVars);
+ var lambda = getNonZeroRatio (domain, indepVars, zCorrAns, zUserAns);
+ if ( lambda == null ) {
+ eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; };
+ if ( !ok2Continue ) return notifyField(false, flag, fieldname);
+ zCorrAns = lambda + "*(" + zCorrAns + ")";
+ success=randomPointCompare (n,domain,indepVars,epsilon,
+ zCorrAns,zUserAns,comp)
+ if ( success == null ) { eqAppAlert(\eqSyntaxErrorUndefVar,3);
+ return null; }
+ return notifyField(success, flag, fieldname);
+}
+function getNonZeroRatio (_a, _v, _F, _G)
+{
+ var _i, _j;
+ var aXY = new Array();
+ _a = _a.replace(/[\[\]\s]/g, "");
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = _V.length;
+ var aIntervals = _a.split("&");
+ var aInterval = aIntervals[0].split("x");
+ var endpoints = aInterval[0].split(",");
+ for (_j=0; _j < 4; _j++) {
+ for (_i = 0; _i < _n; _i++) {
+ var endpoints = aInterval[_i].split(",");
+ aXY[_i] = endpoints[0]-0
+ +(endpoints[1]-endpoints[0])*Math.random();
+\db console.println("aXY["+_i+"] = " + aXY[_i]);\db%
+ }
+ for (var _i = 0; _i< _n; _i++) {
+ if (_V[_i].charAt(0) == "r" )
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + aXY[_i] + ";");
+ else // assume type "i"
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + Math.ceil(aXY[_i]) + ";");
+ }
+ _F = eval(_F);
+ if ( app.viewerVersion >= 5)
+ {
+ var rtnCode = 0;
+ eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
+ +"catch (e) { rtnCode=1; }");
+ switch(rtnCode) {
+ case 0: break;
+ case 1: return null;
+ case -1: ok2Continue=false;
+ return -1;
+ }
+ }
+ else
+ if(isNaN(_G=eval(_G))) {ok2Continue=false;return -1;}
+ if ( _F != 0 && _G != 0 ) return _G/_F;
+ }
+ console.println( "Can't find a non zero scalar");
+ return null;
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{vectors}
+\newcommand\vectorsErrorMsgi{"I'm looking for a vector.
+ You need to use proper vector notation, try using
+ angle brackets <....>."}
+\newcommand\vectorsErrorMsgii{"Angle brackets are not balanced.
+ Check the expression you typed in."}
+\newcommand\vectorsErrorMsgiii{"Incorrect number of components.
+ The answer requires " + aCorrAns.length+" components."}
+\def\vectorEmptyCompMsgiv(#1){"You entered nothing for the
+ component " +(#1+1) +" of your answer. Please enter
+ a component for the vector."}
+\fi
+\begin{library@holding}{vectors}
+\begin{newsegment}{dljslib: Vector Handling}
+function ProcVec (flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ if (!ProcessIt) return null;
+ ok2Continue = true;
+ var i, success, truthCnt=1;
+ var aScalar, scalar = 1;
+ var fieldname = event.target.name;
+ var UserAns = event.value;
+ UserAns = stripWhiteSpace(UserAns); // sets ok2Continue
+ CorrAns = stripWhiteSpace(CorrAns);
+ if ( !ok2Continue ) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ if (!/[<>]/.test(UserAns)) {
+ eqAppAlert(\vectorsErrorMsgi, 3);
+ return null;
+ }
+ if (!CkBalP(UserAns,"<",">")) {
+ eqAppAlert(\vectorsErrorMsgii, 3);
+ return null;
+ }
+ // see if there is a scalar multiple to the left of '<'
+ aScalar = UserAns.match(/(.*)(\*)(\s*<)/);
+ if (aScalar != null) {
+ scalar = aScalar[1];
+ UserAns = UserAns.slice(aScalar.index + aScalar[0].length-1)
+ }
+ var comp = ( typeof oComp == "object" ) ?
+ (typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp : oComp;
+ CorrAns = CorrAns.replace(/[<>]/g, ""); // strip of < and >
+ UserAns = UserAns.replace(/[<>]/g, "");
+ if ( typeof oComp == "object" && %
+typeof oComp.priorParse != "undefined" ) {
+ var retn=processSpecialParse(oComp.priorParse,UserAns);
+ if (retn==null) return null;
+ }
+ aUserAns = UserAns.split(",");
+ aCorrAns = CorrAns.split(",");
+ if (scalar != 1)
+ for (i=0; i<aUserAns.length; i++)
+ aUserAns[i]=""+scalar+"*"+aUserAns[i];
+ if (aCorrAns.length != aUserAns.length) {
+ eqAppAlert(\vectorsErrorMsgiii,3);
+ return null;
+ }
+ // convert to new format, if needed
+ indepVars = TypeParameters(indepVars);
+ for (i=0; i<aCorrAns.length; i++) {
+ aCorrAns[i] = ParseInput(aCorrAns[i]);
+ if (!ok2Continue) {
+ eqAppAlert("Author Syntax error!", 3);
+ return null;
+ }
+ aUserAns[i] = ParseInput(aUserAns[i]);
+ if (aUserAns[i]==null) {
+ eqAppAlert(\vectorEmptyCompMsgiv(i), 3);
+ return null;
+ }
+ if (!ok2Continue) return null;
+ success=randomPointCompare (n,domain,indepVars,epsilon,
+ aCorrAns[i],aUserAns[i],comp)
+ if ( success == null ) {
+ eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
+ truthCnt *= (success) ? 1 : 0;
+ }
+ return notifyField(!!truthCnt, flag, fieldname);
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{setSupport}
+\newcommand{\noBracesInAnsMsg}{"Do not insert braces in your answer.
+ Please remove the braces (\{\})."}
+\newcommand{\noBracketsInAnsMsg}{"Do not insert braces in your answer.
+ Please remove the angle brackets (<>)."}
+\fi
+\begin{library@holding}{setSupport}
+\begin{newsegment}{dljslib: Support for Sets}
+function ProcRespSetNum(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ var retn=ck4Braces(UserAns);
+ if (retn==null) return null;
+ var aUserAns = UserAns.split(",");
+ for ( var i=0; i < aUserAns.length; i++) {
+ try {
+ if (isNaN(eval(aUserAns[i]))) return syntaxError(), null;
+ } catch(e) { return syntaxError(), null; }
+ }
+ var aUserAns = aUserAns.sort(
+ function(a,b) { return eval(a) - eval(b);} );
+ var aCorrAns = CorrAns.split(",").sort(
+ function(a,b) { return eval(a) - eval(b);} );
+ var numCorrect = 0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ for ( var i=0; i< aCorrAns.length; i++) {
+ var retn = _ProcResp(%
+flag,aCorrAns[i],aUserAns[i],n,epsilon,domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ numCorrect += (retn) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+var ok2format=true;
+function formatAsSet() {
+ if (ok2format&&event.value.replace(/\\s/g,"") != "")
+ event.value = "{ " + event.value + " }";
+}
+function ck4Braces (UserAns) {
+ ok2format=true;
+ if (/^\{/.test(UserAns) || /\}$/.test(UserAns) ) {
+ ok2format=false;
+ return eqAppAlert(\noBracesInAnsMsg,3), null;
+ }
+ else return true;
+}
+function ck4AngleBrackets (UserAns) {
+ ok2format=true;
+ if (/^</.test(UserAns) || />$/.test(UserAns) ) {
+ ok2format=false;
+ return eqAppAlert(\noBracketsInAnsMsg,3), null;
+ }
+ else return true;
+}
+function formatAsVector() {
+ if (ok2format&&event.value.replace(/\\s/g,"") != "") {
+ event.value = "< " + event.value + " >";
+ }
+}
+function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ var retn=ck4Braces(UserAns);
+ if (retn==null) return null;
+ var aUserAns = UserAns.split(",");
+ var _V = indepVars.split(",");
+ for ( var _i=0; _i < _V.length; _i++) {
+ eval ( "var "+ _V[_i] + " = \"" + _i + "\";");
+ }
+ for ( var _i=0; _i < aUserAns.length; _i++) {
+ try {
+ if (isNaN(eval(aUserAns[_i]))) return syntaxError(), null;
+ aUserAns[_i] = eval(aUserAns[_i]);
+ } catch(e) { return syntaxError(), null; }
+ }
+ var aCorrAns = CorrAns.split(",");
+ for ( var _i=0; _i < aCorrAns.length; _i++) {
+ try {
+ if (isNaN(eval(aCorrAns[_i])))
+ return eqAppAlert(%
+"Author error, recheck your code",3), null;
+ aCorrAns[_i] = eval(aCorrAns[_i]);
+ } catch(e) { return eqAppAlert(
+ "Author error, recheck your code",3), null; }
+ }
+ var aUserAns = aUserAns.sort(
+ function(a,b) { return eval(a) - eval(b);} );
+ var aCorrAns = aCorrAns.sort(
+ function(a,b) { return eval(a) - eval(b);} );
+ var numCorrect = 0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ for ( var _i=0; _i< aCorrAns.length; _i++) {
+ var retn = _ProcResp(%
+flag,aCorrAns[_i],aUserAns[_i],n,epsilon,"[0,1]","i:_x",oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ numCorrect += (retn) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespListFormula(flag,CorrAns,n,epsilon,domain,%
+indepVars,oComp) {
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ var retn=ck4AngleBrackets(UserAns);
+ if (retn==null) return null;
+ UserAns = UserAns.replace(/,+/g, ",");
+ UserAns = UserAns.replace(/,$/, "");
+ UserAns = UserAns.replace(/^,/, "");
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var aUserAns = UserAns.split(",");
+ var aCorrAns = CorrAns.split(",");
+ var numCorrect = 0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ for ( var i=0; i< aCorrAns.length; i++) {
+ var retn =_ProcResp(flag,aCorrAns[i],aUserAns[i],%
+n,epsilon,domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ numCorrect += (retn) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespSetFormula(flag,CorrAns,n,epsilon,%
+domain,indepVars,oComp) {
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ var retn=ck4Braces(UserAns);
+ if (retn==null) return null;
+ UserAns = UserAns.replace(/,+/g, ",");
+ UserAns = UserAns.replace(/,$/, "");
+ UserAns = UserAns.replace(/^,/, "");
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var aUserAns = UserAns.split(",");
+ var aCorrAns = CorrAns.split(",");
+ var numCorrect = 0, match = 0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ for ( var i=0; i<aCorrAns.length; i++) {
+ match = 0;
+ for ( var j=i; j< aUserAns.length; j++) {
+ var retn = _ProcResp(%
+flag,aCorrAns[i],aUserAns[j],n,epsilon,domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ if (retn==1) {
+ var temp=aUserAns[j];
+ aUserAns[j]=aUserAns[i];
+ aUserAns[i]=temp;
+ match = match + 1;
+ }
+ }
+ numCorrect += (match) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{complex}
+\newcommand{\complexPowerAlertMsg}{%
+ "Powers of i (for example, i^2, i^3) are not supported,
+ replace powers of i with their complex equivalents."}
+\newcommand{\complexCisAlertMsg}{%
+ "The cis function does not support exponents. Write,
+ for example, cis^3(x) as cis(3*x), instead."}
+\newcommand{\alertNotComplexMsg}{%
+ "The expression is not in the form of a complex
+ number, a+bi"}
+\def\emptyCompComplexMsg(#1){%
+ "You entered nothing for the component "
+ +(#1+1)+" of your answer. Please enter a complex number."}
+\fi
+\begin{library@holding}{complex}
+\begin{newsegment}{dljslib: Support for Complex Numbers}
+function cis(x,i) { return Math.cos(x) + i*Math.sin(x); }
+JSfCustom.push("cis");
+JSf = JSf.concat(JSfBuiltIn, JSfCustom);
+function ProcRespComplex(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ if (!ProcessIt) return null;
+ ok2Continue = true;
+ var i, success;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ CorrAns = stripWhiteSpace (CorrAns);
+ UserAns = stripWhiteSpace (UserAns); // sets ok2Continue
+ if ( !ok2Continue ) return null;
+ indepVars+="i";
+ domain+="x[0,1]";
+ if (/(\b|[^a-zA-Z])i\^/.test(UserAns)) {
+ eqAppAlert(\complexPowerAlertMsg,3);
+ return null;
+ }
+ if ( /cis\^/.test(UserAns) ) {
+ eqAppAlert(\complexCisAlertMsg,3);
+ return null;
+ }
+ var reComma=/,/;
+ if ( reComma.test(UserAns) ) {
+ eqAppAlert(\eqSyntaxErrorComma,3);
+ return null;
+ }
+ UserAns=changeArgs4Cis(UserAns);
+ CorrAns=changeArgs4Cis(CorrAns);
+ var aMatch = UserAns.match(/(\b|[^a-zA-Z])i/g);
+ if ( aMatch != null && aMatch.length > 1) {
+ eqAppAlert(\alertNotComplexMsg, 3);
+ return null;
+ }
+ var comp = ( typeof oComp == "object" ) ?
+ (typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp : oComp;
+ if ( typeof oComp == "object" &&
+ typeof oComp.priorParse != "undefined" ) {
+ if ( typeof oComp.priorParse == "object" ) {
+ for ( var i=0; i < oComp.priorParse.length; i++) {
+ var retn = oComp.priorParse[i](UserAns);
+ if ( retn == null ) return null;
+ }
+ } else {
+ var retn = oComp.priorParse(UserAns);
+ if ( retn == null ) return null;
+ }
+ }
+ UserAns = ParseInput(UserAns);
+ CorrAns = ParseInput(CorrAns);
+ indepVars = TypeParameters(indepVars);
+ if (!ok2Continue) return null;
+ success=randomPointCompare(
+ n,domain,indepVars,epsilon,CorrAns,UserAns,comp);
+ if ( success == null ) { eqAppAlert(%
+\eqSyntaxErrorUndefVar,3); return null; }
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespListComplex(flag,CorrAns,n,epsilon,%
+domain,indepVars,oComp) {
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns); // sets ok2Continue
+ if ( !ok2Continue ) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ UserAns = UserAns.replace(/,+/g, ",");
+ UserAns = UserAns.replace(/,$/, "");
+ UserAns = UserAns.replace(/^,/, "");
+ var aUserAns = UserAns.split(",");
+ var aCorrAns = CorrAns.split(",");
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ var numCorrect = 0;
+ var match = 0;
+ for ( var i=0; i< aCorrAns.length; i++) {
+ match = 0;
+ var retn = ProcRespComplex(%
+flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[i]);
+ if ( retn == null ) return null;
+ numCorrect += (retn) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespSetComplex(flag,CorrAns,n,epsilon,%
+domain,indepVars,oComp) {
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns); // sets ok2Continue
+ if ( !ok2Continue ) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ UserAns = UserAns.replace(/,+/g, ",");
+ UserAns = UserAns.replace(/,$/, "");
+ UserAns = UserAns.replace(/^,/, "");
+ event.value = UserAns;
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ var aUserAns = UserAns.split(",");
+ var aCorrAns = CorrAns.split(",");
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ var numCorrect = 0;
+ var match = 0;
+ for ( var i=0; i< aCorrAns.length; i++) {
+ match = 0;
+ for ( var j=i; j< aUserAns.length; j++) {
+ var retn = ProcRespComplex(%
+flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[j]);
+ if ( retn == null ) return null;
+ if (retn==1) {
+ var temp=aUserAns[j];
+ aUserAns[j]=aUserAns[i];
+ aUserAns[i]=temp;
+ match = match + 1;
+ }
+ }
+ numCorrect += (match) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+function changeArgs4Cis(str) {
+ var re =/cis\(/g;
+ while ( (aP=re.exec(str) ) != null ) {
+ var LeftP=re.lastIndex;
+ var RightP=FindBalP(str,re.lastIndex,1);
+ str = str.substring(0,RightP)
+ +",i"+str.substring(RightP);
+ }
+ return str;
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{satisfyEq}
+\newcommand{\notifyWrongNumEntries}{\def\satisfyEqNotify{true}}
+\def\satisfyEqNotify{false}
+\newcommand{\wrongNumEntriesMsg}{"You don't have the correct number
+ of entries in your coordinate points. Expecting "+_n
+ +" entries per point." }
+\newcommand{\eqSyntaxErrorNoParens}{"Syntax Error: Enter the point
+ using parentheses, for example (1,2) or (1,2,3), as applicable."}
+\newcommand{\eqNonzeroEntries}{"Syntax Error: All entries are required
+ to be nonzero, try again."}
+\newcommand{\eqTooManyEntries}{"You've entered more points than
+ requested, enter only "+l+" points."}
+\newcommand{\eqTooFewEntries}{"You've entered fewer points than
+ requested, enter only "+l+" points."}
+\newcommand{\eqDuplEntries}{"One or more points are the same,
+ provide "+l+" distinct points."}
+\fi
+\begin{library@holding}{satisfyEq}
+\begin{newsegment}
+ {dljslib: Support for n-tuple input to Satisfy an Equation}
+var bNotifyWrngNumEntries=\satisfyEqNotify;
+function ProcRespEvalEq(flag,CorrAns,n,epsilon,domain,indepVars,oComp){
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
+ var retn=_ProcRespEvalEq(true,flag,CorrAns,n,epsilon,%
+indepVars,UserAns);
+ return retn;
+}
+function ProcRespEvalEqNonZero(flag,CorrAns,n,epsilon,%
+domain,indepVars,oComp) {
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
+ var retn=_ProcRespEvalEq(false,flag,CorrAns,n,epsilon,
+indepVars,UserAns);
+ return retn;
+}
+function _ProcRespEvalEq(allowzero,flag,CorrAns,n,epsilon,indepVars)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>6); // dps17
+ var UserAns=(bSubstVars)?arguments[6]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ if (!ok2Continue) return null;
+ if ( (UserAns.charAt(0) != "\(") || %
+(UserAns.charAt(UserAns.length-1) != "\)"))
+ return eqAppAlert(\eqSyntaxErrorNoParens,3), null;
+ UserAns=UserAns.substring(1,UserAns.length-1);
+ var aUserAns = UserAns.split(",");
+ for ( var i=0; i < aUserAns.length; i++) {
+ try {
+ if (isNaN(eval(aUserAns[i]))) return syntaxError(), null;
+ if (!allowzero && (eval(aUserAns[i])==0))
+ return eqAppAlert(\eqNonzeroEntries,3), null;
+ } catch(e) { return syntaxError(), null; }
+ }
+ var _v = TypeParameters(indepVars);
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = _V.length;
+ if ( aUserAns.length != _n) {
+ if (bNotifyWrngNumEntries)
+ return eqAppAlert(\wrongNumEntriesMsg,3), null;
+ else
+ return notifyField(false, flag, fieldname);
+ }
+ for (var _i=0; _i < _n; _i++) {
+ if (_V[_i].charAt(0) == "r" )
+ eval("var "+_V[_i].charAt(2)+"="+aUserAns[_i]+";");
+ else // assume type "i"
+ eval("var "+_V[_i].charAt(2)+"="+Math.ceil(aUserAns[_i])+";");
+ }
+ var UserInput=ParseInput(CorrAns);
+ var UserAns=eval(UserInput);
+ success=(Math.abs(UserAns) < epsilon)?true:false;
+ return notifyField(success, flag, fieldname);
+}
+function ProcRespEvalEqList(flag,CorrAns,n,epsilon,domain,%
+indepVars,oComp) {
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
+ var retn=_ProcRespEvalEqList(true,flag,CorrAns,n,epsilon,%
+indepVars,UserAns);
+ return retn;
+}
+function ProcRespEvalEqListNonZero(flag,CorrAns,n,epsilon,domain,%
+indepVars,oComp){
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
+ var retn=_ProcRespEvalEqList(false,flag,CorrAns,n,epsilon,%
+indepVars,UserAns);
+ return retn;
+}
+function _ProcRespEvalEqList(allowzero,flag,CorrAns,n,epsilon,indepVars)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>6); // dps17
+ var UserAns=(bSubstVars)?arguments[6]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ if (!ok2Continue) return null;
+ var success;
+ UserAns=UserAns.replace(/;+$/,"");
+ UserAns=UserAns.replace(/;+/g,";");
+ var aUsersArray = new Array();
+ var aUserAns = UserAns.split(";");
+ var aCorrAns = CorrAns.split(";");
+ var l = aCorrAns[0];
+ if (l < aUserAns.length )
+ return eqAppAlert(\eqTooManyEntries,3), null;
+ if (l > aUserAns.length )
+ return eqAppAlert(\eqTooFewEntries,3), null;
+ var _v = TypeParameters(indepVars);
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = _V.length;
+ var testFunc="";
+ for (var _i=0; _i < _n; _i++)
+ testFunc += ("+"+(Math.random()*9)+"*"+_V[_i].charAt(2));
+ var isCorrect=1;
+ for (var pair=0; pair< l; pair++) {
+ if ( (aUserAns[pair].charAt(0) != "\(") || %
+(aUserAns[pair].charAt(aUserAns[pair].length-1) != "\)"))
+ return eqAppAlert(\eqSyntaxErrorNoParens,3), null;
+ UserAnsPair=aUserAns[pair].substring(1,aUserAns[pair].length-1);
+ var aUserAnsPair = UserAnsPair.split(",");
+ for ( var i=0; i < aUserAnsPair.length; i++) {
+ try { if (isNaN(eval(aUserAnsPair[i]))) %
+return syntaxError(), null;
+ if (!allowzero && (eval(aUserAnsPair[i])==0))
+ return eqAppAlert(\eqNonzeroEntries,3), null;
+ } catch(e) { return syntaxError(), null; }
+ }
+ if ( aUserAnsPair.length != _n) {
+ if (bNotifyWrngNumEntries)
+ return eqAppAlert(\wrongNumEntriesMsg,3), null;
+ else
+ return notifyField(false, flag, fieldname);
+ }
+ for (var _i=0; _i < _n; _i++) {
+ if (_V[_i].charAt(0) == "r" )
+ eval ("var "+_V[_i].charAt(2)+"="+aUserAnsPair[_i]+";");
+ else // assume type "i"
+ eval ("var "+_V[_i].charAt(2)+"="%
++Math.ceil(aUserAnsPair[_i])+";");
+ }
+ var UserInput=ParseInput(aCorrAns[1]);
+ var UserAns=eval(UserInput);
+ aUsersArray[pair]=eval(testFunc);
+ success=(Math.abs(UserAns) < epsilon)?true:false;
+isCorrect *=Number(success);
+ }
+ success=(isCorrect==1);
+ var aOrderArray = aUsersArray.sort(function(a,b){return a-b});
+ var m = aUsersArray.length - 1;
+ for (i=0; i<m; i++)
+ if (Math.abs(aUsersArray[i]-aUsersArray[i+1])<.0001)
+ return eqAppAlert(\eqDuplEntries,3), null;
+ return notifyField(success, flag, fieldname);
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{useGermanNums}
+\newcommand{\noDecPtGerMsg}{"A period (.) is not allowed in answer,
+ use German notation for numbers"}
+\fi
+\begin{library@holding}{useGermanNums}
+\begin{newsegment}
+ {dljslib: Support for process numbers in the German format}
+function ProcRespNumsDe (flag,CorrAns,n,epsilon,%
+domain,indepVars,oComp) {
+ if (!ProcessIt) return null;
+ ok2Continue = true;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ var success = _ProcRespNumsDe(flag,CorrAns,UserAns,n,%
+epsilon,domain,indepVars,oComp);
+ if ( success == -1 || !ok2Continue ) return null;
+ if ( success == null ) { return syntaxError(), null; }
+ return notifyField(success, flag, fieldname);
+}
+function _ProcRespNumsDe(flag,CorrAns,UserAns,n,epsilon,%
+domain,indepVars,oComp) {
+ ok2Continue = true;
+ CorrAns = ParseInput(CorrAns);
+ if (!ok2Continue) {
+ eqAppAlert("Syntax error in author's answer! Check console.", 3);
+ return null;
+ }
+ var UserAnsSave=UserAns;
+ var reDe=/,/g;
+ var reDec=/\./g;
+ if ( reDec.test(UserAns) ) {
+ eqAppAlert(\noDecPtGerMsg,3);
+ return -1;
+ }
+ UserAns=UserAns.replace(reDe,".");
+ var comp = ( typeof oComp == "object" ) ?
+ (typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp : oComp;
+ if ( (typeof(oComp)=="object") %
+&& (typeof(oComp.priorParse)!="undefined") ) {
+ var retn=processSpecialParse(oComp.priorParse,UserAnsSave);
+ if (retn==null) return -1;
+ }
+ var reComma=/,/;
+ if ( reComma.test(UserAns) ) {
+ eqAppAlert(\eqSyntaxErrorComma,3);
+ return -1;
+ }
+ UserAns = ParseInput(UserAns);
+ indepVars = TypeParameters(indepVars);
+ if (!ok2Continue) return null;
+ var success=randomPointCompare(n,domain,indepVars,%
+epsilon,CorrAns,UserAns,comp);
+ if ( success && (typeof(oComp)=="object") %
+&& (typeof(oComp.postParse)!="undefined") )
+ success=processSpecialParse(oComp.postParse,UserAns);
+ return success;
+}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{unordered}
+\begin{newsegment}{dljslib: Contrib - Processing Unordered Responses}
+/*
+** The ProcRespSetFormula function is now listed under the
+** setSupport option, titled 'dljslib: Support for Sets'
+*/
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{factors}
+\newcommand{\facNoPropForm}{"Factorization is not in the proper form,
+ try placing the constant, if any, at the beginning of the
+ factorization"}
+\newcommand{\noNotEncloseMonos}{"Do not enclose constants or
+ monomials in parentheses"}
+\fi
+\begin{library@holding}{factors}
+\begin{newsegment}{dljslib: Contrib - Processing Factors as Responses}
+function ProcRespFactors(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ if (!ok2Continue) return null;
+ var retn = _ProcResp(flag,CorrAns,UserAns,n,epsilon,%
+domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ if ( retn == 0 ) {
+ var initialsuccess = false;
+ return notifyField(initialsuccess, flag, fieldname);
+ }
+ var aUserAns=new Array();
+ var aCorrAns=new Array();
+ var aNegCorrAns=new Array();
+ aUserAns=getFactorArray(UserAns);
+ if (aUserAns==null) {
+ eqAppAlert(\facNoPropForm, 3);
+ return null;
+ }
+ if (aUserAns==-1) return null;
+ aCorrAns=getFactorArray(CorrAns);
+ if ( aCorrAns==null) {
+ app.beep(); console.show();
+ console.println("Author error in factorization, its not in %
+the proper form");
+ return null;
+ }
+ for ( var i=0; i< aCorrAns.length; i++) {
+ aNegCorrAns[i] = "-" + "(" + aCorrAns[i] + ")"}
+ var numCorrect = 0, match=0,signflag=0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false, flag, fieldname);
+ for ( var i=0; i< aCorrAns.length; i++) {
+ match = 0;
+ for ( var j=i; j< aUserAns.length; j++) {
+ var retn = _ProcResp(flag,aCorrAns[i],aUserAns[j],%
+n,epsilon,domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ if (retn==1) {
+ var temp=aUserAns[j];
+ aUserAns[j]=aUserAns[i];
+ aUserAns[i]=temp;
+ match = match + 1;
+ }
+ else {
+ var retn = _ProcResp(flag,aNegCorrAns[i],aUserAns[j],%
+n,epsilon,domain,indepVars,oComp);
+ if ( retn == -1 ) return null;
+ if ( retn == null ) return syntaxError(), null;
+ if (retn==1) {
+ var temp=aUserAns[j];
+ aUserAns[j]=aUserAns[i];
+ aUserAns[i]=temp;
+ match = match + 1;
+ signflag = signflag + 1;
+ }
+ }
+ }
+ numCorrect += (match) ? 1 : 0;
+ }
+ var success = ((numCorrect==aCorrAns.length)&&(signflag\%2==0));
+ if ( success == null ) return syntaxError(), null;
+ return notifyField(success, flag, fieldname);
+}
+function getFactorArray(str) {
+ var aFactors=new Array();
+ var i,j,front,factor,back,bInitGrped=true;
+ if (str.charAt(0) != "\(" ) {
+ bInitGrped=false;
+ i=str.indexOf("\(");
+ if ( i != -1 ) {
+ aFactors.push(str.substring(0,i));
+ str=str.substring(i);
+ }
+ }
+ while ( (i=str.indexOf("\(")) != -1 ) {
+ j=FindBalP(str,i,true);
+ front=str.substring(0,i);
+ factor=str.substring(i,j+1);
+ back = str.substring(j+1);
+ if ( back.charAt(0) == "\^" ) {
+ getExp=back.match(/\^\d+/);
+ theExp=back.substring(0,getExp[0].length);
+ factor+=(theExp);
+ aFactors.push(factor);
+ back=back.substring(getExp[0].length);
+ } else {
+ aFactors.push(factor);
+ }
+ str=front + back;
+ if ( factor.charAt(1)=="-" || factor.charAt(1)=="+" )
+ factor=factor.substring(2);
+ if (!/[+-]/.test(factor)) {
+ eqAppAlert(\noNotEncloseMonos, 3);
+ return -1;
+ }
+ }
+ if (/[A-Za-z]/.test(str)) {
+ var aExp = str.match(/[A-Za-z](\^\d+)*/);
+ factor=aExp[0];
+ i=aExp.index;
+ front=str.substring(0,i);
+ back=str.substring(i+factor.length);
+ str=front+back;
+ if (!bInitGrped) {
+ if (aFactors[0]=="-" || aFactors[0]=="+")
+ aFactors[0]=aFactors[0]+factor;
+ else
+ aFactors[0]="\("+aFactors[0]+"\)"+"\("+factor+"\)";
+ } else {
+ aFactors.push(str);
+ str="";
+ }
+ }
+ if (aFactors[0]=="-"||aFactors[0]=="+"||isFinite(aFactors[0])){
+ factor=aFactors.shift();
+ aFactors[0]=factor+aFactors[0];
+ }
+ return (str!="") ? null : aFactors
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{point}
+\newcommand{\pointErrorMsgi}{%
+ "I'm looking for a point. You need to use proper point notation."}
+\newcommand{\pointErrorMsgii}{"Parentheses are not balanced."}
+\newcommand{\pointErrorMsgiii}{"Incorrect number of components.
+ The answer requires "+ aCorrAns.length+" components."}
+\def\pointEmptyCompMsgiv(#1){
+ "You entered nothing for the component " +(#1+1)
+ +" of your answer. Please enter a component for the point."}
+\fi
+\begin{library@holding}{point}
+\begin{newsegment}{dljslib: Contrib - Processing a Point Response}
+function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ if (!ProcessIt) return null;
+ ok2Continue = true;
+ var i, success, truthCnt=1;
+ var aScalar, scalar = 1;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace (UserAns); // sets ok2Continue
+ CorrAns = stripWhiteSpace(CorrAns);
+ if ( !ok2Continue ) return null;
+ var isSpecResp=false;
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (CorrAns == aDlLibSpecResp[i]) {
+ isSpecResp=true; break;
+ }
+ }
+ for ( var i=0; i<aDlLibSpecResp.length; i++) {
+ if (UserAns == aDlLibSpecResp[i]) {
+ success = (CorrAns == UserAns);
+ return notifyField(success, flag, fieldname);
+ }
+ }
+ if (isSpecResp) return notifyField(false, flag, fieldname);
+ if (!/[()]/.test(UserAns)) {
+ return eqAppAlert(\pointErrorMsgi, 3), null;
+ }
+ if (!CkBalP(UserAns,"(",")")) {
+ return eqAppAlert(\pointErrorMsgii, 3), null;
+ }
+ var comp = ( typeof oComp == "object" ) ?
+ (typeof oComp.comp == "undefined" ) ?
+ diffCompare : oComp.comp : oComp;
+ CorrAns = CorrAns.replace(/[()]/g, ""); // strip off ( and )
+ UserAns = UserAns.replace(/[()]/g, "");
+ if ( typeof oComp == "object" &&
+ typeof oComp.priorParse != "undefined" ) {
+ if ( typeof oComp.priorParse == "object" ) {
+ for ( var i=0; i < oComp.priorParse.length; i++) {
+ var retn = oComp.priorParse[i](UserAns);
+ if ( retn == null ) return null;
+ }
+ } else {
+ var retn = oComp.priorParse(UserAns);
+ if ( retn == null ) return null;
+ }
+ }
+ aUserAns = UserAns.split(",");
+ aCorrAns = CorrAns.split(",");
+ if (scalar != 1)
+ for (i=0; i<aUserAns.length; i++)
+ aUserAns[i]=""+scalar+"*"+aUserAns[i];
+ if (aCorrAns.length != aUserAns.length) {
+ eqAppAlert(\pointErrorMsgiii,3);
+ return null;
+ }
+ indepVars = TypeParameters(indepVars);
+ for (i=0; i<aCorrAns.length; i++) {
+ aCorrAns[i] = ParseInput(aCorrAns[i]);
+ if (!ok2Continue) {
+ eqAppAlert("Author Syntax error!", 3);
+ return null;
+ }
+ aUserAns[i] = ParseInput(aUserAns[i]);
+ if (aUserAns[i]==null) {
+ eqAppAlert(\pointEmptyCompMsgiv(i), 3);
+ return null;
+ }
+ if (!ok2Continue) return null;
+ success=randomPointCompare (
+ n,domain,indepVars,epsilon,aCorrAns[i],aUserAns[i],comp)
+ if ( success == null ) {
+ eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
+ truthCnt *= (success) ? 1 : 0;
+ }
+ return notifyField(!!truthCnt, flag, fieldname);
+}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{intervals}
+\begin{newsegment}{dljslib: Contrib - Processing Interval Responses}
+function ProcRespIntervals(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
+{
+ ok2Continue = true;
+ if (!ProcessIt) return null;
+ var fieldname = event.target.name;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
+ UserAns = stripWhiteSpace(UserAns);
+ CorrAns = stripWhiteSpace(CorrAns);
+ if (!ok2Continue) return null;
+ UserAns = UserAns.replace(/inf/g, "x");
+ CorrAns = CorrAns.replace(/inf/g, "x");
+ indepVars = "x";
+ domain="[0,1]";
+ var aUserAns = UserAns.split("U");
+ var aCorrAns = CorrAns.split("U");
+ var numCorrect = 0;
+ var match = 0;
+ var matchparts = 0;
+ if ( aUserAns.length != aCorrAns.length )
+ return notifyField(false,flag, fieldname);
+ for ( var i=0; i< aCorrAns.length; i++) {
+ match = 0;
+ for ( var j=i; j< aUserAns.length; j++) {
+ CorrInt=aCorrAns[i];
+ UserInt=aUserAns[j];
+ var levaUser = UserInt.charAt(0);
+ var pravaUser = UserInt.charAt(UserInt.length-1);
+ var stredUser = UserInt.substring(1,UserInt.length-1);
+ UserInt = levaUser+","+stredUser+","+pravaUser;
+ var levaCorr = CorrInt.charAt(0);
+ var pravaCorr = CorrInt.charAt(CorrInt.length-1);
+ var stredCorr = CorrInt.substring(1,CorrInt.length-1);
+ CorrInt = levaCorr+","+stredCorr+","+pravaCorr;
+ var aCorrInt = CorrInt.split(",");
+ var aUserInt = UserInt.split(",");
+ if ( aUserInt.length != 4 )
+ return notifyField(false, flag, fieldname);
+ matchparts = 0;
+ if (aCorrInt[0] == aUserInt[0]) matchparts+=1;
+ if (aCorrInt[3] == aUserInt[3]) matchparts+=1;
+ var retn1 = _ProcResp(flag,aCorrInt[1],aUserInt[1],%
+n,epsilon,domain,indepVars,oComp);
+ if (retn1 == -1 ) return null;
+ if (retn1 == null) return syntaxError(), null;
+ if (retn1 == 1) matchparts+=1;
+ var retn2 = _ProcResp(flag,aCorrInt[2],aUserInt[2],%
+n,epsilon,domain,indepVars,oComp);
+ if (retn2 == -1 ) return null;
+ if (retn2 == null) return syntaxError(), null;
+ if (retn2 == 1) matchparts+=1;
+ if (matchparts == 4) {
+ var temp=aUserAns[j];
+ aUserAns[j]=aUserAns[i];
+ aUserAns[i]=temp;
+ match = match + 1;
+ }
+ }
+ numCorrect += (match) ? 1 : 0;
+ }
+ var success = (numCorrect == aCorrAns.length);
+ return notifyField(success, flag, fieldname);
+}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{indefIntegral}
+\begin{newsegment}{dljslib: Indefinite Integral Handling}
+function indefCompare(_a,_c,_v,_F,_G) {
+ var eqC;
+ var aAB = _a.split(",");
+ var aXY = _c.split(",");
+ var _V = _v.split(","); // e.g. _V[0] = "i:x"
+ var _n = aXY.length
+ for (var _i=0; _i< _n; _i++) {
+ if (_V[_i].charAt(0) == "r" )
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + aAB[2*_i] + ";");
+ else // assume type "i"
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + Math.ceil(aAB[2*_i]) + ";");
+ }
+ var C = 0;
+ if ( app.viewerVersion >= 5)
+ {
+ var rtnCode = 0;
+ eval("try {if (isNaN(eqC = eval(_F)-eval(_G))) rtnCode=-1;}"
+ +" catch (e) { rtnCode=1; }");
+ switch(rtnCode)
+ {
+ case 0: break;
+ case 1: return null;
+ case -1: return -1;
+ }
+ }
+ else
+ if (isNaN(eqC = eval(_F)-eval(_G))) return -1;
+ for (var _i=0; _i< _n; _i++)
+ {
+ if (_V[_i].charAt(0) == "r" )
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + aXY[_i] + ";");
+ else // assume type "i"
+ eval ( "var "+ _V[_i].charAt(2)
+ + " = " + Math.ceil(aXY[_i]) + ";");
+ }
+ _F = eval(_F);
+ if ( app.viewerVersion >= 5)
+ {
+ var rtnCode = 0;
+ eval("try { if(isNaN(_G = eval(_G))) rtnCode=-1; }"
+ +" catch (e) { rtnCode=1; }");
+ switch(rtnCode)
+ {
+ case 0: break;
+ case 1: return null;
+ case -1: return -1;
+ }
+ }
+ else
+ if(isNaN(_G = eval(_G))) return -1;
+ return Math.abs( _F - _G - eqC );
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{nodec}
+\newcommand\nodecAlertMsg{%
+ "A decimal answer is not acceptable here.
+ Please express your answer using fractions, square roots,
+ e, log, etc."}
+\fi
+\begin{library@holding}{nodec}
+\begin{newsegment}{dljslib: Contrib - No Decimals}
+function nodec(UserAns)
+{
+ var dot = /[\.\aebdecimalpoint]/;
+ if (dot.test(UserAns)) {
+ eqAppAlert(\nodecAlertMsg,3);
+ return null;
+ } else return true;
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{noBinFac}
+\newcommand\noBinFactBinCoeffAlertMsg{%
+ "You may not use this notation here.
+ Please evaluate the binomial coefficient.
+ You may present your answer as a product rather
+ than calculating a very large number."}
+\newcommand\noBinFactPermAlertMsg{%
+ "You may not use this notation here.
+ Please evaluate the permutation.
+ You may present your answer as a product rather
+ than calculating a very large number."}
+\newcommand\noBinFactFactAlertMsg{%
+ "You may not use this notation here.
+ Please evaluate the factorial.
+ You may present your answer as a product rather
+ than calculating a very large number."}
+\fi
+\begin{library@holding}{noBinFac}
+\begin{newsegment}{dljslib: Contrib - No Binomial Coefficients Allowed}
+aReFact = new Array(
+ /(?=\()?(\d+)(?=\))?!/,
+ /(?=\[)?(\d+)(?=\])?!/,
+ /(?=\{)?(\d+)(?=\})?!/
+);
+function noBinFac(UserAns)
+{
+ var bad = /(C\()/;
+ if (bad.test(UserAns)) {
+ eqAppAlert(\noBinFactBinCoeffAlertMsg,3);
+ return null;
+ }
+ bad = /(P\()/;
+ if (bad.test(UserAns)) {
+ eqAppAlert(\noBinFactPermAlertMsg,3);
+ return null;
+ }
+ for ( var i=0; i<aReFact.length; i++) {
+ if (aReFact[i].test(UserAns)) {
+ eqAppAlert(\noBinFactFactAlertMsg,3);
+ return null;
+ }
+ }
+ bad = /(fact)/;
+ if (bad.test(UserAns)) {
+ eqAppAlert(\noBinFactFactAlertMsg,3);
+ return null;
+ }
+ return true
+}
+\end{newsegment}
+\end{library@holding}
+\@ifcheckedout{limitArith}
+\newcommand{\allowWrngNormSciNotn}{\def\allowWrngNSN{true}}
+\def\allowWrngNSN{false}
+\newcommand{\DecimalsOnlyErrorMsg}{%
+ "Enter only an integer, e.g., 17, or a decimal number, e.g. 12.4.
+ Using arithmetic operations or built in function is not acceptable
+ for this problem."}
+\newcommand{\NoProductsErrorMsg}{%
+ "Multiplication is not allowed for this problem."}
+\newcommand{\NoDivisionErrorMsg}{%
+ "Division is not allowed for this problem."}
+\newcommand{\NoAddOrSubErrorMsg}{%
+ "Neither addition nor subtraction is allowed for this problem."}
+\newcommand{\NoExpAllowedErrorMsg}{%
+ "The use of exponents is not allowed for this problem."}
+\newcommand{\NoTrigAllowedErrorMsg}{%
+ "The use of trig functions in this problem is not allowed."}
+\newcommand{\NoPiAllowedErrorMsg}{%
+ "The use of PI or pi is not allowed in this problem."}
+\newcommand{\NoTrigLogAllowedErrorMsg}{%
+ "The use of trig and log functions is not allowed
+ in this problem."}
+\newcommand{\sciNotSyntaxError}{"Enter the answer in
+ scientific notation."}
+\newcommand{\sciNotNormalForm}{"The scientific notation entered
+ is not in normalized form."}
+\newcommand{\NoNegExpMsg}{"No negative exponents permitted,
+ keep working!"}
+\fi
+\begin{library@holding}{limitArith}
+\begin{newsegment}{dljslib: Limit Arithmetic and Built in Functions}
+function DecimalsOnly(UserAns) {
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ if( !isFinite( UserAns ) ) {
+ eqAppAlert(\DecimalsOnlyErrorMsg,3);
+ return null;
+ }
+ return true;
+}
+function NoProducts (UserAns) {
+ // Requires the ImplMulti option of dljslib
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ UserAns = Ck4Products(UserAns);
+ if ( /\*/.test( UserAns ) )
+ return eqAppAlert(\NoProductsErrorMsg,3), null;
+ return true;
+}
+function NoDivision (UserAns) {
+ if ( /\//.test( UserAns) )
+ return eqAppAlert(\NoDivisionErrorMsg,3), null;
+ return true;
+}
+function NoAddOrSub (UserAns) {
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ UserAns=ChngAllGrpsToParens(UserAns);
+ var result;
+ var re = /.[+-]/g;
+ re.lastIndex = 0;
+ while ( (result = re.exec( UserAns )) != null ) {
+ if ( result[0].charAt(0) != "\(" )
+ return eqAppAlert(\NoAddOrSubErrorMsg,3), null;
+ }
+ return true;
+}
+function NoArithAllowed (UserAns) {
+ var aNoArithmetic = new Array ( NoAddOrSub, NoProducts,
+ NoDivision, NoExpAllowed );
+ for ( var i = 0; i < aNoArithmetic.length; i++ )
+ if ( (retn = aNoArithmetic[i](UserAns)) == null ) return null;
+ return true;
+}
+function NoExpAllowed (UserAns) {
+ // Requires the ImplMulti option of dljslib
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ if ( /\^/.test( UserAns ) || /pow/.test( UserAns ) )
+ return eqAppAlert(\NoExpAllowedErrorMsg,3), null;
+ return true;
+}
+function NoTrigAllowed (UserAns)
+{
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ var aTrigfuncs = new Array
+ ( "acos","asin","atan","cos", "sin", "tan","sec","csc","cot",
+ "arcsin", "arccos", "arctan"
+ );
+ var re, regexp;
+ re = /[a-zA-Z]{2,}/g;
+ aF = UserAns.match(re);
+ if ( aF != null ) {
+ for (var i=0; i < aF.length; i++)
+ {
+ for(var j=0; j < aTrigfuncs.length; j++) {
+ if ( aF[i].indexOf(aTrigfuncs[j]) != -1 )
+ return eqAppAlert(\NoTrigAllowedErrorMsg,3), null;
+ }
+ }
+ }
+ return true;
+}
+function NoPiAllowed(UserAns)
+{
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ var re=/PI|pi/;
+ if ( re.test(UserAns) )
+ return eqAppAlert(\NoPiAllowedErrorMsg,3), null;
+ return true;
+}
+function NoTrigLogAllowed (UserAns)
+{
+ UserAns = stripWhiteSpace(UserAns);
+ if ( !ok2Continue ) return null;
+ var aTrigfuncs = new Array
+ ( "acos","asin","atan","cos", "sin",
+ "tan","sec","csc","cot", "arcsin", "arccos", "arctan",
+ "logc","log", "ln"
+ );
+ var re, regexp;
+ re = /[a-zA-Z]{2,}/g;
+ aF = UserAns.match(re);
+ if ( aF != null ) {
+ for (var i=0; i < aF.length; i++)
+ {
+ for(var j=0; j < aTrigfuncs.length; j++) {
+ if ( aF[i].indexOf(aTrigfuncs[j]) != -1 )
+ return eqAppAlert(\NoTrigLogAllowedErrorMsg,3), null;
+ }
+ }
+ }
+ return true;
+}
+var bAllowWrngNormSciNotn=false;
+var bItsNormSciNot=false;
+function SciNotNoNotify(UserAns) {
+ bAllowWrngNormSciNotn=true;
+ var rtn=SciNotResp(UserAns);
+ return rtn;
+}
+function SciNotResp(UserAns) {
+ bItsNormSciNot=false;
+ var _sciNotation, _a, _b;
+ _sciNotation = /^[+-]*(\d*)*(\.\d*)*E[+-]*\d+$/;
+ UserAns=stripWhiteSpace(UserAns);
+ if ( (_a=_sciNotation.exec(UserAns)) !=null) {
+ if (isNaN(_a[1])) {
+ if (bAllowWrngNormSciNotn)
+ return true;
+ else
+ return eqAppAlert(\sciNotNormalForm,3), null;
+ }
+ if (isNaN(_a[2])) _a[2]=0;
+ _b = Math.abs(Number(_a[1])+Number(_a[2]));
+ if ( _b < 1 || _b >= 10 ) {
+ if (bAllowWrngNormSciNotn)
+ return true;
+ else
+ return eqAppAlert(\sciNotNormalForm,3), null;
+ }
+ else {
+ bItsNormSciNot=true;
+ return true
+ }
+ } else
+ return eqAppAlert(\sciNotSyntaxError,3), null;
+}
+function sciNotResp(UserAns) {return SciNotResp(UserAns);}
+function postSciNotResp(UserAns) {
+ bAllowWrngNormSciNotn=false;
+ return bItsNormSciNot;
+}
+function NoNegExp (UserAns) {
+ var re=/(\^|\^\()+-/g;
+ UserAns=ChngAllGrpsToParens(UserAns);
+ if (re.test(UserAns))
+ return eqAppAlert(\NoNegExpMsg,3), null;
+ return true;
+}
+function noNegExp(UserAns){return NoNegExp(UserAns)}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{combinatorics}
+\begin{newsegment}{dljslib: Contrib - Combinatorial Functions}
+function ch(n,r)
+{
+ if ((n==r)||(r==0)) return(1);
+ if ((n==(r+1))||(r==1)) return(n);
+ if (r > (n-r))
+ var coeff = factorialCancel(
+ expandFactorial(r+1,n),expandFactorial(1,n-r));
+ else
+ var coeff = factorialCancel(
+ expandFactorial(n-r+1,n),expandFactorial(1,r));
+ return (eval(coeff));
+}
+function perm(n,r)
+{
+ if (r==0) return(1);
+ else
+ var coeff = factorialCancel(
+ expandFactorial(n-r+1,n),expandFactorial(1,n-r));
+ return (eval(coeff));
+}
+function expandFactorial(lo,hi)
+{
+ var f = lo;
+ for (var i=lo+1;i<=hi;i++) f = i+"*"+f;
+ return f;
+}
+function factorialCancel(top,bot)
+{
+ var num = top.split("*");
+ var denom = bot.split("*");
+ var len = denom.length;
+ var temp = 0;
+ var i, j;
+ for (i=0;i<=len-1;i++) {
+ for (j=0;j<=len-1;j++) {
+ temp = num[i]/denom[j];
+ if ((temp - Math.round(temp)) == 0) {
+ num[i] = temp;
+ denom[j] = 1;
+ }
+ }
+ }
+ var t = denom.join("");
+ var reg = /[^1]/;
+ if (reg.test(t)) {
+ temp = factorialCancel(denom.join("*"),num.join("*"));
+ } else {
+ temp = num.join("*");
+ }
+ return (temp);
+}
+function fact(num)
+{
+ var tot = 1;
+ for (var r=1; r <= num; r++) tot *= r;
+ return(tot);
+}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{ImplMulti}
+\begin{newsegment}{dljslib: Implied Multiplication}
+function Ck4Products(UserInput)
+{
+ var re, aR;
+ for (var i=0; i<JSf.length; i++)
+ {
+ re = new RegExp("("+JSf[i]+")(\\\()","g");
+ UserInput = UserInput.replace(re, "\\$1@$2");
+ re = new RegExp("([\\w\\\)])(\\"+JSf[i]+")(@\\\()","g");
+ UserInput = UserInput.replace(re, "$1*$2$3");
+ }
+ for (var i=0; i<JSc.length; i++)
+ {
+ re = new RegExp("("+JSc[i]+")","g");
+ if ( JSc[i] != "E" ) {
+ UserInput = UserInput.replace(re, "\\$1@");
+ re = new RegExp("([\\w\\\)])(\\"+JSc[i]+")(@)","g");
+ }
+ }
+ UserInput = UserInput.replace(
+ /([\d\)])([A-DF-Za-z\(\\])/g, "$1*$2");
+ UserInput = UserInput.replace(/(\))(\d)/g, "$1*$2");
+ UserInput = UserInput.replace(/([A-Za-z])([\d\(\\])/g, "$1*$2");
+ UserInput = UserInput.replace(/(@)([A-Za-z\d])/g, "$1*$2");
+ UserInput = UserInput.replace(/(\\)([A-Za-z]{1,})(@)/g, "$2");
+ re = /[A-Za-z]{1,}/g;
+ while ( (aR = re.exec(UserInput)) != null)
+ {
+ for (var i=0; i<JSf.length; i++) if ( aR[0] == JSf[i]) break;
+ if ( i < JSf.length ) continue;
+ for (var i=0; i<JSc.length; i++) if ( aR[0] == JSc[i]) break;
+ if ( i < JSc.length ) continue;
+ aR[0] = aR[0].replace(/([A-Za-z])\B/g,"$1*");
+ UserInput = UserInput.substring(0,aR.index)
+ +aR[0]+UserInput.substring(re.lastIndex);
+ }
+ return UserInput;
+}
+function Ck4Exponents(UserInput)
+{
+ var re, regexp, aP, RightP;
+ for (var i=0; (i<JSf.length) && (ok2Continue); i++)
+ {
+ re = new RegExp(JSf[i]+"\\^");
+ while ( re.test(UserInput) && (ok2Continue) )
+ {
+ regexp = new RegExp(JSf[i]+"\\^\\\(", "g");
+ if ( (aP = regexp.exec(UserInput)) != null ) {
+ // forward search
+ RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
+ var offsetExp = RightP-regexp.lastIndex;
+ regexp = new RegExp(
+ JSf[i]+"\\^\\(.{"+offsetExp+"}\\)\\\(", "g");
+ regexp.lastIndex=0;
+ if ( (aP = regexp.exec(UserInput)) != null ) {
+ // forward search
+ RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
+ var offsetArg = RightP - regexp.lastIndex;
+ regexp = new RegExp("("+JSf[i]
+ +")\\^\\((.{"+offsetExp+"})\\)\\((.{"
+ +offsetArg+"})\\)");
+ regexp.lastIndex=0;
+ if (regexp.test(UserInput))
+ UserInput=UserInput.replace(
+ regexp,"(pow($1($3),$2))");
+ else ok2Continue=false;
+ continue;
+ }
+ }
+ regexp = new RegExp(JSf[i]
+ +"\\^([a-zA-Z]|[+-]?\\d+\\.?\\d*|[+-]?\\d*\\.?\\d+)"
+ +"\\\(","g");
+ if ( (aP = regexp.exec(UserInput)) != null ) {
+ // forward search
+ RightP=FindBalP(UserInput,regexp.lastIndex-1,1);
+ regexp = new RegExp("("
+ +JSf[i]+")\\^([a-zA-Z]|[+-]?\\d+"
+ +"\\.?\\d*|[+-]?\\d*\\.?\\d+)\\((.{"
+ +eval(RightP-regexp.lastIndex)+"})\\)");
+ regexp.lastIndex=0;
+ if (regexp.test(UserInput))
+ UserInput=UserInput.replace(
+ regexp,"(pow($1($3),$2))");
+ else ok2Continue=false;
+ }
+ else ok2Continue=false;
+ }
+ }
+ for (var i=0; (i < JSc.length) && (ok2Continue); i++)
+ {
+ re = new RegExp(JSc[i]+"\\^", "g");
+ while ( re.test(UserInput) && (ok2Continue) )
+ {
+ re.lastIndex = 0;
+ aR = re.exec(UserInput);
+ if (UserInput.charAt(re.lastIndex)=='\(') {
+ // forward search
+ RightP=FindBalP(UserInput,re.lastIndex,1);
+ var offsetExp = RightP - re.lastIndex - 1;
+ re.lastIndex=0;
+ regexp = new RegExp("("+JSc[i]
+ +")\\^\\((.{"+offsetExp+"})\\)");
+ if ( regexp.test(UserInput) )
+ UserInput = UserInput.replace(
+ regexp, "(pow($1,$2))");
+ else ok2Continue = false;
+ }
+ else
+ {
+ re.lastIndex=0;
+ regexp = new RegExp("("+JSc[i]
+ +")\\^([a-zA-Z]|[+-]?\\d+\\.?\\d*|[+-]?\\d*\\.?\\d+)");
+ if (regexp.test(UserInput))
+ UserInput = UserInput.replace(
+ regexp, "(pow($1,$2))");
+ else ok2Continue = false;
+ }
+ }
+ }
+ return UserInput;
+}
+\end{newsegment}
+\end{library@holding}
+\begin{library@holding}{dljslib}
+\end{insDLJS*}
+\end{library@holding}
+\immediate\closeout\dljslib@verbatim@out
+\advance\count17 by -1
+\input{dljslib.ljs}
+\endinput
+%%
+%% End of file `dljslib.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/edvipdfm.def b/texmf-dist/tex/latex/acrotex/edvipdfm.def
index 113d3c80..85cdfec1 100644
--- a/texmf-dist/tex/latex/acrotex/edvipdfm.def
+++ b/texmf-dist/tex/latex/acrotex/edvipdfm.def
@@ -1,99 +1,99 @@
-%%
-%% This is file `edvipdfm.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,edvipdfm')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\noPeek#1#2{\@pdfm@mark{put @thispage << \noPeekAction{#1}{#2} >> }}
-\let\ef@adjHWxetex\relax
-\def\eq@choice@driver{\ef@adjHWxetex
- \Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
-\endgroup}
-\def\eq@Button@driver{\Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi % 12/22
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \endgroup
-}
-\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann \dvipdfm@setdim
- <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
- \endgroup
-}
-\def\eq@l@check@driver{%
- \setbox\pdfm@box=%
- \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \@pdfm@mark{ann \dvipdfm@setdim<<\common@RadioCheckCode>>}%
- \unhbox\pdfm@box\relax\endgroup
-}
-\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
- \endgroup
-}
-\def\eq@SigField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
- \endgroup
-}
-\def\setLink@driver{%
- \@eqBS{}\leavevmode
- \@pdfm@mark{bann
- <</Subtype/Link\eq@Border\common@LinkCode>>}%
- \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
- \@pdfm@mark{eann}%
- \endgroup
-}
-\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
- \fi\endgroup
-}
-\endinput
-%%
-%% End of file `edvipdfm.def'.
+%%
+%% This is file `edvipdfm.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,edvipdfm')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\noPeek#1#2{\@pdfm@mark{put @thispage << \noPeekAction{#1}{#2} >> }}
+\let\ef@adjHWxetex\relax
+\def\eq@choice@driver{\ef@adjHWxetex
+ \Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+\endgroup}
+\def\eq@Button@driver{\Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi % 12/22
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \endgroup
+}
+\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann \dvipdfm@setdim
+ <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
+ \endgroup
+}
+\def\eq@l@check@driver{%
+ \setbox\pdfm@box=%
+ \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
+ \@pdfm@mark{ann \dvipdfm@setdim<<\common@RadioCheckCode>>}%
+ \unhbox\pdfm@box\relax\endgroup
+}
+\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+ \endgroup
+}
+\def\eq@SigField{\ef@adjHWxetex\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
+ \endgroup
+}
+\def\setLink@driver{%
+ \@eqBS{}\leavevmode
+ \@pdfm@mark{bann
+ <</Subtype/Link\eq@Border\common@LinkCode>>}%
+ \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
+ \@pdfm@mark{eann}%
+ \endgroup
+}
+\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
+ \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
+ \fi\endgroup
+}
+\endinput
+%%
+%% End of file `edvipdfm.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eforms.sty b/texmf-dist/tex/latex/acrotex/eforms.sty
index 2e1fea4d..fd54f4fe 100644
--- a/texmf-dist/tex/latex/acrotex/eforms.sty
+++ b/texmf-dist/tex/latex/acrotex/eforms.sty
@@ -1,1374 +1,1378 @@
-%%
-%% This is file `eforms.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{eforms}
- [2018/03/22 v2.9.19 Provides general eforms support (dps)]
-\RequirePackage{ifpdf}[2006/02/20]
-\RequirePackage{ifxetex}[2006/08/21]
-\RequirePackage{ifluatex}
-\RequirePackage{calc}
-\let\ef@driver\@empty
-\DeclareOption{dvipsone}{\def\eq@drivernum{0}%
- \def\eq@drivername{0}\def\ef@driver{dvipsone}%
- \PassOptionsToPackage{dvipsone}{insdljs}%
- \PassOptionsToPackage{dvipsone}{hyperref}%
-}
-\def\eq@drivername{2}
-\DeclareOption{dvips}{\def\eq@drivernum{0}%
- \def\eq@drivername{1}\def\ef@driver{dvips}%
- \PassOptionsToPackage{dvips}{insdljs}%
- \PassOptionsToPackage{dvips}{hyperref}%
-}
-\DeclareOption{pdftex}{%
- \def\eq@drivernum{1}\def\eq@driver{pdftex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
-}
-\DeclareOption{luatex}{%
- \def\eq@drivernum{1}\def\eq@driver{luatex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
-}
-\DeclareOption{dvipdfm}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
- \PassOptionsToPackage{dvipdfm}{insdljs}
- \PassOptionsToPackage{dvipdfm}{hyperref}
-}
-\DeclareOption{dvipdfmx}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
- \PassOptionsToPackage{dvipdfmx}{insdljs}
- \PassOptionsToPackage{dvipdfmx}{hyperref}
-}
-\DeclareOption{xetex}{%
- \def\eq@drivernum{2}\def\eq@driver{xetex}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
-}
-\DeclareOption{textures}{%
- \def\eq@drivernum{3}\def\eq@driver{textures}%
- \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
- \PassOptionsToPackage{textures}{insdljs}%
- \PassOptionsToPackage{textures}{hyperref}
-}
-\def\eq@driver{dvipsone/dvips}
-\def\eq@drivercode{epdfmark.def}
-\DeclareOption{preview}{\previewtrue}
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{insdljs}}
-\@ifundefined{ifpreview}{\newif\ifpreview \previewfalse}{}
-\providecommand{\previewOn}{\previewtrue}
-\providecommand{\previewOff}{\previewfalse}
-\DeclareOption{useui}{\AtEndOfPackage{\ef@InputUIeForms}}
-\def\ef@InputUIeForms{\InputIfFileExists{uieforms.def}%
- {\PackageInfo{eforms}{Inputting code for useui option}}%
- {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
- Reinstall or refresh your file name database.}}}
-\DeclareOption{setcorder}{\def\inputCalcOrderJS{%
- \InputIfFileExists{setcorder.def}%
- {\PackageInfo{eforms}{Inputting code for setcorder option}}%
- {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
- Reinstall or refresh your file name database.}}}}
-\let\inputCalcOrderJS\relax
-\@ifpackageloaded{web}{%
- \ExecuteOptions{\eq@driver@name}%
-}{%
- \@ifpackageloaded{exerquiz}{%
- \ExecuteOptions{\eq@driver}%
- }{%
- \ifluatex\ExecuteOptions{luatex}\else
- \ifpdf\ExecuteOptions{pdftex}\else
- \ifxetex\ExecuteOptions{xetex}\else
- \@ifundefined{l@tex@@@@driver}{\ExecuteOptions{dvips}}
- {\ExecuteOptions{dvipsone}}\fi\fi\fi
- }%
-}
-\ProcessOptions
-\ifx\ef@driver\@empty
- \PackageError{eforms}%
- {You have not specified dvips, dvipsone, pdftex,\MessageBreak
- dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
- the eforms package}
- {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the eforms package.}%
-}{}
-\fi
-\newlength\eflength
-\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
-\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
-\RequirePackage{hyperref}
-\ifxetex\else\ifpdf\pdflinkmargin1bp\relax\else
- \g@addto@macro\Hy@FirstPageHook{%
- \headerps@out{/HyperBorder {1.00375 PDFToDvips} def}}
-\fi\fi
-\RequirePackage{insdljs}[2017/01/03] % incl conv-xkv
-\@ifpackageloaded{exerquiz}{}{%
- \AtBeginDocument{\Form}
- \AtEndDocument{\csname endForm\endcsname}
-}
-\@ifpackageloaded{aeb_pro}{}{%
- \newcommand{\taggedPDF}{%
- \ifnum\eq@drivernum=0\relax
- \literalps@out{[{Catalog} <<%
- /MarkInfo<</Marked true>>%
- >> /PUT pdfmark}\fi}%
-}
-\let\ef@YES=y \let\ef@NO=n
-\let\ef@One=1 \let\ef@Zero=0
-\ifnum\eq@drivername<2
-\let\to@usepdfmark\ef@One
-\RequirePackage[structure]{taborder}\else
-\let\to@usepdfmark\ef@Zero
-\RequirePackage{taborder}
-\fi
-\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}
-\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{}
-\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
-\newlength\ef@dimena
-\newtoks\ef@scratchtoks
-\newif\ifmakeXasPD \makeXasPDtrue % 12/22
-\newif\ifmakePDasX \makePDasXfalse
-\def\makeXasPDOn{\makeXasPDtrue\makePDasXfalse}
-\def\makeXasPDOff{\makeXasPDfalse}
-\def\makePDasXOn{\makePDasXtrue\makeXasPDfalse}
-\def\makePDasXOff{\makePDasXfalse}
-\providecommand\ckboxColor[1]{\def\@rgi{#1}\ifx\@rgi\@empty
- \let\ckbox@Color\relax\else
- \def\ckbox@Color{\color{#1}}\fi}\let\ckbox@Color\relax
-\def\ef@Bbox#1#2{\hbox{\ifpreview
- \setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
- \@tempdima=#1\advance\@tempdima by-\fboxrule
- \@tempdimb=#2\advance\@tempdimb by-\fboxrule \ckbox@Color
- \fbox{\parbox[b][\@tempdimb][c]{\@tempdima}{\hfill\vfill}}\else
- \parbox[b][#2][c]{#1}{\hfill\vfill}\fi}%
-}
-\let\Bbox\ef@Bbox
-\let\ef@passedArgs\@empty
-\def\processAppArgs#1#2{%
- \ifx\end#1% if #1=\end, #2=\@nil.
- \let\ef@next\relax
- \else
- \ifx#1\@empty
- \def\ef@next{\processAppArgs}%
- \else
- \@getCmdName{\ui}\edef\arg@ui{\@CmdName}%
- \@getCmdName{#1}%
- \ifx\arg@ui\@CmdName
- \@ifundefined{@equi}{\PackageError{eforms}%
- {The user interface '\string\ui' is not defined!%
- \MessageBreak Use the useui option of eforms
- and try again}{I said, use the useui option of
- eforms and try again!}}{}%
- \def\ef@next{\setkeys{eforms}{#2}%
- \processAppArgs\presets{\ef@passedArgs}}%
- \else
- \@getCmdName{\Ff}\edef\arg@Ff{\@CmdName}%
- \@getCmdName{#1}%
- \ifx\arg@Ff\@CmdName % if \Ff, let's add arguments
- \ifx\eq@Ff\@empty\def\eq@FfValue{0}\else
- \expandafter\getFfValue\eq@Ff\@nil\fi
- \@tempcnta=\eq@FfValue
- \def\eq@arg{#2}%
- \ifx\eq@arg\@empty\else
- \advance\@tempcnta by#2\fi
- \edef\eq@Ff{/Ff \the\@tempcnta}%
- \def\ef@next{\processAppArgs}%
- \else
- \@getCmdName{\F}\edef\arg@F{\@CmdName}%
- \@getCmdName{#1}%
- \ifx\arg@F\@CmdName % if \Ff, let's add arguments
- \ifx\eq@F\@empty\def\eq@FValue{0}\else
- \expandafter\getFValue\eq@F\@nil\fi
- \@tempcnta=\eq@FValue
- \def\eq@arg{#2}%
- \ifx\eq@arg\@empty\else
- \advance\@tempcnta by#2\fi
- \edef\eq@F{/F \the\@tempcnta}%
- \def\ef@next{\processAppArgs}%
- \else
- \@getCmdName{\presets}%
- \edef\arg@presets{\@CmdName}\@getCmdName{#1}%
- \ifx\arg@presets\@CmdName
- \def\ef@next{\expandafter\processAppArgs#2}%
- \else
- \csname @eq%
- \expandafter\@gobble\string#1\endcsname{#2}%
- \def\ef@next{\processAppArgs}%
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \ef@next
-}
-\def\@processEvery{\edef\eqtemp{}\toks0={}\@@processEvery}
-\def\@@processEvery#1{%
- \ifx#1\end\def\ef@next{\the\toks0 }%
- \else
- \edef\eqtemp{\the\toks0 }%
- \toks0=\expandafter{\eqtemp
- \expandafter\processAppArgs#1\end\@nil}%
- \def\ef@next{\@@processEvery}%
- \fi
- \ef@next
-}
-\newdimen\eqcenterWidget
-\def\centerWidget#1{%
- \ifeq@inlineCenter
- \eqcenterWidget=#1\relax
- \eqcenterWidget=.5\eqcenterWidget
- \ifnum\eq@textSize=0\relax
- \dimen@=-\eq@textSizeDefault bp\else
- \dimen@=-\eq@textSize bp\fi
- \dimen@=0.9167\dimen@ % 11/12
- \dimen@=.5\dimen@
- \advance\dimen@\eq@W@value bp
- \ifx\eq@S\@empty\else
- \def\eq@S@cmp{B}%
- \ifx\eq@S@value\eq@S@cmp
- \advance\dimen@ by \eq@W@value bp
- \else
- \def\eq@S@cmp{I}%
- \ifx\eq@S@value\eq@S@cmp
- \advance\dimen@ by \eq@W@value bp
- \else\advance\dimen@ by 1bp
- \fi\fi\fi
- \advance\eqcenterWidget by \dimen@
- \else
- \eqcenterWidget=#1\relax
- \eqcenterWidget=.5\eqcenterWidget
- \advance\eqcenterWidget by -4bp
- \fi
-}
-\def\@eqF#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@F\@empty\else\def\eq@F{/F #1}\fi}\def\eq@F{}
-\def\@eqBS#1{%
- \let\eq@BS=0\relax
- \ifx\eq@W\@empty\else\let\eq@BS=1\fi
- \ifx\eq@S\@empty\else\let\eq@BS=1\fi
- \ifx\eq@D\@empty\else\let\eq@BS=1\fi
- \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
- \ifx\eq@W\@empty\let\link@BS\@empty\fi
-}\def\link@BS{}
-\def\@eqpresets#1{#1}%
-\def\@eqW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@W\@empty\def\eq@W@value{0}\else
- \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
- \xdef\g@eq@W@value@bp{\eq@W@value bp}}
-\def\eq@W{}\def\eq@W@value{0}
-\def\g@eq@W@valu@bp{0bp} % dps 12/22
-\def\@eqS#1{\def\eq@S@value{#1}\ifx\eq@S@value\@empty
- \let\eq@S\@empty\else
- \def\eq@S{/S/#1}\def\eq@temp{D}%
- \ifx\eq@S@value\eq@temp
- \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
- \fi\fi}\def\eq@S{}
-\def\@eqD#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@D\@empty\else
- \def\eq@D{/D [#1]}\fi}\def\eq@D{}
-\def\@eqBorder#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Border\@empty\else\def\eq@Border{/Border [#1]}\fi}%
-\def\eq@Border{/Border [0 0 0]}
-\def\@eqAP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AP\@empty\else\def\eq@AP{/AP<<#1>>}\fi}%
- \let\eq@AP\@empty
- \def\@eqOn#1{\def\eq@On{/#1}}\def\eq@On{/Yes}
-\def\@eqAS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AS\@empty\else\ifpdfmarkup\def\eq@AS{/AS(#1) cvn }\else
- \def\eq@AS{/AS/#1}\fi\fi}\def\eq@AS{}
-\def\ef@gobbleToendmarker#1\ef@endmarker{}
-\let\ef@endmarker\relax
-\def\ef@end{\end}\def\ef@true{true}
-\def\ef@rPage#1{\@tempcnta=#1\relax\advance\@tempcnta-1
- \edef\rPage##1{\the\@tempcnta}}
-\long\def\ef@searchrPage#1\rPage#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
-\def\ef@searchmlLink#1\mlLink#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
- \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
- \let\ef@mlLink\ef@Zero\fi\fi}
-\def\ef@searchGoToR#1/GoToR#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@filecolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@searchURI#1/URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@searchCmdURI#1\URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@searchNamed#1/Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@searchCmdNamed#1\Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@searchLaunch#1/Launch#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@runcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
-\def\ef@preprocessA#1{%
- \let\rPage\relax\edef\ef@argi{#1}%
- \ifx\annot@type\annot@type@link
- \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
- \expandafter\ef@searchURI\ef@argi/URI\end\@nil
- \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
- \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
- \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
- \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
- \ef@endmarker\fi
- \let\rPage\ef@rPage
- \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
-}
-\def\@eqA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@A\@empty\else\ef@preprocessA{#1}%
- \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
-\def\@eqmlLink#1{\def\eq@arg{#1}\ifx\eq@arg\ef@true
- \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
-\def\@eqLock#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
- \def\eq@Lock{}
-\newif\ifisCalculate\isCalculatefalse
-\def\ef@searchCalc#1\AACalculate#2\@nil{%
- \ifx#2\end\else\aftergroup\isCalculatetrue\fi
-}
-\def\@eqAA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty\let\eq@AA\@empty
- \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
- \def\eq@AA{/AA <<#1>>}\fi}
-\def\eq@AA{/AA <<\eq@AAmouseup\eq@AAmousedown\eq@AAmouseenter%
- \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
- \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
- \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
-\def\@eqAAmouseup#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
-\let\eq@AAmouseup\@empty
-\def\@eqAAmousedown#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmousedown\@empty\else
- \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
-\let\eq@AAmousedown\@empty
-\def\@eqAAmouseenter#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseenter\@empty\else
- \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
-\let\eq@AAmouseenter\@empty
-\def\@eqAAmouseexit#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseexit\@empty\else
- \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
-\let\eq@AAmouseexit\@empty
-\def\@eqAAonfocus#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonfocus\@empty\else
- \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
-\def\@eqAAmousefocus{\@eqAAonfocus}
-\let\eq@AAonfocus\@empty
-\def\@eqAAonblur#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonblur\@empty\else
- \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
-\def\@eqAAmouseblur{\def\@eqAAonblur}
-\let\eq@AAonblur\@empty
-\def\@eqAAformat#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAformat\@empty\else
- \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
-\let\eq@AAformat\@empty
-\def\@eqAAkeystroke#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAkeystroke\@empty\else
- \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
-\let\eq@AAkeystroke\@empty
-\def\@eqAAvalidate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAvalidate\@empty\else
- \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
-\let\eq@AAvalidate\@empty
-\def\@eqAAcalculate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAcalculate\@empty\else\isCalculatetrue
- \def\eq@AAcalculate{/C<<\JS{#1}>>}\fi}
-\let\eq@AAcalculate\@empty
-\def\@eqAApageopen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageopen\@empty\else
- \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
-\let\eq@AApageopen\@empty
-\def\@eqAApageclose#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageclose\@empty\else
- \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
-\let\eq@AApageclose\@empty
-\def\@eqAApagevisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApagevisible\@empty\else
- \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
-\let\eq@AApagevisible\@empty
-\def\@eqAApageinvisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageinvisible\@empty\else
- \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
-\let\eq@AApageinvisible\@empty
-\def\@eqDA#1{\def\eq@DA{#1}}
-\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
-\def\@eqtextFont#1{\def\eq@textFont{/#1}}
-\def\eq@textFont{/Helv}
-\def\@eqtextSize#1{\def\eq@textSize{#1}}
-\def\eq@textSizeDefault{9}
-\edef\eq@textSize{\eq@textSizeDefault}
-\def\eq@RV@Body{<?xml version="1.0"?><body %
- xfa:APIVersion="Acroform:2.7.0.0" %
- xfa:contentType="text/html" %
- xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
- xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
-\def\eq@RV@endBody{</body>}
-\def\@eqRV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
- \eq@RV@endBody)\fi}}\def\eq@RV{}
-\def\@eqDS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
-\def\@eqtextColor#1{\ef@parsePDFColor{#1}%
- \HyColor@IfXcolor{%
- \expandafter\HyColor@FieldColor%
- \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
- }{\edef\eq@textColor{\ef@colorSpec@out}}%
-}
-\def\eq@textColor{0 g}
-\def\@eqQ#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
-\def\ef@isunicode#1\unicodeStr#2\@nil{\def\argi{#1}%
- \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
- \def\ifbool@ef{iffalse}\fi}
-\def\@eqDV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@DV{/DV(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@DV{}
-\def\ef@pdfCRLFTABDefns{%
- \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
-\def\@eqnuDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
-\def\@equDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
-\def\@eqV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@V{/V(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@V{}
-\def\@eqnuV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\def\eq@V{/V(#1)}\fi}
-\def\@equV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\def\eq@V{/V<#1>}\fi}%
-\def\@eqTU#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
- \def\eq@arg{#1}\let\r@save\r\let\r\textCR
- \ifx\eq@arg\@empty\let\eq@TU\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
- \let\r\r@save}\def\eq@TU{}
-\def\@equTU#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
-\def\@eqFf#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
- \def\eq@Ff{}
-\def\@eqMaxLen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
- \def\eq@MaxLen{}
-\def\@eqH#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
-\def\@eqMK#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
- \def\eq@MK{}
- \let\@vertRotate=0
- \def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
- \let\eq@R\@empty\else
- \@tempcnta=\eq@R@value\relax
- \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
- \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
- \let\@vertRotate=1\fi\fi
- \def\eq@R{/R #1}\fi}
- \def\eq@R{}
- \def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BC\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
- \edef\eq@BC{/BC [\eq@BC]}\else
- \def\eq@BC{/BC [#1]}\fi
- \fi}
- \def\eq@BC{}
- \def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BG\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
- \edef\eq@BG{/BG [\eq@BG]}\else
- \def\eq@BG{/BG [#1]}\fi
- \fi}
- \def\eq@BG{}
- \def\@eqCA#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@CA{#1}\edef\ef@kvCA{/CA(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@CA{}\def\ef@kvCA{}
- \def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
- \def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@RC{}\def\ef@kvRC{}
- \def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
- \def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@AC{}\def\ef@kvAC{}
- \def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
-\def\eq@define@IconMK{\def\eq@IconMK{\eq@I\eq@RI\eq@IX\eq@TP
- /IF<<\eq@SW\eq@ST\eq@PA\eq@FB>>}}
-\let\eq@IconMK\@empty
-\ifpdf\def\eq@relRef#1{0 0 R}\else %{#1\space 0 R}
- \ifxetex\def\eq@relRef#1{#1}\else
- \def\eq@relRef#1{{#1}}\fi\fi
-\def\ef@null{null}
-\def\@eqI#1{\ifx\annot@type\annot@type@button
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@I\@empty\else
- \def\eq@I{/I \eq@relRef{#1}}%
- \ifpdf\ifx\eq@arg\ef@null
- \def\eq@I{/I 0 0 R}\fi\fi
- \eq@define@IconMK\fi\fi}
-\def\eq@I{}
-\def\@eqRI#1{\ifx\annot@type\annot@type@button
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RI\@empty\else
- \def\eq@RI{/RI \eq@relRef{#1}}%
- \ifpdf\ifx\eq@arg\ef@null
- \def\eq@RI{/RI 0 0 R}\fi\fi
- \eq@define@IconMK\fi\fi}
-\def\eq@RI{}
-\def\@eqIX#1{\ifx\annot@type\annot@type@button
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@IX\@empty\else
- \def\eq@IX{/IX \eq@relRef{#1}}%
- \ifpdf\ifx\eq@arg\ef@null
- \def\eq@IX{/IX 0 0 R}\fi\fi
- \eq@define@IconMK\fi\fi}
-\def\eq@IX{}
-\def\@eqTP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
-\def\eq@TP{/TP 0} % default 0
-\def\@eqSW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
-\def\eq@SW{/SW/A} % the default, always scale
-\def\@eqST#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
-\def\eq@ST{/S/P} % the default, proportional scaling
-\def\@eqPA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
-\def\eq@PA{/A [0.5 0.5]} % the default
-\def\@eqFB#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
-\def\eq@FB{/FB false} % the default
-\def\@eqmkIns#1{\def\eq@mkIns{#1}}\def\eq@mkIns{}
-\def\@eqOpt#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Opt\@empty\else\def\eq@Opt{/Opt [#1]}\fi}
- \def\eq@Opt{}
-\def\@eqTI#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
- \def\eq@TI{}
-\def\@eqrawPDF#1{\def\eq@rawPDF{#1}}\def\eq@rawPDF{}
-\def\@eqQuadPoints#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@QuadPoints\@empty\else
- \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
-\def\eq@QuadPoints{}
-\def\@eqColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Color\@empty\else
- \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
- \edef\eq@Color{/C[\eq@Color]}\fi}
-\def\eq@Color{}
-\def\@eqlinktxtcolor#1{%
- \def\ef@argi{#1}\ifHy@colorlinks
- \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
- \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
-}\let\ef@linktxtcolor@set=0
-\def\@eqrectH#1{\def\eq@rectH{#1}\ifx\eq@rectH\@empty\else
- \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
-\def\@eqrectW#1{\def\eq@rectW{#1}\ifx\eq@rectW\@empty\else
- \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
-\def\@eqobjdef#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
- \def\eq@objdef{/_objdef {#1}}\fi
-}
-\let\eq@objdef\@empty
-\def\@eqtaborder#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@taborder\@empty\else
- \def\eq@taborder{#1}\fi
-}
-\let\eq@taborder\@empty
-\def\ef@y{y}\def\ef@n{n}
-\def\@eqautoCenter#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
- \let\autoCenter\ef@n\else\let\autoCenter\ef@y
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\autoCenter.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
-\let\autoCenter\ef@y
-\newif\ifeq@inlineCenter \eq@inlineCenterfalse
-\let\inlineCenter=n
-\def\@eqinline#1{\eq@inlineCenterfalse
- \def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\inlineCenter\ef@y\eq@inlineCentertrue\else
- \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\inline.\MessageBreak
- Using the default of 'n'}%
- \fi\fi}
-\def\@eqsymbolchoice#1{\expandafter\ifx\csname eq@#1\endcsname\relax
- \typeout{exerquiz: `#1' is not an acceptable option
- for \string\symbolechoice, inserting default, `check'.}
- \edef\symbol@choice{\eq@check}\else
- \edef\symbol@choice{\csname eq@#1\endcsname}\fi
-}
-\newif\iffixmlinks \fixmlinkstrue
-\def\mlfixOn{\fixmlinkstrue}
-\def\mlfixOff{\fixmlinksfalse}
-\def\@eqmlfix#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \mlfixOn\else\ifx\ef@arg\ef@n
- \mlfixOff\else\mlfixOn
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlfix.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
-\newbox\mlstrutbox
-\def\@eqmlstrut#1{\setbox\mlstrutbox\hbox{#1}%
- \def\ml@strut{\vrule \@height\ht\mlstrutbox
- \@depth\dp\mlstrutbox
- \@width\z@\relax}}
-\def\ml@strut{\relax\ifmmode\copy\mlstrutbox\else
- \unhbox\mlstrutbox\fi}
-\@eqmlstrut{\strut}
-\def\@eqmlcrackat#1{\def\eq@mlcrackat{#1}}
-\let\eq@mlcrackat\@empty
-\def\@eqmlhyph#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
- \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlhyph.\MessageBreak
- Using the default of 'n'}\fi\fi}
-\let\eq@mlhyph\@empty
-\def\@eqmlignore#1{\let\eq@mlignore\ef@YES}
-\let\eq@mlignore\ef@NO
-\def\@eqmlcrackinsat#1{\def\eq@mlcrackinsat{#1}}
-\let\eq@mlcrackinsat\@empty
-\def\eq@protect#1{\let#1\@empty}
-\begingroup\catcode`\#=12 \catcode`*=6
- \ifpdfmarkup
- \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
- \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\fi
-\endgroup
-\def\efHxError{\PackageError{eforms}{The glyph is not supported}{}}
-\def\HGERROR{efHxError}
-\ifpdfmarkup
- \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
- \global\@namedef{efHex#1}{\csname#2\endcsname}\else
- \global\@namedef{efHex#1}{\expandafter
- \string\csname#2\endcsname}\fi}
-\else
- \begingroup\catcode`\#=12 \catcode`*=6
- \gdef\HexGlyph*1*2{\def\arg@ii{*2}\ifx\arg@ii\HGERROR
- \global\@namedef{efHex*1}{\csname*2\endcsname}\else
- \global\@namedef{efHex*1}{#*1}\fi}
- \endgroup
-\fi
-\def\ef@inputPDFHEX{\InputIfFileExists{pdfdochex.def}
- {\PackageInfo{eforms}{Inputting pdfdochex.def}}{}}
-\AtEndOfPackage{\ef@inputPDFHEX}
-\def\ef@semicolon{;}
-\def\ef@stripsemi#1;\@nil{\def\ef@colorSpec@out{#1}}
-\def\ef@isitnamed{\let\ef@latex@color\ef@y
- \@ifnextchar[{\ef@gobbletonil}{%
- \@tfor\mytok:=.0123456789\do{%
- \if\mytok\@let@token
- \let\ef@latex@color\ef@n
- \@break@tfor\fi}\ef@gobbletonil}}
-\def\ef@gobbletonil#1\ef@nil{}
-\def\ef@parsePDFColor#1{\edef\ef@color@arg{#1}\ef@parsePDFColori}
-\def\ef@parsePDFColori{%
- \expandafter\ef@@parsePDFColor\ef@color@arg; ; ; ; ; ;\\}
-\def\ef@@parsePDFColor#1 #2 #3 #4 #5 #6\\{%
- \def\argii{#2}\def\ef@cmp{g;}%
- \ifx\argii\ef@cmp
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \def\ef@colorSpec@out{#1 g}\else
- \def\ef@colorSpec@out{[gray]{#1}}%
- \fi
- \else\ifx\argii\ef@semicolon
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \ef@isitnamed#1\ef@nil
- \ifx\ef@latex@color\ef@n
- \ef@stripsemi#1\@nil
- \edef\ef@colorSpec@out{\ef@colorSpec@out\space g}%
- \else
- \ef@stripsemi#1\@nil
- \PackageWarning{eforms}{Color specification
- `\ef@colorSpec@out' not supported\MessageBreak
- without xcolor, using a black color}
- \def\ef@colorSpec@out{0 g}%
- \fi
- \else % xcolor
- \ef@isitnamed#1\ef@nil
- \ifx\ef@latex@color\ef@n
- \ef@stripsemi#1\@nil
- \edef\ef@colorSpec@out{[gray]{\ef@colorSpec@out}}%
- \else
- \ef@stripsemi#1\@nil
- \edef\ef@colorSpec@out{\ef@colorSpec@out}%
- \fi
- \fi
- \else % not semicolon
- \def\argiv{#4}\def\ef@cmp{rg;}%
- \ifx\argiv\ef@cmp
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \def\ef@colorSpec@out{#1 #2 #3 rg}\else
- \def\ef@colorSpec@out{[rgb]{#1,#2,#3}}\fi
- \else\ifx\argiv\ef@semicolon
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \ef@stripsemi#1 #2 #3\@nil
- \edef\ef@colorSpec@out{\ef@colorSpec@out\space rg}\else
- \ef@stripsemi#3\@nil
- \edef\ef@colorSpec@out{[rgb]{#1,#2,\ef@colorSpec@out}}\fi
- \else
- \def\argv{#5}\edef\ef@cmp{k;}
- \ifx\argv\ef@cmp
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \def\ef@colorSpec@out{#1 #2 #3 #4 k}\else
- \def\ef@colorSpec@out{[cmyk]{#1,#2,#3,#4}}\fi
- \else
- \ifx\argv\ef@semicolon
- \ef@stripsemi#1 #2 #3 #4\@nil
- \expandafter\ifx\csname convertcolorspec\endcsname\relax
- \edef\ef@colorSpec@out{\ef@colorSpec@out\space k}\else
- \ef@stripsemi#4\@nil
- \edef\ef@colorSpec@out{%
- [cmyk]{#1,#2,#3,\ef@colorSpec@out}}\fi
- \else\ef@parseColor@iv
- \fi\fi\fi\fi\fi\fi
-}
-\def\ef@parseColor@iv{\PackageError{AeB}{%
- The number of arguments
- is incorrect.\MessageBreak I was expecting
- 1, 3, or 4 components of color}{Specify the correct number of
- components for the color space.}}
-\def\calcOrder#1{\let\efCalcOrder\@gobble
- \@for\coi:=#1\do{\edef\efCalcOrder{\efCalcOrder,"\coi"}}%
- \edef\efCalcOrder{[\efCalcOrder]}}
-\@onlypreamble\calcOrder
-\def\efCalcOrder{[]}
-\def\eq@check{4}
-\def\eq@circle{l}
-\def\eq@cross{8}
-\def\eq@diamond{u}
-\def\eq@square{n}
-\def\eq@star{H}
-\let\symbolchoice\@eqsymbolchoice
-\symbolchoice{check}
-\providecommand{\JS}[1]{/S/JavaScript/JS(#1)}
-\newcommand{\URI}[1]{/S/URI/URI(#1)}
-\providecommand{\Named}[1]{/S/Named/N/#1}
-\newcommand{\Next}[1]{/Next<<#1>>}
-\providecommand{\toggleAttachmentsPanel}[2]{%
- \setLink[\Border{0 0 0}\A{\Named{ShowHideFileAttachment}}]
- {\textcolor{#1}{#2}}}%
-\newcommand{\AAMouseUp}[1]{/U<<#1>>}
-\newcommand{\AAMouseDown}[1]{/D<<#1>>}
-\newcommand{\AAMouseEnter}[1]{/E<<#1>>}
-\newcommand{\AAMouseExit}[1]{/X<<#1>>}
-\newcommand{\AAOnFocus}[1]{/Fo<<#1>>}
-\newcommand{\AAOnBlur}[1]{/Bl<<#1>>}
-\newcommand{\AAFormat}[1]{/F<<\JS{#1}>>}
-\newcommand{\AAKeystroke}[1]{/K<<\JS{#1}>>}
-\newcommand{\AAValidate}[1]{/V<<\JS{#1}>>}
-\newcommand{\AACalculate}[1]{/C<<\JS{#1}>>}
-\newcommand{\AAPageOpen}[1]{/PO<<\JS{#1}>>}
-\newcommand{\AAPageClose}[1]{/PC<<\JS{#1}>>}
-\newcommand{\AAPageVisible}[1]{/PV<<\JS{#1}>>}
-\newcommand{\AAPageInvisible}[1]{/PI<<\JS{#1}>>}
-\newcommand{\definePath}[1]{\def\ef@ctrlName{#1}%
- \hyper@normalise\ef@definePath}
-\def\ef@definePath#1{\expandafter\xdef\ef@ctrlName{#1}}
-\def\FHidden{2} % bit 2: hidden field
-\def\FPrint{4} % bit 3: print (we set this bit by default)
-\def\FNoPrint{-4} % bit 3: -print (this clears the bit)
-\def\FNoView{32} % bit 6: no view
-\def\FLock{128} % bit 8: locked field (PDF 1.4)
-\def\FfReadOnly{1} % all
-\def\FfRequired{2} % all
-\def\FfNoExport{4} % all
-\def\FfMultiline{4096} % text
-\def\FfPassword{8192} % text
-\def\FfNoToggleToOff{16384} % radio
-\def\FfRadio{32768} % radio
-\def\FfPushButton{65536} % Push button
-\def\FfCombo{131072} % choice
-\def\FfEdit{262144} % combo
-\def\FfSort{524288} % choice
-\def\FfFileSelect{1048576} % text (PDF 1.4)
-\def\FfMultiSelect{2097152} % choice (PDF 1.4)
-\def\FfDoNotSpellCheck{4194304} % text, combo (PDF 1.4)
-\def\FfDoNotScroll{8388608} % text (PDF 1.4)
-\def\FfComb{16777216} % text (PDF 1.5)
-\def\FfRadiosInUnison{33554432} % radio (PDF 1.5)
-\def\FfCommitOnSelChange{67108864} % choice (PDF 1.5)
-\def\FfRichText{33554432} % radio (PDF 1.5)
-\def\getFfValue/Ff#1\@nil{\def\eq@FfValue{#1}}
-\def\getFValue/F#1\@nil{\def\eq@FValue{#1}}
-\def\@getCmdName#1{\edef\@CmdName{\expandafter\@gobble\string#1}}
-\newcommand{\everyTextField}[1]{\def\every@TextField{#1}}
-\def\every@TextField{}
-\newcommand{\everySigField}[1]{\def\every@sigField{#1}}
-\def\every@sigField{}
-\newcommand{\everyCheckBox}[1]{\def\every@CheckBox{#1}}
-\def\every@CheckBox{}
-\newcommand{\everyRadioButton}[1]{\def\every@RadioButton{#1}}
-\def\every@RadioButton{}
-\newcommand{\everyButtonField}[1]{\def\every@ButtonField{#1}}
-\def\every@ButtonField{}
-\newcommand{\everyPushButton}[1]{\def\every@PushButton{#1}}
-\def\every@PushButton{}
-\newcommand{\everyListBox}[1]{\def\every@listBox{#1}}
-\newcommand{\everyComboBox}[1]{\def\every@comboBox{#1}}
-\def\every@listBox{}\def\every@comboBox{}
-\newcommand{\everyLink}[1]{\def\every@Link{#1}}
-\def\every@Link{}
-\def\ef@adjrectWH#1{\dimen@ii#1\relax
- \ifx\eq@rectW\@empty\else
- \eflength\eq@rectW\relax
- \advance\eflength\dimen@ii
- \edef\eq@rectW{\the\eflength}%
- \eflength\eq@rectH\relax
- \advance\eflength\dimen@ii
- \edef\eq@rectH{\the\eflength}%
- \fi
-}
-\def\ef@djXPD{\ifxetex\ifmakeXasPD\ef@adjrectWH{2bp}\fi
- \else\ifmakePDasX\ef@adjrectWH{-2bp}\fi\fi}
-\def\ef@btnspcr{}
-\def\eq@setButtonProps#1#2{%
- \makeJSspecials
- \processAppArgs#2\end\@nil % set widget properties
- \ifx\eq@BC\@empty\@eqW{}\else
- \if\eq@W@value0\let\eq@BC\@empty\fi\fi
- \Hy@pdfstringfalse
- \ifx\eq@rectW\@empty
- \ifnum\eq@textSize=0 \else
- \dimen@=\eq@textSize bp
- \dimen@1.00375\dimen@
- \edef\eq@textSize@pt{\strip@pt\dimen@}%
- \fontsize{\eq@textSize@pt}{0}\selectfont
- \fi
- \dimen@\eq@W@value bp
- \def\eq@S@B{B}\ifx\eq@S@value\eq@S@B
- \def\eq@btn@sp{\hbox to2\dimen@{\hfill}}%
- \else
- \def\eq@btn@sp{\hbox to\dimen@{\hfill}}%
- \fi
- \expandafter\def\expandafter
- \ef@btnspcr\expandafter{\ef@btnspcr\eq@btn@sp}%
- \sbox{\eq@tmpbox}{\ef@btnspcr\eq@CA\ef@btnspcr}%
- \eq@tmpdima=\wd\eq@tmpbox
- \sbox{\eq@tmpbox}{\ef@btnspcr\eq@RC\ef@btnspcr}%
- \ifdim\eq@tmpdima>\wd\eq@tmpbox\else
- \eq@tmpdima=\wd\eq@tmpbox\fi%
- \sbox{\eq@tmpbox}{\ef@btnspcr\eq@AC\ef@btnspcr}%
- \ifdim\eq@tmpdima>\wd\eq@tmpbox\else
- \eq@tmpdima=\wd\eq@tmpbox\fi
- \ifmakePDasX\advance\eq@tmpdima2bp\fi
- \wd\eq@tmpbox=\eq@tmpdima
- \else
- \wd\eq@tmpbox=\eq@rectW
- \fi
- \ef@djXPD#1% dps 12/22
-}
-\def\eq@setWidgetProps#1#2{%
- \makeJSspecials
- \processAppArgs#2\end\@nil % set widget properties
- \ifx\annot@type@link\annot@type\else
- \ifx\eq@BC\@empty\@eqW{}\else
- \if\eq@W@value0\let\eq@BC\@empty\fi\fi
- \fi
- \ef@djXPD#1% dps 12/22
-}
-\def\ef@sanitize@toks{\@makeother\~\@makeother\#\@makeother\&%
- \@makeother\"\@makeother\_}
-\newcommand\efKern[2]{\ifxetex\kern#2\else\kern#1\fi}
-\newcommand\olBdry{\bgroup\ifxetex % dps 12/22
- \@tempdima-\g@eq@W@value@bp\relax
- \edef\@mtkern{\the\@tempdima}\else
- \@tempdima2bp\relax\advance\@tempdima-\g@eq@W@value@bp\relax % 12/26
- \edef\@mtkern{\the\@tempdima}\fi\kern\@mtkern\egroup
-}
-\newcommand\cgBdry[1][0bp]{\bgroup\def\ef@rgi{#1}\ifx\ef@rgi\@empty
- \def\ef@rgi{0bp}\fi\setlength{\@tempdima}{\ef@rgi}%
- \ifxetex\else\addtolength{\@tempdima}{2bp}\fi
- \kern\@tempdima\egroup\ignorespaces}
-\newcommand{\efSupprIndent}{\ef@scratchtoks=\expandafter{\the\everypar}%
- \everypar{{\setbox\z@\lastbox}\clubpenalty\@M
- \everypar=\expandafter{\the\ef@scratchtoks}}}
-\newcommand\volBdry{\bgroup\parskip0pt\relax\@@par\nointerlineskip
- \olBdry\egroup\efSupprIndent}
-\newcommand\vcgBdry{\@ifstar{\edef\ef@offset{\the\parskip}\vcgBdry@i}
- {\def\ef@offset{0pt}\vcgBdry@i}}
-\newcommand\vcgBdry@i[1][0bp]{\bgroup
- \setlength{\ef@dimena}{#1-\ef@offset}\parskip0pt\relax
- \par\nointerlineskip\cgBdry[\ef@dimena]%
- \egroup\ignorespaces\efSupprIndent}
-\def\common@choiceCode{%
- /Subtype/Widget
- /T (\Fld@name)
- /FT/Ch
- \eq@Ff
- \eq@F
- \eq@TU
- \eq@TI
- /BS << \eq@W\eq@S >>
- /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
- /DA (\eq@DA)
- /Opt [\eq@Opt]
- \eq@DV\eq@V
- \eq@A\eq@AA
- \eq@rawPDF
-}
-\def\eqf@setDimens#1#2{\@eqrectW{#1}\@eqrectH{#2}}
-\let\ef@@nil\relax
-\def\@gobbleto@@nil#1\ef@@nil{}%
-\long\def\g@addto@macrogobble#1#2{\g@addto@macro{#1}{#2}\@gobbleto@@nil}
-\def\passthruCLOpts{*}
-\def\ef@pdfstrCLOpt{\Hy@unicodefalse\def\eq@Opt{}\ef@pdfstrCLOpti}
-\def\ef@pdfstrCLOpti{\@ifnextchar\ef@@nil{\@gobble}{\ef@pdfstrCLOptia}}
-\def\ef@pdfstrCLOptia{\@ifnextchar[{\expandafter
- \ef@pdfstrOptWBii\@gobble}{\ef@pdfstrCLOptb}}
-\def\ef@pdfstrCLOptb{\@ifstar{\g@addto@macrogobble\eq@Opt}
- {\ef@pdfstrOptWPi}}
-\def\ef@pdfstrOptWBii{%
- \@ifnextchar({\ef@pdfstrOptWBiia}{\PackageError{eforms}
- {Left parenthesis expected here}{}}%
-}
-\def\ef@pdfstrOptWBiia(#1){%
- \g@addto@macro\eq@Opt{[(}%
- \pdfstringdef\@optTokstemp{#1}%
- \expandafter\g@addto@macro\expandafter\eq@Opt
- \expandafter{\@optTokstemp}%
- \@ifnextchar({\ef@pdfstrOptWBiib}{\PackageError{eforms}
- {Left parenthesis expected here}{}}%
-}
-\def\ef@pdfstrOptWBiib(#1){%
- \g@addto@macro\eq@Opt{)(}%
- \pdfstringdef\@optTokstemp{#1}%
- \expandafter\g@addto@macro\expandafter\eq@Opt
- \expandafter{\@optTokstemp}%
- \g@addto@macro\eq@Opt{)]}%
- \expandafter\ef@pdfstrCLOpti\@gobble
-}
-\def\ef@pdfstrOptWPi{\@ifnextchar\ef@@nil{\@gobble}{\ef@pdfstrOptWPii}}
-\def\ef@pdfstrOptWPii(#1){%
- \g@addto@macro\eq@Opt{(}%
- \pdfstringdef\@optTokstemp{#1}%
- \expandafter\g@addto@macro\expandafter\eq@Opt
- \expandafter{\@optTokstemp}%
- \g@addto@macro\eq@Opt{)}%
- \ef@pdfstrCLOpti}
-\def\annot@type@listbox{listbox}
-\newcommand\list@@Box[8]{\begingroup
- \edef\annot@type{\annot@type@listbox}%
- \pdfstringdef\Fld@name{#2}%
- \expandafter\ef@pdfstrCLOpt#5\ef@@nil
- \eqf@setDimens{#3}{#4}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@processEvery#8\end\noindent#6#7{#1}%
-}
-\def\listBoxDefaults{%
- \W{1}\S{I}\F{\FPrint}\BC{0 0 0}
-}
-\newcommand\listBox{\begingroup
- \ef@sanitize@toks\ef@listbox
-}
-\newcommand{\ef@listbox}[1][]{%
- \endgroup\ef@listBox[#1]%
-}
-\newcommand\ef@listBox[5][]{%
- \mbox{\list@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@choice@driver}{\listBoxDefaults\every@listBox}}%
-}
-\def\annot@type@combobox{combobox}
-\newcommand\combo@@Box[8]{\begingroup
- \edef\annot@type{\annot@type@combobox}%
- \@eqFf{\FfCombo}\pdfstringdef\Fld@name{#2}%
- \expandafter\ef@pdfstrCLOpt#5\ef@@nil
- \eqf@setDimens{#3}{#4}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@processEvery#8\end\noindent#6#7{#1}%
-}
-\def\comboBoxDefaults{%
- \W{1}\S{I}\F{\FPrint}\BC{0 0 0}
-}
-\newcommand\comboBox{\begingroup
- \ef@sanitize@toks\ef@combobox
-}
-\newcommand{\ef@combobox}[1][]{%
- \endgroup\ef@comboBox[#1]%
-}
-\newcommand\ef@comboBox[5][]{%
- \mbox{\combo@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@choice@driver}{\comboBoxDefaults\every@comboBox}}%
-}
-\def\common@pushButtonCode{%
- /Subtype/Widget
- /T (\Fld@name)
- /FT/Btn
- \eq@Ff
- \eq@TU
- \eq@H
- \eq@F
- /BS <<\eq@W\eq@S >>
-\ifx\eq@AP\@empty
- /MK <<\eq@R\eq@BC\eq@BG%
- \ef@kvCA\ef@kvRC\ef@kvAC\eq@IconMK\eq@mkIns>>
-\else
- \eq@AP
-\fi
- /DA (\eq@DA)
- \eq@A\eq@AA
- \eq@rawPDF
-}
-\def\common@RadioCheckCode{%
- /Subtype/Widget
- /T (\Fld@name)
- /FT/Btn
- \eq@Ff
- \eq@F
- \eq@TU
- /BS <<\eq@W\eq@S>>
-\ifx\eq@AP\@empty
- /AP<< /N <<\eq@On<<>>>> >>
- \eq@MK
-\else
- \eq@AP
-\fi
- /DA (\eq@DA)
- \eq@AS
- \eq@DV\eq@V
- \eq@A\eq@AA
- \eq@rawPDF
-}
-\def\annot@type@button{pushbtn}
-\newcommand\push@@Button[7]{\begingroup
- \edef\annot@type{\annot@type@button}%
- \pdfstringdef\Fld@name{#2}%\edef\Fld@name{#2}%
- \makeJSspecials\ef@preProcDefns
- \def\eq@Ff{/Ff \FfPushButton}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \eqf@setDimens{#3}{#4}%
- \@processEvery#7\end\noindent#5#6{#1}%
-}
-\def\pushButtonDefaults{%
- \W{1}\S{B}\F{\FPrint}\BC{0 0 0}
- \H{P}\BG{.7529 .7529 .7529}
-}
-\newcommand\pushButton{\begingroup
- \ef@sanitize@toks\ef@pushbutton
-}
-\newcommand{\ef@pushbutton}[1][]{%
- \endgroup\ef@pushButton[#1]%
-}
-\newcommand\ef@pushButton[4][]{%
- \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{%
- \eq@setButtonProps\eq@Button@driver}%
- {\pushButtonDefaults\every@PushButton}}%
-}
-\def\annot@type@checkbox{checkbox}
-\newcommand\check@@Box[8]
-{%
- \begingroup\let\#\ef@Hx
- \edef\annot@type{\annot@type@checkbox}%
- \pdfstringdef\Fld@name{#2}\@eqAS{Off}%
- \def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
- \else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
- \def\eq@DV{/DV/##1}\fi\fi}%
- \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
- \eqf@setDimens{#3}{#4}%
- \ifpdfmarkup\def\eq@On{(#5) cvn }\else
- \def\eq@On{/#5}\fi\@eqtextFont{ZaDb}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
- \@processEvery#8\end\noindent#6#7{#1}%
-}
-\def\checkBoxDefaults{%
- \F{\FPrint}\W{1}\S{S}\BC{0 0 0}%
-}
-\newcommand\checkBox{\begingroup
- \ef@sanitize@toks\ef@checkbox
-}
-\newcommand{\ef@checkbox}[5][]{%
- \endgroup\mbox{\check@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\checkBoxDefaults\every@CheckBox}}%
-}
-\def\annot@type@radio{radiobtn}
-\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
- \edef\annot@type{\annot@type@radio}%
- \pdfstringdef\Fld@name{#2}\@eqAS{Off}%
- \def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
- \else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
- \def\eq@DV{/DV/##1}\fi\fi}%
- \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
- \eqf@setDimens{#3}{#4}%
- \ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
- \def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
- \@processEvery#8\end\noindent#6#7{#1}%
-}
-\def\radioButtonDefaults
-{%
- \W{1}\S{S}\BC{0 0 0}\F{\FPrint}
-}
-\newcommand\radioButton{\begingroup
- \ef@sanitize@toks\ef@radiobutton
-}
-\newcommand{\ef@radiobutton}[5][]{\endgroup
- \mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}%
-}
-\newcommand\ef@radioButton[5][]
-{%
- \mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}%
-}
-\def\common@TextFieldCode
-{%
- /Subtype/Widget
- /T (\Fld@name)
- /FT/Tx
- \eq@Ff
- \eq@F
- \eq@Q
- \eq@TU
- \eq@MaxLen
- /BS <<\eq@W\eq@S>>
- /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
- /DA (\eq@DA)
- \eq@DV\eq@V
- \eq@RV\eq@DS
- \eq@A\eq@AA
- \eq@rawPDF
-}
-\def\annot@type@text{textfld}
-\newcommand\text@@Field[7]
-{%
- \begingroup
- \edef\annot@type{\annot@type@text}%
- \pdfstringdef\Fld@name{#2}\def\eq@Title{#2}%
- \eqf@setDimens{#3}{#4}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@processEvery#7\end\noindent#5#6{#1}%
-}
-\def\textFieldDefaults
-{%
- \F{\FPrint}\BC{0 0 0}\W{1}\S{S}
-}
-\newcommand\textField{\begingroup
- \ef@sanitize@toks\ef@textfield
-}
-\newcommand{\ef@textfield}[2][]{%
- \endgroup\ef@textField[#1]{#2}%
-}
-\newcommand\ef@textField[4][]
-{%
- \mbox{\text@@Field{#1}{#2}{#3}{#4}{}%
- {\eq@setWidgetProps\eq@TextField}%
- {\textFieldDefaults\every@TextField}}%
-}
-\let\eqTextField\textField
-\let\calcTextField\textField
-\def\common@SigFieldCode
-{%
- /Subtype /Widget
- /T (\Fld@name)
- /FT/Sig
- \eq@F
- \eq@TU
- /BS <<\eq@W\eq@S>>
- /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
- /DA (\eq@DA)
- \eq@Lock
- \eq@A\eq@AA
- \eq@rawPDF
-}
-\def\annot@type@sig{sigfld}
-\newcommand\sig@@Field[7]{%
- \begingroup
- \edef\annot@type{\annot@type@sig}%
- \pdfstringdef\Fld@name{#2}\def\eq@Title{#2}%
- \eqf@setDimens{#3}{#4}%
- \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
- \@processEvery#7\end\noindent#5#6{#1}%
-}
-\def\sigFieldDefaults
-{%
- \F{\FPrint}\BC{}\BG{}\W{1}\S{S}
-}
-\newcommand\sigField{\begingroup
- \ef@sanitize@toks\ef@sigfield
-}
-\newcommand{\ef@sigfield}[1][]{%
- \endgroup\ef@sigField[#1]%
-}
-\newcommand\ef@sigField[4][]
-{%
- \mbox{\sig@@Field{#1}{#2}{#3}{#4}{}{\eq@setWidgetProps\eq@SigField}%
- {\sigFieldDefaults\every@sigField}}%
-}
-\def\common@LinkCode
-{%
- \eq@A % Action
- \eq@H % Highlight
- \eq@Color % Border color
- \link@BS % Border styles
- \eq@rawPDF % everything else
-}
-\def\annot@type@link{link}
-\newcommand\set@@Link[7]
-{%
- \begingroup
- \makeJSspecials
- \edef\annot@type{\annot@type@link}%
- \ef@preProcDefns
- \eqf@setDimens{#2}{#3}%
- \ifx\eq@rectW\@empty\def\link@@Box{#4}\else
- \def\eq@arg{#4}\ifx\eq@arg\@empty
- \def\eq@content{\hfill\vfill}\else\def\eq@content{#4}\fi
- \def\link@@Box{\parbox[\eq@pos][\eq@rectH][\eq@innerpos]%
- {\eq@rectW}{\centering\eq@content}}%
- \fi
- \@processEvery#7\end\noindent#5#6{#1}%
-}
-\def\defaultlinkcolor{\@linkcolor}
-\def\setDef@ultLinkColor{\ifHy@colorlinks
- \def\ef@thislinkcolor{\defaultlinkcolor}
- \def\ef@colorthislink{\color{\ef@thislinkcolor}}\else
- \let\ef@colorthislink\relax\fi
-}
-\AtBeginDocument{\setDef@ultLinkColor}
-\def\set@LinkTextDefaults{\S{S}\Border{0 0 0}}
-\newcommand\setLink{\begingroup
- \ef@sanitize@toks\ef@setlinktext
-}
-\let\setLinkText\setLink
-\newcommand{\ef@setlinktext}[1][]{%
- \endgroup\ef@searchmlLink#1\mlLink\end\@nil
- \ifx\ef@mlLink\ef@Zero\def\ef@next{\set@LinkText[#1]}\else
- \def\ef@next{\mlhypertext[#1]}\fi\ef@next
-}
-\newcommand\set@LinkText[2][]{%
- \set@@Link{#1}{}{}{\ef@colorthislink#2}{}%
- {\eq@setWidgetProps{\ef@postProcLinkProps\setLink@driver}}%
- {\set@LinkTextDefaults\every@Link}%
-}
-\def\ef@preProcDefns{%
- \def\Win##1{/Win <<##1>>}%
- \def\fitpage{\dl@fitpage}\def\actualsize{\dl@actualsize}%
- \def\fitwidth{\dl@fitwidth}\def\fitheight{\dl@fitheight}%
- \def\fitvisible{\dl@fitvisible}\def\inheritzoom{\dl@inheritzoom}%
- \let\rPage\ef@rPage
- \edef\Page##1{\ifcase\eq@drivernum
- {Page##1}\or
- \noexpand\pdfpageref##1\space\space 0 R\or
- \noexpand @page##1\fi
- }%
-}
-\def\ef@postProcLinkProps{}
-\newcommand{\mlsetLink}{\mlhypertext}
-\newcommand{\mlhypertext}[2][]{\@ifundefined{mlhypertext@i}
- {\PackageWarning{eforms}{The \string\mlhypertext\space command
- does nothing unless\MessageBreak the aeb_mlink package is loaded}}{}%
- #2}
-\def\set@LinkBboxDefaults{\S{S}\Border{0 0 0}}
-\newcommand{\setLinkBbox}{\begingroup
- \ef@sanitize@toks\ef@linkbbox
-}
-\newcommand{\ef@linkbbox}[1][]{%
- \endgroup\ef@setLinkBbox[#1]%
-}
-\newcommand{\ef@setLinkBbox}[3][]{%
- \@setLinkBbox{#1}{#2}{#3}%
-}
-\def\@setLinkBbox#1#2#3{\@ifnextchar[{\@@setLinkBbox{#1}{#2}{#3}}%
- {\@@setLinkBbox{#1}{#2}{#3}[c]}}
-\def\@@setLinkBbox#1#2#3[#4]{%
- \@ifnextchar[{\@@@setLinkBbox{#1}{#2}{#3}{#4}}%
- {\@@@setLinkBbox{#1}{#2}{#3}{#4}[#4]}%
-}
-\def\@@@setLinkBbox#1#2#3#4[#5]#6{%
- \def\eq@pos{#4}\def\eq@innerpos{#5}%
- \set@@Link{#1}{#2}{#3}{\ef@colorthislink#6}%
- {\eq@setWidgetProps\setLink@driver}{}%
- {\set@LinkBboxDefaults\every@Link}%
-}
-\def\set@LinkPboxDefaults{\S{S}\Border{0 0 0}}
-\newcommand\setLinkPbox{\begingroup
- \ef@sanitize@toks\ef@linkpbox
-}
-\newcommand{\ef@linkpbox}[1]{%
- \endgroup\ef@setLinkPbox{#1}%
-}
-\newcommand\ef@setLinkPbox[1]{%
- \@setLinkPbox{#1\BS{}}{}{}{\hfill\vfill}%
-}
-\def\@setLinkPbox#1#2#3{\@ifnextchar[{\@@setLinkPbox{#1}{#2}{#3}}%
- {\@@setLinkPbox{#1}{#2}{#3}[c]}}
-\def\@@setLinkPbox#1#2#3[#4]{%
- \@ifnextchar[{\@@@setLinkPbox{#1}{#2}{#3}{#4}}%
- {\@@@setLinkPbox{#1}{#2}{#3}{#4}[#4]}
-}
-\def\@@@setLinkPbox#1#2#3#4[#5]#6{%
- \def\eq@pos{#4}\def\eq@innerpos{#5}%
- \set@@Link{#1}{#2}{#3}{#6}{\eq@setWidgetProps\setLinkPbox@driver}%
- {}{\set@LinkPboxDefaults\every@Link}%
-}
-\input{\eq@drivercode}
-\inputCalcOrderJS
-\endinput
-%%
-%% End of file `eforms.sty'.
+%%
+%% This is file `eforms.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{eforms}
+ [2018/08/16 v2.9.20 Provides general eforms support (dps)]
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{ifluatex}
+\RequirePackage{calc}
+\let\ef@driver\@empty
+\DeclareOption{dvipsone}{\def\eq@drivernum{0}%
+ \def\eq@drivername{0}\def\ef@driver{dvipsone}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvipsone}{insdljs}%
+ \PassOptionsToPackage{dvipsone}{hyperref}%
+}
+\def\eq@drivername{2}
+\DeclareOption{dvips}{\def\eq@drivernum{0}%
+ \def\eq@drivername{1}\def\ef@driver{dvips}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvips}{insdljs}%
+ \PassOptionsToPackage{dvips}{hyperref}%
+}
+\DeclareOption{pdftex}{%
+ \def\eq@drivernum{1}\def\eq@driver{pdftex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
+}
+\DeclareOption{luatex}{%
+ \def\eq@drivernum{1}\def\eq@driver{luatex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
+}
+\DeclareOption{dvipdfm}{%
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
+ \PassOptionsToPackage{dvipdfm}{insdljs}
+ \PassOptionsToPackage{dvipdfm}{hyperref}
+}
+\DeclareOption{dvipdfmx}{%
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
+ \PassOptionsToPackage{dvipdfmx}{insdljs}
+ \PassOptionsToPackage{dvipdfmx}{hyperref}
+}
+\DeclareOption{xetex}{%
+ \def\eq@drivernum{2}\def\eq@driver{xetex}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
+}
+\DeclareOption{textures}{%
+ \def\eq@drivernum{3}\def\eq@driver{textures}%
+ \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
+ \PassOptionsToPackage{textures}{insdljs}%
+ \PassOptionsToPackage{textures}{hyperref}
+}
+\def\eq@driver{dvipsone/dvips}
+\def\eq@drivercode{epdfmark.def}
+\DeclareOption{preview}{\previewtrue}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{insdljs}}
+\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
+\providecommand{\previewOn}{\previewtrue}
+\providecommand{\previewOff}{\previewfalse}
+\DeclareOption{useui}{\AtEndOfPackage{\ef@InputUIeForms}}
+\def\ef@InputUIeForms{\InputIfFileExists{uieforms.def}%
+ {\PackageInfo{eforms}{Inputting code for useui option}}%
+ {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}
+\DeclareOption{setcorder}{\def\inputCalcOrderJS{%
+ \InputIfFileExists{setcorder.def}%
+ {\PackageInfo{eforms}{Inputting code for setcorder option}}%
+ {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}}
+\let\inputCalcOrderJS\relax
+\@ifpackageloaded{web}{%
+ \ExecuteOptions{\eq@driver@name}%
+}{%
+ \@ifpackageloaded{exerquiz}{%
+ \ExecuteOptions{\eq@driver}%
+ }{%
+ \ifluatex\ExecuteOptions{luatex}\else
+ \ifpdf\ExecuteOptions{pdftex}\else
+ \ifxetex\ExecuteOptions{xetex}\else
+ \@ifundefined{l@tex@@@@driver}{\ExecuteOptions{dvips}}
+ {\ExecuteOptions{dvipsone}}\fi\fi\fi
+ }%
+}
+\ProcessOptions
+\ifx\ef@driver\@empty
+ \PackageError{eforms}%
+ {You have not specified dvips, dvipsone, pdftex,\MessageBreak
+ dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
+ the eforms package}
+ {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the eforms package.}%
+}{}
+\fi
+\newlength\eflength
+\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
+\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
+\RequirePackage{hyperref}
+\ifxetex\else\ifpdf\pdflinkmargin1bp\relax\else
+ \g@addto@macro\Hy@FirstPageHook{%
+ \headerps@out{/HyperBorder {1.00375 PDFToDvips} def}}
+\fi\fi
+\RequirePackage{insdljs}[2017/01/03] % incl conv-xkv
+\@ifpackageloaded{exerquiz}{}{%
+ \AtBeginDocument{\Form}
+ \AtEndDocument{\csname endForm\endcsname}
+}
+\@ifpackageloaded{aeb_pro}{}{%
+ \newcommand{\taggedPDF}{%
+ \ifnum\eq@drivernum=0\relax
+ \literalps@out{[{Catalog} <<%
+ /MarkInfo<</Marked true>>%
+ >> /PUT pdfmark}\fi}%
+}
+\let\ef@YES=y \let\ef@NO=n
+\let\ef@One=1 \let\ef@Zero=0
+\ifnum\eq@drivername<2
+\let\to@usepdfmark\ef@One
+\RequirePackage[structure]{taborder}\else
+\let\to@usepdfmark\ef@Zero
+\RequirePackage{taborder}
+\fi
+\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}
+\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{}
+\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
+\newlength\ef@dimena
+\newtoks\ef@scratchtoks
+\newif\ifmakeXasPD \makeXasPDtrue % 12/22
+\newif\ifmakePDasX \makePDasXfalse
+\def\makeXasPDOn{\makeXasPDtrue\makePDasXfalse}
+\def\makeXasPDOff{\makeXasPDfalse}
+\def\makePDasXOn{\makePDasXtrue\makeXasPDfalse}
+\def\makePDasXOff{\makePDasXfalse}
+\providecommand\ckboxColor[1]{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\ckbox@Color\relax\else
+ \def\ckbox@Color{\color{#1}}\fi}\let\ckbox@Color\relax
+\def\ef@Bbox#1#2{\hbox{\ifpreview
+ \setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
+ \@tempdima=#1\advance\@tempdima by-\fboxrule
+ \@tempdimb=#2\advance\@tempdimb by-\fboxrule \ckbox@Color
+ \fbox{\parbox[b][\@tempdimb][c]{\@tempdima}{\hfill\vfill}}\else
+ \parbox[b][#2][c]{#1}{\hfill\vfill}\fi}%
+}
+\let\Bbox\ef@Bbox
+\let\ef@passedArgs\@empty
+\def\processAppArgs#1#2{%
+ \ifx\end#1% if #1=\end, #2=\@nil.
+ \let\ef@next\relax
+ \else
+ \ifx#1\@empty
+ \def\ef@next{\processAppArgs}%
+ \else
+ \@getCmdName{\ui}\edef\arg@ui{\@CmdName}%
+ \@getCmdName{#1}%
+ \ifx\arg@ui\@CmdName
+ \@ifundefined{@equi}{\PackageError{eforms}%
+ {The user interface '\string\ui' is not defined!%
+ \MessageBreak Use the useui option of eforms
+ and try again}{I said, use the useui option of
+ eforms and try again!}}{}%
+ \def\ef@next{\setkeys{eforms}{#2}%
+ \processAppArgs\presets{\ef@passedArgs}}%
+ \else
+ \@getCmdName{\Ff}\edef\arg@Ff{\@CmdName}%
+ \@getCmdName{#1}%
+ \ifx\arg@Ff\@CmdName % if \Ff, let's add arguments
+ \ifx\eq@Ff\@empty\def\eq@FfValue{0}\else
+ \expandafter\getFfValue\eq@Ff\@nil\fi
+ \@tempcnta=\eq@FfValue
+ \def\eq@arg{#2}%
+ \ifx\eq@arg\@empty\else
+ \advance\@tempcnta by#2\fi
+ \edef\eq@Ff{/Ff \the\@tempcnta}%
+ \def\ef@next{\processAppArgs}%
+ \else
+ \@getCmdName{\F}\edef\arg@F{\@CmdName}%
+ \@getCmdName{#1}%
+ \ifx\arg@F\@CmdName % if \Ff, let's add arguments
+ \ifx\eq@F\@empty\def\eq@FValue{0}\else
+ \expandafter\getFValue\eq@F\@nil\fi
+ \@tempcnta=\eq@FValue
+ \def\eq@arg{#2}%
+ \ifx\eq@arg\@empty\else
+ \advance\@tempcnta by#2\fi
+ \edef\eq@F{/F \the\@tempcnta}%
+ \def\ef@next{\processAppArgs}%
+ \else
+ \@getCmdName{\presets}%
+ \edef\arg@presets{\@CmdName}\@getCmdName{#1}%
+ \ifx\arg@presets\@CmdName
+ \def\ef@next{\expandafter\processAppArgs#2}%
+ \else
+ \csname @eq%
+ \expandafter\@gobble\string#1\endcsname{#2}%
+ \def\ef@next{\processAppArgs}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \ef@next
+}
+\def\@processEvery{\edef\eqtemp{}\toks0={}\@@processEvery}
+\def\@@processEvery#1{%
+ \ifx#1\end\def\ef@next{\the\toks0 }%
+ \else
+ \edef\eqtemp{\the\toks0 }%
+ \toks0=\expandafter{\eqtemp
+ \expandafter\processAppArgs#1\end\@nil}%
+ \def\ef@next{\@@processEvery}%
+ \fi
+ \ef@next
+}
+\newdimen\eqcenterWidget
+\def\centerWidget#1{%
+ \ifeq@inlineCenter
+ \eqcenterWidget=#1\relax
+ \eqcenterWidget=.5\eqcenterWidget
+ \ifnum\eq@textSize=0\relax
+ \dimen@=-\eq@textSizeDefault bp\else
+ \dimen@=-\eq@textSize bp\fi
+ \dimen@=0.9167\dimen@ % 11/12
+ \dimen@=.5\dimen@
+ \advance\dimen@\eq@W@value bp
+ \ifx\eq@S\@empty\else
+ \def\eq@S@cmp{B}%
+ \ifx\eq@S@value\eq@S@cmp
+ \advance\dimen@ by \eq@W@value bp
+ \else
+ \def\eq@S@cmp{I}%
+ \ifx\eq@S@value\eq@S@cmp
+ \advance\dimen@ by \eq@W@value bp
+ \else\advance\dimen@ by 1bp
+ \fi\fi\fi
+ \advance\eqcenterWidget by \dimen@
+ \else
+ \eqcenterWidget=#1\relax
+ \eqcenterWidget=.5\eqcenterWidget
+ \advance\eqcenterWidget by -4bp
+ \fi
+}
+\def\@eqF#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@F\@empty\else\def\eq@F{/F #1}\fi}\def\eq@F{}
+\def\@eqBS#1{%
+ \let\eq@BS=0\relax
+ \ifx\eq@W\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@S\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@D\@empty\else\let\eq@BS=1\fi
+ \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
+ \ifx\eq@W\@empty\let\link@BS\@empty\fi
+}\def\link@BS{}
+\def\@eqpresets#1{#1}%
+\def\@eqW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@W\@empty\def\eq@W@value{0}\else
+ \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
+ \xdef\g@eq@W@value@bp{\eq@W@value bp}}
+\def\eq@W{}\def\eq@W@value{0}
+\def\g@eq@W@valu@bp{0bp} % dps 12/22
+\def\@eqS#1{\def\eq@S@value{#1}\ifx\eq@S@value\@empty
+ \let\eq@S\@empty\else
+ \def\eq@S{/S/#1}\def\eq@temp{D}%
+ \ifx\eq@S@value\eq@temp
+ \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
+ \fi\fi}\def\eq@S{}
+\def\@eqD#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@D\@empty\else
+ \def\eq@D{/D [#1]}\fi}\def\eq@D{}
+\def\@eqBorder#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Border\@empty\else\def\eq@Border{/Border [#1]}\fi}%
+\def\eq@Border{/Border [0 0 0]}
+\def\@eqAP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AP\@empty\else\def\eq@AP{/AP<<#1>>}\fi}%
+ \let\eq@AP\@empty
+ \def\@eqOn#1{\def\eq@On{/#1}}\def\eq@On{/Yes}
+\def\@eqAS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AS\@empty\else\ifpdfmarkup\def\eq@AS{/AS(#1) cvn }\else
+ \def\eq@AS{/AS/#1}\fi\fi}\def\eq@AS{}
+\def\ef@gobbleToendmarker#1\ef@endmarker{}
+\let\ef@endmarker\relax
+\def\ef@end{\end}\def\ef@true{true}
+\def\ef@rPage#1{\@tempcnta=#1\relax\advance\@tempcnta-1
+ \edef\rPage##1{\the\@tempcnta}}
+\long\def\ef@searchrPage#1\rPage#2#3\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
+\def\ef@searchmlLink#1\mlLink#2#3\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
+ \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
+ \let\ef@mlLink\ef@Zero\fi\fi}
+\def\ef@searchGoToR#1/GoToR#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@filecolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@searchURI#1/URI#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@searchCmdURI#1\URI#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@searchNamed#1/Named#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@searchCmdNamed#1\Named#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@searchLaunch#1/Launch#2\@nil{\def\ef@argii{#2}%
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@runcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
+\def\ef@preprocessA#1{%
+ \let\rPage\relax\edef\ef@argi{#1}%
+ \ifx\annot@type\annot@type@link
+ \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
+ \expandafter\ef@searchURI\ef@argi/URI\end\@nil
+ \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
+ \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
+ \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
+ \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
+ \ef@endmarker\fi
+ \let\rPage\ef@rPage
+ \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
+}
+\def\@eqA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@A\@empty\else\ef@preprocessA{#1}%
+ \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
+\def\@eqmlLink#1{\def\eq@arg{#1}\ifx\eq@arg\ef@true
+ \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
+\def\@eqLock#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
+ \def\eq@Lock{}
+\newif\ifisCalculate\isCalculatefalse
+\def\ef@searchCalc#1\AACalculate#2\@nil{%
+ \ifx#2\end\else\aftergroup\isCalculatetrue\fi
+}
+\def\@eqAA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty\let\eq@AA\@empty
+ \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
+ \def\eq@AA{/AA <<#1>>}\fi}
+\def\eq@AA{/AA <<\eq@AAmouseup\eq@AAmousedown\eq@AAmouseenter%
+ \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
+ \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
+ \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
+\def\@eqAAmouseup#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
+\let\eq@AAmouseup\@empty
+\def\@eqAAmousedown#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAmousedown\@empty\else
+ \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
+\let\eq@AAmousedown\@empty
+\def\@eqAAmouseenter#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAmouseenter\@empty\else
+ \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
+\let\eq@AAmouseenter\@empty
+\def\@eqAAmouseexit#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAmouseexit\@empty\else
+ \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
+\let\eq@AAmouseexit\@empty
+\def\@eqAAonfocus#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAonfocus\@empty\else
+ \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
+\def\@eqAAmousefocus{\@eqAAonfocus}
+\let\eq@AAonfocus\@empty
+\def\@eqAAonblur#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAonblur\@empty\else
+ \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
+\def\@eqAAmouseblur{\def\@eqAAonblur}
+\let\eq@AAonblur\@empty
+\def\@eqAAformat#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAformat\@empty\else
+ \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
+\let\eq@AAformat\@empty
+\def\@eqAAkeystroke#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAkeystroke\@empty\else
+ \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
+\let\eq@AAkeystroke\@empty
+\def\@eqAAvalidate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAvalidate\@empty\else
+ \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
+\let\eq@AAvalidate\@empty
+\def\@eqAAcalculate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AAcalculate\@empty\else\isCalculatetrue
+ \def\eq@AAcalculate{/C<<\JS{#1}>>}\fi}
+\let\eq@AAcalculate\@empty
+\def\@eqAApageopen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AApageopen\@empty\else
+ \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
+\let\eq@AApageopen\@empty
+\def\@eqAApageclose#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AApageclose\@empty\else
+ \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
+\let\eq@AApageclose\@empty
+\def\@eqAApagevisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AApagevisible\@empty\else
+ \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
+\let\eq@AApagevisible\@empty
+\def\@eqAApageinvisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AApageinvisible\@empty\else
+ \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
+\let\eq@AApageinvisible\@empty
+\def\@eqDA#1{\def\eq@DA{#1}}
+\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+\def\@eqtextFont#1{\def\eq@textFont{/#1}}
+\def\eq@textFont{/Helv}
+\def\@eqtextSize#1{\def\eq@textSize{#1}}
+\def\eq@textSizeDefault{9}
+\edef\eq@textSize{\eq@textSizeDefault}
+\def\eq@RV@Body{<?xml version="1.0"?><body %
+ xfa:APIVersion="Acroform:2.7.0.0" %
+ xfa:contentType="text/html" %
+ xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
+ xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
+\def\eq@RV@endBody{</body>}
+\def\@eqRV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
+ \eq@RV@endBody)\fi}}\def\eq@RV{}
+\def\@eqDS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
+\def\@eqtextColor#1{\ef@parsePDFColor{#1}%
+ \HyColor@IfXcolor{%
+ \expandafter\HyColor@FieldColor%
+ \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
+ }{\edef\eq@textColor{\ef@colorSpec@out}}%
+}
+\def\eq@textColor{0 g}
+\def\@eqQ#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
+\def\ef@isunicode#1\unicodeStr#2\@nil{\def\argi{#1}%
+ \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
+ \def\ifbool@ef{iffalse}\fi}
+\def\@eqDV#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DV\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@DV{/DV(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@DV{}
+\def\ef@pdfCRLFTABDefns{%
+ \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
+\def\@eqnuDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
+\def\@equDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
+\def\@eqV#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equV{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@V\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@V{/V(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@V{}
+\def\@eqnuV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@V\@empty\else\def\eq@V{/V(#1)}\fi}
+\def\@equV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@V\@empty\else\def\eq@V{/V<#1>}\fi}%
+\def\@eqTU#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
+ \def\eq@arg{#1}\let\r@save\r\let\r\textCR
+ \ifx\eq@arg\@empty\let\eq@TU\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
+ \let\r\r@save}\def\eq@TU{}
+\def\@equTU#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
+\def\@eqFf#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
+ \def\eq@Ff{}
+\def\@eqMaxLen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
+ \def\eq@MaxLen{}
+\def\@eqH#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
+\def\@eqMK#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
+ \def\eq@MK{}
+ \let\@vertRotate=0
+ \def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
+ \let\eq@R\@empty\else
+ \@tempcnta=\eq@R@value\relax
+ \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
+ \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
+ \let\@vertRotate=1\fi\fi
+ \def\eq@R{/R #1}\fi}
+ \def\eq@R{}
+ \def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BC\@empty\else % 2010/07/23
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
+ \edef\eq@BC{/BC [\eq@BC]}\else
+ \def\eq@BC{/BC [#1]}\fi
+ \fi}
+ \def\eq@BC{}
+ \def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BG\@empty\else % 2010/07/23
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
+ \edef\eq@BG{/BG [\eq@BG]}\else
+ \def\eq@BG{/BG [#1]}\fi
+ \fi}
+ \def\eq@BG{}
+ \def\@eqCA#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@CA\@empty\let\ef@kvCA\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@CA{#1}\edef\ef@kvCA{/CA(\ef@uni@temp)}%
+ \makespecialJS\fi\fi}
+ \def\eq@CA{}\def\ef@kvCA{}
+ \def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@CA\@empty\let\ef@kvCA\@empty
+ \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
+ \def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
+ \makespecialJS\fi\fi}
+ \def\eq@RC{}\def\ef@kvRC{}
+ \def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
+ \def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
+ \makespecialJS\fi\fi}
+ \def\eq@AC{}\def\ef@kvAC{}
+ \def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
+\def\eq@define@IconMK{\def\eq@IconMK{\eq@I\eq@RI\eq@IX\eq@TP
+ /IF<<\eq@SW\eq@ST\eq@PA\eq@FB>>}}
+\let\eq@IconMK\@empty
+\ifpdf\def\eq@relRef#1{0 0 R}\else %{#1\space 0 R}
+ \ifxetex\def\eq@relRef#1{#1}\else
+ \def\eq@relRef#1{{#1}}\fi\fi
+\def\ef@null{null}
+\def\@eqI#1{\ifx\annot@type\annot@type@button
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@I\@empty\else
+ \def\eq@I{/I \eq@relRef{#1}}%
+ \ifpdf\ifx\eq@arg\ef@null
+ \def\eq@I{/I 0 0 R}\fi\fi
+ \eq@define@IconMK\fi\fi}
+\def\eq@I{}
+\def\@eqRI#1{\ifx\annot@type\annot@type@button
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RI\@empty\else
+ \def\eq@RI{/RI \eq@relRef{#1}}%
+ \ifpdf\ifx\eq@arg\ef@null
+ \def\eq@RI{/RI 0 0 R}\fi\fi
+ \eq@define@IconMK\fi\fi}
+\def\eq@RI{}
+\def\@eqIX#1{\ifx\annot@type\annot@type@button
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@IX\@empty\else
+ \def\eq@IX{/IX \eq@relRef{#1}}%
+ \ifpdf\ifx\eq@arg\ef@null
+ \def\eq@IX{/IX 0 0 R}\fi\fi
+ \eq@define@IconMK\fi\fi}
+\def\eq@IX{}
+\def\@eqTP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
+\def\eq@TP{/TP 0} % default 0
+\def\@eqSW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
+\def\eq@SW{/SW/A} % the default, always scale
+\def\@eqST#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
+\def\eq@ST{/S/P} % the default, proportional scaling
+\def\@eqPA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
+\def\eq@PA{/A [0.5 0.5]} % the default
+\def\@eqFB#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
+\def\eq@FB{/FB false} % the default
+\def\@eqmkIns#1{\def\eq@mkIns{#1}}\def\eq@mkIns{}
+\def\@eqOpt#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Opt\@empty\else\def\eq@Opt{/Opt [#1]}\fi}
+ \def\eq@Opt{}
+\def\@eqTI#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
+ \def\eq@TI{}
+\def\@eqrawPDF#1{\def\eq@rawPDF{#1}}\def\eq@rawPDF{}
+\def\@eqQuadPoints#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@QuadPoints\@empty\else
+ \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
+\def\eq@QuadPoints{}
+\def\@eqColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@Color\@empty\else
+ \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
+ \edef\eq@Color{/C[\eq@Color]}\fi}
+\def\eq@Color{}
+\def\@eqlinktxtcolor#1{%
+ \def\ef@argi{#1}\ifHy@colorlinks
+ \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
+ \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
+}\let\ef@linktxtcolor@set=0
+\def\@eqrectH#1{\def\eq@rectH{#1}\ifx\eq@rectH\@empty\else
+ \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
+\def\@eqrectW#1{\def\eq@rectW{#1}\ifx\eq@rectW\@empty\else
+ \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
+\def\@eqobjdef#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
+ \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
+ \def\eq@objdef{/_objdef {#1}}\fi
+}
+\let\eq@objdef\@empty
+\def\@eqtaborder#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
+ \let\eq@taborder\@empty\else
+ \def\eq@taborder{#1}\fi
+}
+\let\eq@taborder\@empty
+\def\ef@y{y}\def\ef@n{n}
+\def\@eqautoCenter#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
+ \let\autoCenter\ef@n\else\let\autoCenter\ef@y
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\autoCenter.\MessageBreak
+ Using the default of 'y'}%
+ \fi\fi}
+\let\autoCenter\ef@y
+\newif\ifeq@inlineCenter \eq@inlineCenterfalse
+\let\inlineCenter=n
+\def\@eqinline#1{\eq@inlineCenterfalse
+ \def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \let\inlineCenter\ef@y\eq@inlineCentertrue\else
+ \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\inline.\MessageBreak
+ Using the default of 'n'}%
+ \fi\fi}
+\def\@eqsymbolchoice#1{\expandafter\ifx\csname eq@#1\endcsname\relax
+ \typeout{exerquiz: `#1' is not an acceptable option
+ for \string\symbolechoice, inserting default, `check'.}
+ \edef\symbol@choice{\eq@check}\else
+ \edef\symbol@choice{\csname eq@#1\endcsname}\fi
+}
+\newif\iffixmlinks \fixmlinkstrue
+\def\mlfixOn{\fixmlinkstrue}
+\def\mlfixOff{\fixmlinksfalse}
+\def\@eqmlfix#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \mlfixOn\else\ifx\ef@arg\ef@n
+ \mlfixOff\else\mlfixOn
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlfix.\MessageBreak
+ Using the default of 'y'}%
+ \fi\fi}
+\newbox\mlstrutbox
+\def\@eqmlstrut#1{\setbox\mlstrutbox\hbox{#1}%
+ \def\ml@strut{\vrule \@height\ht\mlstrutbox
+ \@depth\dp\mlstrutbox
+ \@width\z@\relax}}
+\def\ml@strut{\relax\ifmmode\copy\mlstrutbox\else
+ \unhbox\mlstrutbox\fi}
+\@eqmlstrut{\strut}
+\def\@eqmlcrackat#1{\def\eq@mlcrackat{#1}}
+\let\eq@mlcrackat\@empty
+\def\@eqmlhyph#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
+ \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlhyph.\MessageBreak
+ Using the default of 'n'}\fi\fi}
+\let\eq@mlhyph\@empty
+\def\@eqmlignore#1{\def\eq@mlchunk{#1}\ifx\eq@mlchunk\@empty
+ \def\eq@mlchunk{0}\fi\let\eq@mlignore\ef@YES}
+\def\eq@mlchunk{0}
+\let\eq@mlignore\ef@NO
+\def\@eqmlcrackinsat#1{\def\eq@mlcrackinsat{#1}}
+\let\eq@mlcrackinsat\@empty
+\def\eq@protect#1{\let#1\@empty}
+\begingroup\catcode`\#=12 \catcode`*=6
+ \ifpdfmarkup
+ \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
+ \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\fi
+\endgroup
+\def\efHxError{\PackageError{eforms}{The glyph is not supported}{}}
+\def\HGERROR{efHxError}
+\ifpdfmarkup
+ \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex#1}{\csname#2\endcsname}\else
+ \global\@namedef{efHex#1}{\expandafter
+ \string\csname#2\endcsname}\fi}
+\else
+ \begingroup\catcode`\#=12 \catcode`*=6
+ \gdef\HexGlyph*1*2{\def\arg@ii{*2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex*1}{\csname*2\endcsname}\else
+ \global\@namedef{efHex*1}{#*1}\fi}
+ \endgroup
+\fi
+\def\ef@inputPDFHEX{\InputIfFileExists{pdfdochex.def}
+ {\PackageInfo{eforms}{Inputting pdfdochex.def}}{}}
+\AtEndOfPackage{\ef@inputPDFHEX}
+\def\ef@semicolon{;}
+\def\ef@stripsemi#1;\@nil{\def\ef@colorSpec@out{#1}}
+\def\ef@isitnamed{\let\ef@latex@color\ef@y
+ \@ifnextchar[{\ef@gobbletonil}{%
+ \@tfor\mytok:=.0123456789\do{%
+ \if\mytok\@let@token
+ \let\ef@latex@color\ef@n
+ \@break@tfor\fi}\ef@gobbletonil}}
+\def\ef@gobbletonil#1\ef@nil{}
+\def\ef@parsePDFColor#1{\edef\ef@color@arg{#1}\ef@parsePDFColori}
+\def\ef@parsePDFColori{%
+ \expandafter\ef@@parsePDFColor\ef@color@arg; ; ; ; ; ;\\}
+\def\ef@@parsePDFColor#1 #2 #3 #4 #5 #6\\{%
+ \def\argii{#2}\def\ef@cmp{g;}%
+ \ifx\argii\ef@cmp
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \def\ef@colorSpec@out{#1 g}\else
+ \def\ef@colorSpec@out{[gray]{#1}}%
+ \fi
+ \else\ifx\argii\ef@semicolon
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \ef@isitnamed#1\ef@nil
+ \ifx\ef@latex@color\ef@n
+ \ef@stripsemi#1\@nil
+ \edef\ef@colorSpec@out{\ef@colorSpec@out\space g}%
+ \else
+ \ef@stripsemi#1\@nil
+ \PackageWarning{eforms}{Color specification
+ `\ef@colorSpec@out' not supported\MessageBreak
+ without xcolor, using a black color}
+ \def\ef@colorSpec@out{0 g}%
+ \fi
+ \else % xcolor
+ \ef@isitnamed#1\ef@nil
+ \ifx\ef@latex@color\ef@n
+ \ef@stripsemi#1\@nil
+ \edef\ef@colorSpec@out{[gray]{\ef@colorSpec@out}}%
+ \else
+ \ef@stripsemi#1\@nil
+ \edef\ef@colorSpec@out{\ef@colorSpec@out}%
+ \fi
+ \fi
+ \else % not semicolon
+ \def\argiv{#4}\def\ef@cmp{rg;}%
+ \ifx\argiv\ef@cmp
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \def\ef@colorSpec@out{#1 #2 #3 rg}\else
+ \def\ef@colorSpec@out{[rgb]{#1,#2,#3}}\fi
+ \else\ifx\argiv\ef@semicolon
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \ef@stripsemi#1 #2 #3\@nil
+ \edef\ef@colorSpec@out{\ef@colorSpec@out\space rg}\else
+ \ef@stripsemi#3\@nil
+ \edef\ef@colorSpec@out{[rgb]{#1,#2,\ef@colorSpec@out}}\fi
+ \else
+ \def\argv{#5}\edef\ef@cmp{k;}
+ \ifx\argv\ef@cmp
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \def\ef@colorSpec@out{#1 #2 #3 #4 k}\else
+ \def\ef@colorSpec@out{[cmyk]{#1,#2,#3,#4}}\fi
+ \else
+ \ifx\argv\ef@semicolon
+ \ef@stripsemi#1 #2 #3 #4\@nil
+ \expandafter\ifx\csname convertcolorspec\endcsname\relax
+ \edef\ef@colorSpec@out{\ef@colorSpec@out\space k}\else
+ \ef@stripsemi#4\@nil
+ \edef\ef@colorSpec@out{%
+ [cmyk]{#1,#2,#3,\ef@colorSpec@out}}\fi
+ \else\ef@parseColor@iv
+ \fi\fi\fi\fi\fi\fi
+}
+\def\ef@parseColor@iv{\PackageError{AeB}{%
+ The number of arguments
+ is incorrect.\MessageBreak I was expecting
+ 1, 3, or 4 components of color}{Specify the correct number of
+ components for the color space.}}
+\def\calcOrder#1{\let\efCalcOrder\@gobble
+ \@for\coi:=#1\do{\edef\efCalcOrder{\efCalcOrder,"\coi"}}%
+ \edef\efCalcOrder{[\efCalcOrder]}}
+\@onlypreamble\calcOrder
+\def\efCalcOrder{[]}
+\def\eq@check{4}
+\def\eq@circle{l}
+\def\eq@cross{8}
+\def\eq@diamond{u}
+\def\eq@square{n}
+\def\eq@star{H}
+\let\symbolchoice\@eqsymbolchoice
+\symbolchoice{check}
+\providecommand{\JS}[1]{/S/JavaScript/JS(#1)}
+\newcommand{\URI}[1]{/S/URI/URI(#1)}
+\providecommand{\Named}[1]{/S/Named/N/#1}
+\newcommand{\Next}[1]{/Next<<#1>>}
+\providecommand{\toggleAttachmentsPanel}[2]{%
+ \setLink[\Border{0 0 0}\A{\Named{ShowHideFileAttachment}}]
+ {\textcolor{#1}{#2}}}%
+\newcommand{\AAMouseUp}[1]{/U<<#1>>}
+\newcommand{\AAMouseDown}[1]{/D<<#1>>}
+\newcommand{\AAMouseEnter}[1]{/E<<#1>>}
+\newcommand{\AAMouseExit}[1]{/X<<#1>>}
+\newcommand{\AAOnFocus}[1]{/Fo<<#1>>}
+\newcommand{\AAOnBlur}[1]{/Bl<<#1>>}
+\newcommand{\AAFormat}[1]{/F<<\JS{#1}>>}
+\newcommand{\AAKeystroke}[1]{/K<<\JS{#1}>>}
+\newcommand{\AAValidate}[1]{/V<<\JS{#1}>>}
+\newcommand{\AACalculate}[1]{/C<<\JS{#1}>>}
+\newcommand{\AAPageOpen}[1]{/PO<<\JS{#1}>>}
+\newcommand{\AAPageClose}[1]{/PC<<\JS{#1}>>}
+\newcommand{\AAPageVisible}[1]{/PV<<\JS{#1}>>}
+\newcommand{\AAPageInvisible}[1]{/PI<<\JS{#1}>>}
+\newcommand{\definePath}[1]{\def\ef@ctrlName{#1}%
+ \hyper@normalise\ef@definePath}
+\def\ef@definePath#1{\expandafter\xdef\ef@ctrlName{#1}}
+\def\FHidden{2} % bit 2: hidden field
+\def\FPrint{4} % bit 3: print (we set this bit by default)
+\def\FNoPrint{-4} % bit 3: -print (this clears the bit)
+\def\FNoView{32} % bit 6: no view
+\def\FLock{128} % bit 8: locked field (PDF 1.4)
+\def\FfReadOnly{1} % all
+\def\FfRequired{2} % all
+\def\FfNoExport{4} % all
+\def\FfMultiline{4096} % text
+\def\FfPassword{8192} % text
+\def\FfNoToggleToOff{16384} % radio
+\def\FfRadio{32768} % radio
+\def\FfPushButton{65536} % Push button
+\def\FfCombo{131072} % choice
+\def\FfEdit{262144} % combo
+\def\FfSort{524288} % choice
+\def\FfFileSelect{1048576} % text (PDF 1.4)
+\def\FfMultiSelect{2097152} % choice (PDF 1.4)
+\def\FfDoNotSpellCheck{4194304} % text, combo (PDF 1.4)
+\def\FfDoNotScroll{8388608} % text (PDF 1.4)
+\def\FfComb{16777216} % text (PDF 1.5)
+\def\FfRadiosInUnison{33554432} % radio (PDF 1.5)
+\def\FfCommitOnSelChange{67108864} % choice (PDF 1.5)
+\def\FfRichText{33554432} % radio (PDF 1.5)
+\def\getFfValue/Ff#1\@nil{\def\eq@FfValue{#1}}
+\def\getFValue/F#1\@nil{\def\eq@FValue{#1}}
+\def\@getCmdName#1{\edef\@CmdName{\expandafter\@gobble\string#1}}
+\newcommand{\everyTextField}[1]{\def\every@TextField{#1}}
+\def\every@TextField{}
+\newcommand{\everySigField}[1]{\def\every@sigField{#1}}
+\def\every@sigField{}
+\newcommand{\everyCheckBox}[1]{\def\every@CheckBox{#1}}
+\def\every@CheckBox{}
+\newcommand{\everyRadioButton}[1]{\def\every@RadioButton{#1}}
+\def\every@RadioButton{}
+\newcommand{\everyButtonField}[1]{\def\every@ButtonField{#1}}
+\def\every@ButtonField{}
+\newcommand{\everyPushButton}[1]{\def\every@PushButton{#1}}
+\def\every@PushButton{}
+\newcommand{\everyListBox}[1]{\def\every@listBox{#1}}
+\newcommand{\everyComboBox}[1]{\def\every@comboBox{#1}}
+\def\every@listBox{}\def\every@comboBox{}
+\newcommand{\everyLink}[1]{\def\every@Link{#1}}
+\def\every@Link{}
+\def\ef@adjrectWH#1{\dimen@ii#1\relax
+ \ifx\eq@rectW\@empty\else
+ \eflength\eq@rectW\relax
+ \advance\eflength\dimen@ii
+ \edef\eq@rectW{\the\eflength}%
+ \eflength\eq@rectH\relax
+ \advance\eflength\dimen@ii
+ \edef\eq@rectH{\the\eflength}%
+ \fi
+}
+\def\ef@djXPD{\ifxetex\ifmakeXasPD\ef@adjrectWH{2bp}\fi
+ \else\ifmakePDasX\ef@adjrectWH{-2bp}\fi\fi}
+\def\ef@btnspcr{}
+\def\eq@setButtonProps#1#2{%
+ \makeJSspecials
+ \processAppArgs#2\end\@nil % set widget properties
+ \ifx\eq@BC\@empty\@eqW{}\else
+ \if\eq@W@value0\let\eq@BC\@empty\fi\fi
+ \Hy@pdfstringfalse
+ \ifx\eq@rectW\@empty
+ \ifnum\eq@textSize=0 \else
+ \dimen@=\eq@textSize bp
+ \dimen@1.00375\dimen@
+ \edef\eq@textSize@pt{\strip@pt\dimen@}%
+ \fontsize{\eq@textSize@pt}{0}\selectfont
+ \fi
+ \dimen@\eq@W@value bp
+ \def\eq@S@B{B}\ifx\eq@S@value\eq@S@B
+ \def\eq@btn@sp{\hbox to2\dimen@{\hfill}}%
+ \else
+ \def\eq@btn@sp{\hbox to\dimen@{\hfill}}%
+ \fi
+ \expandafter\def\expandafter
+ \ef@btnspcr\expandafter{\ef@btnspcr\eq@btn@sp}%
+ \sbox{\eq@tmpbox}{\ef@btnspcr\eq@CA\ef@btnspcr}%
+ \eq@tmpdima=\wd\eq@tmpbox
+ \sbox{\eq@tmpbox}{\ef@btnspcr\eq@RC\ef@btnspcr}%
+ \ifdim\eq@tmpdima>\wd\eq@tmpbox\else
+ \eq@tmpdima=\wd\eq@tmpbox\fi%
+ \sbox{\eq@tmpbox}{\ef@btnspcr\eq@AC\ef@btnspcr}%
+ \ifdim\eq@tmpdima>\wd\eq@tmpbox\else
+ \eq@tmpdima=\wd\eq@tmpbox\fi
+ \ifmakePDasX\advance\eq@tmpdima2bp\fi
+ \wd\eq@tmpbox=\eq@tmpdima
+ \else
+ \wd\eq@tmpbox=\eq@rectW
+ \fi
+ \ef@djXPD#1% dps 12/22
+}
+\def\eq@setWidgetProps#1#2{%
+ \makeJSspecials
+ \processAppArgs#2\end\@nil % set widget properties
+ \ifx\annot@type@link\annot@type\else
+ \ifx\eq@BC\@empty\@eqW{}\else
+ \if\eq@W@value0\let\eq@BC\@empty\fi\fi
+ \fi
+ \ef@djXPD#1% dps 12/22
+}
+\def\ef@sanitize@toks{\@makeother\~\@makeother\#\@makeother\&%
+ \@makeother\"\@makeother\_}
+\newcommand\efKern[2]{\ifxetex\kern#2\else\kern#1\fi}
+\newcommand\olBdry{\bgroup\ifxetex % dps 12/22
+ \@tempdima-\g@eq@W@value@bp\relax
+ \edef\@mtkern{\the\@tempdima}\else
+ \@tempdima2bp\relax\advance\@tempdima-\g@eq@W@value@bp\relax % 12/26
+ \edef\@mtkern{\the\@tempdima}\fi\kern\@mtkern\egroup
+}
+\newcommand\cgBdry[1][0bp]{\bgroup\def\ef@rgi{#1}\ifx\ef@rgi\@empty
+ \def\ef@rgi{0bp}\fi\setlength{\@tempdima}{\ef@rgi}%
+ \ifxetex\else\addtolength{\@tempdima}{2bp}\fi
+ \kern\@tempdima\egroup\ignorespaces}
+\newcommand{\efSupprIndent}{\ef@scratchtoks=\expandafter{\the\everypar}%
+ \everypar{{\setbox\z@\lastbox}\clubpenalty\@M
+ \everypar=\expandafter{\the\ef@scratchtoks}}}
+\newcommand\volBdry{\bgroup\parskip0pt\relax\@@par\nointerlineskip
+ \olBdry\egroup\efSupprIndent}
+\newcommand\vcgBdry{\@ifstar{\edef\ef@offset{\the\parskip}\vcgBdry@i}
+ {\def\ef@offset{0pt}\vcgBdry@i}}
+\newcommand\vcgBdry@i[1][0bp]{\bgroup
+ \setlength{\ef@dimena}{#1-\ef@offset}\parskip0pt\relax
+ \par\nointerlineskip\cgBdry[\ef@dimena]%
+ \egroup\ignorespaces\efSupprIndent}
+\def\common@choiceCode{%
+ /Subtype/Widget
+ /T (\Fld@name)
+ /FT/Ch
+ \eq@Ff
+ \eq@F
+ \eq@TU
+ \eq@TI
+ /BS << \eq@W\eq@S >>
+ /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
+ /DA (\eq@DA)
+ /Opt [\eq@Opt]
+ \eq@DV\eq@V
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\eqf@setDimens#1#2{\@eqrectW{#1}\@eqrectH{#2}}
+\let\ef@@nil\relax
+\def\@gobbleto@@nil#1\ef@@nil{}%
+\long\def\g@addto@macrogobble#1#2{\g@addto@macro{#1}{#2}\@gobbleto@@nil}
+\def\passthruCLOpts{*}
+\def\ef@pdfstrCLOpt{\Hy@unicodefalse\def\eq@Opt{}\ef@pdfstrCLOpti}
+\def\ef@pdfstrCLOpti{\@ifnextchar\ef@@nil{\@gobble}{\ef@pdfstrCLOptia}}
+\def\ef@pdfstrCLOptia{\@ifnextchar[{\expandafter
+ \ef@pdfstrOptWBii\@gobble}{\ef@pdfstrCLOptb}}
+\def\ef@pdfstrCLOptb{\@ifstar{\g@addto@macrogobble\eq@Opt}
+ {\ef@pdfstrOptWPi}}
+\def\ef@pdfstrOptWBii{%
+ \@ifnextchar({\ef@pdfstrOptWBiia}{\PackageError{eforms}
+ {Left parenthesis expected here}{}}%
+}
+\def\ef@pdfstrOptWBiia(#1){%
+ \g@addto@macro\eq@Opt{[(}%
+ \pdfstringdef\@optTokstemp{#1}%
+ \expandafter\g@addto@macro\expandafter\eq@Opt
+ \expandafter{\@optTokstemp}%
+ \@ifnextchar({\ef@pdfstrOptWBiib}{\PackageError{eforms}
+ {Left parenthesis expected here}{}}%
+}
+\def\ef@pdfstrOptWBiib(#1){%
+ \g@addto@macro\eq@Opt{)(}%
+ \pdfstringdef\@optTokstemp{#1}%
+ \expandafter\g@addto@macro\expandafter\eq@Opt
+ \expandafter{\@optTokstemp}%
+ \g@addto@macro\eq@Opt{)]}%
+ \expandafter\ef@pdfstrCLOpti\@gobble
+}
+\def\ef@pdfstrOptWPi{\@ifnextchar\ef@@nil{\@gobble}{\ef@pdfstrOptWPii}}
+\def\ef@pdfstrOptWPii(#1){%
+ \g@addto@macro\eq@Opt{(}%
+ \pdfstringdef\@optTokstemp{#1}%
+ \expandafter\g@addto@macro\expandafter\eq@Opt
+ \expandafter{\@optTokstemp}%
+ \g@addto@macro\eq@Opt{)}%
+ \ef@pdfstrCLOpti}
+\def\annot@type@listbox{listbox}
+\newcommand\list@@Box[8]{\begingroup
+ \edef\annot@type{\annot@type@listbox}%
+ \pdfstringdef\Fld@name{#2}%
+ \expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \eqf@setDimens{#3}{#4}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@processEvery#8\end\noindent#6#7{#1}%
+}
+\def\listBoxDefaults{%
+ \W{1}\S{I}\F{\FPrint}\BC{0 0 0}
+}
+\newcommand\listBox{\begingroup
+ \ef@sanitize@toks\ef@listbox
+}
+\newcommand{\ef@listbox}[1][]{%
+ \endgroup\ef@listBox[#1]%
+}
+\newcommand\ef@listBox[5][]{%
+ \mbox{\list@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
+ \eq@choice@driver}{\listBoxDefaults\every@listBox}}%
+}
+\def\annot@type@combobox{combobox}
+\newcommand\combo@@Box[8]{\begingroup
+ \edef\annot@type{\annot@type@combobox}%
+ \@eqFf{\FfCombo}\pdfstringdef\Fld@name{#2}%
+ \expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \eqf@setDimens{#3}{#4}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@processEvery#8\end\noindent#6#7{#1}%
+}
+\def\comboBoxDefaults{%
+ \W{1}\S{I}\F{\FPrint}\BC{0 0 0}
+}
+\newcommand\comboBox{\begingroup
+ \ef@sanitize@toks\ef@combobox
+}
+\newcommand{\ef@combobox}[1][]{%
+ \endgroup\ef@comboBox[#1]%
+}
+\newcommand\ef@comboBox[5][]{%
+ \mbox{\combo@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
+ \eq@choice@driver}{\comboBoxDefaults\every@comboBox}}%
+}
+\def\common@pushButtonCode{%
+ /Subtype/Widget
+ /T (\Fld@name)
+ /FT/Btn
+ \eq@Ff
+ \eq@TU
+ \eq@H
+ \eq@F
+ /BS <<\eq@W\eq@S >>
+\ifx\eq@AP\@empty
+ /MK <<\eq@R\eq@BC\eq@BG%
+ \ef@kvCA\ef@kvRC\ef@kvAC\eq@IconMK\eq@mkIns>>
+\else
+ \eq@AP
+\fi
+ /DA (\eq@DA)
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\common@RadioCheckCode{%
+ /Subtype/Widget
+ /T (\Fld@name)
+ /FT/Btn
+ \eq@Ff
+ \eq@F
+ \eq@TU
+ /BS <<\eq@W\eq@S>>
+\ifx\eq@AP\@empty
+ /AP<< /N <<\eq@On<<>>>> >>
+ \eq@MK
+\else
+ \eq@AP
+\fi
+ /DA (\eq@DA)
+ \eq@AS
+ \eq@DV\eq@V
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\annot@type@button{pushbtn}
+\newcommand\push@@Button[7]{\begingroup
+ \edef\annot@type{\annot@type@button}%
+ \pdfstringdef\Fld@name{#2}%\edef\Fld@name{#2}%
+ \makeJSspecials\ef@preProcDefns
+ \def\eq@Ff{/Ff \FfPushButton}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \eqf@setDimens{#3}{#4}%
+ \@processEvery#7\end\noindent#5#6{#1}%
+}
+\def\pushButtonDefaults{%
+ \W{1}\S{B}\F{\FPrint}\BC{0 0 0}
+ \H{P}\BG{.7529 .7529 .7529}
+}
+\newcommand\pushButton{\begingroup
+ \ef@sanitize@toks\ef@pushbutton
+}
+\newcommand{\ef@pushbutton}[1][]{%
+ \endgroup\ef@pushButton[#1]%
+}
+\newcommand\ef@pushButton[4][]{%
+ \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{%
+ \eq@setButtonProps\eq@Button@driver}%
+ {\pushButtonDefaults\every@PushButton}}%
+}
+\def\annot@type@checkbox{checkbox}
+\newcommand\check@@Box[8]
+{%
+ \begingroup\let\#\ef@Hx
+ \edef\annot@type{\annot@type@checkbox}%
+ \pdfstringdef\Fld@name{#2}\@eqAS{Off}%
+ \def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
+ \else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
+ \def\eq@DV{/DV/##1}\fi\fi}%
+ \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
+ \let\eq@V\@empty\else\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
+ \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+ \eqf@setDimens{#3}{#4}%
+ \ifpdfmarkup\def\eq@On{(#5) cvn }\else
+ \def\eq@On{/#5}\fi\@eqtextFont{ZaDb}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
+ \@processEvery#8\end\noindent#6#7{#1}%
+}
+\def\checkBoxDefaults{%
+ \F{\FPrint}\W{1}\S{S}\BC{0 0 0}%
+}
+\newcommand\checkBox{\begingroup
+ \ef@sanitize@toks\ef@checkbox
+}
+\newcommand{\ef@checkbox}[5][]{%
+ \endgroup\mbox{\check@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
+ \eq@RadioCheck@driver}{\checkBoxDefaults\every@CheckBox}}%
+}
+\def\annot@type@radio{radiobtn}
+\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
+ \edef\annot@type{\annot@type@radio}%
+ \pdfstringdef\Fld@name{#2}\@eqAS{Off}%
+ \def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
+ \else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
+ \def\eq@DV{/DV/##1}\fi\fi}%
+ \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
+ \let\eq@V\@empty\else\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
+ \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+ \eqf@setDimens{#3}{#4}%
+ \ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
+ \def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
+ \@processEvery#8\end\noindent#6#7{#1}%
+}
+\def\radioButtonDefaults
+{%
+ \W{1}\S{S}\BC{0 0 0}\F{\FPrint}
+}
+\newcommand\radioButton{\begingroup
+ \ef@sanitize@toks\ef@radiobutton
+}
+\newcommand{\ef@radiobutton}[5][]{\endgroup
+ \mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
+ \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}%
+}
+\newcommand\ef@radioButton[5][]
+{%
+ \mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
+ \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}%
+}
+\def\common@TextFieldCode
+{%
+ /Subtype/Widget
+ /T (\Fld@name)
+ /FT/Tx
+ \eq@Ff
+ \eq@F
+ \eq@Q
+ \eq@TU
+ \eq@MaxLen
+ /BS <<\eq@W\eq@S>>
+ /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
+ /DA (\eq@DA)
+ \eq@DV\eq@V
+ \eq@RV\eq@DS
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\annot@type@text{textfld}
+\newcommand\text@@Field[7]
+{%
+ \begingroup
+ \edef\annot@type{\annot@type@text}%
+ \pdfstringdef\Fld@name{#2}\def\eq@Title{#2}%
+ \eqf@setDimens{#3}{#4}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@processEvery#7\end\noindent#5#6{#1}%
+}
+\def\textFieldDefaults
+{%
+ \F{\FPrint}\BC{0 0 0}\W{1}\S{S}
+}
+\newcommand\textField{\begingroup
+ \ef@sanitize@toks\ef@textfield
+}
+\newcommand{\ef@textfield}[2][]{%
+ \endgroup\ef@textField[#1]{#2}%
+}
+\newcommand\ef@textField[4][]
+{%
+ \mbox{\text@@Field{#1}{#2}{#3}{#4}{}%
+ {\eq@setWidgetProps\eq@TextField}%
+ {\textFieldDefaults\every@TextField}}%
+}
+\let\eqTextField\textField
+\let\calcTextField\textField
+\def\common@SigFieldCode
+{%
+ /Subtype /Widget
+ /T (\Fld@name)
+ /FT/Sig
+ \eq@F
+ \eq@TU
+ /BS <<\eq@W\eq@S>>
+ /MK <<\eq@R\eq@BC\eq@BG\eq@mkIns>>
+ /DA (\eq@DA)
+ \eq@Lock
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\annot@type@sig{sigfld}
+\newcommand\sig@@Field[7]{%
+ \begingroup
+ \edef\annot@type{\annot@type@sig}%
+ \pdfstringdef\Fld@name{#2}\def\eq@Title{#2}%
+ \eqf@setDimens{#3}{#4}%
+ \def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
+ \@processEvery#7\end\noindent#5#6{#1}%
+}
+\def\sigFieldDefaults
+{%
+ \F{\FPrint}\BC{}\BG{}\W{1}\S{S}
+}
+\newcommand\sigField{\begingroup
+ \ef@sanitize@toks\ef@sigfield
+}
+\newcommand{\ef@sigfield}[1][]{%
+ \endgroup\ef@sigField[#1]%
+}
+\newcommand\ef@sigField[4][]
+{%
+ \mbox{\sig@@Field{#1}{#2}{#3}{#4}{}{\eq@setWidgetProps\eq@SigField}%
+ {\sigFieldDefaults\every@sigField}}%
+}
+\def\common@LinkCode
+{%
+ \eq@A % Action
+ \eq@H % Highlight
+ \eq@Color % Border color
+ \link@BS % Border styles
+ \eq@rawPDF % everything else
+}
+\def\annot@type@link{link}
+\newcommand\set@@Link[7]
+{%
+ \begingroup
+ \makeJSspecials
+ \edef\annot@type{\annot@type@link}%
+ \ef@preProcDefns
+ \eqf@setDimens{#2}{#3}%
+ \ifx\eq@rectW\@empty\def\link@@Box{#4}\else
+ \def\eq@arg{#4}\ifx\eq@arg\@empty
+ \def\eq@content{\hfill\vfill}\else\def\eq@content{#4}\fi
+ \def\link@@Box{\parbox[\eq@pos][\eq@rectH][\eq@innerpos]%
+ {\eq@rectW}{\centering\eq@content}}%
+ \fi
+ \@processEvery#7\end\noindent#5#6{#1}%
+}
+\def\defaultlinkcolor{\@linkcolor}
+\def\setDef@ultLinkColor{\ifHy@colorlinks
+ \def\ef@thislinkcolor{\defaultlinkcolor}
+ \def\ef@colorthislink{\color{\ef@thislinkcolor}}\else
+ \let\ef@colorthislink\relax\fi
+}
+\AtBeginDocument{\setDef@ultLinkColor}
+\def\set@LinkTextDefaults{\S{S}\Border{0 0 0}}
+\newcommand\setLink{\begingroup
+ \ef@sanitize@toks\ef@setlinktext
+}
+\let\setLinkText\setLink
+\newcommand{\ef@setlinktext}[1][]{%
+ \endgroup\ef@searchmlLink#1\mlLink\end\@nil
+ \ifx\ef@mlLink\ef@Zero\def\ef@next{\set@LinkText[#1]}\else
+ \def\ef@next{\mlhypertext[#1]}\fi\ef@next
+}
+\newcommand\set@LinkText[2][]{%
+ \set@@Link{#1}{}{}{\ef@colorthislink#2}{}%
+ {\eq@setWidgetProps{\ef@postProcLinkProps\setLink@driver}}%
+ {\set@LinkTextDefaults\every@Link}%
+}
+\def\ef@preProcDefns{%
+ \def\Win##1{/Win <<##1>>}%
+ \def\fitpage{\dl@fitpage}\def\actualsize{\dl@actualsize}%
+ \def\fitwidth{\dl@fitwidth}\def\fitheight{\dl@fitheight}%
+ \def\fitvisible{\dl@fitvisible}\def\inheritzoom{\dl@inheritzoom}%
+ \let\rPage\ef@rPage
+ \edef\Page##1{\ifcase\eq@drivernum
+ {Page##1}\or
+ \noexpand\pdfpageref##1\space\space 0 R\or
+ \noexpand @page##1\fi
+ }%
+}
+\def\ef@postProcLinkProps{}
+\newcommand{\mlsetLink}{\mlhypertext}
+\newcommand{\mlhypertext}[2][]{\@ifundefined{mlhypertext@i}
+ {\PackageWarning{eforms}{The \string\mlhypertext\space command
+ does nothing unless\MessageBreak the aeb_mlink package is loaded}}{}%
+ #2}
+\def\set@LinkBboxDefaults{\S{S}\Border{0 0 0}}
+\newcommand{\setLinkBbox}{\begingroup
+ \ef@sanitize@toks\ef@linkbbox
+}
+\newcommand{\ef@linkbbox}[1][]{%
+ \endgroup\ef@setLinkBbox[#1]%
+}
+\newcommand{\ef@setLinkBbox}[3][]{%
+ \@setLinkBbox{#1}{#2}{#3}%
+}
+\def\@setLinkBbox#1#2#3{\@ifnextchar[{\@@setLinkBbox{#1}{#2}{#3}}%
+ {\@@setLinkBbox{#1}{#2}{#3}[c]}}
+\def\@@setLinkBbox#1#2#3[#4]{%
+ \@ifnextchar[{\@@@setLinkBbox{#1}{#2}{#3}{#4}}%
+ {\@@@setLinkBbox{#1}{#2}{#3}{#4}[#4]}%
+}
+\def\@@@setLinkBbox#1#2#3#4[#5]#6{%
+ \def\eq@pos{#4}\def\eq@innerpos{#5}%
+ \set@@Link{#1}{#2}{#3}{\ef@colorthislink#6}%
+ {\eq@setWidgetProps\setLink@driver}{}%
+ {\set@LinkBboxDefaults\every@Link}%
+}
+\def\set@LinkPboxDefaults{\S{S}\Border{0 0 0}}
+\newcommand\setLinkPbox{\begingroup
+ \ef@sanitize@toks\ef@linkpbox
+}
+\newcommand{\ef@linkpbox}[1]{%
+ \endgroup\ef@setLinkPbox{#1}%
+}
+\newcommand\ef@setLinkPbox[1]{%
+ \@setLinkPbox{#1\BS{}}{}{}{\hfill\vfill}%
+}
+\def\@setLinkPbox#1#2#3{\@ifnextchar[{\@@setLinkPbox{#1}{#2}{#3}}%
+ {\@@setLinkPbox{#1}{#2}{#3}[c]}}
+\def\@@setLinkPbox#1#2#3[#4]{%
+ \@ifnextchar[{\@@@setLinkPbox{#1}{#2}{#3}{#4}}%
+ {\@@@setLinkPbox{#1}{#2}{#3}{#4}[#4]}
+}
+\def\@@@setLinkPbox#1#2#3#4[#5]#6{%
+ \def\eq@pos{#4}\def\eq@innerpos{#5}%
+ \set@@Link{#1}{#2}{#3}{#6}{\eq@setWidgetProps\setLinkPbox@driver}%
+ {}{\set@LinkPboxDefaults\every@Link}%
+}
+\input{\eq@drivercode}
+\inputCalcOrderJS
+\endinput
+%%
+%% End of file `eforms.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/epdfmark.def b/texmf-dist/tex/latex/acrotex/epdfmark.def
index 88b4309b..be20a1c6 100644
--- a/texmf-dist/tex/latex/acrotex/epdfmark.def
+++ b/texmf-dist/tex/latex/acrotex/epdfmark.def
@@ -1,127 +1,127 @@
-%%
-%% This is file `epdfmark.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,epdfmark')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\Rect#1{\pdf@rect{\textcolor{\@linkcolor}{#1}}}
-\def\noPeek#1#2{\literalps@out{%
- [ {ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
-\def\eq@choice@driver
-{%
- \Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@choiceCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
-}
-\def\eq@Button@driver
-{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@pushButtonCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
-}
-\def\eq@RadioCheck@driver
-{%
- \Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
-}
-\def\eq@l@check@driver
-{%
- \pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\endgroup
-}
-\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@TextFieldCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
-}
-\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@SigFieldCode
- /ANN pdfmark
- }\to@insertStrucTabOrder{Form}\endgroup
-}
-\def\convertAToAction/A#1\@nil{\def\eq@A{/Action#1}}
-\def\setLink@driver
-{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \pdf@rect{\link@@Box}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \eq@Border
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}%
- \to@insertStrucTabOrder{Link}\endgroup
-}
-\def\pboxRect{/Rect [\par@@Rect]}
-\def\mllnkcontainer#1{#1}
-\def\setLinkPbox@driver
-{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \literalps@out{\mllnkcontainer{%
- [ \eq@objdef\pboxRect
- \eq@Border
- \eq@QuadPoints % QuadPoints
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}}%
- \to@insertStrucTabOrder{Link}\endgroup
-}
-\endinput
-%%
-%% End of file `epdfmark.def'.
+%%
+%% This is file `epdfmark.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,epdfmark')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\Rect#1{\pdf@rect{\textcolor{\@linkcolor}{#1}}}
+\def\noPeek#1#2{\literalps@out{%
+ [ {ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
+\def\eq@choice@driver
+{%
+ \Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{%
+ [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
+ /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@choiceCode
+ /ANN pdfmark
+ \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
+ }\to@insertStrucTabOrder{Form}\endgroup
+}
+\def\eq@Button@driver
+{%
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{%
+ [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@pushButtonCode
+ /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+}
+\def\eq@RadioCheck@driver
+{%
+ \Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{%
+ [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@RadioCheckCode
+ /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+}
+\def\eq@l@check@driver
+{%
+ \pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
+ \literalps@out{%
+ [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@RadioCheckCode
+ /ANN pdfmark}\endgroup
+}
+\def\eq@TextField{\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{%
+ [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
+ /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@TextFieldCode
+ /ANN pdfmark
+ \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
+ }\to@insertStrucTabOrder{Form}\endgroup
+}
+\def\eq@SigField{\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{%
+ [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@SigFieldCode
+ /ANN pdfmark
+ }\to@insertStrucTabOrder{Form}\endgroup
+}
+\def\convertAToAction/A#1\@nil{\def\eq@A{/Action#1}}
+\def\setLink@driver
+{%
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \pdf@rect{\link@@Box}%
+ \literalps@out{%
+ [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \eq@Border
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}%
+ \to@insertStrucTabOrder{Link}\endgroup
+}
+\def\pboxRect{/Rect [\par@@Rect]}
+\def\mllnkcontainer#1{#1}
+\def\setLinkPbox@driver
+{%
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \literalps@out{\mllnkcontainer{%
+ [ \eq@objdef\pboxRect
+ \eq@Border
+ \eq@QuadPoints % QuadPoints
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}}%
+ \to@insertStrucTabOrder{Link}\endgroup
+}
+\endinput
+%%
+%% End of file `epdfmark.def'.
diff --git a/texmf-dist/tex/latex/acrotex/epdftex.def b/texmf-dist/tex/latex/acrotex/epdftex.def
index 7edb9d9c..aef1ac3f 100644
--- a/texmf-dist/tex/latex/acrotex/epdftex.def
+++ b/texmf-dist/tex/latex/acrotex/epdftex.def
@@ -1,106 +1,106 @@
-%%
-%% This is file `epdftex.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,epdftex')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\noPeek#1#2{\global\pdfpageattr=\expandafter{\noPeekAction{#1}{#2}}}
-\def\HyField@@AddToFields#1{%
- \HyField@AfterAuxOpen{%
- \if@filesw
- \write\@mainaux{%
- \string\HyField@AuxAddToFields{#1}}%
- \ifisCalculate\write\@mainaux{%
- \string\HyField@AuxAddToCoFields{}{#1}}\fi
- \fi
- }%
-}%
-\def\eq@choice@driver
-{%
- \Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \hbox{\pdfstartlink user{\common@choiceCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
-}
-\def\eq@Button@driver
-{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \hbox{\pdfstartlink user{ \common@pushButtonCode }%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
-}
-\def\eq@RadioCheck@driver
-{%
- \Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \hbox{\pdfstartlink user{\common@RadioCheckCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
-}
-\def\eq@l@check@driver
-{%
- \pdfstartlink user{\common@RadioCheckCode}%
- \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
- \pdfendlink\endgroup
-}
-\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \leavevmode
- \hbox{\pdfstartlink user{\common@TextFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
-}
-\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
-}
-\def\setLink@driver
-{%
- \@eqBS{}%
- \leavevmode\pdfstartlink
- attr {\eq@Border}%
- user{/Subtype/Link \common@LinkCode}%
- \Hy@colorlink{\@linkcolor}\link@@Box
- \close@pdflink
- \endgroup
-}
-\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
- \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
- \fi\endgroup
-}
-\endinput
-%%
-%% End of file `epdftex.def'.
+%%
+%% This is file `epdftex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,epdftex')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\noPeek#1#2{\global\pdfpageattr=\expandafter{\noPeekAction{#1}{#2}}}
+\def\HyField@@AddToFields#1{%
+ \HyField@AfterAuxOpen{%
+ \if@filesw
+ \write\@mainaux{%
+ \string\HyField@AuxAddToFields{#1}}%
+ \ifisCalculate\write\@mainaux{%
+ \string\HyField@AuxAddToCoFields{}{#1}}\fi
+ \fi
+ }%
+}%
+\def\eq@choice@driver
+{%
+ \Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \hbox{\pdfstartlink user{\common@choiceCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+}
+\def\eq@Button@driver
+{%
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \hbox{\pdfstartlink user{ \common@pushButtonCode }%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+}
+\def\eq@RadioCheck@driver
+{%
+ \Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \hbox{\pdfstartlink user{\common@RadioCheckCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+}
+\def\eq@l@check@driver
+{%
+ \pdfstartlink user{\common@RadioCheckCode}%
+ \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
+ \pdfendlink\endgroup
+}
+\def\eq@TextField{\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \leavevmode
+ \hbox{\pdfstartlink user{\common@TextFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+}
+\def\eq@SigField{\Hy@pdfstringtrue
+ \if\@vertRotate1 \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+}
+\def\setLink@driver
+{%
+ \@eqBS{}%
+ \leavevmode\pdfstartlink
+ attr {\eq@Border}%
+ user{/Subtype/Link \common@LinkCode}%
+ \Hy@colorlink{\@linkcolor}\link@@Box
+ \close@pdflink
+ \endgroup
+}
+\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
+ \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
+ \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
+ \fi\endgroup
+}
+\endinput
+%%
+%% End of file `epdftex.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqbr.def b/texmf-dist/tex/latex/acrotex/eqbr.def
index 650f2481..95be10d9 100644
--- a/texmf-dist/tex/latex/acrotex/eqbr.def
+++ b/texmf-dist/tex/latex/acrotex/eqbr.def
@@ -1,84 +1,84 @@
-%%
-%% This is file `eqbr.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqbr')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqbr.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqbr.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Koichi Sameshima %%
-%% e-mail address: ksameshi@usp.br %%
-%% Language: (brazil) %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\renewcommand\exlabel{Exerc\texorpdfstring{\'{\i}}{\string\355}cio}
-\renewcommand\exlabelsol{Exerc\string\'{\string\i}cio}
-
-\renewcommand\exsectitle{Solu\texorpdfstring{\c{c}}{\string\347}%
- \texorpdfstring{\~{o}}{%
- \string\365}es dos Exerc\texorpdfstring{\'{\i}}{\string\355}cios}
- %{Solu\string\\347\string\\363es dos Exerc\string\\355cios}}
-\renewcommand\exsecrunhead{%
- Solu\protect\c{c}\protect\~{o}es dos Exerc\protect\'{i}cios}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Solu\c{c}\~{a}o}:}
-
-\renewcommand\eq@sqslsectitle{Solu\c{c}\~{o}es
- dos Testes}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Solu\protect\c{c}\protect\~{o}es
- dos Testes}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{Solu\protect\c{c}\protect\~{a}o do Teste:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Solu\protect\c{c}\protect\~{a}o}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Teste.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Finaliza Teste}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Correto!"}
-\renewcommand\eqsqwgmsg{"Incorreto!"}
-
-\renewcommand\eq@bqlabel{Inicia Teste}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Finaliza Teste}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Pontos:}\renewcommand\eq@OutOf{de}
-\renewcommand\eqInitQuizMsg{% ******
- "Voc\string\352 precisa iniciar o Teste! Clique sobre "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Voc\string\352 j\string\341 respondeu.
- Sua resposta foi ("+Responses[probno]+").
- Quer alter\string\341-la?"}
-\renewcommand\eq@local@CA{Corretas}
-\renewcommand\eq@local@RC{Minhas Respostas!}
-\renewcommand\eq@local@AC{Por Favor!}
-\endinput
-%%
-%% End of file `eqbr.def'.
+%%
+%% This is file `eqbr.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqbr')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqbr.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqbr.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Koichi Sameshima %%
+%% e-mail address: ksameshi@usp.br %%
+%% Language: (brazil) %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\exlabel{Exerc\texorpdfstring{\'{\i}}{\string\355}cio}
+\renewcommand\exlabelsol{Exerc\string\'{\string\i}cio}
+
+\renewcommand\exsectitle{Solu\texorpdfstring{\c{c}}{\string\347}%
+ \texorpdfstring{\~{o}}{%
+ \string\365}es dos Exerc\texorpdfstring{\'{\i}}{\string\355}cios}
+ %{Solu\string\\347\string\\363es dos Exerc\string\\355cios}}
+\renewcommand\exsecrunhead{%
+ Solu\protect\c{c}\protect\~{o}es dos Exerc\protect\'{i}cios}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Solu\c{c}\~{a}o}:}
+
+\renewcommand\eq@sqslsectitle{Solu\c{c}\~{o}es
+ dos Testes}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Solu\protect\c{c}\protect\~{o}es
+ dos Testes}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{Solu\protect\c{c}\protect\~{a}o do Teste:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Solu\protect\c{c}\protect\~{a}o}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Teste.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Finaliza Teste}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Correto!"}
+\renewcommand\eqsqwgmsg{"Incorreto!"}
+
+\renewcommand\eq@bqlabel{Inicia Teste}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Finaliza Teste}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Pontos:}\renewcommand\eq@OutOf{de}
+\renewcommand\eqInitQuizMsg{% ******
+ "Voc\string\352 precisa iniciar o Teste! Clique sobre "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Voc\string\352 j\string\341 respondeu.
+ Sua resposta foi ("+Responses[probno]+").
+ Quer alter\string\341-la?"}
+\renewcommand\eq@local@CA{Corretas}
+\renewcommand\eq@local@RC{Minhas Respostas!}
+\renewcommand\eq@local@AC{Por Favor!}
+\endinput
+%%
+%% End of file `eqbr.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqcat.def b/texmf-dist/tex/latex/acrotex/eqcat.def
index dce3df50..e0c78acb 100644
--- a/texmf-dist/tex/latex/acrotex/eqcat.def
+++ b/texmf-dist/tex/latex/acrotex/eqcat.def
@@ -1,78 +1,78 @@
-%%
-%% This is file `eqcat.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqcat')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqcat.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqcat.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Ramon Ballester %%
-%% e-mail address: ramon.ballester@udg.es %%
-%% Language: (catalan) %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\renewcommand\exlabel{Exercici}
-\renewcommand\exlabelsol{\exlabel}
-
-\renewcommand\exsectitle{Solucions als \exlabel s}
-\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Soluci\'o}:}
-
-\renewcommand\eq@sqslsectitle{Solucions als Tests}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Solucions als Tests}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{Soluci\protect\'{o} al Test:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Soluci\'o}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Final del Test}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Correcte!"}
-\renewcommand\eqsqwgmsg{"Incorrecte!"}
-
-\renewcommand\eq@bqlabel{Inici del Test}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Final del Test}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Punts:}\renewcommand\eq@OutOf{de}
-\renewcommand\eqInitQuizMsg{"Has d'iniciar el Test!
- Prem sobre "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Ja has elegit una resposta.
- La teva resposta ha estat ("+Responses[probno]+").
- Vols canviar--la?"}
-\renewcommand\eq@local@CA{Correctes}
-\renewcommand\eq@local@RC{Les meves Respostes!}
-\renewcommand\eq@local@AC{Si us plau!}
-\endinput
-%%
-%% End of file `eqcat.def'.
+%%
+%% This is file `eqcat.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqcat')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqcat.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqcat.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Ramon Ballester %%
+%% e-mail address: ramon.ballester@udg.es %%
+%% Language: (catalan) %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\exlabel{Exercici}
+\renewcommand\exlabelsol{\exlabel}
+
+\renewcommand\exsectitle{Solucions als \exlabel s}
+\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Soluci\'o}:}
+
+\renewcommand\eq@sqslsectitle{Solucions als Tests}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Solucions als Tests}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{Soluci\protect\'{o} al Test:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Soluci\'o}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Final del Test}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Correcte!"}
+\renewcommand\eqsqwgmsg{"Incorrecte!"}
+
+\renewcommand\eq@bqlabel{Inici del Test}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Final del Test}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Punts:}\renewcommand\eq@OutOf{de}
+\renewcommand\eqInitQuizMsg{"Has d'iniciar el Test!
+ Prem sobre "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Ja has elegit una resposta.
+ La teva resposta ha estat ("+Responses[probno]+").
+ Vols canviar--la?"}
+\renewcommand\eq@local@CA{Correctes}
+\renewcommand\eq@local@RC{Les meves Respostes!}
+\renewcommand\eq@local@AC{Si us plau!}
+\endinput
+%%
+%% End of file `eqcat.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqcolor.def b/texmf-dist/tex/latex/acrotex/eqcolor.def
index c95b02b0..77bb0d39 100644
--- a/texmf-dist/tex/latex/acrotex/eqcolor.def
+++ b/texmf-dist/tex/latex/acrotex/eqcolor.def
@@ -1,86 +1,86 @@
-%%
-%% This is file `eqcolor.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqcolor')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\def\eq@getCmdName#1#2{\edef#1{\expandafter\@gobble\string#2}}
-\def\eq@getfirst#1#2\@nil{\def\eq@argi{#1}}
-\def\eq@checkValidityModel#1{%
- \if#1g\else\if#1r\else\if#1c\else
- \PackageError{exerquiz}
- {JavaScript does not support this model}
- {Use a named color from one of the models gray, rgb, or cmyk.}
- \fi\fi\fi
-}
-\def\eq@jsSetColorMsg#1#2{\PackageWarning{exerquiz}
- {The argument `#2' of \string#1\MessageBreak
- is not of the right form.\MessageBreak Using the default}}
-\def\eqModelInfo#1#2{%
- \uppercase{\def\eq@ucmodel{#1}}\def\eq@modelspec{#2}%
- \eq@getfirst#1\@nil\eq@ResetModelForGray{\eq@argi}%
- \eq@checkValidityModel{\eq@argi}%
-}
-\def\eq@ResetModelForGray#1{\if#1g\def\eq@ucmodel{G}\fi}
-\def\eq@checkRawJSColor#1{%
- \edef\eq@argi{#1}\ifx\eq@argi\@empty
- \def\eq@next{\let\eq@rawJSCol\eq@YES}\else
- \def\eq@next{\expandafter\eq@@checkRawJSColor#1\@nil}\fi\eq@next
-}
-\def\eq@@checkRawJSColor#1#2#3\@nil{\let\eq@rawJSCol\eq@NO
- \let\eqpredefineJSCol\eq@NO
- \if[#1\if#2"\let\eq@rawJSCol\eq@YES\fi\fi
- \ifx\eq@rawJSCol\eq@NO\if#1c\if#2o\let\eq@rawJSCol\eq@YES
- \let\eqpredefineJSCol\eq@YES\fi\fi\fi
-}
-\def\eq@jsColorWXColori#1#2{\edef\eq@colorDefn{#2}%
- \ifx\eq@colorDefn\@empty
- \ifx\is@Defined\eq@YES
- \edef\eq@colorDefn{\csname\cmdName Def\endcsname}\else
- \PackageError{exerquiz}{JS color \string#1 has an
- empty definition}{}\fi
- \fi
- \eq@checkRawJSColor{\eq@colorDefn}%
- \ifx\eq@rawJSCol\eq@NO
- \extractcolorspec{\eq@colorDefn}{\eq@tmp@color}%
- \expandafter\eqModelInfo\eq@tmp@color
- \edef#1{["\eq@ucmodel",\eq@modelspec]}%
- \else\edef#1{\eq@colorDefn}\fi
-}
-\def\eq@jsColorWOXColori#1#2{\def\eq@colorDefn{#2}%
- \ifx\eq@colorDefn\@empty
- \ifx\is@Defined\eq@YES
- \edef\eq@colorDefn{\csname cmdName Def\endcsname}\else
- \PackageError{exerquiz}{JS color \string#1 has an
- empty definition}{}\fi
- \fi
- \eq@checkRawJSColor{\eq@colorDefn}%
- \ifx\eq@rawJSCol\eq@YES\edef#1{\eq@colorDefn}\else
- \eq@jsSetColorMsg{#1}{#2}\fi
-}
-\def\jsColor#1#2{\eq@getCmdName{\cmdName}{#1}%
- \let\is@Defined\eq@YES
- \expandafter\ifx\csname\cmdName\endcsname\relax
- \PackageWarning{exerquiz}{\string#1 is not a command used by
- exerquiz.\MessageBreak Will define it anyway}%
- \let\is@Defined\eq@NO\fi
- \HyColor@IfXcolor{\eq@jsColorWXColori{#1}{#2}}%
- {\eq@jsColorWOXColori{#1}{#2}}%
-}
-\endinput
-%%
-%% End of file `eqcolor.def'.
+%%
+%% This is file `eqcolor.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqcolor')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\def\eq@getCmdName#1#2{\edef#1{\expandafter\@gobble\string#2}}
+\def\eq@getfirst#1#2\@nil{\def\eq@argi{#1}}
+\def\eq@checkValidityModel#1{%
+ \if#1g\else\if#1r\else\if#1c\else
+ \PackageError{exerquiz}
+ {JavaScript does not support this model}
+ {Use a named color from one of the models gray, rgb, or cmyk.}
+ \fi\fi\fi
+}
+\def\eq@jsSetColorMsg#1#2{\PackageWarning{exerquiz}
+ {The argument `#2' of \string#1\MessageBreak
+ is not of the right form.\MessageBreak Using the default}}
+\def\eqModelInfo#1#2{%
+ \uppercase{\def\eq@ucmodel{#1}}\def\eq@modelspec{#2}%
+ \eq@getfirst#1\@nil\eq@ResetModelForGray{\eq@argi}%
+ \eq@checkValidityModel{\eq@argi}%
+}
+\def\eq@ResetModelForGray#1{\if#1g\def\eq@ucmodel{G}\fi}
+\def\eq@checkRawJSColor#1{%
+ \edef\eq@argi{#1}\ifx\eq@argi\@empty
+ \def\eq@next{\let\eq@rawJSCol\eq@YES}\else
+ \def\eq@next{\expandafter\eq@@checkRawJSColor#1\@nil}\fi\eq@next
+}
+\def\eq@@checkRawJSColor#1#2#3\@nil{\let\eq@rawJSCol\eq@NO
+ \let\eqpredefineJSCol\eq@NO
+ \if[#1\if#2"\let\eq@rawJSCol\eq@YES\fi\fi
+ \ifx\eq@rawJSCol\eq@NO\if#1c\if#2o\let\eq@rawJSCol\eq@YES
+ \let\eqpredefineJSCol\eq@YES\fi\fi\fi
+}
+\def\eq@jsColorWXColori#1#2{\edef\eq@colorDefn{#2}%
+ \ifx\eq@colorDefn\@empty
+ \ifx\is@Defined\eq@YES
+ \edef\eq@colorDefn{\csname\cmdName Def\endcsname}\else
+ \PackageError{exerquiz}{JS color \string#1 has an
+ empty definition}{}\fi
+ \fi
+ \eq@checkRawJSColor{\eq@colorDefn}%
+ \ifx\eq@rawJSCol\eq@NO
+ \extractcolorspec{\eq@colorDefn}{\eq@tmp@color}%
+ \expandafter\eqModelInfo\eq@tmp@color
+ \edef#1{["\eq@ucmodel",\eq@modelspec]}%
+ \else\edef#1{\eq@colorDefn}\fi
+}
+\def\eq@jsColorWOXColori#1#2{\def\eq@colorDefn{#2}%
+ \ifx\eq@colorDefn\@empty
+ \ifx\is@Defined\eq@YES
+ \edef\eq@colorDefn{\csname cmdName Def\endcsname}\else
+ \PackageError{exerquiz}{JS color \string#1 has an
+ empty definition}{}\fi
+ \fi
+ \eq@checkRawJSColor{\eq@colorDefn}%
+ \ifx\eq@rawJSCol\eq@YES\edef#1{\eq@colorDefn}\else
+ \eq@jsSetColorMsg{#1}{#2}\fi
+}
+\def\jsColor#1#2{\eq@getCmdName{\cmdName}{#1}%
+ \let\is@Defined\eq@YES
+ \expandafter\ifx\csname\cmdName\endcsname\relax
+ \PackageWarning{exerquiz}{\string#1 is not a command used by
+ exerquiz.\MessageBreak Will define it anyway}%
+ \let\is@Defined\eq@NO\fi
+ \HyColor@IfXcolor{\eq@jsColorWXColori{#1}{#2}}%
+ {\eq@jsColorWOXColori{#1}{#2}}%
+}
+\endinput
+%%
+%% End of file `eqcolor.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqcz.def b/texmf-dist/tex/latex/acrotex/eqcz.def
index 8ec760a9..15ef0e7d 100644
--- a/texmf-dist/tex/latex/acrotex/eqcz.def
+++ b/texmf-dist/tex/latex/acrotex/eqcz.def
@@ -1,114 +1,114 @@
-%%
-%% This is file `eqcz.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqcz')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqcz.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqcat.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Robert Marik %%
-%% e-mail address: marik@mendelu.cz %%
-%% Language: (czech) %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\SFW{1.75in}
-
-\renewcommand\exlabel{Cvi\v{c}en\'{\i}}
-\renewcommand\exlabelsol{Cvi\protect\v{c}en\protect\'{\protect\i}}
-
-\renewcommand\exsectitle{\texorpdfstring{\v{R}e\v{s}en\'{\i}
- ke cvi\v{c}en\'{\i}m}
- {Resen\355{} ke cvicen\355m}} %% change to @ form
-\renewcommand\exsecrunhead{%
- \string\v{R}e\string\v{s}en\string\'{\string\i}
- ke cvi\string\v{c}en\string\'{\string\i}m}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{\v{R}e\v{s}en\'\i}:}
-
-\renewcommand\eq@sqslsectitle{\texorpdfstring{\v{R}e\v{s}en\'{\i}
- kv\'{\i}z\r{u}}{Resen\355{} kv\355zu}}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{\v{R}e\v{s}en\'{\i} kv\'{\i}z\r{u}}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{\string\textbf{%
- \string\v{R}e\string\v{s}en\string\'{\string\i}
- kv\string\'{\string\i}zu:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{\v{R}e\v{s}en\'{\i}}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Kv\'{\i}z.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Zp\string\v{e}t na ot\string\'{a}zky}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Spravne !"}
-\renewcommand\eqsqwgmsg{"Spatne !"}
-
-\renewcommand\eq@bqlabel{Zacatek kvizu}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{Zacatek kvizu}
-\renewcommand\bqlabelISO{Zacatek kvizu}
-
-\renewcommand\eq@eqlabel{Konec kvizu}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{}
-\renewcommand\eq@OutOf{z celkovych}
-\renewcommand\eqInitQuizMsg{%
- "Chcete-li pracovat s kvizem, musite jej nejprve spustit!
- Kliknete na "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Uz jste si jednou odpoved vybral(a). Vase odpoved byla (" +
- Responses[probno]+"). Chcete ji opravdu zmenit?"}
-\renewcommand\eq@local@CA{Opravit}
-\renewcommand\eq@local@RC{odpovedi!}
-\renewcommand\eq@local@AC{Prosim!}
-\renewcommand\eqerrABS{"Spatne uzavrena absolutni hodnota.
- Opravte prosim."}
-\renewcommand\eqerrBadMathFunc{"Vyraz `"+aF[i]+"' neni ani
- definovanou funkci ani " +", ani platnym matematickym vyrazem."}
-\renewcommand\eqParens{"Zavorky (kulate)"}
-\renewcommand\eqBrackets{"Hranate zavorky"}
-\renewcommand\eqBraces{"Slozene zavorky"}
-\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " nejsou parove.
- Opravte je prosim."}
-\renewcommand\eqerrBadExp{"Spatny matematicky vyraz - problem v nekterem
- exponentu. Opravte jej prosim."}
-\renewcommand\eqerrUnfinishQuiz{"Chyba: Nektery kviz mate nedokonceny.
- Musite jej dokoncit, nez budete pokracovat u dalsiho kvizu. Pokud si
- nepamatuje, ktery kviz jste nechali rozpracovany, zavrete cely
- soubor, znovu jej otevrete a k testu, ktery chcete vyplnovat,
- se vratte."}
-\renewcommand\noPeekMsg{"Prohlizeni reseni neni povoleno pred dokoncenim
- kvizu!"}
-\renewcommand\highThresholdMsg{"Musite odpovedet na vsechny otazky, nez
- ukoncite kviz."}
-\renewcommand\eqSyntaxErrorUndefVar{"Chyba: Pravdepodobne pouzivate
- nespravnou promennou nebo mate preklep ve jmenu nektere funkce."}
-\renewcommand{\promptButtonMsg}{%
- "Chcete ted videt spravnou odpoved? "\r\t\t
- + "Hodnocena bude Vase soucasna odpoved. "\r\t\t
- + "Kliknete-li na \\"Yes\\", uvidite spravnou odpoved, ale svou
- stavajici odpoved na tuto otazku uz nebudete moct zmenit."
-}
-\endinput
-%%
-%% End of file `eqcz.def'.
+%%
+%% This is file `eqcz.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqcz')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqcz.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqcat.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Robert Marik %%
+%% e-mail address: marik@mendelu.cz %%
+%% Language: (czech) %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\SFW{1.75in}
+
+\renewcommand\exlabel{Cvi\v{c}en\'{\i}}
+\renewcommand\exlabelsol{Cvi\protect\v{c}en\protect\'{\protect\i}}
+
+\renewcommand\exsectitle{\texorpdfstring{\v{R}e\v{s}en\'{\i}
+ ke cvi\v{c}en\'{\i}m}
+ {Resen\355{} ke cvicen\355m}} %% change to @ form
+\renewcommand\exsecrunhead{%
+ \string\v{R}e\string\v{s}en\string\'{\string\i}
+ ke cvi\string\v{c}en\string\'{\string\i}m}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{\v{R}e\v{s}en\'\i}:}
+
+\renewcommand\eq@sqslsectitle{\texorpdfstring{\v{R}e\v{s}en\'{\i}
+ kv\'{\i}z\r{u}}{Resen\355{} kv\355zu}}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{\v{R}e\v{s}en\'{\i} kv\'{\i}z\r{u}}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{\string\textbf{%
+ \string\v{R}e\string\v{s}en\string\'{\string\i}
+ kv\string\'{\string\i}zu:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{\v{R}e\v{s}en\'{\i}}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Kv\'{\i}z.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Zp\string\v{e}t na ot\string\'{a}zky}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Spravne !"}
+\renewcommand\eqsqwgmsg{"Spatne !"}
+
+\renewcommand\eq@bqlabel{Zacatek kvizu}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{Zacatek kvizu}
+\renewcommand\bqlabelISO{Zacatek kvizu}
+
+\renewcommand\eq@eqlabel{Konec kvizu}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{}
+\renewcommand\eq@OutOf{z celkovych}
+\renewcommand\eqInitQuizMsg{%
+ "Chcete-li pracovat s kvizem, musite jej nejprve spustit!
+ Kliknete na "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Uz jste si jednou odpoved vybral(a). Vase odpoved byla (" +
+ Responses[probno]+"). Chcete ji opravdu zmenit?"}
+\renewcommand\eq@local@CA{Opravit}
+\renewcommand\eq@local@RC{odpovedi!}
+\renewcommand\eq@local@AC{Prosim!}
+\renewcommand\eqerrABS{"Spatne uzavrena absolutni hodnota.
+ Opravte prosim."}
+\renewcommand\eqerrBadMathFunc{"Vyraz `"+aF[i]+"' neni ani
+ definovanou funkci ani " +", ani platnym matematickym vyrazem."}
+\renewcommand\eqParens{"Zavorky (kulate)"}
+\renewcommand\eqBrackets{"Hranate zavorky"}
+\renewcommand\eqBraces{"Slozene zavorky"}
+\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " nejsou parove.
+ Opravte je prosim."}
+\renewcommand\eqerrBadExp{"Spatny matematicky vyraz - problem v nekterem
+ exponentu. Opravte jej prosim."}
+\renewcommand\eqerrUnfinishQuiz{"Chyba: Nektery kviz mate nedokonceny.
+ Musite jej dokoncit, nez budete pokracovat u dalsiho kvizu. Pokud si
+ nepamatuje, ktery kviz jste nechali rozpracovany, zavrete cely
+ soubor, znovu jej otevrete a k testu, ktery chcete vyplnovat,
+ se vratte."}
+\renewcommand\noPeekMsg{"Prohlizeni reseni neni povoleno pred dokoncenim
+ kvizu!"}
+\renewcommand\highThresholdMsg{"Musite odpovedet na vsechny otazky, nez
+ ukoncite kviz."}
+\renewcommand\eqSyntaxErrorUndefVar{"Chyba: Pravdepodobne pouzivate
+ nespravnou promennou nebo mate preklep ve jmenu nektere funkce."}
+\renewcommand{\promptButtonMsg}{%
+ "Chcete ted videt spravnou odpoved? "\r\t\t
+ + "Hodnocena bude Vase soucasna odpoved. "\r\t\t
+ + "Kliknete-li na \\"Yes\\", uvidite spravnou odpoved, ale svou
+ stavajici odpoved na tuto otazku uz nebudete moct zmenit."
+}
+\endinput
+%%
+%% End of file `eqcz.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqda.def b/texmf-dist/tex/latex/acrotex/eqda.def
index 7bee63ed..95e4b95d 100644
--- a/texmf-dist/tex/latex/acrotex/eqda.def
+++ b/texmf-dist/tex/latex/acrotex/eqda.def
@@ -1,83 +1,83 @@
-%%
-%% This is file `eqda.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqda')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqda.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqda.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Erik Leimand %%
-%% e-mail address: buhlleimand@worldonline.dk %%
-%% Language: Danish %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{{\O}velse}
-\renewcommand\exlabelsol{{\protect\O}velse}
-
-\renewcommand\exsectitle{L{\o}sning p{\aa} {\o}velserne}
-\renewcommand\exsecrunhead{L{\protect\o}sning p{\protect\aa}
- {\protect\o}velserne}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{L{\o}sning}:}
-
-\renewcommand\eq@sqslsectitle{L{\o}sning p{\aa} opgaverne}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{L{\o}sning p{\aa} opgaverne}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{L{\protect\o}sning p{\protect\aa} opgave:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{L{\o}sning}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Opgave.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Slut}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Rigtigt!"}
-\renewcommand\eqsqwgmsg{"Forkert!"}
-
-\renewcommand\eq@bqlabel{Start opgaver}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Slut}
-\renewcommand\eqlabel{\eq@eqlabel}
-
-\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{ud af}
-\renewcommand\eqQuizTotalMsg{"\eqScore\space"+Score+"
- \eqOutOf\space"+nQuestions}
-\renewcommand\eqInitQuizMsg{"Du skal starte testen! Klik
- p\string\\345 "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Du har allerede valgt.
- Du valgte ("+Responses[probno]+").
- Vil du \string\\346ndre det?"}
-\renewcommand\eq@local@CA{Ret}
-\renewcommand\eq@local@RC{Mine svar!}
-\renewcommand\eq@local@AC{%
- V\texorpdfstring{\ae}{\string\346}r
- s\texorpdfstring{\r}{\string\345}god!}
-\endinput
-%%
-%% End of file `eqda.def'.
+%%
+%% This is file `eqda.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqda')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqda.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqda.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Erik Leimand %%
+%% e-mail address: buhlleimand@worldonline.dk %%
+%% Language: Danish %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{{\O}velse}
+\renewcommand\exlabelsol{{\protect\O}velse}
+
+\renewcommand\exsectitle{L{\o}sning p{\aa} {\o}velserne}
+\renewcommand\exsecrunhead{L{\protect\o}sning p{\protect\aa}
+ {\protect\o}velserne}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{L{\o}sning}:}
+
+\renewcommand\eq@sqslsectitle{L{\o}sning p{\aa} opgaverne}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{L{\o}sning p{\aa} opgaverne}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{L{\protect\o}sning p{\protect\aa} opgave:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{L{\o}sning}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Opgave.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Slut}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Rigtigt!"}
+\renewcommand\eqsqwgmsg{"Forkert!"}
+
+\renewcommand\eq@bqlabel{Start opgaver}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Slut}
+\renewcommand\eqlabel{\eq@eqlabel}
+
+\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{ud af}
+\renewcommand\eqQuizTotalMsg{"\eqScore\space"+Score+"
+ \eqOutOf\space"+nQuestions}
+\renewcommand\eqInitQuizMsg{"Du skal starte testen! Klik
+ p\string\\345 "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Du har allerede valgt.
+ Du valgte ("+Responses[probno]+").
+ Vil du \string\\346ndre det?"}
+\renewcommand\eq@local@CA{Ret}
+\renewcommand\eq@local@RC{Mine svar!}
+\renewcommand\eq@local@AC{%
+ V\texorpdfstring{\ae}{\string\346}r
+ s\texorpdfstring{\r}{\string\345}god!}
+\endinput
+%%
+%% End of file `eqda.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqde.def b/texmf-dist/tex/latex/acrotex/eqde.def
index 839eea11..94f21c6b 100644
--- a/texmf-dist/tex/latex/acrotex/eqde.def
+++ b/texmf-dist/tex/latex/acrotex/eqde.def
@@ -1,114 +1,114 @@
-%%
-%% This is file `eqde.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqde')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqde.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqde.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Michael Wiedmann %%
-%% e-mail address: michael.wiedmann@detewe.de %%
-%% Language: German %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{\"Ubung}
-\renewcommand\exlabelsol{\protect\"Ubung}
-
-\renewcommand\exsectitle{L\"osungen der \exlabel en}
-\renewcommand\exsecrunhead{L\protect\"osungen der \exlabelsol en}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{L\"osung}:}
-
-\renewcommand\eq@sqslsectitle{L\"osungen der Aufgaben}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{L\"osungen der Aufgaben}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \protect\textbf{L\protect\"osung zu Aufgabe:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{L\"osung}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Aufgabe}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{zur\"{u}ck zur Aufgabe}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Richtig!"}
-\renewcommand\eqsqwgmsg{"Falsch!"}
-
-\renewcommand\eq@bqlabel{Test starten}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabelISO}
-
-\renewcommand\eq@eqlabel{Test beenden}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Punkte:}\renewcommand\eq@OutOf{von}
-\renewcommand\eq@ptScore{Punkte:}
-\renewcommand\eqInitQuizMsg{%
- "Sie m\374ssen die Aufgaben zuerst initialisieren!"
- + " Bitte klicken Sie hierf\374r auf "+msg+" am Anfang des Tests."}
-\renewcommand\eqMadeChoice{%
- "Sie haben bereits geantwortet. Ihre Antwort war
- ("+Responses[probno]+")." + " Wollen Sie dies \string\344ndern?"}
-\renewcommand\eq@local@CA{Korrigiere}
-\renewcommand\eq@local@RC{Meine Antworten!}
-\renewcommand\eq@local@AC{Bitte!}
-\renewcommand{\AnsPromptBtnStr}{Antwort:\space}
-\renewcommand\eqerrABS{"Betr\string\344ge sind nicht ausgeglichen.
- Bitte korrigieren Sie das."}
-\renewcommand\eqerrBadMathFunc{"Der Ausdruck '"+aF[i]+"' ist weder
- eine definierte Funktion noch ein g\string\374ltiger mathematischer
- Ausdruck."}
-\renewcommand\eqParens{"runde Klammern"} % ( )
-\renewcommand\eqBrackets{"eckige Klammern"} % [ ]
-\renewcommand\eqBraces{"geschweifte Klammern"} % { }
-\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " sind nicht ausgeglichen.
- Bitte korrigieren Sie das."}
-\renewcommand\eqerrBadExp{"Ung\string\374ltiger mathematischer Ausdruck.
- Es gibt ein Problem mit einem der Exponenten.
- Bitte korrigieren Sie das!"}
-\renewcommand\eqerrUnfinishQuiz{"Sie haben einen Test nicht beendet.
- Bitte beenden Sie diesen, bevor Sie einen neuen Test beginnen."}
-\dlJSStr*[noquotes]{\noPeekMsg}{"Bevor Sie den Test nicht beendet
- haben, ist es nicht erlaubt, die L\"{o}sungen anzuschauen!"}
-\renewcommand\highThresholdMsg{"Sie m\string\374ssen alle Fragen
- beantworten, bevor der Test ausgewertet wird."}
-\dlJSStr*[noquotes]{\eqSyntaxErrorUndefVar}{"Syntax Error: Es existiert
- m\"{o}glicherweise eine undefinierte Variable oder ein Ausdruck
- ist nicht im erwarteten Format geschrieben."}
-\dlJSStr[noquotes]{\eqSyntaxErrorComma}{"Syntax Error: Ein Komma wurde"
- + " in Ihrer Antwort \""
- + UserAns + "\" gefunden. Bitte entfernen Sie das Komma,"
- + " sonst wird diese Antwort als falsch gewertet."}
-\dlJSStr*[noquotes]{\limSelWarningMsg}{"F\"{u}r diese Aufgabe k\"{o}nnen
- sie h\"{o}chstens " + n + " ausw\string\344hlen."}
-\fieldJSStr*[noquotes]{\promptButtonMsg}{%
- "M\"{o}chten Sie die richtige Antwort jetzt sehen?"
- + " Ihre derzeitige Antwort ist diejenige, die gewertet wird."
- + " Wenn Sie auf \\"Yes\\" klicken, k\"{o}nnen Sie ihre Antwort
- nicht mehr \string\344ndern."
-}
-\renewcommand{\defaultReqFormMsg}{%
- "Der Ausdruck ist nicht in der erwarteten Form."}
-\endinput
-%%
-%% End of file `eqde.def'.
+%%
+%% This is file `eqde.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqde')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqde.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqde.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Michael Wiedmann %%
+%% e-mail address: michael.wiedmann@detewe.de %%
+%% Language: German %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{\"Ubung}
+\renewcommand\exlabelsol{\protect\"Ubung}
+
+\renewcommand\exsectitle{L\"osungen der \exlabel en}
+\renewcommand\exsecrunhead{L\protect\"osungen der \exlabelsol en}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{L\"osung}:}
+
+\renewcommand\eq@sqslsectitle{L\"osungen der Aufgaben}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{L\"osungen der Aufgaben}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \protect\textbf{L\protect\"osung zu Aufgabe:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{L\"osung}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Aufgabe}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{zur\"{u}ck zur Aufgabe}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Richtig!"}
+\renewcommand\eqsqwgmsg{"Falsch!"}
+
+\renewcommand\eq@bqlabel{Test starten}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabelISO}
+
+\renewcommand\eq@eqlabel{Test beenden}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Punkte:}\renewcommand\eq@OutOf{von}
+\renewcommand\eq@ptScore{Punkte:}
+\renewcommand\eqInitQuizMsg{%
+ "Sie m\374ssen die Aufgaben zuerst initialisieren!"
+ + " Bitte klicken Sie hierf\374r auf "+msg+" am Anfang des Tests."}
+\renewcommand\eqMadeChoice{%
+ "Sie haben bereits geantwortet. Ihre Antwort war
+ ("+Responses[probno]+")." + " Wollen Sie dies \string\344ndern?"}
+\renewcommand\eq@local@CA{Korrigiere}
+\renewcommand\eq@local@RC{Meine Antworten!}
+\renewcommand\eq@local@AC{Bitte!}
+\renewcommand{\AnsPromptBtnStr}{Antwort:\space}
+\renewcommand\eqerrABS{"Betr\string\344ge sind nicht ausgeglichen.
+ Bitte korrigieren Sie das."}
+\renewcommand\eqerrBadMathFunc{"Der Ausdruck '"+aF[i]+"' ist weder
+ eine definierte Funktion noch ein g\string\374ltiger mathematischer
+ Ausdruck."}
+\renewcommand\eqParens{"runde Klammern"} % ( )
+\renewcommand\eqBrackets{"eckige Klammern"} % [ ]
+\renewcommand\eqBraces{"geschweifte Klammern"} % { }
+\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " sind nicht ausgeglichen.
+ Bitte korrigieren Sie das."}
+\renewcommand\eqerrBadExp{"Ung\string\374ltiger mathematischer Ausdruck.
+ Es gibt ein Problem mit einem der Exponenten.
+ Bitte korrigieren Sie das!"}
+\renewcommand\eqerrUnfinishQuiz{"Sie haben einen Test nicht beendet.
+ Bitte beenden Sie diesen, bevor Sie einen neuen Test beginnen."}
+\dlJSStr*[noquotes]{\noPeekMsg}{"Bevor Sie den Test nicht beendet
+ haben, ist es nicht erlaubt, die L\"{o}sungen anzuschauen!"}
+\renewcommand\highThresholdMsg{"Sie m\string\374ssen alle Fragen
+ beantworten, bevor der Test ausgewertet wird."}
+\dlJSStr*[noquotes]{\eqSyntaxErrorUndefVar}{"Syntax Error: Es existiert
+ m\"{o}glicherweise eine undefinierte Variable oder ein Ausdruck
+ ist nicht im erwarteten Format geschrieben."}
+\dlJSStr[noquotes]{\eqSyntaxErrorComma}{"Syntax Error: Ein Komma wurde"
+ + " in Ihrer Antwort \""
+ + UserAns + "\" gefunden. Bitte entfernen Sie das Komma,"
+ + " sonst wird diese Antwort als falsch gewertet."}
+\dlJSStr*[noquotes]{\limSelWarningMsg}{"F\"{u}r diese Aufgabe k\"{o}nnen
+ sie h\"{o}chstens " + n + " ausw\string\344hlen."}
+\fieldJSStr*[noquotes]{\promptButtonMsg}{%
+ "M\"{o}chten Sie die richtige Antwort jetzt sehen?"
+ + " Ihre derzeitige Antwort ist diejenige, die gewertet wird."
+ + " Wenn Sie auf \\"Yes\\" klicken, k\"{o}nnen Sie ihre Antwort
+ nicht mehr \string\344ndern."
+}
+\renewcommand{\defaultReqFormMsg}{%
+ "Der Ausdruck ist nicht in der erwarteten Form."}
+\endinput
+%%
+%% End of file `eqde.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqes.def b/texmf-dist/tex/latex/acrotex/eqes.def
index 195b6265..680738d0 100644
--- a/texmf-dist/tex/latex/acrotex/eqes.def
+++ b/texmf-dist/tex/latex/acrotex/eqes.def
@@ -1,78 +1,78 @@
-%%
-%% This is file `eqes.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqes')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqes.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqes.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Pedro Luis Luque %%
-%% e-mail address: calvo@cica.es %%
-%% Language: (spanish) %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\renewcommand\exlabel{Ejercicio}
-\renewcommand\exlabelsol{\exlabel}
-
-\renewcommand\exsectitle{Soluciones a los \exlabel s}
-\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Soluci\'{o}n}:}
-
-\renewcommand\eq@sqslsectitle{Soluciones a los Tests}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Soluciones a los Tests}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{Soluci\protect\'{o}n al Test:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Soluci\'{o}n}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Final del Test}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Correcto!"}
-\renewcommand\eqsqwgmsg{"Incorrecto!"}
-
-\renewcommand\eq@bqlabel{Inicio del Test}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Final del Test}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Puntos:}\renewcommand\eq@OutOf{de}
-\renewcommand\eqInitQuizMsg{"Debes inicializar el Test!
- Click sobre "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Ya has elegido una respuesta.
- Tu respuesta fue ("+Responses[probno]+").
- Quieres cambiarla?"}
-\renewcommand\eq@local@CA{Correctas}
-\renewcommand\eq@local@RC{Mis Respuestas!}
-\renewcommand\eq@local@AC{Por Favor!}
-\endinput
-%%
-%% End of file `eqes.def'.
+%%
+%% This is file `eqes.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqes')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqes.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqes.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Pedro Luis Luque %%
+%% e-mail address: calvo@cica.es %%
+%% Language: (spanish) %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\renewcommand\exlabel{Ejercicio}
+\renewcommand\exlabelsol{\exlabel}
+
+\renewcommand\exsectitle{Soluciones a los \exlabel s}
+\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Soluci\'{o}n}:}
+
+\renewcommand\eq@sqslsectitle{Soluciones a los Tests}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Soluciones a los Tests}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{Soluci\protect\'{o}n al Test:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Soluci\'{o}n}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Final del Test}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Correcto!"}
+\renewcommand\eqsqwgmsg{"Incorrecto!"}
+
+\renewcommand\eq@bqlabel{Inicio del Test}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Final del Test}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Puntos:}\renewcommand\eq@OutOf{de}
+\renewcommand\eqInitQuizMsg{"Debes inicializar el Test!
+ Click sobre "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Ya has elegido una respuesta.
+ Tu respuesta fue ("+Responses[probno]+").
+ Quieres cambiarla?"}
+\renewcommand\eq@local@CA{Correctas}
+\renewcommand\eq@local@RC{Mis Respuestas!}
+\renewcommand\eq@local@AC{Por Favor!}
+\endinput
+%%
+%% End of file `eqes.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqexam.def b/texmf-dist/tex/latex/acrotex/eqexam.def
index 54fe6082..0d2665cd 100644
--- a/texmf-dist/tex/latex/acrotex/eqexam.def
+++ b/texmf-dist/tex/latex/acrotex/eqexam.def
@@ -1,1715 +1,1715 @@
-%%
-%% This is file `eqexam.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `eqexam')
-%%
-\ProvidesFile{eqexam.def}
- [2018/03/21 v8.2.2 %
- 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
-\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}
-\newif\ifcqSA\cqSAfalse
-\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse
- \displayworkareatrue\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
-}
-\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
-\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
-\def\turnOnRandomize{\eq@randomizeallChoicestrue}
-\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
-\let\saveRandomSeed\relax
-\let\inputRandomSeed\relax
-\newcommand{\exsolafter}{\eq@exsolafterDefault}
-\newcommand{\resetSolnAfterToDefault}{%
- \def\exsolafter{\eq@exsolafterDefault}}
-\newcommand{\exsolafterDefault}[1]{\def\eq@exsolafterDefault{#1}%
- \def\exSolafterDefault{#1}\resetSolnAfterToDefault}
-\exsolafterDefault{\textit{Solution}:}
-\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
-\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
-\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
-\def\recoverDisplayBelow{\vskip\belowdisplayskip}
-\newcommand\setDefShortQuizLabelName[1]%
- {\def\eq@defaultShortQuizLabelName{#1}}
-\setDefShortQuizLabelName{Quiz}
-\ifsolutionsonly
-\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}}
-\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
-\fi
-\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
-\newcommand{\writeToQzSolns}[1]{%
- \set@display@protect
- \immediate\write\quiz@solns{#1}%
- \set@typeset@protect
-}
-\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
-\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
-\newcounter{eqexno} \setcounter{eqexno}{0}
-\newcounter{@exno} \setcounter{@exno}{0} % running exno
-\newcounter{quizno} \setcounter{quizno}{0}
-\renewcommand\thequizno{\alph{quizno}}
-\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
-\newlength\eq@tmplength
-\newlength\eqtmplength
-\newcounter{questionno}
-\newcounter{eqquestionnoi}
-\newcounter{eqquestionnoii}
-\newcounter{eqquestionnoiii}
-\newcount\@eqquestiondepth \@eqquestiondepth=0
-\newcounter{partno}
-\newif\ifuseNumForParts\useNumForPartsfalse
-\def\alphaParts{\def\partnoFmt{\alph}\useNumForPartsfalse}\alphaParts
-\def\numberParts{\def\partnoFmt{\arabic}\useNumForPartstrue}
-\renewcommand\thepartno{\partnoFmt{partno}}
-\newtoks\eq@scratchtoks
-\def\verbatimwrite{\@bsphack
- \let\do\@makeother\dospecials
- \catcode`\^^M\active \catcode`\^^I=12
- \def\verbatim@processline{%
- \immediate\write\verbatim@out
- {\the\verbatim@line}}%
- \verbatim@start}
-\def\endverbatimwrite{\@esphack}
-\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
-\newcommand{\belowexskip}[1]{\setlength{\eq@tmplength}{#1}%
- \edef\eq@exerskip{\noexpand\removelastparskip
- \noexpand\vskip\the\eq@tmplength\relax\kern0pt}}
-\let\eqexerskip\belowexskip
-\belowexskip{\medskipamount}
-\newcommand{\aboveexskip}[1]{\setlength{\eq@tmplength}{#1}%
- \edef\eq@priorexskip{\noexpand\vskip\the\eq@tmplength\relax
- \kern0pt}}
-\let\priorexskip\aboveexskip
-\aboveexskip{\medskipamount}
-\let\eq@postexerciseHook\relax
-\newcommand\belowexsolnskip{\protect\medskip}
-\def\removelastparskip{\ifdim\parskip>0pt\vskip-\parskip\fi}
-\let\marginparpriorhook\@empty % used to material before the exercise
-\let\marginparafterhook\@empty % used to material after the exercise
-\let\afterlabelhskip\space
-\let\exersolnheadhook\@empty
-\let\exer@solnheadhook\@empty
-\newcommand{\eqexheader}
-{%
- \mbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
- \exlabelformat\fi}%
-}
-\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
-\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
-\partsformat{(\hfil\thepartno\hfil)}
-\newcommand{\defaultpartsformat}{%
- \partsformat{(\hfil\thepartno\hfil)}}
-\let\exlisttabheaderpriorhook\@empty
-\let\exlisttabheaderafterhook\@empty
-\newcommand{\eqexlisttabheader}
-{%
- \exlisttabheaderpriorhook
- \color{\@nolinkcolor}\eq@partsformat
-}
-\newcount\cq@Cnt
-\def\cq@CutName{cq-\the\cq@Cnt.cut}
-\let\cq@star\eq@NO
-\newif\ifcqqs \cqqstrue
-\newif\ifcqIsActive \cqIsActivefalse
-\def\cqQS{\@ifstar{\cqQSV}{\cqQSA}}
-\def\cqQSA#1#2{\ifcqqs#1\else#2\fi}
-\@ifpackageloaded{web}{\@ifundefined{IF@AorBswitch}{%
- \PackageWarningNoLine{A version of the web package
- dated\MessageBreak 2016/11/03 or later is required
- for \string\cqQS}}}{}%
-\@ifundefined{webtempboxi}{\newbox\webtempboxi
- \newbox\webtempboxii}{}
-\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
-\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
-\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
-\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
- \afterassignment\TRUEACTIONia\fi
- \setbox\webtempboxi=\hbox}
-\providecommand\SETTEMPBOXii{\IF@AorBswitch
- \afterassignment\FALSEACTIONiia\fi
- \setbox\webtempboxii=\hbox}
-\def\cqQSV{\let\IF@AorBswitch\ifcqqs
- \IF@AorBswitch
- \def\eq@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
- \def\eq@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
- \eq@next}
-\def\eq@turnMessageOff{\let\save@message\message
- \let\message\@gobble}
-\def\eq@turnMessageOn{\let\message\save@message}
-\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
- \includecomment{sPage}\excludecomment{qPage}%
- \eq@turnMessageOn}
-\def\eqTopOfSolnPage{\cqSAfalse
- \eqCQDeclarations}
-\eq@turnMessageOff
-\includecomment{qPage}\excludecomment{sPage}
-\eq@turnMessageOn
-\newenvironment{cq@CQ}
-{%
- \global\cqIsActivetrue
- \global\advance\cq@Cnt1\relax
- \immediate\openout\CommentStream=\cq@CutName
- \let\verbatim@out\CommentStream
- \verbatimwrite
-}{%
- \endverbatimwrite
- \immediate\closeout\CommentStream
- \ifx\cq@star\eq@YES
- \xdef\cq@INPUTCUT{\noexpand\cqqstrue
- \noexpand\input{\cq@CutName}\noexpand
- \def@QuesToSoln}\else
- \xdef\cq@INPUTCUT{\noexpand\cqqstrue
- \noexpand\input{\cq@CutName}\noexpand
- \p@ssQuesToSoln}\fi
- \aftergroup\cq@INPUTCUT
-}
-\newenvironment{cqs@CQ}{\let\cq@star\eq@YES\cq@CQ}{\endcq@CQ}
-\def\declCQQuesStr#1{\def\cqQStr{#1}}
-\declCQQuesStr{Question}
-\def\declCQSolStr#1{\def\cqSStr{#1}}
-\declCQSolStr{Solution}
-\newcommand\declCQPre[1]{\def\cq@Pre{#1}}
-\declCQPre{\emph{\cqQStr}:\space}
-\newcommand\declCQPost[1]{\def\cq@Post{#1}}
-\declCQPost{\par\medskip\noindent\emph{\cqSStr}:\space\ignorespaces}
-\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}
-\def\declCopyQues#1{\def\cqCopiedQues{#1}}
-\def\def@QuesToSoln{\restoreNormalSolns
- \global\terminexchangedfalse % dps cq
- \ifeq@hidesolution\else\writeToExSolns{\protect
- \declCopyQues{\protect\input{\cq@CutName}}}\fi}
-\newcommand\restoreNormalSolns{%
- \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
-\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
-\let\eq@@CommonCmd\@empty
-\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
-\let\gEx@CommonCmd\@empty
-\let\endexerhook\@empty
-\newenvironment{exercise}
-{%
- \let\cq\cq@CQ\let\endcq\endcq@CQ
- \csarg\let{cq*}\cqs@CQ
- \csarg\let{endcq*}\endcqs@CQ
- \par\removelastskip\eq@priorexskip\noindent
- \let\eqCommonCmd\eq@CommonCmd
- \def\eq@argi{eqexno}%% use eqexno counter
- \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
- \def\currhideopt{x}%
- \@ifnextchar[{\exercise@}%
- {\if\exerstar*\def\eq@next{\@exercise}\else
- \def\eq@next{\exercise@@}\fi\eq@next}%
-}{\eq@postexerciseHook\endexerhook\par
- \global\eq@exerciseheadingtrue\removelastskip\eq@exerskip}
-\def\exercise@[#1]{\edef\eq@arg{#1}%
- \if\eq@arg h\def\currhideopt{h}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse\fi
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \if\eq@arg H%
- \edef\currhideopt{\Hidesymbol}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse
- \fi
- \def\eq@next{\@exercise}% H, no *, no counter
- \else
- \def\currhideopt{x}%
- \ifx\eq@arg\@empty\else\def\eq@argi{#1}\fi
- \if\exerstar*\def\eq@next{\@exercise}\else
- \def\eq@next{\exercise@@}\fi
- \fi
- \fi
-\eq@next}
-\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}{\exercise@@@}}
-\def\exercise@@@{\@ifnextchar[{\exercise@@@@}{\@exercise}}
-\def\exercise@@@@[#1]{\edef\eq@arg{#1}%
- \if\eq@arg h\def\currhideopt{h}%
- \eq@hidesolutiontrue\eq@nolinktrue
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse\fi
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \if\eq@arg H\edef\currhideopt{\Hidesymbol}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \def\currhideopt{x}%
- \PackageWarning{exerquiz}{The option #1 is not recognized}
- \let\eq@next\relax
- \fi
- \fi
-\eq@next}
-\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
-\let\prior@exerSolnHeaderHook\@empty
-\newcommand\exerSolnHeader[3]{%
- \prior@exerSolnHeaderHook
- \ifeqforpaper\else\webnewpage\fi\markright{#1}%\par\noindent%
- #3%
- \solnhspace
-}
-\let\solnItemMngt\relax
-\let\eqEXt\@gobbletwo
-\let\endeqEXt\relax
-\let\eqExtArg\@empty
-\let\eqFilterArg\@empty
-\let\eqExerSolnHeader\@empty
-\let\solutionparshape\@empty
-\def\eq@pslnaindnt{0pt}
-\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
-}
-\newif\if@restorejustify \@restorejustifyfalse
-\newcommand\restoreJustifyOn{\@restorejustifytrue}
-\newcommand\restoreJustifyOff{\@restorejustifyfalse}
-\def\restorejustify{\if@restorejustify
- \@rightskip\z@skip \rightskip\@rightskip
- \leftskip\z@skip \let\\\@normalcr\fi}
-\def\@exercise{%
- \global\let\solutionparshape\@empty
- \let\verbatim@out=\ex@solns
- \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
- \if\exerstar*% if exercise with parts
- \eq@nolinktrue
- \else
- \if\currhideopt H%
- \else
- \ifeq@solutionsafter
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide %
- \ifeq@hidesolution\else
- \global\let\eqExerSolnHeader\eq@@writeexheader
- \fi
- \fi
- \fi
- \fi
- \ifvmode\ifdim\lastskip>\z@
- \vskip-\lastskip
- \fi\fi
- \if\exerstar*%
- \let\solution\solnexer@woparts
- \let\endsolution\endsolnexer@woparts
- \let\parts\exercise@parts
- \let\endparts\endexercise@parts
- \else
- \let\solution\solnexer@woparts
- \let\endsolution\endsolnexer@woparts
- \let\parts\relax
- \let\endparts\relax
- \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
- \eq@nolinktrue\fi\fi
- \fi
- \eq@initializeContAnnot
- \ifeq@exerciseheading
- \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
- \afterlabelhskip\marginparafterhook\gEx@CommonCmd
- \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}
-\def\eqExerSolnHeaderSngl{%
- \ifmakeExSlLocal\protect\begingroup^^J\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
-}
-\def\eqExerSolnHeaderList{%
- \ifmakeExSlLocal\protect\begingroup^^J\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
-}
-\long\def\setsolnspace#1{\def\newsolnspace{#1}%
- \let\solnspace\newsolnspace}
-\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
-\def\ckSolnOpt{\global\eq@ckSolnVspacetrue}
-\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
-\let\solnhspace\space
-\let\solnspace\space
-\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}%]
- {\solnexer@@woparts[\null]}}\else
- \def\eq@next{\solnexer@@woparts[\null]}\fi
- \eq@next
-}
-\let\eqPriorVspace\@gobble
-\newif\if@eqlinedfiller \@eqlinedfillerfalse
-\newcommand{\vspaceFiller}[1]{\vfill}
-\newcommand{\vspaceFillerDefault}[1]{\vfill}
-\def\eqWriteLine{\hfill}
-\def\eq@linesXPgs{%
- \begingroup\offinterlineskip\parskip0pt
- \@tempcnta=0
- \@whilenum\@tempcnta<\soln@keys@nLines\relax\do
- {\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
- \advance\@tempcnta1\relax}\par\endgroup
-}
-\let\leavevspace\relax % dpsj5
-\newcommand{\vspaceFmt}[1]{%
- \ifx\solutionparshape\@empty\else
- \advance\linewidth-\leadinIndentPrtSep\fi
- \ifdim\sameVspace>0pt
- \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 % dpsj6
- \fi
-}
-\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
-\let\soln@keys@nLines\@empty
-\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
-\def\eqSolnForEqexam#1{%
- \let\soln@keys@nLines\@empty
- \setkeys*{soln@keys}{#1}%
- \ifx\soln@keys@nLines\@empty
- \ifx\minVspacet@bs\@empty\xdef\sameVspace{\XKV@rm}\else
- \xdef\sameVspace{\minVspacet@bs}\fi
- \else
- \@tempdima\wlVspace
- \@tempdima=\soln@keys@nLines\@tempdima
- \xdef\sameVspace{\the\@tempdima}%
- \ifx\XKV@rm\@empty\else
- \if@equsedim\let\soln@keys@nLines\@empty
- \xdef\sameVspace{\XKV@rm}\fi
- \fi
- \fi
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
-}
-\def\solnexer@@woparts[#1]{%
- \ifcqIsActive\else\ifterminexchanged
- \restoreNormalSolns\fi\fi % dps cq
- \global\cqIsActivefalse
- \def\eq@argi{#1}\def\eq@null{\null}%
- \ifx\eq@argi\@empty\gdef\sameVspace{0pt}\else
- \ifx\eq@argi\eq@null\gdef\sameVspace{0pt}\else
- \@ifundefined{PointsOnLeft}{%
- \let\eqKV@errx@SAVE\KV@errx
- \let\KV@errx\eqKV@errx\let\XKV@rm\@empty
- \edef\temp@exp{\noexpand\setkeys*{soln@keys}{#1}}\temp@exp
- \let\KV@errx\eqKV@errx@SAVE
- \ifx\soln@keys@nLines\@empty\else
- \PackageInfo{exerquiz}{%
- nLines key detected in solution environment,\MessageBreak
- is not not recognized without eqexam,\MessageBreak
- will remove it}%
- \let\soln@keys@nLines\@empty\fi
- \xdef\sameVspace{\XKV@rm}%
- }{\eqSolnForEqexam{#1}}%
- \fi\fi
- \solnexer@@@woparts
-}
-\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
- \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{%
- \xdef\eq@startSoln{\the\pagetotal}%
- \eqe@debugVertSkip{\marginpar{\smash{b[\sameVspace]}}}%
-}
-\let\eqSavedComment\comment
-\let\eqSavedEndCommet\endcomment
-\def\setTabulrSolnEnv{%
- \@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
- \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
- \leftmargin\leftmarginii \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep}%
- \def\everyparShape{\everypar{\parshape \@ne 0pt \linewidth}}%
- \reset@doendpe{\parshape \@ne 0pt \linewidth}%
- \parshape \@ne 0pt \linewidth
- \everyparShape
-}
-\newif\ifthereissolution
-\let\priorexsolafterList\@empty
-\let\priorexsolafterTab\@empty
-\let\priorexsolafterSngl\@empty
-\def\eq@Hid{H}\def\eq@hid{h}
-\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}% dpsj4
-\let\eq@b@ddCodeSpecial\eq@b@ddCodeSpecialDef % dpsj4
-\def\solnexer@@@woparts{\ifeq@solutionsafter\else
- \expandafter\begingroup\fi %dpsj10
- \global\thereissolutiontrue
- \global\let\procsoln\relax % dpsj6
- \global\let\endprocsoln\relax % dpsj6
- \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
- \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
- \let\procsoln\relax % dpsj6
- \let\endprocsoln\relax
- \removelastskip\removelastparskip
- \cqSAtrue\eqCQDeclarations
- \declCopyQues{\input{\cq@CutName}}%
- \ifx\exsolafter\@empty
- \ifdim\sameVspace=0pt\eqe@setStartSolns
- \else
- \solutionsafterSkip
- \@@solnafterSkipOnce % dpsj3
- \eqe@setStartSolns
- \fi
- \else\par\kern0pt
- \solutionsafterSkip
- \@@solnafterSkipOnce % dpsj3
- \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
- }%
- \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
-\newcommand\eqExerSolnTrailer{%
- \protect\ReturnTo{page.\the\c@page}%
- {\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
- \exrtnlabelformat\fi}}%
- \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-}
-\let\eq@e@ddCodeSpecialDef\relax % dpsj4
-\let\eq@e@ddCodeSpecial\eq@e@ddCodeSpecialDef % dpsj6
-\let\kdvsp@Restore\relax % dpsj20
-\def\endsolnexer@woparts{\endprocsoln\eq@e@ddCodeSpecial
- \pkg@endsolnexerhook % djsj8 moved from the end of the macro
- \ifeq@solutionsafter\else
- \expandafter\endgroup\fi % from \begingroup at \solnexer@@@woparts
- \global\let\exsolnonceonlytophook\relax
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi % dpsj5
- \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 % dpsj9
- \if\exerstar*%
- \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
- \eq@fititin{\mbox{\exrtnlabelformat}}\fi
- \ifx\istabularexer\eq@YES\unskip\kern0pt\else\par\fi % dpsj6
- \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
- \let\verbatim@out\ex@solns
- \set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnTrailer}%
- \set@typeset@protect
- \fi
- \fi
- \fi
- \kdvsp@Restore % dpsj20
- \endsolnexerhook\penalty0\relax}
-\let\eq@exerstarEnv\relax
-\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
-{\endexercise}
-\def\exerwparts@cols{0}
-\let\topofpartshook\relax
-\let\@listiiredefined\eq@NO
-\let\itsExerParts\eq@NO
-\newif\if@tableadinitem\@tableadinitemfalse
-\newcommand{\tableadin@external}{\PackageError{exerquiz/eqexam}
- {The \string\tableadin\space command is designed\MessageBreak
- for the problem* environment of eqexam}{Use \string\tableadin\space
- in the problem* environment of eqexam.}%
-}
-\let\tableadin\tableadin@external
-\newcommand{\eq@tableadinparts}{\item\relax
- \PackageError{exerquiz/eqexam}{The \string\tableadin\space
- command is not allowed in the\MessageBreak
- parts environment}{Use \string\tableadin\space
- in the problem* environment of eqexam.}%
-}
-\let\istabularexer\eq@NO
-\def\exercise@parts{\let\rlspar\relax
- \ifx\solutionparshape\@empty
- \let\isitleadin\eq@NO
- \if@tableadinitem\let\rlspar\@gobbletwo\fi
- \else\let\isitleadin\eq@YES\fi
- \rlspar\removelastskip\par
- \if\isitleadin\eq@YES
- \def\eqparts@topsep{0pt}%
- \vskip\eqparts@itemsep\relax\fi
- \topofpartshook
- \let\itsExerParts\eq@YES
- \global\let\@listiiredefined\eq@NO
- \def\exerwparts@cols{0}\@ifnextchar[%
- {%
- \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}
-\newcommand{\setPartsWidth}[1]{\def\parts@indent{\normalfont#1}%
- \bgroup\settowidth{\eq@tmpdima}{\parts@indent}%
- \xdef\widthOfParts{\the\eq@tmpdima}\egroup}
-\setPartsWidth{(d)}
-\def\eqe@prtsepPrb{\ }
-\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
-\eqequesparsep{0pt}
-\let\prior@parts@hook\@empty
-\let\post@parts@hook\@empty
-\let\abovepartshook\@empty
-\let\belowpartshook\@empty
-\let\eqp@rtc@lcm@rk\relax
-\let\eq@insertContAnnot\relax
-\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
- \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
- \@ifnextchar[{\@ckhide}{\eq@item}}
-\newcommand{\partsitemsep}[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@itemsep{\the\@tempdima}}}
-\let\eqpartsitemsep\partsitemsep
-\def\eqparts@itemsep{0pt}
-\newcommand\partsparsep[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@parsep{\the\@tempdima}}}
-\def\eqparts@parsep{0pt}
-\newcommand\partstopsep[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@topsep{\the\@tempdima}}}
-\def\eqparts@topsep{3pt}
-\newcommand{\leadinitem@external}{\PackageError{exerquiz/eqexam}
- {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.}%
-}
-\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.}%
-}
-\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
-\def\eq@handleOptArgi{\expandafter
- \eq@item@latex\eq@optArg\exlisttabheaderafterhook}
-\newif\ifwithinparts
-\let\ex@listtabheader@fterhook\@empty
-\newenvironment{exercise@parts@list}{%
- \settowidth{\eq@tmplength}{\parts@indent}%
- \edef\widthOfParts{\the\eq@tmplength}%
- \eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
- \abovepartshook\list{\normalfont
- \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
- \eq@nolinktrue\fi\fi
- \if\currhideopt H%
- \else
- \ifeq@solutionsafter
- \eq@nolinktrue % no link to solution
- \else
- \ifeq@nosolutions
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide
- \ifeq@hidesolution\eq@nolinktrue\else
- \global\let\eqExerSolnHeader\eq@@writeexheaderlist
- \fi
- \fi
- \fi
- \fi
- \makebox[\widthOfParts][r]{\eqexlisttabheader}%
-}{%
- \usecounter{partno}%
- \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
- \setlength{\topsep}{\eqparts@topsep}%
- \setlength{\parskip}{0pt}%
- \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
- \ifdim\eqeques@parsep=0pt
- \setlength{\parsep}{\eqparts@parsep}%
- \else
- \setlength{\parsep}{\eqeques@parsep}%
- \fi
- \setlength{\itemsep}{\eqparts@itemsep-\parsep}%
- \setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \settowidth{\labelsep}{\normalfont\eqe@prtsepPrb}%
- \addtolength{\labelsep}{\eq@extralabelsep}%
- \settowidth{\labelwidth}{\parts@indent}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \let\eq@item@latex\item
- \def\eq@item{\@ifnextchar[{\eq@handleOptArg}
- {\eq@item@latex\ex@listtabheader@fterhook
- \exlisttabheaderafterhook}}%
- \def\eqthisenv{parts}\withinpartstrue
- \def\item{\ifx\@currenvir\eqthisenv
- \def\eq@next{\eq@item@common}\else
- \def\eq@next{\eq@item}\fi
- \eq@next}%
-}}{\endlist\global\let\leadinitem\leadinitem@external
- \post@parts@hook\belowpartshook}
-\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
- {\global\let\eqeCurrProb\relax}
- {\xdef\eqeCurrProb{\theeqquestionnoi}}%
- \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
-\def\minVspacetabs#1{\def\minVspacet@bs{#1}}
-\def\priorexsolafterTab{\ifkeepdeclaredvspacing
- \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
- \priorexsolafterTab@cont\fi\fi\fi}
-\def\priorexsolafterTab@cont{\let\exsolafter@save\exsolafter
- \let\exsolafter\@empty
- \makebox[0pt][r]{\parbox[t][\minVspacet@bs][t]{0pt}
- {\strut\hfill\vfill\strut}}%
- \minipage[t]{\linewidth}\exsolafter@save}
-\def\pkg@endsolnexerhook{\ifkeepdeclaredvspacing
- \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
- \endminipage\fi\fi\fi}
-\def\exercise@parts@tabular@[#1]{%
- \inittabMark
- \let\eq@insertContAnnot\relax
- \let\exerwparts@cols\@empty
- \setkeys*{tabp@rts}{#1}\ifx\exerwparts@cols\@empty
- \edef\exerwparts@cols{\XKV@rm}\fi
- \ifx\minVspacet@bs\@empty\keepdeclaredvspacingfalse\fi
- \let\istabularexer\eq@YES
- \@tempcnta\exerwparts@cols\relax
- \ifnum\@tempcnta<2\relax
- \PackageError{exerquiz}{%
- The number of columns for parts\MessageBreak
- needs to be an integer greater than 1}
- {Enter an integer, 2 or larger}\fi
- \exercise@parts@tabular}
-\newcount\eq@extabColCnt
-\def\autotabOn{\let\eq@tabMarkChk\relax%
- \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOn}}
-\def\autotabOff{\let\eq@tabMarkChk\@gobble
- \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOff}}
-\autotabOff
-\def\inittabMark{\global\eq@extabColCnt=0 }
-\def\resettabMark{\global\eq@extabColCnt=1 }
-\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
- \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
- \expandafter\eq@atnext\fi}
-\def\eq@tabMark{%
- \ifnum\eq@extabColCnt=0\relax
- \global\advance\eq@extabColCnt1\relax
- \let\eq@next\relax
- \else
- \ifnum\eq@extabColCnt=1\relax
- \let\eq@next\relax
- \else
- \ifnum\eq@extabColCnt>\exerwparts@cols
- \let\eq@next\autotabnewline
- \else\def\eq@next{&}\fi
- \fi
- \fi
- \eq@next
- \global\advance\eq@extabColCnt1\relax
-}
-\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
-\partstabcolsep{1.5pt}
-\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
-\partstabtopsep{3pt}
-\def\eq@vpartstabtopsep{\vskip\eq@partstabtopsep\relax}
-\newcommand\partstabrowsep[1]{\setlength{\@tempdima}{#1}%
- \edef\eqparts@tabrowsep{\the\@tempdima}}
-\partstabrowsep{0pt}
-\newenvironment{exercise@parts@tabular}{%
- \setcounter{partno}{0}%
- \def\tablrIndent{\hglue\prtsIndntSep\relax}%
- \if\isitleadin\eq@YES
- \if$\the\everypar$\let\tablrIndent\relax\fi
- \setcounter{partno}{1}\fi
- \let\leadinitem\eq@leadinitemparts
- \let\tableadin\eq@tableadinparts
- \global\let\solutionparshape\@empty
- \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}%
- \sbox{\eq@tmpbox}{\parts@indent}%
- \let\eq@item@latex\item
- \let\eq@item\item@part@tabular
- \def\eqthisenv{parts}\withinpartstrue
- \def\item{\ifx\@currenvir\eqthisenv
- \def\eq@next{\eq@tabMarkChk\eq@tabMark\eq@item@common}\else
- \def\eq@next{\eq@item@latex}\fi
- \eq@next}\eq@nolinkfalse
- \@ifundefined{@xtabularcr}{\let\@xarraycr\eq@xtabularcr}
- {\let\@xtabularcr\eq@xtabularcr}%
- \eq@tmpdima=\linewidth
- \advance\eq@tmpdima-\prtsIndntSep\relax
- \@tempcnta\exerwparts@cols\relax
- \advance\@tempcnta-1\relax
- \multiply\@tempcnta2\relax
- \@tempdima\prtsIndntSep\relax
- \divide\@tempdima 2\relax
- \edef\halfWidth{\the\@tempdima}%
- \advance\@tempdima\eq@partstabcolsep\relax
- \tabcolsep\@tempdima
- \multiply\@tempdima\@tempcnta
- \advance\eq@tmpdima-\@tempdima
- \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
- \parskip\eqeques@parsep\relax
- \parindent0pt\relax\strut}p{\eq@tmpdima}}@{\hidewidth}}%
-}{\endtabular\kern0pt
- \@ifundefined{@listii@SAVE}{}{\global\let\@listii\@listii@SAVE
- \global\let\@listii@SAVE\relax}%
- \post@parts@hook\belowpartshook
- \aftergroup\eqe@innermarkpts
- \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
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide
- \ifeq@hidesolution\eq@nolinktrue\else
- \gdef\eqExerSolnHeader{\eq@@writeexheaderlist}%
- \fi\fi\fi
- \if@restorejustify\restorejustify\else\PBS\raggedright\fi
- \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}%
- \sbox{\eq@tmpbox}{\parts@indent}%
- \eq@tmpdima=\wd\eq@tmpbox
- \addtolength\eq@tmplength{\eq@extralabelsep}%
- \xdef\partshangamount{\the\eq@tmplength}%
- \parshape \@ne 0pt \linewidth
- \everypar{\parshape \@ne 0pt \linewidth}%
- \eq@setPrbSolnAftrIndnt
- \makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
- \ex@listtabheader@fterhook
- \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\tabControlOn{\@ifundefined{@xtabularcr}
- {\let\save@@xtabularcr\@xarraycr}
- {\let\save@@xtabularcr\@xtabularcr}}
-\def\tabControlOff{\@ifundefined{@xtabularcr}
- {\let\@xarraycr\save@@xtabularcr}
- {\let\@xtabularcr\save@@xtabularcr}}
-\AtBeginDocument{\tabControlOn}
-\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
- {\eqe@tab@parts@rowsep}}%
-\def\eqe@tab@parts@rowsep{\save@@xtabularcr
- \noalign{\expandafter\kern\eqparts@tabrowsep}}%
-\def\includeexersolutions{\@ifstar
- {\let\resetEXsolns\relax\includeexersolutionsi}
- {\def\resetEXsolns{\global\let\include@solutions\relax}%
- \includeexersolutionsi}%
-}
-\newcommand{\includeexersolutionsi}[1][]{%
- \filterFor{#1}\includeexersolutionsii
-}
-\def\includeexersolutionsii{%
- \include@solutions
- \resetEXsolns
- \let\eqFilterArg\@empty
-}
-\long\def\gobbleToEndEXt#1\endeqEXt{%
- \ifeqforpaper\expandafter\@gobbletwo\fi}
-\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
-\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
- \else\expandafter\gobbleToEndEXt\fi}
-\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
-\let\eqsolutionshook\@empty
-\let\eq@solutionshook\@empty
-\let\priorexsectitle\@empty
-\let\priorexslinput\@empty
-\def\exerSolnsHeadnToc{\section*{\exsectitle}%
- \addcontentsline{toc}{section}{%
- \@ifundefined{web@latextoc}{}{%
- \ifx\web@latextoc\eq@YES\else
- \protect\numberline{}\fi}\exsectitle}}
-\@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}}
- {\let\eq@normallheader\relax}
-\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
- {\let\eq@defaultlheader\relax}
-\newif\ifExSolutionsSet \ExSolutionsSetfalse
-\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{\global\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
- \fi
-}
-\def\include@solutions{%
- \exerSolnInput
-}
-\newcommand{\prior@questionsHook}{}
-\let\qMark@Hook\@empty
-\let\aebtitleQuiz\@empty
-\newcommand{\post@questionsHook}{}
-\newcommand{\quesNumColor}[1]{\def\eq@quesNumCol{#1}}
-\quesNumColor{blue}
-\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
-\newcommand{\labeleqquestionnoi}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoi.}
-\renewcommand\theeqquestionnoii{(\alph{eqquestionnoii})}
-\newcommand{\labeleqquestionnoii}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoii}
-\renewcommand\theeqquestionnoiii{(\roman{eqquestionnoiii})}
-\newcommand{\labeleqquestionnoiii}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoiii}
-\define@key{props@ques}{labelwidthTo}%
- [\normalsize\normalfont\bfseries00.]%
- {\def\propQ@labelwidthTo{#1}}
-\define@key{props@ques}{labelwidth}[]{\def\propQ@labelwidth{#1}}
-\let\propQ@labelwidth\@empty
-\define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}}
-\define@key{props@ques}{partopsep}[\the\partopsep]%
- {\edef\propQ@partopsep{#1}}
-\define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}}
-\define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}}
-\define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]%
- {\def\propQ@labelsepTo{#1}}
-\define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}}
-\let\propQ@labelsep\@empty
-\define@key{props@ques}{color}[blue]{\quesNumColor{#1}}
-\setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,%
- itemsep,labelsepTo,color}%
-\newenvironment{questions}[1][]
-{%
- \ifnum\@eqquestiondepth>\tw@\@toodeep\else
- \advance\@eqquestiondepth\@ne\fi
- \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
- \toks@=\expandafter\expandafter\expandafter{#1}\expandafter
- \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}%
- \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp
- \list{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
- \global\let\eqQT\eq@na%
- {\@tempcnta=0 \let\@thispr@b\@empty
- \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne
- \ifx\@thispr@b\@empty\edef\@thispr@b{%
- \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else
- \edef\@thispr@b{\@thispr@b%
- \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi
- }\xdef\@currentQues{\@thispr@b}}%
- \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}%
- \xdef\eq@pageThisQ{\the\c@page}%
- \post@questionsHook}{\usecounter{\@quesctr}%
- \ifx\propQ@labelsep\@empty
- \settowidth{\labelsep}{\propQ@labelsepTo}\else
- \setlength{\labelsep}{\propQ@labelsep}\fi
- \ifx\propQ@labelwidth\@empty
- \settowidth{\labelwidth}%
- {\propQ@labelwidthTo\hspace{\labelsep}}\else
- \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}%
- \hspace{\labelsep}}\fi
- \setlength{\topsep}{\propQ@topsep}%
- \setlength{\partopsep}{\propQ@partopsep}%
- \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
- \setlength{\parsep}{\propQ@parsep}%
- \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}}
-\def\popquestions{%
- \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}}
-\abovesqskip{\par\medskip}
-\long\def\endsqhook#1{\def\sq@afterhook{#1}}
-\endsqhook{}
-\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}%
-}{\aeb@endshortquiz}
-\newenvironment{shortquiz*}
-{%
- \xdef\eq@pageThisQ{\the\c@page}%
- {\count0=\@shortquizCnt\advance\count0by1\relax
- \xdef\@shortquizCnt{\the\count0 }}%
- \sqForms\@shortquiz
-}{\aeb@endshortquiz}
-\def\@shortquiz{\@ifnextchar[%
- {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
-\def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty
- \protected@edef\@currentlabelname{#1}\else
- \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}%
- \edef\@currentHref{shortquiz.\@shortquizCnt}%
- \global\let\eqQuizType\isSQZ\let\@qzsolndest\@empty
- \if\sqstar*\relax
- \let\@Ans\Ans@sq@f
- \ifx\oField\@empty
- \typeout{^^JExerquiz: Base field name required when using
- shortquiz with '*' option}%
- \PackageInfo{exerquiz}{Assuming link style^^J}%
- \let\@Ans\Ans@sq@l
- \fi
- \else
- \let\@Ans\Ans@sq@l
- \fi
- \setcounter{questionno}{0}%
- \let\answers\answers@sq
- \let\endanswers\endanswers@sq
- \let\manswers\manswers@sq
- \let\endmanswers\endmanswers@sq
- \let\solution\solution@sq
- \let\endsolution\endsolution@sq
- \sq@aboveskip\sq@priorhook\ignorespaces
-}
-\newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}}
-\belowsqskip{\medskip}
-\def\aeb@endshortquiz{\setcounter{quizno}{0}%
- \sq@afterhook
- \global\let\sqlabel\eq@sqlabel
- \global\let\sqslrtnlabel\eq@sqslrtnlabel
- \global\let\sqsllabel\eq@sqsllabel
- \par\aftershortquizskip
-}
-\def\sqLinks{\def\sqstar{}}\sqLinks
-\def\sqForms{\def\sqstar{*}}
-\let\eq@tq@star\relax
-\def\qzPriorSolutionAfterHook{\smallskip}
-\let\sqPostHeaderHook\@empty
-\let\qPostHeaderHook\@empty
-\let\eq@sqPostHeaderHook\@empty
-\let\eq@qPostHeaderHook\@empty
-\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}%
- {* Solutions unexpected here, will *\MessageBreak
- * assume solutionsafter option *}%
- \eq@solutionsaftertrue
- \fi
- \ifeq@solutionsafter
- \par\qzPriorSolutionAfterHook\noindent
- \if!\sqsolafter!\else
- \sqsolafter\sqsolafterhspace\fi\ignorespaces
- \else
- \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
- \protect\eqQt{\eqFilterArg}\else
- \ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
- \protect\eqSQt{\eqFilterArg}\fi
- \protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
- [{\curr@quiz}{\currQuizStartPage}]\fi\fi
- {\@qzsolndest}{\sqsllabel}\protect\eqterminex
- \if\eqQuizType\isQZ\expandafter\eq@qPostHeaderHook
- \expandafter\qPostHeaderHook\else
- \expandafter\eq@sqPostHeaderHook
- \expandafter\sqPostHeaderHook\fi}%
- \set@typeset@protect
- \expandafter\verbatimwrite\fi
-}
-\let\qzSolutionsAfterHook\@empty
-\def\endsolution@sq
-{%
- \ifeq@solutionsafter
- \eq@fititin{\mbox{\sqslrtnlabel}}\par\qzSolutionsAfterHook
- \aftergroup\ignorespaces
- \else
- \endverbatimwrite
- \ifx\@qzsolndest\@empty\else\set@display@protect
- \immediate\write\verbatim@out{\eqSqSolnTrailer}%
- \set@typeset@protect
- \fi
- \fi
- \global\let\@qzsolndest\@empty
-}
-\def\fpAfterSolutionsSkip{\par\medskip}
-\let\eqSqSolnTrailerHook\@empty
-\let\eqQzSolnTrailerHook\@empty
-\newcommand\eqSqSolnTrailer{%
- \if\eqQuizType\isQZ
- \eqQzSolnTrailerHook
- \protect\ReturnTo{page.\eq@pageThisQ}%
- {\protect\mbox{\sqslrtnlabel}}\string\endeqQt
- \else
- \eqSqSolnTrailerHook
- \protect\ReturnTo{page.\eq@pageThisQ}%
- {\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
- \fi
- \ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
- \ifmakeQzSlLocal\protect\endgroup^^J\fi
-}
-\let\eqSQt\@gobble
-\let\endeqSQt\relax
-\let\eqQt\@gobble
-\let\endeqQt\relax
-\let\prior@quizSolnHeaderHook\@empty
-\newcommand\quizSolnHeader[3][]{%
- \prior@quizSolnHeaderHook
- \ifeqforpaper\else\webnewpage\fi\noindent
- #2%
- \solnspace
-}
-\newif\iftherearequizsolutions \therearequizsolutionsfalse
-\let\aeb@FLOverride\relax
-\def\includequizsolutions{\@ifstar
- {\let\resetQZtsolns\relax\includequizsolutionsi}
- {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
- \includequizsolutionsi}%
-}
-\newcommand{\includequizsolutionsi}[1][]{%
- \filterFor{#1}\includequizsolutionsii
-}
-\def\includequizsolutionsii{%
- \include@quizsolutions
- \resetQZtsolns
- \let\eqFilterArg\@empty
-}
-\newcommand\useForms{\def\aeb@FLOverride{f}}
-\newcommand\useLinks{\def\aeb@FLOverride{l}}
-\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
-\let\aeb@FLOverride\relax
-\let\aebtitleQuiz\@empty
-\let\aebTitleQuiz\@empty
-\def\pushEnvir{\xdef\eq@currenvir{\@currenvir}\endgroup}
-\def\popEnvir{\begingroup\@endpefalse
- \edef\@currenvir{\eq@currenvir}%
- \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[]}}}
-\def\manswers@sq{\parindent0pt
- \@ifundefined{ifuserectforms}{}
- {\if\aeb@FLOverride\eq@f\ifuserectforms
- \useRectForMC\else\useCircForMC\fi\fi}%
- \ifx\solutionparshape\@empty\else
- \pushEnvir\par\noindent\expandafter\popEnvir\fi
- \stepcounter{questionno}%
- \if\sqstar*\relax
- \if\aeb@FLOverride\eq@l
- \let\@Ans\Ans@ck@sq@l\else
- \let\@Ans\Ans@ck@sq@f\fi
- \else
- \if\aeb@FLOverride\eq@f
- \let\@Ans\Ans@ck@sq@f\else
- \let\@Ans\Ans@ck@sq@l\fi
- \fi
- \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
- {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
-\let\sq@hwdest\@empty % hard-wired destination
-\def\answers@@sq[#1]#2{%
- \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}}
-\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}{}
-\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
- \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
-}
-\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
- \ifx\itsExerParts\eq@YES\par\removelastskip
- \removelastparskip\vskip\aboveanswersSkip\fi
- \else\par\removelastskip\removelastparskip
- \vskip\aboveanswersSkip\fi
- \noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
- \tabcolsep=0pt
- \eq@tmpdima=\linewidth
- \@tempcnta#1\relax
- \advance\@tempcnta-1\relax
- \multiply\@tempcnta by2
- \@tempdima\sq@tabsep\relax
- \multiply\@tempdima\@tempcnta
- \advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by#1
- \def\Ans{\Ans@tabular}%
- \tabcolsep\sq@tabsep\relax
- \expandafter\tabular\sq@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}}%
-\let\eq@save@doendpe\@doendpe
-\def\reset@doendpe#1{\global\eq@scratchtoks=\expandafter{#1}%
- \gdef\@doendpe{\par\@endpetrue\global\let\@doendpe\eq@save@doendpe
- \def\par{\@restorepar
- \expandafter\everypar
- \expandafter{\the\eq@scratchtoks}\par\@endpefalse}%
- \everypar{{\setbox\z@\lastbox}%
- \everypar{}\@endpefalse}\the\eq@scratchtoks
- }%
-}
-\newcommand\answersEndHook[1]{\def\eq@answersEndHook{#1}}
-\let\eq@answersEndHook\@empty
-\def\endanswers@sq{\endtabular\setcounter{quizno}{0}%
- \eq@answersEndHook\reset@doendpe{\the\everypar}%
- \ifinner\else%\par
- \removelastskip
- \vspace{\aboveanswersSkip}\@endpetrue\fi
-}
-\def\endmanswers@sq{\endtabular\setcounter{quizno}{0}%
- \eq@answersEndHook\reset@doendpe{\the\everypar}%
- \ifinner\else%\par
- \removelastskip
- \vspace{\aboveanswersSkip}\@endpetrue\fi
-}
-\def\popiiictm{\special{CTM: pop pop pop}}
-\def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters
- \Alph{quizno}\noexpand\else\linkContentFormat\noexpand\fi}
-\def\linkContentFormat{%
- \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
-\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
- \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
- \Ans@sq@l@driver
-\eq@hspanner\ignorespaces}
-\let\Ans@ck@sq@l\Ans@sq@l
-\let\rbf@Opts\@empty
-\def\Ans@sq@f{%
- \if\eq@listType\eq@One\stepcounter{quizno}\else
- \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
- {\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
- \insertGrayLetters % 6.3d
- \Ans@sq@f@driver
-\eq@hspanner\ignorespaces}
-\let\Ans@ck@sq@f\Ans@sq@f
-\newskip\aboveanswersSkip
-\setlength\aboveanswersSkip{3pt}
-\providecommand\graylettersColor{gray}
-\def\insertGrayLetters{\ifaebshowgrayletters
- \rlap{\makebox[\RadioFieldSize]%
- {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi}
-\newcount\eq@tabColCnt
-\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
-\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
- \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
- \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
- }\temp@expand@def
-}
-\def\bChoiceNumCols{\aeb@numCols}
-\define@key{bchoice}{random}[true]{%
- \csname if#1\endcsname\eq@randomizeChoicestrue
- \else\eq@randomizeChoicesfalse\fi
-}
-\define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}}
-\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
-\def\@ansChoices[#1]%
-{%
- \global\let\@tempholdSaveAns\@empty %4/5
- \global\let\@tempholdSaveChoice\@empty %4/5
- \global\let\bChoiceLabel\@empty %4/5
- \setkeys{bchoice}{#1}%
- \global\eq@tabColCnt=0
- \ifnum\aeb@numCols=1 % list mode
- \def\eq@next{\@layoutListAns}\else % tabular mode
- \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi
- \eq@next
-}
-\let\eChoices\relax
-\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
- {\@lookforendansChoices{\@layoutListAns}}%
-}
-\newcommand{\eq@saveAns}[2][]{%
- \let\eq@next\@@@SaveAnsGobbleAns
- \ifx\bChoiceLabel\@empty\else
- \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}%
- \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi
- \fi\eq@next
-}
-\long\def\@@@SaveAns#1\eAns{% 4/5
- \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}%
- \addtocounter{quizno}{1}%
- \edef\temp@expand{\noexpand\g@addto@macro\noexpand
- \@tempholdSaveChoice{%
- \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else
- \ifaebshowgrayletters\Alph{quizno}\else
- \linkContentFormat\fi\fi}}}\temp@expand
- \addtocounter{quizno}{-1}%
-}
-\newif\ifoxfordcomma \oxfordcommatrue
-\def\oxfordCommaOn{\oxfordcommatrue}
-\def\oxfordCommaOff{\oxfordcommafalse}
-\def\eq@insertComma{%
- \ifx\eq@comma\@empty
- \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
- \def\eq@comma{,}\fi
- \else\ifx\eq@insertAnd\@empty\eq@comma\space
- \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}%
- \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space
- \fi
- \fi
-}
-\newcommand\eqAnd{and}\def\eq@insertAnd{%
- \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else
- \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
- \else\leavevmode\space\fi\eqAnd\space\fi}
-\long\def\eq@displayAns#1{\advance\@tempcnta1\relax
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
-\def\eq@displayAlts#1{\advance\@tempcnta1
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi
- \savedAltFmt{#1}}
-\def\eq@displayAltsAns#1{\advance\@tempcnta1\relax
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
-\newcommand{\savedAltFmt}[1]{(#1)}
-\newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i}
- {\let\eq@insertAnd\@empty\useSavedAns@i}}
-\newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\let\label\@gobble
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAns\@nameuse{SavedAns#2}\else
- \@nameuse{SavedAns#2-Idx#1}\fi
- \egroup
-}
-\newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i}
- {\let\eq@insertAnd\@empty\useSavedAlts@i}}
-\newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\@nameuse{caseFor#2}%
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else
- \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi
- \egroup
-}
-\newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i}
- {\let\eq@insertAnd\@empty\useSavedAltsAns@i}}
-\newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else
- \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}
- \@nameuse{SavedAns#2-Idx#1}\fi
- \egroup
-}
-\newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}}
-\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5
-\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph
- \eq@saveAns#1\eAns % 4/5
- \Ans#1\vspace{\@rowskip}%
- \@layoutListAns
-}
-\long\def\@lookforendansChoices#1{%
- \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
- \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
-}
-\def\@layoutTabularAns#1{%
- \let\eq@tabSep\@empty
- \xdef\numShortCols{#1}%
- \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
- \@@layoutTabularAns
-}
-\def\@@layoutTabularAns{%
- \@ifnextchar\Ans{\@getTabAns}%
- {\@lookforendansChoices{\@@layoutTabularAns}}%
-}
-\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
-\rowsep{\rowsep@default}
-\def\rowsepDefault#1{\def\rowsep@default{#1}}
-\def\rowsep@default{0pt}
-\long\def\@getTabAns\Ans#1\eAns{%
- \eq@saveAns#1\eAns
- \global\advance\eq@tabColCnt1
- \let\@save@tabSep=\eq@tabSep
- \ifnum\eq@tabColCnt=\numShortCols
- \global\eq@tabColCnt=0
- \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
- \else
- \gdef\eq@tabSep{&}%
- \fi
- \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
- \expandafter\@findendans\@gobble}%
- {\@save@tabSep\Ans#1\@@layoutTabularAns}%
-}
-\def\@findendans{\@ifnextchar\end{% 4/5
- \ifx\bChoiceLabel\@empty\else
- \processLabeledAns\fi
- }{\expandafter\@findendans\@gobble}}%
-\def\defineEachAns#1{\advance\count0by1\relax
- \@temptokena={#1}\csarg\xdef
- {SavedAns\bChoiceLabel-Idx\the\count0}{\the\@temptokena}%
- \ifsolutionsonly\else
- {\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}}}\fi
-}
-\def\defineEachChoice#1{\advance\count0by1\relax
- \@temptokena={#1}\csarg\xdef
- {SavedAlts\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}\ifsolutionsonly\else
- {\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAlts\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}}}\fi
-}
-\def\processLabeledAns{%
- \bgroup
- \let\label\@gobble
-\if\aeb@FLOverride\eq@l
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else
- \ifaebshowgrayletters
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi
-\fi
- \toks@=\expandafter{\@tempholdSaveAns}\csarg
- \xdef{SavedAns\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi
- \count0=0\relax\let\\\defineEachAns\the\toks@
- \xdef\@currNCntAns{\the\count0 }\csarg
- \xdef{NumAns\bChoiceLabel}{\@currNCntAns}%
- \ifsolutionsonly\else{\eq@IWDefs{\string
- \csarg\string\gdef{NumAns\bChoiceLabel}{\the\count0 }}}\fi
- \toks@=\expandafter{\@tempholdSaveChoice}\csarg
- \xdef{SavedAlts\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi
- \count0=0\relax\let\\\defineEachChoice\the\toks@
- \count0=1\relax\toks@={}%{\ignorespaces\@gobble}%
- \loop
- \edef\temp@exp{\the\toks@\noexpand\\{%
- \noexpand\useSavedAlts[\the\count0]{\bChoiceLabel}
- \noexpand\useSavedAns[\the\count0]{\bChoiceLabel}}}%
- \toks@=\expandafter{\temp@exp}%
- \ifnum\count0<\@currNCntAns
- \advance\count0by1
- \repeat
- \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi
- \egroup
-}
-\def\graylettersOn{\aebshowgrayletterstrue}
-\def\graylettersOff{\aebshowgraylettersfalse}
-\def\aeb@exiii{\expandafter\expandafter\expandafter}
-\def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar}
- {\let\isREFstar\eq@Zero\aeb@REF}}
-\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
- {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
- \else\ref*{#1}\fi}%
-}
-\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
- {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
- \else\ref{#1}\fi}%
-}
-\def\aeb@buildUpperCaseRef#1{%
- \xdef\tmp@expand{\aeb@exiii\@firstoftwo\csname r@#1\endcsname}%
- \xdef\tmp@expand{\uppercase{\tmp@expand}}\tmp@expand
-}
-\endinput
-%%
-%% End of file `eqexam.def'.
+%%
+%% This is file `eqexam.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `eqexam')
+%%
+\ProvidesFile{eqexam.def}
+ [2018/03/21 v8.2.2 %
+ 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
+\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}
+\newif\ifcqSA\cqSAfalse
+\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse
+ \displayworkareatrue\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
+}
+\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
+\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
+\def\turnOnRandomize{\eq@randomizeallChoicestrue}
+\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
+\let\saveRandomSeed\relax
+\let\inputRandomSeed\relax
+\newcommand{\exsolafter}{\eq@exsolafterDefault}
+\newcommand{\resetSolnAfterToDefault}{%
+ \def\exsolafter{\eq@exsolafterDefault}}
+\newcommand{\exsolafterDefault}[1]{\def\eq@exsolafterDefault{#1}%
+ \def\exSolafterDefault{#1}\resetSolnAfterToDefault}
+\exsolafterDefault{\textit{Solution}:}
+\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
+\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
+\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
+\newcommand\setDefShortQuizLabelName[1]%
+ {\def\eq@defaultShortQuizLabelName{#1}}
+\setDefShortQuizLabelName{Quiz}
+\ifsolutionsonly
+\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}}
+\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
+\fi
+\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
+\newcommand{\writeToQzSolns}[1]{%
+ \set@display@protect
+ \immediate\write\quiz@solns{#1}%
+ \set@typeset@protect
+}
+\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
+\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
+\newcounter{eqexno} \setcounter{eqexno}{0}
+\newcounter{@exno} \setcounter{@exno}{0} % running exno
+\newcounter{quizno} \setcounter{quizno}{0}
+\renewcommand\thequizno{\alph{quizno}}
+\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
+\newlength\eq@tmplength
+\newlength\eqtmplength
+\newcounter{questionno}
+\newcounter{eqquestionnoi}
+\newcounter{eqquestionnoii}
+\newcounter{eqquestionnoiii}
+\newcount\@eqquestiondepth \@eqquestiondepth=0
+\newcounter{partno}
+\newif\ifuseNumForParts\useNumForPartsfalse
+\def\alphaParts{\def\partnoFmt{\alph}\useNumForPartsfalse}\alphaParts
+\def\numberParts{\def\partnoFmt{\arabic}\useNumForPartstrue}
+\renewcommand\thepartno{\partnoFmt{partno}}
+\newtoks\eq@scratchtoks
+\def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active \catcode`\^^I=12
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start}
+\def\endverbatimwrite{\@esphack}
+\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
+\newcommand{\belowexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@exerskip{\noexpand\removelastparskip
+ \noexpand\vskip\the\eq@tmplength\relax\kern0pt}}
+\let\eqexerskip\belowexskip
+\belowexskip{\medskipamount}
+\newcommand{\aboveexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@priorexskip{\noexpand\vskip\the\eq@tmplength\relax
+ \kern0pt}}
+\let\priorexskip\aboveexskip
+\aboveexskip{\medskipamount}
+\let\eq@postexerciseHook\relax
+\newcommand\belowexsolnskip{\protect\medskip}
+\def\removelastparskip{\ifdim\parskip>0pt\vskip-\parskip\fi}
+\let\marginparpriorhook\@empty % used to material before the exercise
+\let\marginparafterhook\@empty % used to material after the exercise
+\let\afterlabelhskip\space
+\let\exersolnheadhook\@empty
+\let\exer@solnheadhook\@empty
+\newcommand{\eqexheader}
+{%
+ \mbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
+ \exlabelformat\fi}%
+}
+\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
+\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
+\partsformat{(\hfil\thepartno\hfil)}
+\newcommand{\defaultpartsformat}{%
+ \partsformat{(\hfil\thepartno\hfil)}}
+\let\exlisttabheaderpriorhook\@empty
+\let\exlisttabheaderafterhook\@empty
+\newcommand{\eqexlisttabheader}
+{%
+ \exlisttabheaderpriorhook
+ \color{\@nolinkcolor}\eq@partsformat
+}
+\newcount\cq@Cnt
+\def\cq@CutName{cq-\the\cq@Cnt.cut}
+\let\cq@star\eq@NO
+\newif\ifcqqs \cqqstrue
+\newif\ifcqIsActive \cqIsActivefalse
+\def\cqQS{\@ifstar{\cqQSV}{\cqQSA}}
+\def\cqQSA#1#2{\ifcqqs#1\else#2\fi}
+\@ifpackageloaded{web}{\@ifundefined{IF@AorBswitch}{%
+ \PackageWarningNoLine{A version of the web package
+ dated\MessageBreak 2016/11/03 or later is required
+ for \string\cqQS}}}{}%
+\@ifundefined{webtempboxi}{\newbox\webtempboxi
+ \newbox\webtempboxii}{}
+\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
+\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
+\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
+\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
+ \afterassignment\TRUEACTIONia\fi
+ \setbox\webtempboxi=\hbox}
+\providecommand\SETTEMPBOXii{\IF@AorBswitch
+ \afterassignment\FALSEACTIONiia\fi
+ \setbox\webtempboxii=\hbox}
+\def\cqQSV{\let\IF@AorBswitch\ifcqqs
+ \IF@AorBswitch
+ \def\eq@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
+ \def\eq@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
+ \eq@next}
+\def\eq@turnMessageOff{\let\save@message\message
+ \let\message\@gobble}
+\def\eq@turnMessageOn{\let\message\save@message}
+\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
+ \includecomment{sPage}\excludecomment{qPage}%
+ \eq@turnMessageOn}
+\def\eqTopOfSolnPage{\cqSAfalse
+ \eqCQDeclarations}
+\eq@turnMessageOff
+\includecomment{qPage}\excludecomment{sPage}
+\eq@turnMessageOn
+\newenvironment{cq@CQ}
+{%
+ \global\cqIsActivetrue
+ \global\advance\cq@Cnt1\relax
+ \immediate\openout\CommentStream=\cq@CutName
+ \let\verbatim@out\CommentStream
+ \verbatimwrite
+}{%
+ \endverbatimwrite
+ \immediate\closeout\CommentStream
+ \ifx\cq@star\eq@YES
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \def@QuesToSoln}\else
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \p@ssQuesToSoln}\fi
+ \aftergroup\cq@INPUTCUT
+}
+\newenvironment{cqs@CQ}{\let\cq@star\eq@YES\cq@CQ}{\endcq@CQ}
+\def\declCQQuesStr#1{\def\cqQStr{#1}}
+\declCQQuesStr{Question}
+\def\declCQSolStr#1{\def\cqSStr{#1}}
+\declCQSolStr{Solution}
+\newcommand\declCQPre[1]{\def\cq@Pre{#1}}
+\declCQPre{\emph{\cqQStr}:\space}
+\newcommand\declCQPost[1]{\def\cq@Post{#1}}
+\declCQPost{\par\medskip\noindent\emph{\cqSStr}:\space\ignorespaces}
+\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}
+\def\declCopyQues#1{\def\cqCopiedQues{#1}}
+\def\def@QuesToSoln{\restoreNormalSolns
+ \global\terminexchangedfalse % dps cq
+ \ifeq@hidesolution\else\writeToExSolns{\protect
+ \declCopyQues{\protect\input{\cq@CutName}}}\fi}
+\newcommand\restoreNormalSolns{%
+ \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
+\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
+\let\eq@@CommonCmd\@empty
+\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
+\let\gEx@CommonCmd\@empty
+\let\endexerhook\@empty
+\newenvironment{exercise}
+{%
+ \let\cq\cq@CQ\let\endcq\endcq@CQ
+ \csarg\let{cq*}\cqs@CQ
+ \csarg\let{endcq*}\endcqs@CQ
+ \par\removelastskip\eq@priorexskip\noindent
+ \let\eqCommonCmd\eq@CommonCmd
+ \def\eq@argi{eqexno}%% use eqexno counter
+ \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
+ \def\currhideopt{x}%
+ \@ifnextchar[{\exercise@}%
+ {\if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi\eq@next}%
+}{\eq@postexerciseHook\endexerhook\par
+ \global\eq@exerciseheadingtrue\removelastskip\eq@exerskip}
+\def\exercise@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H%
+ \edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse
+ \fi
+ \def\eq@next{\@exercise}% H, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \ifx\eq@arg\@empty\else\def\eq@argi{#1}\fi
+ \if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi
+ \fi
+ \fi
+\eq@next}
+\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}{\exercise@@@}}
+\def\exercise@@@{\@ifnextchar[{\exercise@@@@}{\@exercise}}
+\def\exercise@@@@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H\edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \PackageWarning{exerquiz}{The option #1 is not recognized}
+ \let\eq@next\relax
+ \fi
+ \fi
+\eq@next}
+\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
+\let\prior@exerSolnHeaderHook\@empty
+\newcommand\exerSolnHeader[3]{%
+ \prior@exerSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\markright{#1}%\par\noindent%
+ #3%
+ \solnhspace
+}
+\let\solnItemMngt\relax
+\let\eqEXt\@gobbletwo
+\let\endeqEXt\relax
+\let\eqExtArg\@empty
+\let\eqFilterArg\@empty
+\let\eqExerSolnHeader\@empty
+\let\solutionparshape\@empty
+\def\eq@pslnaindnt{0pt}
+\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
+}
+\newif\if@restorejustify \@restorejustifyfalse
+\newcommand\restoreJustifyOn{\@restorejustifytrue}
+\newcommand\restoreJustifyOff{\@restorejustifyfalse}
+\def\restorejustify{\if@restorejustify
+ \@rightskip\z@skip \rightskip\@rightskip
+ \leftskip\z@skip \let\\\@normalcr\fi}
+\def\@exercise{%
+ \global\let\solutionparshape\@empty
+ \let\verbatim@out=\ex@solns
+ \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
+ \if\exerstar*% if exercise with parts
+ \eq@nolinktrue
+ \else
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide %
+ \ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheader
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifvmode\ifdim\lastskip>\z@
+ \vskip-\lastskip
+ \fi\fi
+ \if\exerstar*%
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\exercise@parts
+ \let\endparts\endexercise@parts
+ \else
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\relax
+ \let\endparts\relax
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \fi
+ \eq@initializeContAnnot
+ \ifeq@exerciseheading
+ \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
+ \afterlabelhskip\marginparafterhook\gEx@CommonCmd
+ \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}
+\def\eqExerSolnHeaderSngl{%
+ \ifmakeExSlLocal\protect\begingroup^^J\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
+}
+\def\eqExerSolnHeaderList{%
+ \ifmakeExSlLocal\protect\begingroup^^J\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
+}
+\long\def\setsolnspace#1{\def\newsolnspace{#1}%
+ \let\solnspace\newsolnspace}
+\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
+\def\ckSolnOpt{\global\eq@ckSolnVspacetrue}
+\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
+\let\solnhspace\space
+\let\solnspace\space
+\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}%]
+ {\solnexer@@woparts[\null]}}\else
+ \def\eq@next{\solnexer@@woparts[\null]}\fi
+ \eq@next
+}
+\let\eqPriorVspace\@gobble
+\newif\if@eqlinedfiller \@eqlinedfillerfalse
+\newcommand{\vspaceFiller}[1]{\vfill}
+\newcommand{\vspaceFillerDefault}[1]{\vfill}
+\def\eqWriteLine{\hfill}
+\def\eq@linesXPgs{%
+ \begingroup\offinterlineskip\parskip0pt
+ \@tempcnta=0
+ \@whilenum\@tempcnta<\soln@keys@nLines\relax\do
+ {\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
+ \advance\@tempcnta1\relax}\par\endgroup
+}
+\let\leavevspace\relax % dpsj5
+\newcommand{\vspaceFmt}[1]{%
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
+ \ifdim\sameVspace>0pt
+ \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 % dpsj6
+ \fi
+}
+\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
+\let\soln@keys@nLines\@empty
+\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
+\def\eqSolnForEqexam#1{%
+ \let\soln@keys@nLines\@empty
+ \setkeys*{soln@keys}{#1}%
+ \ifx\soln@keys@nLines\@empty
+ \ifx\minVspacet@bs\@empty\xdef\sameVspace{\XKV@rm}\else
+ \xdef\sameVspace{\minVspacet@bs}\fi
+ \else
+ \@tempdima\wlVspace
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \xdef\sameVspace{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\let\soln@keys@nLines\@empty
+ \xdef\sameVspace{\XKV@rm}\fi
+ \fi
+ \fi
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+}
+\def\solnexer@@woparts[#1]{%
+ \ifcqIsActive\else\ifterminexchanged
+ \restoreNormalSolns\fi\fi % dps cq
+ \global\cqIsActivefalse
+ \def\eq@argi{#1}\def\eq@null{\null}%
+ \ifx\eq@argi\@empty\gdef\sameVspace{0pt}\else
+ \ifx\eq@argi\eq@null\gdef\sameVspace{0pt}\else
+ \@ifundefined{PointsOnLeft}{%
+ \let\eqKV@errx@SAVE\KV@errx
+ \let\KV@errx\eqKV@errx\let\XKV@rm\@empty
+ \edef\temp@exp{\noexpand\setkeys*{soln@keys}{#1}}\temp@exp
+ \let\KV@errx\eqKV@errx@SAVE
+ \ifx\soln@keys@nLines\@empty\else
+ \PackageInfo{exerquiz}{%
+ nLines key detected in solution environment,\MessageBreak
+ is not not recognized without eqexam,\MessageBreak
+ will remove it}%
+ \let\soln@keys@nLines\@empty\fi
+ \xdef\sameVspace{\XKV@rm}%
+ }{\eqSolnForEqexam{#1}}%
+ \fi\fi
+ \solnexer@@@woparts
+}
+\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
+ \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{%
+ \xdef\eq@startSoln{\the\pagetotal}%
+ \eqe@debugVertSkip{\marginpar{\smash{b[\sameVspace]}}}%
+}
+\let\eqSavedComment\comment
+\let\eqSavedEndCommet\endcomment
+\def\setTabulrSolnEnv{%
+ \@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep}%
+ \def\everyparShape{\everypar{\parshape \@ne 0pt \linewidth}}%
+ \reset@doendpe{\parshape \@ne 0pt \linewidth}%
+ \parshape \@ne 0pt \linewidth
+ \everyparShape
+}
+\newif\ifthereissolution
+\let\priorexsolafterList\@empty
+\let\priorexsolafterTab\@empty
+\let\priorexsolafterSngl\@empty
+\def\eq@Hid{H}\def\eq@hid{h}
+\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}% dpsj4
+\let\eq@b@ddCodeSpecial\eq@b@ddCodeSpecialDef % dpsj4
+\def\solnexer@@@woparts{\ifeq@solutionsafter\else
+ \expandafter\begingroup\fi %dpsj10
+ \global\thereissolutiontrue
+ \global\let\procsoln\relax % dpsj6
+ \global\let\endprocsoln\relax % dpsj6
+ \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
+ \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
+ \let\procsoln\relax % dpsj6
+ \let\endprocsoln\relax
+ \removelastskip\removelastparskip
+ \cqSAtrue\eqCQDeclarations
+ \declCopyQues{\input{\cq@CutName}}%
+ \ifx\exsolafter\@empty
+ \ifdim\sameVspace=0pt\eqe@setStartSolns
+ \else
+ \solutionsafterSkip
+ \@@solnafterSkipOnce % dpsj3
+ \eqe@setStartSolns
+ \fi
+ \else\par\kern0pt
+ \solutionsafterSkip
+ \@@solnafterSkipOnce % dpsj3
+ \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
+ }%
+ \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
+\newcommand\eqExerSolnTrailer{%
+ \protect\ReturnTo{page.\the\c@page}%
+ {\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
+ \exrtnlabelformat\fi}}%
+ \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+}
+\let\eq@e@ddCodeSpecialDef\relax % dpsj4
+\let\eq@e@ddCodeSpecial\eq@e@ddCodeSpecialDef % dpsj6
+\let\kdvsp@Restore\relax % dpsj20
+\def\endsolnexer@woparts{\endprocsoln\eq@e@ddCodeSpecial
+ \pkg@endsolnexerhook % djsj8 moved from the end of the macro
+ \ifeq@solutionsafter\else
+ \expandafter\endgroup\fi % from \begingroup at \solnexer@@@woparts
+ \global\let\exsolnonceonlytophook\relax
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi % dpsj5
+ \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 % dpsj9
+ \if\exerstar*%
+ \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
+ \eq@fititin{\mbox{\exrtnlabelformat}}\fi
+ \ifx\istabularexer\eq@YES\unskip\kern0pt\else\par\fi % dpsj6
+ \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
+ \let\verbatim@out\ex@solns
+ \set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \fi
+ \kdvsp@Restore % dpsj20
+ \endsolnexerhook\penalty0\relax}
+\let\eq@exerstarEnv\relax
+\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
+{\endexercise}
+\def\exerwparts@cols{0}
+\let\topofpartshook\relax
+\let\@listiiredefined\eq@NO
+\let\itsExerParts\eq@NO
+\newif\if@tableadinitem\@tableadinitemfalse
+\newcommand{\tableadin@external}{\PackageError{exerquiz/eqexam}
+ {The \string\tableadin\space command is designed\MessageBreak
+ for the problem* environment of eqexam}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\tableadin\tableadin@external
+\newcommand{\eq@tableadinparts}{\item\relax
+ \PackageError{exerquiz/eqexam}{The \string\tableadin\space
+ command is not allowed in the\MessageBreak
+ parts environment}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\istabularexer\eq@NO
+\def\exercise@parts{\let\rlspar\relax
+ \ifx\solutionparshape\@empty
+ \let\isitleadin\eq@NO
+ \if@tableadinitem\let\rlspar\@gobbletwo\fi
+ \else\let\isitleadin\eq@YES\fi
+ \rlspar\removelastskip\par
+ \if\isitleadin\eq@YES
+ \def\eqparts@topsep{0pt}%
+ \vskip\eqparts@itemsep\relax\fi
+ \topofpartshook
+ \let\itsExerParts\eq@YES
+ \global\let\@listiiredefined\eq@NO
+ \def\exerwparts@cols{0}\@ifnextchar[%
+ {%
+ \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}
+\newcommand{\setPartsWidth}[1]{\def\parts@indent{\normalfont#1}%
+ \bgroup\settowidth{\eq@tmpdima}{\parts@indent}%
+ \xdef\widthOfParts{\the\eq@tmpdima}\egroup}
+\setPartsWidth{(d)}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\eqequesparsep{0pt}
+\let\prior@parts@hook\@empty
+\let\post@parts@hook\@empty
+\let\abovepartshook\@empty
+\let\belowpartshook\@empty
+\let\eqp@rtc@lcm@rk\relax
+\let\eq@insertContAnnot\relax
+\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}}
+\newcommand{\partsitemsep}[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@itemsep{\the\@tempdima}}}
+\let\eqpartsitemsep\partsitemsep
+\def\eqparts@itemsep{0pt}
+\newcommand\partsparsep[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@parsep{\the\@tempdima}}}
+\def\eqparts@parsep{0pt}
+\newcommand\partstopsep[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@topsep{\the\@tempdima}}}
+\def\eqparts@topsep{3pt}
+\newcommand{\leadinitem@external}{\PackageError{exerquiz/eqexam}
+ {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.}%
+}
+\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.}%
+}
+\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
+\def\eq@handleOptArgi{\expandafter
+ \eq@item@latex\eq@optArg\exlisttabheaderafterhook}
+\newif\ifwithinparts
+\let\ex@listtabheader@fterhook\@empty
+\newenvironment{exercise@parts@list}{%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\widthOfParts{\the\eq@tmplength}%
+ \eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
+ \abovepartshook\list{\normalfont
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \ifeq@nosolutions
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist
+ \fi
+ \fi
+ \fi
+ \fi
+ \makebox[\widthOfParts][r]{\eqexlisttabheader}%
+}{%
+ \usecounter{partno}%
+ \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
+ \setlength{\topsep}{\eqparts@topsep}%
+ \setlength{\parskip}{0pt}%
+ \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
+ \ifdim\eqeques@parsep=0pt
+ \setlength{\parsep}{\eqparts@parsep}%
+ \else
+ \setlength{\parsep}{\eqeques@parsep}%
+ \fi
+ \setlength{\itemsep}{\eqparts@itemsep-\parsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \settowidth{\labelsep}{\normalfont\eqe@prtsepPrb}%
+ \addtolength{\labelsep}{\eq@extralabelsep}%
+ \settowidth{\labelwidth}{\parts@indent}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \let\eq@item@latex\item
+ \def\eq@item{\@ifnextchar[{\eq@handleOptArg}
+ {\eq@item@latex\ex@listtabheader@fterhook
+ \exlisttabheaderafterhook}}%
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@item@common}\else
+ \def\eq@next{\eq@item}\fi
+ \eq@next}%
+}}{\endlist\global\let\leadinitem\leadinitem@external
+ \post@parts@hook\belowpartshook}
+\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
+ {\global\let\eqeCurrProb\relax}
+ {\xdef\eqeCurrProb{\theeqquestionnoi}}%
+ \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
+\def\minVspacetabs#1{\def\minVspacet@bs{#1}}
+\def\priorexsolafterTab{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \priorexsolafterTab@cont\fi\fi\fi}
+\def\priorexsolafterTab@cont{\let\exsolafter@save\exsolafter
+ \let\exsolafter\@empty
+ \makebox[0pt][r]{\parbox[t][\minVspacet@bs][t]{0pt}
+ {\strut\hfill\vfill\strut}}%
+ \minipage[t]{\linewidth}\exsolafter@save}
+\def\pkg@endsolnexerhook{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \endminipage\fi\fi\fi}
+\def\exercise@parts@tabular@[#1]{%
+ \inittabMark
+ \let\eq@insertContAnnot\relax
+ \let\exerwparts@cols\@empty
+ \setkeys*{tabp@rts}{#1}\ifx\exerwparts@cols\@empty
+ \edef\exerwparts@cols{\XKV@rm}\fi
+ \ifx\minVspacet@bs\@empty\keepdeclaredvspacingfalse\fi
+ \let\istabularexer\eq@YES
+ \@tempcnta\exerwparts@cols\relax
+ \ifnum\@tempcnta<2\relax
+ \PackageError{exerquiz}{%
+ The number of columns for parts\MessageBreak
+ needs to be an integer greater than 1}
+ {Enter an integer, 2 or larger}\fi
+ \exercise@parts@tabular}
+\newcount\eq@extabColCnt
+\def\autotabOn{\let\eq@tabMarkChk\relax%
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOn}}
+\def\autotabOff{\let\eq@tabMarkChk\@gobble
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOff}}
+\autotabOff
+\def\inittabMark{\global\eq@extabColCnt=0 }
+\def\resettabMark{\global\eq@extabColCnt=1 }
+\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
+ \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
+ \expandafter\eq@atnext\fi}
+\def\eq@tabMark{%
+ \ifnum\eq@extabColCnt=0\relax
+ \global\advance\eq@extabColCnt1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt=1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt>\exerwparts@cols
+ \let\eq@next\autotabnewline
+ \else\def\eq@next{&}\fi
+ \fi
+ \fi
+ \eq@next
+ \global\advance\eq@extabColCnt1\relax
+}
+\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
+\partstabcolsep{1.5pt}
+\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
+\partstabtopsep{3pt}
+\def\eq@vpartstabtopsep{\vskip\eq@partstabtopsep\relax}
+\newcommand\partstabrowsep[1]{\setlength{\@tempdima}{#1}%
+ \edef\eqparts@tabrowsep{\the\@tempdima}}
+\partstabrowsep{0pt}
+\newenvironment{exercise@parts@tabular}{%
+ \setcounter{partno}{0}%
+ \def\tablrIndent{\hglue\prtsIndntSep\relax}%
+ \if\isitleadin\eq@YES
+ \if$\the\everypar$\let\tablrIndent\relax\fi
+ \setcounter{partno}{1}\fi
+ \let\leadinitem\eq@leadinitemparts
+ \let\tableadin\eq@tableadinparts
+ \global\let\solutionparshape\@empty
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \let\eq@item@latex\item
+ \let\eq@item\item@part@tabular
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@tabMarkChk\eq@tabMark\eq@item@common}\else
+ \def\eq@next{\eq@item@latex}\fi
+ \eq@next}\eq@nolinkfalse
+ \@ifundefined{@xtabularcr}{\let\@xarraycr\eq@xtabularcr}
+ {\let\@xtabularcr\eq@xtabularcr}%
+ \eq@tmpdima=\linewidth
+ \advance\eq@tmpdima-\prtsIndntSep\relax
+ \@tempcnta\exerwparts@cols\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta2\relax
+ \@tempdima\prtsIndntSep\relax
+ \divide\@tempdima 2\relax
+ \edef\halfWidth{\the\@tempdima}%
+ \advance\@tempdima\eq@partstabcolsep\relax
+ \tabcolsep\@tempdima
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \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
+ \parskip\eqeques@parsep\relax
+ \parindent0pt\relax\strut}p{\eq@tmpdima}}@{\hidewidth}}%
+}{\endtabular\kern0pt
+ \@ifundefined{@listii@SAVE}{}{\global\let\@listii\@listii@SAVE
+ \global\let\@listii@SAVE\relax}%
+ \post@parts@hook\belowpartshook
+ \aftergroup\eqe@innermarkpts
+ \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
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \gdef\eqExerSolnHeader{\eq@@writeexheaderlist}%
+ \fi\fi\fi
+ \if@restorejustify\restorejustify\else\PBS\raggedright\fi
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \eq@tmpdima=\wd\eq@tmpbox
+ \addtolength\eq@tmplength{\eq@extralabelsep}%
+ \xdef\partshangamount{\the\eq@tmplength}%
+ \parshape \@ne 0pt \linewidth
+ \everypar{\parshape \@ne 0pt \linewidth}%
+ \eq@setPrbSolnAftrIndnt
+ \makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
+ \ex@listtabheader@fterhook
+ \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\tabControlOn{\@ifundefined{@xtabularcr}
+ {\let\save@@xtabularcr\@xarraycr}
+ {\let\save@@xtabularcr\@xtabularcr}}
+\def\tabControlOff{\@ifundefined{@xtabularcr}
+ {\let\@xarraycr\save@@xtabularcr}
+ {\let\@xtabularcr\save@@xtabularcr}}
+\AtBeginDocument{\tabControlOn}
+\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
+ {\eqe@tab@parts@rowsep}}%
+\def\eqe@tab@parts@rowsep{\save@@xtabularcr
+ \noalign{\expandafter\kern\eqparts@tabrowsep}}%
+\def\includeexersolutions{\@ifstar
+ {\let\resetEXsolns\relax\includeexersolutionsi}
+ {\def\resetEXsolns{\global\let\include@solutions\relax}%
+ \includeexersolutionsi}%
+}
+\newcommand{\includeexersolutionsi}[1][]{%
+ \filterFor{#1}\includeexersolutionsii
+}
+\def\includeexersolutionsii{%
+ \include@solutions
+ \resetEXsolns
+ \let\eqFilterArg\@empty
+}
+\long\def\gobbleToEndEXt#1\endeqEXt{%
+ \ifeqforpaper\expandafter\@gobbletwo\fi}
+\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
+\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
+ \else\expandafter\gobbleToEndEXt\fi}
+\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
+\let\eqsolutionshook\@empty
+\let\eq@solutionshook\@empty
+\let\priorexsectitle\@empty
+\let\priorexslinput\@empty
+\def\exerSolnsHeadnToc{\section*{\exsectitle}%
+ \addcontentsline{toc}{section}{%
+ \@ifundefined{web@latextoc}{}{%
+ \ifx\web@latextoc\eq@YES\else
+ \protect\numberline{}\fi}\exsectitle}}
+\@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}}
+ {\let\eq@normallheader\relax}
+\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
+ {\let\eq@defaultlheader\relax}
+\newif\ifExSolutionsSet \ExSolutionsSetfalse
+\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{\global\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
+ \fi
+}
+\def\include@solutions{%
+ \exerSolnInput
+}
+\newcommand{\prior@questionsHook}{}
+\let\qMark@Hook\@empty
+\let\aebtitleQuiz\@empty
+\newcommand{\post@questionsHook}{}
+\newcommand{\quesNumColor}[1]{\def\eq@quesNumCol{#1}}
+\quesNumColor{blue}
+\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
+\newcommand{\labeleqquestionnoi}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoi.}
+\renewcommand\theeqquestionnoii{(\alph{eqquestionnoii})}
+\newcommand{\labeleqquestionnoii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoii}
+\renewcommand\theeqquestionnoiii{(\roman{eqquestionnoiii})}
+\newcommand{\labeleqquestionnoiii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoiii}
+\define@key{props@ques}{labelwidthTo}%
+ [\normalsize\normalfont\bfseries00.]%
+ {\def\propQ@labelwidthTo{#1}}
+\define@key{props@ques}{labelwidth}[]{\def\propQ@labelwidth{#1}}
+\let\propQ@labelwidth\@empty
+\define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}}
+\define@key{props@ques}{partopsep}[\the\partopsep]%
+ {\edef\propQ@partopsep{#1}}
+\define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}}
+\define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}}
+\define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]%
+ {\def\propQ@labelsepTo{#1}}
+\define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}}
+\let\propQ@labelsep\@empty
+\define@key{props@ques}{color}[blue]{\quesNumColor{#1}}
+\setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,%
+ itemsep,labelsepTo,color}%
+\newenvironment{questions}[1][]
+{%
+ \ifnum\@eqquestiondepth>\tw@\@toodeep\else
+ \advance\@eqquestiondepth\@ne\fi
+ \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
+ \toks@=\expandafter\expandafter\expandafter{#1}\expandafter
+ \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}%
+ \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp
+ \list{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
+ \global\let\eqQT\eq@na%
+ {\@tempcnta=0 \let\@thispr@b\@empty
+ \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne
+ \ifx\@thispr@b\@empty\edef\@thispr@b{%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else
+ \edef\@thispr@b{\@thispr@b%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi
+ }\xdef\@currentQues{\@thispr@b}}%
+ \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \post@questionsHook}{\usecounter{\@quesctr}%
+ \ifx\propQ@labelsep\@empty
+ \settowidth{\labelsep}{\propQ@labelsepTo}\else
+ \setlength{\labelsep}{\propQ@labelsep}\fi
+ \ifx\propQ@labelwidth\@empty
+ \settowidth{\labelwidth}%
+ {\propQ@labelwidthTo\hspace{\labelsep}}\else
+ \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}%
+ \hspace{\labelsep}}\fi
+ \setlength{\topsep}{\propQ@topsep}%
+ \setlength{\partopsep}{\propQ@partopsep}%
+ \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
+ \setlength{\parsep}{\propQ@parsep}%
+ \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}}
+\def\popquestions{%
+ \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}}
+\abovesqskip{\par\medskip}
+\long\def\endsqhook#1{\def\sq@afterhook{#1}}
+\endsqhook{}
+\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}%
+}{\aeb@endshortquiz}
+\newenvironment{shortquiz*}
+{%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ {\count0=\@shortquizCnt\advance\count0by1\relax
+ \xdef\@shortquizCnt{\the\count0 }}%
+ \sqForms\@shortquiz
+}{\aeb@endshortquiz}
+\def\@shortquiz{\@ifnextchar[%
+ {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
+\def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty
+ \protected@edef\@currentlabelname{#1}\else
+ \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}%
+ \edef\@currentHref{shortquiz.\@shortquizCnt}%
+ \global\let\eqQuizType\isSQZ\let\@qzsolndest\@empty
+ \if\sqstar*\relax
+ \let\@Ans\Ans@sq@f
+ \ifx\oField\@empty
+ \typeout{^^JExerquiz: Base field name required when using
+ shortquiz with '*' option}%
+ \PackageInfo{exerquiz}{Assuming link style^^J}%
+ \let\@Ans\Ans@sq@l
+ \fi
+ \else
+ \let\@Ans\Ans@sq@l
+ \fi
+ \setcounter{questionno}{0}%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+ \let\solution\solution@sq
+ \let\endsolution\endsolution@sq
+ \sq@aboveskip\sq@priorhook\ignorespaces
+}
+\newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}}
+\belowsqskip{\medskip}
+\def\aeb@endshortquiz{\setcounter{quizno}{0}%
+ \sq@afterhook
+ \global\let\sqlabel\eq@sqlabel
+ \global\let\sqslrtnlabel\eq@sqslrtnlabel
+ \global\let\sqsllabel\eq@sqsllabel
+ \par\aftershortquizskip
+}
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\let\eq@tq@star\relax
+\def\qzPriorSolutionAfterHook{\smallskip}
+\let\sqPostHeaderHook\@empty
+\let\qPostHeaderHook\@empty
+\let\eq@sqPostHeaderHook\@empty
+\let\eq@qPostHeaderHook\@empty
+\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}%
+ {* Solutions unexpected here, will *\MessageBreak
+ * assume solutionsafter option *}%
+ \eq@solutionsaftertrue
+ \fi
+ \ifeq@solutionsafter
+ \par\qzPriorSolutionAfterHook\noindent
+ \if!\sqsolafter!\else
+ \sqsolafter\sqsolafterhspace\fi\ignorespaces
+ \else
+ \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
+ \protect\eqQt{\eqFilterArg}\else
+ \ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
+ \protect\eqSQt{\eqFilterArg}\fi
+ \protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
+ [{\curr@quiz}{\currQuizStartPage}]\fi\fi
+ {\@qzsolndest}{\sqsllabel}\protect\eqterminex
+ \if\eqQuizType\isQZ\expandafter\eq@qPostHeaderHook
+ \expandafter\qPostHeaderHook\else
+ \expandafter\eq@sqPostHeaderHook
+ \expandafter\sqPostHeaderHook\fi}%
+ \set@typeset@protect
+ \expandafter\verbatimwrite\fi
+}
+\let\qzSolutionsAfterHook\@empty
+\def\endsolution@sq
+{%
+ \ifeq@solutionsafter
+ \eq@fititin{\mbox{\sqslrtnlabel}}\par\qzSolutionsAfterHook
+ \aftergroup\ignorespaces
+ \else
+ \endverbatimwrite
+ \ifx\@qzsolndest\@empty\else\set@display@protect
+ \immediate\write\verbatim@out{\eqSqSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \global\let\@qzsolndest\@empty
+}
+\def\fpAfterSolutionsSkip{\par\medskip}
+\let\eqSqSolnTrailerHook\@empty
+\let\eqQzSolnTrailerHook\@empty
+\newcommand\eqSqSolnTrailer{%
+ \if\eqQuizType\isQZ
+ \eqQzSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqQt
+ \else
+ \eqSqSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
+ \fi
+ \ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+ \ifmakeQzSlLocal\protect\endgroup^^J\fi
+}
+\let\eqSQt\@gobble
+\let\endeqSQt\relax
+\let\eqQt\@gobble
+\let\endeqQt\relax
+\let\prior@quizSolnHeaderHook\@empty
+\newcommand\quizSolnHeader[3][]{%
+ \prior@quizSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\noindent
+ #2%
+ \solnspace
+}
+\newif\iftherearequizsolutions \therearequizsolutionsfalse
+\let\aeb@FLOverride\relax
+\def\includequizsolutions{\@ifstar
+ {\let\resetQZtsolns\relax\includequizsolutionsi}
+ {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
+ \includequizsolutionsi}%
+}
+\newcommand{\includequizsolutionsi}[1][]{%
+ \filterFor{#1}\includequizsolutionsii
+}
+\def\includequizsolutionsii{%
+ \include@quizsolutions
+ \resetQZtsolns
+ \let\eqFilterArg\@empty
+}
+\newcommand\useForms{\def\aeb@FLOverride{f}}
+\newcommand\useLinks{\def\aeb@FLOverride{l}}
+\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
+\let\aeb@FLOverride\relax
+\let\aebtitleQuiz\@empty
+\let\aebTitleQuiz\@empty
+\def\pushEnvir{\xdef\eq@currenvir{\@currenvir}\endgroup}
+\def\popEnvir{\begingroup\@endpefalse
+ \edef\@currenvir{\eq@currenvir}%
+ \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[]}}}
+\def\manswers@sq{\parindent0pt
+ \@ifundefined{ifuserectforms}{}
+ {\if\aeb@FLOverride\eq@f\ifuserectforms
+ \useRectForMC\else\useCircForMC\fi\fi}%
+ \ifx\solutionparshape\@empty\else
+ \pushEnvir\par\noindent\expandafter\popEnvir\fi
+ \stepcounter{questionno}%
+ \if\sqstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \let\@Ans\Ans@ck@sq@l\else
+ \let\@Ans\Ans@ck@sq@f\fi
+ \else
+ \if\aeb@FLOverride\eq@f
+ \let\@Ans\Ans@ck@sq@f\else
+ \let\@Ans\Ans@ck@sq@l\fi
+ \fi
+ \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
+ {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
+\let\sq@hwdest\@empty % hard-wired destination
+\def\answers@@sq[#1]#2{%
+ \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}}
+\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}{}
+\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
+ \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
+}
+\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
+ \ifx\itsExerParts\eq@YES\par\removelastskip
+ \removelastparskip\vskip\aboveanswersSkip\fi
+ \else\par\removelastskip\removelastparskip
+ \vskip\aboveanswersSkip\fi
+ \noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
+ \tabcolsep=0pt
+ \eq@tmpdima=\linewidth
+ \@tempcnta#1\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta by2
+ \@tempdima\sq@tabsep\relax
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \divide\eq@tmpdima by#1
+ \def\Ans{\Ans@tabular}%
+ \tabcolsep\sq@tabsep\relax
+ \expandafter\tabular\sq@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}}%
+\let\eq@save@doendpe\@doendpe
+\def\reset@doendpe#1{\global\eq@scratchtoks=\expandafter{#1}%
+ \gdef\@doendpe{\par\@endpetrue\global\let\@doendpe\eq@save@doendpe
+ \def\par{\@restorepar
+ \expandafter\everypar
+ \expandafter{\the\eq@scratchtoks}\par\@endpefalse}%
+ \everypar{{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}\the\eq@scratchtoks
+ }%
+}
+\newcommand\answersEndHook[1]{\def\eq@answersEndHook{#1}}
+\let\eq@answersEndHook\@empty
+\def\endanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\endmanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\popiiictm{\special{CTM: pop pop pop}}
+\def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters
+ \Alph{quizno}\noexpand\else\linkContentFormat\noexpand\fi}
+\def\linkContentFormat{%
+ \if\probstar*\Alph{quizno}\else\alph{quizno}\fi}
+\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
+ \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
+ \Ans@sq@l@driver
+\eq@hspanner\ignorespaces}
+\let\Ans@ck@sq@l\Ans@sq@l
+\let\rbf@Opts\@empty
+\def\Ans@sq@f{%
+ \if\eq@listType\eq@One\stepcounter{quizno}\else
+ \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
+ {\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
+ \insertGrayLetters % 6.3d
+ \Ans@sq@f@driver
+\eq@hspanner\ignorespaces}
+\let\Ans@ck@sq@f\Ans@sq@f
+\newskip\aboveanswersSkip
+\setlength\aboveanswersSkip{3pt}
+\providecommand\graylettersColor{gray}
+\def\insertGrayLetters{\ifaebshowgrayletters
+ \rlap{\makebox[\RadioFieldSize]%
+ {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi}
+\newcount\eq@tabColCnt
+\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
+\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
+ \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
+ \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
+ }\temp@expand@def
+}
+\def\bChoiceNumCols{\aeb@numCols}
+\define@key{bchoice}{random}[true]{%
+ \csname if#1\endcsname\eq@randomizeChoicestrue
+ \else\eq@randomizeChoicesfalse\fi
+}
+\define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}}
+\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
+\def\@ansChoices[#1]%
+{%
+ \global\let\@tempholdSaveAns\@empty %4/5
+ \global\let\@tempholdSaveChoice\@empty %4/5
+ \global\let\bChoiceLabel\@empty %4/5
+ \setkeys{bchoice}{#1}%
+ \global\eq@tabColCnt=0
+ \ifnum\aeb@numCols=1 % list mode
+ \def\eq@next{\@layoutListAns}\else % tabular mode
+ \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi
+ \eq@next
+}
+\let\eChoices\relax
+\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
+ {\@lookforendansChoices{\@layoutListAns}}%
+}
+\newcommand{\eq@saveAns}[2][]{%
+ \let\eq@next\@@@SaveAnsGobbleAns
+ \ifx\bChoiceLabel\@empty\else
+ \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}%
+ \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi
+ \fi\eq@next
+}
+\long\def\@@@SaveAns#1\eAns{% 4/5
+ \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}%
+ \addtocounter{quizno}{1}%
+ \edef\temp@expand{\noexpand\g@addto@macro\noexpand
+ \@tempholdSaveChoice{%
+ \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else
+ \ifaebshowgrayletters\Alph{quizno}\else
+ \linkContentFormat\fi\fi}}}\temp@expand
+ \addtocounter{quizno}{-1}%
+}
+\newif\ifoxfordcomma \oxfordcommatrue
+\def\oxfordCommaOn{\oxfordcommatrue}
+\def\oxfordCommaOff{\oxfordcommafalse}
+\def\eq@insertComma{%
+ \ifx\eq@comma\@empty
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \def\eq@comma{,}\fi
+ \else\ifx\eq@insertAnd\@empty\eq@comma\space
+ \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}%
+ \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space
+ \fi
+ \fi
+}
+\newcommand\eqAnd{and}\def\eq@insertAnd{%
+ \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \else\leavevmode\space\fi\eqAnd\space\fi}
+\long\def\eq@displayAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\def\eq@displayAlts#1{\advance\@tempcnta1
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi
+ \savedAltFmt{#1}}
+\def\eq@displayAltsAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\newcommand{\savedAltFmt}[1]{(#1)}
+\newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAns@i}}
+\newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAns\@nameuse{SavedAns#2}\else
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i}
+ {\let\eq@insertAnd\@empty\useSavedAlts@i}}
+\newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}%
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi
+ \egroup
+}
+\newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAltsAns@i}}
+\newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}}
+\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5
+\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph
+ \eq@saveAns#1\eAns % 4/5
+ \Ans#1\vspace{\@rowskip}%
+ \@layoutListAns
+}
+\long\def\@lookforendansChoices#1{%
+ \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
+ \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
+}
+\def\@layoutTabularAns#1{%
+ \let\eq@tabSep\@empty
+ \xdef\numShortCols{#1}%
+ \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
+ \@@layoutTabularAns
+}
+\def\@@layoutTabularAns{%
+ \@ifnextchar\Ans{\@getTabAns}%
+ {\@lookforendansChoices{\@@layoutTabularAns}}%
+}
+\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
+\rowsep{\rowsep@default}
+\def\rowsepDefault#1{\def\rowsep@default{#1}}
+\def\rowsep@default{0pt}
+\long\def\@getTabAns\Ans#1\eAns{%
+ \eq@saveAns#1\eAns
+ \global\advance\eq@tabColCnt1
+ \let\@save@tabSep=\eq@tabSep
+ \ifnum\eq@tabColCnt=\numShortCols
+ \global\eq@tabColCnt=0
+ \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
+ \else
+ \gdef\eq@tabSep{&}%
+ \fi
+ \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
+ \expandafter\@findendans\@gobble}%
+ {\@save@tabSep\Ans#1\@@layoutTabularAns}%
+}
+\def\@findendans{\@ifnextchar\end{% 4/5
+ \ifx\bChoiceLabel\@empty\else
+ \processLabeledAns\fi
+ }{\expandafter\@findendans\@gobble}}%
+\def\defineEachAns#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAns\bChoiceLabel-Idx\the\count0}{\the\@temptokena}%
+ \ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\defineEachChoice#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}\ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\processLabeledAns{%
+ \bgroup
+ \let\label\@gobble
+\if\aeb@FLOverride\eq@l
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else
+ \ifaebshowgrayletters
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi
+\fi
+ \toks@=\expandafter{\@tempholdSaveAns}\csarg
+ \xdef{SavedAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachAns\the\toks@
+ \xdef\@currNCntAns{\the\count0 }\csarg
+ \xdef{NumAns\bChoiceLabel}{\@currNCntAns}%
+ \ifsolutionsonly\else{\eq@IWDefs{\string
+ \csarg\string\gdef{NumAns\bChoiceLabel}{\the\count0 }}}\fi
+ \toks@=\expandafter{\@tempholdSaveChoice}\csarg
+ \xdef{SavedAlts\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachChoice\the\toks@
+ \count0=1\relax\toks@={}%{\ignorespaces\@gobble}%
+ \loop
+ \edef\temp@exp{\the\toks@\noexpand\\{%
+ \noexpand\useSavedAlts[\the\count0]{\bChoiceLabel}
+ \noexpand\useSavedAns[\the\count0]{\bChoiceLabel}}}%
+ \toks@=\expandafter{\temp@exp}%
+ \ifnum\count0<\@currNCntAns
+ \advance\count0by1
+ \repeat
+ \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi
+ \egroup
+}
+\def\graylettersOn{\aebshowgrayletterstrue}
+\def\graylettersOff{\aebshowgraylettersfalse}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar}
+ {\let\isREFstar\eq@Zero\aeb@REF}}
+\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref*{#1}\fi}%
+}
+\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref{#1}\fi}%
+}
+\def\aeb@buildUpperCaseRef#1{%
+ \xdef\tmp@expand{\aeb@exiii\@firstoftwo\csname r@#1\endcsname}%
+ \xdef\tmp@expand{\uppercase{\tmp@expand}}\tmp@expand
+}
+\endinput
+%%
+%% End of file `eqexam.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqfin.def b/texmf-dist/tex/latex/acrotex/eqfin.def
index 9dc6a740..c05ff709 100644
--- a/texmf-dist/tex/latex/acrotex/eqfin.def
+++ b/texmf-dist/tex/latex/acrotex/eqfin.def
@@ -1,79 +1,79 @@
-%%
-%% This is file `eqfin.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqfin')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqfin.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqfin.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Paivi Porras %%
-%% e-mail address: paivi.porras@lut.fi %%
-%% Language: Finnish %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{Harjoitus}
-\renewcommand\exlabelsol{Harjoitus}
-
-\renewcommand\exsectitle{Ratkaisut}
-\renewcommand\exsecrunhead{Ratkaisu \exlabelsol }
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Ratkaisu}:}
-
-\renewcommand\eq@sqslsectitle{Vastaukset testikysymyksiin}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Vastaukset testikysymyksiin}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{Vastaus testikysymykseen:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Ratkaisu}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Testikysymys}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Lopeta testi}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Oikein!"} %muokattu
-\renewcommand\eqsqwgmsg{"V\string\344\string\344rin!"} %m
-
-\renewcommand\eq@bqlabel{Aloita testi}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabelISO}
-
-\renewcommand\eq@eqlabel{Lopeta testi}
-\renewcommand\eqlabel{\eq@eqlabel}
-
-\renewcommand\eq@Score{Pisteet:}\renewcommand\eq@OutOf{/}
-\renewcommand\eqInitQuizMsg{%m
- "Testi on aloitettava painamalla "+msg+"."}
-\renewcommand\eqMadeChoice{%m
- "Olet jo kerran valinnut.
- Valintasi oli ("+Responses[probno]+")."
-+" Haluatko vaihtaa?"}
-\AtEndOfPackage{%
-\renewcommand\eq@local@CA{Oikein}
-\renewcommand\eq@local@RC{Omat vastaukset!}
-\renewcommand\eq@local@AC{Ole hyv\string\344!}}
-\endinput
-%%
-%% End of file `eqfin.def'.
+%%
+%% This is file `eqfin.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqfin')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqfin.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqfin.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Paivi Porras %%
+%% e-mail address: paivi.porras@lut.fi %%
+%% Language: Finnish %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{Harjoitus}
+\renewcommand\exlabelsol{Harjoitus}
+
+\renewcommand\exsectitle{Ratkaisut}
+\renewcommand\exsecrunhead{Ratkaisu \exlabelsol }
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Ratkaisu}:}
+
+\renewcommand\eq@sqslsectitle{Vastaukset testikysymyksiin}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Vastaukset testikysymyksiin}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{Vastaus testikysymykseen:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Ratkaisu}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Testikysymys}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Lopeta testi}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Oikein!"} %muokattu
+\renewcommand\eqsqwgmsg{"V\string\344\string\344rin!"} %m
+
+\renewcommand\eq@bqlabel{Aloita testi}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabelISO}
+
+\renewcommand\eq@eqlabel{Lopeta testi}
+\renewcommand\eqlabel{\eq@eqlabel}
+
+\renewcommand\eq@Score{Pisteet:}\renewcommand\eq@OutOf{/}
+\renewcommand\eqInitQuizMsg{%m
+ "Testi on aloitettava painamalla "+msg+"."}
+\renewcommand\eqMadeChoice{%m
+ "Olet jo kerran valinnut.
+ Valintasi oli ("+Responses[probno]+")."
++" Haluatko vaihtaa?"}
+\AtEndOfPackage{%
+\renewcommand\eq@local@CA{Oikein}
+\renewcommand\eq@local@RC{Omat vastaukset!}
+\renewcommand\eq@local@AC{Ole hyv\string\344!}}
+\endinput
+%%
+%% End of file `eqfin.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqfr.def b/texmf-dist/tex/latex/acrotex/eqfr.def
index 701f798e..ef3f5a46 100644
--- a/texmf-dist/tex/latex/acrotex/eqfr.def
+++ b/texmf-dist/tex/latex/acrotex/eqfr.def
@@ -1,76 +1,76 @@
-%%
-%% This is file `eqfr.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqfr')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqfr.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%%%%% eqfr.def %%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Jean-Michel SARLAT %%
-%% Language: French %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{Exercice}
-\renewcommand\exlabelsol{\exlabel}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Solution} :}
-
-\renewcommand\exsectitle{Solutions des \exlabelsol s}
-\renewcommand\exsecrunhead{\exsectitle}
-
-\renewcommand\eq@sqslsectitle{Les r\'{e}ponses aux questionnaires}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Les r\'{e}ponses aux questionnaires}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \protect\textbf{R\protect\'{e}ponse :}}
-\renewcommand\sqsllabel{\eq@sqsllabel}% User access
-
-\renewcommand\sqsolafter{\textit{Solution} :}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Question.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Retour au questionnaire.}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Exact !"}
-\renewcommand\eqsqwgmsg{"Faux !"}
-
-\renewcommand\eq@bqlabel{D\'ebut}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{D\string\351but}
-\renewcommand\bqlabelISO{\eq@bqlabelISO}
-
-\renewcommand\eq@eqlabel{Fin}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Score :}\renewcommand\eq@OutOf{sur}
-\renewcommand\eqInitQuizMsg{%
- "Vous devez initialiser le questionnaire ! Clicker sur "+msg+"."}
-\renewcommand\eqMadeChoice{
- "Vous avez d\string\\351j\string\\340 fait un choix,"
- + " ce choix est ("+Responses[probno]+")."
- + " Souhaitez vous le modifier ?"}
-\renewcommand\eq@local@CA{%
- R\texorpdfstring{\'}{\string\351}ponses}
-\renewcommand\eq@local@RC{Correctes}
-\renewcommand\eq@local@AC{SVP !}
-\endinput
-%%
-%% End of file `eqfr.def'.
+%%
+%% This is file `eqfr.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqfr')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqfr.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%%%%% eqfr.def %%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Jean-Michel SARLAT %%
+%% Language: French %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{Exercice}
+\renewcommand\exlabelsol{\exlabel}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Solution} :}
+
+\renewcommand\exsectitle{Solutions des \exlabelsol s}
+\renewcommand\exsecrunhead{\exsectitle}
+
+\renewcommand\eq@sqslsectitle{Les r\'{e}ponses aux questionnaires}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Les r\'{e}ponses aux questionnaires}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \protect\textbf{R\protect\'{e}ponse :}}
+\renewcommand\sqsllabel{\eq@sqsllabel}% User access
+
+\renewcommand\sqsolafter{\textit{Solution} :}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Question.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Retour au questionnaire.}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Exact !"}
+\renewcommand\eqsqwgmsg{"Faux !"}
+
+\renewcommand\eq@bqlabel{D\'ebut}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{D\string\351but}
+\renewcommand\bqlabelISO{\eq@bqlabelISO}
+
+\renewcommand\eq@eqlabel{Fin}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Score :}\renewcommand\eq@OutOf{sur}
+\renewcommand\eqInitQuizMsg{%
+ "Vous devez initialiser le questionnaire ! Clicker sur "+msg+"."}
+\renewcommand\eqMadeChoice{
+ "Vous avez d\string\\351j\string\\340 fait un choix,"
+ + " ce choix est ("+Responses[probno]+")."
+ + " Souhaitez vous le modifier ?"}
+\renewcommand\eq@local@CA{%
+ R\texorpdfstring{\'}{\string\351}ponses}
+\renewcommand\eq@local@RC{Correctes}
+\renewcommand\eq@local@AC{SVP !}
+\endinput
+%%
+%% End of file `eqfr.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqit.def b/texmf-dist/tex/latex/acrotex/eqit.def
index 5fda30b2..65cf7e31 100644
--- a/texmf-dist/tex/latex/acrotex/eqit.def
+++ b/texmf-dist/tex/latex/acrotex/eqit.def
@@ -1,64 +1,64 @@
-%%
-%% This is file `eqit.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqit')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqit.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqit.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: PierLuigi Zezza %%
-%% e-mail address: pzezza@cce.unifi.it %%
-%% Language: Italian %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{Esercizio}
-\renewcommand\exlabelsol{\exlabel}
-\renewcommand\exsectitle{Soluzioni degli Esercizi }
-\renewcommand\exsecrunhead{\exsectitle}
-\renewcommand{\eq@exsolafterDefault}{\textit{Soluzione}:}
-\renewcommand\eq@sqslsectitle{Soluzioni dei Quiz}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-\renewcommand\eq@sqslsecrunhead{Soluzioni dei Quiz}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-\renewcommand\eq@sqsllabel{\string\textbf{Soluzione del Quiz:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-\renewcommand\sqsolafter{\textit{Soluzione}:}
-\renewcommand\eq@sqlabel{\textcolor{red}{Quiz.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-\renewcommand\eq@sqslrtnlabel{Fine Quiz}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-\renewcommand\eqsqrtmsg{"Giusto!"}
-\renewcommand\eqsqwgmsg{"Sbagliato!"}
-\renewcommand\eq@bqlabel{Inizio Test}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-\renewcommand\eq@eqlabel{Fine Test}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Punteggio:}\renewcommand\eq@OutOf{su}
-\renewcommand\eqInitQuizMsg{"Dovete inizializzare il Quiz!
- Click su "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Avete gi\string\\340 fatto una scelta.
- La vostra scelta era ("+Responses[probno]+").
- Volete cambiarla ?"}
-\renewcommand\eq@local@CA{Correggere}
-\renewcommand\eq@local@RC{Le mie risposte!}
-\renewcommand\eq@local@AC{Per favore!}
-\endinput
-%%
-%% End of file `eqit.def'.
+%%
+%% This is file `eqit.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqit')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqit.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqit.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: PierLuigi Zezza %%
+%% e-mail address: pzezza@cce.unifi.it %%
+%% Language: Italian %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{Esercizio}
+\renewcommand\exlabelsol{\exlabel}
+\renewcommand\exsectitle{Soluzioni degli Esercizi }
+\renewcommand\exsecrunhead{\exsectitle}
+\renewcommand{\eq@exsolafterDefault}{\textit{Soluzione}:}
+\renewcommand\eq@sqslsectitle{Soluzioni dei Quiz}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+\renewcommand\eq@sqslsecrunhead{Soluzioni dei Quiz}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+\renewcommand\eq@sqsllabel{\string\textbf{Soluzione del Quiz:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+\renewcommand\sqsolafter{\textit{Soluzione}:}
+\renewcommand\eq@sqlabel{\textcolor{red}{Quiz.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+\renewcommand\eq@sqslrtnlabel{Fine Quiz}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+\renewcommand\eqsqrtmsg{"Giusto!"}
+\renewcommand\eqsqwgmsg{"Sbagliato!"}
+\renewcommand\eq@bqlabel{Inizio Test}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+\renewcommand\eq@eqlabel{Fine Test}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Punteggio:}\renewcommand\eq@OutOf{su}
+\renewcommand\eqInitQuizMsg{"Dovete inizializzare il Quiz!
+ Click su "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Avete gi\string\\340 fatto una scelta.
+ La vostra scelta era ("+Responses[probno]+").
+ Volete cambiarla ?"}
+\renewcommand\eq@local@CA{Correggere}
+\renewcommand\eq@local@RC{Le mie risposte!}
+\renewcommand\eq@local@AC{Per favore!}
+\endinput
+%%
+%% End of file `eqit.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqnl.def b/texmf-dist/tex/latex/acrotex/eqnl.def
index 6cd37a7c..ece9db37 100644
--- a/texmf-dist/tex/latex/acrotex/eqnl.def
+++ b/texmf-dist/tex/latex/acrotex/eqnl.def
@@ -1,80 +1,80 @@
-%%
-%% This is file `eqnl.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqnl')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqnl.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqnl.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Henny Wilbrink %%
-%% e-mail address: wsdwhw@win.tue.nl %%
-%% Language: Dutch %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{Opgave}
-\renewcommand\exlabelsol{\exlabel}
-
-\renewcommand\exsectitle{Oplossingen van de Opgaven}
-\renewcommand\exsecrunhead{\exsectitle}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Oplossing}:}
-
-\renewcommand\eq@sqslsectitle{Oplossingen van de Toetsen}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Oplossingen van de Toetsen}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Oplossing}:}
-
-\renewcommand\eq@sqsllabel{\string\textbf{Oplossing van Toets:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Oplossing}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Toets.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Terug naar Toets}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Goed!"}
-\renewcommand\eqsqwgmsg{"Fout!"}
-
-\renewcommand\eq@bqlabel{Begin Toets}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Einde Toets}
-\renewcommand\eqlabel{\eq@eqlabel}
-
-\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{van de}
-
-\renewcommand\eqInitQuizMsg{%
- "U moet de Toets initialiseren! Klik op "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "U hebt al een keuze gemaakt.
- Uw keuze was ("+Responses[probno]+").
- Wil u dit veranderen?"}
-\renewcommand\eq@local@CA{Corrigeer}
-\renewcommand\eq@local@RC{Mijn Antwoorden!}
-\renewcommand\eq@local@AC{AUB!}
-\endinput
-%%
-%% End of file `eqnl.def'.
+%%
+%% This is file `eqnl.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqnl')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqnl.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqnl.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Henny Wilbrink %%
+%% e-mail address: wsdwhw@win.tue.nl %%
+%% Language: Dutch %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{Opgave}
+\renewcommand\exlabelsol{\exlabel}
+
+\renewcommand\exsectitle{Oplossingen van de Opgaven}
+\renewcommand\exsecrunhead{\exsectitle}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Oplossing}:}
+
+\renewcommand\eq@sqslsectitle{Oplossingen van de Toetsen}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Oplossingen van de Toetsen}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Oplossing}:}
+
+\renewcommand\eq@sqsllabel{\string\textbf{Oplossing van Toets:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Oplossing}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Toets.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Terug naar Toets}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Goed!"}
+\renewcommand\eqsqwgmsg{"Fout!"}
+
+\renewcommand\eq@bqlabel{Begin Toets}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Einde Toets}
+\renewcommand\eqlabel{\eq@eqlabel}
+
+\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{van de}
+
+\renewcommand\eqInitQuizMsg{%
+ "U moet de Toets initialiseren! Klik op "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "U hebt al een keuze gemaakt.
+ Uw keuze was ("+Responses[probno]+").
+ Wil u dit veranderen?"}
+\renewcommand\eq@local@CA{Corrigeer}
+\renewcommand\eq@local@RC{Mijn Antwoorden!}
+\renewcommand\eq@local@AC{AUB!}
+\endinput
+%%
+%% End of file `eqnl.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqno.def b/texmf-dist/tex/latex/acrotex/eqno.def
index 1f29f357..fee78977 100644
--- a/texmf-dist/tex/latex/acrotex/eqno.def
+++ b/texmf-dist/tex/latex/acrotex/eqno.def
@@ -1,81 +1,81 @@
-%%
-%% This is file `eqno.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqno')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqno.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqno.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Hans Fredrik Nordhaug %%
-%% e-mail address: hansfn@mi.uib.no %%
-%% Language: Norwegian %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{{\O}velse}
-\renewcommand\exlabelsol{{\protect\O}velse}
-
-\renewcommand\exsectitle{L{\o}sning p{\aa} {\o}velsene}
-\renewcommand\exsecrunhead{L{\protect\o}sning p{\protect\aa}
- {\protect\o}velsene}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{L{\o}sning}:}
-
-\renewcommand\eq@sqslsectitle{L{\o}sning p{\aa} oppgavene}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{L{\o}sning p{\aa} oppgavene}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \protect\textbf{L{\protect\o}sning p{\protect\aa} oppgave:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{L{\o}sning}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Oppgave}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Slutt}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Rett!"}
-\renewcommand\eqsqwgmsg{"Feil!"}
-
-\renewcommand\eq@bqlabel{Start oppgaver}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Slutt}
-\renewcommand\eqlabel{\eq@eqlabel}
-
-\renewcommand\eqScore{Poeng:}\renewcommand\eqOutOf{av}
-\renewcommand\eqInitQuizMsg{"Du m\string\\345 initialisere testen!"
-+" Klikk p\string\\345 "+msg+"."}
-\renewcommand\eqMadeChoice{%
- "Du har allerede gjort et valg.
- Valget var ("+Responses[probno]+").
- Vil du endre det?"}
-\renewcommand\eq@local@CA{Rett}
-\renewcommand\eq@local@RC{mine svar!}
-\renewcommand\eq@local@AC{%
- V\texorpdfstring{\ae}{\string\346}r
- s\texorpdfstring{\r}{\string\345}snill!}
-\endinput
-%%
-%% End of file `eqno.def'.
+%%
+%% This is file `eqno.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqno')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqno.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqno.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Hans Fredrik Nordhaug %%
+%% e-mail address: hansfn@mi.uib.no %%
+%% Language: Norwegian %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{{\O}velse}
+\renewcommand\exlabelsol{{\protect\O}velse}
+
+\renewcommand\exsectitle{L{\o}sning p{\aa} {\o}velsene}
+\renewcommand\exsecrunhead{L{\protect\o}sning p{\protect\aa}
+ {\protect\o}velsene}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{L{\o}sning}:}
+
+\renewcommand\eq@sqslsectitle{L{\o}sning p{\aa} oppgavene}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{L{\o}sning p{\aa} oppgavene}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \protect\textbf{L{\protect\o}sning p{\protect\aa} oppgave:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{L{\o}sning}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Oppgave}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Slutt}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Rett!"}
+\renewcommand\eqsqwgmsg{"Feil!"}
+
+\renewcommand\eq@bqlabel{Start oppgaver}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Slutt}
+\renewcommand\eqlabel{\eq@eqlabel}
+
+\renewcommand\eqScore{Poeng:}\renewcommand\eqOutOf{av}
+\renewcommand\eqInitQuizMsg{"Du m\string\\345 initialisere testen!"
++" Klikk p\string\\345 "+msg+"."}
+\renewcommand\eqMadeChoice{%
+ "Du har allerede gjort et valg.
+ Valget var ("+Responses[probno]+").
+ Vil du endre det?"}
+\renewcommand\eq@local@CA{Rett}
+\renewcommand\eq@local@RC{mine svar!}
+\renewcommand\eq@local@AC{%
+ V\texorpdfstring{\ae}{\string\346}r
+ s\texorpdfstring{\r}{\string\345}snill!}
+\endinput
+%%
+%% End of file `eqno.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqpo.def b/texmf-dist/tex/latex/acrotex/eqpo.def
index dc495ea4..b9b52bce 100644
--- a/texmf-dist/tex/latex/acrotex/eqpo.def
+++ b/texmf-dist/tex/latex/acrotex/eqpo.def
@@ -1,90 +1,90 @@
-%%
-%% This is file `eqpo.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqpo')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqpo.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqpo.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Jerzy Mycielski %%
-%% e-mail address: jmyc@poczta.onet.pl %%
-%% Language: Polish %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% The polish accented characters included in pdfendconding is
-%% lslash and oacute, not included are zacute, zdot, cacute,
-%% nacute, sacute, aogonek, eogonek and corresponding capital
-%% characters.
-\renewcommand\exlabel{Zadanie}
-\renewcommand\exlabelsol{\exlabel}
-
-\renewcommand\exsectitle{Rozwi\k{a}zania Zada\'{n}}
-\renewcommand\exsecrunhead{\protect\exsectitle}
-
-\renewcommand{\eq@exsolafterDefault}{\textit{Rozwi\k{a}znie}:}
-
-\renewcommand\eq@sqslsectitle{Rozwi\k{a}zania Test\'{o}w}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{Rozwi\protect\k{a}zania
- Test\protect\'{o}w}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{\string\textbf{Rozwi\protect\k{a}zanie
- Testu:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Rozwi\k{a}zanie}:}
-
-\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{Zako\ifeq@solutionsafter\else
- \expandafter\protect\fi\'{n}cz Test}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\renewcommand\eqsqrtmsg{"Dobrze!"}
-\renewcommand\eqsqwgmsg{"\string\\u0179le!"}
-
-\renewcommand\eq@bqlabel{Rozpocznij Test}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{Zakoncz Test}
-\renewcommand\eqlabel{\eq@eqlabel}
-
-\renewcommand\eq@Score{Punkt\'{o}w:}
-\renewcommand\eq@OutOf{z mozliwych}
-\renewcommand\eqQuizTotalMsg{"\eqScore\space"+Score +
- " \eqOutOf\space"+nQuestions}
-
-\renewcommand\eqInitQuizMsg{"Musisz rozpoczac Test! Kliknij
- na "+msg+"."}
-
-\renewcommand\eqMadeChoice{%
- "Juz dokonal\string\\233e\string\\u015B wyboru.
- Twoim wyborem by\string\\233o ("+Responses[probno]+").
- Czy chcesz go zmieni\string\\u0107?"}
-
-\renewcommand\eq@local@CA{Popraw}
-\renewcommand\eq@local@RC{Moje odpowiedzi!}
-\renewcommand\eq@local@AC{Prosze!}
-\endinput
-%%
-%% End of file `eqpo.def'.
+%%
+%% This is file `eqpo.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqpo')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqpo.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqpo.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Jerzy Mycielski %%
+%% e-mail address: jmyc@poczta.onet.pl %%
+%% Language: Polish %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% The polish accented characters included in pdfendconding is
+%% lslash and oacute, not included are zacute, zdot, cacute,
+%% nacute, sacute, aogonek, eogonek and corresponding capital
+%% characters.
+\renewcommand\exlabel{Zadanie}
+\renewcommand\exlabelsol{\exlabel}
+
+\renewcommand\exsectitle{Rozwi\k{a}zania Zada\'{n}}
+\renewcommand\exsecrunhead{\protect\exsectitle}
+
+\renewcommand{\eq@exsolafterDefault}{\textit{Rozwi\k{a}znie}:}
+
+\renewcommand\eq@sqslsectitle{Rozwi\k{a}zania Test\'{o}w}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{Rozwi\protect\k{a}zania
+ Test\protect\'{o}w}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{\string\textbf{Rozwi\protect\k{a}zanie
+ Testu:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Rozwi\k{a}zanie}:}
+
+\renewcommand\eq@sqlabel{\textcolor{red}{Test.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{Zako\ifeq@solutionsafter\else
+ \expandafter\protect\fi\'{n}cz Test}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\renewcommand\eqsqrtmsg{"Dobrze!"}
+\renewcommand\eqsqwgmsg{"\string\\u0179le!"}
+
+\renewcommand\eq@bqlabel{Rozpocznij Test}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{Zakoncz Test}
+\renewcommand\eqlabel{\eq@eqlabel}
+
+\renewcommand\eq@Score{Punkt\'{o}w:}
+\renewcommand\eq@OutOf{z mozliwych}
+\renewcommand\eqQuizTotalMsg{"\eqScore\space"+Score +
+ " \eqOutOf\space"+nQuestions}
+
+\renewcommand\eqInitQuizMsg{"Musisz rozpoczac Test! Kliknij
+ na "+msg+"."}
+
+\renewcommand\eqMadeChoice{%
+ "Juz dokonal\string\\233e\string\\u015B wyboru.
+ Twoim wyborem by\string\\233o ("+Responses[probno]+").
+ Czy chcesz go zmieni\string\\u0107?"}
+
+\renewcommand\eq@local@CA{Popraw}
+\renewcommand\eq@local@RC{Moje odpowiedzi!}
+\renewcommand\eq@local@AC{Prosze!}
+\endinput
+%%
+%% End of file `eqpo.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqru.def b/texmf-dist/tex/latex/acrotex/eqru.def
index d6416359..7fd549d4 100644
--- a/texmf-dist/tex/latex/acrotex/eqru.def
+++ b/texmf-dist/tex/latex/acrotex/eqru.def
@@ -1,179 +1,179 @@
-%%
-%% This is file `eqru.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqru')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqru.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%% eqru.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Sergei V. Znamenskii %%
-%% e-mail address: znamensk@rustex.botik.ru %%
-%% Language: Russian %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\expandafter\ifx\csname inputencoding\endcsname\relax
-\RequirePackage{inputenc}\fi
-\inputencoding{cp1251}\makeatletter
-\expandafter\ifx\csname Russian\endcsname\relax
-\RequirePackage[russian]{babel}\fi
- \def\web@versionlabel{\^{A}{\aa}ð\~{n}\`{e}\"{y}}%
- \def\web@toc{\~{N}\^{\i}\"{a}{\aa}ð{\ae}\`{a}\'{\i}\`{e}{\aa}}%
- \def\web@continued{\"{\i}ð\^{\i}\"{a}\^{\i}\"{e}{\ae}.}%
- \def\web@article{\'{I}\`{a}{\div}\`{a}\"{e}\^{\i}
- \hyperlink{section.1}{}}%
- \def\web@directory{\"{I}\`{a}\"{\i}\^{e}\`{a}}%
- \def\web@revision{\"{A}\`{a}\`{o}\`{a} \"{\i}\^{\i}\~{n}\"{e}%
- {\aa}\"{a}\'{\i}{\aa}\~{a}\^{\i} \`{e}\c{c}\`{\i}{\aa}%
- \'{\i}{\aa}\'{\i}\`{e}\"{y}:}%
- \def\web@copyright{\^{E}\^{\i}\"{\i}\`{e}ð\`{a}\'{e}\`{o}}%
- \def\web@section{\textsection\ }%
- % Label Navibar
- \def\web@back{\'{I}\`{a}\c{c}\`{a}\"{a}}%
- \def\web@doc{\"{A}\^{\i}\^{e}.}% restricted to three characters
-
-\renewcommand\exlabel{\'{O}\"{\i}ð\`{a}{\ae}\'{\i}{\aa}\'{\i}\`{e}{\aa}}
-\renewcommand\exlabelsol{\^{E} \'{o}\"{\i}ð\`{a}{\ae}%
- \'{\i}{\aa}\'{\i}\`{e}þ}
-
-\renewcommand\exsectitle{Ð{\aa}{\o}{\aa}\'{\i}\`{e}\"{y}
- \'{o}\"{\i}ð\`{a}{\ae}\'{\i}{\aa}\'{\i}\`{e}\'{e}}
-\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
-
-\renewcommand\exsolafter{\textit{Ð{\aa}{\o}{\aa}\'{\i}\`{e}{\aa}}:}
-
-\renewcommand\eq@sqslsectitle{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}
- \^{e} \`{o}{\aa}\~{n}\`{o}\`{a}\`{\i}}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-\renewcommand\eq@sqslsecrunhead{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}
- \^{e} \^{e}\^{\i}ð\^{\i}\`{o}\^{e}\`{e}\`{\i}
- \`{o}{\aa}\~{n}\`{o}\`{a}\`{\i}}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-\renewcommand\eq@sqsllabel{%
- \string\textbf{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-\renewcommand\sqsolafter{\textit{Ð{\aa}{\o}{\aa}\'{\i}\`{e}{\aa}}:}
-
-\renewcommand\eq@sqlabel{%
- \textcolor{red}{\c{C}\`{a}\"{a}\`{a}\'{\i}\`{e}{\aa}.}}
-\renewcommand\sqlabel{\eq@sqlabel}
-
-\renewcommand\eq@sqslrtnlabel{\^{a}{\aa}ð\'{\i}\'{o}\`{o}\"{u}\~{n}\"{y}}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-\cyrCommand\eqsqslrtnlabel{\^{E} \^{o}\^{\i}ð\`{\i}\'{o}\"{e}%
- \`{e}ð\^{\i}\^{a}\^{e}{\aa} \c{c}\`{a}\"{a}\`{a}\'{\i}\`{e}\"{y}}
-\renewcommand\eq@sqslrtnlabel{\eqsqslrtnlabel}
-
-\renewcommand\eq@bqlabel{CTAPT}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-
-\renewcommand\eq@eqlabel{\^{O}\`{E}\'{I}\`{E}{\O}}
-\renewcommand\eqlabel{\eq@eqlabel}
-\def\ScoreFieldDefaults
-{%
- \Ff{\FfReadOnly}\BC{1 0 0}\BG{}\S{S}
- \DV{\^{A}{\aa}ð\'{\i}\^{\i}:}\W{1}
-}
-\renewcommand\eq@local@CA{\`{E}\~{n}\"{\i}ð\`{a}\^{a}\`{e}\`{o}\"{u}}
-\renewcommand\eq@local@RC{\`{\i}\^{\i}\`{e} \^{\i}\`{o}\^{a}{\aa}%
- \`{o}\^{u}!}
-\renewcommand\eq@local@AC{\"{I}\^{\i}{\ae}\`{a}\"{e}\'{o}\'{e}\~{n}%
- \`{o}\`{a}!}
-%% In Cyrillic, at least with pdflatex v.1.40.3 , the same \eq@Score
-%% unfortunately can not serve both \ScoreFieldDefaults and
-%% \eqQuizTotalMsg.
-
-\renewcommand\eq@Score{\u0412\u0435\u0440\u043D\u043E:}
-\renewcommand\eq@OutOf{\u0438\u0437}
-
-\def\eqsqrtmsg{"\u0412\u0435\u0440\u043D\u043E!"}
-\def\eqsqwgmsg{"\u041E\u0448\u0438\u0431\u043A\u0430!"}
-
-\def\eqInitQuizMsg{"\u041A\u043B\u0438\u043A\u043D\u0438\u0442\u0435
- \u043D\u0430 \u00AB"+msg+"\u00BB, \u0447\u0442\u043E\u0431\u044B
- \u043D\u0430\u0447\u0430\u0442\u044C
- \u043E\u0442\u0432\u0435\u0442."}
-
-\renewcommand\eqMadeChoice{"\u0412\u044B \u0443\u0436\u0435
- \u0432\u044B\u0431\u0440\u0430\u043B\u0438
- \u043E\u0442\u0432\u0435\u0442
- ("+Responses[probno]+"). \u0418\u043B\u0438 \u0412\u044B
- \u043F\u0435\u0440\u0435\u0434\u0443\u043C\u0430\u043B\u0438?"}
-\renewcommand\eq@local@CorrAnsButton{Ans}
-\renewcommand\eqerrABS{"\u0417\u043D\u0430\u043A\u0438
- \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u043E\u0439
- \u0432\u0435\u043B\u0438\u0447\u0438\u043D\u044B \u043D\u0435
- \u0441\u0431\u0430\u043B\u0430\u043D\u0441\u0438\u0440\u043E\u0432%
- \u0430\u043D\u044B.
- \u0418\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435,
- \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430."}
-\renewcommand\eqerrBadMathFunc{"\u0412\u044B\u0440\u0430\u0436\u0435%
- \u043D\u0438\u0435 `"+aF[i]+"' \u043D\u0435 \u044F\u0432\u043B%
- \u044F\u0435\u0442\u0441\u044F \u043D\u0438
- \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0439 "
- +"\u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439,
- \u043D\u0438 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D%
- \u044B\u043C\u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447%
- \u0435\u0441\u043A\u0438\u043C \u0432\u044B\u0440\u0430\u0436\u0435%
- \u043D\u0438\u0435\u043C."}
-\renewcommand\eqParens{"\u041A\u0440\u0443\u0433\u043B\u044B\u0435
- \u0441\u043A\u043E\u0431\u043A\u0438"}
-\renewcommand\eqBrackets{"\u041A\u0432\u0430\u0434\u0440\u0430\u0442%
- \u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438"}
-\renewcommand\eqBraces{"\u0424\u0438\u0433\u0443\u0440\u043D\u044B\u0435
- \u0441\u043A\u043E\u0431\u043A\u0438"}
-\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " \u043D\u0435
- \u0441\u0431\u0430\u043B\u0430\u043D\u0441\u0438\u0440%
- \u043E\u0432\u0430\u043D\u043E.
- \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430,
- \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435."}
-\renewcommand\eqerrBadExp{"\u0418\u0441\u043F\u0440\u0430\u0432%
- \u044C\u0442\u0435, \u043F\u043E\u0436\u0430\u043B\u0443\u0439%
- \u0441\u0442\u0430, \u0432\u044B\u0440\u0430\u0436\u0435\u043D%
- \u0438\u0435 \u0441\u043E \u0441\u0442\u0435\u043F\u0435\u043D%
- \u044C\u044E."}
-\renewcommand\eqerrUnfinishQuiz{"\u041F\u043E\u0436\u0430\u043B\u0443%
- \u0439\u0441\u0442\u0430, \u0437\u0430\u043A\u043E\u043D\u0447%
- \u0438\u0442\u0435 \u043D\u0430\u0447\u0430\u0442\u043E\u0435
- \u0440\u0430\u043D\u0435\u0435 \u0437\u0430\u0434\u0430\u043D%
- \u0438\u0435."}
-\renewcommand\noPeekMsg{"\u0420\u0435\u0448\u0435\u043D\u0438\u044F
- \u043D\u0435 \u043F\u043E\u043A\u0430\u0436\u0443\u0442\u0441\u044F,
- \u043F\u043E\u043A\u0430 \u0437\u0430\u0434\u0430\u043D\u0438\u0435
- \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043A
- \u043E\u043D\u0447\u0435\u043D\u043E!"}
-\renewcommand\highThresholdMsg{"\u0412\u044B \u043D\u0435
- \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u0435
- \u043E\u0446\u0435\u043D\u043A\u0438, \u043F\u043E\u043A\u0430
- \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u0442\u0435
- \u043D\u0430 \u0412\u0421\u0415 \u0432\u043E\u043F\u0440\u043E%
- \u0441\u044B."}
-\renewcommand\eqSyntaxErrorUndefVar{"\u0421\u0438\u043D\u0442\u0430%
- \u043A\u0441\u0438\u0447\u0435\u0441\u043A\u0430\u044F
- \u043E\u0448\u0438\u0431\u043A\u0430:
- \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E,
- \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F
- \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435%
- \u043D\u0430."}
-\endinput
-%%
-%% End of file `eqru.def'.
+%%
+%% This is file `eqru.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqru')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqru.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%% eqru.def %%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Sergei V. Znamenskii %%
+%% e-mail address: znamensk@rustex.botik.ru %%
+%% Language: Russian %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\expandafter\ifx\csname inputencoding\endcsname\relax
+\RequirePackage{inputenc}\fi
+\inputencoding{cp1251}\makeatletter
+\expandafter\ifx\csname Russian\endcsname\relax
+\RequirePackage[russian]{babel}\fi
+ \def\web@versionlabel{\^{A}{\aa}ð\~{n}\`{e}\"{y}}%
+ \def\web@toc{\~{N}\^{\i}\"{a}{\aa}ð{\ae}\`{a}\'{\i}\`{e}{\aa}}%
+ \def\web@continued{\"{\i}ð\^{\i}\"{a}\^{\i}\"{e}{\ae}.}%
+ \def\web@article{\'{I}\`{a}{\div}\`{a}\"{e}\^{\i}
+ \hyperlink{section.1}{}}%
+ \def\web@directory{\"{I}\`{a}\"{\i}\^{e}\`{a}}%
+ \def\web@revision{\"{A}\`{a}\`{o}\`{a} \"{\i}\^{\i}\~{n}\"{e}%
+ {\aa}\"{a}\'{\i}{\aa}\~{a}\^{\i} \`{e}\c{c}\`{\i}{\aa}%
+ \'{\i}{\aa}\'{\i}\`{e}\"{y}:}%
+ \def\web@copyright{\^{E}\^{\i}\"{\i}\`{e}ð\`{a}\'{e}\`{o}}%
+ \def\web@section{\textsection\ }%
+ % Label Navibar
+ \def\web@back{\'{I}\`{a}\c{c}\`{a}\"{a}}%
+ \def\web@doc{\"{A}\^{\i}\^{e}.}% restricted to three characters
+
+\renewcommand\exlabel{\'{O}\"{\i}ð\`{a}{\ae}\'{\i}{\aa}\'{\i}\`{e}{\aa}}
+\renewcommand\exlabelsol{\^{E} \'{o}\"{\i}ð\`{a}{\ae}%
+ \'{\i}{\aa}\'{\i}\`{e}þ}
+
+\renewcommand\exsectitle{Ð{\aa}{\o}{\aa}\'{\i}\`{e}\"{y}
+ \'{o}\"{\i}ð\`{a}{\ae}\'{\i}{\aa}\'{\i}\`{e}\'{e}}
+\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
+
+\renewcommand\exsolafter{\textit{Ð{\aa}{\o}{\aa}\'{\i}\`{e}{\aa}}:}
+
+\renewcommand\eq@sqslsectitle{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}
+ \^{e} \`{o}{\aa}\~{n}\`{o}\`{a}\`{\i}}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+\renewcommand\eq@sqslsecrunhead{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}
+ \^{e} \^{e}\^{\i}ð\^{\i}\`{o}\^{e}\`{e}\`{\i}
+ \`{o}{\aa}\~{n}\`{o}\`{a}\`{\i}}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+\renewcommand\eq@sqsllabel{%
+ \string\textbf{\^{I}\`{o}\^{a}{\aa}\`{o}\^{u}:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+\renewcommand\sqsolafter{\textit{Ð{\aa}{\o}{\aa}\'{\i}\`{e}{\aa}}:}
+
+\renewcommand\eq@sqlabel{%
+ \textcolor{red}{\c{C}\`{a}\"{a}\`{a}\'{\i}\`{e}{\aa}.}}
+\renewcommand\sqlabel{\eq@sqlabel}
+
+\renewcommand\eq@sqslrtnlabel{\^{a}{\aa}ð\'{\i}\'{o}\`{o}\"{u}\~{n}\"{y}}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+\cyrCommand\eqsqslrtnlabel{\^{E} \^{o}\^{\i}ð\`{\i}\'{o}\"{e}%
+ \`{e}ð\^{\i}\^{a}\^{e}{\aa} \c{c}\`{a}\"{a}\`{a}\'{\i}\`{e}\"{y}}
+\renewcommand\eq@sqslrtnlabel{\eqsqslrtnlabel}
+
+\renewcommand\eq@bqlabel{CTAPT}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+
+\renewcommand\eq@eqlabel{\^{O}\`{E}\'{I}\`{E}{\O}}
+\renewcommand\eqlabel{\eq@eqlabel}
+\def\ScoreFieldDefaults
+{%
+ \Ff{\FfReadOnly}\BC{1 0 0}\BG{}\S{S}
+ \DV{\^{A}{\aa}ð\'{\i}\^{\i}:}\W{1}
+}
+\renewcommand\eq@local@CA{\`{E}\~{n}\"{\i}ð\`{a}\^{a}\`{e}\`{o}\"{u}}
+\renewcommand\eq@local@RC{\`{\i}\^{\i}\`{e} \^{\i}\`{o}\^{a}{\aa}%
+ \`{o}\^{u}!}
+\renewcommand\eq@local@AC{\"{I}\^{\i}{\ae}\`{a}\"{e}\'{o}\'{e}\~{n}%
+ \`{o}\`{a}!}
+%% In Cyrillic, at least with pdflatex v.1.40.3 , the same \eq@Score
+%% unfortunately can not serve both \ScoreFieldDefaults and
+%% \eqQuizTotalMsg.
+
+\renewcommand\eq@Score{\u0412\u0435\u0440\u043D\u043E:}
+\renewcommand\eq@OutOf{\u0438\u0437}
+
+\def\eqsqrtmsg{"\u0412\u0435\u0440\u043D\u043E!"}
+\def\eqsqwgmsg{"\u041E\u0448\u0438\u0431\u043A\u0430!"}
+
+\def\eqInitQuizMsg{"\u041A\u043B\u0438\u043A\u043D\u0438\u0442\u0435
+ \u043D\u0430 \u00AB"+msg+"\u00BB, \u0447\u0442\u043E\u0431\u044B
+ \u043D\u0430\u0447\u0430\u0442\u044C
+ \u043E\u0442\u0432\u0435\u0442."}
+
+\renewcommand\eqMadeChoice{"\u0412\u044B \u0443\u0436\u0435
+ \u0432\u044B\u0431\u0440\u0430\u043B\u0438
+ \u043E\u0442\u0432\u0435\u0442
+ ("+Responses[probno]+"). \u0418\u043B\u0438 \u0412\u044B
+ \u043F\u0435\u0440\u0435\u0434\u0443\u043C\u0430\u043B\u0438?"}
+\renewcommand\eq@local@CorrAnsButton{Ans}
+\renewcommand\eqerrABS{"\u0417\u043D\u0430\u043A\u0438
+ \u0430\u0431\u0441\u043E\u043B\u044E\u0442\u043D\u043E\u0439
+ \u0432\u0435\u043B\u0438\u0447\u0438\u043D\u044B \u043D\u0435
+ \u0441\u0431\u0430\u043B\u0430\u043D\u0441\u0438\u0440\u043E\u0432%
+ \u0430\u043D\u044B.
+ \u0418\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435,
+ \u043F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430."}
+\renewcommand\eqerrBadMathFunc{"\u0412\u044B\u0440\u0430\u0436\u0435%
+ \u043D\u0438\u0435 `"+aF[i]+"' \u043D\u0435 \u044F\u0432\u043B%
+ \u044F\u0435\u0442\u0441\u044F \u043D\u0438
+ \u0432\u0441\u0442\u0440\u043E\u0435\u043D\u043D\u043E\u0439 "
+ +"\u0444\u0443\u043D\u043A\u0446\u0438\u0435\u0439,
+ \u043D\u0438 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D%
+ \u044B\u043C\u043C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u0447%
+ \u0435\u0441\u043A\u0438\u043C \u0432\u044B\u0440\u0430\u0436\u0435%
+ \u043D\u0438\u0435\u043C."}
+\renewcommand\eqParens{"\u041A\u0440\u0443\u0433\u043B\u044B\u0435
+ \u0441\u043A\u043E\u0431\u043A\u0438"}
+\renewcommand\eqBrackets{"\u041A\u0432\u0430\u0434\u0440\u0430\u0442%
+ \u043D\u044B\u0435 \u0441\u043A\u043E\u0431\u043A\u0438"}
+\renewcommand\eqBraces{"\u0424\u0438\u0433\u0443\u0440\u043D\u044B\u0435
+ \u0441\u043A\u043E\u0431\u043A\u0438"}
+\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " \u043D\u0435
+ \u0441\u0431\u0430\u043B\u0430\u043D\u0441\u0438\u0440%
+ \u043E\u0432\u0430\u043D\u043E.
+ \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430,
+ \u0438\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435."}
+\renewcommand\eqerrBadExp{"\u0418\u0441\u043F\u0440\u0430\u0432%
+ \u044C\u0442\u0435, \u043F\u043E\u0436\u0430\u043B\u0443\u0439%
+ \u0441\u0442\u0430, \u0432\u044B\u0440\u0430\u0436\u0435\u043D%
+ \u0438\u0435 \u0441\u043E \u0441\u0442\u0435\u043F\u0435\u043D%
+ \u044C\u044E."}
+\renewcommand\eqerrUnfinishQuiz{"\u041F\u043E\u0436\u0430\u043B\u0443%
+ \u0439\u0441\u0442\u0430, \u0437\u0430\u043A\u043E\u043D\u0447%
+ \u0438\u0442\u0435 \u043D\u0430\u0447\u0430\u0442\u043E\u0435
+ \u0440\u0430\u043D\u0435\u0435 \u0437\u0430\u0434\u0430\u043D%
+ \u0438\u0435."}
+\renewcommand\noPeekMsg{"\u0420\u0435\u0448\u0435\u043D\u0438\u044F
+ \u043D\u0435 \u043F\u043E\u043A\u0430\u0436\u0443\u0442\u0441\u044F,
+ \u043F\u043E\u043A\u0430 \u0437\u0430\u0434\u0430\u043D\u0438\u0435
+ \u043D\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043A
+ \u043E\u043D\u0447\u0435\u043D\u043E!"}
+\renewcommand\highThresholdMsg{"\u0412\u044B \u043D\u0435
+ \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u0435
+ \u043E\u0446\u0435\u043D\u043A\u0438, \u043F\u043E\u043A\u0430
+ \u043D\u0435 \u043E\u0442\u0432\u0435\u0442\u0438\u0442\u0435
+ \u043D\u0430 \u0412\u0421\u0415 \u0432\u043E\u043F\u0440\u043E%
+ \u0441\u044B."}
+\renewcommand\eqSyntaxErrorUndefVar{"\u0421\u0438\u043D\u0442\u0430%
+ \u043A\u0441\u0438\u0447\u0435\u0441\u043A\u0430\u044F
+ \u043E\u0448\u0438\u0431\u043A\u0430:
+ \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E,
+ \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F
+ \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435%
+ \u043D\u0430."}
+\endinput
+%%
+%% End of file `eqru.def'.
diff --git a/texmf-dist/tex/latex/acrotex/eqtr.def b/texmf-dist/tex/latex/acrotex/eqtr.def
index d587b854..b24f35d3 100644
--- a/texmf-dist/tex/latex/acrotex/eqtr.def
+++ b/texmf-dist/tex/latex/acrotex/eqtr.def
@@ -1,106 +1,106 @@
-%%
-%% This is file `eqtr.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,eqtr')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{eqtr.def}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-%%%%%%%%%%%%%%%%%%%% eqtr.def %%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Foreign language support for the exerquiz package. %%
-%% Name of translator: Mahmut Ko\c{c}ak %%
-%% e-mail address: mkocak@ogu.edu.tr %%
-%% Language: Turkish %%
-%% %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand\exlabel{Al\i \c st\i rma}
-\renewcommand\exlabelsol{\noexpand\c C\noexpand\"oz\noexpand\"um}
-\renewcommand\exsectitle{\exlabel lar{\i}n \c C\"oz\"umleri }
-\renewcommand\exsecrunhead{Al\noexpand\i \noexpand\c st\noexpand\i rma
- \exlabelsol leri }
-\renewcommand\exsolafter{\textbf{\c C\"oz\"um}:}
-\renewcommand\eq@sqslsectitle{Kuizlerin \c C\"oz\"umleri }
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-\renewcommand\eq@sqslsecrunhead{Kuizlerin \c C\"oz\"umleri}
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-\renewcommand\eq@sqsllabel{%
- \protect\textbf{Kuiz \noexpand\c C\noexpand\"oz\noexpand\"um%
- \noexpand\"u:}}
-\renewcommand\sqsllabel{\eq@sqsllabel}
-\renewcommand\sqsolafter{\textit{\c C\"oz\"um}:}
-\renewcommand\eq@sqlabel{\textcolor{red}{Soru}}
-\renewcommand\sqlabel{\eq@sqlabel}
-\renewcommand\eq@sqslrtnlabel{Kuizi Bitir}
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-\renewcommand\eqsqrtmsg{"Do\protect\u011Fru!"}
-\renewcommand\eqsqwgmsg{"Yanl\protect\u0131\protect\u015F!"}
-\renewcommand\eq@bqlabel{Kuize Ba\c sla}
-\renewcommand\bqlabel{\eq@bqlabel}
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabelISO}
-\renewcommand\eq@eqlabel{Kuizi Bitir}
-\renewcommand\eqlabel{\eq@eqlabel}
-\renewcommand\eq@Score{Skor:}
-\renewcommand\eq@OutOf{\protect\374zerinden}
-\renewcommand\eqQuizTotalMsg{%
- "\eqScore\space"+nQuestions+" \eqOutOf\space"+Score}
- \renewcommand\eqQuizPointsMsg{%
- "\eqptScore\space"+nPointTotal+" \eqOutOf\space"+ptScore}
-\renewcommand\eq@local@CorrAnsButton{Cevap}
-\renewcommand\eqInitQuizMsg{%
- "Kuizi Bitirdiniz. Do\protect\u011Fru cevaplar\protect\u0131
- g\protect\u00F6rmek i\protect\u00E7in 'cevap'
- tu\protect\u015Flar\protect\u0131na
- bas\protect\u0131n\protect\u0131z."}
-\renewcommand\eqMadeChoice{%
- "Bir se\protect\u00E7im yapt\protect\u0131n\protect\u0131z.
- Se\protect\u00E7iminiz ("+Responses[probno]+") idi."
- +" Se\protect\u00E7iminizi de\protect\u011Fi\protect\u015Ftirmek
- istermisiniz?"}
-\renewcommand\eqerrABS{"Mutlak de\protect\u011Fer do\protect\u011Fru
- degil. L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
-\renewcommand\eqerrBadMathFunc{" `"+aF[i]+"' ifadesi
- tan\protect\u0131ml\protect\u0131 bir fonksiyon veya
- ge\protect\u00E7erli bir matematiksel ifade de\protect\u011Fil."}
-\renewcommand\eqParens{"Parentezler"}
-\renewcommand\eqBrackets{"S\protect\u00FCsl\protect\u00FC Parentazle"}
-\renewcommand\eqBraces{"K\protect\u00F6\protect\u015Feli Parentezler"}
-\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " do\protect\u011Fru
- de\protect\u011Fil. L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
-\renewcommand\eqerrBadExp{"Ge\protect\u00E7ersiz matematiksel ifade.
- \protect\u00FCstel ifadeli bir hata.
- L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
-\renewcommand\eqerrUnfinishQuiz{"Bitirilmemi\protect\u015F bir kuiz var,
- di\protect\u011Fer kuize ge\protect\u00E7meden \protect\u00F6nce
- bu kuizi tamamlay\protect\u0131n."}
-\renewcommand\noPeekMsg{"Kuizi bitirmeden yada kuizden
- ba\protect\u015Far\protect\u0131l\protect\u0131 olana kadar
- \protect\u00E7\protect\u00F6z\protect\u00FCmleri
- g\protect\u00F6remezsiniz.!"}
-\renewcommand\highThresholdMsg{"Kuiz sonucu hesaplanmadan
- \protect\u00F6nce b\protect\u00FCt\protect\u00FCn
- sorular\protect\u0131 cevapland\protect\u0131rmal\protect
- \u0131s\protect\u0131n\protect\u0131z."}
-\renewcommand\eqSyntaxErrorUndefVar{"Syntax Error: Tan\protect
- \u0131mlanmam\protect\u0131\protect\u015F de\protect\u011Fi\protect
- \u015Fken veya ifadeler istenilen formatta yaz\protect
- \u0131lmam\protect\u0131\protect\u015Ft\protect\u0131r."}
-\renewcommand\eq@local@CA{Dogru}
-\renewcommand\eq@local@RC{Benim Cevaplar\protect\u0131m!}
-\renewcommand\eq@local@AC{L\protect\374tfen!}
-\endinput
-%%
-%% End of file `eqtr.def'.
+%%
+%% This is file `eqtr.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,eqtr')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{eqtr.def}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+%%%%%%%%%%%%%%%%%%%% eqtr.def %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Foreign language support for the exerquiz package. %%
+%% Name of translator: Mahmut Ko\c{c}ak %%
+%% e-mail address: mkocak@ogu.edu.tr %%
+%% Language: Turkish %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\exlabel{Al\i \c st\i rma}
+\renewcommand\exlabelsol{\noexpand\c C\noexpand\"oz\noexpand\"um}
+\renewcommand\exsectitle{\exlabel lar{\i}n \c C\"oz\"umleri }
+\renewcommand\exsecrunhead{Al\noexpand\i \noexpand\c st\noexpand\i rma
+ \exlabelsol leri }
+\renewcommand\exsolafter{\textbf{\c C\"oz\"um}:}
+\renewcommand\eq@sqslsectitle{Kuizlerin \c C\"oz\"umleri }
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+\renewcommand\eq@sqslsecrunhead{Kuizlerin \c C\"oz\"umleri}
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+\renewcommand\eq@sqsllabel{%
+ \protect\textbf{Kuiz \noexpand\c C\noexpand\"oz\noexpand\"um%
+ \noexpand\"u:}}
+\renewcommand\sqsllabel{\eq@sqsllabel}
+\renewcommand\sqsolafter{\textit{\c C\"oz\"um}:}
+\renewcommand\eq@sqlabel{\textcolor{red}{Soru}}
+\renewcommand\sqlabel{\eq@sqlabel}
+\renewcommand\eq@sqslrtnlabel{Kuizi Bitir}
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+\renewcommand\eqsqrtmsg{"Do\protect\u011Fru!"}
+\renewcommand\eqsqwgmsg{"Yanl\protect\u0131\protect\u015F!"}
+\renewcommand\eq@bqlabel{Kuize Ba\c sla}
+\renewcommand\bqlabel{\eq@bqlabel}
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabelISO}
+\renewcommand\eq@eqlabel{Kuizi Bitir}
+\renewcommand\eqlabel{\eq@eqlabel}
+\renewcommand\eq@Score{Skor:}
+\renewcommand\eq@OutOf{\protect\374zerinden}
+\renewcommand\eqQuizTotalMsg{%
+ "\eqScore\space"+nQuestions+" \eqOutOf\space"+Score}
+ \renewcommand\eqQuizPointsMsg{%
+ "\eqptScore\space"+nPointTotal+" \eqOutOf\space"+ptScore}
+\renewcommand\eq@local@CorrAnsButton{Cevap}
+\renewcommand\eqInitQuizMsg{%
+ "Kuizi Bitirdiniz. Do\protect\u011Fru cevaplar\protect\u0131
+ g\protect\u00F6rmek i\protect\u00E7in 'cevap'
+ tu\protect\u015Flar\protect\u0131na
+ bas\protect\u0131n\protect\u0131z."}
+\renewcommand\eqMadeChoice{%
+ "Bir se\protect\u00E7im yapt\protect\u0131n\protect\u0131z.
+ Se\protect\u00E7iminiz ("+Responses[probno]+") idi."
+ +" Se\protect\u00E7iminizi de\protect\u011Fi\protect\u015Ftirmek
+ istermisiniz?"}
+\renewcommand\eqerrABS{"Mutlak de\protect\u011Fer do\protect\u011Fru
+ degil. L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
+\renewcommand\eqerrBadMathFunc{" `"+aF[i]+"' ifadesi
+ tan\protect\u0131ml\protect\u0131 bir fonksiyon veya
+ ge\protect\u00E7erli bir matematiksel ifade de\protect\u011Fil."}
+\renewcommand\eqParens{"Parentezler"}
+\renewcommand\eqBrackets{"S\protect\u00FCsl\protect\u00FC Parentazle"}
+\renewcommand\eqBraces{"K\protect\u00F6\protect\u015Feli Parentezler"}
+\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " do\protect\u011Fru
+ de\protect\u011Fil. L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
+\renewcommand\eqerrBadExp{"Ge\protect\u00E7ersiz matematiksel ifade.
+ \protect\u00FCstel ifadeli bir hata.
+ L\protect\u00FCtfen d\protect\u00FCzeltiniz."}
+\renewcommand\eqerrUnfinishQuiz{"Bitirilmemi\protect\u015F bir kuiz var,
+ di\protect\u011Fer kuize ge\protect\u00E7meden \protect\u00F6nce
+ bu kuizi tamamlay\protect\u0131n."}
+\renewcommand\noPeekMsg{"Kuizi bitirmeden yada kuizden
+ ba\protect\u015Far\protect\u0131l\protect\u0131 olana kadar
+ \protect\u00E7\protect\u00F6z\protect\u00FCmleri
+ g\protect\u00F6remezsiniz.!"}
+\renewcommand\highThresholdMsg{"Kuiz sonucu hesaplanmadan
+ \protect\u00F6nce b\protect\u00FCt\protect\u00FCn
+ sorular\protect\u0131 cevapland\protect\u0131rmal\protect
+ \u0131s\protect\u0131n\protect\u0131z."}
+\renewcommand\eqSyntaxErrorUndefVar{"Syntax Error: Tan\protect
+ \u0131mlanmam\protect\u0131\protect\u015F de\protect\u011Fi\protect
+ \u015Fken veya ifadeler istenilen formatta yaz\protect
+ \u0131lmam\protect\u0131\protect\u015Ft\protect\u0131r."}
+\renewcommand\eq@local@CA{Dogru}
+\renewcommand\eq@local@RC{Benim Cevaplar\protect\u0131m!}
+\renewcommand\eq@local@AC{L\protect\374tfen!}
+\endinput
+%%
+%% End of file `eqtr.def'.
diff --git a/texmf-dist/tex/latex/acrotex/exerquiz.sty b/texmf-dist/tex/latex/acrotex/exerquiz.sty
index 8583fa71..c12a83b7 100644
--- a/texmf-dist/tex/latex/acrotex/exerquiz.sty
+++ b/texmf-dist/tex/latex/acrotex/exerquiz.sty
@@ -1,4667 +1,4667 @@
-%%
-%% This is file `exerquiz.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{exerquiz}
- [2018/03/21 v8.2.2 %
- Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)]
-\usepackage{keyval}
-\RequirePackage{ifpdf}[2006/02/20]
-\RequirePackage{ifxetex}[2006/08/21]
-\RequirePackage{ifluatex}
-\@ifundefined{exqtable}{\def\exqtable{table}}{}
-\IfFileExists{xcolor.sty}{%
- \def\eq@ColorPackage{xcolor}%
- \PassOptionsToPackage{\exqtable,hyperref}{xcolor}}
- {\def\eq@ColorPackage{color}}
-\DeclareOption{noxcolor}{\def\eq@ColorPackage{color}}
-\DeclareOption{forpaper}{%
- \eqforpapertrue\PassOptionsToPackage{monochrome}{\eq@ColorPackage}
- \AtBeginDocument{\ifnum\eq@drivernum=4 \else\AllowPeeking\fi}
-}
-\DeclareOption{forcolorpaper}{\eqforpapertrue % for print
- \AtBeginDocument{\ifnum\eq@drivernum=4 \else\AllowPeeking\fi}
-}
-\DeclareOption{preview}{\PassOptionsToPackage{preview}{eforms}}
-\DeclareOption{nosolutions}{\eq@nosolutionstrue\eq@nolinktrue}
-\DeclareOption{noquizsolutions}{\eq@noquizsolutionstrue\eq@nolinktrue}
-\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
-\DeclareOption{online}{\let\eq@online\eq@YES}
-\let\eq@online\eq@NO
-\DeclareOption{nohiddensolutions}{\eq@globalshowsolutionstrue}
-\DeclareOption{noHiddensolutions}%
- {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
-\DeclareOption{solutionsafter}{\eq@solutionsaftertrue\eq@nolinktrue}
-\DeclareOption{solutionsonly}{\solutionsonlytrue\answerkeytrue
- \therearesolutionstrue\AtEndOfPackage{\let\exerSolnsHeadnToc\relax}}
-\newif\ifsolutionsonly\solutionsonlyfalse
-\@ifundefined{ifanswerkey}{\newif\ifanswerkey\answerkeyfalse}{}
-\DeclareOption{contsolns}{\AtEndOfPackage{\InputIfFileExists
- {contsolns.def}{\contsolnsInputMsg}{\contsolnsErrorMsg}}}
-\def\contsolnsInputMsg{\PackageInfo{exerquiz}{contsolns option,
- inputting file contsolns.def}}
-\def\contsolnsErrorMsg{\PackageWarning{exerquiz}{contsolns option,
- cannot find file contsolns.def}}
-\DeclareOption{nocorrections}{\nocorrectionstrue}
-\DeclareOption{proofing}{\eq@proofingtrue}
-\newif\ifaebshowgrayletters\aebshowgraylettersfalse
-\DeclareOption{showgrayletters}{\aebshowgrayletterstrue}
-\@ifundefined{ifvspacewithsolns}{%
- \DeclareOption{vspacewithsolns}{\vspacewithsolnstrue}
- \newif\ifvspacewithsolns\vspacewithsolnsfalse
-}{}
-\@ifundefined{ifdisplayworkarea}{\newif\ifdisplayworkarea
- \displayworkareafalse}{}
-\DeclareOption{nodljs}{\PassOptionsToPackage{nodljs}{insdljs}%
- \AtEndOfPackage{\let\importdljs\eq@YES}}
-\DeclareOption{execJS}{\PassOptionsToPackage{execJS}{insdljs}}
-\DeclareOption{exercisesonly}{\PassOptionsToPackage{nodljs}{insdljs}}
-\DeclareOption{debug}{\PassOptionsToPackage{debug}{insdljs}}
-\DeclareOption{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
-\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
- {\PackageInfo{exerquiz}{inputting aebrandom.def}}
- {cannot find aebrandom.def}}
-\newif \ifusesumrytbls \usesumrytblsfalse
-\DeclareOption{usesumrytbls}{\usesumrytblstrue
- \def\inputSumryTblCode{\InputIfFileExists{aebsumrytbls.def}
- {\PackageInfo{exerquiz}{inputting aebsumrytbls.def}}%
- {cannot find aebsumrytbls.def}}}
-\let\inputSumryTblCode\relax
-\DeclareOption{usemcfi}{%
- \def\inputMCFICode{\InputIfFileExists{usemcfi.def}
- {\PackageInfo{exerquiz}{inputting usemcfi.def}}%
- {cannot find usemcfi.def}}}
-\let\inputMCFICode\relax
-\newif\ifwithinMCFI\withinMCFIfalse
-\DeclareOption{dvipsone}{%
- \def\eq@drivernum{0}\def\eq@driver{dvipsone}%
- \PassOptionsToPackage{dvipsone}{eforms}
-}
-\DeclareOption{dvips}{%
- \def\eq@drivernum{0}\def\eq@driver{dvips}%
- \PassOptionsToPackage{dvips}{eforms}
-}
-\DeclareOption{pdftex}{%
- \def\eq@drivernum{1}\def\eq@driver{pdftex}%
- \PassOptionsToPackage{pdftex}{\eq@ColorPackage}
- \PassOptionsToPackage{pdftex}{eforms}
-}
-\DeclareOption{luatex}{%
- \def\eq@drivernum{1}\def\eq@driver{luatex}%
- \PassOptionsToPackage{luatex}{\eq@ColorPackage}
- \PassOptionsToPackage{luatex}{eforms}
-}
-\DeclareOption{dvipdfm}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
- \PassOptionsToPackage{dvipdfm}{\eq@ColorPackage}%
- \PassOptionsToPackage{dvipdfm}{eforms}%
-}
-\DeclareOption{dvipdfmx}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
- \PassOptionsToPackage{dvipdfmx}{\eq@ColorPackage}%
- \PassOptionsToPackage{dvipdfmx}{eforms}%
-}
-\DeclareOption{xetex}{%
- \def\eq@drivernum{2}\def\eq@driver{xetex}%
- \PassOptionsToPackage{xetex}{\eq@ColorPackage}
- \PassOptionsToPackage{xetex}{eforms}%
-}
-\DeclareOption{textures}{\def\eq@drivernum{3}%
- \def\eq@driver{textures}%
- \PassOptionsToPackage{textures}{\eq@ColorPackage}%
- \PassOptionsToPackage{textures}{eforms}%
-}
-\DeclareOption{dviwindo}{\def\eq@drivernum{4}\def\eq@driver{dviwindo}%
- \eq@noformstrue\PassOptionsToPackage{nodljs}{insdljs}}
-\DeclareOption{unicode}{\PassOptionsToPackage{unicode}{hyperref}}
-\DeclareOption{useui}{\PassOptionsToPackage{useui}{eforms}}
-\let\LangRedefinitions\relax
-\DeclareOption{french}{%
- \def\LangRedefinitions{\InputIfFileExists{eqfr.def}%
- {\PackageInfo{exerquiz}{Inputting French Option}}%
- {\PackageInfo{exerquiz}{French Option: Cannot find the file
- eqfr.def, using the default, English.}}}}
-\DeclareOption{german}{%
- \def\LangRedefinitions{\InputIfFileExists{eqde.def}%
- {\PackageInfo{exerquiz}{Inputting German Option}}%
- {\PackageInfo{exerquiz}{German Option: Kann die Datei eqde.def
- nicht finden, benutze Default, Englisch.}}}}
-\DeclareOption{norsk}{%
- \def\LangRedefinitions{\InputIfFileExists{eqno.def}%
- {\PackageInfo{exerquiz}{Inputting Norsk Option}}%
- {\PackageInfo{exerquiz}{Norsk Option: Cannot find the file eqno.def,
- using the default, English.}}}}
-\DeclareOption{dutch}{%
- \def\LangRedefinitions{\InputIfFileExists{eqnl.def}%
- {\PackageInfo{exerquiz}{Inputting Dutch Option}}%
- {\PackageInfo{exerquiz}{Dutch Option: Kan bestand eqnl.def niet
- vinden, gebruik default, Engels.}}}}
-\DeclareOption{spanish}{%
- \def\LangRedefinitions{\InputIfFileExists{eqes.def}%
- {\PackageInfo{exerquiz}{Inputting Spanish Option}}%
- {\PackageInfo{exerquiz}{Spanish Option: Opci\'on Espa\~nola: no puede
- encontrar el fichero eqes.def, usar\'a por defecto, English.}}}}
-\DeclareOption{italian}{%
- \def\LangRedefinitions{\InputIfFileExists{eqit.def}%
- {\PackageInfo{exerquiz}{Opzione Lingua Italiana}}%
- {\PackageInfo{exerquiz}{pzione Italiano: Non trovo il file eqit.def,
- utilizzo quello di default, English.}}}}
-\DeclareOption{russian}{%
- \@ifpackageloaded{hyperref}{%
- \ifHy@unicode\else\PackageWarning{exerquiz}{%
- The unicode option recommended for hyperref\MessageBreak}\fi
- }{\PassOptionsToPackage{unicode}{hyperref}}
- \def\LangRedefinitions{\InputIfFileExists{eqru.def}%
- {\PackageInfo{exerquiz}{Inputting Russian Option}}%
- {\PackageInfo{exerquiz}{Russian Option: Cannot find the file
- eqru.def, using the default, English.}}}}
-\DeclareOption{dansk}{%
- \def\LangRedefinitions{\InputIfFileExists{eqda.def}%
- {\PackageInfo{exerquiz}{Inputting Dansk Option}}%
- {\PackageInfo{exerquiz}{Dansk Option: Cannot find the file eqda.def,
- using the default, English.}}}}
-\DeclareOption{polish}{%
- \def\LangRedefinitions{\InputIfFileExists{eqpo.def}%
- {\PackageInfo{exerquiz}{Inputting Polish Option}}%
- {\PackageInfo{exerquiz}{Polish Option: Cannot find the file
- eqpo.def, using the default, English.}}}}
-\DeclareOption{finnish}{%
- \def\LangRedefinitions{\InputIfFileExists{eqfin.def}%
- {\PackageInfo{exerquiz}{Inputting Finnish Option}}%
- {\PackageInfo{exerquiz}{Finnish Option: Cannot find the file
- eqfin.def, using the default, English.}}}}
-\DeclareOption{catalan}{%
- \def\LangRedefinitions{\InputIfFileExists{eqcat.def}%
- {\PackageInfo{exerquiz}{Inputting Catalan Option}}%
- {\PackageInfo{exerquiz}{Catalan Option: Cannot find the file
- eqcat.def, using the default, English.}}}}
-\DeclareOption{czech}{%
- \def\LangRedefinitions{\InputIfFileExists{eqcz.def}%
- {\PackageInfo{exerquiz}{Inputting Czech Option}}%
- {\PackageInfo{exerquiz}{Czech Option: Cannot find the file eqcz.def,
- using the default, English.}}}}
-\DeclareOption{brazil}{%
- \def\LangRedefinitions{\InputIfFileExists{eqbr.def}%
- {\PackageInfo{exerquiz}{Inputting Brazilian Portuguese Option}}%
- {\PackageInfo{exerquiz}{Portuguese Option: Opc\~ao Portugu\^es:
- n\~ao foi poss\'ivel encontrar o arquivo eqbr.def, usaremos
- o padr\~ao, English.}}}}
-\DeclareOption{turkish}{%
- \@ifpackageloaded{hyperref}{%
- \ifHy@unicode\else\PackageWarning{exerquiz}{%
- The unicode option recommended for hyperref\MessageBreak}\fi
- }{\PassOptionsToPackage{unicode}{hyperref}}
- \def\LangRedefinitions{\InputIfFileExists{eqtr.def}%
- {\PackageInfo{exerquiz}{Inputting Turkish Option}}%
- {\PackageInfo{exerquiz}{Cannot find the file eqtk.def,
- using the default, English.}}}}
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
-\@ifpackageloaded{xcolor}%
-{%
- \@ifpackagelater{xcolor}{2004/07/04}{}
- {%
- \PackageError{exerquiz}{%
- *************************************************\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]{exerquiz}\MessageBreak
- *************************************************}{}%
- }%
-}{}
-\let\iterate\relax
-\newif\ifeq@solutionsafter \eq@solutionsafterfalse
-\newif\ifeq@hidesolution \eq@hidesolutionfalse
-\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
-\newif\ifeq@nosolutions \eq@nosolutionsfalse
-\newif\ifeq@proofing \eq@proofingfalse
-\providecommand\turnProofingOn{\eq@proofingtrue}
-\providecommand\turnProofingOff{\eq@proofingfalse}
-\newif\ifeqforpaper \eqforpaperfalse
-\newif\ifeq@noforms \eq@noformsfalse
-\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}
-\newif\ifcqSA\cqSAfalse
-\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse
- \displayworkareatrue\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
-}
-\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
-\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
-\def\turnOnRandomize{\eq@randomizeallChoicestrue}
-\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
-\let\saveRandomSeed\relax
-\let\inputRandomSeed\relax
-\def\CorrectionsOn{\global\nocorrectionsfalse}
-\def\CorrectionsOff{\global\nocorrectionstrue}
-\AtBeginDocument{\ifeq@noforms\else\Form\fi}
-\AtEndDocument{%
- \include@solutions
- \ifeq@noforms\else\include@quizsolutions\fi
- \clearpage
- \csname endForm\endcsname
- \if\eq@drivernum2\else\clearpage\fi
-}
-\InputIfFileExists{exerquiz.cfg}{}{}
-\@ifpackageloaded{web}{%
- \ExecuteOptions{\eq@driver@name}%
-}{%
- \ifluatex\ExecuteOptions{luatex}\else
- \ifpdf\ExecuteOptions{pdftex}\else
- \ifxetex\ExecuteOptions{xetex}\else
- \InputIfFileExists{web.cfg}{}
- {\@ifundefined{l@tex@@@@driver}{\ExecuteOptions{dvips}}
- {\ExecuteOptions{dvipsone}}}\fi\fi\fi
-}
-\ProcessOptions
-\RequirePackage{array}
-\RequirePackage{\eq@ColorPackage}
-\RequirePackage{comment}
-\RequirePackage{verbatim}
-\RequirePackage{hyperref}
-\RequirePackage{amssymb}% used for return symbols
-\RequirePackage{eforms}[2012/06/20]
-\@ifundefined{eq@drivernum}{%
- \PackageError{exerquiz}%
- {You have not specified dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the exerquiz package}
- {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the exerquiz package.}
-}{}
-\edef\eq@restoreCats{% dps17
- \catcode`\noexpand\"=\the\catcode`\"\relax
- \catcode`\noexpand\'=\the\catcode`\'\relax
- \catcode`\noexpand\,=\the\catcode`\,\relax
- \catcode`\noexpand\(=\the\catcode`\(\relax
- \catcode`\noexpand\!=\the\catcode`\!\relax
- \catcode`\noexpand\_=\the\catcode`\_\relax
-}
-\@makeother\"\@makeother\'\@makeother\,%
-\@makeother\(\@makeother\!\@makeother\_
-\@ifundefined{ifsolutionsAtEnd}
- {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
-\ifeq@nosolutions\solutionsAtEndfalse\fi
-\ifeq@solutionsafter\solutionsAtEndfalse\fi
-\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
- {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
-\@ifundefined{if@inclkey}{\newif\if@inclkey\@inclkeytrue}{}
-\def\eqretnSymb{$\blacksquare$}%{\rule{6bp}{6.8bp}}
-\newcommand\exlabel{Exercise}
-\newcommand\exlabelsol{\exlabel}
-\newcommand\exsectitle{Solutions to \exlabel s}
-\newcommand\exsecrunhead{\exsectitle} %% change to @ form
-\newcommand{\exsolafter}{\eq@exsolafterDefault}
-\newcommand{\resetSolnAfterToDefault}{%
- \def\exsolafter{\eq@exsolafterDefault}}
-\newcommand{\exsolafterDefault}[1]{\def\eq@exsolafterDefault{#1}%
- \def\exSolafterDefault{#1}\resetSolnAfterToDefault}
-\exsolafterDefault{\textit{Solution}:}
-\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
-\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
-\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
-\def\recoverDisplayBelow{\vskip\belowdisplayskip}
-\newcommand\eq@sqslsectitle{Solutions to Quizzes}
-\newcommand\sqslsectitle{\eq@sqslsectitle}
-\newcommand\eq@sqslsecrunhead{Solutions to Quizzes}
-\newcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-\newcommand\eq@sqsllabel{\protect\textbf{Solution to Quiz:}}
-\newcommand\sqsllabel{\eq@sqsllabel}
-\newcommand\sqsolafter{\textit{Solution}:}
-\newcommand{\sqDefaultFmtTitle}[1]%
- {\def\eq@sqlabel{#1}\def\sqlabel{#1}}
-\newcommand\sqlabel{\eq@sqlabel}
-\sqDefaultFmtTitle{\textcolor{red}{Quiz}}
-\newcommand\eq@sqslrtnlabel{\protect\eqretnSymb}
-\newcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-\newcommand\eqsqrtmsg{"Right!"}
-\newcommand\eqsqwgmsg{"Wrong!"}
-\newcommand\doNotShowAgainMsg{Do not show this message again}
-\newcommand\eq@bqlabel{Begin Quiz}
-\newcommand\bqlabel{\eq@bqlabel}
-\newcommand\eq@bqlabelISO{\eq@bqlabel}
-\newcommand\bqlabelISO{\eq@bqlabelISO}
-\newcommand\setDefShortQuizLabelName[1]%
- {\def\eq@defaultShortQuizLabelName{#1}}
-\setDefShortQuizLabelName{Quiz}
-\newcommand\setDefQuizLabelName[1]
- {\def\eq@defaultQuizLabelName{#1}}
-\setDefQuizLabelName{Quiz}
-\newcommand\eq@eqlabel{End Quiz}
-\newcommand\eqlabel{\eq@eqlabel}
-\newcommand\eq@Score{Score:}\newcommand\eq@OutOf{out of}
-\newcommand\eq@ptScore{Score:}
-\newcommand\stOutOf{of}
-\newcommand\eqScore{\eq@Score}\newcommand\eqOutOf{\eq@OutOf}
-\newcommand\eqptScore{\eq@ptScore}
-\newcommand\eqInitQuizMsg{%
- "You must initialize the Quiz! Click on "+msg+"."}
-\newcommand\eqQuizTotalMsg{%
- "\eqScore\space"+Score+" \eqOutOf\space"+nQuestions}
-\newcommand\eqQuizPointsMsg{%
- "\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal}
-\newcommand\eqQuizPercentMsg{pcScore+"\%"}
-\newcommand\eqQuizGradeMsg{quizGrade}
-\newcommand\eqMadeChoice{%
- "You have already made a choice."
- + " Your choice was ("+Responses[probno]+")."
- + " Do you want to change it?"}
-\newcommand\eq@local@CA{Correct}
-\newcommand\eq@local@RC{My Answers!}
-\newcommand\eq@local@AC{Please!}
-\newcommand\eq@local@CorrAnsButton{Ans}
-\newcommand{\eq@local@sqClearButton}{Clear}
-\newcommand\eqerrABS{"Absolute values not balanced. Please correct."}
-\dlJSStr[noquotes]\eqerrBadMathFunc{"The expression \""+aF[i]
- +"\" is neither a defined function nor a valid math expression."}
-\newcommand\eqParens{"Parentheses"}
-\newcommand\eqBrackets{"Brackets"}
-\newcommand\eqBraces{"Braces"}
-\newcommand\eqerrDelimNotBal{aGroup[i][2] + " not balanced.
- Please correct."}
-\newcommand\eqerrBadExp{"Invalid mathematical expression.
- A problem with one of the exponents. Please correct."}
-\newcommand\eqerrUnfinishQuiz{"There is an unfinished quiz,
- please finish before moving on to another."}
-\newcommand\noPeekMsg{"Viewing Solutions to quizzes is not allowed
- until you take or finish this quiz!"}
-\newcommand\highThresholdMsg{"You are required to respond to all
- questions before the quiz is evaluated."}
-\newcommand\eqSyntaxErrorUndefVar{"Syntax Error: Possibly an undefined
- variable present, or an expression is not written in an expected
- format."}
-\dlJSStr[noquotes]{\eqSyntaxErrorComma}{%
- "Syntax Error: A comma was found"
- + " in your response \""
- + UserAns + "\". Please remove the comma, or this answer"
- + " will be marked as wrong."}
-\newcommand{\limSelWarningMsg}{"For this question, you are allowed to
- make at most " + n + " selections."}
-\newcommand{\defaultReqFormMsg}{%
- "The expression is not in the expected form."}
-\PackageInfo{exerquiz}{* Using \eq@driver\space option *}
-\ifsolutionsonly
-\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}}
-\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
-\fi
-\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
-\newcommand{\writeToQzSolns}[1]{%
- \set@display@protect
- \immediate\write\quiz@solns{#1}%
- \set@typeset@protect
-}
-\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
-\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
-\newcounter{eqexno} \setcounter{eqexno}{0}
-\newcounter{@exno} \setcounter{@exno}{0} % running exno
-\newcounter{quizno} \setcounter{quizno}{0}
-\renewcommand\thequizno{\alph{quizno}}
-\def\theHquizno{\curr@quiz.\theeqquestionnoi.%
- \ifcase\@eqquestiondepth\or\or\arabic{eqquestionnoii}.%
- \or\arabic{eqquestionnoii}.\roman{eqquestionnoiii}.%
- \else\fi\alph{quizno}}
-\newlength\eqemargin \eqemargin=0pt
-\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
-\newlength\eq@tmplength
-\newlength\eqtmplength
-\newcounter{questionno}
-\newcounter{eqquestionnoi}
-\newcounter{eqquestionnoii}
-\newcounter{eqquestionnoiii}
-\newcount\@eqquestiondepth \@eqquestiondepth=0
-\newcounter{grpquestionno}
-\newcounter{partno}
-\newif\ifuseNumForParts\useNumForPartsfalse
-\def\alphaParts{\def\partnoFmt{\alph}\useNumForPartsfalse}\alphaParts
-\def\numberParts{\def\partnoFmt{\arabic}\useNumForPartstrue}
-\renewcommand\thepartno{\partnoFmt{partno}}
-\newtoks\eq@scratchtoks
-\def\theHpartno{partno\the@exno\thepartno}
-\def\verbatimwrite{\@bsphack
- \let\do\@makeother\dospecials
- \catcode`\^^M\active \catcode`\^^I=12
- \def\verbatim@processline{%
- \immediate\write\verbatim@out
- {\the\verbatim@line}}%
- \verbatim@start}
-\def\endverbatimwrite{\@esphack}
-\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
-\newcommand\exlabelformat{{\scshape\exlabel\ \theeqexno.}}
-\newcommand\exlabelformatwp{\exlabelformat}
-\newcommand\exsllabelformat{\protect\textbf{\exlabelsol\ \theeqexno.}}
-\newcommand\exsllabelformatwp
- {\protect\textbf{\exlabelsol\ \theeqexno(\thepartno)}}
-\newcommand\exrtnlabelformat{$\square$}
-\newcommand\exrtnlabelformatwp{$\square$}
-\newcommand{\belowexskip}[1]{\setlength{\eq@tmplength}{#1}%
- \edef\eq@exerskip{\noexpand\removelastparskip
- \noexpand\vskip\the\eq@tmplength\relax\kern0pt}}
-\let\eqexerskip\belowexskip
-\belowexskip{\medskipamount}
-\newcommand{\aboveexskip}[1]{\setlength{\eq@tmplength}{#1}%
- \edef\eq@priorexskip{\noexpand\vskip\the\eq@tmplength\relax
- \kern0pt}}
-\let\priorexskip\aboveexskip
-\aboveexskip{\medskipamount}
-\let\eq@postexerciseHook\relax
-\newcommand\belowexsolnskip{\protect\medskip}
-\def\removelastparskip{\ifdim\parskip>0pt\vskip-\parskip\fi}
-\newcommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
-\nolinkcolor{blue}
-\newcommand{\exerSolnsInExtFile}[2][]
- {\let\exerSolns@ExtFile\eq@YES\gdef\eq@exerSolns@fileName{#2}%
- \gdef\exerSolns@ReturnPath{#1}}
-\let\exerSolns@ExtFile\eq@NO
-\def\exerSolns@ReturnPath{}
-\let\marginparpriorhook\@empty % used to material before the exercise
-\let\marginparafterhook\@empty % used to material after the exercise
-\let\afterlabelhskip\space
-\let\exersolnheadhook\@empty
-\let\exer@solnheadhook\@empty
-\newcommand{\eqexheader}
-{%
- \ifeq@nolink % no link to solution
- \mbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
- \exlabelformat\fi}%
- \else
- \if\exerSolns@ExtFile\eq@YES
- \mbox{\href{\eq@exerSolns@fileName\#ex.\the@exno}%
- {\exlabelformat}}%
- \else
- \mbox{\hyperlink{ex.\the@exno}{\exlabelformat}}%
- \fi
- \fi
-}
-\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
-\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
-\partsformat{(\hfil\thepartno\hfil)}
-\newcommand{\defaultpartsformat}{%
- \partsformat{(\hfil\thepartno\hfil)}}
-\let\exlisttabheaderpriorhook\@empty
-\let\exlisttabheaderafterhook\@empty
-\newcommand{\eqexlisttabheader}
-{%
- \exlisttabheaderpriorhook
- \ifeq@nolink
- \color{\@nolinkcolor}\eq@partsformat
- \else
- \if\exerSolns@ExtFile\eq@YES
- \href{\eq@exerSolns@fileName\#ex.\the@exno\thepartno}%
- {\eq@partsformat}%
- \else
- \hyperlink{ex.\the@exno\thepartno}{\eq@partsformat}%
- \fi
- \fi
-}
-\newcount\cq@Cnt
-\def\cq@CutName{cq-\the\cq@Cnt.cut}
-\let\cq@star\eq@NO
-\newif\ifcqqs \cqqstrue
-\newif\ifcqIsActive \cqIsActivefalse
-\def\cqQS{\@ifstar{\cqQSV}{\cqQSA}}
-\def\cqQSA#1#2{\ifcqqs#1\else#2\fi}
-\@ifpackageloaded{web}{\@ifundefined{IF@AorBswitch}{%
- \PackageWarningNoLine{A version of the web package
- dated\MessageBreak 2016/11/03 or later is required
- for \string\cqQS}}}{}%
-\@ifundefined{webtempboxi}{\newbox\webtempboxi
- \newbox\webtempboxii}{}
-\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
-\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
-\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
-\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
- \afterassignment\TRUEACTIONia\fi
- \setbox\webtempboxi=\hbox}
-\providecommand\SETTEMPBOXii{\IF@AorBswitch
- \afterassignment\FALSEACTIONiia\fi
- \setbox\webtempboxii=\hbox}
-\def\cqQSV{\let\IF@AorBswitch\ifcqqs
- \IF@AorBswitch
- \def\eq@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
- \def\eq@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
- \eq@next}
-\def\eq@turnMessageOff{\let\save@message\message
- \let\message\@gobble}
-\def\eq@turnMessageOn{\let\message\save@message}
-\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
- \includecomment{sPage}\excludecomment{qPage}%
- \eq@turnMessageOn}
-\def\eqTopOfSolnPage{\cqSAfalse
- \eqCQDeclarations}
-\eq@turnMessageOff
-\includecomment{qPage}\excludecomment{sPage}
-\eq@turnMessageOn
-\def\writecqQSfalse{\writeToExSolns{\protect\eqTopOfSolnPage}}
-\AtBeginDocument{\writecqQSfalse}
-\newenvironment{cq@CQ}
-{%
- \global\cqIsActivetrue
- \global\advance\cq@Cnt1\relax
- \immediate\openout\CommentStream=\cq@CutName
- \let\verbatim@out\CommentStream
- \verbatimwrite
-}{%
- \endverbatimwrite
- \immediate\closeout\CommentStream
- \ifx\cq@star\eq@YES
- \xdef\cq@INPUTCUT{\noexpand\cqqstrue
- \noexpand\input{\cq@CutName}\noexpand
- \def@QuesToSoln}\else
- \xdef\cq@INPUTCUT{\noexpand\cqqstrue
- \noexpand\input{\cq@CutName}\noexpand
- \p@ssQuesToSoln}\fi
- \aftergroup\cq@INPUTCUT
-}
-\newenvironment{cqs@CQ}{\let\cq@star\eq@YES\cq@CQ}{\endcq@CQ}
-\def\declCQQuesStr#1{\def\cqQStr{#1}}
-\declCQQuesStr{Question}
-\def\declCQSolStr#1{\def\cqSStr{#1}}
-\declCQSolStr{Solution}
-\newcommand\declCQPre[1]{\def\cq@Pre{#1}}
-\declCQPre{\emph{\cqQStr}:\space}
-\newcommand\declCQPost[1]{\def\cq@Post{#1}}
-\declCQPost{\par\medskip\noindent\emph{\cqSStr}:\space\ignorespaces}
-\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}
-\def\declCopyQues#1{\def\cqCopiedQues{#1}}
-\def\def@QuesToSoln{\restoreNormalSolns
- \global\terminexchangedfalse % dps cq
- \ifeq@hidesolution\else\writeToExSolns{\protect
- \declCopyQues{\protect\input{\cq@CutName}}}\fi}
-\newcommand\restoreNormalSolns{%
- \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
-\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
-\let\eq@@CommonCmd\@empty
-\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
-\let\gEx@CommonCmd\@empty
-\let\endexerhook\@empty
-\newenvironment{exercise}
-{%
- \let\cq\cq@CQ\let\endcq\endcq@CQ
- \csarg\let{cq*}\cqs@CQ
- \csarg\let{endcq*}\endcqs@CQ
- \par\removelastskip\eq@priorexskip\noindent
- \let\eqCommonCmd\eq@CommonCmd
- \def\eq@argi{eqexno}%% use eqexno counter
- \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
- \def\currhideopt{x}%
- \@ifnextchar[{\exercise@}%
- {\if\exerstar*\def\eq@next{\@exercise}\else
- \def\eq@next{\exercise@@}\fi\eq@next}%
-}{\eq@postexerciseHook\endexerhook\par
- \global\eq@exerciseheadingtrue\removelastskip\eq@exerskip}
-\def\exercise@[#1]{\edef\eq@arg{#1}%
- \if\eq@arg h\def\currhideopt{h}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse\fi
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \if\eq@arg H%
- \edef\currhideopt{\Hidesymbol}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse
- \fi
- \def\eq@next{\@exercise}% H, no *, no counter
- \else
- \def\currhideopt{x}%
- \ifx\eq@arg\@empty\else\def\eq@argi{#1}\fi
- \if\exerstar*\def\eq@next{\@exercise}\else
- \def\eq@next{\exercise@@}\fi
- \fi
- \fi
-\eq@next}
-\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}{\exercise@@@}}
-\def\exercise@@@{\@ifnextchar[{\exercise@@@@}{\@exercise}}
-\def\exercise@@@@[#1]{\edef\eq@arg{#1}%
- \if\eq@arg h\def\currhideopt{h}%
- \eq@hidesolutiontrue\eq@nolinktrue
- \ifeq@globalshowsolutions
- \eq@hidesolutionfalse\eq@nolinkfalse\fi
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \if\eq@arg H\edef\currhideopt{\Hidesymbol}%
- \eq@hidesolutiontrue\eq@nolinktrue%
- \def\eq@next{\@exercise}% h, no *, no counter
- \else
- \def\currhideopt{x}%
- \PackageWarning{exerquiz}{The option #1 is not recognized}
- \let\eq@next\relax
- \fi
- \fi
-\eq@next}
-\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
-\let\prior@exerSolnHeaderHook\@empty
-\newcommand\exerSolnHeader[3]{%
- \prior@exerSolnHeaderHook
- \ifeqforpaper\else\webnewpage\fi\markright{#1}%\par\noindent%
- \noindent\hypertarget{#2}{#3}\relax
- \solnhspace
-}
-\let\solnItemMngt\relax
-\let\eqEXt\@gobbletwo
-\let\endeqEXt\relax
-\let\eqExtArg\@empty
-\let\eqFilterArg\@empty
-\let\eqExerSolnHeader\@empty
-\let\solutionparshape\@empty
-\def\eq@pslnaindnt{0pt}
-\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
-}
-\newif\if@restorejustify \@restorejustifyfalse
-\newcommand\restoreJustifyOn{\@restorejustifytrue}
-\newcommand\restoreJustifyOff{\@restorejustifyfalse}
-\def\restorejustify{\if@restorejustify
- \@rightskip\z@skip \rightskip\@rightskip
- \leftskip\z@skip \let\\\@normalcr\fi}
-\def\@exercise{%
- \global\let\solutionparshape\@empty
- \let\verbatim@out=\ex@solns
- \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
- \if\exerstar*% if exercise with parts
- \eq@nolinktrue
- \else
- \if\currhideopt H%
- \else
- \ifeq@solutionsafter
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide %
- \ifeq@hidesolution\else
- \global\let\eqExerSolnHeader\eq@@writeexheader
- \fi
- \fi
- \fi
- \fi
- \ifvmode\ifdim\lastskip>\z@
- \vskip-\lastskip
- \fi\fi
- \if\exerstar*%
- \let\solution\solnexer@woparts
- \let\endsolution\endsolnexer@woparts
- \let\parts\exercise@parts
- \let\endparts\endexercise@parts
- \else
- \let\solution\solnexer@woparts
- \let\endsolution\endsolnexer@woparts
- \let\parts\relax
- \let\endparts\relax
- \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
- \eq@nolinktrue\fi\fi
- \fi
- \eq@initializeContAnnot
- \ifeq@exerciseheading
- \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
- \afterlabelhskip\marginparafterhook\gEx@CommonCmd
- \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}
-\def\eqExerSolnHeaderSngl{%
- \ifmakeExSlLocal\protect\begingroup^^J\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
-}
-\def\eqExerSolnHeaderList{%
- \ifmakeExSlLocal\protect\begingroup^^J\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
-}
-\long\def\setsolnspace#1{\def\newsolnspace{#1}%
- \let\solnspace\newsolnspace}
-\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
-\def\ckSolnOpt{\global\eq@ckSolnVspacetrue}
-\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
-\let\solnhspace\space
-\let\solnspace\space
-\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}%]
- {\solnexer@@woparts[\null]}}\else
- \def\eq@next{\solnexer@@woparts[\null]}\fi
- \eq@next
-}
-\let\eqPriorVspace\@gobble
-\newif\if@eqlinedfiller \@eqlinedfillerfalse
-\newcommand{\vspaceFiller}[1]{\vfill}
-\newcommand{\vspaceFillerDefault}[1]{\vfill}
-\def\eqWriteLine{\hfill}
-\def\eq@linesXPgs{%
- \begingroup\offinterlineskip\parskip0pt
- \@tempcnta=0
- \@whilenum\@tempcnta<\soln@keys@nLines\relax\do
- {\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
- \advance\@tempcnta1\relax}\par\endgroup
-}
-\let\leavevspace\relax % dpsj5
-\newcommand{\vspaceFmt}[1]{%
- \ifx\solutionparshape\@empty\else
- \advance\linewidth-\leadinIndentPrtSep\fi
- \ifdim\sameVspace>0pt
- \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 % dpsj6
- \fi
-}
-\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
-\let\soln@keys@nLines\@empty
-\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
-\def\eqSolnForEqexam#1{%
- \let\soln@keys@nLines\@empty
- \setkeys*{soln@keys}{#1}%
- \ifx\soln@keys@nLines\@empty
- \ifx\minVspacet@bs\@empty\xdef\sameVspace{\XKV@rm}\else
- \xdef\sameVspace{\minVspacet@bs}\fi
- \else
- \@tempdima\wlVspace
- \@tempdima=\soln@keys@nLines\@tempdima
- \xdef\sameVspace{\the\@tempdima}%
- \ifx\XKV@rm\@empty\else
- \if@equsedim\let\soln@keys@nLines\@empty
- \xdef\sameVspace{\XKV@rm}\fi
- \fi
- \fi
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
-}
-\def\solnexer@@woparts[#1]{%
- \ifcqIsActive\else\ifterminexchanged
- \restoreNormalSolns\fi\fi % dps cq
- \global\cqIsActivefalse
- \def\eq@argi{#1}\def\eq@null{\null}%
- \ifx\eq@argi\@empty\gdef\sameVspace{0pt}\else
- \ifx\eq@argi\eq@null\gdef\sameVspace{0pt}\else
- \@ifundefined{PointsOnLeft}{%
- \let\eqKV@errx@SAVE\KV@errx
- \let\KV@errx\eqKV@errx\let\XKV@rm\@empty
- \edef\temp@exp{\noexpand\setkeys*{soln@keys}{#1}}\temp@exp
- \let\KV@errx\eqKV@errx@SAVE
- \ifx\soln@keys@nLines\@empty\else
- \PackageInfo{exerquiz}{%
- nLines key detected in solution environment,\MessageBreak
- is not not recognized without eqexam,\MessageBreak
- will remove it}%
- \let\soln@keys@nLines\@empty\fi
- \xdef\sameVspace{\XKV@rm}%
- }{\eqSolnForEqexam{#1}}%
- \fi\fi
- \solnexer@@@woparts
-}
-\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
- \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{%
- \xdef\eq@startSoln{\the\pagetotal}%
- \eqe@debugVertSkip{\marginpar{\smash{b[\sameVspace]}}}%
-}
-\let\eqSavedComment\comment
-\let\eqSavedEndCommet\endcomment
-\def\setTabulrSolnEnv{%
- \@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
- \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
- \leftmargin\leftmarginii \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep}%
- \def\everyparShape{\everypar{\parshape \@ne 0pt \linewidth}}%
- \reset@doendpe{\parshape \@ne 0pt \linewidth}%
- \parshape \@ne 0pt \linewidth
- \everyparShape
-}
-\newif\ifthereissolution
-\let\priorexsolafterList\@empty
-\let\priorexsolafterTab\@empty
-\let\priorexsolafterSngl\@empty
-\def\eq@Hid{H}\def\eq@hid{h}
-\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}% dpsj4
-\let\eq@b@ddCodeSpecial\eq@b@ddCodeSpecialDef % dpsj4
-\def\solnexer@@@woparts{\ifeq@solutionsafter\else
- \expandafter\begingroup\fi %dpsj10
- \global\thereissolutiontrue
- \global\let\procsoln\relax % dpsj6
- \global\let\endprocsoln\relax % dpsj6
- \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
- \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
- \let\procsoln\relax % dpsj6
- \let\endprocsoln\relax
- \removelastskip\removelastparskip
- \cqSAtrue\eqCQDeclarations
- \declCopyQues{\input{\cq@CutName}}%
- \ifx\exsolafter\@empty
- \ifdim\sameVspace=0pt\eqe@setStartSolns
- \else
- \solutionsafterSkip
- \@@solnafterSkipOnce % dpsj3
- \eqe@setStartSolns
- \fi
- \else\par\kern0pt
- \solutionsafterSkip
- \@@solnafterSkipOnce % dpsj3
- \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
- }%
- \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
-\def\ReturnTo#1#2{\eq@fititin{\hyperlink{#1}{#2}}}
-\def\xReturnTo#1#2{\eq@fititin{\href{#1}{#2}}}
-\newcommand\eqExerSolnTrailer{%
- \if\exerSolns@ExtFile\eq@YES\protect\xReturnTo
- {\exerSolns@ReturnPath\jobname\#qex.\the@exno}%
- \else\protect\ReturnTo{qex.\the@exno}\fi
- {\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
- \exrtnlabelformat\fi}}%
- \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-}
-\let\eq@e@ddCodeSpecialDef\relax % dpsj4
-\let\eq@e@ddCodeSpecial\eq@e@ddCodeSpecialDef % dpsj6
-\let\kdvsp@Restore\relax % dpsj20
-\def\endsolnexer@woparts{\endprocsoln\eq@e@ddCodeSpecial
- \pkg@endsolnexerhook % djsj8 moved from the end of the macro
- \ifeq@solutionsafter\else
- \expandafter\endgroup\fi % from \begingroup at \solnexer@@@woparts
- \global\let\exsolnonceonlytophook\relax
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi % dpsj5
- \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 % dpsj9
- \if\exerstar*%
- \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
- \eq@fititin{\mbox{\exrtnlabelformat}}\fi
- \ifx\istabularexer\eq@YES\unskip\kern0pt\else\par\fi % dpsj6
- \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
- \let\verbatim@out\ex@solns
- \set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnTrailer}%
- \set@typeset@protect
- \fi
- \fi
- \fi
- \kdvsp@Restore % dpsj20
- \endsolnexerhook\penalty0\relax}
-\let\eq@exerstarEnv\relax
-\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
-{\endexercise}
-\def\exerwparts@cols{0}
-\let\topofpartshook\relax
-\let\@listiiredefined\eq@NO
-\let\itsExerParts\eq@NO
-\newif\if@tableadinitem\@tableadinitemfalse
-\newcommand{\tableadin@external}{\PackageError{exerquiz/eqexam}
- {The \string\tableadin\space command is designed\MessageBreak
- for the problem* environment of eqexam}{Use \string\tableadin\space
- in the problem* environment of eqexam.}%
-}
-\let\tableadin\tableadin@external
-\newcommand{\eq@tableadinparts}{\item\relax
- \PackageError{exerquiz/eqexam}{The \string\tableadin\space
- command is not allowed in the\MessageBreak
- parts environment}{Use \string\tableadin\space
- in the problem* environment of eqexam.}%
-}
-\let\istabularexer\eq@NO
-\def\exercise@parts{\let\rlspar\relax
- \ifx\solutionparshape\@empty
- \let\isitleadin\eq@NO
- \if@tableadinitem\let\rlspar\@gobbletwo\fi
- \else\let\isitleadin\eq@YES\fi
- \rlspar\removelastskip\par
- \if\isitleadin\eq@YES
- \def\eqparts@topsep{0pt}%
- \vskip\eqparts@itemsep\relax\fi
- \topofpartshook
- \let\itsExerParts\eq@YES
- \global\let\@listiiredefined\eq@NO
- \def\exerwparts@cols{0}\@ifnextchar[%
- {%
- \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}
-\newcommand{\setPartsWidth}[1]{\def\parts@indent{\normalfont#1}%
- \bgroup\settowidth{\eq@tmpdima}{\parts@indent}%
- \xdef\widthOfParts{\the\eq@tmpdima}\egroup}
-\setPartsWidth{(d)}
-\def\eqe@prtsepPrb{\ }
-\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
-\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
-\eqequesparsep{0pt}
-\let\prior@parts@hook\@empty
-\let\post@parts@hook\@empty
-\let\abovepartshook\@empty
-\let\belowpartshook\@empty
-\let\eqp@rtc@lcm@rk\relax
-\let\eq@insertContAnnot\relax
-\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
- \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
- \@ifnextchar[{\@ckhide}{\eq@item}}
-\newcommand{\partsitemsep}[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@itemsep{\the\@tempdima}}}
-\let\eqpartsitemsep\partsitemsep
-\def\eqparts@itemsep{0pt}
-\newcommand\partsparsep[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@parsep{\the\@tempdima}}}
-\def\eqparts@parsep{0pt}
-\newcommand\partstopsep[1]{{%
- \setlength{\@tempdima}{#1}%
- \xdef\eqparts@topsep{\the\@tempdima}}}
-\def\eqparts@topsep{3pt}
-\newcommand{\leadinitem@external}{\PackageError{exerquiz/eqexam}
- {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.}%
-}
-\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.}%
-}
-\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
-\def\eq@handleOptArgi{\expandafter
- \eq@item@latex\eq@optArg\exlisttabheaderafterhook}
-\newif\ifwithinparts
-\let\ex@listtabheader@fterhook\@empty
-\newenvironment{exercise@parts@list}{%
- \settowidth{\eq@tmplength}{\parts@indent}%
- \edef\widthOfParts{\the\eq@tmplength}%
- \eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
- \abovepartshook\list{\normalfont
- \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
- \eq@nolinktrue\fi\fi
- \if\currhideopt H%
- \else
- \ifeq@solutionsafter
- \eq@nolinktrue % no link to solution
- \else
- \ifeq@nosolutions
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide
- \ifeq@hidesolution\eq@nolinktrue\else
- \global\let\eqExerSolnHeader\eq@@writeexheaderlist
- \fi
- \fi
- \fi
- \fi
- \makebox[\widthOfParts][r]{\eqexlisttabheader}%
-}{%
- \usecounter{partno}%
- \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
- \setlength{\topsep}{\eqparts@topsep}%
- \setlength{\parskip}{0pt}%
- \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
- \ifdim\eqeques@parsep=0pt
- \setlength{\parsep}{\eqparts@parsep}%
- \else
- \setlength{\parsep}{\eqeques@parsep}%
- \fi
- \setlength{\itemsep}{\eqparts@itemsep-\parsep}%
- \setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \settowidth{\labelsep}{\normalfont\eqe@prtsepPrb}%
- \addtolength{\labelsep}{\eq@extralabelsep}%
- \settowidth{\labelwidth}{\parts@indent}%
- \setlength{\leftmargin}{\labelwidth}%
- \addtolength{\leftmargin}{\labelsep}%
- \let\eq@item@latex\item
- \def\eq@item{\@ifnextchar[{\eq@handleOptArg}
- {\eq@item@latex\ex@listtabheader@fterhook
- \exlisttabheaderafterhook}}%
- \def\eqthisenv{parts}\withinpartstrue
- \def\item{\ifx\@currenvir\eqthisenv
- \def\eq@next{\eq@item@common}\else
- \def\eq@next{\eq@item}\fi
- \eq@next}%
-}}{\endlist\global\let\leadinitem\leadinitem@external
- \post@parts@hook\belowpartshook}
-\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
- {\global\let\eqeCurrProb\relax}
- {\xdef\eqeCurrProb{\theeqquestionnoi}}%
- \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
-\def\minVspacetabs#1{\def\minVspacet@bs{#1}}
-\def\priorexsolafterTab{\ifkeepdeclaredvspacing
- \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
- \priorexsolafterTab@cont\fi\fi\fi}
-\def\priorexsolafterTab@cont{\let\exsolafter@save\exsolafter
- \let\exsolafter\@empty
- \makebox[0pt][r]{\parbox[t][\minVspacet@bs][t]{0pt}
- {\strut\hfill\vfill\strut}}%
- \minipage[t]{\linewidth}\exsolafter@save}
-\def\pkg@endsolnexerhook{\ifkeepdeclaredvspacing
- \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
- \endminipage\fi\fi\fi}
-\def\exercise@parts@tabular@[#1]{%
- \inittabMark
- \let\eq@insertContAnnot\relax
- \let\exerwparts@cols\@empty
- \setkeys*{tabp@rts}{#1}\ifx\exerwparts@cols\@empty
- \edef\exerwparts@cols{\XKV@rm}\fi
- \ifx\minVspacet@bs\@empty\keepdeclaredvspacingfalse\fi
- \let\istabularexer\eq@YES
- \@tempcnta\exerwparts@cols\relax
- \ifnum\@tempcnta<2\relax
- \PackageError{exerquiz}{%
- The number of columns for parts\MessageBreak
- needs to be an integer greater than 1}
- {Enter an integer, 2 or larger}\fi
- \exercise@parts@tabular}
-\newcount\eq@extabColCnt
-\def\autotabOn{\let\eq@tabMarkChk\relax%
- \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOn}}
-\def\autotabOff{\let\eq@tabMarkChk\@gobble
- \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOff}}
-\autotabOff
-\def\inittabMark{\global\eq@extabColCnt=0 }
-\def\resettabMark{\global\eq@extabColCnt=1 }
-\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
- \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
- \expandafter\eq@atnext\fi}
-\def\eq@tabMark{%
- \ifnum\eq@extabColCnt=0\relax
- \global\advance\eq@extabColCnt1\relax
- \let\eq@next\relax
- \else
- \ifnum\eq@extabColCnt=1\relax
- \let\eq@next\relax
- \else
- \ifnum\eq@extabColCnt>\exerwparts@cols
- \let\eq@next\autotabnewline
- \else\def\eq@next{&}\fi
- \fi
- \fi
- \eq@next
- \global\advance\eq@extabColCnt1\relax
-}
-\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
-\partstabcolsep{1.5pt}
-\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
-\partstabtopsep{3pt}
-\def\eq@vpartstabtopsep{\vskip\eq@partstabtopsep\relax}
-\newcommand\partstabrowsep[1]{\setlength{\@tempdima}{#1}%
- \edef\eqparts@tabrowsep{\the\@tempdima}}
-\partstabrowsep{0pt}
-\newenvironment{exercise@parts@tabular}{%
- \setcounter{partno}{0}%
- \def\tablrIndent{\hglue\prtsIndntSep\relax}%
- \if\isitleadin\eq@YES
- \if$\the\everypar$\let\tablrIndent\relax\fi
- \setcounter{partno}{1}\fi
- \let\leadinitem\eq@leadinitemparts
- \let\tableadin\eq@tableadinparts
- \global\let\solutionparshape\@empty
- \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}%
- \sbox{\eq@tmpbox}{\parts@indent}%
- \let\eq@item@latex\item
- \let\eq@item\item@part@tabular
- \def\eqthisenv{parts}\withinpartstrue
- \def\item{\ifx\@currenvir\eqthisenv
- \def\eq@next{\eq@tabMarkChk\eq@tabMark\eq@item@common}\else
- \def\eq@next{\eq@item@latex}\fi
- \eq@next}\eq@nolinkfalse
- \@ifundefined{@xtabularcr}{\let\@xarraycr\eq@xtabularcr}
- {\let\@xtabularcr\eq@xtabularcr}%
- \eq@tmpdima=\linewidth
- \advance\eq@tmpdima-\prtsIndntSep\relax
- \@tempcnta\exerwparts@cols\relax
- \advance\@tempcnta-1\relax
- \multiply\@tempcnta2\relax
- \@tempdima\prtsIndntSep\relax
- \divide\@tempdima 2\relax
- \edef\halfWidth{\the\@tempdima}%
- \advance\@tempdima\eq@partstabcolsep\relax
- \tabcolsep\@tempdima
- \multiply\@tempdima\@tempcnta
- \advance\eq@tmpdima-\@tempdima
- \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
- \parskip\eqeques@parsep\relax
- \parindent0pt\relax\strut}p{\eq@tmpdima}}@{\hidewidth}}%
-}{\endtabular\kern0pt
- \@ifundefined{@listii@SAVE}{}{\global\let\@listii\@listii@SAVE
- \global\let\@listii@SAVE\relax}%
- \post@parts@hook\belowpartshook
- \aftergroup\eqe@innermarkpts
- \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
- \eq@nolinktrue % no link to solution
- \else
- \eq@ckglobalhide
- \ifeq@hidesolution\eq@nolinktrue\else
- \gdef\eqExerSolnHeader{\eq@@writeexheaderlist}%
- \fi\fi\fi
- \if@restorejustify\restorejustify\else\PBS\raggedright\fi
- \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}%
- \sbox{\eq@tmpbox}{\parts@indent}%
- \eq@tmpdima=\wd\eq@tmpbox
- \addtolength\eq@tmplength{\eq@extralabelsep}%
- \xdef\partshangamount{\the\eq@tmplength}%
- \parshape \@ne 0pt \linewidth
- \everypar{\parshape \@ne 0pt \linewidth}%
- \eq@setPrbSolnAftrIndnt
- \makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
- \ex@listtabheader@fterhook
- \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\tabControlOn{\@ifundefined{@xtabularcr}
- {\let\save@@xtabularcr\@xarraycr}
- {\let\save@@xtabularcr\@xtabularcr}}
-\def\tabControlOff{\@ifundefined{@xtabularcr}
- {\let\@xarraycr\save@@xtabularcr}
- {\let\@xtabularcr\save@@xtabularcr}}
-\AtBeginDocument{\tabControlOn}
-\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
- {\eqe@tab@parts@rowsep}}%
-\def\eqe@tab@parts@rowsep{\save@@xtabularcr
- \noalign{\expandafter\kern\eqparts@tabrowsep}}%
-\define@key{exEnum}{labelwidthTo}[\normalsize\normalfont\bfseries00.\ ]%
- {\def\exE@labelwidthTo{#1}}
-\define@key{exEnum}{labelwidth}[\@empty]{\def\exE@labelwidth{#1}}
-\let\exE@labelwidth\@empty
-\define@key{exEnum}{topsep}[3pt]{\def\exE@topsep{#1}}
-\define@key{exEnum}{parsep}[3pt]{\def\exE@parsep{#1}}
-\define@key{exEnum}{itemsep}[0pt]{\def\exE@itemsep{#1}}
-\define@key{exEnum}{labelsep}[\normalsize\normalfont\ ]%
- {\settowidth{\@tempdima}{#1}\edef\exE@labelsep{\the\@tempdima}}
-\define@key{exEnum}{continue}[]{\let\eq@ExEnumResetCnt\@empty}
-\def\eq@ExEnumResetCnt{\setcounter{questionno}{0}}
-\setkeys{exEnum}{labelwidthTo,topsep,parsep,itemsep,labelsep}%
-\newenvironment{exEnumerate}[1][]{\everypar{}%
- \toks@=\expandafter{#1}%
- \edef\tempexp{\noexpand\setkeys{exEnum}{\the\toks@}}\tempexp
- \eq@ExEnumResetCnt
- \let\afterlabelhskip\@empty
- \let\solnhspace\@empty
- \aboveexskip{0pt}\belowexskip{\exE@parsep}%\belowexskip{0pt}%
- \def\eqexheader@wrapper{\makebox[0pt][r]{%
- \hypertarget{qex.\the@exno}{\eqexheader}\hspace{\labelsep}}}%
- \def\exbookmarkfmt{\thequestionno.\space}
- \def\partbookmarkfmt{(\thepartno)\space}
- \def\setENum{\Elabel\if\exerstar*\thequestionno(\thepartno)\else
- \thequestionno\fi}%
- \ifExSolutionsSet\else
- \writeToExSolns{^^J\protect\begin{exEnumerate}^^J}\fi
- \list{}{%
- \ifx\exE@labelwidth\@empty
- \settowidth{\labelwidth}{\exE@labelwidthTo}\else
- \setlength{\labelwidth}{\exE@labelwidth}\fi
- \setlength{\topsep}{\exE@topsep}%
- \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
- \setlength{\parsep}{\exE@parsep}%
- \setlength{\itemsep}{\exE@itemsep}%
- \setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{0pt}%
- \setlength{\itemindent}{0pt}%
- \settowidth{\labelsep}{\normalfont\ }%
- \setlength{\leftmargin}{\labelwidth}%
- }\item\relax}{\ifExSolutionsSet\else
- \writeToExSolns{\protect\end{exEnumerate}^^J}\fi
-\endlist}
-\newenvironment{enumex}{%
- \renewcommand\exlabelformat{\textbf{\thequestionno.}}%
- \renewcommand\exsllabelformat
- {\protect\makebox[0pt][r]{\protect\textbf{\thequestionno.\ }}}%
-\begin{exercise}[questionno]}{\end{exercise}}
-\newenvironment{enumex*}{%
- \renewcommand\exlabelformatwp{\textbf{\thequestionno.}}%
- \renewcommand\exsllabelformatwp
- {\protect\makebox[0pt][r]{\protect\textbf{\thequestionno.}\ }%
- \protect\textbf{(\thepartno)}\ }%
-\begin{exercise*}[questionno]}{\end{exercise*}}
-\def\includeexersolutions{\@ifstar
- {\let\resetEXsolns\relax\includeexersolutionsi}
- {\def\resetEXsolns{\global\let\include@solutions\relax}%
- \includeexersolutionsi}%
-}
-\newcommand{\includeexersolutionsi}[1][]{%
- \filterFor{#1}\includeexersolutionsii
-}
-\def\includeexersolutionsii{%
- \if\exerSolns@ExtFile\eq@NO
- \include@solutions
- \resetEXsolns
- \let\eqFilterArg\@empty
- \fi
-}
-\long\def\gobbleToEndEXt#1\endeqEXt{%
- \ifeqforpaper\expandafter\@gobbletwo\fi}
-\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
-\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
- \else\expandafter\gobbleToEndEXt\fi}
-\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
-\let\eqsolutionshook\@empty
-\let\eq@solutionshook\@empty
-\let\priorexsectitle\@empty
-\let\priorexslinput\@empty
-\def\exerSolnsHeadnToc{\section*{\exsectitle}%
- \addcontentsline{toc}{section}{%
- \@ifundefined{web@latextoc}{}{%
- \ifx\web@latextoc\eq@YES\else
- \protect\numberline{}\fi}\exsectitle}}
-\@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}}
- {\let\eq@normallheader\relax}
-\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
- {\let\eq@defaultlheader\relax}
-\newif\ifExSolutionsSet \ExSolutionsSetfalse
-\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{\global\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
- \fi
-}
-\def\include@solutions{%
- \if\exerSolns@ExtFile\eq@NO
- \exerSolnInput
- \fi
-}
-\let\eqexpdfentry=0
-\let\eq@postexerciseHook\relax
-\def\eq@postexerciseHook@BM{%
- \xdef\Hy@currentbookmarklevel{\eq@currentbookmarklevel}}
-{\count0=\value{tocdepth}
-\advance\count0by2 \xdef\eqbmkmrkdepth{\the\count0}}
-\@ifundefined{Hy@bookmarksdepth}
- {\setcounter{tocdepth}{\eqbmkmrkdepth}}
- {\hypersetup{bookmarksdepth=\eqbmkmrkdepth}}
-\newcommand{\exbookmarkfmt}{\exlabel\space\theeqexno.\space}
-\newcommand{\partbookmarkfmt}{(\thepartno)\space}
-\newcommand{\expdfbookmark}[1]{\relax
- \def\expdfbookmarktitle{#1}%
- \ifx\eq@postexerciseHook\relax
- \let\eq@postexerciseHook\eq@postexerciseHook@BM
- \else
- \let\eq@postexerciseHook@save\eq@postexerciseHook
- \def\eq@postexerciseHook@BM@plus{\eq@postexerciseHook@save
- \eq@postexerciseHook@BM}%
- \let\eq@postexerciseHook\eq@postexerciseHook@BM@plus
- \fi
- \if\exerstar*%
- \if\eqexpdfentry0\let\eqexpdfentry=1
- \xdef\eq@currentbookmarklevel{\Hy@currentbookmarklevel}%
- \def\eqex@next{\subpdfbookmark{\exbookmarkfmt#1}%
- {qex.\the@exno}}%
- \else
- \def\eqex@next{\belowpdfbookmark{\partbookmarkfmt#1}%
- {qex.\the@exno.\thepartno}}%
- \fi
- \else
- \xdef\eq@currentbookmarklevel{\Hy@currentbookmarklevel}%
- \def\eqex@next{\subpdfbookmark{\exbookmarkfmt#1}%
- {qex.\the@exno}}%
- \fi
- \eqex@next\ignorespaces
-}
-\ifeq@noforms\endinput\fi
-\definecolor{webgreen}{rgb}{0,.6,0}
-\newcommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
-\proofingsymbolColor{red}
-\let\@proofsymbolredefined=0
-\newcommand{\proofingsymbol}[1]{\let\@proofsymbolredefined=1%
- \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
-\def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{\ding{52}}}
-\def\setproofingsymbol{%
- \if\@proofsymbolredefined1\else
- \@ifpackageloaded{pifont}{\proofingsymbol{\ding{52}}}
- {\proofingsymbol{$\bullet$}}\fi
-}
-\AtBeginDocument{\setproofingsymbol}
-\newcommand{\prior@questionsHook}{}
-\let\qMark@Hook\@empty
-\let\aebtitleQuiz\@empty
-\newcommand{\post@questionsHook}{}
-\newcommand{\quesNumColor}[1]{\def\eq@quesNumCol{#1}}
-\quesNumColor{blue}
-\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
-\newcommand{\labeleqquestionnoi}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoi.}
-\renewcommand\theeqquestionnoii{(\alph{eqquestionnoii})}
-\newcommand{\labeleqquestionnoii}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoii}
-\renewcommand\theeqquestionnoiii{(\roman{eqquestionnoiii})}
-\newcommand{\labeleqquestionnoiii}{%
- \color{\eq@quesNumCol}\bfseries\theeqquestionnoiii}
-\define@key{props@ques}{labelwidthTo}%
- [\normalsize\normalfont\bfseries00.]%
- {\def\propQ@labelwidthTo{#1}}
-\define@key{props@ques}{labelwidth}[]{\def\propQ@labelwidth{#1}}
-\let\propQ@labelwidth\@empty
-\define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}}
-\define@key{props@ques}{partopsep}[\the\partopsep]%
- {\edef\propQ@partopsep{#1}}
-\define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}}
-\define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}}
-\define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]%
- {\def\propQ@labelsepTo{#1}}
-\define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}}
-\let\propQ@labelsep\@empty
-\define@key{props@ques}{color}[blue]{\quesNumColor{#1}}
-\setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,%
- itemsep,labelsepTo,color}%
-\newenvironment{questions}[1][]
-{%
- \ifnum\@eqquestiondepth>\tw@\@toodeep\else
- \advance\@eqquestiondepth\@ne\fi
- \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
- \toks@=\expandafter\expandafter\expandafter{#1}\expandafter
- \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}%
- \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp
- \list{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
- \global\let\eqQT\eq@na%
- {\@tempcnta=0 \let\@thispr@b\@empty
- \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne
- \ifx\@thispr@b\@empty\edef\@thispr@b{%
- \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else
- \edef\@thispr@b{\@thispr@b%
- \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi
- }\xdef\@currentQues{\@thispr@b}}%
- \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}%
- \xdef\eq@pageThisQ{\the\c@page}%
- \post@questionsHook}{\usecounter{\@quesctr}%
- \ifx\propQ@labelsep\@empty
- \settowidth{\labelsep}{\propQ@labelsepTo}\else
- \setlength{\labelsep}{\propQ@labelsep}\fi
- \ifx\propQ@labelwidth\@empty
- \settowidth{\labelwidth}%
- {\propQ@labelwidthTo\hspace{\labelsep}}\else
- \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}%
- \hspace{\labelsep}}\fi
- \setlength{\topsep}{\propQ@topsep}%
- \setlength{\partopsep}{\propQ@partopsep}%
- \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
- \setlength{\parsep}{\propQ@parsep}%
- \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}}
-\def\popquestions{%
- \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}}
-\abovesqskip{\par\medskip}
-\long\def\endsqhook#1{\def\sq@afterhook{#1}}
-\endsqhook{}
-\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}%
-}{\aeb@endshortquiz}
-\newenvironment{shortquiz*}
-{%
- \xdef\eq@pageThisQ{\the\c@page}%
- {\count0=\@shortquizCnt\advance\count0by1\relax
- \xdef\@shortquizCnt{\the\count0 }}%
- \sqForms\@shortquiz
-}{\aeb@endshortquiz}
-\def\@shortquiz{\@ifnextchar[%
- {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
-\def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty
- \protected@edef\@currentlabelname{#1}\else
- \protected@edef\@currentlabelname{\@currentlabelname}\fi
-}
-\let\isQZ=q \let\isSQZ=s
-\def\sq@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{}
- \S{S}\textSize{0}\Ff{\FfReadOnly}
- \AA{\AAFormat{%
- var \oField=new Object;\r
- \oField.Grp={};
- \ifx\defaultColorJSLoc\@empty\else\r
- \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi
- \ifx\rghtColorJSLoc\@empty\else\r
- \oField.RightColorJSLoc=\rghtColorJSLoc;\fi
- \ifx\wrngColorJSLoc\@empty\else\r
- \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi
- \ifx\rghtAnsSymbJSLoc\@empty\else\r
- \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi
- \ifx\wrngAnsSymbJSLoc\@empty\else\r
- \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi
- }}]{sqID\oField}{0bp}{0bp}}%
-}
-\def\qz@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{}
- \S{S}\textSize{0}\Ff{\FfReadOnly}
- \AA{\AAFormat{if(typeof aQuizzesInDoc=="undefined")\r\t
- var aQuizzesInDoc=new Array();\r
- if (aQuizzesInDoc.indexOf("\oField")) aQuizzesInDoc.push("\oField");
- }}]{qzID\oField}{0bp}{0bp}}}
-\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}%
- \edef\@currentHref{shortquiz.\@shortquizCnt}%
- \global\let\eqQuizType\isSQZ\let\@qzsolndest\@empty
- \if\sqstar*\relax
- \let\@Ans\Ans@sq@f
- \ifx\oField\@empty
- \typeout{^^JExerquiz: Base field name required when using
- shortquiz with '*' option}%
- \PackageInfo{exerquiz}{Assuming link style^^J}%
- \let\@Ans\Ans@sq@l
- \fi
- \else
- \let\@Ans\Ans@sq@l
- \fi
- \setcounter{questionno}{0}%
- \let\answers\answers@sq
- \let\endanswers\endanswers@sq
- \let\manswers\manswers@sq
- \let\endmanswers\endmanswers@sq
- \let\solution\solution@sq
- \let\endsolution\endsolution@sq
- \let\ifstaroption\eq@ifstaroption
- \if\eq@tq@star*%
- \def\sqlabel{\aebtitleQuiz\@gobbletwo}%
- \fi
- \sq@aboveskip\sq@priorhook
- \@ifundefined{PointsOnLeft}%
- {\sq@setCLN{\eq@defaultShortQuizLabelName}%
- \ifx\sqlabel\@empty\else\noindent\fi
- \hypertarget{sqH\@currentHref}{}\sq@IDTxtField
- \ifx\sqlabel\@empty\else\expandafter
- \sqlabel\expandafter\sqhspace\fi
- {\set@typeset@protect\aebtitleQuiz}}{}\ignorespaces
-}
-\newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}}
-\belowsqskip{\medskip}
-\def\aeb@endshortquiz{\setcounter{quizno}{0}%
- \sq@afterhook
- \global\let\aebtitleQuiz\@empty
- \global\let\aebTitleQuiz\@empty
- \global\let\eq@tq@star\relax
- \global\let\sqlabel\eq@sqlabel
- \global\let\sqslrtnlabel\eq@sqslrtnlabel
- \global\let\sqsllabel\eq@sqsllabel
- \par\aftershortquizskip
-}
-\def\sqLinks{\def\sqstar{}}\sqLinks
-\def\sqForms{\def\sqstar{*}}
-\let\eq@tq@star\relax
-\def\qzPriorSolutionAfterHook{\smallskip}
-\let\sqPostHeaderHook\@empty
-\let\qPostHeaderHook\@empty
-\let\eq@sqPostHeaderHook\@empty
-\let\eq@qPostHeaderHook\@empty
-\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}%
- {* Solutions unexpected here, will *\MessageBreak
- * assume solutionsafter option *}%
- \eq@solutionsaftertrue
- \fi
- \ifeq@solutionsafter
- \par\qzPriorSolutionAfterHook\noindent
- \if!\sqsolafter!\else
- \sqsolafter\sqsolafterhspace\fi\ignorespaces
- \else
- \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
- \protect\eqQt{\eqFilterArg}\else
- \ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
- \protect\eqSQt{\eqFilterArg}\fi
- \protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
- [{\curr@quiz}{\currQuizStartPage}]\fi\fi
- {\@qzsolndest}{\sqsllabel}\protect\eqterminex
- \if\eqQuizType\isQZ\expandafter\eq@qPostHeaderHook
- \expandafter\qPostHeaderHook\else
- \expandafter\eq@sqPostHeaderHook
- \expandafter\sqPostHeaderHook\fi}%
- \set@typeset@protect
- \expandafter\verbatimwrite\fi
-}
-\let\qzSolutionsAfterHook\@empty
-\def\endsolution@sq
-{%
- \ifeq@solutionsafter
- \eq@fititin{\mbox{\sqslrtnlabel}}\par\qzSolutionsAfterHook
- \aftergroup\ignorespaces
- \else
- \endverbatimwrite
- \ifx\@qzsolndest\@empty\else\set@display@protect
- \immediate\write\verbatim@out{\eqSqSolnTrailer}%
- \set@typeset@protect
- \fi
- \fi
- \global\let\@qzsolndest\@empty
-}
-\newcommand\pnphDflt{.1\textheight}
-\newcommand{\promoteNewPageHere}[1][\pnphDflt]{%
- \@ifnextchar\bgroup{\eq@promoteNewPageHere}
- {\eq@promoteNewPageHere{#1}}%
-}
-\def\eq@promoteNewPageHere#1{\par
- \bgroup\@nobreakfalse\addpenalty{-500}%
- \setlength{\@tempdimb}{#1}%
- \@tempdima \pagegoal \advance \@tempdima -\pagetotal
- \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
- \else\newpage\penalty1\fi\fi\egroup
-}
-\newcommand{\saveDest}[1][]{%
- \def\sd@arg{#1}\ifx\sd@arg\@empty
- \xdef\holdDest{\@qzsolndest}\else
- \xdef\@qzsolndest{#1}\xdef\holdDest{#1}\fi}
-\def\useDest{\def\@qzsolndest{\holdDest}}
-\let\holdDest\@empty
-\def\fpAfterSolutionsSkip{\par\medskip}
-\let\eqSqSolnTrailerHook\@empty
-\let\eqQzSolnTrailerHook\@empty
-\newcommand\eqSqSolnTrailer{%
- \if\eqQuizType\isQZ
- \eqQzSolnTrailerHook
- \protect\ReturnTo{page.\eq@pageThisQ}%
- {\protect\mbox{\sqslrtnlabel}}\string\endeqQt
- \else
- \eqSqSolnTrailerHook
- \protect\ReturnTo{page.\eq@pageThisQ}%
- {\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
- \fi
- \ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
- \ifmakeQzSlLocal\protect\endgroup^^J\fi
-}
-\let\eqSQt\@gobble
-\let\endeqSQt\relax
-\let\eqQt\@gobble
-\let\endeqQt\relax
-\let\prior@quizSolnHeaderHook\@empty
-\newcommand\quizSolnHeader[3][]{%
- \prior@quizSolnHeaderHook
- \ifeqforpaper\else\webnewpage\fi\noindent
- \def\eq@argi{#1}%
- \ifx\eq@argi\@empty\else\noPeek#1\fi
- \hypertarget{#2}{#3}\relax
- \solnspace
-}
-\def\AllowPeeking{\global\let\allow@peek\eq@YES}\AllowPeeking
-\def\NoPeeking{\global\let\allow@peek\eq@NO}
-\def\noPeekAction#1#2{%
- /AA <</O<</S/JavaScript/JS(noPeek("#1",#2))>> >>
-}
-\newif\iftherearequizsolutions \therearequizsolutionsfalse
-\let\aeb@FLOverride\relax
-\def\includequizsolutions{\@ifstar
- {\let\resetQZtsolns\relax\includequizsolutionsi}
- {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
- \includequizsolutionsi}%
-}
-\newcommand{\includequizsolutionsi}[1][]{%
- \filterFor{#1}\includequizsolutionsii
-}
-\def\includequizsolutionsii{%
- \include@quizsolutions
- \resetQZtsolns
- \let\eqFilterArg\@empty
-}
-\let\eqqzsolutionshook\@empty
-\let\priorsqslsectitle\@empty
-\let\priorsqslinput\@empty
-\def\quizSolnsHeadnToc{\section*{\sqslsectitle}%
- \addcontentsline{toc}{section}{%
- \@ifundefined{web@latextoc}{}{%
- \ifx\web@latextoc\eq@YES\else
- \protect\numberline{}\fi}\sqslsectitle}}
-\newcommand{\quizSolnInput}
-{%
- \global\let\webnewpage\relax
- \immediate\closeout\quiz@solns
- \ifeq@noquizsolutions\else
- \iftherearequizsolutions\newpage\markright{}%
- \eq@normallheader\markright{\sqslsecrunhead}%
- \ifx\webnewpage\relax
- \def\webnewpage{\global\let\webnewpage\newpage}\fi
- \priorsqslsectitle\quizSolnsHeadnToc\priorsqslinput
- \InputIfFileExists{\jobname.qsl}{}%
- {!!! Solutions to quizzes not found}
- \eqqzsolutionshook
- \newpage\eq@defaultlheader
- \fi
- \fi
-}
-\def\include@quizsolutions{\quizSolnInput}
-\newcommand{\priorqhook}[1]{\def\q@priorhook{#1}}
-\priorqhook{}
-\newcommand{\aboveqskip}[1]{\def\q@aboveskip{#1}}
-\aboveqskip{\par\medskip}
-\newcommand{\qhspace}{\space}
-\def\endqhook#1{\def\eq@prior@endQuiz{#1}}
-\endqhook{}
-\newcommand{\belowqHooknSkip}[1]{\def\eq@belowqskip{#1}}
-\belowqHooknSkip{\medskip}
-\def\belowqskip{\belowqHooknSkip}
-\let\eq@initializeServerSubmit\@empty
-\newcommand{\quiztype}[1]{%
- \def\@quiztype{#1}\def\aeb@FLOverride{#1}}
-\let\@quiztype\@empty
-\newcommand{\defaultquiztype}{\let\@quiztype\@empty
- \let\aeb@FLOverride\relax}
-\let\aeb@FLOverride\relax
-\def\@setFormLinkType{%
- \if\qstar*%
- \ifx\aeb@FLOverride\relax%
- \def\@@quiztype{f}%
- \else
- \if\aeb@FLOverride l\def\@@quiztype{l}\else
- \def\@@quiztype{f}\fi
- \fi
- \else
- \ifx\aeb@FLOverride\relax
- \def\@@quiztype{l}%
- \else
- \if\aeb@FLOverride f\def\@@quiztype{f}\else
- \def\@@quiztype{l}\fi
- \fi
- \fi
-}
-\def\setdefault@Ans{\@setFormLinkType
- \expandafter\global\expandafter
- \let\expandafter\@Ans\expandafter=\csname Ans@\@@quiztype\endcsname
-}
-\newcommand\useForms{\def\aeb@FLOverride{f}}
-\newcommand\useLinks{\def\aeb@FLOverride{l}}
-\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
-\let\aeb@FLOverride\relax
-\newenvironment{quiz}
-{\goodbreak\@ifstar{\gdef\qstar{*}\@quiz*f}{\gdef\qstar{x}\@quiz*l}}
- {\aeb@endquiz}
-\def\@quizCnt{0}
-\let\ListOfQuizNames\@empty
-\def\@quiz*#1#2{%
- \xdef\eq@pageThisQ{\the\c@page}%
- \let\@currentQues\@empty
- \global\let\eqQzQuesList\@empty
- \global\let\pointValuesArray\@empty
- \global\let\ptypeArray\@empty
- \global\let\corrAnsArray\@empty
- {\count0=\@quizCnt\advance\count0by1\relax
- \xdef\@quizCnt{\the\count0 }}%
- \edef\@currentlabel{\@quizCnt}%
- \edef\@currentHref{quiz.\@quizCnt}%
- \sq@setCLN{\eq@defaultQuizLabelName}%
- \setcounter{eqpointvalue}{0}\setcounter{questionno}{0}%
- \eq@initializeServerSubmit
- \global\let\eqQuizType\isQZ %\tabcolsep=0pt
- \gdef\eqPTs{1}\global\let\eqQT\eq@na
- \g@addto@macro\ListOfQuizNames{,#2}%
- \gdef\quiz@total{#2}\xdef\curr@quiz{#2}\xdef\oField{#2}%
- \xdef\currQuiz{#2}\xdef\currQuizStartPage{\thepage}%
- \xdef\aPointType{0}%
- \def\fieldJSStr@CMD{\fieldJSStr*[noquotes]\bqlabelISO}%
- \expandafter\fieldJSStr@CMD\expandafter{\bqlabelISO}%
- \ifx\@quiztype\@empty\gdef\@@quiztype{#1}\else
- \xdef\@@quiztype{\@quiztype}\fi
- \let\@qzsolndest\@empty
- \let\answers\answers@q\let\endanswers\endanswers@q
- \let\manswers\manswers@q\let\endmanswers\endanswers@q
- \let\solution\solution@sq\let\endsolution\endsolution@sq
- \expandafter%
- \xdef\csname titleOf\currQuiz\endcsname{\aebTitleQuiz}%
- \q@aboveskip\q@priorhook\noindent\hypertarget{qzH\@currentHref}{}%
- \eq@beginQuiz\qhspace{\set@typeset@protect\aebtitleQuiz}%
- \ignorespaces
-}
-\def\aeb@endquiz
-{%
- \eq@prior@endQuiz\noindent\eq@endQuiz
- \global\let\eqQuizType\relax
- \global\let\aebtitleQuiz\@empty
- \global\let\aebTitleQuiz\@empty
- \global\let\bqlabel\eq@bqlabel % reset beginning label to default
- \global\let\eqlabel\eq@eqlabel % reset ending label to default
- \global\let\sqsllabel\eq@sqsllabel
- \global\let\sqslrtnlabel\eq@sqslrtnlabel
- \global\let\bqlabelISO\eq@bqlabelISO
- \eq@belowqskip
-}
-\newenvironment{quiz*}{\goodbreak\gdef\qstar{*}\@quiz*f}{\aeb@endquiz}
-\newcommand\eq@beginQuiz{\eq@BeginQuizLink}
-\newcommand\eq@endQuiz{\eq@EndQuizLink}
-\newcommand\useBeginQuizButton[1][]
- {\renewcommand\eq@beginQuiz{\eq@BeginQuizButton[#1]}}
-\newcommand\useEndQuizButton[1][]
- {\renewcommand\eq@endQuiz{\eq@EndQuizButton[#1]}}
-\newcommand\useBeginQuizLink
- {\renewcommand\eq@beginQuiz{\eq@BeginQuizLink}}
-\newcommand\useEndQuizLink
- {\renewcommand\eq@endQuiz{\eq@EndQuizLink}}
-\newcommand\@initQuiz{%
- var \curr@quiz=new Object();\jsR
- lstOfQuizzes["\curr@quiz"]=\curr@quiz;\jsR
- \curr@quiz.oAlertCheck={bAfterValue:false};\jsR
- \curr@quiz.Grp={};
- \ifx\defaultColorJSLoc\@empty\else\jsR
- \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi
- \ifx\rghtColorJSLoc\@empty\else\jsR
- \oField.RightColorJSLoc=\rghtColorJSLoc;\fi
- \ifx\wrngColorJSLoc\@empty\else\jsR
- \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi
- \ifx\partialColorJSLoc\@empty\else\jsR
- \oField.PartialColorJSLoc=\partialColorJSLoc;\fi
- \ifx\rghtAnsSymbJSLoc\@empty\else\jsR
- \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi
- \ifx\wrngAnsSymbJSLoc\@empty\else\jsR
- \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi
- \ifx\corrAnsSymbJSLoc\@empty\else\jsR
- \oField.CorrAnsSymbJSLoc=\corrAnsSymbJSLoc;\fi
- \ifx\eqGradeScaleLoc\@empty\else\jsR
- \oField.GradeScaleLoc=new Array(\eqGradeScaleLoc);\fi
- \ifx\eqCorrLocalChoiceFully\@empty\else\jsR % dpsf07
- \oField.fullyCorrectLoc=\eqCorrLocalChoiceFully;\fi
- \ifx\priorInitQuiz\@empty\else\jsR\priorInitQuiz\fi %\jsR
- InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);
- \ifx\eq@CGI\@empty\jsR\curr@quiz.isSubmitted=false;\else
- \jsR\curr@quiz.isSubmitted=true;\fi
- \jsR\curr@quiz.initializeWith=%
-'InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);'
- \ifx\postInitQuiz\@empty\else\jsR\postInitQuiz\fi
-}
-\newcommand{\priorInitQuiz}{}
-\newcommand{\postInitQuiz}{}
-\let\eq@submitURL\@empty
-\let\eq@insertHiddenFields\@empty
-\def\eq@@BeginQuizLinkActions
-{%
- \A{\JS{%
- \@initQuiz
- }}%
-}
-\def\eq@BeginQuizLinkDefaults{\Border{0 0 0}}
-\let\bqlabelFmt\@empty
-\def\eq@BeginQuizLink
-{%
- \qz@IDTxtField
- \set@@Link{}{}{}{\color{\@linkcolor}\bqlabelFmt\bqlabel}{}%
- {\eq@setWidgetProps\setLink@driver}%
- {\eq@BeginQuizLinkDefaults\eq@@BeginQuizLinkActions\every@Link}%
- \space\ignorespaces
-}
-\newcommand\priorSubmitQuiz{}
-\newcommand\postSubmitQuiz{}
-\def\eq@@EndQuizLinkActions{\A{\JS{%
- if (!isQuizInitialized("\curr@quiz"))\jsR\jsT
- eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR
- else {\jsR\jsT
- if (\minQuizResp(\thequestionno)) {\jsR\jsT\jsT
- \curr@quiz.PtValues=new %
- Array(\pointValuesArray);\jsR\jsT\jsT
- ProbType = [\ptypeArray];\jsR\jsT\jsT
-\if@inclkey
- \curr@quiz.CorrAns=(new %
- Array(\corrAnsArray));\jsR\jsT\jsT
-\fi
- DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
- \thequestionno);\jsR\jsT\jsT
- var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT
- h.value=Score+";"+NQuestions+";"%
- +ptScore+";"+NPointTotal;\jsR\jsT\jsT
- \eq@submitURL
- \postSubmitQuiz
- \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT
- }\jsR
- }}}%
-}
-\def\eq@EndQuizLinkDefaults{\Border{0 0 0}}
-\let\eqlabelFmt\@empty
-\def\eq@EndQuizLink
-{%
- \ifx\eq@CGI\@empty
- \let\eq@submitURL\@empty
- \let\eq@insertHiddenFields\@empty
- \fi
- \set@@Link{}{}{}{\color{\@linkcolor}\eqlabelFmt\eqlabel}{}%
- {\eq@setWidgetProps\setLink@driver}%
- {\eq@EndQuizLinkDefaults\eq@@EndQuizLinkActions\every@Link}%
- \makebox[0pt][r]{\textField[\BC{}\autoCenter{n}]%
- {htxtfld.\curr@quiz}{0bp}{0bp}}%
- \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}%
- \global\let\eq@CGI\@empty\ignorespaces
-}
-\def\BeginQuizButtonDefaults
-{%
- \CA{\bqlabel}\H{P}\F{\FPrint}
- \BC{1 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}
-}
-\def\eq@@BeginQuizButtonActions
-{%
- \A{\JS{%
- \@initQuiz
- }}%
-}
-\newcommand\eq@BeginQuizButton[1][]
-{%
- \mbox{\qz@IDTxtField\push@@Button{#1}{beginQuiz.\curr@quiz}{}%
- {\DefaultHeightOfWidget}{\eq@protect\A}%
- {\eq@setButtonProps\eq@Button@driver}%
- {\BeginQuizButtonDefaults\eq@@BeginQuizButtonActions
- \every@ButtonField\every@BeginQuizButton}}%
-}
-\def\EndQuizButtonDefaults
-{%
- \CA{\eqlabel}\F{\FPrint}\BC{1 0 0}
- \BG{.7529 .7529 .7529}\W{1}\S{B}\H{P}
-}
-\def\eq@@EndQuizButtonActions{\A{\JS{%
- if (!isQuizInitialized("\curr@quiz"))\jsR\jsT
- eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR
- else {\jsR\jsT
- if (\minQuizResp(\thequestionno)&&_ModalNotOn){\jsR\jsT\jsT
- \curr@quiz.PtValues=(new %
- Array(\pointValuesArray));\jsR\jsT\jsT
- ProbType=[\ptypeArray];\jsR\jsT\jsT
-\if@inclkey
- \curr@quiz.CorrAns=(new %
- Array(\corrAnsArray));\jsR\jsT\jsT
-\fi
- DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
- \thequestionno);\jsR\jsT\jsT
- var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT
- h.value=Score+";"+NQuestions+";"%
- +ptScore+";"+NPointTotal;\jsR\jsT\jsT
- \eq@submitURL
- \postSubmitQuiz
- \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT
- }\jsR
- }}}%
-}
-\newcommand{\eq@hiddenScoreData}{\makebox[0pt][r]{%
- \textField[\BC{}\F{\FHidden}]{ScoreData.\curr@quiz}{0bp}{0bp}}}
-\newcommand\eq@EndQuizButton[1][]
-{%
- \ifx\eq@CGI\@empty
- \let\eq@submitURL\@empty
- \let\eq@insertHiddenFields\@empty
- \fi
- \mbox{\push@@Button{#1}{endQuiz.\curr@quiz}{}%
- {\DefaultHeightOfWidget}{\eq@protect\A}%
- {\eq@setButtonProps\eq@Button@driver}%
- {\EndQuizButtonDefaults\eq@@EndQuizButtonActions
- \every@ButtonField\every@EndQuizButton}}%
- \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}%
- \global\let\eq@CGI\@empty
-}
-\newcommand\databaseName[1]{\gdef\db@Name{#1}}\def\db@Name{}
-\newcommand\tableName[1]{\gdef\db@Table{#1}}\def\db@Table{}
-\newcommand\eqCGI{\definePath{\eq@CGI}}\def\eq@CGI{}
-\newcommand\eqSubmit{\hyper@normalise\eqSubmiti}
-\def\eqSubmiti#1{\xdef\eq@CGI{"#1"}\eqSubmitii}
-\def\eqSubmitii#1#2{\databaseName{#1}\tableName{#2}}
-\providecommand{\rtnURL}{\definePath{\thisRtnURL}}
-\let\thisRtnURL\@empty
-\newcommand\addHiddenTextField[3][]{}
-\newcommand\populateHiddenField[2]{}
-\def\eqButtonDefaults
-{%
- \CA{\eq@local@CA}\AC{}\H{P}\W{1}\S{B}
- \BC{1 0 0}\BG{.7529 .7529 .7529}
-}
-\def\@@eqButtonActions
-{%
- \A{\JS{if (isEndQuizPushed("\eqBaseName")){\jsR\jsT%
- correctQuiz("\eqBaseName",\thequestionno);%
- \ifusesumrytbls\jsR\jsT\else\jsR\fi
- if (typeof correctSumryTbl == "function")\jsR\jsT\jsT
- correctSumryTbl("\eqBaseName",\thequestionno);\jsR
- }
- }}%
-}
-\newcommand\eqButton[2][]
-{%
- \ifnocorrections\else
- \def\eqBaseName{#2}%
- \mbox{\push@@Button{#1}{correct.#2}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\eqButtonDefaults\@@eqButtonActions\every@ButtonField
- \every@eqButton}}%
- \fi
-}
-\def\CorrButton{\eqButton}
-\def\rbMarkup@Defaults
-{%
- \BC{}\F{\FHidden}\Ff{\FfReadOnly}\textSize{12}
- \textColor{0 g}\symbolchoice{check}\W{}
-}
-\newcommand\rbMarkup[1][]{%
- \ifx\grpquestions\eq@One
- \def\Fld@name{%
- \oField.\thequestionno.\thegrpquestionno}\else
- \def\Fld@name{\oField.\thequestionno}\fi
- \mbox{\check@@Box{#1\V{Yes}\DV{Yes}}%
- {rbmarkup.\Fld@name}%
- {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}}%
-\newcommand\minQuizResp{lowThreshold}
-\newcommand\PTs{\@ifstar{\def\eq@star{*}\@PTs}{\def\eq@star{x}\@PTs}}
-\def\@PTs#1{\gdef\eq@PTs{#1}\ifx\eq@PTs\@empty\gdef\eq@PTs{1}\fi
- \global\let\eqPTs\eq@PTs\global\let\eq@PTs\@empty
- \if\eq@star*\else\PTs@Hook\fi}
-\def\eq@PTs{0} % initialize this variable
-\newcommand\QT[1]
-{%
- \gdef\eq@qT{#1}\ifx\eq@qT\@empty\global\let\eq@qT\eq@na\fi
- \global\let\eqQT\eq@qT\global\let\eq@qT\eq@na
-}
-\def\eq@na{na} % not applicable
-\let\eq@qT\eq@na
-\newcommand\PTsHook[1]{\def\PTs@Hook{#1}}
-\let\PTs@Hook\@empty
-\let\eq@PTs\@empty
-\newcommand\eqGradeScale{%
- "A",[90, 100],"B",[80,90],"C",[70,80],"D",[60,70],"F",[0,60]}
-\let\eqGradeScaleLoc\@empty
-\newcommand{\resetGradeScaleLoc}{\global\let\eqGradeScaleLoc\@empty}
-\def\tallywidth#1{\def\TBW{#1}}
-\def\TBW{15bp}
-\def\DefaultHeightOfWidget{11bp}
-\def\RadioFieldSize{11bp}
-\def\RBW{2in} % Response Box width (math,txt, txtpc, answer field)
-\def\SFW{1.5in} % Score Field Width
-\def\GFW{20pt} % Grade Field Width
-\def\PtFW{1.5in} % Point Field Width
-\def\PcFW{1.5in} % Percent Field Width
-\def\ScoreFieldDefaults
-{%
- \Ff{\FfReadOnly}\BC{1 0 0}\BG{}\S{S}
- \DV{\eqScore}\V{\eqScore}\W{1}
-}
-\newcommand\ScoreField[2][]
-{%
- \mbox{\text@@Field{#1}{ScoreField.#2}{\SFW}%
- {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
- {\ScoreFieldDefaults\every@eqTextField\every@ScoreField}}%
-}
-\def\GradeFieldDefaults
-{%
- \textColor{0 0 1 rg}\BC{1 0 0}\BG{1 1 1}\S{S}
- \Ff{\FfReadOnly}\Q{1}\W{1}
-}
-\newcommand\GradeField[2][]
-{%
- \mbox{\text@@Field{#1}{GradeField.#2}{\GFW}%
- {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
- {\GradeFieldDefaults\every@eqTextField\every@GradeField}}%
-}
-\def\AnswerFieldDefaults
-{%
- \BC{0 0 0}\S{S}\Ff{\FfReadOnly}\W{1}%
- \presets{\eq@resetAnsFieldOnClose}%
-}
-\let\eq@resetAnsFieldOnClose\@empty
-\newcommand{\noResetAnsFieldOnClose}{%
- \global\let\eq@resetAnsFieldOnClose\@empty}
-\newcommand{\resetAnsFieldOnClose}{%
- \gdef\eq@resetAnsFieldOnClose{%
- \AApageclose{this.resetForm(["\Fld@name"]);}}}
-\newcommand\AnswerField[2][]
-{%
- \mbox{\text@@Field{#1}{Ans.#2}{\RBW}{\DefaultHeightOfWidget}%
- {}{\eq@setWidgetProps\eq@TextField}%
- {\AnswerFieldDefaults\every@eqTextField\every@AnswerField}}%
-}
-\newcommand\autoAnswerField{%
- \@ifundefined{lfooter}{\def\eq@next{\eq@autoAnswerFieldgobble}%
- \PackageError{exerquiz}{The \string\autoAnswerField\space
- command\MessageBreak requires the web package}{Use web package}
- }{%
- \PackageInfo{exerquiz}{%
- For this auto answer field feature to run\MessageBreak
- the webheadings pagestyle of the web package\MessageBreak
- is required}\def\eq@next{\eq@autoAnswerField}%
- \ifx\web@lfoot\@empty\else
- \PackageWarning{exerquiz}{The left running footer already in
- use\MessageBreak Will overwrite what is there now.
- Better fix it.}\fi
- }%
- \eq@next
-}
-\newcommand\eq@autoAnswerFieldgobble[1][]{\relax}
-\newcommand\autoAnsFldRaiseBox[1]{\def\ef@aAFRB{#1}}
-\autoAnsFldRaiseBox{0pt}
-\let\autoAFOpts\@empty
-\newcommand\eq@autoAnswerField[1][]{\gdef\autoAFOpts{#1}%
- \def\eq@insertAnswerField{\AnswerField[#1]{\currQuiz}}%
- \eq@@autoAnswerField
-}
-\newcommand\eq@@autoAnswerField{\lfooter{\ifIsRespBox
- \raisebox{\ef@aAFRB}{\eq@insertAnswerField}%
- \global\IsRespBoxfalse\fi}%
-}
-\newcommand\manualAnswerField[1][\autoAFOpts]{%
- \expandafter\AnswerField\expandafter[#1]{\currQuiz}}
-\def\PointsFieldDefaults
-{%
- \rawPDF{}\BC{1 0 0}\BG{}\W{1}\S{S}\Ff{\FfReadOnly}
- }
-\newcommand\PointsField[2][]
-{%
- \mbox{\text@@Field{#1}{PointsField.#2}{\PtFW}%
- {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
- {\PointsFieldDefaults\every@eqTextField\every@PointsField}}%
-}
-\def\PercentFieldDefaults
-{%
- \rawPDF{}\BC{1 0 0}\BG{}\W{1}\S{S}\Ff{\FfReadOnly}%
-}
-\newcommand\PercentField[2][]
-{%
- \mbox{\text@@Field{#1}{PercentField.#2}{\PcFW}%
- {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
- {\PercentFieldDefaults\every@eqTextField\every@PercentField}}%
-}
-\newcommand\RestoreScoreField
-{%
- \global\let\eqScore\eq@Score
- \global\let\eqOutOf\eq@OutOf
-}
-\def\DeclareQuiz#1{\edef\oField{#1}%
- \edef\thisQuiz{#1}\edef\curr@quiz{#1}%
- \edef\currQuiz{#1}\edef\curr@quiz{#1}%
-}
-\let\Quiz\DeclareQuiz
-\def\aeb@noindgobble{\noindent\@gobbletwo}
-\let\startQuizHere\relax
-\let\endQuizHere\relax
-\let\dockQuiz\relax
-\newcommand\floatQuiz{%
- \global\let\eq@beginQuiz@saved\eq@beginQuiz
- \global\let\eq@endQuiz@saved\eq@endQuiz
- \global\let\startQuizHere\eq@beginQuiz
- \global\let\endQuizHere\eq@endQuiz
- \global\let\eq@beginQuiz\aeb@noindgobble
- \global\let\eq@endQuiz\@empty
- \global\let\dockQuiz\eq@dockQuiz
-}
-\newcommand\eq@dockQuiz{%
- \global\let\eq@beginQuiz\eq@beginQuiz@saved
- \global\let\eq@endQuiz\eq@endQuiz@saved
- \global\let\startQuizHere\relax
- \global\let\endQuizHere\relax
- \global\let\eq@beginQuiz@saved\relax
- \global\let\eq@endQuiz@saved
- \global\let\dockQuiz\relax
-}
-\def\fancyQuizHeaders{%
- \global\let\eq@sqsllabel@fancy@save\eq@sqsllabel
- \gdef\eq@sqsllabel{\eq@fancyQuizHeaders}}
-\def\eq@fancyQuizHeaders{%
- \if\eqQuizType\isQZ\expandafter\eq@fancyQuizHeadersfmt\else
- \expandafter\eq@fancyShrtQuizHeadersfmt\fi
-}
-\let\eq@sqsllabel@fancy@save\@empty
-\def\restoreDefaultQuizHeaders{%
- \global\let\eq@sqsllabel\eq@sqsllabel@fancy@save}
-\newcommand\fncyQHdrsColor{blue}
-\newcommand\FncyHdrsFmtNoTitleQuiz{Solution to Quiz:}
-\newcommand\FncyHdrsFmtQuestion{Question}
-\newcommand\dfltFncyQHdrsFmt{%
- \protect\bfseries\protect\color{\fncyQHdrsColor}%
- \ifx\aebTitleQuiz\@empty
- \ifnum\@eqquestiondepth>0\relax\FncyHdrsFmtNoTitleQuiz\fi
- \else\aebTitleQuiz:\ifnum\@eqquestiondepth=0\else\protect\ %
- \FncyHdrsFmtQuestion\fi\fi\ifcase\@eqquestiondepth
- \ifx\aebTitleQuiz\@empty\FncyHdrsFmtNoTitleQuiz\fi
- \or\space\arabic{eqquestionnoi}.%
- \or\space\arabic{eqquestionnoi}(\alph{eqquestionnoii})%
- \or\space\arabic{eqquestionnoi}(\alph{eqquestionnoii})%
- (\roman{eqquestionnoiii})\fi
-}
-\newcommand\dclrFncyQzHdrsFmt[1]{%
- \def\eq@fancyQuizHeadersfmt{{#1}}%
-}
-\dclrFncyQzHdrsFmt{\dfltFncyQHdrsFmt}
-\newcommand\dclrFncySqHdrsFmt[1]{%
- \def\eq@fancyShrtQuizHeadersfmt{{#1}}%
-}
-\dclrFncySqHdrsFmt{\dfltFncyQHdrsFmt}
-\let\tqhspace\space
-\newcommand\titleQuiz[1][]{#1\@titleQuizi}
-\def\@titleQuizi{\makeatletter
- \@ifstar{\def\eq@tq@star{*}\eq@titleQuiz}%
-{\def\eq@tq@star{x}\eq@titleQuiz}}
-\def\eq@titleQuiz#1{%
- \gdef\aebTitleQuiz{#1}\def\@currentlabelname{#1}%
- \gdef\aeb@@titleQuiz{#1}%
- \gdef\aebtitleQuiz{\mbox{\titleQuizfmt{#1}}\tqhspace}%
-\makeatother}
-\let\aebtitleQuiz\@empty
-\let\aebTitleQuiz\@empty
-\newcommand\titleQuizfmt{\bfseries}
-\def\ifQuizType#1#2{\if\eqQuizType\isQZ\def\qt@next{#1}%
- \else\def\qt@next{#2}\fi\qt@next}
-\def\eq@ifstaroption#1#2{\if\eq@tq@star*\def\sq@next{#1}%
- \else\def\sq@next{#2}\fi\sq@next}
-\let\eq@tq@star\relax
-\def\ifstaroption{\PackageWarning{exerquiz}
- {\protect\ifstaroption\space is only defined within the\MessageBreak
- shortquiz environment. Gobbling up its two\MessageBreak
- arguments, sorry. This occurred}%
- \@gobbletwo
-}
-\newcounter{qMarkCnt}
-\def\multipartquestion{\global\let\aeb@multipart\eq@One}
-\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
-\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
-\let\aeb@multipart\eq@Zero
-\newcommand\pcMarkupColor{red}
-\def\markupWidth{12bp}\def\markupHeight{8bp}\def\markupTextSize{0}
-\newcommand{\aeb@creditmarkup}{%
- \textField[\Ff\FfReadOnly\BC{}\F\FHidden
- \textColor{\pcMarkupColor}\textSize{\markupTextSize}\autoCenter{n}%
- \DV{0 \eqptsLabel}\V{0 \eqptsLabel}]%
- {qMark.\currQuiz.\thequestionno.\arabic{qMarkCnt}}%
- {\markupWidth}{\markupHeight}%
-}
-\def\showCreditMarkup{%
- \def\qMark{\if\aeb@multipart\eq@Zero\aeb@creditmarkup
- \stepcounter{qMarkCnt}\else\global\let\aeb@multipart\eq@Zero\fi}%
- \def\qMark@Hook{\aeb@creditmarkupfmt}%
-}
-\def\hideCreditMarkup{\global\let\qMark@Hook\@empty}
-\newcommand{\aeb@creditmarkupfmt}{\makebox[0pt][r]{\qMark\hspace{-2bp}}}
-\long\def\gobbleToEndQt#1\endeqQt{\ifeqforpaper\expandafter\@gobble\fi}
-\long\def\gobbleToEndSQt#1\endeqSQt{%
- \ifeqforpaper\expandafter\@gobble\fi}
-\newcommand\inclQtFilter[1]{\def\eqarg{#1}\ifx\eqarg\eqFilterArg
- \else\expandafter\gobbleToEndQt\fi}
-\newcommand{\exclQt}[1]{\gobbleToEndQt}
-\newcommand{\useQtFilter}{%
- \let\eqQt\inclQtFilter\let\eqSQt\exclSQt
-}
-\newcommand\inclSQtFilter[1]{\def\eqarg{#1}\ifx\eqarg\eqFilterArg
- \else\expandafter\gobbleToEndSQt\fi}
-\newcommand{\exclSQt}[1]{\gobbleToEndSQt}
-\newcommand{\useSQtFilter}{\let\eqSQt\inclSQtFilter\let\eqQt\exclQt}
-\newcommand{\sqbookmarkfmt}{Short Quiz \@shortquizCnt.\space}
-\newcommand{\qzbookmarkfmt}{Quiz \@quizCnt.\space}
-\newcommand{\quizpdfbookmark}[1]{\relax\def\argi{#1}%
- \if\eqQuizType\isSQZ\edef\aeb@bmmrkdest{sqbm.\@shortquizCnt}%
- \def\aeb@thisbkmrkfmt{\sqbookmarkfmt}\else
- \edef\aeb@bmmrkdest{qzbm.\@quizCnt}%
- \def\aeb@thisbkmrkfmt{\qzbookmarkfmt}\fi
- \def\quizpdfbookmarktitle{#1}%
- \def\eqex@next{\belowpdfbookmark{\aeb@thisbkmrkfmt#1}%
- {\aeb@bmmrkdest}}%
- \ifx\aebTitleQuiz\@empty\else\ifx\argi\@empty
- \def\quizpdfbookmarktitle{\aebTitleQuiz}%
- \def\eqex@next{\belowpdfbookmark{\aebTitleQuiz}%
- {\aeb@bmmrkdest}}\fi\fi
- \eqex@next\ignorespaces
-}
-\def\pushEnvir{\xdef\eq@currenvir{\@currenvir}\endgroup}
-\def\popEnvir{\begingroup\@endpefalse
- \edef\@currenvir{\eq@currenvir}%
- \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[]}}}
-\def\manswers@sq{\parindent0pt
- \@ifundefined{ifuserectforms}{}
- {\if\aeb@FLOverride\eq@f\ifuserectforms
- \useRectForMC\else\useCircForMC\fi\fi}%
- \ifx\solutionparshape\@empty\else
- \pushEnvir\par\noindent\expandafter\popEnvir\fi
- \stepcounter{questionno}%
- \if\sqstar*\relax
- \if\aeb@FLOverride\eq@l
- \let\@Ans\Ans@ck@sq@l\else
- \let\@Ans\Ans@ck@sq@f\fi
- \else
- \if\aeb@FLOverride\eq@f
- \let\@Ans\Ans@ck@sq@f\else
- \let\@Ans\Ans@ck@sq@l\fi
- \fi
- \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
- {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
-\let\sq@hwdest\@empty % hard-wired destination
-\def\answers@@sq[#1]#2{%
- \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}}
-\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}{}
-\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
- \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}%
-% \settowidth{\labelsep}{\eq@hspanner}%
- \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
-}
-\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
- \ifx\itsExerParts\eq@YES\par\removelastskip
- \removelastparskip\vskip\aboveanswersSkip\fi
- \else\par\removelastskip\removelastparskip
- \vskip\aboveanswersSkip\fi
- \noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
- \tabcolsep=0pt
- \eq@tmpdima=\linewidth
- \@tempcnta#1\relax
- \advance\@tempcnta-1\relax
- \multiply\@tempcnta by2
- \@tempdima\sq@tabsep\relax
- \multiply\@tempdima\@tempcnta
- \advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by#1
- \def\Ans{\Ans@tabular}%
- \tabcolsep\sq@tabsep\relax
- \expandafter\tabular\sq@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}}%
-\let\eq@save@doendpe\@doendpe
-\def\reset@doendpe#1{\global\eq@scratchtoks=\expandafter{#1}%
- \gdef\@doendpe{\par\@endpetrue\global\let\@doendpe\eq@save@doendpe
- \def\par{\@restorepar
- \expandafter\everypar
- \expandafter{\the\eq@scratchtoks}\par\@endpefalse}%
- \everypar{{\setbox\z@\lastbox}%
- \everypar{}\@endpefalse}\the\eq@scratchtoks
- }%
-}
-\newcommand\answersEndHook[1]{\def\eq@answersEndHook{#1}}
-\let\eq@answersEndHook\@empty
-\def\endanswers@sq{\endtabular\setcounter{quizno}{0}%
- \eq@answersEndHook\reset@doendpe{\the\everypar}%
- \ifinner\else%\par
- \removelastskip
- \vspace{\aboveanswersSkip}\@endpetrue\fi
-}
-\def\endmanswers@sq{\endtabular\setcounter{quizno}{0}%
- \eq@answersEndHook\reset@doendpe{\the\everypar}%
- \ifinner\else%\par
- \removelastskip
- \vspace{\aboveanswersSkip}\@endpetrue\fi
-}
-\def\popiiictm{\special{CTM: pop pop pop}}
-\def\sqWrongRespJS{OnBlurRespBox( false, "\oField" );}
-\def\sqRightRespJS{OnBlurRespBox( true, "\oField" );}
-\def\Ans@sq@l@Actions
-{%
- \A{\if\Ans@choice1
- \JS{\sqRightRespJS}
- \ifx\@qzsolndest\@empty\else
- \ifeq@solutionsafter\else
- /Next <</S/GoTo/D(\@qzsolndest)>>
- \fi
- \fi
- \else
- \JS{\sqWrongRespJS\jsR
- \ifx\oField\@empty\else
- updateTally("\oField.\thequestionno");
- \fi}%
- \fi
- }%
-}
-\def\linkContentFormat{\alph{quizno}}
-\def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters
- \Alph{quizno}\noexpand\else\linkContentFormat\noexpand\fi}
-\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
- \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
- \set@@Link{}{}{}%
- {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}
- {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
- {\set@LinkTextDefaults\Ans@sq@l@Actions\every@Link}%
- \Ans@proofing{\eq@tmpdima}%
-\eq@hspanner\ignorespaces}
-\def\Ans@ck@sq@l{\Ans@ck@sq@f}
-\def\@@Ans@sq@f@Defaults
-{%
- \BC{0 0 0}\Ff{\FfNoToggleToOff}\W{1}
- \F{\FPrint}\textSize{12}\textColor{0 g}
-}
-\def\sqTurnOffAlerts{\let\@sqTurnOffAlerts\eq@Zero}
-\def\sqTurnOnAlerts{\let\@sqTurnOffAlerts\eq@One}
-\sqTurnOnAlerts
-\def\sqNoCorrections{\let\@sqAlertsOnly\eq@One}
-\def\sqCorrections{\let\@sqAlertsOnly\eq@Zero}
-\sqNoCorrections
-\def\Ans@sq@f@ActionsTrue{%
- \if\@sqTurnOffAlerts1OnBlurRespBox(true,"\oField");\jsR\fi
- \ifx\@qzsolndest\@empty\else\ifeq@solutionsafter\else
- jmpToNamedDest("\oField","\@qzsolndest",%
- \if\@sqTurnOffAlerts00\else1\fi);\fi
- \fi\eqAddAAMouseUpMC}
-\def\Ans@sq@f@ActionsFalse{%
- \if\@sqTurnOffAlerts1OnBlurRespBox(false,"\oField" );\jsR\fi
- \ifx\oField\@empty\else
- updateTally("\oField.\thequestionno");
- \fi\jsR\eqAddAAMouseUpMC}
-\def\Ans@sq@f@Actions{\A{\if\Ans@choice\eq@One
- \JS{\Ans@sq@f@ActionsTrue}\else
- \JS{\Ans@sq@f@ActionsFalse}\fi}%
- \AAmousedown{updateTally.downState=!!event.target.isBoxChecked%
- (\arabic{quizno}-1);}}
-\def\Ans@proofing#1{\ifeq@proofing\if\Ans@choice1\relax
- \llap{\@proofingsymbol\,\hskip#1\relax}%
- \fi\fi}
-\def\sqRghtSymbChoice#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \edef\sq@corrsymch{\sqRghtSymbChoiceDef}\else
- \edef\sq@corrsymch{#1}\fi}
-\def\sqRghtSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \edef\sq@corrsymcol{\sqRghtSymbColorDef}\else
- \edef\sq@corrsymcol{#1}\fi}
-\def\sqWrngSymbChoice#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \edef\sq@wrgsymch{\sqWrngSymbChoiceDef}\else
- \edef\sq@wrgsymch{#1}\fi}
-\def\sqWrngSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \edef\sq@wrgsymcol{\sqWrngSymbColorDef}\else
- \edef\sq@wrgsymcol{#1}\fi}
-\def\sqRghtSymbChoiceDef{check}
-\def\sqRghtSymbColorDef{0 .6 0 rg}
-\def\sqWrngSymbChoiceDef{cross}
-\def\sqWrngSymbColorDef{1 0 0 rg}
-\edef\sq@corrsymch{\sqRghtSymbChoiceDef}
-\edef\sq@corrsymcol{\sqRghtSymbColorDef}
-\edef\sq@wrgsymch{\sqWrngSymbChoiceDef}
-\edef\sq@wrgsymcol{\sqWrngSymbColorDef}
-\def\sqResetSymbToDef{%
- \sqRghtSymbChoice{}\sqRghtSymbColor{}%
- \sqWrngSymbChoice{}\sqWrngSymbColor{}%
-}
-\def\qChoiceSymb#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \edef\qz@chksymb{\qChoiceSymbDef}\else
- \edef\qz@chksymb{#1}\fi}
-\def\qChoiceColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \edef\qz@chksymbcol{\qChoiceColorDef}\else
- \edef\qz@chksymbcol{#1}\fi}
-\def\qChoiceSymbDef{check}
-\def\qChoiceColorDef{0 0 0 rg}
-\edef\qz@chksymb{\qChoiceSymbDef}
-\edef\qz@chksymbcol{\qChoiceColorDef}
-\let\rbf@Opts\@empty
-\def\Ans@sq@f{%
- \if\eq@listType\eq@One\stepcounter{quizno}\else
- \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
- {\ifwithsoldoc\stepcounter{quizno}\else
- \refstepcounter{quizno}\fi}\fi\PBS\raggedright
- \if\Ans@choice\eq@One
- \def\rbf@Opts{\symbolchoice{\sq@corrsymch}%
- \textColor{\sq@corrsymcol}}\else
- \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}%
- \textColor{\sq@wrgsymcol}}\fi
- \settowidth{\eq@tmplength}{\eq@lw@f}%
- \eq@tmpdima=\wd\eq@tmpbox%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \insertGrayLetters % 6.3d
- \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
- {mc.\oField.\thequestionno}%
- {\RadioFieldSize}% 11/16/05 changed from \oField to mc.\oField
- {\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}}%
- \Ans@proofing{\RadioFieldSize}%
-\eq@hspanner\ignorespaces}
-\def\@@Ans@ck@sq@f@Defaults
-{%
- \BC{0 0 0}\Ff{\FfNoToggleToOff}
- \F{\FPrint}\textSize{12}\textColor{0 g}\W{1}
-}
-\begingroup
-\catcode`\&=12
-\gdef\eq@AND{&&}
-\endgroup
-\def\Ans@ck@sq@f@ActionsTrue{%
- var fName=event.target.name;\jsR
- var g=this.getField("mc.\oField.\thequestionno");\jsR
- var a=g.getArray();\jsR
- for (var i=0; i<a.length; i++)\jsR\jsT
- if ( a[i].isBoxChecked(0) \eq@AND\space
- a[i].value.charAt(0)==0)\jsR\jsT\jsT
- a[i].checkThisBox(0,false);\jsR
- \if\@sqTurnOffAlerts1OnBlurRespBox(%
- true,"\oField");\jsR\fi
- \ifx\@qzsolndest\@empty\else
- \ifeq@solutionsafter\else
- % if all correct answers are check, jump to solution
- for (var i=0; i<a.length; i++){\jsR\jsT
- if ( a[i].exportValues[0].charAt(0)==1 \eq@AND\space
- !a[i].isBoxChecked(0))\jsR\jsT\jsT
- break;\jsR
- }\jsR
- if (i>=a.length) jmpToNamedDest("\oField","\@qzsolndest",%
- \if\@sqTurnOffAlerts00\else1\fi);
- \fi
- \fi\eqAddAAMouseUpMS}
-\def\Ans@ck@sq@f@ActionsFalse{%
- var fName=event.target.name;\jsR
- var g=this.getField("mc.\oField.\thequestionno");\jsR
- var a=g.getArray();\jsR
- for (var i=0; i<a.length; i++)\jsR
- {\jsR\jsT
- if (a[i].value.charAt(0)==0) {\jsR\jsT\jsT
- if ( fName != a[i].name )\jsR\jsT\jsT\jsT
- a[i].checkThisBox(0,false);\jsR\jsT
- }\jsR
- }\jsR
- \if\@sqTurnOffAlerts1OnBlurRespBox( false, "\oField" );\fi
- \ifx\oField\@empty\else
- updateTally("\oField.\thequestionno");
- \fi\eqAddAAMouseUpMS}
-\def\Ans@ck@sq@f@Actions{%
- \A{\if\Ans@choice\eq@One
- \JS{\Ans@ck@sq@f@ActionsTrue}\else
- \JS{\Ans@ck@sq@f@ActionsFalse}\fi}%
- \AAmousedown{updateTally.downState=!!event.target.isBoxChecked(0);}}
-\def\Ans@ck@sq@f{%
- \if\eq@listType\eq@One\stepcounter{quizno}\else
- \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
- {\ifwithsoldoc\stepcounter{quizno}\else
- \refstepcounter{quizno}\fi}\fi\PBS\raggedright
- \if\Ans@choice1%
- \def\rbf@Opts{\symbolchoice{\sq@corrsymch}%
- \textColor{\sq@corrsymcol}}\else
- \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}%
- \textColor{\sq@wrgsymcol}}\fi
- \settowidth{\eq@tmplength}{\eq@lw@f}%
- \eq@tmpdima=\wd\eq@tmpbox%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \insertGrayLetters % 6.3d
- \mbox{\expandafter\check@@Box\expandafter{\rbf@Opts}%
- {mc.\oField.\thequestionno.\arabic{quizno}}%
- {\RadioFieldSize}{\RadioFieldSize}
- {\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\@@Ans@ck@sq@f@Defaults\Ans@ck@sq@f@Actions\every@CheckBox
- \every@sqCheckBox}}%
- \Ans@proofing{\RadioFieldSize}%
-\eq@hspanner\ignorespaces}
-\newskip\aboveanswersSkip
-\setlength\aboveanswersSkip{3pt}
-\let\q@hwdest\@empty % hard-wired destination
-\let\pointValuesArray\@empty
-\newif\ifeqshowmarkup\eqshowmarkupfalse
-\newif\ifeqshowOutOf \eqshowOutOffalse
-\def\showOutOfinSmryTbl{false}
-\def\eq@recordThesePTs{%
- \ifx\pointValuesArray\@empty
- \edef\ptsValue{\showOutOfinSmryTbl,\eqPTs}\else
- \edef\ptsValue{,\eqPTs}\fi
- \expandafter\g@addto@macro\expandafter\pointValuesArray
- \expandafter{\ptsValue}}
-\let\ptypeArray\@empty
-\def\eq@recordProbType{%
- \ifx\ptypeArray\@empty
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\ptypeArray{null,"\eqQT"}}\else
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\ptypeArray{,"\eqQT"}}\fi
- \tmp@exp
-}
-\let\corrAnsArray\@empty
-\def\eq@recordCorrAns#1{%
- \ifx\corrAnsArray\@empty
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\corrAnsArray{null,#1}}\else
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\corrAnsArray{,#1}}\fi
- \tmp@exp
-}
-\def\aeb@answerType@r{r}
-\def\aeb@answerType@c{c}
-\newcommand\answers@q{%
- \eq@AddProbToQzQuesList
- \def\aeb@answerType{r}\setdefault@Ans\eq@recordThesePTs
- \eq@recordProbType
- \addtocounter{eqpointvalue}{\eqPTs}\stepcounter{questionno}%
- \def\aeb@thisType{"mc"}\@ifnextchar[{\answers@@q}%
- {\@ifstar{\answers@@q[\curr@quiz.\thequestionno]}{\answers@@q[]}}%
-}
-\def\answers@@q[#1]#2{\global\let\eq@ansChoiceArray\@empty
- \xdef\aeb@numCols{#2}\edef\eqtmp{\aPointType}%
- \xdef\aPointType{\eqtmp,[\eqPTs,\aeb@thisType]}%
- \ifx\q@hwdest\@empty
- \xdef\@qzsolndest{#1}\else
- \gdef\@qzsolndest{\q@hwdest}\fi
- \ifnum\aeb@numCols=1
- \gdef\eq@listType{1}\expandafter\answers@q@list\else
- \gdef\eq@listType{0}\expandafter\answers@q@tabular\fi{\aeb@numCols}%
-}
-\newcommand\manswers@q
-{%
- \eq@AddProbToQzQuesList
- \def\aeb@answerType{c}\@setFormLinkType
- \global\expandafter\let\expandafter\@Ans
- \expandafter=\csname Ans@ck@\@@quiztype\endcsname
- \eq@recordThesePTs\eq@recordProbType
- \addtocounter{eqpointvalue}{\eqPTs}\stepcounter{questionno}%
- \def\aeb@thisType{"ms"}\@ifnextchar[{\answers@@q}%
- {\@ifstar{\answers@@q[\curr@quiz.\thequestionno]}{\answers@@q[]}}%
-}
-\newenvironment{answers@q@list}[1]{%
- \ifx\aeb@answerType\eq@r
- \let\endanswers\endanswers@q@list\else
- \let\endmanswers\endanswers@q@list\fi
- \list{\strut\@Ans}{%
- \if\qstar*\relax
- \if\aeb@FLOverride\eq@l
- \settowidth{\labelwidth}{\eq@lw@l}\else
- \settowidth{\labelwidth}{\eq@lw@f}\fi
- \else
- \if\aeb@FLOverride\eq@f
- \settowidth{\labelwidth}{\eq@lw@f}\else
- \settowidth{\labelwidth}{\eq@lw@l}\fi
- \fi
- \setlength{\topsep}{-\parskip+\aboveanswersSkip}%
- \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \setlength{\leftmargin}{\labelwidth}%
- \setlength{\labelsep}{0pt}%
- \def\Ans{\Ans@list}%
- }%
-}{\endlist\setcounter{quizno}{0}%
- \eq@answersEndHook
- \setdefault@Ans
- \ifx\aeb@answerType\aeb@answerType@r
- \eq@recordCorrAns{\eq@ansChoiceArray}\ifwithinMCFI
- \eq@recordCorrAns{\s@veCorrAnsMCFI}\fi\else
- \eq@recordCorrAns{[\eq@ansChoiceArray]}\fi
- \global\let\eqlimselTo\@empty
-}
-\newcommand\qztabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
- \def\qz@tabsep{1.5pt}\else\def\qz@tabsep{#1}\fi}
-\qztabsep{1.5pt}
-\def\qzTabPos#1{\def\qz@TabPos{[#1]}}\qzTabPos{}
-\def\answers@q@tabular#1{%
- \ifinner\else\par\removelastparskip\vspace{\aboveanswersSkip}\fi
- \eq@tmpdima=\linewidth
- \@tempcnta#1\relax
- \advance\@tempcnta-1\relax
- \multiply\@tempcnta by2
- \@tempdima\qz@tabsep\relax
- \multiply\@tempdima\@tempcnta
- \advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by#1
- \tabcolsep\qz@tabsep\relax
- \def\Ans{\Ans@tabular}%
- \ifx\aeb@answerType\eq@r
- \let\endanswers\endanswers@q@tabular\else
- \let\endmanswers\endanswers@q@tabular\fi
- \noindent\expandafter
- \tabular\qz@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}%
-}
-\def\endanswers@q@tabular
-{%
- \endtabular\setcounter{quizno}{0}%
- \eq@answersEndHook
- \setdefault@Ans
- \ifx\aeb@answerType\aeb@answerType@r
- \eq@recordCorrAns{\eq@ansChoiceArray}\ifwithinMCFI
- \eq@recordCorrAns{\s@veCorrAnsMCFI}\fi\else
- \eq@recordCorrAns{[\eq@ansChoiceArray]}\fi
- \global\let\eqlimselTo\@empty
-}
-\let\qRadionActionsHook\@empty
-\def\Ans@@l@Actions{\A{\JS{%
- this.getField("mc.\curr@quiz.\thequestionno").value
- = "\Ans@choice\alph{quizno}";\jsR
- RecordPointValue([0,\eqPTs,\eq@pPTs],\thequestionno);\jsR
- RecordProblemType("\eqQT",\thequestionno);\jsR
- ProcessQuestion(\Ans@choice,"\alph{quizno}",\thequestionno,%
-\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
-"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
-\ifeq@noquizsolutions\else,1\fi\fi\fi);\qRadionActionsHook}}%
-}
-\def\Ans@r@l@Defaults
-{%
- \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}\F{\FPrint}
- \textSize{12}\textColor{0 g}\Ff{\FfReadOnly}
-}
-\def\Ans@l{\leavevmode\if\eq@listType1\stepcounter{quizno}%
- \else\refstepcounter{quizno}\fi\PBS\raggedright
- \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \eq@tmpdima=\wd\eq@tmpbox
- \def\link@@Content{(\hfil\linkContentFormat\hfil)}%
- \def\late@options{\BC{}}%
-\if\Ans@choice1\relax\eq@recordAnsChoice\fi
- \makebox[0pt][l]{\radio@@Button{}{mc.\curr@quiz.\thequestionno}%
- {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@r@l@Defaults\every@RadioButton
- \every@qRadioButton\late@options}}%
- \set@@Link{}{}{}%
- {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}%
- {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
- {\set@LinkTextDefaults\Ans@@l@Actions\every@Link}%
- \ifnocorrections\else
- \if\Ans@choice1\relax
- \edef\Ans@c@l@Choice{\noexpand\DV{Yes}%
- \ifx\@qzsolndest\@empty
- \noexpand\Ff{\FfReadOnly}%
- \else % there is a solution
- \ifeq@noquizsolutions
- \noexpand\Ff{\FfReadOnly}%
- \else
- \noexpand\A{\noexpand\quiz@SolutionActionHook}%
- \fi
- \fi
- }%
- \else
- \def\Ans@c@l@Choice{\Ff{\FfReadOnly}\BC{}}%
- \fi
- \def\late@options{\BC{}}%
- \if\Ans@choice1\relax
- \ifx\@qzsolndest\@empty\else
- \ifeq@noquizsolutions\else
- \edef\late@options{\noexpand\BC{\solution@Color}}%
- \fi
- \fi
- \fi
- \makebox[0pt][r]{\check@@Box{}%
- {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\eq@tmpdima}{0pt}{Yes}{}% \@tempdimb
- {\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@c@f@Defaults\Ans@c@l@Choice\every@RadioButton
- \every@qRadioButton\late@options}}%
- \fi
- \Ans@proofing{\eq@tmpdima}%
-\eq@hspanner\ignorespaces}
-\def\Ans@ck@@l@Actions{\A{\JS{%
- var ckfName="mck.\curr@quiz.\thequestionno.\arabic{quizno}";\jsR
- var ckf = this.getField(ckfName);\jsR
- ckf.checkThisBox(0,!ckf.isBoxChecked(0));\jsR
- var _bOK=true;\jsR
-\ifx\eqlimselTo\@empty\else _bOK = LimitSelection(\eqlimselTo,%
-"mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi
-if (_bOK) {\jsR\jsT
- var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",%
-\thequestionno,\arabic{quizno},"\curr@quiz",\eqPTs,\eq@pPTs);\jsR\jsT
- RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
- ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,%
-\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
-"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
-\ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR
-}
- }}
-}
-\def\Ans@ck@l@Defaults
-{%
- \BC{}\S{S}\W{1}\H{N}\Ff{\FfNoToggleToOff}
- \textSize{12}\textColor{0 g}\Ff{\FfReadOnly}
-}
-\def\Ans@ck@l{%
- \leavevmode\if\eq@listType1\stepcounter{quizno}%
- \else\refstepcounter{quizno}\fi
- \if\Ans@choice1\eq@recordAnsChoice\fi\PBS\raggedright
- \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
- \hangindent=\eq@tmplength\hangafter=1\relax
- \eq@tmpdima=\wd\eq@tmpbox
- \def\link@@Content{(\hfil\linkContentFormat\hfil)}%
- \makebox[0pt][l]{%
- \check@@Box{}{mck.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@ck@l@Defaults\every@RadioButton
- \every@qckCheckbox}}%
- \set@@Link{}{}{}%
- {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}%
- {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
- {\set@LinkTextDefaults\Ans@ck@@l@Actions\every@Link}%
- \ifnocorrections\else
- \if\Ans@choice1\relax
- \edef\Ans@c@l@Choice{\noexpand\DV{Yes}%
- \ifx\@qzsolndest\@empty\noexpand\BC{}%
- \noexpand\Ff{\FfReadOnly}%
- \else % there is a solution
- \ifeq@noquizsolutions
- \noexpand\BC{}\noexpand\Ff{\FfReadOnly}%
- \else
- \noexpand\BC{\solution@Color}%
- \noexpand\A{\noexpand\quiz@SolutionActionHook}%
- \fi
- \fi
- }%
- \else
- \def\Ans@c@l@Choice{\Ff{\FfReadOnly}\BC{}}%
- \fi
- \makebox[0pt][r]{\check@@Box{}%
- {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\eq@tmpdima}{0pt}{Yes}{}%
- {\eq@setWidgetProps\eq@l@check@driver}%
- {\Ans@c@f@Defaults\Ans@c@l@Choice\every@RadioButton
- \every@qRadioButton}}%
- \fi
- \Ans@proofing{\eq@tmpdima}%
-\eq@hspanner\ignorespaces}
-\def\Ans@f{\leavevmode\if\eq@listType1\stepcounter{quizno}%
- \else\refstepcounter{quizno}\fi
- \PBS\raggedright\Ans@@f}
-\def\Ans@r@f@Defaults
-{%
- \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff}
- \F{\FPrint}\textSize{12}\textColor{0 g}
-}
-\def\Ans@r@f@Actions{\A{\JS{%
- RecordPointValue([0,\eqPTs,\eq@pPTs],\thequestionno);\jsR
- RecordProblemType("\eqQT",\thequestionno);\jsR
- ProcessQuestion(\Ans@choice,"\alph{quizno}",\thequestionno,%
- \arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
- "\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
- \ifeq@noquizsolutions\else,1\fi\fi\fi);\qRadionActionsHook}}
-}
-\def\quiz@SolutionActionHook{%
- /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(%
- ["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>>
-}
-\def\Ans@c@f@Defaults
-{%
- \BC{0 0 0}\S{S}\W{1}\F{\FHidden}\textSize{12}
- \textColor{0 g}\symbolchoice{circle}
-}
-\let\bottomOfAnsfStack\relax
-\providecommand\graylettersColor{gray}
-\def\insertGrayLetters{\ifaebshowgrayletters
- \rlap{\makebox[\RadioFieldSize]%
- {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi}
-\def\Ans@@f
-{%
- \settowidth{\eq@tmplength}{\eq@lw@f}%
- \hangindent=\eq@tmplength\hangafter=1
- \bottomOfAnsfStack\insertGrayLetters
- \edef\rbf@Opts{\ifaeb@usecircles\else
- \noexpand\symbolchoice{\qz@chksymb}\fi
- \noexpand\textColor{\qz@chksymbcol}}%
- \if\Ans@choice1\eq@recordAnsChoice\fi
- \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
- {mc.\curr@quiz.\thequestionno}%
- {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\Ans@r@f@Defaults\Ans@r@f@Actions\every@RadioButton
- \every@qRadioButton\insert@circlesymbol}}%
- \let\late@options\@empty
- \ifnocorrections\else
- \if\Ans@choice1\relax
- \edef\Ans@c@f@Choice{\noexpand\DV{Yes}%
- \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}%
- \else
- \ifeq@noquizsolutions
- \noexpand\Ff{\FfReadOnly}%
- \else
- \noexpand\A{\noexpand\quiz@SolutionActionHook}%
- \fi
- \fi
- }%
- \else
- \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}%
- \fi
- \ifaeb@usecircles\def\late@options{\BC{}}\fi
- \if\Ans@choice1\relax
- \ifx\@qzsolndest\@empty\else
- \ifeq@noquizsolutions\else
- \edef\late@options{\noexpand\BC{\solution@Color}}%
- \fi
- \fi
- \fi
- \makebox[0pt][r]{\check@@Box{}%
- {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
- \every@qCheckBox\late@options}}%
- \fi
- \Ans@proofing{\RadioFieldSize}%
-\eq@hspanner\ignorespaces}
-\def\limitSelectionTo#1{\def\eqlimselTo{#1}}
-\let\eqlimselTo\@empty
-\def\Ans@ck@f{\leavevmode\if\eq@listType1\stepcounter{quizno}%
- \else\refstepcounter{quizno}\fi
- \if\Ans@choice1\eq@recordAnsChoice\fi
- \PBS\raggedright\Ans@@ck@f}
-\def\Ans@ck@f@Defaults
-{%
- \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff}
- \textSize{12}\textColor{0 g}
-}
-\def\Ans@ck@f@Actions
-{%
- \A{\JS{%
- var _bOK=true;\jsR
-\ifx\eqlimselTo\@empty\else _bOK = LimitSelection(\eqlimselTo,%
-"mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi
-if (_bOK) {\jsR\jsT
- var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",%
-\thequestionno,\arabic{quizno},"\curr@quiz",\eqPTs,\eq@pPTs);\jsR\jsT
- RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
- ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,%
-\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
-"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
-\ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR
-}}}%
-}
-\def\quiz@SolutionActionHook{%
- /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(%
-["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>>
-}
-\def\Ans@@ck@f
-{%
- \settowidth{\eq@tmplength}{\eq@lw@f}%
- \hangindent=\eq@tmplength\hangafter=1
- \bottomOfAnsfStack\insertGrayLetters
- \bottomOfAnsfStack\insertGrayLetters
-\def\cbf@Opts{\symbolchoice{\qz@chksymb}%
- \textColor{\qz@chksymbcol}}%
- \mbox{\expandafter\check@@Box\expandafter{\cbf@Opts}%
- {mck.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton
- \every@qckCheckbox}}%
- \ifnocorrections\else
- \if\Ans@choice1\relax
- \edef\Ans@c@f@Choice{\noexpand\DV{Yes}%
- \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}%
- \else
- \ifeq@noquizsolutions
- \noexpand\Ff{\FfReadOnly}%
- \else
- \noexpand\A{\noexpand\quiz@SolutionActionHook}%
- \fi
- \fi
- }%
- \else
- \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}%
- \fi
- \let\late@options\@empty
- \if\Ans@choice1\relax
- \ifx\@qzsolndest\@empty\else
- \ifeq@noquizsolutions\else
- \edef\late@options{\noexpand\BC{\solution@Color}}%
- \fi
- \fi
- \fi
- \makebox[0pt][r]{\check@@Box{}%
- {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
- {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
- \every@qCheckBox\late@options}}%
- \fi
- \Ans@proofing{\RadioFieldSize}%
-\eq@hspanner\ignorespaces}
-\newcount\eq@tabColCnt
-\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
-\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
- \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
- \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
- }\temp@expand@def
-}
-\def\bChoiceNumCols{\aeb@numCols}
-\define@key{bchoice}{random}[true]{%
- \csname if#1\endcsname\eq@randomizeChoicestrue
- \else\eq@randomizeChoicesfalse\fi
-}
-\define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}}
-\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
-\def\@ansChoices[#1]%
-{%
- \global\let\@tempholdSaveAns\@empty %4/5
- \global\let\@tempholdSaveChoice\@empty %4/5
- \global\let\bChoiceLabel\@empty %4/5
- \setkeys{bchoice}{#1}%
- \global\eq@tabColCnt=0
- \ifnum\aeb@numCols=1 % list mode
- \def\eq@next{\@layoutListAns}\else % tabular mode
- \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi
- \eq@next
-}
-\let\eChoices\relax
-\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
- {\@lookforendansChoices{\@layoutListAns}}%
-}
-\newcommand{\eq@saveAns}[2][]{%
- \let\eq@next\@@@SaveAnsGobbleAns
- \ifx\bChoiceLabel\@empty\else
- \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}%
- \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi
- \fi\eq@next
-}
-\long\def\@@@SaveAns#1\eAns{% 4/5
- \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}%
- \addtocounter{quizno}{1}%
- \edef\temp@expand{\noexpand\g@addto@macro\noexpand
- \@tempholdSaveChoice{%
- \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else
- \ifaebshowgrayletters\Alph{quizno}\else
- \linkContentFormat\fi\fi}}}\temp@expand
- \addtocounter{quizno}{-1}%
-}
-\newif\ifoxfordcomma \oxfordcommatrue
-\def\oxfordCommaOn{\oxfordcommatrue}
-\def\oxfordCommaOff{\oxfordcommafalse}
-\def\eq@insertComma{%
- \ifx\eq@comma\@empty
- \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
- \def\eq@comma{,}\fi
- \else\ifx\eq@insertAnd\@empty\eq@comma\space
- \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}%
- \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space
- \fi
- \fi
-}
-\newcommand\eqAnd{and}\def\eq@insertAnd{%
- \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else
- \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
- \else\leavevmode\space\fi\eqAnd\space\fi}
-\long\def\eq@displayAns#1{\advance\@tempcnta1\relax
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
-\def\eq@displayAlts#1{\advance\@tempcnta1
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi
- \savedAltFmt{#1}}
-\def\eq@displayAltsAns#1{\advance\@tempcnta1\relax
- \eq@insertComma
- \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
-\newcommand{\savedAltFmt}[1]{(#1)}
-\newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i}
- {\let\eq@insertAnd\@empty\useSavedAns@i}}
-\newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\let\label\@gobble
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAns\@nameuse{SavedAns#2}\else
- \@nameuse{SavedAns#2-Idx#1}\fi
- \egroup
-}
-\newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i}
- {\let\eq@insertAnd\@empty\useSavedAlts@i}}
-\newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\@nameuse{caseFor#2}%
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else
- \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi
- \egroup
-}
-\newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i}
- {\let\eq@insertAnd\@empty\useSavedAltsAns@i}}
-\newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax
- \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble
- \def\eq@argi{#1}\ifx\eq@argi\@empty
- \let\eq@comma\@empty
- \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else
- \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}
- \@nameuse{SavedAns#2-Idx#1}\fi
- \egroup
-}
-\newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}}
-\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5
-\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph
- \eq@saveAns#1\eAns % 4/5
- \Ans#1\vspace{\@rowskip}%
- \@layoutListAns
-}
-\long\def\@lookforendansChoices#1{%
- \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
- \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
-}
-\def\@layoutTabularAns#1{%
- \let\eq@tabSep\@empty
- \xdef\numShortCols{#1}%
- \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
- \@@layoutTabularAns
-}
-\def\@@layoutTabularAns{%
- \@ifnextchar\Ans{\@getTabAns}%
- {\@lookforendansChoices{\@@layoutTabularAns}}%
-}
-\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
-\rowsep{\rowsep@default}
-\def\rowsepDefault#1{\def\rowsep@default{#1}}
-\def\rowsep@default{0pt}
-\long\def\@getTabAns\Ans#1\eAns{%
- \eq@saveAns#1\eAns
- \global\advance\eq@tabColCnt1
- \let\@save@tabSep=\eq@tabSep
- \ifnum\eq@tabColCnt=\numShortCols
- \global\eq@tabColCnt=0
- \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
- \else
- \gdef\eq@tabSep{&}%
- \fi
- \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
- \expandafter\@findendans\@gobble}%
- {\@save@tabSep\Ans#1\@@layoutTabularAns}%
-}
-\def\@findendans{\@ifnextchar\end{% 4/5
- \ifx\bChoiceLabel\@empty\else
- \processLabeledAns\fi
- }{\expandafter\@findendans\@gobble}}%
-\def\defineEachAns#1{\advance\count0by1\relax
- \@temptokena={#1}\csarg\xdef
- {SavedAns\bChoiceLabel-Idx\the\count0}{\the\@temptokena}%
- \ifsolutionsonly\else
- {\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}}}\fi
-}
-\def\defineEachChoice#1{\advance\count0by1\relax
- \@temptokena={#1}\csarg\xdef
- {SavedAlts\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}\ifsolutionsonly\else
- {\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAlts\bChoiceLabel-Idx\the\count0}%
- {\the\@temptokena}}}\fi
-}
-\def\processLabeledAns{%
- \bgroup
- \let\label\@gobble
-\if\aeb@FLOverride\eq@l
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else
- \ifaebshowgrayletters
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else
- \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi
-\fi
- \toks@=\expandafter{\@tempholdSaveAns}\csarg
- \xdef{SavedAns\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi
- \count0=0\relax\let\\\defineEachAns\the\toks@
- \xdef\@currNCntAns{\the\count0 }\csarg
- \xdef{NumAns\bChoiceLabel}{\@currNCntAns}%
- \ifsolutionsonly\else{\eq@IWDefs{\string
- \csarg\string\gdef{NumAns\bChoiceLabel}{\the\count0 }}}\fi
- \toks@=\expandafter{\@tempholdSaveChoice}\csarg
- \xdef{SavedAlts\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi
- \count0=0\relax\let\\\defineEachChoice\the\toks@
- \count0=1\relax\toks@={}%{\ignorespaces\@gobble}%
- \loop
- \edef\temp@exp{\the\toks@\noexpand\\{%
- \noexpand\useSavedAlts[\the\count0]{\bChoiceLabel}
- \noexpand\useSavedAns[\the\count0]{\bChoiceLabel}}}%
- \toks@=\expandafter{\temp@exp}%
- \ifnum\count0<\@currNCntAns
- \advance\count0by1
- \repeat
- \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}%
- \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
- \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi
- \egroup
-}
-\def\graylettersOn{\aebshowgrayletterstrue}
-\def\graylettersOff{\aebshowgraylettersfalse}
-\def\aeb@exiii{\expandafter\expandafter\expandafter}
-\def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar}
- {\let\isREFstar\eq@Zero\aeb@REF}}
-\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
- {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
- \else\ref*{#1}\fi}%
-}
-\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
- {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
- \else\ref{#1}\fi}%
-}
-\def\aeb@buildUpperCaseRef#1{%
- \xdef\tmp@expand{\aeb@exiii\@firstoffive\csname r@#1\endcsname}%
- \xdef\tmp@expand{\uppercase{\tmp@expand}}%
- \if\isREFstar\eq@One\tmp@expand\else\hyperref[#1]{\tmp@expand}\fi
-}
-\newif\ifaeb@usecircles\aeb@usecirclesfalse
-\let\insert@circlesymbol\@empty
-\def\useMCCircles{\useForms
- \ifaeb@usecircles\else
- \global\aeb@usecirclestrue
- \gdef\insert@circlesymbol{\symbolchoice{circle}}%
- \fi
-}
-\def\useMCRects{\useForms
- \ifaeb@usecircles\global\aeb@usecirclesfalse
- \global\let\insert@circlesymbol\@empty
- \fi
-}
-\let\useMCCRects\useMCRects
-\let\oqpriorhook\@empty
-\newenvironment{oQuestion}[1]{%
- \let\@currentQues\@empty
- \xdef\eq@pageThisQ{\the\c@page}%
- \global\let\eqQzQuesList\@empty
- \xdef\oField{#1}\xdef\curr@quiz{#1}\xdef\currQuiz{#1}%
- \g@addto@macro\ListOfSQuizNames{,#1}\let\@qzsolndest\@empty
- \let\eqQuizType\isSQZ\gdef\eqPTs{1}\global\let\eqQT\eq@na
- \let\answers\answers@sq
- \let\endanswers\endanswers@sq
- \let\manswers\manswers@sq
- \let\endmanswers\endmanswers@sq
- \let\solution\solution@sq
- \let\endsolution\endsolution@sq
- \noindent\oqpriorhook\sq@IDTxtField\ifx\aebTitleQuiz\@empty
- \else\aebtitleQuiz\fi\ignorespaces
-}{%
- \global\let\aebtitleQuiz\@empty
- \global\let\aebTitleQuiz\@empty
- \global\let\eq@tq@star\relax
- \aftergroup\ignorespaces
-}
-\def\oSolution#1{\edef\@qzsolndest{#1}}
-\def\replaceExclPt#1{\def\replaceexclaim{#1}}
-\replaceExclPt{false}
-\def\negPointsAllowed{\def\negpointsallowed{true}}
-\@onlypreamble{\negPointsAllowed}
-\def\negpointsallowed{false}
-\def\negPointsMarkupAllowed{\def\negpointsmarkupallowed{true}}
-\def\negpointsmarkupallowed{false}
-\@onlypreamble{\negPointsMarkupAllowed}
-\def\requireAlertBox{\def\bcheckboxused{false}}
-\def\allowNoAlertBox{\def\bcheckboxused{true}}
-\allowNoAlertBox
-\newcommand\RespBoxNT{\RespBoxMath}
-\newcommand\RespBox{\RespBoxMath}
-\newcommand\RespBoxMath{\def\rbFlag{0}\begingroup\Hy@unicodefalse
- \@makeother\^\@makeother\&\@RespBox}
-\def\eq@rpl#1#2{_rplVarsBy('#1','#2')@} % dps17
-\ifnum\eq@drivernum=0\def\RorRT{\r\t}\else\def\RorRT{\r}\fi
-\def\toAltApprCnt{0}\def\toAltApprVar{_toAltAppr\toAltApprCnt}
-\def\toAltApprCntInc{{\@tempcnta=\toAltApprCnt\relax
- \advance\@tempcnta1\relax
- \xdef\toAltApprCnt{\the\@tempcnta}}}
-\def\setCoreInitAltAppr{%
-var\eqSP_substVars=\indepVars;\RorRT
-var\eqSP_mathVars=processMathVars(_substVars);\RorRT
-var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT
- event.value=RespBoxAppr(event);\RorRT
- getSubstValue.aSubsts=[];%
-}
-\def\bInitAltAppr{\ifShowAppr
- \def\ShowApprSAVE{true}\toAltApprCntInc\ShowApprfalse
- \def\eqAddAAFormat{\ifnum\eq@drivernum=0try\eqLBr\RorRT\fi
- \setCoreInitAltAppr\ifnum\eq@drivernum=0 \r\eqRBr catch(e){\RorRT
- var\eqSP\toAltApprVar=%
- app.setTimeOut('this.resetForm("'+event.target.name+'");%
- app.clearTimeOut(\toAltApprVar);',250);\r}\fi}\else
- \def\ShowApprSAVE{false}\fi
-}
-\def\eInitAltAppr{\@nameuse{ShowAppr\ShowApprSAVE}%
- \ifShowAppr\altApprOn\let\eqAddAAFormat\@empty\fi}
-\def\AAKqRespBoxMath{%
- if(event.willCommit){\r\t
- RecordPointValue(\eqPTs,\thequestionno\ifx\grpquestions1,%
-\thegrpquestionno,\grpPointValue,\grpTotalWeight,%
-"\grpEvalFunction"\fi);\r\t
- RecordProblemType("\eqQT",\thequestionno);\r\t
-\ifSubstVars % dps17
- var\eqSP_substVars=\indepVars;\r\t
- var\eqSP_mathVars=processMathVars(_substVars);\r\t
- var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t
- var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t
- var\eqSP retn=\processJSfunc(\rbArgs,%
- \compareJSfunc,_substValue);\r\t
-\else
- var\eqSP_mathVars=\indepVars;\r\t
- var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc);\r\t
-\fi
- ProcUserResp(retn,event.value,\thequestionno,%
-0\ifx\grpquestions1,\thegrpquestionno\fi);\r
- }\r
- if (!isQuizInitialized("\currQuiz")) {\r\t
- \eqObjAlert\space eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t
- event.rc = false;\r
- }
-}
-\def\RespBoxMathDefaults
-{%
- \BC{0 0 0}\S{S}\textColor{0 g}\F{\FPrint}\W{1}
-}
-\def\moreRespBoxMathDefaults
-{%
- \edef\@moreRespBoxMathDefaults{%
- \if\eqQuizType\isQZ\ifx\eq@online\eq@YES
- \ifeq@noquizsolutions
- \else\noexpand\Ff{\FfReadOnly}\fi\fi\fi
- }%
-}
-\let\eqAddAAFormat\@empty
-\def\eqSP{\string\040} % dps17
-\def\eqLBr{\string\173}
-\def\eqRBr{\string\175}
-\def\@@RespBoxMathActions{%
- \AA{\if\eqQuizType\isQZ
- \AAKeystroke{\AAKqRespBoxMath\eqAddAAKeystroke}
- \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17
- try{event.value=RespBoxAppr(event);}catch(e){}\r
- \fi\fi\fi\eqAddAAFormat}
- \else
- \AAKeystroke{if(event.willCommit) {\r\t
-\ifSubstVars%
- var\eqSP_substVars=\indepVars;\r\t
- var\eqSP_mathVars=processMathVars(_substVars);\r\t
- var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t
- var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t
- var\eqSP retn=\processJSfunc(\rbArgs,%
- \compareJSfunc,_substValue);\r\t
-\else
- var\eqSP_mathVars=\indepVars;\r\t
- var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc);
-\fi
-\if\@sqTurnOffAlerts1\r\t
- OnBlurRespBox(retn,"\curr@quiz");
-\fi
- \eqAddAAKeystroke\r
- }}
- \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17
- try{event.value=RespBoxAppr(event);}catch(e){}\r\fi\fi\fi
- \eqAddAAFormat}%
- \AAOnFocus{\JS{var retn = null;}}%
- \AAOnBlur{\JS{OnBlurRespBox(null,"\curr@quiz");}}%
-\fi
- }
-}
-\def\annot@subtype@rbm{rbm}
-\newcommand\@RespBox[1][]
-{%
- \edef\annot@subtype{\annot@subtype@rbm}%
- \eq@AddProbToQzQuesList
- \smallskip\ifx\grpquestions\eq@Zero
- \addtocounter{eqpointvalue}{\eqPTs}\fi
- \if\eqQuizType\isQZ
- \def\rbFlag{1}\global\IsRespBoxtrue
- \ifx\grpquestions\eq@One
- \stepcounter{grpquestionno}%
- \def\Fld@name{%
- grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
- \else
- \eq@recordThesePTs\eq@recordProbType
- \edef\eqtmp{\aPointType}%
- \xdef\aPointType{\eqtmp,[\eqPTs,"math"]}%
- \stepcounter{questionno}%
- \def\Fld@name{obj.\curr@quiz.\thequestionno}%
- \fi
- \else % shortquiz
- \ifx\grpquestions\eq@One
- \stepcounter{grpquestionno}%
- \def\Fld@name{%
- grpobj.\oField.\thequestionno.\thegrpquestionno}%
- \else
- \stepcounter{questionno}%
- \def\Fld@name{%
- obj.\oField.\thequestionno}%
- \fi
- \fi
- \let\Array\aeb@array
- \moreRespBoxMathDefaults
- \leavevmode\hbox\bgroup\let\rpl\eq@rpl
- \text@@Field{#1}{\Fld@name}%
- {\RBW}{\DefaultHeightOfWidget}%
- {\eq@protect\AA}{\eq@setWidgetProps\eq@RespBox}%
- {\RespBoxMathDefaults\@moreRespBoxMathDefaults
- \@@RespBoxMathActions\every@eqTextField\every@RespBoxMath}%
-}
-\def\eq@RespBox#1{\pdfstringdef\eqCorrectAns{#1}%
- \gdef\eqCorrectAnsTeX{#1}\if\grpquestions\eq@Zero
- \ifwithinMCFI\gdef\s@veCorrAnsMCFI{"#1"}\fi
- \else
- \eq@recordGrpAnsArray{"#1"}\fi
- \@ifnextchar({\@eq@RespBox{#1}}{\@eq@RespBox{#1}(x)}}
-\def\@eq@RespBox#1(#2){\@ifnextchar[{\@eq@RespB@x{#1}(#2)}%
- {\@ifstar{\@eq@RespB@x{#1}(#2)[\curr@quiz.\thequestionno]}%
- {\@eq@RespB@x{#1}(#2)[]}}}
-\def\eq@ZERO{0}
-\def\defaultRDPrecision#1{\def\eq@defaultRDPrecision{#1}}
-\defaultRDPrecision{1E-14}
-\newif\ifarrowDelim\arrowDelimfalse % dps17
-\def\rpl@#1#2{\rpl@i#1->\@nil}
-\def\rpl@i#1->#2\@nil{\def\argii{#2}\ifx\argii\@empty\else
- \global\arrowDelimtrue\fi}
-\def\GiiRpli#1{\global\arrowDelimfalse\GiiRplii#1\rpl{}{}\@nil}
-\def\GiiRplii#1\rpl#2#3#4\@nil{\def\argiv{#4}%
- \ifx\argiv\@empty\let\eq@next\relax\else
- \rpl@{#2}{#3}\ifarrowDelim\let\eq@next\relax\else
- \def\eq@next{\GiiRplii#4\@nil}\fi\fi
- \eq@next}
-\def\isAltApprSpec#1{\bgroup\if\frstIsrpl\eq@YES\GiiRpli{#1}\else
- \expandafter\GiiRpli\expandafter{#1}\fi\egroup} % dps17
-\def\isFrstrpl#1#2\@nil{\ifx#1\rpl\let\frstIsrpl\eq@YES\else
- \let\frstIsrpl\eq@NO\fi}
-\def\cntComm@s#1{\@tempcnta\z@\expandafter\cntComm@si#1,,\@nil}
-\def\cntComm@si#1,#2,\@nil{\def\argii{#2}\ifx\argii\@empty
- \def\eq@next{\edef\nC{\the\@tempcnta}}\else
- \advance\@tempcnta\@ne\def\eq@next{\cntComm@si#2,\@nil}\fi
- \eq@next}\def\eq@SC{;}\def\rplSofT#1#2{#2}
-\def\cntVars#1{\let\rpl\rplSofT\edef\eV@rs{#1}\let\rpl\eq@rpl
- \cntComm@s{\eV@rs}\ifnum\nC>\z@
- \@tempcnta\nC\relax\advance\@tempcnta\@ne
- \xdef\nV{\the\@tempcnta}\else\@tempcnta\z@
- \expandafter\cntVarsi\eV@rs;\@nil\fi}
- \def\cntVarsi#1#2\@nil{\def\argii{#2}%
- \ifx\argii\eq@SC\def\eq@next{\advance\@tempcnta\@ne
- \edef\nV{\the\@tempcnta}}\else\advance\@tempcnta\@ne
- \def\eq@next{\cntVarsi#2\@nil}\fi
- \eq@next}
-\def\eq@X{x}
-\def\eq@isThereRept#1{\let\eq@isRept\eq@Zero\expandafter
- \eq@isThereRepti#1*\@nil}
-\def\eq@isThereRepti#1*#2\@nil{\def\argii{#2}\ifx\argii\@empty
- \let\eq@isRept\eq@Zero\else\let\eq@isRept\eq@One\fi}
-\def\eq@obeyReptOfIntrvls#1{%
- \expandafter\eq@isThereRept\expandafter{#1}% sets \eq@isRept
- \if\eq@isRept\eq@Zero\relax\let\eq@interv@ls\@empty\expandafter
- \g@addto@macro\expandafter\eq@interv@ls
- \expandafter{#1}\let\eq@next\relax\else\let\eq@interv@ls\@gobble
- \def\eq@next{\expandafter
- \eq@obeyReptOfIntrvlsi#1x[]x\@nil}\fi\eq@next}
-\def\eq@obeyReptOfIntrvlsi#1[#2]#3#4x#5\@nil{%
- \def\argi{#2}\def\argii{#3}\def\argiv{#5}%
- \ifx\argi\@empty\let\eq@next\relax\else
- \ifx\argii\eq@X\g@addto@macro\eq@interv@ls{x[#2]}%
- \def\eq@next{\eq@obeyReptOfIntrvlsi#4x#5x\@nil}\else
- % repetition of an interval
- \eq@ddtorepIntrvl{[#2]}{#4}%
- \def\eq@next{\eq@obeyReptOfIntrvlsi#5x\@nil}\fi
- \fi
- \eq@next
-}
-\def\eq@ddtorepIntrvl#1#2{\@tempcnta=#2 \eq@ddtorepIntrvli{#1}{#2}}
-\def\eq@ddtorepIntrvli#1#2{\@whilenum\@tempcnta>\z@\do
- {\g@addto@macro\eq@interv@ls{x#1}\advance\@tempcnta\m@ne}}
-\def\cntIv@ls#1{\@tempcnta\z@\expandafter\cntIv@lsi#1xxx\@nil}%
-\def\cntIv@lsi#1x#2x\@nil{\def\argii{#2}\ifx\argii\eq@X
- \advance\@tempcnta\@ne
- \edef\nI{\the\@tempcnta}\let\eq@next\relax\else
- \advance\@tempcnta\@ne\def\eq@next{\cntIv@lsi#2x\@nil}\fi
-\eq@next}
-\begingroup\@makeother\&
-\gdef\eq@ProcIntrvls#1{\expandafter
- \eq@ProcIntrvlsi#1&&\@nil}
-\gdef\eq@ProcIntrvlsi#1&#2&#3\@nil{\def\argii{#2}%
- \ifx\argii\@empty
- \eq@obeyReptOfIntrvls{#1}%
- \cntIv@ls{\eq@interv@ls}%
- \else
- \eq@obeyReptOfIntrvls{#1}%
- \edef\interv@ls{\eq@interv@ls}%
- \cntIv@ls{\eq@interv@ls}%
- \eq@obeyReptOfIntrvls{#2}%
- \edef\eq@interv@ls{\interv@ls&\eq@interv@ls}%
- \fi
-}
-\endgroup
-\def\@eq@RespB@x#1(#2)[#3]#4#5#6{\xdef\@qzsolndest{#3}% dps17
- \gdef\indepVars{"#2"}\isFrstrpl#2\@nil\if\frstIsrpl\eq@YES
- \def\@IVi{#2}\else\expandafter\def\expandafter
- \@IVi\expandafter{#2}\fi\edef\@IVii{#2}\ifx\@IVi\@IVii
- \global\SubstVarsfalse\else\global\SubstVarstrue
- \isAltApprSpec{#2}\fi
- \cntVars{#2}\def\eq@precision{#5}%
- \ifx\eq@precision\eq@ZERO
- \def\eq@defaultCompare{reldiffCompare}%
- \def\rbArgstmp{\rbFlag,% dps17
- \ifSubstVars_substAns\else"#1"\fi,#4,%
- \eq@defaultRDPrecision}\else
- \def\eq@defaultCompare{diffCompare}%
- \def\rbArgstmp{\rbFlag,% dps17
- \ifSubstVars_substAns\else"#1"\fi,#4,#5}\fi
- \edef\eq@ixparam{#6}\expandafter\eq@chkivIntrvls\eq@ixparam\\%
-}
-\def\viidna{[0,1]}
-\def\eq@chkivIntrvls{\@ifnextchar[{\eq@chkivIntrvlsi}%
- {\eq@chkivIntrvlsii}}
-\def\eq@chkivIntrvlsi#1\\{\eq@ProcIntrvls{#1}%
- \def\rbArgs{\rbArgstmp,"\eq@interv@ls",_mathVars}% dps17
- \@ifnextchar[{\@eq@@RespBox[ \expandafter\@gobble}%
- {\@eq@@RespBox[\eq@defaultCompare]}%
-}
-\def\eq@chkivIntrvlsii#1\\#2{\def\nI{1}%
- \def\rbArgs{\rbArgstmp,"[#1,#2]",_mathVars}%
- \@ifnextchar[{\@eq@@RespBox}{\@eq@@RespBox[\eq@defaultCompare]}%
-}
-\def\@eq@@RespBox[#1]{\@ifstar{\jsRespBox[#1]}%
- {\jsRespBox[#1]{ProcResp}}}
-\def\eq@ProcRespIntervals{ProcRespIntervals}
-\def\eq@ProcRespSetNum{ProcRespSetNum}
-\def\eq@ProcRespSetSym{ProcRespSetSym}
-\def\eq@ProcRespEvalEq{ProcRespEvalEq}
-\def\eq@ProcRespEvalEqNonZero{ProcRespEvalEqNonZero}
-\def\eq@ProcRespEvalEqList{ProcRespEvalEqList}
-\def\eq@ProcRespEvalEqListNonZero{ProcRespEvalEqListNonZero}
-\def\jsRespBox[#1]#2{\def\compareJSfunc{#1}%
- \def\processJSfunc{#2}\gdef\g@processJSfunc{#2}% 01/11
- \ifnum\nV=\nI\relax\else
- \ifx\processJSfunc\eq@ProcRespSetNum\else
- \ifx\processJSfunc\eq@ProcRespSetSym\else
- \ifx\processJSfunc\eq@ProcRespEvalEq\else
- \ifx\processJSfunc\eq@ProcRespEvalEqNonZero\else
- \ifx\processJSfunc\eq@ProcRespEvalEqList\else
- \ifx\processJSfunc\eq@ProcRespEvalEqListNonZero\else
- \PackageWarning{exerquiz}{The number of variables does not
- match\MessageBreak the number of intervals. The
- problem\MessageBreak may not evaluate properly}\fi\fi\fi\fi\fi\fi\fi
- \ifx\eq@ProcRespIntervals\g@processJSfunc
- \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble
- \pdfstringdef{\eqCorrectAns}{\eqCorrectAns}%
- \let\@inmathwarn\@inmathwarn@SAVE\fi
-\ifx\grpquestions\eq@Zero
- \eq@recordCorrAns{"\eqCorrectAns"}% 2018/03/18
-\fi
- \ifeq@proofing\makebox[0pt][l]{\space\math@correctAnswer}\fi
- \eq@TextField % send to the driver-dependent macro
- \egroup % hbox
- \endgroup % \RespBoxMath
-}
-\def\gobbleMacro#1>{}
-\gdef\math@correctAnswer{\ttfamily
- \color{\@proofingsymbolColor}\spaceskip=2pt\xspaceskip=2pt%
- \expandafter\gobbleMacro\meaning\eqCorrectAnsTeX
-}
-\newcommand\RespBoxTxtNT{\def\rbFlag{0}\@RespBoxTxt}
-\newcommand\RespBoxTxt{\def\rbFlag{0}\@RespBoxTxt}
-\def\RespBoxTxtOnBlur{OnBlurRespBox(%
- \if\@sqTurnOffAlerts1retn\else null\fi,"\curr@quiz");}
-\def\eqObjAlert{%
- \ifx\eqQuizType\isQZ\ifx\eq@online\eq@YES\ifeq@noquizsolutions
- \else if (false)\fi\fi\fi}
-\begin{defineJS}[%
- \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxt}
-if(event.willCommit){
- RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,%
-@thegrpquestionno,@grpPointValue,@grpTotalWeight,%
-"@grpEvalFunction"@fi);
- RecordProblemType("@eqQT",@thequestionno);
- var retn = ProcRespTxt(@rbTxtAlt);
- ProcUserResp(retn,event.value,@thequestionno,%
-0@ifx@grpquestions1,@thegrpquestionno@fi);
-}
-if (!isQuizInitialized("@currQuiz")) {
- @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3);
- event.rc = false;
-}
-\end{defineJS}
-\def\RespBoxTxtDefaults
-{%
- \BC{0 0 0}\W{1}\S{S}\textColor{0 g}\F{\FPrint}%
-}
-\def\moreRespBoxTxtDefaults
-{%
- \edef\@moreRespBoxTxtDefaults{%
- \if\eqQuizType\isQZ\ifx\eq@online\eq@YES
- \ifeq@noquizsolutions\else
- \noexpand\Ff{\FfReadOnly}\fi\fi\fi
- }%
-}
-\def\@@RespBoxTxtActions
-{%
- \AA{\if\eqQuizType\isQZ
- \AAKeystroke{\AAKqRespBoxTxt\eqAddAAKeystroke}
- \AAFormat{\eqAddAAFormat}
- \else
- \AAKeystroke{%
- if(event.willCommit) {\r\t
- retn = ProcRespTxt(\rbTxtAlt);\r
-\if\@sqTurnOffAlerts1
- \t\RespBoxTxtOnBlur\r
-\fi
- \eqAddAAKeystroke\r
- }%
- }
- \AAFormat{\eqAddAAFormat}
- \AAOnFocus{\JS{var retn = null;}}
-\if\@sqTurnOffAlerts0
- \AAOnBlur{\JS{\RespBoxTxtOnBlur}}%
-\fi
- \fi
- }
-}
-\def\annot@subtype@rbt{rbt}
-\newcommand\@RespBoxTxt[1][]
-{%
- \edef\annot@subtype{\annot@subtype@rbt}%
- \eq@AddProbToQzQuesList
- \ifx\grpquestions\eq@Zero\addtocounter{eqpointvalue}{\eqPTs}\fi
- \if\eqQuizType\isQZ
- \def\rbFlag{1}\global\IsRespBoxtrue
- \ifx\grpquestions\eq@One
- \stepcounter{grpquestionno}%
- \def\Fld@name{%
- grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
- \else
- \eq@recordThesePTs\eq@recordProbType
- \edef\eqtmp{\aPointType}%
- \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}%
- \stepcounter{questionno}%
- \def\Fld@name{obj.\curr@quiz.\thequestionno}%
- \fi
- \else
- \stepcounter{questionno}%
- \def\Fld@name{obj.\oField.\thequestionno}%
- \fi
- \moreRespBoxTxtDefaults
- \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}%
- {\RBW}{\DefaultHeightOfWidget}%
- {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxt}%
- {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults
- \@@RespBoxTxtActions\every@eqTextField\every@RespBoxTxt}%
-}
-\def\@@RespBoxTxt#1#2{%
- \@ifnextchar[{\@@@RespBoxTxt{#1}{#2}}
- {\@ifstar{\@@@RespBoxTxt{#1}{#2}[\curr@quiz.\thequestionno]}%
- {\@@@RespBoxTxt{#1}{#2}[]}}}
-\def\eq@ZERO{0}\def\eq@ONE{1}\def\eq@TWO{2}
-\def\@@@RespBoxTxt#1#2[#3]#4{%
- \xdef\@qzsolndest{#3}%
- \def\eq@argi{#1}\ifx\eq@argi\eq@ZERO\else
- \ifx\eq@argi\eq@ONE\else\ifx\eq@argi\eq@TWO\else
- \def\eq@argi{-1}\fi\fi\fi
- \def\eq@argii{#2}\ifx\eq@argii\eq@ONE\else\def\eq@argii{0}\fi
- \begingroup
- \ifnum\eq@argii=1\relax
- \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}%
- \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}%
- \def\word##1{\\b##1\\b}\def\any{@any@}\fi
- \xdef\rbTxtAlt{\rbFlag,\eq@argi,\eq@argii}%
- \global\let\txtAltList\@empty
- \count0=#4 \ifnum\count0 > 0 \expandafter\@argRead\else
- \PackageError{exerquiz}{%
- The fourth required parameter of \string\RespBoxTxt\MessageBreak
- is required to be a positive integer. You entered\MessageBreak
- #4\space instead}{Enter a positive integer.}\fi
-}
-\def\@argRead#1{\xdef\jsTempArgs{\txtAltList}%
- \ifx\txtAltList\@empty\xdef\txtAltList{"#1"}\else
- \xdef\txtAltList{\jsTempArgs,"#1"}\fi\@@argRead}
-\def\@@argRead{\advance\count0 by-1\relax
- \ifnum\count0=0\relax
- \def\eq@next{\endgroup
- \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}%
- \if\grpquestions\eq@Zero
- \ifwithinMCFI
- \xdef\s@veCorrAnsMCFI{[\txtAltList]}\else
- \eq@recordCorrAns{[\txtAltList]}\fi
- \else
- \eq@recordGrpAnsArray{[\txtAltList]}%
- \fi
- \eq@@RespBoxTxt
- }%
- \else
- \def\eq@next{\@argRead}%
- \fi\eq@next
-}
-\def\eq@@RespBoxTxt{%
- \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi
- \eq@TextField
- \egroup
-}
-\def\gobbleTxt#1>#2,#3,#4,{}
-\gdef\txt@correctAnswer{\ttfamily\color{\@proofingsymbolColor}%
- \spaceskip=2pt\xspaceskip=2pt
- \expandafter\gobbleTxt\meaning\rbTxtAlt
-}
-\begin{defineJS}[%
- \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxtPC}
-if(event.willCommit){
- RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,%
-@thegrpquestionno,@grpPointValue,@grpTotalWeight,%
-"@grpEvalFunction"@fi);
- RecordProblemType("@eqQT",@thequestionno);
- var retn = ProcRespTxtPC(@rbTxtAlt);
-@ifx@grpquestions1%
- ProbValue[@thequestionno][3+@thegrpquestionno]%
-=ProcRespTxtPC.txtPCpCr;@else%
- ProbValue[@thequestionno]=ProcRespTxtPC.txtPCpCr;@fi
- ProcUserResp(retn,event.value,@thequestionno,0%
-@ifx@grpquestions1,@thegrpquestionno@fi);
-}
-if (!isQuizInitialized("@currQuiz")) {
- @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3);
- event.rc = false;
-}
-\end{defineJS}
-\def\@@RespBoxTxtPCActions
-{%
- \AA{\if\eqQuizType\isQZ
- \AAKeystroke{\AAKqRespBoxTxtPC}
- \else
- \AAKeystroke{%
- if(event.willCommit) {\r\t
- retn = ProcRespTxtPC(\rbTxtAlt);\r
-\if\@sqTurnOffAlerts1%
- \t\RespBoxTxtOnBlur\r
-\fi
- }%
- }
- \AAOnFocus{\JS{var retn = null;}}
-\if\@sqTurnOffAlerts0%
- \AAOnBlur{\JS{\RespBoxTxtOnBlur}}%
-\fi
- \fi
- }
-}
-\newcommand{\RespBoxTxtPC}{\def\rbFlag{0}\@RespBoxTxtPC}
-\def\annot@subtype@rbtpc{rbtpc}
-\newcommand\@RespBoxTxtPC[1][]
-{%
- \edef\annot@subtype{\annot@subtype@rbtpc}%
- \eq@AddProbToQzQuesList
- \smallskip\ifx\grpquestions\eq@Zero
- \addtocounter{eqpointvalue}{\eqPTs}\fi
- \if\eqQuizType\isQZ\def\rbFlag{1}\global\IsRespBoxtrue
- \ifx\grpquestions\eq@One
- \stepcounter{grpquestionno}%
- \def\Fld@name{%
- grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
- \else
- \eq@recordThesePTs\eq@recordProbType
- \edef\eqtmp{\aPointType}%
- \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}%
- \stepcounter{questionno}%
- \def\Fld@name{obj.\curr@quiz.\thequestionno}%
- \fi
- \else
- \stepcounter{questionno}%
- \def\Fld@name{obj.\oField.\thequestionno}%
- \fi
- \moreRespBoxTxtDefaults
- \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}%
- {\RBW}{\DefaultHeightOfWidget}%
- {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxtPC}%
- {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults
- \@@RespBoxTxtPCActions\every@eqTextField\every@RespBoxTxt}%
-}
-\def\@@RespBoxTxtPC#1{\@ifnextchar[{\@@@RespBoxTxtPC{#1}}
- {\@ifstar{\@@@RespBoxTxtPC{#1}[\curr@quiz.\thequestionno]}%
- {\@@@RespBoxTxtPC{#1}[]}}}
-\def\@@@RespBoxTxtPC#1[#2]#3{\xdef\@qzsolndest{#2}%
- \begingroup
- \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}%
- \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}%
- \def\word##1{\\b##1\\b}\def\any{@any@}
- \gdef\rbTxtAlt{\rbFlag,#1,1}% force sub-string match
- \global\let\txtAltList\@empty
- \count0=#3 \ifnum\count0>0 \expandafter\@argReadPC\else
- \PackageError{exerquiz}{%
- The third required parameter of
- \string\RespBoxTxtPC\MessageBreak
- is required to be a positive integer.
- You entered\MessageBreak #3\space instead}
- {Enter a positive integer.}\fi
-}
-\newcommand\@argReadPC[2][0]{\xdef\jsTempArgs{\txtAltList}%
- \ifx\txtAltList\@empty\xdef\txtAltList{["#2",#1]}\else
- \xdef\txtAltList{\jsTempArgs,["#2",#1]}\fi\@@argReadPC}
-\def\@@argReadPC{\advance\count0 by-1\relax
- \ifnum\count0=0\relax
- \def\eq@next{\endgroup
- \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}%
- \if\grpquestions\eq@Zero
- \ifwithinMCFI
- \xdef\s@veCorrAnsFCFI{[\txtAltList]}\else
- \eq@recordCorrAns{[\txtAltList]}\fi
- \else
- \eq@recordGrpAnsArray{[\txtAltList]}%
- \fi
- \eq@@RespBoxTxtPC
- }%
- \else
- \def\eq@next{\@argReadPC}%
- \fi\eq@next
-}
-\def\eq@@RespBoxTxtPC{%
- \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi
- \eq@TextField
- \egroup
-}
-\def\RespBoxEssayDefaults
-{%
- \BC{0 0 0}\W{1}\S{S}\Ff{\FfMultiline}\rawPDF{}%
-}
-\def\@@RespBoxEssayActions
-{%
- \AA{\if\eqQuizType\isQZ
- \AAKeystroke{%
- if(event.willCommit){\jsR\jsT
- RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT
- RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
- }\jsR
- if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT
- @eqObjAlert\space eqAppAlert(%
- InitMsg("\bqlabelISO"),3);\jsR\jsT
- event.rc = false;\jsR
- }%
- }%
- \fi
- }
-}
-\newcommand\RespBoxEssay[3][]
-{%
- \smallskip\addtocounter{eqpointvalue}{\eqPTs}%
- \stepcounter{questionno}%
- \mbox{\text@@Field{#1}{essay.\curr@quiz.\thequestionno}{#2}{#3}%
- \edef\eqtmp{\aPointType}\xdef\aPointType{\eqtmp,[\eqPTs,"essay"]}%
- {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxEssayActions
- \eq@TextField}{\RespBoxEssayDefaults\every@eqTextField}}%
-}
-\let\@@sqTallyBoxActions\@empty
-\@ifundefined{calcOrder}{%
-\ifpdf\def\@@sqTallyBoxActions{%
- \AA{\AAValidate{getTotalTally("\oField");}}}\fi}{}
-\def\sqTallyBoxDefaults
-{%
- \BC{0 0 0}\W{1}\textColor{1 0 0 rg}\S{I}\Q{2}\Ff{\FfReadOnly}
-}
-\ifpdf\def\@@sqTallyBoxActions{%
- \AA{\AAValidate{getTotalTally("\oField");}}}\else
- \let\@@sqTallyBoxActions\@empty
-\fi
-\newcommand\sqTallyBox[1][]
-{%
- \mbox{\text@@Field{#1}{tally.\oField.\thequestionno}%
- {\TBW}{\DefaultHeightOfWidget}%
- {}{\eq@setWidgetProps\eq@TextField}%
- {\sqTallyBoxDefaults\@@sqTallyBoxActions\every@eqTextField
- \every@sqTallyBox}}%
-}
-\def\sqTallyTotalDefaults
-{%
- \rawPDF{}\W{1}\BC{0 0 0}\S{I}\textColor{1 0 0 rg}%
- \Q{2}\Ff{\FfReadOnly}%
-}
-\def\@@sqTallyTotalActions
-{%
- \AA{%
- \AAKeystroke{AFNumber_Keystroke(0,0,0,0,"",true);}
- \AAFormat{AFNumber_Format(0,0,0,0,"",true);}
- \AACalculate{%
- AFSimple_Calculate("SUM",new Array("tally.\oField"));
- }}
-}
-\newcommand\sqTallyTotal[1][]
-{%
- \mbox{\text@@Field{#1}{tallytotal.\oField}{\TBW}%
- {\DefaultHeightOfWidget}{\eq@protect\AA}%
- {\eq@setWidgetProps\eq@TextField}%
- {\sqTallyTotalDefaults\@@sqTallyTotalActions\every@eqTextField
- \every@sqTallyTotal}}%
-}
-\def\CorrAnsButtonDefaults
-{%
- \CA{\eq@local@CorrAnsButton}\W{1}\S{S}
- \BC{0 0 0}\BG{.7529 .7529 .7529}\H{P}
-}
-\def\normalCABtnBC{0 0 0}
-\def\qCorrAnsButtonActionHook{\JS{%
-\ifx\@qzsolndest\@empty\else
- if (event.shift)\jsR\jsT
- this.gotoNamedDest("\@qzsolndest");\jsR
- else {\jsR\jsT\fi
-\ifShowAppr % dps17
- \ifarrowDelim
- if (typeof event.target.appr=="undefined")\r\JST\t
- event.target.appr=false;\r\JST
- event.target.appr=!event.target.appr;\r\JST
- if (event.target.appr) {\r\t\JST
- var _substVars=\indepVars;\r\t\JST
- var _substAns=getSubstValue(_substVars,"\CorrectAns");\r\t\JST
- var value=RespBoxAppr("\CorrectAns");\r\JST
- } else value="\CorrectAns";\r\JST
- \else
- value="\CorrectAns";\r\JST
- \fi
-\else
- value="\CorrectAns";\r\JST
-\fi
- \processJSfunc("Ans.\curr@quiz",value,\currQuiz);\r
-\ifx\@qzsolndest\@empty\else % dps17
- }\fi
-}}
- \def\sqCorrAnsButtonActionHook
- {%
- \JS{%
- \ifx\@qzsolndest\@empty\else
- if (event.shift)\jsR\jsT
- this.gotoNamedDest("\@qzsolndest");\jsR
- else\jsR\jsT
- \fi
- \processJSfunc("obj.\oField.\thequestionno","\CorrectAns",%
-\currQuiz);
- }%
- }
-\newcommand\CorrAnsButton[1][]{\eq@@CorrAnsButton{#1}}
-\def\eq@@CorrAnsButton#1#2{\bgroup\makeJSspecials % 1/12
- \@ifstar{\eq@@@CorrAnsButton{#1}{#2}}{%
- \eq@@@CorrAnsButton{#1}{#2}{DisplayAnswer}}%
-}
-\def\eq@@@CorrAnsButton#1#2#3{\gdef\CorrectAns{#2}%
- \def\processJSfunc{#3}\ifx\@qzsolndest\@empty\let\JST\@empty\else
- \let\JST\jsT\fi % dps17
- \ifx\eq@ProcRespIntervals\g@processJSfunc % 01/11
- \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble
- \pdfstringdef{\CorrectAns}{\CorrectAns}%
- \let\@inmathwarn\@inmathwarn@SAVE\fi
- \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}%
- \else\def\Fld@name{corr.\oField.\thequestionno}\fi
- \if\eqQuizType\isQZ
- \edef\@@CorrAnsButtonActions{\noexpand\F{\FHidden}%
- \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}%
- \else\noexpand\BC{\solution@Color}\fi
- \noexpand\A{\noexpand\qCorrAnsButtonActionHook}}%
- \ifeq@noquizsolutions\else % dps17 (\let\rpl\eq@rpl)
- \mbox{\let\rpl\eq@rpl
- \push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\CorrAnsButtonDefaults\@@CorrAnsButtonActions
- \every@ButtonField\every@CorrAnsButton}}%
- \fi
- \else
- \edef\@@CorrAnsButtonActions{%
- \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
- \else\noexpand\BC{\solution@Color}\fi
- \noexpand\A{\noexpand\sqCorrAnsButtonActionHook}}%
- \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\CorrAnsButtonDefaults\@@CorrAnsButtonActions
- \every@ButtonField\every@CorrAnsButton}}%
- \fi
- \egroup
-}
-\def\sqClearButtonDefaults
-{%
- \CA{\eq@local@sqClearButton}\textColor{0 g}\F{\FPrint}
- \BC{0 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}\Ff{\FfNoExport}
-}
-\def\@@sqClearButtonActions
-{%
- \A{\JS{ProcessIt = false;\jsR
- if ( typeof \oField\space== "undefined" )\jsR\jsT
- \oField\space= new Object;\jsR
- if (typeof appAlerts["\oField"] == "undefined")\jsR\jsT
- appAlerts["\oField"] = new Object;\jsR
- this.resetForm(new Array("mc.\oField","obj.\oField",%
- "tally.\oField","grpobj.\oField"));\jsR
- var f = this.getField("obj.\oField");\jsR
- if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty
-\defaultColorJS\else\defaultColorJSLoc\fi;\jsR
- f = this.getField("grpobj.\oField");\jsR
- if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty
-\defaultColorJS\else\defaultColorJSLoc\fi;\jsR
- f = this.getField("rbmarkup.\oField");\jsR
- if ( f != null ) f.display=display.hidden;\jsR
- \oField.Grp = {};\jsR
- appAlerts["\oField"].bAfterValue=false;\jsR
- ProcessIt=true;}%
- }
-}
-\newcommand\sqClearButton[1][]
-{%
- \mbox{\push@@Button{#1}{clear.\oField}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\sqClearButtonDefaults\@@sqClearButtonActions\every@ButtonField
- \every@sqClearButton}}%
-}
-\def\PromptButtonDefaults
-{%
- \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0}
- \BG{.7529 .7529 .7529}\H{P}
-}
-\newcommand{\promptButtonMsg}{%
- "Would you like to see the correct answer at this time? "\r\t\t
- + "Your current answer will be the one that will be scored. "\r\t\t
- + "If you click on \\"Yes\\",
- you will not be able to change your answer."
-}
-\newcommand{\AnsPromptBtnStr}{Answer:\space}
-\def\PromptButtonActionHook
-{%
- \JS{%
- if (!isQuizInitialized("\currQuiz")) {\r\t
- eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t
- event.rc=false;\r
- } else {\r\t
- if ( !\currQuiz.oAlertCheck.bAfterValue ) {\r\t
- var resp=eqAppAlert({\r\t\t
- cMsg:\promptButtonMsg,\r\t\t
- nIcon: 2, nType: 2,\r\t\t
- cTitle: ("AcroTeX Prompt Message"),\r\t\t
- oCheckbox: \currQuiz.oAlertCheck\r\t
- });\r\t
- }\r
- if ( promptQuiz.oAlertCheck.bAfterValue || resp==4 )\r\t
- {\r\t\t
- var field=this.getField(%
- "obj.\currQuiz.\thequestionno");\r\t\t
- field.readonly=true;\r\t\t
- field=this.getField("Ans.\currQuiz");\r\t\t
- if (field!=null)
- field.value = "\AnsPromptBtnStr\PromptAns";\r\t
- }\r
- }
- }%
-}
-\newcommand\@PromptButton[2][]
-{%
- \def\PromptAns{#2}\if\eqQuizType\isQZ
- \def\Fld@name{promptButton.\curr@quiz.\thequestionno}%
- \else\def\Fld@name{promptButton.\oField.\thequestionno}\fi
- \if\eqQuizType\isQZ
- \def\@@PromptButtonActions{%
- \A{\PromptButtonActionHook}}%
- \mbox{\push@@Button{#1}{\Fld@name}{}%
- {\DefaultHeightOfWidget}{\eq@protect\A}%
- {\eq@setButtonProps\eq@Button@driver}%
- {\PromptButtonDefaults\@@PromptButtonActions
- \every@ButtonField\every@CorrAnsButton}}%
- \else\PackageWarning{exerquiz}{The \string\PromptButton
- is for quiz questions only.}
- \fi
-}
-\newcommand{\PromptButton}{\makebox[0pt][r] % assumes xcolor
- {\@PromptButton[\textColor{1 0 0 rg}]{\CorrectAns}}}
-\let\eq@ansGrpArray\@empty
-\def\eq@recordGrpAnsArray#1{%
- \ifx\eq@ansGrpArray\@empty
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\eq@ansGrpArray{#1}}\else
- \edef\tmp@exp{\noexpand\g@addto@macro
- \noexpand\eq@ansGrpArray{,#1}}\fi
- \tmp@exp
-}
-\let\grpquestions\eq@Zero
-\def\mathGrp{\global\let\eq@ansGrpArray\@empty
- \@ifnextchar[{\@imathGrp}{\@imathGrp[groupEval]}}
-\def\@imathGrp[#1]{\def\argi{#1}%
- \@ifnextchar[{\@iimathGrp}{\@iimathGrp[]}}
-\def\@iimathGrp[#1]{\def\argii{#1}%
- \eq@AddProbToQzQuesList
- \global\let\grpquestions\eq@One
- \setcounter{grpquestionno}{0}%
- \stepcounter{questionno}%
- \xdef\beginGrp{\thequestionno}%
- \xdef\grpPointValue{\eqPTs}%
- \eq@recordThesePTs\eq@recordProbType
- \if\eqQuizType\isQZ
- \edef\eqtmp{\aPointType}%
- \xdef\aPointType{\eqtmp,[\eqPTs,"grp"]}\fi
- \addtocounter{eqpointvalue}{\eqPTs}%
- \ifx\argii\@empty
- \xdef\grpTotalWeight{\eqPTs}%
- \xdef\grpEvalFunction{\argi}%
- \else
- \xdef\grpTotalWeight{\argi}%
- \xdef\grpEvalFunction{\argii}%
- \fi
-}
-\def\endmathGrp{\global\let\grpquestions\eq@Zero
- \eq@recordCorrAns{[\eq@ansGrpArray]}%
- \xdef\endGrp{\thequestionno}}
-\def\CorrAnsButtonGrpDefaults
-{%
- \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0}
- \BG{.7529 .7529 .7529}\H{P}
-}
-\def\CorrAnsButtonGrpActionHook{\JS{%
-\ifx\@qzsolndest\@empty\else
- if (event.shift)\jsR\jsT
- this.gotoNamedDest("\@qzsolndest");\jsR
- else\jsR
-\fi
- {\jsR\jsT
- var aCorrectAns=\CorrectAns;\jsR\jsT
- var beginGrp = 1;\jsR\jsT
- grpOffset = beginGrp;\jsR\jsT
- if ( \currQuiz.Grp==null ) \currQuiz.Grp = {};\jsR\jsT
- if (typeof \currQuiz.Grp["\thequestionno"]=="undefined")\jsR\jsT
- {\jsR\jsT\jsT
- \currQuiz.Grp["\thequestionno"] = {offset: 0};\jsR\jsT\jsT
- var f = this.getField(%
- "grpobj.\curr@quiz.\thequestionno."
- + grpOffset)\jsR\jsT\jsT
- if ( f.readonly ) {\jsR\jsT\jsT
- f.readonly = false;\jsR\jsT\jsT
- f.setFocus();\jsR\jsT\jsT
- eqDelay = app.setTimeOut(%
- "f.readonly = true;
- app.clearTimeOut(eqDelay);",10);\jsR\jsT
- } else f.setFocus();\jsR\jsT
- }\jsR\jsT
- else \jsR\jsT
- {\jsR\jsT\jsT
- \currQuiz.Grp["\thequestionno"].offset =
- ++\currQuiz.Grp["\thequestionno"].offset
- \% aCorrectAns.length;\jsR\jsT\jsT
- grpOffset = beginGrp
- + \currQuiz.Grp["\thequestionno"].offset;\jsR\jsT\jsT
- var f = this.getField("grpobj.\curr@quiz.\thequestionno."
- + grpOffset);\jsR\jsT\jsT
- if ( f.readonly ) {\jsR\jsT\jsT
- f.readonly = false;\jsR\jsT\jsT
- f.setFocus();\jsR\jsT\jsT
- eqDelay = app.setTimeOut("f.readonly = true;
- app.clearTimeOut(eqDelay);",10);\jsR\jsT
- } else f.setFocus();\jsR\jsT
- }\jsR\jsT
-\if\eqQuizType\isQZ
- DisplayAnswer("Ans.\curr@quiz",
- aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],%
-\currQuiz);
-\else
- DisplayAnswer("grpobj.\oField.\thequestionno."+ grpOffset,
- aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],%
-\oField);\jsR
-\fi
- }
-}}
-\newcommand\CorrAnsButtonGrp[2][]
-{%
- \makeStringArray{#2}%
- \edef\CorrectAns{\stringArray}%
- \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}%
- \else\edef\currQuiz{\oField}%
- \def\Fld@name{corr.\oField.\thequestionno}\fi
- \if\eqQuizType\isQZ
- \edef\@@CorrAnsButtonGrpActions{\noexpand\F{\FHidden}%
- \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
- \else\noexpand\BC{\solution@Color}\fi
- \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}%
- \ifeq@noquizsolutions\else
- \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions
- \every@ButtonField\every@CorrAnsButton}}%
- \fi
- \else
- \edef\@@CorrAnsButtonGrpActions{%
- \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
- \else\noexpand\BC{\solution@Color}\fi
- \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}%
- \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
- {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
- {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions
- \every@ButtonField\every@CorrAnsButton}}%
- \fi
-}
-\def\makeStringArray#1{\def\stringArray{[}\@makeStringArray#1,\@nil}
-\def\@makeStringArray#1,#2\@nil{%
- \edef\eq@temp{\stringArray}\def\argii{#2}%
- \ifx\argii\@empty
- \edef\stringArray{\eq@temp"#1"]}%
- \def\eq@next{}%
- \else
- \edef\stringArray{\eq@temp"#1",}%
- \def\eq@next{\@makeStringArray#2\@nil}%
- \fi
- \eq@next
-}
-\let\@eqListExp\relax
-\let\@currentQues\@empty
-\let\eqQzQuesList\@empty
-\def\eq@AddProbToQzQuesList{%
- \edef\eq@tmpExp{\noexpand\g@addto@macro%
- \noexpand\eqQzQuesList{%
- \noexpand\@eqListExp{\@currentQues}{\thepage}}}%
- \ifx\grpquestions\eq@Zero\eq@tmpExp\fi
-}
-\LangRedefinitions
-\input{aebjs.def}
-\inputSumryTblCode
-\inputMCFICode
-\newcommand{\solutionColor}[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
- \def\solution@Color{\solutionColorDef}\else
- \def\solution@Color{#1}\fi}
-\newcommand{\solutionColorDef}{0 .6 0}
-\solutionColor{\solutionColorDef}
-\@ifundefined{jsColor}{%
- \InputIfFileExists{eqcolor.def}{\PackageInfo{exerquiz}
- {Inputting eqcolor.def}}
- {\PackageError{exerquiz}{cannot find eqcolor.def}
- {Refresh your file name database and try again.}}
-}{}
-\newcommand\rghtColorJSDef{["RGB", 0, .6, 0]}
-\newcommand\rghtColorJS{\rghtColorJSDef}
-\newcommand\wrngColorJSDef{color.red}
-\newcommand\wrngColorJS{\wrngColorJSDef}
-\newcommand\partialColorJSDef{color.blue}
-\newcommand\partialColorJS{\partialColorJSDef}
-\newcommand\defaultColorJSDef{color.black}
-\newcommand\defaultColorJS{\defaultColorJSDef}
-\let\defaultColorJSLoc\@empty
-\let\defaultColorJSLocDef\@empty
-\let\rghtColorJSLoc\@empty
-\let\rghtColorJSLocDef\@empty
-\let\wrngColorJSLoc\@empty
-\let\wrngColorJSLocDef\@empty
-\let\partialColorJSLoc\@empty
-\let\partialColorJSLocDef\@empty
-\def\chooseJSsymbol{\@ifstar{\let\eq@isstar\eq@YES\chooseJSsymboli}
- {\let\eq@isstar\eq@NO\chooseJSsymboli}}
-\def\chooseJSsymboli#1{\lowercase{\edef\eq@arg{#1}}%
- \def\eq@carg{check}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.ch}\else
- \def\eq@carg{cross}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.cr}\else
- \def\eq@carg{diamond}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.di}\else
- \def\eq@carg{circle}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.ci}\else
- \def\eq@carg{star}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.st}\else
- \def\eq@carg{square}\ifx\eq@arg\eq@carg
- \def\eq@retnStyle{style.sq}\else
- \let\eq@retnStyle\@empty
- \ifx\eq@isstar\eq@NO\PackageWarning{exerquiz}
- {Argument `#1' not recognized.\MessageBreak
- Permissible values are check, cross, diamond,\MessageBreak
- circle, star, square. Will use the default}\fi
- \fi\fi\fi\fi\fi\fi
-}
-\newcommand\setRghtAnsSymb[1]{\chooseJSsymbol{#1}%
- \ifx\eq@retnStyle\@empty\else
- \edef\rghtAnsSymbJS{\eq@retnStyle}%
- \edef\rghtAnsSymb{\eq@carg}\fi}
-\def\rghtAnsSymbJS{style.ch}
-\def\rghtAnsSymb{check}
-\newcommand\setCorrAnsSymb[1]{\chooseJSsymbol{#1}%
- \ifx\eq@retnStyle\@empty\else
- \edef\corrAnsSymbJS{\eq@retnStyle}%
- \edef\corrAnsSymb{\eq@carg}\fi}
-\def\corrAnsSymbJS{style.ci}
-\def\corrAnsSymb{circle}
-\newcommand\setWrngAnsSymb[1]{\chooseJSsymbol{#1}%
- \ifx\eq@retnStyle\@empty\else
- \edef\wrngAnsSymbJS{\eq@retnStyle}%
- \edef\wrngAnsSymb{\eq@carg}\fi}
-\def\wrngAnsSymbJS{style.cr}
-\def\wrngAnsSymb{cross}
-\def\setRghtAnsSymbLoc#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \let\rghtAnsSymbJSLoc\@empty\else
- \edef\rghtAnsSymbJSLoc{\eq@retnStyle}\fi
-}
-\def\setCorrAnsSymbLoc#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \let\corrAnsSymbJSLoc\@empty\else
- \edef\corrAnsSymbJSLoc{\eq@retnStyle}\fi
-}
-\def\setWrngAnsSymbLoc#1{\chooseJSsymbol*{#1}%
- \ifx\eq@retnStyle\@empty
- \let\wrngAnsSymbJSLoc\@empty\else
- \edef\wrngAnsSymbJSLoc{\eq@retnStyle}\fi
-}
-\let\rghtAnsSymbJSLoc\@empty
-\let\rghtAnsSymbJSLocDef\@empty
-\let\corrAnsSymbJSLoc\@empty
-\let\corrAnsSymbJSLocDef\@empty
-\let\wrngAnsSymbJSLoc\@empty
-\let\wrngAnsSymbJSLocDef\@empty
-\newcommand\everyeqTextField[1]{\def\every@eqTextField{#1}}
-\def\every@eqTextField{}
-\newcommand\everyRespBoxMath[1]{\def\every@RespBoxMath{#1}}
-\def\every@RespBoxMath{}
-\newcommand\everyRespBoxTxt[1]{\def\every@RespBoxTxt{#1}}
-\def\every@RespBoxTxt{}
-\newcommand\everyrbMarkup[1]{\def\every@rbMarkup{#1}}
-\def\every@rbMarkup{}
-\newcommand\everysqTallyBox[1]{\def\every@sqTallyBox{#1}}
-\def\every@sqTallyBox{}
-\newcommand\everysqTallyTotal[1]{\def\every@sqTallyTotal{#1}}
-\def\every@sqTallyTotal{}
-\newcommand\everyScoreField[1]{\def\every@ScoreField{#1}}
-\def\every@ScoreField{}
-\newcommand\everyAnswerField[1]{\def\every@AnswerField{#1}}
-\def\every@AnswerField{}
-\newcommand\everyPointsField[1]{\def\every@PointsField{#1}}
-\def\every@PointsField{}
-\newcommand\everyPercentField[1]{\def\every@PercentField{#1}}
-\def\every@PercentField{}
-\newcommand\everyGradeField[1]{\def\every@GradeField{#1}}
-\def\every@GradeField{}
-\newcommand{\everysqRadioButton}[1]{\def\every@sqRadioButton{#1}}
-\def\every@sqRadioButton{}
-\newcommand{\everyqRadioButton}[1]{\def\every@qRadioButton{#1}}
-\def\every@qRadioButton{}
-\newcommand{\everyqckCheckBox}[1]{\def\every@qckCheckbox{#1}}
-\def\every@qckCheckbox{}
-\newcommand{\everyqCheckBox}[1]{\def\every@qCheckBox{#1}}
-\def\every@qCheckBox{}
-\newcommand{\everysqCheckBox}[1]{\def\every@sqCheckBox{#1}}
-\def\every@sqCheckBox{}
-\let\everyeqButtonField\everyButtonField
-\newcommand\everyCorrAnsButton[1]{\def\every@CorrAnsButton{#1}}
-\def\every@CorrAnsButton{}
-\newcommand\everysqClearButton[1]{\def\every@sqClearButton{#1}}
-\def\every@sqClearButton{}
-\newcommand\everyeqButton[1]{\def\every@eqButton{#1}}
-\newcommand\everyCorrButton{\everyeqButton}
-\def\every@eqButton{}
-\newcommand\everyBeginQuizButton[1]{\def\every@BeginQuizButton{#1}}
-\def\every@BeginQuizButton{}
-\newcommand\everyEndQuizButton[1]{\def\every@EndQuizButton{#1}}
-\def\every@EndQuizButton{}
-\let\everyeqGenButton\everyPushButton
-\let\every@eqGenButton\every@PushButton
-\let\eqGenButton\pushButton
-\newcommand\everyeqIcon[1]{\def\every@eqIcon{#1}}
-\def\every@eqIcon{}
-\def\formatInitAltApprs{\formatInitAltApprs}
-\def\@eqAddAAFormat#1{\def\@rgi{#1}\ifx\@rgi\formatInitAltApprs
- \bInitAltAppr\else\def\eqAddAAFormat{#1}\fi}
-\def\eqAddAAFormat{}
-\def\formatAsSet{try{formatAsSet()}catch(e){}}
-\def\formatAsVector{try{formatAsVector()}catch(e){}}
-\def\eq@SupActnLst{{\AddAAKeystroke}{\AddAAMouseUpMC}%
- {\AddAAMouseUpMS}{\AddAAFormat}}
-\newcommand\setActionKeys{\edef\catOfAt{\the\catcode`@}%
- \ifnum\catOfAt=11 \let\eq@CatTail\relax\else
- \makeatletter\let\eq@CatTail\makeatother\fi\setActionKeysi}
-\def\setActionKeysi#1{\let\eq@itsGood\eq@One
- \def\setActionKeys@cont{\processAppArgs#1\end\@nil}%
- \begingroup\eq@checkivValidKeys#1\end\ef@nil\endgroup\eq@CatTail}
-\def\eq@checkivValidKeys#1#2{\def\eq@GOOD{good}\expandafter
- \@tfor\expandafter
- \@ction\expandafter:\expandafter=\eq@SupActnLst\do{%
- \expandafter\def\@ction{good}}%
- \ifx\end#1% if #1=\end, #2=\ef@nil.
- \def\eq@next{\aftergroup\setActionKeys@cont}%
- \else
- \if\eq@itsGood\eq@One
- \let\itp@ss0\let\@@next\relax
- \expandafter\@tfor\expandafter
- \@ction\expandafter:\expandafter=\eq@SupActnLst\do{%
- \expandafter\ifx\expandafter#1\@ction
- \let\itp@ss\eq@One\@break@tfor
- \fi}% do
- \if\itp@ss\eq@Zero\let\eq@itsGood\eq@Zero
- \def\eq@next{\def\eq@lastArg{#1}\expandafter
- \eq@sqkErrorMsg\ef@gobbletonil}\else
- \let\eq@next\eq@checkivValidKeys\fi
- \else\let\eq@next\ef@gobbletonil\fi
- \fi %\ifx\end
- \eq@next
-}
-\def\eq@sqkErrorMsg#1{\PackageError{exerquiz}{The key \expandafter
- \string\eq@lastArg\space is not supported by
- \string\setActionKeys.\MessageBreak
- Remove the key or correct the spelling of the key}{}}
-\def\addToAction{\makeatletter\@ifstar{\let\isSt@r\eq@YES\@ddToAction}
- {\let\isSt@r\eq@NO\@ddToAction}}
-\def\@ddToAction#1#2{\let\eq@itsGood\eq@One
- \def\setActionKeys@cont{\@@ddToAction{#1}{#2}}\begingroup
- \eq@checkivValidKeys{#1}{#2}\end\ef@nil\endgroup\makeatother}
-\def\@@ddToAction#1#2{\@getCmdName{#1}%
- \if\isSt@r\eq@YES\toks2={#2}%
- \toks@=\aeb@exiii{\csname eq\@CmdName\endcsname}%
- \edef\tmp@tokshold{\the\toks2 \the\toks@}%
- \toks@=\expandafter{\tmp@tokshold}\else
- \toks@=\aeb@exiii{\csname eq\@CmdName\endcsname#2}\fi
- \expandafter\edef\csname eq\@CmdName\endcsname{\the\toks@}%
-}
-\def\@eqAddAAKeystroke#1{\def\argi{#1}\ifx\argi\@empty
- \def\eqAddAAKeystroke{}\else\def\eqAddAAKeystroke{#1}\fi} %\r
-\def\eqAddAAKeystroke{}
-\def\@eqAddAAMouseUpMC#1{\def\argi{#1}\ifx\argi\@empty
- \def\eqAddAAMouseUpMC{}\else\def\eqAddAAMouseUpMC{#1}\fi}
-\def\eqAddAAMouseUpMC{}
-\def\@eqAddAAMouseUpMS#1{\def\argi{#1}\ifx\argi\@empty
- \def\eqAddAAMouseUpMS{}\else\def\eqAddAAMouseUpMS{#1}\fi}
-\def\eqAddAAMouseUpMS{}
-\def\eqIconDefaults
-{%
- \rawPDF{}\S{}\mkIns{/TP 1}\W{}
- \CA{}\RC{}\AC{}\BC{}\BG{}\H{N}
- \textColor{0 g}\Ff{\FfReadOnly}
-}
-\newcommand\eqIcon[4][]
-{%
- \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{\eq@setButtonProps
- \eq@Button@driver}{\eqIconDefaults\every@ButtonField
- \every@eqIcon}}%
-}
-\eq@restoreCats
-\endinput
-%%
-%% End of file `exerquiz.sty'.
+%%
+%% This is file `exerquiz.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{exerquiz}
+ [2018/03/21 v8.2.2 %
+ Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)]
+\usepackage{keyval}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{ifluatex}
+\@ifundefined{exqtable}{\def\exqtable{table}}{}
+\IfFileExists{xcolor.sty}{%
+ \def\eq@ColorPackage{xcolor}%
+ \PassOptionsToPackage{\exqtable,hyperref}{xcolor}}
+ {\def\eq@ColorPackage{color}}
+\DeclareOption{noxcolor}{\def\eq@ColorPackage{color}}
+\DeclareOption{forpaper}{%
+ \eqforpapertrue\PassOptionsToPackage{monochrome}{\eq@ColorPackage}
+ \AtBeginDocument{\ifnum\eq@drivernum=4 \else\AllowPeeking\fi}
+}
+\DeclareOption{forcolorpaper}{\eqforpapertrue % for print
+ \AtBeginDocument{\ifnum\eq@drivernum=4 \else\AllowPeeking\fi}
+}
+\DeclareOption{preview}{\PassOptionsToPackage{preview}{eforms}}
+\DeclareOption{nosolutions}{\eq@nosolutionstrue\eq@nolinktrue}
+\DeclareOption{noquizsolutions}{\eq@noquizsolutionstrue\eq@nolinktrue}
+\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
+\DeclareOption{online}{\let\eq@online\eq@YES}
+\let\eq@online\eq@NO
+\DeclareOption{nohiddensolutions}{\eq@globalshowsolutionstrue}
+\DeclareOption{noHiddensolutions}%
+ {\eq@globalshowsolutionstrue\AtBeginDocument{\def\Hidesymbol{h}}}
+\DeclareOption{solutionsafter}{\eq@solutionsaftertrue\eq@nolinktrue}
+\DeclareOption{solutionsonly}{\solutionsonlytrue\answerkeytrue
+ \therearesolutionstrue\AtEndOfPackage{\let\exerSolnsHeadnToc\relax}}
+\newif\ifsolutionsonly\solutionsonlyfalse
+\@ifundefined{ifanswerkey}{\newif\ifanswerkey\answerkeyfalse}{}
+\DeclareOption{contsolns}{\AtEndOfPackage{\InputIfFileExists
+ {contsolns.def}{\contsolnsInputMsg}{\contsolnsErrorMsg}}}
+\def\contsolnsInputMsg{\PackageInfo{exerquiz}{contsolns option,
+ inputting file contsolns.def}}
+\def\contsolnsErrorMsg{\PackageWarning{exerquiz}{contsolns option,
+ cannot find file contsolns.def}}
+\DeclareOption{nocorrections}{\nocorrectionstrue}
+\DeclareOption{proofing}{\eq@proofingtrue}
+\newif\ifaebshowgrayletters\aebshowgraylettersfalse
+\DeclareOption{showgrayletters}{\aebshowgrayletterstrue}
+\@ifundefined{ifvspacewithsolns}{%
+ \DeclareOption{vspacewithsolns}{\vspacewithsolnstrue}
+ \newif\ifvspacewithsolns\vspacewithsolnsfalse
+}{}
+\@ifundefined{ifdisplayworkarea}{\newif\ifdisplayworkarea
+ \displayworkareafalse}{}
+\DeclareOption{nodljs}{\PassOptionsToPackage{nodljs}{insdljs}%
+ \AtEndOfPackage{\let\importdljs\eq@YES}}
+\DeclareOption{execJS}{\PassOptionsToPackage{execJS}{insdljs}}
+\DeclareOption{exercisesonly}{\PassOptionsToPackage{nodljs}{insdljs}}
+\DeclareOption{debug}{\PassOptionsToPackage{debug}{insdljs}}
+\DeclareOption{allowrandomize}{\AtEndOfPackage{\inputRandomizeChoices}}
+\def\inputRandomizeChoices{\InputIfFileExists{aebrandom.def}
+ {\PackageInfo{exerquiz}{inputting aebrandom.def}}
+ {cannot find aebrandom.def}}
+\newif \ifusesumrytbls \usesumrytblsfalse
+\DeclareOption{usesumrytbls}{\usesumrytblstrue
+ \def\inputSumryTblCode{\InputIfFileExists{aebsumrytbls.def}
+ {\PackageInfo{exerquiz}{inputting aebsumrytbls.def}}%
+ {cannot find aebsumrytbls.def}}}
+\let\inputSumryTblCode\relax
+\DeclareOption{usemcfi}{%
+ \def\inputMCFICode{\InputIfFileExists{usemcfi.def}
+ {\PackageInfo{exerquiz}{inputting usemcfi.def}}%
+ {cannot find usemcfi.def}}}
+\let\inputMCFICode\relax
+\newif\ifwithinMCFI\withinMCFIfalse
+\DeclareOption{dvipsone}{%
+ \def\eq@drivernum{0}\def\eq@driver{dvipsone}%
+ \PassOptionsToPackage{dvipsone}{eforms}
+}
+\DeclareOption{dvips}{%
+ \def\eq@drivernum{0}\def\eq@driver{dvips}%
+ \PassOptionsToPackage{dvips}{eforms}
+}
+\DeclareOption{pdftex}{%
+ \def\eq@drivernum{1}\def\eq@driver{pdftex}%
+ \PassOptionsToPackage{pdftex}{\eq@ColorPackage}
+ \PassOptionsToPackage{pdftex}{eforms}
+}
+\DeclareOption{luatex}{%
+ \def\eq@drivernum{1}\def\eq@driver{luatex}%
+ \PassOptionsToPackage{luatex}{\eq@ColorPackage}
+ \PassOptionsToPackage{luatex}{eforms}
+}
+\DeclareOption{dvipdfm}{%
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
+ \PassOptionsToPackage{dvipdfm}{\eq@ColorPackage}%
+ \PassOptionsToPackage{dvipdfm}{eforms}%
+}
+\DeclareOption{dvipdfmx}{%
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
+ \PassOptionsToPackage{dvipdfmx}{\eq@ColorPackage}%
+ \PassOptionsToPackage{dvipdfmx}{eforms}%
+}
+\DeclareOption{xetex}{%
+ \def\eq@drivernum{2}\def\eq@driver{xetex}%
+ \PassOptionsToPackage{xetex}{\eq@ColorPackage}
+ \PassOptionsToPackage{xetex}{eforms}%
+}
+\DeclareOption{textures}{\def\eq@drivernum{3}%
+ \def\eq@driver{textures}%
+ \PassOptionsToPackage{textures}{\eq@ColorPackage}%
+ \PassOptionsToPackage{textures}{eforms}%
+}
+\DeclareOption{dviwindo}{\def\eq@drivernum{4}\def\eq@driver{dviwindo}%
+ \eq@noformstrue\PassOptionsToPackage{nodljs}{insdljs}}
+\DeclareOption{unicode}{\PassOptionsToPackage{unicode}{hyperref}}
+\DeclareOption{useui}{\PassOptionsToPackage{useui}{eforms}}
+\let\LangRedefinitions\relax
+\DeclareOption{french}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqfr.def}%
+ {\PackageInfo{exerquiz}{Inputting French Option}}%
+ {\PackageInfo{exerquiz}{French Option: Cannot find the file
+ eqfr.def, using the default, English.}}}}
+\DeclareOption{german}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqde.def}%
+ {\PackageInfo{exerquiz}{Inputting German Option}}%
+ {\PackageInfo{exerquiz}{German Option: Kann die Datei eqde.def
+ nicht finden, benutze Default, Englisch.}}}}
+\DeclareOption{norsk}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqno.def}%
+ {\PackageInfo{exerquiz}{Inputting Norsk Option}}%
+ {\PackageInfo{exerquiz}{Norsk Option: Cannot find the file eqno.def,
+ using the default, English.}}}}
+\DeclareOption{dutch}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqnl.def}%
+ {\PackageInfo{exerquiz}{Inputting Dutch Option}}%
+ {\PackageInfo{exerquiz}{Dutch Option: Kan bestand eqnl.def niet
+ vinden, gebruik default, Engels.}}}}
+\DeclareOption{spanish}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqes.def}%
+ {\PackageInfo{exerquiz}{Inputting Spanish Option}}%
+ {\PackageInfo{exerquiz}{Spanish Option: Opci\'on Espa\~nola: no puede
+ encontrar el fichero eqes.def, usar\'a por defecto, English.}}}}
+\DeclareOption{italian}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqit.def}%
+ {\PackageInfo{exerquiz}{Opzione Lingua Italiana}}%
+ {\PackageInfo{exerquiz}{pzione Italiano: Non trovo il file eqit.def,
+ utilizzo quello di default, English.}}}}
+\DeclareOption{russian}{%
+ \@ifpackageloaded{hyperref}{%
+ \ifHy@unicode\else\PackageWarning{exerquiz}{%
+ The unicode option recommended for hyperref\MessageBreak}\fi
+ }{\PassOptionsToPackage{unicode}{hyperref}}
+ \def\LangRedefinitions{\InputIfFileExists{eqru.def}%
+ {\PackageInfo{exerquiz}{Inputting Russian Option}}%
+ {\PackageInfo{exerquiz}{Russian Option: Cannot find the file
+ eqru.def, using the default, English.}}}}
+\DeclareOption{dansk}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqda.def}%
+ {\PackageInfo{exerquiz}{Inputting Dansk Option}}%
+ {\PackageInfo{exerquiz}{Dansk Option: Cannot find the file eqda.def,
+ using the default, English.}}}}
+\DeclareOption{polish}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqpo.def}%
+ {\PackageInfo{exerquiz}{Inputting Polish Option}}%
+ {\PackageInfo{exerquiz}{Polish Option: Cannot find the file
+ eqpo.def, using the default, English.}}}}
+\DeclareOption{finnish}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqfin.def}%
+ {\PackageInfo{exerquiz}{Inputting Finnish Option}}%
+ {\PackageInfo{exerquiz}{Finnish Option: Cannot find the file
+ eqfin.def, using the default, English.}}}}
+\DeclareOption{catalan}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqcat.def}%
+ {\PackageInfo{exerquiz}{Inputting Catalan Option}}%
+ {\PackageInfo{exerquiz}{Catalan Option: Cannot find the file
+ eqcat.def, using the default, English.}}}}
+\DeclareOption{czech}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqcz.def}%
+ {\PackageInfo{exerquiz}{Inputting Czech Option}}%
+ {\PackageInfo{exerquiz}{Czech Option: Cannot find the file eqcz.def,
+ using the default, English.}}}}
+\DeclareOption{brazil}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqbr.def}%
+ {\PackageInfo{exerquiz}{Inputting Brazilian Portuguese Option}}%
+ {\PackageInfo{exerquiz}{Portuguese Option: Opc\~ao Portugu\^es:
+ n\~ao foi poss\'ivel encontrar o arquivo eqbr.def, usaremos
+ o padr\~ao, English.}}}}
+\DeclareOption{turkish}{%
+ \@ifpackageloaded{hyperref}{%
+ \ifHy@unicode\else\PackageWarning{exerquiz}{%
+ The unicode option recommended for hyperref\MessageBreak}\fi
+ }{\PassOptionsToPackage{unicode}{hyperref}}
+ \def\LangRedefinitions{\InputIfFileExists{eqtr.def}%
+ {\PackageInfo{exerquiz}{Inputting Turkish Option}}%
+ {\PackageInfo{exerquiz}{Cannot find the file eqtk.def,
+ using the default, English.}}}}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{\eq@ColorPackage}}
+\@ifpackageloaded{xcolor}%
+{%
+ \@ifpackagelater{xcolor}{2004/07/04}{}
+ {%
+ \PackageError{exerquiz}{%
+ *************************************************\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]{exerquiz}\MessageBreak
+ *************************************************}{}%
+ }%
+}{}
+\let\iterate\relax
+\newif\ifeq@solutionsafter \eq@solutionsafterfalse
+\newif\ifeq@hidesolution \eq@hidesolutionfalse
+\newif\ifeq@globalshowsolutions \eq@globalshowsolutionsfalse
+\newif\ifeq@nosolutions \eq@nosolutionsfalse
+\newif\ifeq@proofing \eq@proofingfalse
+\providecommand\turnProofingOn{\eq@proofingtrue}
+\providecommand\turnProofingOff{\eq@proofingfalse}
+\newif\ifeqforpaper \eqforpaperfalse
+\newif\ifeq@noforms \eq@noformsfalse
+\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}
+\newif\ifcqSA\cqSAfalse
+\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse
+ \displayworkareatrue\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
+}
+\newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse
+\newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse
+\def\turnOnRandomize{\eq@randomizeallChoicestrue}
+\def\obeyLocalRandomize{\eq@randomizeallChoicesfalse}
+\let\saveRandomSeed\relax
+\let\inputRandomSeed\relax
+\def\CorrectionsOn{\global\nocorrectionsfalse}
+\def\CorrectionsOff{\global\nocorrectionstrue}
+\AtBeginDocument{\ifeq@noforms\else\Form\fi}
+\AtEndDocument{%
+ \include@solutions
+ \ifeq@noforms\else\include@quizsolutions\fi
+ \clearpage
+ \csname endForm\endcsname
+ \if\eq@drivernum2\else\clearpage\fi
+}
+\InputIfFileExists{exerquiz.cfg}{}{}
+\@ifpackageloaded{web}{%
+ \ExecuteOptions{\eq@driver@name}%
+}{%
+ \ifluatex\ExecuteOptions{luatex}\else
+ \ifpdf\ExecuteOptions{pdftex}\else
+ \ifxetex\ExecuteOptions{xetex}\else
+ \InputIfFileExists{web.cfg}{}
+ {\@ifundefined{l@tex@@@@driver}{\ExecuteOptions{dvips}}
+ {\ExecuteOptions{dvipsone}}}\fi\fi\fi
+}
+\ProcessOptions
+\RequirePackage{array}
+\RequirePackage{\eq@ColorPackage}
+\RequirePackage{comment}
+\RequirePackage{verbatim}
+\RequirePackage{hyperref}
+\RequirePackage{amssymb}% used for return symbols
+\RequirePackage{eforms}[2012/06/20]
+\@ifundefined{eq@drivernum}{%
+ \PackageError{exerquiz}%
+ {You have not specified dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the exerquiz package}
+ {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the exerquiz package.}
+}{}
+\edef\eq@restoreCats{% dps17
+ \catcode`\noexpand\"=\the\catcode`\"\relax
+ \catcode`\noexpand\'=\the\catcode`\'\relax
+ \catcode`\noexpand\,=\the\catcode`\,\relax
+ \catcode`\noexpand\(=\the\catcode`\(\relax
+ \catcode`\noexpand\!=\the\catcode`\!\relax
+ \catcode`\noexpand\_=\the\catcode`\_\relax
+}
+\@makeother\"\@makeother\'\@makeother\,%
+\@makeother\(\@makeother\!\@makeother\_
+\@ifundefined{ifsolutionsAtEnd}
+ {\newif\ifsolutionsAtEnd\solutionsAtEndtrue}{}
+\ifeq@nosolutions\solutionsAtEndfalse\fi
+\ifeq@solutionsafter\solutionsAtEndfalse\fi
+\@ifundefined{if@fleqn}{\let\fleqnOn\relax\let\fleqnOff\relax}
+ {\def\fleqnOn{\@fleqntrue}\def\fleqnOff{\@fleqnfalse}}
+\@ifundefined{if@inclkey}{\newif\if@inclkey\@inclkeytrue}{}
+\def\eqretnSymb{$\blacksquare$}%{\rule{6bp}{6.8bp}}
+\newcommand\exlabel{Exercise}
+\newcommand\exlabelsol{\exlabel}
+\newcommand\exsectitle{Solutions to \exlabel s}
+\newcommand\exsecrunhead{\exsectitle} %% change to @ form
+\newcommand{\exsolafter}{\eq@exsolafterDefault}
+\newcommand{\resetSolnAfterToDefault}{%
+ \def\exsolafter{\eq@exsolafterDefault}}
+\newcommand{\exsolafterDefault}[1]{\def\eq@exsolafterDefault{#1}%
+ \def\exSolafterDefault{#1}\resetSolnAfterToDefault}
+\exsolafterDefault{\textit{Solution}:}
+\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
+\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
+\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
+\newcommand\eq@sqslsectitle{Solutions to Quizzes}
+\newcommand\sqslsectitle{\eq@sqslsectitle}
+\newcommand\eq@sqslsecrunhead{Solutions to Quizzes}
+\newcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+\newcommand\eq@sqsllabel{\protect\textbf{Solution to Quiz:}}
+\newcommand\sqsllabel{\eq@sqsllabel}
+\newcommand\sqsolafter{\textit{Solution}:}
+\newcommand{\sqDefaultFmtTitle}[1]%
+ {\def\eq@sqlabel{#1}\def\sqlabel{#1}}
+\newcommand\sqlabel{\eq@sqlabel}
+\sqDefaultFmtTitle{\textcolor{red}{Quiz}}
+\newcommand\eq@sqslrtnlabel{\protect\eqretnSymb}
+\newcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+\newcommand\eqsqrtmsg{"Right!"}
+\newcommand\eqsqwgmsg{"Wrong!"}
+\newcommand\doNotShowAgainMsg{Do not show this message again}
+\newcommand\eq@bqlabel{Begin Quiz}
+\newcommand\bqlabel{\eq@bqlabel}
+\newcommand\eq@bqlabelISO{\eq@bqlabel}
+\newcommand\bqlabelISO{\eq@bqlabelISO}
+\newcommand\setDefShortQuizLabelName[1]%
+ {\def\eq@defaultShortQuizLabelName{#1}}
+\setDefShortQuizLabelName{Quiz}
+\newcommand\setDefQuizLabelName[1]
+ {\def\eq@defaultQuizLabelName{#1}}
+\setDefQuizLabelName{Quiz}
+\newcommand\eq@eqlabel{End Quiz}
+\newcommand\eqlabel{\eq@eqlabel}
+\newcommand\eq@Score{Score:}\newcommand\eq@OutOf{out of}
+\newcommand\eq@ptScore{Score:}
+\newcommand\stOutOf{of}
+\newcommand\eqScore{\eq@Score}\newcommand\eqOutOf{\eq@OutOf}
+\newcommand\eqptScore{\eq@ptScore}
+\newcommand\eqInitQuizMsg{%
+ "You must initialize the Quiz! Click on "+msg+"."}
+\newcommand\eqQuizTotalMsg{%
+ "\eqScore\space"+Score+" \eqOutOf\space"+nQuestions}
+\newcommand\eqQuizPointsMsg{%
+ "\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal}
+\newcommand\eqQuizPercentMsg{pcScore+"\%"}
+\newcommand\eqQuizGradeMsg{quizGrade}
+\newcommand\eqMadeChoice{%
+ "You have already made a choice."
+ + " Your choice was ("+Responses[probno]+")."
+ + " Do you want to change it?"}
+\newcommand\eq@local@CA{Correct}
+\newcommand\eq@local@RC{My Answers!}
+\newcommand\eq@local@AC{Please!}
+\newcommand\eq@local@CorrAnsButton{Ans}
+\newcommand{\eq@local@sqClearButton}{Clear}
+\newcommand\eqerrABS{"Absolute values not balanced. Please correct."}
+\dlJSStr[noquotes]\eqerrBadMathFunc{"The expression \""+aF[i]
+ +"\" is neither a defined function nor a valid math expression."}
+\newcommand\eqParens{"Parentheses"}
+\newcommand\eqBrackets{"Brackets"}
+\newcommand\eqBraces{"Braces"}
+\newcommand\eqerrDelimNotBal{aGroup[i][2] + " not balanced.
+ Please correct."}
+\newcommand\eqerrBadExp{"Invalid mathematical expression.
+ A problem with one of the exponents. Please correct."}
+\newcommand\eqerrUnfinishQuiz{"There is an unfinished quiz,
+ please finish before moving on to another."}
+\newcommand\noPeekMsg{"Viewing Solutions to quizzes is not allowed
+ until you take or finish this quiz!"}
+\newcommand\highThresholdMsg{"You are required to respond to all
+ questions before the quiz is evaluated."}
+\newcommand\eqSyntaxErrorUndefVar{"Syntax Error: Possibly an undefined
+ variable present, or an expression is not written in an expected
+ format."}
+\dlJSStr[noquotes]{\eqSyntaxErrorComma}{%
+ "Syntax Error: A comma was found"
+ + " in your response \""
+ + UserAns + "\". Please remove the comma, or this answer"
+ + " will be marked as wrong."}
+\newcommand{\limSelWarningMsg}{"For this question, you are allowed to
+ make at most " + n + " selections."}
+\newcommand{\defaultReqFormMsg}{%
+ "The expression is not in the expected form."}
+\PackageInfo{exerquiz}{* Using \eq@driver\space option *}
+\ifsolutionsonly
+\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}}
+\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
+\fi
+\newwrite\quiz@solns \immediate\openout \quiz@solns \jobname.qsl
+\newcommand{\writeToQzSolns}[1]{%
+ \set@display@protect
+ \immediate\write\quiz@solns{#1}%
+ \set@typeset@protect
+}
+\def\eq@IWAuxOut#1{\immediate\write\@auxout{#1}}
+\def\eq@IWDefs#1{\immediate\write\eq@xrefdefns{#1}}
+\newcounter{eqexno} \setcounter{eqexno}{0}
+\newcounter{@exno} \setcounter{@exno}{0} % running exno
+\newcounter{quizno} \setcounter{quizno}{0}
+\renewcommand\thequizno{\alph{quizno}}
+\def\theHquizno{\curr@quiz.\theeqquestionnoi.%
+ \ifcase\@eqquestiondepth\or\or\arabic{eqquestionnoii}.%
+ \or\arabic{eqquestionnoii}.\roman{eqquestionnoiii}.%
+ \else\fi\alph{quizno}}
+\newlength\eqemargin \eqemargin=0pt
+\newcounter{eqpointvalue} \setcounter{eqpointvalue}{0}
+\newlength\eq@tmplength
+\newlength\eqtmplength
+\newcounter{questionno}
+\newcounter{eqquestionnoi}
+\newcounter{eqquestionnoii}
+\newcounter{eqquestionnoiii}
+\newcount\@eqquestiondepth \@eqquestiondepth=0
+\newcounter{grpquestionno}
+\newcounter{partno}
+\newif\ifuseNumForParts\useNumForPartsfalse
+\def\alphaParts{\def\partnoFmt{\alph}\useNumForPartsfalse}\alphaParts
+\def\numberParts{\def\partnoFmt{\arabic}\useNumForPartstrue}
+\renewcommand\thepartno{\partnoFmt{partno}}
+\newtoks\eq@scratchtoks
+\def\theHpartno{partno\the@exno\thepartno}
+\def\verbatimwrite{\@bsphack
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active \catcode`\^^I=12
+ \def\verbatim@processline{%
+ \immediate\write\verbatim@out
+ {\the\verbatim@line}}%
+ \verbatim@start}
+\def\endverbatimwrite{\@esphack}
+\providecommand\PBS[1]{\let\temp=\\#1\let\\=\temp}
+\newcommand\exlabelformat{{\scshape\exlabel\ \theeqexno.}}
+\newcommand\exlabelformatwp{\exlabelformat}
+\newcommand\exsllabelformat{\protect\textbf{\exlabelsol\ \theeqexno.}}
+\newcommand\exsllabelformatwp
+ {\protect\textbf{\exlabelsol\ \theeqexno(\thepartno)}}
+\newcommand\exrtnlabelformat{$\square$}
+\newcommand\exrtnlabelformatwp{$\square$}
+\newcommand{\belowexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@exerskip{\noexpand\removelastparskip
+ \noexpand\vskip\the\eq@tmplength\relax\kern0pt}}
+\let\eqexerskip\belowexskip
+\belowexskip{\medskipamount}
+\newcommand{\aboveexskip}[1]{\setlength{\eq@tmplength}{#1}%
+ \edef\eq@priorexskip{\noexpand\vskip\the\eq@tmplength\relax
+ \kern0pt}}
+\let\priorexskip\aboveexskip
+\aboveexskip{\medskipamount}
+\let\eq@postexerciseHook\relax
+\newcommand\belowexsolnskip{\protect\medskip}
+\def\removelastparskip{\ifdim\parskip>0pt\vskip-\parskip\fi}
+\newcommand{\nolinkcolor}[1]{\def\@nolinkcolor{#1}}
+\nolinkcolor{blue}
+\newcommand{\exerSolnsInExtFile}[2][]
+ {\let\exerSolns@ExtFile\eq@YES\gdef\eq@exerSolns@fileName{#2}%
+ \gdef\exerSolns@ReturnPath{#1}}
+\let\exerSolns@ExtFile\eq@NO
+\def\exerSolns@ReturnPath{}
+\let\marginparpriorhook\@empty % used to material before the exercise
+\let\marginparafterhook\@empty % used to material after the exercise
+\let\afterlabelhskip\space
+\let\exersolnheadhook\@empty
+\let\exer@solnheadhook\@empty
+\newcommand{\eqexheader}
+{%
+ \ifeq@nolink % no link to solution
+ \mbox{\color{\@nolinkcolor}\if\exerstar*\exlabelformatwp\else
+ \exlabelformat\fi}%
+ \else
+ \if\exerSolns@ExtFile\eq@YES
+ \mbox{\href{\eq@exerSolns@fileName\#ex.\the@exno}%
+ {\exlabelformat}}%
+ \else
+ \mbox{\hyperlink{ex.\the@exno}{\exlabelformat}}%
+ \fi
+ \fi
+}
+\def\eqexheader@wrapper{\hypertarget{qex.\the@exno}{\eqexheader}}
+\newcommand{\partsformat}[1]{\def\eq@partsformat{#1}}
+\partsformat{(\hfil\thepartno\hfil)}
+\newcommand{\defaultpartsformat}{%
+ \partsformat{(\hfil\thepartno\hfil)}}
+\let\exlisttabheaderpriorhook\@empty
+\let\exlisttabheaderafterhook\@empty
+\newcommand{\eqexlisttabheader}
+{%
+ \exlisttabheaderpriorhook
+ \ifeq@nolink
+ \color{\@nolinkcolor}\eq@partsformat
+ \else
+ \if\exerSolns@ExtFile\eq@YES
+ \href{\eq@exerSolns@fileName\#ex.\the@exno\thepartno}%
+ {\eq@partsformat}%
+ \else
+ \hyperlink{ex.\the@exno\thepartno}{\eq@partsformat}%
+ \fi
+ \fi
+}
+\newcount\cq@Cnt
+\def\cq@CutName{cq-\the\cq@Cnt.cut}
+\let\cq@star\eq@NO
+\newif\ifcqqs \cqqstrue
+\newif\ifcqIsActive \cqIsActivefalse
+\def\cqQS{\@ifstar{\cqQSV}{\cqQSA}}
+\def\cqQSA#1#2{\ifcqqs#1\else#2\fi}
+\@ifpackageloaded{web}{\@ifundefined{IF@AorBswitch}{%
+ \PackageWarningNoLine{A version of the web package
+ dated\MessageBreak 2016/11/03 or later is required
+ for \string\cqQS}}}{}%
+\@ifundefined{webtempboxi}{\newbox\webtempboxi
+ \newbox\webtempboxii}{}
+\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
+\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
+\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
+\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
+ \afterassignment\TRUEACTIONia\fi
+ \setbox\webtempboxi=\hbox}
+\providecommand\SETTEMPBOXii{\IF@AorBswitch
+ \afterassignment\FALSEACTIONiia\fi
+ \setbox\webtempboxii=\hbox}
+\def\cqQSV{\let\IF@AorBswitch\ifcqqs
+ \IF@AorBswitch
+ \def\eq@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
+ \def\eq@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
+ \eq@next}
+\def\eq@turnMessageOff{\let\save@message\message
+ \let\message\@gobble}
+\def\eq@turnMessageOn{\let\message\save@message}
+\def\eqCQDeclarations{\cqqsfalse\eq@turnMessageOff
+ \includecomment{sPage}\excludecomment{qPage}%
+ \eq@turnMessageOn}
+\def\eqTopOfSolnPage{\cqSAfalse
+ \eqCQDeclarations}
+\eq@turnMessageOff
+\includecomment{qPage}\excludecomment{sPage}
+\eq@turnMessageOn
+\def\writecqQSfalse{\writeToExSolns{\protect\eqTopOfSolnPage}}
+\AtBeginDocument{\writecqQSfalse}
+\newenvironment{cq@CQ}
+{%
+ \global\cqIsActivetrue
+ \global\advance\cq@Cnt1\relax
+ \immediate\openout\CommentStream=\cq@CutName
+ \let\verbatim@out\CommentStream
+ \verbatimwrite
+}{%
+ \endverbatimwrite
+ \immediate\closeout\CommentStream
+ \ifx\cq@star\eq@YES
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \def@QuesToSoln}\else
+ \xdef\cq@INPUTCUT{\noexpand\cqqstrue
+ \noexpand\input{\cq@CutName}\noexpand
+ \p@ssQuesToSoln}\fi
+ \aftergroup\cq@INPUTCUT
+}
+\newenvironment{cqs@CQ}{\let\cq@star\eq@YES\cq@CQ}{\endcq@CQ}
+\def\declCQQuesStr#1{\def\cqQStr{#1}}
+\declCQQuesStr{Question}
+\def\declCQSolStr#1{\def\cqSStr{#1}}
+\declCQSolStr{Solution}
+\newcommand\declCQPre[1]{\def\cq@Pre{#1}}
+\declCQPre{\emph{\cqQStr}:\space}
+\newcommand\declCQPost[1]{\def\cq@Post{#1}}
+\declCQPost{\par\medskip\noindent\emph{\cqSStr}:\space\ignorespaces}
+\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}
+\def\declCopyQues#1{\def\cqCopiedQues{#1}}
+\def\def@QuesToSoln{\restoreNormalSolns
+ \global\terminexchangedfalse % dps cq
+ \ifeq@hidesolution\else\writeToExSolns{\protect
+ \declCopyQues{\protect\input{\cq@CutName}}}\fi}
+\newcommand\restoreNormalSolns{%
+ \writeToExSolns{\protect\decleqterminex{\protect\eqterminexDEF}}}
+\newcommand{\eq@CommonCmd}[1]{\def\eq@@CommonCmd{#1}#1}
+\let\eq@@CommonCmd\@empty
+\newcommand\gExCommonCmd[1]{\gdef\gEx@CommonCmd{\eq@CommonCmd{#1}}}
+\let\gEx@CommonCmd\@empty
+\let\endexerhook\@empty
+\newenvironment{exercise}
+{%
+ \let\cq\cq@CQ\let\endcq\endcq@CQ
+ \csarg\let{cq*}\cqs@CQ
+ \csarg\let{endcq*}\endcqs@CQ
+ \par\removelastskip\eq@priorexskip\noindent
+ \let\eqCommonCmd\eq@CommonCmd
+ \def\eq@argi{eqexno}%% use eqexno counter
+ \if\eq@exerstarEnv*\def\exerstar{*}\else\def\exerstar{x}\fi
+ \def\currhideopt{x}%
+ \@ifnextchar[{\exercise@}%
+ {\if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi\eq@next}%
+}{\eq@postexerciseHook\endexerhook\par
+ \global\eq@exerciseheadingtrue\removelastskip\eq@exerskip}
+\def\exercise@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H%
+ \edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse
+ \fi
+ \def\eq@next{\@exercise}% H, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \ifx\eq@arg\@empty\else\def\eq@argi{#1}\fi
+ \if\exerstar*\def\eq@next{\@exercise}\else
+ \def\eq@next{\exercise@@}\fi
+ \fi
+ \fi
+\eq@next}
+\def\exercise@@{\@ifstar{\def\exerstar{*}\@exercise}{\exercise@@@}}
+\def\exercise@@@{\@ifnextchar[{\exercise@@@@}{\@exercise}}
+\def\exercise@@@@[#1]{\edef\eq@arg{#1}%
+ \if\eq@arg h\def\currhideopt{h}%
+ \eq@hidesolutiontrue\eq@nolinktrue
+ \ifeq@globalshowsolutions
+ \eq@hidesolutionfalse\eq@nolinkfalse\fi
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \if\eq@arg H\edef\currhideopt{\Hidesymbol}%
+ \eq@hidesolutiontrue\eq@nolinktrue%
+ \def\eq@next{\@exercise}% h, no *, no counter
+ \else
+ \def\currhideopt{x}%
+ \PackageWarning{exerquiz}{The option #1 is not recognized}
+ \let\eq@next\relax
+ \fi
+ \fi
+\eq@next}
+\newif\ifeq@exerciseheading \eq@exerciseheadingtrue
+\let\prior@exerSolnHeaderHook\@empty
+\newcommand\exerSolnHeader[3]{%
+ \prior@exerSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\markright{#1}%\par\noindent%
+ \noindent\hypertarget{#2}{#3}\relax
+ \solnhspace
+}
+\let\solnItemMngt\relax
+\let\eqEXt\@gobbletwo
+\let\endeqEXt\relax
+\let\eqExtArg\@empty
+\let\eqFilterArg\@empty
+\let\eqExerSolnHeader\@empty
+\let\solutionparshape\@empty
+\def\eq@pslnaindnt{0pt}
+\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
+}
+\newif\if@restorejustify \@restorejustifyfalse
+\newcommand\restoreJustifyOn{\@restorejustifytrue}
+\newcommand\restoreJustifyOff{\@restorejustifyfalse}
+\def\restorejustify{\if@restorejustify
+ \@rightskip\z@skip \rightskip\@rightskip
+ \leftskip\z@skip \let\\\@normalcr\fi}
+\def\@exercise{%
+ \global\let\solutionparshape\@empty
+ \let\verbatim@out=\ex@solns
+ \if\eq@argi0\else\refstepcounter{\eq@argi}\fi\stepcounter{@exno}%
+ \if\exerstar*% if exercise with parts
+ \eq@nolinktrue
+ \else
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide %
+ \ifeq@hidesolution\else
+ \global\let\eqExerSolnHeader\eq@@writeexheader
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifvmode\ifdim\lastskip>\z@
+ \vskip-\lastskip
+ \fi\fi
+ \if\exerstar*%
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\exercise@parts
+ \let\endparts\endexercise@parts
+ \else
+ \let\solution\solnexer@woparts
+ \let\endsolution\endsolnexer@woparts
+ \let\parts\relax
+ \let\endparts\relax
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \fi
+ \eq@initializeContAnnot
+ \ifeq@exerciseheading
+ \prior@questionsHook\marginparpriorhook\noindent\eqexheader@wrapper
+ \afterlabelhskip\marginparafterhook\gEx@CommonCmd
+ \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}
+\def\eqExerSolnHeaderSngl{%
+ \ifmakeExSlLocal\protect\begingroup^^J\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
+}
+\def\eqExerSolnHeaderList{%
+ \ifmakeExSlLocal\protect\begingroup^^J\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
+}
+\long\def\setsolnspace#1{\def\newsolnspace{#1}%
+ \let\solnspace\newsolnspace}
+\newif\ifeq@ckSolnVspace \eq@ckSolnVspacetrue
+\def\ckSolnOpt{\global\eq@ckSolnVspacetrue}
+\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
+\let\solnhspace\space
+\let\solnspace\space
+\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}%]
+ {\solnexer@@woparts[\null]}}\else
+ \def\eq@next{\solnexer@@woparts[\null]}\fi
+ \eq@next
+}
+\let\eqPriorVspace\@gobble
+\newif\if@eqlinedfiller \@eqlinedfillerfalse
+\newcommand{\vspaceFiller}[1]{\vfill}
+\newcommand{\vspaceFillerDefault}[1]{\vfill}
+\def\eqWriteLine{\hfill}
+\def\eq@linesXPgs{%
+ \begingroup\offinterlineskip\parskip0pt
+ \@tempcnta=0
+ \@whilenum\@tempcnta<\soln@keys@nLines\relax\do
+ {\vskip0pt\penalty-50\vglue\wlVspace\eqWriteLine
+ \advance\@tempcnta1\relax}\par\endgroup
+}
+\let\leavevspace\relax % dpsj5
+\newcommand{\vspaceFmt}[1]{%
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
+ \ifdim\sameVspace>0pt
+ \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 % dpsj6
+ \fi
+}
+\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
+\let\soln@keys@nLines\@empty
+\def\eqKV@errx#1{\xdef\XKV@rm{\@tempa}}
+\def\eqSolnForEqexam#1{%
+ \let\soln@keys@nLines\@empty
+ \setkeys*{soln@keys}{#1}%
+ \ifx\soln@keys@nLines\@empty
+ \ifx\minVspacet@bs\@empty\xdef\sameVspace{\XKV@rm}\else
+ \xdef\sameVspace{\minVspacet@bs}\fi
+ \else
+ \@tempdima\wlVspace
+ \@tempdima=\soln@keys@nLines\@tempdima
+ \xdef\sameVspace{\the\@tempdima}%
+ \ifx\XKV@rm\@empty\else
+ \if@equsedim\let\soln@keys@nLines\@empty
+ \xdef\sameVspace{\XKV@rm}\fi
+ \fi
+ \fi
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
+}
+\def\solnexer@@woparts[#1]{%
+ \ifcqIsActive\else\ifterminexchanged
+ \restoreNormalSolns\fi\fi % dps cq
+ \global\cqIsActivefalse
+ \def\eq@argi{#1}\def\eq@null{\null}%
+ \ifx\eq@argi\@empty\gdef\sameVspace{0pt}\else
+ \ifx\eq@argi\eq@null\gdef\sameVspace{0pt}\else
+ \@ifundefined{PointsOnLeft}{%
+ \let\eqKV@errx@SAVE\KV@errx
+ \let\KV@errx\eqKV@errx\let\XKV@rm\@empty
+ \edef\temp@exp{\noexpand\setkeys*{soln@keys}{#1}}\temp@exp
+ \let\KV@errx\eqKV@errx@SAVE
+ \ifx\soln@keys@nLines\@empty\else
+ \PackageInfo{exerquiz}{%
+ nLines key detected in solution environment,\MessageBreak
+ is not not recognized without eqexam,\MessageBreak
+ will remove it}%
+ \let\soln@keys@nLines\@empty\fi
+ \xdef\sameVspace{\XKV@rm}%
+ }{\eqSolnForEqexam{#1}}%
+ \fi\fi
+ \solnexer@@@woparts
+}
+\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
+ \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{%
+ \xdef\eq@startSoln{\the\pagetotal}%
+ \eqe@debugVertSkip{\marginpar{\smash{b[\sameVspace]}}}%
+}
+\let\eqSavedComment\comment
+\let\eqSavedEndCommet\endcomment
+\def\setTabulrSolnEnv{%
+ \@ifundefined{@listii@SAVE}{\global\let\@listii@SAVE\@listii}{}%
+ \expandafter\def\expandafter\@listii\expandafter{\@listii@SAVE
+ \leftmargin\leftmarginii \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep}%
+ \def\everyparShape{\everypar{\parshape \@ne 0pt \linewidth}}%
+ \reset@doendpe{\parshape \@ne 0pt \linewidth}%
+ \parshape \@ne 0pt \linewidth
+ \everyparShape
+}
+\newif\ifthereissolution
+\let\priorexsolafterList\@empty
+\let\priorexsolafterTab\@empty
+\let\priorexsolafterSngl\@empty
+\def\eq@Hid{H}\def\eq@hid{h}
+\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}% dpsj4
+\let\eq@b@ddCodeSpecial\eq@b@ddCodeSpecialDef % dpsj4
+\def\solnexer@@@woparts{\ifeq@solutionsafter\else
+ \expandafter\begingroup\fi %dpsj10
+ \global\thereissolutiontrue
+ \global\let\procsoln\relax % dpsj6
+ \global\let\endprocsoln\relax % dpsj6
+ \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
+ \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
+ \let\procsoln\relax % dpsj6
+ \let\endprocsoln\relax
+ \removelastskip\removelastparskip
+ \cqSAtrue\eqCQDeclarations
+ \declCopyQues{\input{\cq@CutName}}%
+ \ifx\exsolafter\@empty
+ \ifdim\sameVspace=0pt\eqe@setStartSolns
+ \else
+ \solutionsafterSkip
+ \@@solnafterSkipOnce % dpsj3
+ \eqe@setStartSolns
+ \fi
+ \else\par\kern0pt
+ \solutionsafterSkip
+ \@@solnafterSkipOnce % dpsj3
+ \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
+ }%
+ \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
+\def\ReturnTo#1#2{\eq@fititin{\hyperlink{#1}{#2}}}
+\def\xReturnTo#1#2{\eq@fititin{\href{#1}{#2}}}
+\newcommand\eqExerSolnTrailer{%
+ \if\exerSolns@ExtFile\eq@YES\protect\xReturnTo
+ {\exerSolns@ReturnPath\jobname\#qex.\the@exno}%
+ \else\protect\ReturnTo{qex.\the@exno}\fi
+ {\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
+ \exrtnlabelformat\fi}}%
+ \protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+}
+\let\eq@e@ddCodeSpecialDef\relax % dpsj4
+\let\eq@e@ddCodeSpecial\eq@e@ddCodeSpecialDef % dpsj6
+\let\kdvsp@Restore\relax % dpsj20
+\def\endsolnexer@woparts{\endprocsoln\eq@e@ddCodeSpecial
+ \pkg@endsolnexerhook % djsj8 moved from the end of the macro
+ \ifeq@solutionsafter\else
+ \expandafter\endgroup\fi % from \begingroup at \solnexer@@@woparts
+ \global\let\exsolnonceonlytophook\relax
+ \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi % dpsj5
+ \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 % dpsj9
+ \if\exerstar*%
+ \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
+ \eq@fititin{\mbox{\exrtnlabelformat}}\fi
+ \ifx\istabularexer\eq@YES\unskip\kern0pt\else\par\fi % dpsj6
+ \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
+ \let\verbatim@out\ex@solns
+ \set@display@protect
+ \immediate\write\verbatim@out{\eqExerSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \fi
+ \kdvsp@Restore % dpsj20
+ \endsolnexerhook\penalty0\relax}
+\let\eq@exerstarEnv\relax
+\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
+{\endexercise}
+\def\exerwparts@cols{0}
+\let\topofpartshook\relax
+\let\@listiiredefined\eq@NO
+\let\itsExerParts\eq@NO
+\newif\if@tableadinitem\@tableadinitemfalse
+\newcommand{\tableadin@external}{\PackageError{exerquiz/eqexam}
+ {The \string\tableadin\space command is designed\MessageBreak
+ for the problem* environment of eqexam}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\tableadin\tableadin@external
+\newcommand{\eq@tableadinparts}{\item\relax
+ \PackageError{exerquiz/eqexam}{The \string\tableadin\space
+ command is not allowed in the\MessageBreak
+ parts environment}{Use \string\tableadin\space
+ in the problem* environment of eqexam.}%
+}
+\let\istabularexer\eq@NO
+\def\exercise@parts{\let\rlspar\relax
+ \ifx\solutionparshape\@empty
+ \let\isitleadin\eq@NO
+ \if@tableadinitem\let\rlspar\@gobbletwo\fi
+ \else\let\isitleadin\eq@YES\fi
+ \rlspar\removelastskip\par
+ \if\isitleadin\eq@YES
+ \def\eqparts@topsep{0pt}%
+ \vskip\eqparts@itemsep\relax\fi
+ \topofpartshook
+ \let\itsExerParts\eq@YES
+ \global\let\@listiiredefined\eq@NO
+ \def\exerwparts@cols{0}\@ifnextchar[%
+ {%
+ \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}
+\newcommand{\setPartsWidth}[1]{\def\parts@indent{\normalfont#1}%
+ \bgroup\settowidth{\eq@tmpdima}{\parts@indent}%
+ \xdef\widthOfParts{\the\eq@tmpdima}\egroup}
+\setPartsWidth{(d)}
+\def\eqe@prtsepPrb{\ }
+\providecommand{\prbPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\exPrtsep}[1]{\def\eqe@prtsepPrb{#1}}
+\providecommand{\eqequesparsep}[1]{\def\eqeques@parsep{#1}}
+\eqequesparsep{0pt}
+\let\prior@parts@hook\@empty
+\let\post@parts@hook\@empty
+\let\abovepartshook\@empty
+\let\belowpartshook\@empty
+\let\eqp@rtc@lcm@rk\relax
+\let\eq@insertContAnnot\relax
+\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
+ \def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
+ \@ifnextchar[{\@ckhide}{\eq@item}}
+\newcommand{\partsitemsep}[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@itemsep{\the\@tempdima}}}
+\let\eqpartsitemsep\partsitemsep
+\def\eqparts@itemsep{0pt}
+\newcommand\partsparsep[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@parsep{\the\@tempdima}}}
+\def\eqparts@parsep{0pt}
+\newcommand\partstopsep[1]{{%
+ \setlength{\@tempdima}{#1}%
+ \xdef\eqparts@topsep{\the\@tempdima}}}
+\def\eqparts@topsep{3pt}
+\newcommand{\leadinitem@external}{\PackageError{exerquiz/eqexam}
+ {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.}%
+}
+\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.}%
+}
+\def\eq@handleOptArg[#1]{\def\eq@optArg{[#1]}\eq@handleOptArgi}
+\def\eq@handleOptArgi{\expandafter
+ \eq@item@latex\eq@optArg\exlisttabheaderafterhook}
+\newif\ifwithinparts
+\let\ex@listtabheader@fterhook\@empty
+\newenvironment{exercise@parts@list}{%
+ \settowidth{\eq@tmplength}{\parts@indent}%
+ \edef\widthOfParts{\the\eq@tmplength}%
+ \eq@initializeContAnnot\eq@nolinkfalse\prior@parts@hook
+ \abovepartshook\list{\normalfont
+ \if\Hidesymbol h\eq@nolinkfalse\ifeq@solutionsafter
+ \eq@nolinktrue\fi\fi
+ \if\currhideopt H%
+ \else
+ \ifeq@solutionsafter
+ \eq@nolinktrue % no link to solution
+ \else
+ \ifeq@nosolutions
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \global\let\eqExerSolnHeader\eq@@writeexheaderlist
+ \fi
+ \fi
+ \fi
+ \fi
+ \makebox[\widthOfParts][r]{\eqexlisttabheader}%
+}{%
+ \usecounter{partno}%
+ \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
+ \setlength{\topsep}{\eqparts@topsep}%
+ \setlength{\parskip}{0pt}%
+ \setlength{\partopsep}{0pt plus 1pt minus 1pt}%
+ \ifdim\eqeques@parsep=0pt
+ \setlength{\parsep}{\eqparts@parsep}%
+ \else
+ \setlength{\parsep}{\eqeques@parsep}%
+ \fi
+ \setlength{\itemsep}{\eqparts@itemsep-\parsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \settowidth{\labelsep}{\normalfont\eqe@prtsepPrb}%
+ \addtolength{\labelsep}{\eq@extralabelsep}%
+ \settowidth{\labelwidth}{\parts@indent}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \let\eq@item@latex\item
+ \def\eq@item{\@ifnextchar[{\eq@handleOptArg}
+ {\eq@item@latex\ex@listtabheader@fterhook
+ \exlisttabheaderafterhook}}%
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@item@common}\else
+ \def\eq@next{\eq@item}\fi
+ \eq@next}%
+}}{\endlist\global\let\leadinitem\leadinitem@external
+ \post@parts@hook\belowpartshook}
+\def\eq@initializeContAnnot{\@ifundefined{eqequestions}
+ {\global\let\eqeCurrProb\relax}
+ {\xdef\eqeCurrProb{\theeqquestionnoi}}%
+ \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
+\def\minVspacetabs#1{\def\minVspacet@bs{#1}}
+\def\priorexsolafterTab{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \priorexsolafterTab@cont\fi\fi\fi}
+\def\priorexsolafterTab@cont{\let\exsolafter@save\exsolafter
+ \let\exsolafter\@empty
+ \makebox[0pt][r]{\parbox[t][\minVspacet@bs][t]{0pt}
+ {\strut\hfill\vfill\strut}}%
+ \minipage[t]{\linewidth}\exsolafter@save}
+\def\pkg@endsolnexerhook{\ifkeepdeclaredvspacing
+ \ifeq@solutionsafter\ifx\minVspacet@bs\@empty\else
+ \endminipage\fi\fi\fi}
+\def\exercise@parts@tabular@[#1]{%
+ \inittabMark
+ \let\eq@insertContAnnot\relax
+ \let\exerwparts@cols\@empty
+ \setkeys*{tabp@rts}{#1}\ifx\exerwparts@cols\@empty
+ \edef\exerwparts@cols{\XKV@rm}\fi
+ \ifx\minVspacet@bs\@empty\keepdeclaredvspacingfalse\fi
+ \let\istabularexer\eq@YES
+ \@tempcnta\exerwparts@cols\relax
+ \ifnum\@tempcnta<2\relax
+ \PackageError{exerquiz}{%
+ The number of columns for parts\MessageBreak
+ needs to be an integer greater than 1}
+ {Enter an integer, 2 or larger}\fi
+ \exercise@parts@tabular}
+\newcount\eq@extabColCnt
+\def\autotabOn{\let\eq@tabMarkChk\relax%
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOn}}
+\def\autotabOff{\let\eq@tabMarkChk\@gobble
+ \PackageInfo{exerquiz/eqexam}{Executing \string\autotabOff}}
+\autotabOff
+\def\inittabMark{\global\eq@extabColCnt=0 }
+\def\resettabMark{\global\eq@extabColCnt=1 }
+\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
+ \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
+ \expandafter\eq@atnext\fi}
+\def\eq@tabMark{%
+ \ifnum\eq@extabColCnt=0\relax
+ \global\advance\eq@extabColCnt1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt=1\relax
+ \let\eq@next\relax
+ \else
+ \ifnum\eq@extabColCnt>\exerwparts@cols
+ \let\eq@next\autotabnewline
+ \else\def\eq@next{&}\fi
+ \fi
+ \fi
+ \eq@next
+ \global\advance\eq@extabColCnt1\relax
+}
+\newcommand\partstabcolsep[1]{\def\eq@partstabcolsep{#1}}
+\partstabcolsep{1.5pt}
+\newcommand\partstabtopsep[1]{\def\eq@partstabtopsep{#1}}
+\partstabtopsep{3pt}
+\def\eq@vpartstabtopsep{\vskip\eq@partstabtopsep\relax}
+\newcommand\partstabrowsep[1]{\setlength{\@tempdima}{#1}%
+ \edef\eqparts@tabrowsep{\the\@tempdima}}
+\partstabrowsep{0pt}
+\newenvironment{exercise@parts@tabular}{%
+ \setcounter{partno}{0}%
+ \def\tablrIndent{\hglue\prtsIndntSep\relax}%
+ \if\isitleadin\eq@YES
+ \if$\the\everypar$\let\tablrIndent\relax\fi
+ \setcounter{partno}{1}\fi
+ \let\leadinitem\eq@leadinitemparts
+ \let\tableadin\eq@tableadinparts
+ \global\let\solutionparshape\@empty
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \let\eq@item@latex\item
+ \let\eq@item\item@part@tabular
+ \def\eqthisenv{parts}\withinpartstrue
+ \def\item{\ifx\@currenvir\eqthisenv
+ \def\eq@next{\eq@tabMarkChk\eq@tabMark\eq@item@common}\else
+ \def\eq@next{\eq@item@latex}\fi
+ \eq@next}\eq@nolinkfalse
+ \@ifundefined{@xtabularcr}{\let\@xarraycr\eq@xtabularcr}
+ {\let\@xtabularcr\eq@xtabularcr}%
+ \eq@tmpdima=\linewidth
+ \advance\eq@tmpdima-\prtsIndntSep\relax
+ \@tempcnta\exerwparts@cols\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta2\relax
+ \@tempdima\prtsIndntSep\relax
+ \divide\@tempdima 2\relax
+ \edef\halfWidth{\the\@tempdima}%
+ \advance\@tempdima\eq@partstabcolsep\relax
+ \tabcolsep\@tempdima
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \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
+ \parskip\eqeques@parsep\relax
+ \parindent0pt\relax\strut}p{\eq@tmpdima}}@{\hidewidth}}%
+}{\endtabular\kern0pt
+ \@ifundefined{@listii@SAVE}{}{\global\let\@listii\@listii@SAVE
+ \global\let\@listii@SAVE\relax}%
+ \post@parts@hook\belowpartshook
+ \aftergroup\eqe@innermarkpts
+ \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
+ \eq@nolinktrue % no link to solution
+ \else
+ \eq@ckglobalhide
+ \ifeq@hidesolution\eq@nolinktrue\else
+ \gdef\eqExerSolnHeader{\eq@@writeexheaderlist}%
+ \fi\fi\fi
+ \if@restorejustify\restorejustify\else\PBS\raggedright\fi
+ \settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
+ \sbox{\eq@tmpbox}{\parts@indent}%
+ \eq@tmpdima=\wd\eq@tmpbox
+ \addtolength\eq@tmplength{\eq@extralabelsep}%
+ \xdef\partshangamount{\the\eq@tmplength}%
+ \parshape \@ne 0pt \linewidth
+ \everypar{\parshape \@ne 0pt \linewidth}%
+ \eq@setPrbSolnAftrIndnt
+ \makebox[0pt][r]{\eqexlisttabheader\eqe@prtsepPrb}%
+ \ex@listtabheader@fterhook
+ \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\tabControlOn{\@ifundefined{@xtabularcr}
+ {\let\save@@xtabularcr\@xarraycr}
+ {\let\save@@xtabularcr\@xtabularcr}}
+\def\tabControlOff{\@ifundefined{@xtabularcr}
+ {\let\@xarraycr\save@@xtabularcr}
+ {\let\@xtabularcr\save@@xtabularcr}}
+\AtBeginDocument{\tabControlOn}
+\def\eq@xtabularcr{\@ifnextchar[{\save@@xtabularcr}
+ {\eqe@tab@parts@rowsep}}%
+\def\eqe@tab@parts@rowsep{\save@@xtabularcr
+ \noalign{\expandafter\kern\eqparts@tabrowsep}}%
+\define@key{exEnum}{labelwidthTo}[\normalsize\normalfont\bfseries00.\ ]%
+ {\def\exE@labelwidthTo{#1}}
+\define@key{exEnum}{labelwidth}[\@empty]{\def\exE@labelwidth{#1}}
+\let\exE@labelwidth\@empty
+\define@key{exEnum}{topsep}[3pt]{\def\exE@topsep{#1}}
+\define@key{exEnum}{parsep}[3pt]{\def\exE@parsep{#1}}
+\define@key{exEnum}{itemsep}[0pt]{\def\exE@itemsep{#1}}
+\define@key{exEnum}{labelsep}[\normalsize\normalfont\ ]%
+ {\settowidth{\@tempdima}{#1}\edef\exE@labelsep{\the\@tempdima}}
+\define@key{exEnum}{continue}[]{\let\eq@ExEnumResetCnt\@empty}
+\def\eq@ExEnumResetCnt{\setcounter{questionno}{0}}
+\setkeys{exEnum}{labelwidthTo,topsep,parsep,itemsep,labelsep}%
+\newenvironment{exEnumerate}[1][]{\everypar{}%
+ \toks@=\expandafter{#1}%
+ \edef\tempexp{\noexpand\setkeys{exEnum}{\the\toks@}}\tempexp
+ \eq@ExEnumResetCnt
+ \let\afterlabelhskip\@empty
+ \let\solnhspace\@empty
+ \aboveexskip{0pt}\belowexskip{\exE@parsep}%\belowexskip{0pt}%
+ \def\eqexheader@wrapper{\makebox[0pt][r]{%
+ \hypertarget{qex.\the@exno}{\eqexheader}\hspace{\labelsep}}}%
+ \def\exbookmarkfmt{\thequestionno.\space}
+ \def\partbookmarkfmt{(\thepartno)\space}
+ \def\setENum{\Elabel\if\exerstar*\thequestionno(\thepartno)\else
+ \thequestionno\fi}%
+ \ifExSolutionsSet\else
+ \writeToExSolns{^^J\protect\begin{exEnumerate}^^J}\fi
+ \list{}{%
+ \ifx\exE@labelwidth\@empty
+ \settowidth{\labelwidth}{\exE@labelwidthTo}\else
+ \setlength{\labelwidth}{\exE@labelwidth}\fi
+ \setlength{\topsep}{\exE@topsep}%
+ \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
+ \setlength{\parsep}{\exE@parsep}%
+ \setlength{\itemsep}{\exE@itemsep}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{0pt}%
+ \setlength{\itemindent}{0pt}%
+ \settowidth{\labelsep}{\normalfont\ }%
+ \setlength{\leftmargin}{\labelwidth}%
+ }\item\relax}{\ifExSolutionsSet\else
+ \writeToExSolns{\protect\end{exEnumerate}^^J}\fi
+\endlist}
+\newenvironment{enumex}{%
+ \renewcommand\exlabelformat{\textbf{\thequestionno.}}%
+ \renewcommand\exsllabelformat
+ {\protect\makebox[0pt][r]{\protect\textbf{\thequestionno.\ }}}%
+\begin{exercise}[questionno]}{\end{exercise}}
+\newenvironment{enumex*}{%
+ \renewcommand\exlabelformatwp{\textbf{\thequestionno.}}%
+ \renewcommand\exsllabelformatwp
+ {\protect\makebox[0pt][r]{\protect\textbf{\thequestionno.}\ }%
+ \protect\textbf{(\thepartno)}\ }%
+\begin{exercise*}[questionno]}{\end{exercise*}}
+\def\includeexersolutions{\@ifstar
+ {\let\resetEXsolns\relax\includeexersolutionsi}
+ {\def\resetEXsolns{\global\let\include@solutions\relax}%
+ \includeexersolutionsi}%
+}
+\newcommand{\includeexersolutionsi}[1][]{%
+ \filterFor{#1}\includeexersolutionsii
+}
+\def\includeexersolutionsii{%
+ \if\exerSolns@ExtFile\eq@NO
+ \include@solutions
+ \resetEXsolns
+ \let\eqFilterArg\@empty
+ \fi
+}
+\long\def\gobbleToEndEXt#1\endeqEXt{%
+ \ifeqforpaper\expandafter\@gobbletwo\fi}
+\newcommand\filterFor[1]{\def\eqFilterArg{#1}}
+\newcommand\inclEXtFilter[2]{\def\eqargii{#2}\ifx\eqargii\eqFilterArg
+ \else\expandafter\gobbleToEndEXt\fi}
+\newcommand\useEXtFilter{\let\eqEXt\inclEXtFilter}
+\let\eqsolutionshook\@empty
+\let\eq@solutionshook\@empty
+\let\priorexsectitle\@empty
+\let\priorexslinput\@empty
+\def\exerSolnsHeadnToc{\section*{\exsectitle}%
+ \addcontentsline{toc}{section}{%
+ \@ifundefined{web@latextoc}{}{%
+ \ifx\web@latextoc\eq@YES\else
+ \protect\numberline{}\fi}\exsectitle}}
+\@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}}
+ {\let\eq@normallheader\relax}
+\@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}}
+ {\let\eq@defaultlheader\relax}
+\newif\ifExSolutionsSet \ExSolutionsSetfalse
+\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{\global\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
+ \fi
+}
+\def\include@solutions{%
+ \if\exerSolns@ExtFile\eq@NO
+ \exerSolnInput
+ \fi
+}
+\let\eqexpdfentry=0
+\let\eq@postexerciseHook\relax
+\def\eq@postexerciseHook@BM{%
+ \xdef\Hy@currentbookmarklevel{\eq@currentbookmarklevel}}
+{\count0=\value{tocdepth}
+\advance\count0by2 \xdef\eqbmkmrkdepth{\the\count0}}
+\@ifundefined{Hy@bookmarksdepth}
+ {\setcounter{tocdepth}{\eqbmkmrkdepth}}
+ {\hypersetup{bookmarksdepth=\eqbmkmrkdepth}}
+\newcommand{\exbookmarkfmt}{\exlabel\space\theeqexno.\space}
+\newcommand{\partbookmarkfmt}{(\thepartno)\space}
+\newcommand{\expdfbookmark}[1]{\relax
+ \def\expdfbookmarktitle{#1}%
+ \ifx\eq@postexerciseHook\relax
+ \let\eq@postexerciseHook\eq@postexerciseHook@BM
+ \else
+ \let\eq@postexerciseHook@save\eq@postexerciseHook
+ \def\eq@postexerciseHook@BM@plus{\eq@postexerciseHook@save
+ \eq@postexerciseHook@BM}%
+ \let\eq@postexerciseHook\eq@postexerciseHook@BM@plus
+ \fi
+ \if\exerstar*%
+ \if\eqexpdfentry0\let\eqexpdfentry=1
+ \xdef\eq@currentbookmarklevel{\Hy@currentbookmarklevel}%
+ \def\eqex@next{\subpdfbookmark{\exbookmarkfmt#1}%
+ {qex.\the@exno}}%
+ \else
+ \def\eqex@next{\belowpdfbookmark{\partbookmarkfmt#1}%
+ {qex.\the@exno.\thepartno}}%
+ \fi
+ \else
+ \xdef\eq@currentbookmarklevel{\Hy@currentbookmarklevel}%
+ \def\eqex@next{\subpdfbookmark{\exbookmarkfmt#1}%
+ {qex.\the@exno}}%
+ \fi
+ \eqex@next\ignorespaces
+}
+\ifeq@noforms\endinput\fi
+\definecolor{webgreen}{rgb}{0,.6,0}
+\newcommand{\proofingsymbolColor}[1]{\def\@proofingsymbolColor{#1}}
+\proofingsymbolColor{red}
+\let\@proofsymbolredefined=0
+\newcommand{\proofingsymbol}[1]{\let\@proofsymbolredefined=1%
+ \def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{#1}}}
+\def\@proofingsymbol{\textcolor{\@proofingsymbolColor}{\ding{52}}}
+\def\setproofingsymbol{%
+ \if\@proofsymbolredefined1\else
+ \@ifpackageloaded{pifont}{\proofingsymbol{\ding{52}}}
+ {\proofingsymbol{$\bullet$}}\fi
+}
+\AtBeginDocument{\setproofingsymbol}
+\newcommand{\prior@questionsHook}{}
+\let\qMark@Hook\@empty
+\let\aebtitleQuiz\@empty
+\newcommand{\post@questionsHook}{}
+\newcommand{\quesNumColor}[1]{\def\eq@quesNumCol{#1}}
+\quesNumColor{blue}
+\renewcommand{\theeqquestionnoi}{\arabic{eqquestionnoi}}
+\newcommand{\labeleqquestionnoi}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoi.}
+\renewcommand\theeqquestionnoii{(\alph{eqquestionnoii})}
+\newcommand{\labeleqquestionnoii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoii}
+\renewcommand\theeqquestionnoiii{(\roman{eqquestionnoiii})}
+\newcommand{\labeleqquestionnoiii}{%
+ \color{\eq@quesNumCol}\bfseries\theeqquestionnoiii}
+\define@key{props@ques}{labelwidthTo}%
+ [\normalsize\normalfont\bfseries00.]%
+ {\def\propQ@labelwidthTo{#1}}
+\define@key{props@ques}{labelwidth}[]{\def\propQ@labelwidth{#1}}
+\let\propQ@labelwidth\@empty
+\define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}}
+\define@key{props@ques}{partopsep}[\the\partopsep]%
+ {\edef\propQ@partopsep{#1}}
+\define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}}
+\define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}}
+\define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]%
+ {\def\propQ@labelsepTo{#1}}
+\define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}}
+\let\propQ@labelsep\@empty
+\define@key{props@ques}{color}[blue]{\quesNumColor{#1}}
+\setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,%
+ itemsep,labelsepTo,color}%
+\newenvironment{questions}[1][]
+{%
+ \ifnum\@eqquestiondepth>\tw@\@toodeep\else
+ \advance\@eqquestiondepth\@ne\fi
+ \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}%
+ \toks@=\expandafter\expandafter\expandafter{#1}\expandafter
+ \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}%
+ \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp
+ \list{\qMark@Hook\prior@questionsHook\gdef\eqPTs{1}%
+ \global\let\eqQT\eq@na%
+ {\@tempcnta=0 \let\@thispr@b\@empty
+ \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne
+ \ifx\@thispr@b\@empty\edef\@thispr@b{%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else
+ \edef\@thispr@b{\@thispr@b%
+ \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi
+ }\xdef\@currentQues{\@thispr@b}}%
+ \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \post@questionsHook}{\usecounter{\@quesctr}%
+ \ifx\propQ@labelsep\@empty
+ \settowidth{\labelsep}{\propQ@labelsepTo}\else
+ \setlength{\labelsep}{\propQ@labelsep}\fi
+ \ifx\propQ@labelwidth\@empty
+ \settowidth{\labelwidth}%
+ {\propQ@labelwidthTo\hspace{\labelsep}}\else
+ \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}%
+ \hspace{\labelsep}}\fi
+ \setlength{\topsep}{\propQ@topsep}%
+ \setlength{\partopsep}{\propQ@partopsep}%
+ \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi
+ \setlength{\parsep}{\propQ@parsep}%
+ \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}}
+\def\popquestions{%
+ \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}}
+\abovesqskip{\par\medskip}
+\long\def\endsqhook#1{\def\sq@afterhook{#1}}
+\endsqhook{}
+\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}%
+}{\aeb@endshortquiz}
+\newenvironment{shortquiz*}
+{%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ {\count0=\@shortquizCnt\advance\count0by1\relax
+ \xdef\@shortquizCnt{\the\count0 }}%
+ \sqForms\@shortquiz
+}{\aeb@endshortquiz}
+\def\@shortquiz{\@ifnextchar[%
+ {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}}
+\def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty
+ \protected@edef\@currentlabelname{#1}\else
+ \protected@edef\@currentlabelname{\@currentlabelname}\fi
+}
+\let\isQZ=q \let\isSQZ=s
+\def\sq@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{}
+ \S{S}\textSize{0}\Ff{\FfReadOnly}
+ \AA{\AAFormat{%
+ var \oField=new Object;\r
+ \oField.Grp={};
+ \ifx\defaultColorJSLoc\@empty\else\r
+ \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi
+ \ifx\rghtColorJSLoc\@empty\else\r
+ \oField.RightColorJSLoc=\rghtColorJSLoc;\fi
+ \ifx\wrngColorJSLoc\@empty\else\r
+ \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi
+ \ifx\rghtAnsSymbJSLoc\@empty\else\r
+ \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi
+ \ifx\wrngAnsSymbJSLoc\@empty\else\r
+ \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi
+ }}]{sqID\oField}{0bp}{0bp}}%
+}
+\def\qz@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{}
+ \S{S}\textSize{0}\Ff{\FfReadOnly}
+ \AA{\AAFormat{if(typeof aQuizzesInDoc=="undefined")\r\t
+ var aQuizzesInDoc=new Array();\r
+ if (aQuizzesInDoc.indexOf("\oField")) aQuizzesInDoc.push("\oField");
+ }}]{qzID\oField}{0bp}{0bp}}}
+\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}%
+ \edef\@currentHref{shortquiz.\@shortquizCnt}%
+ \global\let\eqQuizType\isSQZ\let\@qzsolndest\@empty
+ \if\sqstar*\relax
+ \let\@Ans\Ans@sq@f
+ \ifx\oField\@empty
+ \typeout{^^JExerquiz: Base field name required when using
+ shortquiz with '*' option}%
+ \PackageInfo{exerquiz}{Assuming link style^^J}%
+ \let\@Ans\Ans@sq@l
+ \fi
+ \else
+ \let\@Ans\Ans@sq@l
+ \fi
+ \setcounter{questionno}{0}%
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+ \let\solution\solution@sq
+ \let\endsolution\endsolution@sq
+ \let\ifstaroption\eq@ifstaroption
+ \if\eq@tq@star*%
+ \def\sqlabel{\aebtitleQuiz\@gobbletwo}%
+ \fi
+ \sq@aboveskip\sq@priorhook
+ \@ifundefined{PointsOnLeft}%
+ {\sq@setCLN{\eq@defaultShortQuizLabelName}%
+ \ifx\sqlabel\@empty\else\noindent\fi
+ \hypertarget{sqH\@currentHref}{}\sq@IDTxtField
+ \ifx\sqlabel\@empty\else\expandafter
+ \sqlabel\expandafter\sqhspace\fi
+ {\set@typeset@protect\aebtitleQuiz}}{}\ignorespaces
+}
+\newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}}
+\belowsqskip{\medskip}
+\def\aeb@endshortquiz{\setcounter{quizno}{0}%
+ \sq@afterhook
+ \global\let\aebtitleQuiz\@empty
+ \global\let\aebTitleQuiz\@empty
+ \global\let\eq@tq@star\relax
+ \global\let\sqlabel\eq@sqlabel
+ \global\let\sqslrtnlabel\eq@sqslrtnlabel
+ \global\let\sqsllabel\eq@sqsllabel
+ \par\aftershortquizskip
+}
+\def\sqLinks{\def\sqstar{}}\sqLinks
+\def\sqForms{\def\sqstar{*}}
+\let\eq@tq@star\relax
+\def\qzPriorSolutionAfterHook{\smallskip}
+\let\sqPostHeaderHook\@empty
+\let\qPostHeaderHook\@empty
+\let\eq@sqPostHeaderHook\@empty
+\let\eq@qPostHeaderHook\@empty
+\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}%
+ {* Solutions unexpected here, will *\MessageBreak
+ * assume solutionsafter option *}%
+ \eq@solutionsaftertrue
+ \fi
+ \ifeq@solutionsafter
+ \par\qzPriorSolutionAfterHook\noindent
+ \if!\sqsolafter!\else
+ \sqsolafter\sqsolafterhspace\fi\ignorespaces
+ \else
+ \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
+ \protect\eqQt{\eqFilterArg}\else
+ \ifx\prior@eqSQt\@empty\else\prior@eqSQt\fi
+ \protect\eqSQt{\eqFilterArg}\fi
+ \protect\quizSolnHeader\if\eqQuizType\isQZ\ifx\allow@peek\eq@NO
+ [{\curr@quiz}{\currQuizStartPage}]\fi\fi
+ {\@qzsolndest}{\sqsllabel}\protect\eqterminex
+ \if\eqQuizType\isQZ\expandafter\eq@qPostHeaderHook
+ \expandafter\qPostHeaderHook\else
+ \expandafter\eq@sqPostHeaderHook
+ \expandafter\sqPostHeaderHook\fi}%
+ \set@typeset@protect
+ \expandafter\verbatimwrite\fi
+}
+\let\qzSolutionsAfterHook\@empty
+\def\endsolution@sq
+{%
+ \ifeq@solutionsafter
+ \eq@fititin{\mbox{\sqslrtnlabel}}\par\qzSolutionsAfterHook
+ \aftergroup\ignorespaces
+ \else
+ \endverbatimwrite
+ \ifx\@qzsolndest\@empty\else\set@display@protect
+ \immediate\write\verbatim@out{\eqSqSolnTrailer}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \global\let\@qzsolndest\@empty
+}
+\newcommand\pnphDflt{.1\textheight}
+\newcommand{\promoteNewPageHere}[1][\pnphDflt]{%
+ \@ifnextchar\bgroup{\eq@promoteNewPageHere}
+ {\eq@promoteNewPageHere{#1}}%
+}
+\def\eq@promoteNewPageHere#1{\par
+ \bgroup\@nobreakfalse\addpenalty{-500}%
+ \setlength{\@tempdimb}{#1}%
+ \@tempdima \pagegoal \advance \@tempdima -\pagetotal
+ \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak
+ \else\newpage\penalty1\fi\fi\egroup
+}
+\newcommand{\saveDest}[1][]{%
+ \def\sd@arg{#1}\ifx\sd@arg\@empty
+ \xdef\holdDest{\@qzsolndest}\else
+ \xdef\@qzsolndest{#1}\xdef\holdDest{#1}\fi}
+\def\useDest{\def\@qzsolndest{\holdDest}}
+\let\holdDest\@empty
+\def\fpAfterSolutionsSkip{\par\medskip}
+\let\eqSqSolnTrailerHook\@empty
+\let\eqQzSolnTrailerHook\@empty
+\newcommand\eqSqSolnTrailer{%
+ \if\eqQuizType\isQZ
+ \eqQzSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqQt
+ \else
+ \eqSqSolnTrailerHook
+ \protect\ReturnTo{page.\eq@pageThisQ}%
+ {\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
+ \fi
+ \ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+ \ifmakeQzSlLocal\protect\endgroup^^J\fi
+}
+\let\eqSQt\@gobble
+\let\endeqSQt\relax
+\let\eqQt\@gobble
+\let\endeqQt\relax
+\let\prior@quizSolnHeaderHook\@empty
+\newcommand\quizSolnHeader[3][]{%
+ \prior@quizSolnHeaderHook
+ \ifeqforpaper\else\webnewpage\fi\noindent
+ \def\eq@argi{#1}%
+ \ifx\eq@argi\@empty\else\noPeek#1\fi
+ \hypertarget{#2}{#3}\relax
+ \solnspace
+}
+\def\AllowPeeking{\global\let\allow@peek\eq@YES}\AllowPeeking
+\def\NoPeeking{\global\let\allow@peek\eq@NO}
+\def\noPeekAction#1#2{%
+ /AA <</O<</S/JavaScript/JS(noPeek("#1",#2))>> >>
+}
+\newif\iftherearequizsolutions \therearequizsolutionsfalse
+\let\aeb@FLOverride\relax
+\def\includequizsolutions{\@ifstar
+ {\let\resetQZtsolns\relax\includequizsolutionsi}
+ {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}%
+ \includequizsolutionsi}%
+}
+\newcommand{\includequizsolutionsi}[1][]{%
+ \filterFor{#1}\includequizsolutionsii
+}
+\def\includequizsolutionsii{%
+ \include@quizsolutions
+ \resetQZtsolns
+ \let\eqFilterArg\@empty
+}
+\let\eqqzsolutionshook\@empty
+\let\priorsqslsectitle\@empty
+\let\priorsqslinput\@empty
+\def\quizSolnsHeadnToc{\section*{\sqslsectitle}%
+ \addcontentsline{toc}{section}{%
+ \@ifundefined{web@latextoc}{}{%
+ \ifx\web@latextoc\eq@YES\else
+ \protect\numberline{}\fi}\sqslsectitle}}
+\newcommand{\quizSolnInput}
+{%
+ \global\let\webnewpage\relax
+ \immediate\closeout\quiz@solns
+ \ifeq@noquizsolutions\else
+ \iftherearequizsolutions\newpage\markright{}%
+ \eq@normallheader\markright{\sqslsecrunhead}%
+ \ifx\webnewpage\relax
+ \def\webnewpage{\global\let\webnewpage\newpage}\fi
+ \priorsqslsectitle\quizSolnsHeadnToc\priorsqslinput
+ \InputIfFileExists{\jobname.qsl}{}%
+ {!!! Solutions to quizzes not found}
+ \eqqzsolutionshook
+ \newpage\eq@defaultlheader
+ \fi
+ \fi
+}
+\def\include@quizsolutions{\quizSolnInput}
+\newcommand{\priorqhook}[1]{\def\q@priorhook{#1}}
+\priorqhook{}
+\newcommand{\aboveqskip}[1]{\def\q@aboveskip{#1}}
+\aboveqskip{\par\medskip}
+\newcommand{\qhspace}{\space}
+\def\endqhook#1{\def\eq@prior@endQuiz{#1}}
+\endqhook{}
+\newcommand{\belowqHooknSkip}[1]{\def\eq@belowqskip{#1}}
+\belowqHooknSkip{\medskip}
+\def\belowqskip{\belowqHooknSkip}
+\let\eq@initializeServerSubmit\@empty
+\newcommand{\quiztype}[1]{%
+ \def\@quiztype{#1}\def\aeb@FLOverride{#1}}
+\let\@quiztype\@empty
+\newcommand{\defaultquiztype}{\let\@quiztype\@empty
+ \let\aeb@FLOverride\relax}
+\let\aeb@FLOverride\relax
+\def\@setFormLinkType{%
+ \if\qstar*%
+ \ifx\aeb@FLOverride\relax%
+ \def\@@quiztype{f}%
+ \else
+ \if\aeb@FLOverride l\def\@@quiztype{l}\else
+ \def\@@quiztype{f}\fi
+ \fi
+ \else
+ \ifx\aeb@FLOverride\relax
+ \def\@@quiztype{l}%
+ \else
+ \if\aeb@FLOverride f\def\@@quiztype{f}\else
+ \def\@@quiztype{l}\fi
+ \fi
+ \fi
+}
+\def\setdefault@Ans{\@setFormLinkType
+ \expandafter\global\expandafter
+ \let\expandafter\@Ans\expandafter=\csname Ans@\@@quiztype\endcsname
+}
+\newcommand\useForms{\def\aeb@FLOverride{f}}
+\newcommand\useLinks{\def\aeb@FLOverride{l}}
+\newcommand\restoreFLTypeDefault{\global\let\aeb@FLOverride\relax}
+\let\aeb@FLOverride\relax
+\newenvironment{quiz}
+{\goodbreak\@ifstar{\gdef\qstar{*}\@quiz*f}{\gdef\qstar{x}\@quiz*l}}
+ {\aeb@endquiz}
+\def\@quizCnt{0}
+\let\ListOfQuizNames\@empty
+\def\@quiz*#1#2{%
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \let\@currentQues\@empty
+ \global\let\eqQzQuesList\@empty
+ \global\let\pointValuesArray\@empty
+ \global\let\ptypeArray\@empty
+ \global\let\corrAnsArray\@empty
+ {\count0=\@quizCnt\advance\count0by1\relax
+ \xdef\@quizCnt{\the\count0 }}%
+ \edef\@currentlabel{\@quizCnt}%
+ \edef\@currentHref{quiz.\@quizCnt}%
+ \sq@setCLN{\eq@defaultQuizLabelName}%
+ \setcounter{eqpointvalue}{0}\setcounter{questionno}{0}%
+ \eq@initializeServerSubmit
+ \global\let\eqQuizType\isQZ %\tabcolsep=0pt
+ \gdef\eqPTs{1}\global\let\eqQT\eq@na
+ \g@addto@macro\ListOfQuizNames{,#2}%
+ \gdef\quiz@total{#2}\xdef\curr@quiz{#2}\xdef\oField{#2}%
+ \xdef\currQuiz{#2}\xdef\currQuizStartPage{\thepage}%
+ \xdef\aPointType{0}%
+ \def\fieldJSStr@CMD{\fieldJSStr*[noquotes]\bqlabelISO}%
+ \expandafter\fieldJSStr@CMD\expandafter{\bqlabelISO}%
+ \ifx\@quiztype\@empty\gdef\@@quiztype{#1}\else
+ \xdef\@@quiztype{\@quiztype}\fi
+ \let\@qzsolndest\@empty
+ \let\answers\answers@q\let\endanswers\endanswers@q
+ \let\manswers\manswers@q\let\endmanswers\endanswers@q
+ \let\solution\solution@sq\let\endsolution\endsolution@sq
+ \expandafter%
+ \xdef\csname titleOf\currQuiz\endcsname{\aebTitleQuiz}%
+ \q@aboveskip\q@priorhook\noindent\hypertarget{qzH\@currentHref}{}%
+ \eq@beginQuiz\qhspace{\set@typeset@protect\aebtitleQuiz}%
+ \ignorespaces
+}
+\def\aeb@endquiz
+{%
+ \eq@prior@endQuiz\noindent\eq@endQuiz
+ \global\let\eqQuizType\relax
+ \global\let\aebtitleQuiz\@empty
+ \global\let\aebTitleQuiz\@empty
+ \global\let\bqlabel\eq@bqlabel % reset beginning label to default
+ \global\let\eqlabel\eq@eqlabel % reset ending label to default
+ \global\let\sqsllabel\eq@sqsllabel
+ \global\let\sqslrtnlabel\eq@sqslrtnlabel
+ \global\let\bqlabelISO\eq@bqlabelISO
+ \eq@belowqskip
+}
+\newenvironment{quiz*}{\goodbreak\gdef\qstar{*}\@quiz*f}{\aeb@endquiz}
+\newcommand\eq@beginQuiz{\eq@BeginQuizLink}
+\newcommand\eq@endQuiz{\eq@EndQuizLink}
+\newcommand\useBeginQuizButton[1][]
+ {\renewcommand\eq@beginQuiz{\eq@BeginQuizButton[#1]}}
+\newcommand\useEndQuizButton[1][]
+ {\renewcommand\eq@endQuiz{\eq@EndQuizButton[#1]}}
+\newcommand\useBeginQuizLink
+ {\renewcommand\eq@beginQuiz{\eq@BeginQuizLink}}
+\newcommand\useEndQuizLink
+ {\renewcommand\eq@endQuiz{\eq@EndQuizLink}}
+\newcommand\@initQuiz{%
+ var \curr@quiz=new Object();\jsR
+ lstOfQuizzes["\curr@quiz"]=\curr@quiz;\jsR
+ \curr@quiz.oAlertCheck={bAfterValue:false};\jsR
+ \curr@quiz.Grp={};
+ \ifx\defaultColorJSLoc\@empty\else\jsR
+ \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi
+ \ifx\rghtColorJSLoc\@empty\else\jsR
+ \oField.RightColorJSLoc=\rghtColorJSLoc;\fi
+ \ifx\wrngColorJSLoc\@empty\else\jsR
+ \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi
+ \ifx\partialColorJSLoc\@empty\else\jsR
+ \oField.PartialColorJSLoc=\partialColorJSLoc;\fi
+ \ifx\rghtAnsSymbJSLoc\@empty\else\jsR
+ \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi
+ \ifx\wrngAnsSymbJSLoc\@empty\else\jsR
+ \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi
+ \ifx\corrAnsSymbJSLoc\@empty\else\jsR
+ \oField.CorrAnsSymbJSLoc=\corrAnsSymbJSLoc;\fi
+ \ifx\eqGradeScaleLoc\@empty\else\jsR
+ \oField.GradeScaleLoc=new Array(\eqGradeScaleLoc);\fi
+ \ifx\eqCorrLocalChoiceFully\@empty\else\jsR % dpsf07
+ \oField.fullyCorrectLoc=\eqCorrLocalChoiceFully;\fi
+ \ifx\priorInitQuiz\@empty\else\jsR\priorInitQuiz\fi %\jsR
+ InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);
+ \ifx\eq@CGI\@empty\jsR\curr@quiz.isSubmitted=false;\else
+ \jsR\curr@quiz.isSubmitted=true;\fi
+ \jsR\curr@quiz.initializeWith=%
+'InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);'
+ \ifx\postInitQuiz\@empty\else\jsR\postInitQuiz\fi
+}
+\newcommand{\priorInitQuiz}{}
+\newcommand{\postInitQuiz}{}
+\let\eq@submitURL\@empty
+\let\eq@insertHiddenFields\@empty
+\def\eq@@BeginQuizLinkActions
+{%
+ \A{\JS{%
+ \@initQuiz
+ }}%
+}
+\def\eq@BeginQuizLinkDefaults{\Border{0 0 0}}
+\let\bqlabelFmt\@empty
+\def\eq@BeginQuizLink
+{%
+ \qz@IDTxtField
+ \set@@Link{}{}{}{\color{\@linkcolor}\bqlabelFmt\bqlabel}{}%
+ {\eq@setWidgetProps\setLink@driver}%
+ {\eq@BeginQuizLinkDefaults\eq@@BeginQuizLinkActions\every@Link}%
+ \space\ignorespaces
+}
+\newcommand\priorSubmitQuiz{}
+\newcommand\postSubmitQuiz{}
+\def\eq@@EndQuizLinkActions{\A{\JS{%
+ if (!isQuizInitialized("\curr@quiz"))\jsR\jsT
+ eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR
+ else {\jsR\jsT
+ if (\minQuizResp(\thequestionno)) {\jsR\jsT\jsT
+ \curr@quiz.PtValues=new %
+ Array(\pointValuesArray);\jsR\jsT\jsT
+ ProbType = [\ptypeArray];\jsR\jsT\jsT
+\if@inclkey
+ \curr@quiz.CorrAns=(new %
+ Array(\corrAnsArray));\jsR\jsT\jsT
+\fi
+ DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
+ \thequestionno);\jsR\jsT\jsT
+ var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT
+ h.value=Score+";"+NQuestions+";"%
+ +ptScore+";"+NPointTotal;\jsR\jsT\jsT
+ \eq@submitURL
+ \postSubmitQuiz
+ \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT
+ }\jsR
+ }}}%
+}
+\def\eq@EndQuizLinkDefaults{\Border{0 0 0}}
+\let\eqlabelFmt\@empty
+\def\eq@EndQuizLink
+{%
+ \ifx\eq@CGI\@empty
+ \let\eq@submitURL\@empty
+ \let\eq@insertHiddenFields\@empty
+ \fi
+ \set@@Link{}{}{}{\color{\@linkcolor}\eqlabelFmt\eqlabel}{}%
+ {\eq@setWidgetProps\setLink@driver}%
+ {\eq@EndQuizLinkDefaults\eq@@EndQuizLinkActions\every@Link}%
+ \makebox[0pt][r]{\textField[\BC{}\autoCenter{n}]%
+ {htxtfld.\curr@quiz}{0bp}{0bp}}%
+ \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}%
+ \global\let\eq@CGI\@empty\ignorespaces
+}
+\def\BeginQuizButtonDefaults
+{%
+ \CA{\bqlabel}\H{P}\F{\FPrint}
+ \BC{1 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}
+}
+\def\eq@@BeginQuizButtonActions
+{%
+ \A{\JS{%
+ \@initQuiz
+ }}%
+}
+\newcommand\eq@BeginQuizButton[1][]
+{%
+ \mbox{\qz@IDTxtField\push@@Button{#1}{beginQuiz.\curr@quiz}{}%
+ {\DefaultHeightOfWidget}{\eq@protect\A}%
+ {\eq@setButtonProps\eq@Button@driver}%
+ {\BeginQuizButtonDefaults\eq@@BeginQuizButtonActions
+ \every@ButtonField\every@BeginQuizButton}}%
+}
+\def\EndQuizButtonDefaults
+{%
+ \CA{\eqlabel}\F{\FPrint}\BC{1 0 0}
+ \BG{.7529 .7529 .7529}\W{1}\S{B}\H{P}
+}
+\def\eq@@EndQuizButtonActions{\A{\JS{%
+ if (!isQuizInitialized("\curr@quiz"))\jsR\jsT
+ eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR
+ else {\jsR\jsT
+ if (\minQuizResp(\thequestionno)&&_ModalNotOn){\jsR\jsT\jsT
+ \curr@quiz.PtValues=(new %
+ Array(\pointValuesArray));\jsR\jsT\jsT
+ ProbType=[\ptypeArray];\jsR\jsT\jsT
+\if@inclkey
+ \curr@quiz.CorrAns=(new %
+ Array(\corrAnsArray));\jsR\jsT\jsT
+\fi
+ DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
+ \thequestionno);\jsR\jsT\jsT
+ var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT
+ h.value=Score+";"+NQuestions+";"%
+ +ptScore+";"+NPointTotal;\jsR\jsT\jsT
+ \eq@submitURL
+ \postSubmitQuiz
+ \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT
+ }\jsR
+ }}}%
+}
+\newcommand{\eq@hiddenScoreData}{\makebox[0pt][r]{%
+ \textField[\BC{}\F{\FHidden}]{ScoreData.\curr@quiz}{0bp}{0bp}}}
+\newcommand\eq@EndQuizButton[1][]
+{%
+ \ifx\eq@CGI\@empty
+ \let\eq@submitURL\@empty
+ \let\eq@insertHiddenFields\@empty
+ \fi
+ \mbox{\push@@Button{#1}{endQuiz.\curr@quiz}{}%
+ {\DefaultHeightOfWidget}{\eq@protect\A}%
+ {\eq@setButtonProps\eq@Button@driver}%
+ {\EndQuizButtonDefaults\eq@@EndQuizButtonActions
+ \every@ButtonField\every@EndQuizButton}}%
+ \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}%
+ \global\let\eq@CGI\@empty
+}
+\newcommand\databaseName[1]{\gdef\db@Name{#1}}\def\db@Name{}
+\newcommand\tableName[1]{\gdef\db@Table{#1}}\def\db@Table{}
+\newcommand\eqCGI{\definePath{\eq@CGI}}\def\eq@CGI{}
+\newcommand\eqSubmit{\hyper@normalise\eqSubmiti}
+\def\eqSubmiti#1{\xdef\eq@CGI{"#1"}\eqSubmitii}
+\def\eqSubmitii#1#2{\databaseName{#1}\tableName{#2}}
+\providecommand{\rtnURL}{\definePath{\thisRtnURL}}
+\let\thisRtnURL\@empty
+\newcommand\addHiddenTextField[3][]{}
+\newcommand\populateHiddenField[2]{}
+\def\eqButtonDefaults
+{%
+ \CA{\eq@local@CA}\AC{}\H{P}\W{1}\S{B}
+ \BC{1 0 0}\BG{.7529 .7529 .7529}
+}
+\def\@@eqButtonActions
+{%
+ \A{\JS{if (isEndQuizPushed("\eqBaseName")){\jsR\jsT%
+ correctQuiz("\eqBaseName",\thequestionno);%
+ \ifusesumrytbls\jsR\jsT\else\jsR\fi
+ if (typeof correctSumryTbl == "function")\jsR\jsT\jsT
+ correctSumryTbl("\eqBaseName",\thequestionno);\jsR
+ }
+ }}%
+}
+\newcommand\eqButton[2][]
+{%
+ \ifnocorrections\else
+ \def\eqBaseName{#2}%
+ \mbox{\push@@Button{#1}{correct.#2}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\eqButtonDefaults\@@eqButtonActions\every@ButtonField
+ \every@eqButton}}%
+ \fi
+}
+\def\CorrButton{\eqButton}
+\def\rbMarkup@Defaults
+{%
+ \BC{}\F{\FHidden}\Ff{\FfReadOnly}\textSize{12}
+ \textColor{0 g}\symbolchoice{check}\W{}
+}
+\newcommand\rbMarkup[1][]{%
+ \ifx\grpquestions\eq@One
+ \def\Fld@name{%
+ \oField.\thequestionno.\thegrpquestionno}\else
+ \def\Fld@name{\oField.\thequestionno}\fi
+ \mbox{\check@@Box{#1\V{Yes}\DV{Yes}}%
+ {rbmarkup.\Fld@name}%
+ {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}}%
+\newcommand\minQuizResp{lowThreshold}
+\newcommand\PTs{\@ifstar{\def\eq@star{*}\@PTs}{\def\eq@star{x}\@PTs}}
+\def\@PTs#1{\gdef\eq@PTs{#1}\ifx\eq@PTs\@empty\gdef\eq@PTs{1}\fi
+ \global\let\eqPTs\eq@PTs\global\let\eq@PTs\@empty
+ \if\eq@star*\else\PTs@Hook\fi}
+\def\eq@PTs{0} % initialize this variable
+\newcommand\QT[1]
+{%
+ \gdef\eq@qT{#1}\ifx\eq@qT\@empty\global\let\eq@qT\eq@na\fi
+ \global\let\eqQT\eq@qT\global\let\eq@qT\eq@na
+}
+\def\eq@na{na} % not applicable
+\let\eq@qT\eq@na
+\newcommand\PTsHook[1]{\def\PTs@Hook{#1}}
+\let\PTs@Hook\@empty
+\let\eq@PTs\@empty
+\newcommand\eqGradeScale{%
+ "A",[90, 100],"B",[80,90],"C",[70,80],"D",[60,70],"F",[0,60]}
+\let\eqGradeScaleLoc\@empty
+\newcommand{\resetGradeScaleLoc}{\global\let\eqGradeScaleLoc\@empty}
+\def\tallywidth#1{\def\TBW{#1}}
+\def\TBW{15bp}
+\def\DefaultHeightOfWidget{11bp}
+\def\RadioFieldSize{11bp}
+\def\RBW{2in} % Response Box width (math,txt, txtpc, answer field)
+\def\SFW{1.5in} % Score Field Width
+\def\GFW{20pt} % Grade Field Width
+\def\PtFW{1.5in} % Point Field Width
+\def\PcFW{1.5in} % Percent Field Width
+\def\ScoreFieldDefaults
+{%
+ \Ff{\FfReadOnly}\BC{1 0 0}\BG{}\S{S}
+ \DV{\eqScore}\V{\eqScore}\W{1}
+}
+\newcommand\ScoreField[2][]
+{%
+ \mbox{\text@@Field{#1}{ScoreField.#2}{\SFW}%
+ {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
+ {\ScoreFieldDefaults\every@eqTextField\every@ScoreField}}%
+}
+\def\GradeFieldDefaults
+{%
+ \textColor{0 0 1 rg}\BC{1 0 0}\BG{1 1 1}\S{S}
+ \Ff{\FfReadOnly}\Q{1}\W{1}
+}
+\newcommand\GradeField[2][]
+{%
+ \mbox{\text@@Field{#1}{GradeField.#2}{\GFW}%
+ {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
+ {\GradeFieldDefaults\every@eqTextField\every@GradeField}}%
+}
+\def\AnswerFieldDefaults
+{%
+ \BC{0 0 0}\S{S}\Ff{\FfReadOnly}\W{1}%
+ \presets{\eq@resetAnsFieldOnClose}%
+}
+\let\eq@resetAnsFieldOnClose\@empty
+\newcommand{\noResetAnsFieldOnClose}{%
+ \global\let\eq@resetAnsFieldOnClose\@empty}
+\newcommand{\resetAnsFieldOnClose}{%
+ \gdef\eq@resetAnsFieldOnClose{%
+ \AApageclose{this.resetForm(["\Fld@name"]);}}}
+\newcommand\AnswerField[2][]
+{%
+ \mbox{\text@@Field{#1}{Ans.#2}{\RBW}{\DefaultHeightOfWidget}%
+ {}{\eq@setWidgetProps\eq@TextField}%
+ {\AnswerFieldDefaults\every@eqTextField\every@AnswerField}}%
+}
+\newcommand\autoAnswerField{%
+ \@ifundefined{lfooter}{\def\eq@next{\eq@autoAnswerFieldgobble}%
+ \PackageError{exerquiz}{The \string\autoAnswerField\space
+ command\MessageBreak requires the web package}{Use web package}
+ }{%
+ \PackageInfo{exerquiz}{%
+ For this auto answer field feature to run\MessageBreak
+ the webheadings pagestyle of the web package\MessageBreak
+ is required}\def\eq@next{\eq@autoAnswerField}%
+ \ifx\web@lfoot\@empty\else
+ \PackageWarning{exerquiz}{The left running footer already in
+ use\MessageBreak Will overwrite what is there now.
+ Better fix it.}\fi
+ }%
+ \eq@next
+}
+\newcommand\eq@autoAnswerFieldgobble[1][]{\relax}
+\newcommand\autoAnsFldRaiseBox[1]{\def\ef@aAFRB{#1}}
+\autoAnsFldRaiseBox{0pt}
+\let\autoAFOpts\@empty
+\newcommand\eq@autoAnswerField[1][]{\gdef\autoAFOpts{#1}%
+ \def\eq@insertAnswerField{\AnswerField[#1]{\currQuiz}}%
+ \eq@@autoAnswerField
+}
+\newcommand\eq@@autoAnswerField{\lfooter{\ifIsRespBox
+ \raisebox{\ef@aAFRB}{\eq@insertAnswerField}%
+ \global\IsRespBoxfalse\fi}%
+}
+\newcommand\manualAnswerField[1][\autoAFOpts]{%
+ \expandafter\AnswerField\expandafter[#1]{\currQuiz}}
+\def\PointsFieldDefaults
+{%
+ \rawPDF{}\BC{1 0 0}\BG{}\W{1}\S{S}\Ff{\FfReadOnly}
+ }
+\newcommand\PointsField[2][]
+{%
+ \mbox{\text@@Field{#1}{PointsField.#2}{\PtFW}%
+ {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
+ {\PointsFieldDefaults\every@eqTextField\every@PointsField}}%
+}
+\def\PercentFieldDefaults
+{%
+ \rawPDF{}\BC{1 0 0}\BG{}\W{1}\S{S}\Ff{\FfReadOnly}%
+}
+\newcommand\PercentField[2][]
+{%
+ \mbox{\text@@Field{#1}{PercentField.#2}{\PcFW}%
+ {\DefaultHeightOfWidget}{}{\eq@setWidgetProps\eq@TextField}%
+ {\PercentFieldDefaults\every@eqTextField\every@PercentField}}%
+}
+\newcommand\RestoreScoreField
+{%
+ \global\let\eqScore\eq@Score
+ \global\let\eqOutOf\eq@OutOf
+}
+\def\DeclareQuiz#1{\edef\oField{#1}%
+ \edef\thisQuiz{#1}\edef\curr@quiz{#1}%
+ \edef\currQuiz{#1}\edef\curr@quiz{#1}%
+}
+\let\Quiz\DeclareQuiz
+\def\aeb@noindgobble{\noindent\@gobbletwo}
+\let\startQuizHere\relax
+\let\endQuizHere\relax
+\let\dockQuiz\relax
+\newcommand\floatQuiz{%
+ \global\let\eq@beginQuiz@saved\eq@beginQuiz
+ \global\let\eq@endQuiz@saved\eq@endQuiz
+ \global\let\startQuizHere\eq@beginQuiz
+ \global\let\endQuizHere\eq@endQuiz
+ \global\let\eq@beginQuiz\aeb@noindgobble
+ \global\let\eq@endQuiz\@empty
+ \global\let\dockQuiz\eq@dockQuiz
+}
+\newcommand\eq@dockQuiz{%
+ \global\let\eq@beginQuiz\eq@beginQuiz@saved
+ \global\let\eq@endQuiz\eq@endQuiz@saved
+ \global\let\startQuizHere\relax
+ \global\let\endQuizHere\relax
+ \global\let\eq@beginQuiz@saved\relax
+ \global\let\eq@endQuiz@saved
+ \global\let\dockQuiz\relax
+}
+\def\fancyQuizHeaders{%
+ \global\let\eq@sqsllabel@fancy@save\eq@sqsllabel
+ \gdef\eq@sqsllabel{\eq@fancyQuizHeaders}}
+\def\eq@fancyQuizHeaders{%
+ \if\eqQuizType\isQZ\expandafter\eq@fancyQuizHeadersfmt\else
+ \expandafter\eq@fancyShrtQuizHeadersfmt\fi
+}
+\let\eq@sqsllabel@fancy@save\@empty
+\def\restoreDefaultQuizHeaders{%
+ \global\let\eq@sqsllabel\eq@sqsllabel@fancy@save}
+\newcommand\fncyQHdrsColor{blue}
+\newcommand\FncyHdrsFmtNoTitleQuiz{Solution to Quiz:}
+\newcommand\FncyHdrsFmtQuestion{Question}
+\newcommand\dfltFncyQHdrsFmt{%
+ \protect\bfseries\protect\color{\fncyQHdrsColor}%
+ \ifx\aebTitleQuiz\@empty
+ \ifnum\@eqquestiondepth>0\relax\FncyHdrsFmtNoTitleQuiz\fi
+ \else\aebTitleQuiz:\ifnum\@eqquestiondepth=0\else\protect\ %
+ \FncyHdrsFmtQuestion\fi\fi\ifcase\@eqquestiondepth
+ \ifx\aebTitleQuiz\@empty\FncyHdrsFmtNoTitleQuiz\fi
+ \or\space\arabic{eqquestionnoi}.%
+ \or\space\arabic{eqquestionnoi}(\alph{eqquestionnoii})%
+ \or\space\arabic{eqquestionnoi}(\alph{eqquestionnoii})%
+ (\roman{eqquestionnoiii})\fi
+}
+\newcommand\dclrFncyQzHdrsFmt[1]{%
+ \def\eq@fancyQuizHeadersfmt{{#1}}%
+}
+\dclrFncyQzHdrsFmt{\dfltFncyQHdrsFmt}
+\newcommand\dclrFncySqHdrsFmt[1]{%
+ \def\eq@fancyShrtQuizHeadersfmt{{#1}}%
+}
+\dclrFncySqHdrsFmt{\dfltFncyQHdrsFmt}
+\let\tqhspace\space
+\newcommand\titleQuiz[1][]{#1\@titleQuizi}
+\def\@titleQuizi{\makeatletter
+ \@ifstar{\def\eq@tq@star{*}\eq@titleQuiz}%
+{\def\eq@tq@star{x}\eq@titleQuiz}}
+\def\eq@titleQuiz#1{%
+ \gdef\aebTitleQuiz{#1}\def\@currentlabelname{#1}%
+ \gdef\aeb@@titleQuiz{#1}%
+ \gdef\aebtitleQuiz{\mbox{\titleQuizfmt{#1}}\tqhspace}%
+\makeatother}
+\let\aebtitleQuiz\@empty
+\let\aebTitleQuiz\@empty
+\newcommand\titleQuizfmt{\bfseries}
+\def\ifQuizType#1#2{\if\eqQuizType\isQZ\def\qt@next{#1}%
+ \else\def\qt@next{#2}\fi\qt@next}
+\def\eq@ifstaroption#1#2{\if\eq@tq@star*\def\sq@next{#1}%
+ \else\def\sq@next{#2}\fi\sq@next}
+\let\eq@tq@star\relax
+\def\ifstaroption{\PackageWarning{exerquiz}
+ {\protect\ifstaroption\space is only defined within the\MessageBreak
+ shortquiz environment. Gobbling up its two\MessageBreak
+ arguments, sorry. This occurred}%
+ \@gobbletwo
+}
+\newcounter{qMarkCnt}
+\def\multipartquestion{\global\let\aeb@multipart\eq@One}
+\providecommand{\ptsLabel}[1]{\def\eqptsLabel{#1}}\ptsLabel{pts}
+\providecommand{\ptLabel}[1]{\def\eqptLabel{#1}}\ptLabel{pt}
+\let\aeb@multipart\eq@Zero
+\newcommand\pcMarkupColor{red}
+\def\markupWidth{12bp}\def\markupHeight{8bp}\def\markupTextSize{0}
+\newcommand{\aeb@creditmarkup}{%
+ \textField[\Ff\FfReadOnly\BC{}\F\FHidden
+ \textColor{\pcMarkupColor}\textSize{\markupTextSize}\autoCenter{n}%
+ \DV{0 \eqptsLabel}\V{0 \eqptsLabel}]%
+ {qMark.\currQuiz.\thequestionno.\arabic{qMarkCnt}}%
+ {\markupWidth}{\markupHeight}%
+}
+\def\showCreditMarkup{%
+ \def\qMark{\if\aeb@multipart\eq@Zero\aeb@creditmarkup
+ \stepcounter{qMarkCnt}\else\global\let\aeb@multipart\eq@Zero\fi}%
+ \def\qMark@Hook{\aeb@creditmarkupfmt}%
+}
+\def\hideCreditMarkup{\global\let\qMark@Hook\@empty}
+\newcommand{\aeb@creditmarkupfmt}{\makebox[0pt][r]{\qMark\hspace{-2bp}}}
+\long\def\gobbleToEndQt#1\endeqQt{\ifeqforpaper\expandafter\@gobble\fi}
+\long\def\gobbleToEndSQt#1\endeqSQt{%
+ \ifeqforpaper\expandafter\@gobble\fi}
+\newcommand\inclQtFilter[1]{\def\eqarg{#1}\ifx\eqarg\eqFilterArg
+ \else\expandafter\gobbleToEndQt\fi}
+\newcommand{\exclQt}[1]{\gobbleToEndQt}
+\newcommand{\useQtFilter}{%
+ \let\eqQt\inclQtFilter\let\eqSQt\exclSQt
+}
+\newcommand\inclSQtFilter[1]{\def\eqarg{#1}\ifx\eqarg\eqFilterArg
+ \else\expandafter\gobbleToEndSQt\fi}
+\newcommand{\exclSQt}[1]{\gobbleToEndSQt}
+\newcommand{\useSQtFilter}{\let\eqSQt\inclSQtFilter\let\eqQt\exclQt}
+\newcommand{\sqbookmarkfmt}{Short Quiz \@shortquizCnt.\space}
+\newcommand{\qzbookmarkfmt}{Quiz \@quizCnt.\space}
+\newcommand{\quizpdfbookmark}[1]{\relax\def\argi{#1}%
+ \if\eqQuizType\isSQZ\edef\aeb@bmmrkdest{sqbm.\@shortquizCnt}%
+ \def\aeb@thisbkmrkfmt{\sqbookmarkfmt}\else
+ \edef\aeb@bmmrkdest{qzbm.\@quizCnt}%
+ \def\aeb@thisbkmrkfmt{\qzbookmarkfmt}\fi
+ \def\quizpdfbookmarktitle{#1}%
+ \def\eqex@next{\belowpdfbookmark{\aeb@thisbkmrkfmt#1}%
+ {\aeb@bmmrkdest}}%
+ \ifx\aebTitleQuiz\@empty\else\ifx\argi\@empty
+ \def\quizpdfbookmarktitle{\aebTitleQuiz}%
+ \def\eqex@next{\belowpdfbookmark{\aebTitleQuiz}%
+ {\aeb@bmmrkdest}}\fi\fi
+ \eqex@next\ignorespaces
+}
+\def\pushEnvir{\xdef\eq@currenvir{\@currenvir}\endgroup}
+\def\popEnvir{\begingroup\@endpefalse
+ \edef\@currenvir{\eq@currenvir}%
+ \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[]}}}
+\def\manswers@sq{\parindent0pt
+ \@ifundefined{ifuserectforms}{}
+ {\if\aeb@FLOverride\eq@f\ifuserectforms
+ \useRectForMC\else\useCircForMC\fi\fi}%
+ \ifx\solutionparshape\@empty\else
+ \pushEnvir\par\noindent\expandafter\popEnvir\fi
+ \stepcounter{questionno}%
+ \if\sqstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \let\@Ans\Ans@ck@sq@l\else
+ \let\@Ans\Ans@ck@sq@f\fi
+ \else
+ \if\aeb@FLOverride\eq@f
+ \let\@Ans\Ans@ck@sq@f\else
+ \let\@Ans\Ans@ck@sq@l\fi
+ \fi
+ \def\aeb@answerType{c}\@ifnextchar[{\answers@@sq}%
+ {\@ifstar{\answers@@sq[\curr@quiz.\thequestionno]}{\answers@@sq[]}}}
+\let\sq@hwdest\@empty % hard-wired destination
+\def\answers@@sq[#1]#2{%
+ \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}}
+\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}{}
+\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
+ \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}%
+% \settowidth{\labelsep}{\eq@hspanner}%
+ \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
+}
+\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
+ \ifx\itsExerParts\eq@YES\par\removelastskip
+ \removelastparskip\vskip\aboveanswersSkip\fi
+ \else\par\removelastskip\removelastparskip
+ \vskip\aboveanswersSkip\fi
+ \noindent\ifnum\exerwparts@cols>1\relax\parshape=0\fi
+ \tabcolsep=0pt
+ \eq@tmpdima=\linewidth
+ \@tempcnta#1\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta by2
+ \@tempdima\sq@tabsep\relax
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \divide\eq@tmpdima by#1
+ \def\Ans{\Ans@tabular}%
+ \tabcolsep\sq@tabsep\relax
+ \expandafter\tabular\sq@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}}%
+\let\eq@save@doendpe\@doendpe
+\def\reset@doendpe#1{\global\eq@scratchtoks=\expandafter{#1}%
+ \gdef\@doendpe{\par\@endpetrue\global\let\@doendpe\eq@save@doendpe
+ \def\par{\@restorepar
+ \expandafter\everypar
+ \expandafter{\the\eq@scratchtoks}\par\@endpefalse}%
+ \everypar{{\setbox\z@\lastbox}%
+ \everypar{}\@endpefalse}\the\eq@scratchtoks
+ }%
+}
+\newcommand\answersEndHook[1]{\def\eq@answersEndHook{#1}}
+\let\eq@answersEndHook\@empty
+\def\endanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\endmanswers@sq{\endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook\reset@doendpe{\the\everypar}%
+ \ifinner\else%\par
+ \removelastskip
+ \vspace{\aboveanswersSkip}\@endpetrue\fi
+}
+\def\popiiictm{\special{CTM: pop pop pop}}
+\def\sqWrongRespJS{OnBlurRespBox( false, "\oField" );}
+\def\sqRightRespJS{OnBlurRespBox( true, "\oField" );}
+\def\Ans@sq@l@Actions
+{%
+ \A{\if\Ans@choice1
+ \JS{\sqRightRespJS}
+ \ifx\@qzsolndest\@empty\else
+ \ifeq@solutionsafter\else
+ /Next <</S/GoTo/D(\@qzsolndest)>>
+ \fi
+ \fi
+ \else
+ \JS{\sqWrongRespJS\jsR
+ \ifx\oField\@empty\else
+ updateTally("\oField.\thequestionno");
+ \fi}%
+ \fi
+ }%
+}
+\def\linkContentFormat{\alph{quizno}}
+\def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters
+ \Alph{quizno}\noexpand\else\linkContentFormat\noexpand\fi}
+\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
+ \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
+ \set@@Link{}{}{}%
+ {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}
+ {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
+ {\set@LinkTextDefaults\Ans@sq@l@Actions\every@Link}%
+ \Ans@proofing{\eq@tmpdima}%
+\eq@hspanner\ignorespaces}
+\def\Ans@ck@sq@l{\Ans@ck@sq@f}
+\def\@@Ans@sq@f@Defaults
+{%
+ \BC{0 0 0}\Ff{\FfNoToggleToOff}\W{1}
+ \F{\FPrint}\textSize{12}\textColor{0 g}
+}
+\def\sqTurnOffAlerts{\let\@sqTurnOffAlerts\eq@Zero}
+\def\sqTurnOnAlerts{\let\@sqTurnOffAlerts\eq@One}
+\sqTurnOnAlerts
+\def\sqNoCorrections{\let\@sqAlertsOnly\eq@One}
+\def\sqCorrections{\let\@sqAlertsOnly\eq@Zero}
+\sqNoCorrections
+\def\Ans@sq@f@ActionsTrue{%
+ \if\@sqTurnOffAlerts1OnBlurRespBox(true,"\oField");\jsR\fi
+ \ifx\@qzsolndest\@empty\else\ifeq@solutionsafter\else
+ jmpToNamedDest("\oField","\@qzsolndest",%
+ \if\@sqTurnOffAlerts00\else1\fi);\fi
+ \fi\eqAddAAMouseUpMC}
+\def\Ans@sq@f@ActionsFalse{%
+ \if\@sqTurnOffAlerts1OnBlurRespBox(false,"\oField" );\jsR\fi
+ \ifx\oField\@empty\else
+ updateTally("\oField.\thequestionno");
+ \fi\jsR\eqAddAAMouseUpMC}
+\def\Ans@sq@f@Actions{\A{\if\Ans@choice\eq@One
+ \JS{\Ans@sq@f@ActionsTrue}\else
+ \JS{\Ans@sq@f@ActionsFalse}\fi}%
+ \AAmousedown{updateTally.downState=!!event.target.isBoxChecked%
+ (\arabic{quizno}-1);}}
+\def\Ans@proofing#1{\ifeq@proofing\if\Ans@choice1\relax
+ \llap{\@proofingsymbol\,\hskip#1\relax}%
+ \fi\fi}
+\def\sqRghtSymbChoice#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \edef\sq@corrsymch{\sqRghtSymbChoiceDef}\else
+ \edef\sq@corrsymch{#1}\fi}
+\def\sqRghtSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \edef\sq@corrsymcol{\sqRghtSymbColorDef}\else
+ \edef\sq@corrsymcol{#1}\fi}
+\def\sqWrngSymbChoice#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \edef\sq@wrgsymch{\sqWrngSymbChoiceDef}\else
+ \edef\sq@wrgsymch{#1}\fi}
+\def\sqWrngSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \edef\sq@wrgsymcol{\sqWrngSymbColorDef}\else
+ \edef\sq@wrgsymcol{#1}\fi}
+\def\sqRghtSymbChoiceDef{check}
+\def\sqRghtSymbColorDef{0 .6 0 rg}
+\def\sqWrngSymbChoiceDef{cross}
+\def\sqWrngSymbColorDef{1 0 0 rg}
+\edef\sq@corrsymch{\sqRghtSymbChoiceDef}
+\edef\sq@corrsymcol{\sqRghtSymbColorDef}
+\edef\sq@wrgsymch{\sqWrngSymbChoiceDef}
+\edef\sq@wrgsymcol{\sqWrngSymbColorDef}
+\def\sqResetSymbToDef{%
+ \sqRghtSymbChoice{}\sqRghtSymbColor{}%
+ \sqWrngSymbChoice{}\sqWrngSymbColor{}%
+}
+\def\qChoiceSymb#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \edef\qz@chksymb{\qChoiceSymbDef}\else
+ \edef\qz@chksymb{#1}\fi}
+\def\qChoiceColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \edef\qz@chksymbcol{\qChoiceColorDef}\else
+ \edef\qz@chksymbcol{#1}\fi}
+\def\qChoiceSymbDef{check}
+\def\qChoiceColorDef{0 0 0 rg}
+\edef\qz@chksymb{\qChoiceSymbDef}
+\edef\qz@chksymbcol{\qChoiceColorDef}
+\let\rbf@Opts\@empty
+\def\Ans@sq@f{%
+ \if\eq@listType\eq@One\stepcounter{quizno}\else
+ \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
+ {\ifwithsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi\PBS\raggedright
+ \if\Ans@choice\eq@One
+ \def\rbf@Opts{\symbolchoice{\sq@corrsymch}%
+ \textColor{\sq@corrsymcol}}\else
+ \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}%
+ \textColor{\sq@wrgsymcol}}\fi
+ \settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \insertGrayLetters % 6.3d
+ \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
+ {mc.\oField.\thequestionno}%
+ {\RadioFieldSize}% 11/16/05 changed from \oField to mc.\oField
+ {\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}}%
+ \Ans@proofing{\RadioFieldSize}%
+\eq@hspanner\ignorespaces}
+\def\@@Ans@ck@sq@f@Defaults
+{%
+ \BC{0 0 0}\Ff{\FfNoToggleToOff}
+ \F{\FPrint}\textSize{12}\textColor{0 g}\W{1}
+}
+\begingroup
+\catcode`\&=12
+\gdef\eq@AND{&&}
+\endgroup
+\def\Ans@ck@sq@f@ActionsTrue{%
+ var fName=event.target.name;\jsR
+ var g=this.getField("mc.\oField.\thequestionno");\jsR
+ var a=g.getArray();\jsR
+ for (var i=0; i<a.length; i++)\jsR\jsT
+ if ( a[i].isBoxChecked(0) \eq@AND\space
+ a[i].value.charAt(0)==0)\jsR\jsT\jsT
+ a[i].checkThisBox(0,false);\jsR
+ \if\@sqTurnOffAlerts1OnBlurRespBox(%
+ true,"\oField");\jsR\fi
+ \ifx\@qzsolndest\@empty\else
+ \ifeq@solutionsafter\else
+ % if all correct answers are check, jump to solution
+ for (var i=0; i<a.length; i++){\jsR\jsT
+ if ( a[i].exportValues[0].charAt(0)==1 \eq@AND\space
+ !a[i].isBoxChecked(0))\jsR\jsT\jsT
+ break;\jsR
+ }\jsR
+ if (i>=a.length) jmpToNamedDest("\oField","\@qzsolndest",%
+ \if\@sqTurnOffAlerts00\else1\fi);
+ \fi
+ \fi\eqAddAAMouseUpMS}
+\def\Ans@ck@sq@f@ActionsFalse{%
+ var fName=event.target.name;\jsR
+ var g=this.getField("mc.\oField.\thequestionno");\jsR
+ var a=g.getArray();\jsR
+ for (var i=0; i<a.length; i++)\jsR
+ {\jsR\jsT
+ if (a[i].value.charAt(0)==0) {\jsR\jsT\jsT
+ if ( fName != a[i].name )\jsR\jsT\jsT\jsT
+ a[i].checkThisBox(0,false);\jsR\jsT
+ }\jsR
+ }\jsR
+ \if\@sqTurnOffAlerts1OnBlurRespBox( false, "\oField" );\fi
+ \ifx\oField\@empty\else
+ updateTally("\oField.\thequestionno");
+ \fi\eqAddAAMouseUpMS}
+\def\Ans@ck@sq@f@Actions{%
+ \A{\if\Ans@choice\eq@One
+ \JS{\Ans@ck@sq@f@ActionsTrue}\else
+ \JS{\Ans@ck@sq@f@ActionsFalse}\fi}%
+ \AAmousedown{updateTally.downState=!!event.target.isBoxChecked(0);}}
+\def\Ans@ck@sq@f{%
+ \if\eq@listType\eq@One\stepcounter{quizno}\else
+ \@ifundefined{ifwithsoldoc}{\refstepcounter{quizno}}
+ {\ifwithsoldoc\stepcounter{quizno}\else
+ \refstepcounter{quizno}\fi}\fi\PBS\raggedright
+ \if\Ans@choice1%
+ \def\rbf@Opts{\symbolchoice{\sq@corrsymch}%
+ \textColor{\sq@corrsymcol}}\else
+ \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}%
+ \textColor{\sq@wrgsymcol}}\fi
+ \settowidth{\eq@tmplength}{\eq@lw@f}%
+ \eq@tmpdima=\wd\eq@tmpbox%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \insertGrayLetters % 6.3d
+ \mbox{\expandafter\check@@Box\expandafter{\rbf@Opts}%
+ {mc.\oField.\thequestionno.\arabic{quizno}}%
+ {\RadioFieldSize}{\RadioFieldSize}
+ {\Ans@choice\alph{quizno}}{\eq@protect\A}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\@@Ans@ck@sq@f@Defaults\Ans@ck@sq@f@Actions\every@CheckBox
+ \every@sqCheckBox}}%
+ \Ans@proofing{\RadioFieldSize}%
+\eq@hspanner\ignorespaces}
+\newskip\aboveanswersSkip
+\setlength\aboveanswersSkip{3pt}
+\let\q@hwdest\@empty % hard-wired destination
+\let\pointValuesArray\@empty
+\newif\ifeqshowmarkup\eqshowmarkupfalse
+\newif\ifeqshowOutOf \eqshowOutOffalse
+\def\showOutOfinSmryTbl{false}
+\def\eq@recordThesePTs{%
+ \ifx\pointValuesArray\@empty
+ \edef\ptsValue{\showOutOfinSmryTbl,\eqPTs}\else
+ \edef\ptsValue{,\eqPTs}\fi
+ \expandafter\g@addto@macro\expandafter\pointValuesArray
+ \expandafter{\ptsValue}}
+\let\ptypeArray\@empty
+\def\eq@recordProbType{%
+ \ifx\ptypeArray\@empty
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\ptypeArray{null,"\eqQT"}}\else
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\ptypeArray{,"\eqQT"}}\fi
+ \tmp@exp
+}
+\let\corrAnsArray\@empty
+\def\eq@recordCorrAns#1{%
+ \ifx\corrAnsArray\@empty
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\corrAnsArray{null,#1}}\else
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\corrAnsArray{,#1}}\fi
+ \tmp@exp
+}
+\def\aeb@answerType@r{r}
+\def\aeb@answerType@c{c}
+\newcommand\answers@q{%
+ \eq@AddProbToQzQuesList
+ \def\aeb@answerType{r}\setdefault@Ans\eq@recordThesePTs
+ \eq@recordProbType
+ \addtocounter{eqpointvalue}{\eqPTs}\stepcounter{questionno}%
+ \def\aeb@thisType{"mc"}\@ifnextchar[{\answers@@q}%
+ {\@ifstar{\answers@@q[\curr@quiz.\thequestionno]}{\answers@@q[]}}%
+}
+\def\answers@@q[#1]#2{\global\let\eq@ansChoiceArray\@empty
+ \xdef\aeb@numCols{#2}\edef\eqtmp{\aPointType}%
+ \xdef\aPointType{\eqtmp,[\eqPTs,\aeb@thisType]}%
+ \ifx\q@hwdest\@empty
+ \xdef\@qzsolndest{#1}\else
+ \gdef\@qzsolndest{\q@hwdest}\fi
+ \ifnum\aeb@numCols=1
+ \gdef\eq@listType{1}\expandafter\answers@q@list\else
+ \gdef\eq@listType{0}\expandafter\answers@q@tabular\fi{\aeb@numCols}%
+}
+\newcommand\manswers@q
+{%
+ \eq@AddProbToQzQuesList
+ \def\aeb@answerType{c}\@setFormLinkType
+ \global\expandafter\let\expandafter\@Ans
+ \expandafter=\csname Ans@ck@\@@quiztype\endcsname
+ \eq@recordThesePTs\eq@recordProbType
+ \addtocounter{eqpointvalue}{\eqPTs}\stepcounter{questionno}%
+ \def\aeb@thisType{"ms"}\@ifnextchar[{\answers@@q}%
+ {\@ifstar{\answers@@q[\curr@quiz.\thequestionno]}{\answers@@q[]}}%
+}
+\newenvironment{answers@q@list}[1]{%
+ \ifx\aeb@answerType\eq@r
+ \let\endanswers\endanswers@q@list\else
+ \let\endmanswers\endanswers@q@list\fi
+ \list{\strut\@Ans}{%
+ \if\qstar*\relax
+ \if\aeb@FLOverride\eq@l
+ \settowidth{\labelwidth}{\eq@lw@l}\else
+ \settowidth{\labelwidth}{\eq@lw@f}\fi
+ \else
+ \if\aeb@FLOverride\eq@f
+ \settowidth{\labelwidth}{\eq@lw@f}\else
+ \settowidth{\labelwidth}{\eq@lw@l}\fi
+ \fi
+ \setlength{\topsep}{-\parskip+\aboveanswersSkip}%
+ \setlength{\parsep}{0pt}\setlength{\itemindent}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{0pt}%
+ \def\Ans{\Ans@list}%
+ }%
+}{\endlist\setcounter{quizno}{0}%
+ \eq@answersEndHook
+ \setdefault@Ans
+ \ifx\aeb@answerType\aeb@answerType@r
+ \eq@recordCorrAns{\eq@ansChoiceArray}\ifwithinMCFI
+ \eq@recordCorrAns{\s@veCorrAnsMCFI}\fi\else
+ \eq@recordCorrAns{[\eq@ansChoiceArray]}\fi
+ \global\let\eqlimselTo\@empty
+}
+\newcommand\qztabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
+ \def\qz@tabsep{1.5pt}\else\def\qz@tabsep{#1}\fi}
+\qztabsep{1.5pt}
+\def\qzTabPos#1{\def\qz@TabPos{[#1]}}\qzTabPos{}
+\def\answers@q@tabular#1{%
+ \ifinner\else\par\removelastparskip\vspace{\aboveanswersSkip}\fi
+ \eq@tmpdima=\linewidth
+ \@tempcnta#1\relax
+ \advance\@tempcnta-1\relax
+ \multiply\@tempcnta by2
+ \@tempdima\qz@tabsep\relax
+ \multiply\@tempdima\@tempcnta
+ \advance\eq@tmpdima-\@tempdima
+ \divide\eq@tmpdima by#1
+ \tabcolsep\qz@tabsep\relax
+ \def\Ans{\Ans@tabular}%
+ \ifx\aeb@answerType\eq@r
+ \let\endanswers\endanswers@q@tabular\else
+ \let\endmanswers\endanswers@q@tabular\fi
+ \noindent\expandafter
+ \tabular\qz@TabPos{@{}*{#1}{p{\eq@tmpdima}}@{}}%
+}
+\def\endanswers@q@tabular
+{%
+ \endtabular\setcounter{quizno}{0}%
+ \eq@answersEndHook
+ \setdefault@Ans
+ \ifx\aeb@answerType\aeb@answerType@r
+ \eq@recordCorrAns{\eq@ansChoiceArray}\ifwithinMCFI
+ \eq@recordCorrAns{\s@veCorrAnsMCFI}\fi\else
+ \eq@recordCorrAns{[\eq@ansChoiceArray]}\fi
+ \global\let\eqlimselTo\@empty
+}
+\let\qRadionActionsHook\@empty
+\def\Ans@@l@Actions{\A{\JS{%
+ this.getField("mc.\curr@quiz.\thequestionno").value
+ = "\Ans@choice\alph{quizno}";\jsR
+ RecordPointValue([0,\eqPTs,\eq@pPTs],\thequestionno);\jsR
+ RecordProblemType("\eqQT",\thequestionno);\jsR
+ ProcessQuestion(\Ans@choice,"\alph{quizno}",\thequestionno,%
+\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
+"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+\ifeq@noquizsolutions\else,1\fi\fi\fi);\qRadionActionsHook}}%
+}
+\def\Ans@r@l@Defaults
+{%
+ \BC{}\S{S}\W{1}\Ff{\FfNoToggleToOff}\F{\FPrint}
+ \textSize{12}\textColor{0 g}\Ff{\FfReadOnly}
+}
+\def\Ans@l{\leavevmode\if\eq@listType1\stepcounter{quizno}%
+ \else\refstepcounter{quizno}\fi\PBS\raggedright
+ \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{(\hfil\linkContentFormat\hfil)}%
+ \def\late@options{\BC{}}%
+\if\Ans@choice1\relax\eq@recordAnsChoice\fi
+ \makebox[0pt][l]{\radio@@Button{}{mc.\curr@quiz.\thequestionno}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@r@l@Defaults\every@RadioButton
+ \every@qRadioButton\late@options}}%
+ \set@@Link{}{}{}%
+ {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}%
+ {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
+ {\set@LinkTextDefaults\Ans@@l@Actions\every@Link}%
+ \ifnocorrections\else
+ \if\Ans@choice1\relax
+ \edef\Ans@c@l@Choice{\noexpand\DV{Yes}%
+ \ifx\@qzsolndest\@empty
+ \noexpand\Ff{\FfReadOnly}%
+ \else % there is a solution
+ \ifeq@noquizsolutions
+ \noexpand\Ff{\FfReadOnly}%
+ \else
+ \noexpand\A{\noexpand\quiz@SolutionActionHook}%
+ \fi
+ \fi
+ }%
+ \else
+ \def\Ans@c@l@Choice{\Ff{\FfReadOnly}\BC{}}%
+ \fi
+ \def\late@options{\BC{}}%
+ \if\Ans@choice1\relax
+ \ifx\@qzsolndest\@empty\else
+ \ifeq@noquizsolutions\else
+ \edef\late@options{\noexpand\BC{\solution@Color}}%
+ \fi
+ \fi
+ \fi
+ \makebox[0pt][r]{\check@@Box{}%
+ {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\eq@tmpdima}{0pt}{Yes}{}% \@tempdimb
+ {\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@c@f@Defaults\Ans@c@l@Choice\every@RadioButton
+ \every@qRadioButton\late@options}}%
+ \fi
+ \Ans@proofing{\eq@tmpdima}%
+\eq@hspanner\ignorespaces}
+\def\Ans@ck@@l@Actions{\A{\JS{%
+ var ckfName="mck.\curr@quiz.\thequestionno.\arabic{quizno}";\jsR
+ var ckf = this.getField(ckfName);\jsR
+ ckf.checkThisBox(0,!ckf.isBoxChecked(0));\jsR
+ var _bOK=true;\jsR
+\ifx\eqlimselTo\@empty\else _bOK = LimitSelection(\eqlimselTo,%
+"mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi
+if (_bOK) {\jsR\jsT
+ var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",%
+\thequestionno,\arabic{quizno},"\curr@quiz",\eqPTs,\eq@pPTs);\jsR\jsT
+ RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
+ ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,%
+\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
+"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+\ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR
+}
+ }}
+}
+\def\Ans@ck@l@Defaults
+{%
+ \BC{}\S{S}\W{1}\H{N}\Ff{\FfNoToggleToOff}
+ \textSize{12}\textColor{0 g}\Ff{\FfReadOnly}
+}
+\def\Ans@ck@l{%
+ \leavevmode\if\eq@listType1\stepcounter{quizno}%
+ \else\refstepcounter{quizno}\fi
+ \if\Ans@choice1\eq@recordAnsChoice\fi\PBS\raggedright
+ \settowidth{\eq@tmplength}{\eq@lw@l}\sbox{\eq@tmpbox}{\eq@l@l}%
+ \hangindent=\eq@tmplength\hangafter=1\relax
+ \eq@tmpdima=\wd\eq@tmpbox
+ \def\link@@Content{(\hfil\linkContentFormat\hfil)}%
+ \makebox[0pt][l]{%
+ \check@@Box{}{mck.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\eq@tmpdima}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@ck@l@Defaults\every@RadioButton
+ \every@qckCheckbox}}%
+ \set@@Link{}{}{}%
+ {\makebox[\eq@tmpdima]{\color{\@linkcolor}\link@@Content}}%
+ {\eq@protect\A}{\eq@setWidgetProps\setLink@driver}%
+ {\set@LinkTextDefaults\Ans@ck@@l@Actions\every@Link}%
+ \ifnocorrections\else
+ \if\Ans@choice1\relax
+ \edef\Ans@c@l@Choice{\noexpand\DV{Yes}%
+ \ifx\@qzsolndest\@empty\noexpand\BC{}%
+ \noexpand\Ff{\FfReadOnly}%
+ \else % there is a solution
+ \ifeq@noquizsolutions
+ \noexpand\BC{}\noexpand\Ff{\FfReadOnly}%
+ \else
+ \noexpand\BC{\solution@Color}%
+ \noexpand\A{\noexpand\quiz@SolutionActionHook}%
+ \fi
+ \fi
+ }%
+ \else
+ \def\Ans@c@l@Choice{\Ff{\FfReadOnly}\BC{}}%
+ \fi
+ \makebox[0pt][r]{\check@@Box{}%
+ {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\eq@tmpdima}{0pt}{Yes}{}%
+ {\eq@setWidgetProps\eq@l@check@driver}%
+ {\Ans@c@f@Defaults\Ans@c@l@Choice\every@RadioButton
+ \every@qRadioButton}}%
+ \fi
+ \Ans@proofing{\eq@tmpdima}%
+\eq@hspanner\ignorespaces}
+\def\Ans@f{\leavevmode\if\eq@listType1\stepcounter{quizno}%
+ \else\refstepcounter{quizno}\fi
+ \PBS\raggedright\Ans@@f}
+\def\Ans@r@f@Defaults
+{%
+ \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff}
+ \F{\FPrint}\textSize{12}\textColor{0 g}
+}
+\def\Ans@r@f@Actions{\A{\JS{%
+ RecordPointValue([0,\eqPTs,\eq@pPTs],\thequestionno);\jsR
+ RecordProblemType("\eqQT",\thequestionno);\jsR
+ ProcessQuestion(\Ans@choice,"\alph{quizno}",\thequestionno,%
+ \arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
+ "\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+ \ifeq@noquizsolutions\else,1\fi\fi\fi);\qRadionActionsHook}}
+}
+\def\quiz@SolutionActionHook{%
+ /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(%
+ ["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>>
+}
+\def\Ans@c@f@Defaults
+{%
+ \BC{0 0 0}\S{S}\W{1}\F{\FHidden}\textSize{12}
+ \textColor{0 g}\symbolchoice{circle}
+}
+\let\bottomOfAnsfStack\relax
+\providecommand\graylettersColor{gray}
+\def\insertGrayLetters{\ifaebshowgrayletters
+ \rlap{\makebox[\RadioFieldSize]%
+ {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi}
+\def\Ans@@f
+{%
+ \settowidth{\eq@tmplength}{\eq@lw@f}%
+ \hangindent=\eq@tmplength\hangafter=1
+ \bottomOfAnsfStack\insertGrayLetters
+ \edef\rbf@Opts{\ifaeb@usecircles\else
+ \noexpand\symbolchoice{\qz@chksymb}\fi
+ \noexpand\textColor{\qz@chksymbcol}}%
+ \if\Ans@choice1\eq@recordAnsChoice\fi
+ \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
+ {mc.\curr@quiz.\thequestionno}%
+ {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\Ans@r@f@Defaults\Ans@r@f@Actions\every@RadioButton
+ \every@qRadioButton\insert@circlesymbol}}%
+ \let\late@options\@empty
+ \ifnocorrections\else
+ \if\Ans@choice1\relax
+ \edef\Ans@c@f@Choice{\noexpand\DV{Yes}%
+ \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}%
+ \else
+ \ifeq@noquizsolutions
+ \noexpand\Ff{\FfReadOnly}%
+ \else
+ \noexpand\A{\noexpand\quiz@SolutionActionHook}%
+ \fi
+ \fi
+ }%
+ \else
+ \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}%
+ \fi
+ \ifaeb@usecircles\def\late@options{\BC{}}\fi
+ \if\Ans@choice1\relax
+ \ifx\@qzsolndest\@empty\else
+ \ifeq@noquizsolutions\else
+ \edef\late@options{\noexpand\BC{\solution@Color}}%
+ \fi
+ \fi
+ \fi
+ \makebox[0pt][r]{\check@@Box{}%
+ {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
+ \every@qCheckBox\late@options}}%
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+\eq@hspanner\ignorespaces}
+\def\limitSelectionTo#1{\def\eqlimselTo{#1}}
+\let\eqlimselTo\@empty
+\def\Ans@ck@f{\leavevmode\if\eq@listType1\stepcounter{quizno}%
+ \else\refstepcounter{quizno}\fi
+ \if\Ans@choice1\eq@recordAnsChoice\fi
+ \PBS\raggedright\Ans@@ck@f}
+\def\Ans@ck@f@Defaults
+{%
+ \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff}
+ \textSize{12}\textColor{0 g}
+}
+\def\Ans@ck@f@Actions
+{%
+ \A{\JS{%
+ var _bOK=true;\jsR
+\ifx\eqlimselTo\@empty\else _bOK = LimitSelection(\eqlimselTo,%
+"mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi
+if (_bOK) {\jsR\jsT
+ var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",%
+\thequestionno,\arabic{quizno},"\curr@quiz",\eqPTs,\eq@pPTs);\jsR\jsT
+ RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
+ ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,%
+\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,%
+"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+\ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR
+}}}%
+}
+\def\quiz@SolutionActionHook{%
+ /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(%
+["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>>
+}
+\def\Ans@@ck@f
+{%
+ \settowidth{\eq@tmplength}{\eq@lw@f}%
+ \hangindent=\eq@tmplength\hangafter=1
+ \bottomOfAnsfStack\insertGrayLetters
+ \bottomOfAnsfStack\insertGrayLetters
+\def\cbf@Opts{\symbolchoice{\qz@chksymb}%
+ \textColor{\qz@chksymbcol}}%
+ \mbox{\expandafter\check@@Box\expandafter{\cbf@Opts}%
+ {mck.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton
+ \every@qckCheckbox}}%
+ \ifnocorrections\else
+ \if\Ans@choice1\relax
+ \edef\Ans@c@f@Choice{\noexpand\DV{Yes}%
+ \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}%
+ \else
+ \ifeq@noquizsolutions
+ \noexpand\Ff{\FfReadOnly}%
+ \else
+ \noexpand\A{\noexpand\quiz@SolutionActionHook}%
+ \fi
+ \fi
+ }%
+ \else
+ \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}%
+ \fi
+ \let\late@options\@empty
+ \if\Ans@choice1\relax
+ \ifx\@qzsolndest\@empty\else
+ \ifeq@noquizsolutions\else
+ \edef\late@options{\noexpand\BC{\solution@Color}}%
+ \fi
+ \fi
+ \fi
+ \makebox[0pt][r]{\check@@Box{}%
+ {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
+ {\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
+ {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
+ \every@qCheckBox\late@options}}%
+ \fi
+ \Ans@proofing{\RadioFieldSize}%
+\eq@hspanner\ignorespaces}
+\newcount\eq@tabColCnt
+\define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}}
+\@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{%
+ \noexpand\define@key{bchoice}{\eqi}[\eqi]{%
+ \noexpand\def\noexpand\bChoiceNumCols{\eqi}}%
+ }\temp@expand@def
+}
+\def\bChoiceNumCols{\aeb@numCols}
+\define@key{bchoice}{random}[true]{%
+ \csname if#1\endcsname\eq@randomizeChoicestrue
+ \else\eq@randomizeChoicesfalse\fi
+}
+\define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}}
+\def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}}
+\def\@ansChoices[#1]%
+{%
+ \global\let\@tempholdSaveAns\@empty %4/5
+ \global\let\@tempholdSaveChoice\@empty %4/5
+ \global\let\bChoiceLabel\@empty %4/5
+ \setkeys{bchoice}{#1}%
+ \global\eq@tabColCnt=0
+ \ifnum\aeb@numCols=1 % list mode
+ \def\eq@next{\@layoutListAns}\else % tabular mode
+ \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi
+ \eq@next
+}
+\let\eChoices\relax
+\def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}%
+ {\@lookforendansChoices{\@layoutListAns}}%
+}
+\newcommand{\eq@saveAns}[2][]{%
+ \let\eq@next\@@@SaveAnsGobbleAns
+ \ifx\bChoiceLabel\@empty\else
+ \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}%
+ \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi
+ \fi\eq@next
+}
+\long\def\@@@SaveAns#1\eAns{% 4/5
+ \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}%
+ \addtocounter{quizno}{1}%
+ \edef\temp@expand{\noexpand\g@addto@macro\noexpand
+ \@tempholdSaveChoice{%
+ \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else
+ \ifaebshowgrayletters\Alph{quizno}\else
+ \linkContentFormat\fi\fi}}}\temp@expand
+ \addtocounter{quizno}{-1}%
+}
+\newif\ifoxfordcomma \oxfordcommatrue
+\def\oxfordCommaOn{\oxfordcommatrue}
+\def\oxfordCommaOff{\oxfordcommafalse}
+\def\eq@insertComma{%
+ \ifx\eq@comma\@empty
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \def\eq@comma{,}\fi
+ \else\ifx\eq@insertAnd\@empty\eq@comma\space
+ \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}%
+ \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space
+ \fi
+ \fi
+}
+\newcommand\eqAnd{and}\def\eq@insertAnd{%
+ \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else
+ \ifnum\@nameuse{NumAns\eq@namearg}>2\relax
+ \else\leavevmode\space\fi\eqAnd\space\fi}
+\long\def\eq@displayAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\def\eq@displayAlts#1{\advance\@tempcnta1
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi
+ \savedAltFmt{#1}}
+\def\eq@displayAltsAns#1{\advance\@tempcnta1\relax
+ \eq@insertComma
+ \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1}
+\newcommand{\savedAltFmt}[1]{(#1)}
+\newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAns@i}}
+\newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAns\@nameuse{SavedAns#2}\else
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i}
+ {\let\eq@insertAnd\@empty\useSavedAlts@i}}
+\newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}%
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi
+ \egroup
+}
+\newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i}
+ {\let\eq@insertAnd\@empty\useSavedAltsAns@i}}
+\newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax
+ \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble
+ \def\eq@argi{#1}\ifx\eq@argi\@empty
+ \let\eq@comma\@empty
+ \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else
+ \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}
+ \@nameuse{SavedAns#2-Idx#1}\fi
+ \egroup
+}
+\newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}}
+\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5
+\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph
+ \eq@saveAns#1\eAns % 4/5
+ \Ans#1\vspace{\@rowskip}%
+ \@layoutListAns
+}
+\long\def\@lookforendansChoices#1{%
+ \@ifnextchar\eChoices{\rowsep{\rowsep@default}%
+ \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}%
+}
+\def\@layoutTabularAns#1{%
+ \let\eq@tabSep\@empty
+ \xdef\numShortCols{#1}%
+ \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi
+ \@@layoutTabularAns
+}
+\def\@@layoutTabularAns{%
+ \@ifnextchar\Ans{\@getTabAns}%
+ {\@lookforendansChoices{\@@layoutTabularAns}}%
+}
+\def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}%
+\rowsep{\rowsep@default}
+\def\rowsepDefault#1{\def\rowsep@default{#1}}
+\def\rowsep@default{0pt}
+\long\def\@getTabAns\Ans#1\eAns{%
+ \eq@saveAns#1\eAns
+ \global\advance\eq@tabColCnt1
+ \let\@save@tabSep=\eq@tabSep
+ \ifnum\eq@tabColCnt=\numShortCols
+ \global\eq@tabColCnt=0
+ \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}%
+ \else
+ \gdef\eq@tabSep{&}%
+ \fi
+ \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default}
+ \expandafter\@findendans\@gobble}%
+ {\@save@tabSep\Ans#1\@@layoutTabularAns}%
+}
+\def\@findendans{\@ifnextchar\end{% 4/5
+ \ifx\bChoiceLabel\@empty\else
+ \processLabeledAns\fi
+ }{\expandafter\@findendans\@gobble}}%
+\def\defineEachAns#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAns\bChoiceLabel-Idx\the\count0}{\the\@temptokena}%
+ \ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\defineEachChoice#1{\advance\count0by1\relax
+ \@temptokena={#1}\csarg\xdef
+ {SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}\ifsolutionsonly\else
+ {\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel-Idx\the\count0}%
+ {\the\@temptokena}}}\fi
+}
+\def\processLabeledAns{%
+ \bgroup
+ \let\label\@gobble
+\if\aeb@FLOverride\eq@l
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else
+ \ifaebshowgrayletters
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else
+ \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi
+\fi
+ \toks@=\expandafter{\@tempholdSaveAns}\csarg
+ \xdef{SavedAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachAns\the\toks@
+ \xdef\@currNCntAns{\the\count0 }\csarg
+ \xdef{NumAns\bChoiceLabel}{\@currNCntAns}%
+ \ifsolutionsonly\else{\eq@IWDefs{\string
+ \csarg\string\gdef{NumAns\bChoiceLabel}{\the\count0 }}}\fi
+ \toks@=\expandafter{\@tempholdSaveChoice}\csarg
+ \xdef{SavedAlts\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi
+ \count0=0\relax\let\\\defineEachChoice\the\toks@
+ \count0=1\relax\toks@={}%{\ignorespaces\@gobble}%
+ \loop
+ \edef\temp@exp{\the\toks@\noexpand\\{%
+ \noexpand\useSavedAlts[\the\count0]{\bChoiceLabel}
+ \noexpand\useSavedAns[\the\count0]{\bChoiceLabel}}}%
+ \toks@=\expandafter{\temp@exp}%
+ \ifnum\count0<\@currNCntAns
+ \advance\count0by1
+ \repeat
+ \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}%
+ \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string
+ \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi
+ \egroup
+}
+\def\graylettersOn{\aebshowgrayletterstrue}
+\def\graylettersOff{\aebshowgraylettersfalse}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar}
+ {\let\isREFstar\eq@Zero\aeb@REF}}
+\def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref*{#1}\fi}%
+}
+\def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}}
+ {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}%
+ \else\ref{#1}\fi}%
+}
+\def\aeb@buildUpperCaseRef#1{%
+ \xdef\tmp@expand{\aeb@exiii\@firstoffive\csname r@#1\endcsname}%
+ \xdef\tmp@expand{\uppercase{\tmp@expand}}%
+ \if\isREFstar\eq@One\tmp@expand\else\hyperref[#1]{\tmp@expand}\fi
+}
+\newif\ifaeb@usecircles\aeb@usecirclesfalse
+\let\insert@circlesymbol\@empty
+\def\useMCCircles{\useForms
+ \ifaeb@usecircles\else
+ \global\aeb@usecirclestrue
+ \gdef\insert@circlesymbol{\symbolchoice{circle}}%
+ \fi
+}
+\def\useMCRects{\useForms
+ \ifaeb@usecircles\global\aeb@usecirclesfalse
+ \global\let\insert@circlesymbol\@empty
+ \fi
+}
+\let\useMCCRects\useMCRects
+\let\oqpriorhook\@empty
+\newenvironment{oQuestion}[1]{%
+ \let\@currentQues\@empty
+ \xdef\eq@pageThisQ{\the\c@page}%
+ \global\let\eqQzQuesList\@empty
+ \xdef\oField{#1}\xdef\curr@quiz{#1}\xdef\currQuiz{#1}%
+ \g@addto@macro\ListOfSQuizNames{,#1}\let\@qzsolndest\@empty
+ \let\eqQuizType\isSQZ\gdef\eqPTs{1}\global\let\eqQT\eq@na
+ \let\answers\answers@sq
+ \let\endanswers\endanswers@sq
+ \let\manswers\manswers@sq
+ \let\endmanswers\endmanswers@sq
+ \let\solution\solution@sq
+ \let\endsolution\endsolution@sq
+ \noindent\oqpriorhook\sq@IDTxtField\ifx\aebTitleQuiz\@empty
+ \else\aebtitleQuiz\fi\ignorespaces
+}{%
+ \global\let\aebtitleQuiz\@empty
+ \global\let\aebTitleQuiz\@empty
+ \global\let\eq@tq@star\relax
+ \aftergroup\ignorespaces
+}
+\def\oSolution#1{\edef\@qzsolndest{#1}}
+\def\replaceExclPt#1{\def\replaceexclaim{#1}}
+\replaceExclPt{false}
+\def\negPointsAllowed{\def\negpointsallowed{true}}
+\@onlypreamble{\negPointsAllowed}
+\def\negpointsallowed{false}
+\def\negPointsMarkupAllowed{\def\negpointsmarkupallowed{true}}
+\def\negpointsmarkupallowed{false}
+\@onlypreamble{\negPointsMarkupAllowed}
+\def\requireAlertBox{\def\bcheckboxused{false}}
+\def\allowNoAlertBox{\def\bcheckboxused{true}}
+\allowNoAlertBox
+\newcommand\RespBoxNT{\RespBoxMath}
+\newcommand\RespBox{\RespBoxMath}
+\newcommand\RespBoxMath{\def\rbFlag{0}\begingroup\Hy@unicodefalse
+ \@makeother\^\@makeother\&\@RespBox}
+\def\eq@rpl#1#2{_rplVarsBy('#1','#2')@} % dps17
+\ifnum\eq@drivernum=0\def\RorRT{\r\t}\else\def\RorRT{\r}\fi
+\def\toAltApprCnt{0}\def\toAltApprVar{_toAltAppr\toAltApprCnt}
+\def\toAltApprCntInc{{\@tempcnta=\toAltApprCnt\relax
+ \advance\@tempcnta1\relax
+ \xdef\toAltApprCnt{\the\@tempcnta}}}
+\def\setCoreInitAltAppr{%
+var\eqSP_substVars=\indepVars;\RorRT
+var\eqSP_mathVars=processMathVars(_substVars);\RorRT
+var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT
+ event.value=RespBoxAppr(event);\RorRT
+ getSubstValue.aSubsts=[];%
+}
+\def\bInitAltAppr{\ifShowAppr
+ \def\ShowApprSAVE{true}\toAltApprCntInc\ShowApprfalse
+ \def\eqAddAAFormat{\ifnum\eq@drivernum=0try\eqLBr\RorRT\fi
+ \setCoreInitAltAppr\ifnum\eq@drivernum=0 \r\eqRBr catch(e){\RorRT
+ var\eqSP\toAltApprVar=%
+ app.setTimeOut('this.resetForm("'+event.target.name+'");%
+ app.clearTimeOut(\toAltApprVar);',250);\r}\fi}\else
+ \def\ShowApprSAVE{false}\fi
+}
+\def\eInitAltAppr{\@nameuse{ShowAppr\ShowApprSAVE}%
+ \ifShowAppr\altApprOn\let\eqAddAAFormat\@empty\fi}
+\def\AAKqRespBoxMath{%
+ if(event.willCommit){\r\t
+ RecordPointValue(\eqPTs,\thequestionno\ifx\grpquestions1,%
+\thegrpquestionno,\grpPointValue,\grpTotalWeight,%
+"\grpEvalFunction"\fi);\r\t
+ RecordProblemType("\eqQT",\thequestionno);\r\t
+\ifSubstVars % dps17
+ var\eqSP_substVars=\indepVars;\r\t
+ var\eqSP_mathVars=processMathVars(_substVars);\r\t
+ var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t
+ var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t
+ var\eqSP retn=\processJSfunc(\rbArgs,%
+ \compareJSfunc,_substValue);\r\t
+\else
+ var\eqSP_mathVars=\indepVars;\r\t
+ var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc);\r\t
+\fi
+ ProcUserResp(retn,event.value,\thequestionno,%
+0\ifx\grpquestions1,\thegrpquestionno\fi);\r
+ }\r
+ if (!isQuizInitialized("\currQuiz")) {\r\t
+ \eqObjAlert\space eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t
+ event.rc = false;\r
+ }
+}
+\def\RespBoxMathDefaults
+{%
+ \BC{0 0 0}\S{S}\textColor{0 g}\F{\FPrint}\W{1}
+}
+\def\moreRespBoxMathDefaults
+{%
+ \edef\@moreRespBoxMathDefaults{%
+ \if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+ \ifeq@noquizsolutions
+ \else\noexpand\Ff{\FfReadOnly}\fi\fi\fi
+ }%
+}
+\let\eqAddAAFormat\@empty
+\def\eqSP{\string\040} % dps17
+\def\eqLBr{\string\173}
+\def\eqRBr{\string\175}
+\def\@@RespBoxMathActions{%
+ \AA{\if\eqQuizType\isQZ
+ \AAKeystroke{\AAKqRespBoxMath\eqAddAAKeystroke}
+ \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17
+ try{event.value=RespBoxAppr(event);}catch(e){}\r
+ \fi\fi\fi\eqAddAAFormat}
+ \else
+ \AAKeystroke{if(event.willCommit) {\r\t
+\ifSubstVars%
+ var\eqSP_substVars=\indepVars;\r\t
+ var\eqSP_mathVars=processMathVars(_substVars);\r\t
+ var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t
+ var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t
+ var\eqSP retn=\processJSfunc(\rbArgs,%
+ \compareJSfunc,_substValue);\r\t
+\else
+ var\eqSP_mathVars=\indepVars;\r\t
+ var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc);
+\fi
+\if\@sqTurnOffAlerts1\r\t
+ OnBlurRespBox(retn,"\curr@quiz");
+\fi
+ \eqAddAAKeystroke\r
+ }}
+ \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17
+ try{event.value=RespBoxAppr(event);}catch(e){}\r\fi\fi\fi
+ \eqAddAAFormat}%
+ \AAOnFocus{\JS{var retn = null;}}%
+ \AAOnBlur{\JS{OnBlurRespBox(null,"\curr@quiz");}}%
+\fi
+ }
+}
+\def\annot@subtype@rbm{rbm}
+\newcommand\@RespBox[1][]
+{%
+ \edef\annot@subtype{\annot@subtype@rbm}%
+ \eq@AddProbToQzQuesList
+ \smallskip\ifx\grpquestions\eq@Zero
+ \addtocounter{eqpointvalue}{\eqPTs}\fi
+ \if\eqQuizType\isQZ
+ \def\rbFlag{1}\global\IsRespBoxtrue
+ \ifx\grpquestions\eq@One
+ \stepcounter{grpquestionno}%
+ \def\Fld@name{%
+ grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
+ \else
+ \eq@recordThesePTs\eq@recordProbType
+ \edef\eqtmp{\aPointType}%
+ \xdef\aPointType{\eqtmp,[\eqPTs,"math"]}%
+ \stepcounter{questionno}%
+ \def\Fld@name{obj.\curr@quiz.\thequestionno}%
+ \fi
+ \else % shortquiz
+ \ifx\grpquestions\eq@One
+ \stepcounter{grpquestionno}%
+ \def\Fld@name{%
+ grpobj.\oField.\thequestionno.\thegrpquestionno}%
+ \else
+ \stepcounter{questionno}%
+ \def\Fld@name{%
+ obj.\oField.\thequestionno}%
+ \fi
+ \fi
+ \let\Array\aeb@array
+ \moreRespBoxMathDefaults
+ \leavevmode\hbox\bgroup\let\rpl\eq@rpl
+ \text@@Field{#1}{\Fld@name}%
+ {\RBW}{\DefaultHeightOfWidget}%
+ {\eq@protect\AA}{\eq@setWidgetProps\eq@RespBox}%
+ {\RespBoxMathDefaults\@moreRespBoxMathDefaults
+ \@@RespBoxMathActions\every@eqTextField\every@RespBoxMath}%
+}
+\def\eq@RespBox#1{\pdfstringdef\eqCorrectAns{#1}%
+ \gdef\eqCorrectAnsTeX{#1}\if\grpquestions\eq@Zero
+ \ifwithinMCFI\gdef\s@veCorrAnsMCFI{"#1"}\fi
+ \else
+ \eq@recordGrpAnsArray{"#1"}\fi
+ \@ifnextchar({\@eq@RespBox{#1}}{\@eq@RespBox{#1}(x)}}
+\def\@eq@RespBox#1(#2){\@ifnextchar[{\@eq@RespB@x{#1}(#2)}%
+ {\@ifstar{\@eq@RespB@x{#1}(#2)[\curr@quiz.\thequestionno]}%
+ {\@eq@RespB@x{#1}(#2)[]}}}
+\def\eq@ZERO{0}
+\def\defaultRDPrecision#1{\def\eq@defaultRDPrecision{#1}}
+\defaultRDPrecision{1E-14}
+\newif\ifarrowDelim\arrowDelimfalse % dps17
+\def\rpl@#1#2{\rpl@i#1->\@nil}
+\def\rpl@i#1->#2\@nil{\def\argii{#2}\ifx\argii\@empty\else
+ \global\arrowDelimtrue\fi}
+\def\GiiRpli#1{\global\arrowDelimfalse\GiiRplii#1\rpl{}{}\@nil}
+\def\GiiRplii#1\rpl#2#3#4\@nil{\def\argiv{#4}%
+ \ifx\argiv\@empty\let\eq@next\relax\else
+ \rpl@{#2}{#3}\ifarrowDelim\let\eq@next\relax\else
+ \def\eq@next{\GiiRplii#4\@nil}\fi\fi
+ \eq@next}
+\def\isAltApprSpec#1{\bgroup\if\frstIsrpl\eq@YES\GiiRpli{#1}\else
+ \expandafter\GiiRpli\expandafter{#1}\fi\egroup} % dps17
+\def\isFrstrpl#1#2\@nil{\ifx#1\rpl\let\frstIsrpl\eq@YES\else
+ \let\frstIsrpl\eq@NO\fi}
+\def\cntComm@s#1{\@tempcnta\z@\expandafter\cntComm@si#1,,\@nil}
+\def\cntComm@si#1,#2,\@nil{\def\argii{#2}\ifx\argii\@empty
+ \def\eq@next{\edef\nC{\the\@tempcnta}}\else
+ \advance\@tempcnta\@ne\def\eq@next{\cntComm@si#2,\@nil}\fi
+ \eq@next}\def\eq@SC{;}\def\rplSofT#1#2{#2}
+\def\cntVars#1{\let\rpl\rplSofT\edef\eV@rs{#1}\let\rpl\eq@rpl
+ \cntComm@s{\eV@rs}\ifnum\nC>\z@
+ \@tempcnta\nC\relax\advance\@tempcnta\@ne
+ \xdef\nV{\the\@tempcnta}\else\@tempcnta\z@
+ \expandafter\cntVarsi\eV@rs;\@nil\fi}
+ \def\cntVarsi#1#2\@nil{\def\argii{#2}%
+ \ifx\argii\eq@SC\def\eq@next{\advance\@tempcnta\@ne
+ \edef\nV{\the\@tempcnta}}\else\advance\@tempcnta\@ne
+ \def\eq@next{\cntVarsi#2\@nil}\fi
+ \eq@next}
+\def\eq@X{x}
+\def\eq@isThereRept#1{\let\eq@isRept\eq@Zero\expandafter
+ \eq@isThereRepti#1*\@nil}
+\def\eq@isThereRepti#1*#2\@nil{\def\argii{#2}\ifx\argii\@empty
+ \let\eq@isRept\eq@Zero\else\let\eq@isRept\eq@One\fi}
+\def\eq@obeyReptOfIntrvls#1{%
+ \expandafter\eq@isThereRept\expandafter{#1}% sets \eq@isRept
+ \if\eq@isRept\eq@Zero\relax\let\eq@interv@ls\@empty\expandafter
+ \g@addto@macro\expandafter\eq@interv@ls
+ \expandafter{#1}\let\eq@next\relax\else\let\eq@interv@ls\@gobble
+ \def\eq@next{\expandafter
+ \eq@obeyReptOfIntrvlsi#1x[]x\@nil}\fi\eq@next}
+\def\eq@obeyReptOfIntrvlsi#1[#2]#3#4x#5\@nil{%
+ \def\argi{#2}\def\argii{#3}\def\argiv{#5}%
+ \ifx\argi\@empty\let\eq@next\relax\else
+ \ifx\argii\eq@X\g@addto@macro\eq@interv@ls{x[#2]}%
+ \def\eq@next{\eq@obeyReptOfIntrvlsi#4x#5x\@nil}\else
+ % repetition of an interval
+ \eq@ddtorepIntrvl{[#2]}{#4}%
+ \def\eq@next{\eq@obeyReptOfIntrvlsi#5x\@nil}\fi
+ \fi
+ \eq@next
+}
+\def\eq@ddtorepIntrvl#1#2{\@tempcnta=#2 \eq@ddtorepIntrvli{#1}{#2}}
+\def\eq@ddtorepIntrvli#1#2{\@whilenum\@tempcnta>\z@\do
+ {\g@addto@macro\eq@interv@ls{x#1}\advance\@tempcnta\m@ne}}
+\def\cntIv@ls#1{\@tempcnta\z@\expandafter\cntIv@lsi#1xxx\@nil}%
+\def\cntIv@lsi#1x#2x\@nil{\def\argii{#2}\ifx\argii\eq@X
+ \advance\@tempcnta\@ne
+ \edef\nI{\the\@tempcnta}\let\eq@next\relax\else
+ \advance\@tempcnta\@ne\def\eq@next{\cntIv@lsi#2x\@nil}\fi
+\eq@next}
+\begingroup\@makeother\&
+\gdef\eq@ProcIntrvls#1{\expandafter
+ \eq@ProcIntrvlsi#1&&\@nil}
+\gdef\eq@ProcIntrvlsi#1&#2&#3\@nil{\def\argii{#2}%
+ \ifx\argii\@empty
+ \eq@obeyReptOfIntrvls{#1}%
+ \cntIv@ls{\eq@interv@ls}%
+ \else
+ \eq@obeyReptOfIntrvls{#1}%
+ \edef\interv@ls{\eq@interv@ls}%
+ \cntIv@ls{\eq@interv@ls}%
+ \eq@obeyReptOfIntrvls{#2}%
+ \edef\eq@interv@ls{\interv@ls&\eq@interv@ls}%
+ \fi
+}
+\endgroup
+\def\@eq@RespB@x#1(#2)[#3]#4#5#6{\xdef\@qzsolndest{#3}% dps17
+ \gdef\indepVars{"#2"}\isFrstrpl#2\@nil\if\frstIsrpl\eq@YES
+ \def\@IVi{#2}\else\expandafter\def\expandafter
+ \@IVi\expandafter{#2}\fi\edef\@IVii{#2}\ifx\@IVi\@IVii
+ \global\SubstVarsfalse\else\global\SubstVarstrue
+ \isAltApprSpec{#2}\fi
+ \cntVars{#2}\def\eq@precision{#5}%
+ \ifx\eq@precision\eq@ZERO
+ \def\eq@defaultCompare{reldiffCompare}%
+ \def\rbArgstmp{\rbFlag,% dps17
+ \ifSubstVars_substAns\else"#1"\fi,#4,%
+ \eq@defaultRDPrecision}\else
+ \def\eq@defaultCompare{diffCompare}%
+ \def\rbArgstmp{\rbFlag,% dps17
+ \ifSubstVars_substAns\else"#1"\fi,#4,#5}\fi
+ \edef\eq@ixparam{#6}\expandafter\eq@chkivIntrvls\eq@ixparam\\%
+}
+\def\viidna{[0,1]}
+\def\eq@chkivIntrvls{\@ifnextchar[{\eq@chkivIntrvlsi}%
+ {\eq@chkivIntrvlsii}}
+\def\eq@chkivIntrvlsi#1\\{\eq@ProcIntrvls{#1}%
+ \def\rbArgs{\rbArgstmp,"\eq@interv@ls",_mathVars}% dps17
+ \@ifnextchar[{\@eq@@RespBox[ \expandafter\@gobble}%
+ {\@eq@@RespBox[\eq@defaultCompare]}%
+}
+\def\eq@chkivIntrvlsii#1\\#2{\def\nI{1}%
+ \def\rbArgs{\rbArgstmp,"[#1,#2]",_mathVars}%
+ \@ifnextchar[{\@eq@@RespBox}{\@eq@@RespBox[\eq@defaultCompare]}%
+}
+\def\@eq@@RespBox[#1]{\@ifstar{\jsRespBox[#1]}%
+ {\jsRespBox[#1]{ProcResp}}}
+\def\eq@ProcRespIntervals{ProcRespIntervals}
+\def\eq@ProcRespSetNum{ProcRespSetNum}
+\def\eq@ProcRespSetSym{ProcRespSetSym}
+\def\eq@ProcRespEvalEq{ProcRespEvalEq}
+\def\eq@ProcRespEvalEqNonZero{ProcRespEvalEqNonZero}
+\def\eq@ProcRespEvalEqList{ProcRespEvalEqList}
+\def\eq@ProcRespEvalEqListNonZero{ProcRespEvalEqListNonZero}
+\def\jsRespBox[#1]#2{\def\compareJSfunc{#1}%
+ \def\processJSfunc{#2}\gdef\g@processJSfunc{#2}% 01/11
+ \ifnum\nV=\nI\relax\else
+ \ifx\processJSfunc\eq@ProcRespSetNum\else
+ \ifx\processJSfunc\eq@ProcRespSetSym\else
+ \ifx\processJSfunc\eq@ProcRespEvalEq\else
+ \ifx\processJSfunc\eq@ProcRespEvalEqNonZero\else
+ \ifx\processJSfunc\eq@ProcRespEvalEqList\else
+ \ifx\processJSfunc\eq@ProcRespEvalEqListNonZero\else
+ \PackageWarning{exerquiz}{The number of variables does not
+ match\MessageBreak the number of intervals. The
+ problem\MessageBreak may not evaluate properly}\fi\fi\fi\fi\fi\fi\fi
+ \ifx\eq@ProcRespIntervals\g@processJSfunc
+ \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble
+ \pdfstringdef{\eqCorrectAns}{\eqCorrectAns}%
+ \let\@inmathwarn\@inmathwarn@SAVE\fi
+\ifx\grpquestions\eq@Zero
+ \eq@recordCorrAns{"\eqCorrectAns"}% 2018/03/18
+\fi
+ \ifeq@proofing\makebox[0pt][l]{\space\math@correctAnswer}\fi
+ \eq@TextField % send to the driver-dependent macro
+ \egroup % hbox
+ \endgroup % \RespBoxMath
+}
+\def\gobbleMacro#1>{}
+\gdef\math@correctAnswer{\ttfamily
+ \color{\@proofingsymbolColor}\spaceskip=2pt\xspaceskip=2pt%
+ \expandafter\gobbleMacro\meaning\eqCorrectAnsTeX
+}
+\newcommand\RespBoxTxtNT{\def\rbFlag{0}\@RespBoxTxt}
+\newcommand\RespBoxTxt{\def\rbFlag{0}\@RespBoxTxt}
+\def\RespBoxTxtOnBlur{OnBlurRespBox(%
+ \if\@sqTurnOffAlerts1retn\else null\fi,"\curr@quiz");}
+\def\eqObjAlert{%
+ \ifx\eqQuizType\isQZ\ifx\eq@online\eq@YES\ifeq@noquizsolutions
+ \else if (false)\fi\fi\fi}
+\begin{defineJS}[%
+ \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxt}
+if(event.willCommit){
+ RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,%
+@thegrpquestionno,@grpPointValue,@grpTotalWeight,%
+"@grpEvalFunction"@fi);
+ RecordProblemType("@eqQT",@thequestionno);
+ var retn = ProcRespTxt(@rbTxtAlt);
+ ProcUserResp(retn,event.value,@thequestionno,%
+0@ifx@grpquestions1,@thegrpquestionno@fi);
+}
+if (!isQuizInitialized("@currQuiz")) {
+ @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3);
+ event.rc = false;
+}
+\end{defineJS}
+\def\RespBoxTxtDefaults
+{%
+ \BC{0 0 0}\W{1}\S{S}\textColor{0 g}\F{\FPrint}%
+}
+\def\moreRespBoxTxtDefaults
+{%
+ \edef\@moreRespBoxTxtDefaults{%
+ \if\eqQuizType\isQZ\ifx\eq@online\eq@YES
+ \ifeq@noquizsolutions\else
+ \noexpand\Ff{\FfReadOnly}\fi\fi\fi
+ }%
+}
+\def\@@RespBoxTxtActions
+{%
+ \AA{\if\eqQuizType\isQZ
+ \AAKeystroke{\AAKqRespBoxTxt\eqAddAAKeystroke}
+ \AAFormat{\eqAddAAFormat}
+ \else
+ \AAKeystroke{%
+ if(event.willCommit) {\r\t
+ retn = ProcRespTxt(\rbTxtAlt);\r
+\if\@sqTurnOffAlerts1
+ \t\RespBoxTxtOnBlur\r
+\fi
+ \eqAddAAKeystroke\r
+ }%
+ }
+ \AAFormat{\eqAddAAFormat}
+ \AAOnFocus{\JS{var retn = null;}}
+\if\@sqTurnOffAlerts0
+ \AAOnBlur{\JS{\RespBoxTxtOnBlur}}%
+\fi
+ \fi
+ }
+}
+\def\annot@subtype@rbt{rbt}
+\newcommand\@RespBoxTxt[1][]
+{%
+ \edef\annot@subtype{\annot@subtype@rbt}%
+ \eq@AddProbToQzQuesList
+ \ifx\grpquestions\eq@Zero\addtocounter{eqpointvalue}{\eqPTs}\fi
+ \if\eqQuizType\isQZ
+ \def\rbFlag{1}\global\IsRespBoxtrue
+ \ifx\grpquestions\eq@One
+ \stepcounter{grpquestionno}%
+ \def\Fld@name{%
+ grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
+ \else
+ \eq@recordThesePTs\eq@recordProbType
+ \edef\eqtmp{\aPointType}%
+ \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}%
+ \stepcounter{questionno}%
+ \def\Fld@name{obj.\curr@quiz.\thequestionno}%
+ \fi
+ \else
+ \stepcounter{questionno}%
+ \def\Fld@name{obj.\oField.\thequestionno}%
+ \fi
+ \moreRespBoxTxtDefaults
+ \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}%
+ {\RBW}{\DefaultHeightOfWidget}%
+ {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxt}%
+ {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults
+ \@@RespBoxTxtActions\every@eqTextField\every@RespBoxTxt}%
+}
+\def\@@RespBoxTxt#1#2{%
+ \@ifnextchar[{\@@@RespBoxTxt{#1}{#2}}
+ {\@ifstar{\@@@RespBoxTxt{#1}{#2}[\curr@quiz.\thequestionno]}%
+ {\@@@RespBoxTxt{#1}{#2}[]}}}
+\def\eq@ZERO{0}\def\eq@ONE{1}\def\eq@TWO{2}
+\def\@@@RespBoxTxt#1#2[#3]#4{%
+ \xdef\@qzsolndest{#3}%
+ \def\eq@argi{#1}\ifx\eq@argi\eq@ZERO\else
+ \ifx\eq@argi\eq@ONE\else\ifx\eq@argi\eq@TWO\else
+ \def\eq@argi{-1}\fi\fi\fi
+ \def\eq@argii{#2}\ifx\eq@argii\eq@ONE\else\def\eq@argii{0}\fi
+ \begingroup
+ \ifnum\eq@argii=1\relax
+ \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}%
+ \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}%
+ \def\word##1{\\b##1\\b}\def\any{@any@}\fi
+ \xdef\rbTxtAlt{\rbFlag,\eq@argi,\eq@argii}%
+ \global\let\txtAltList\@empty
+ \count0=#4 \ifnum\count0 > 0 \expandafter\@argRead\else
+ \PackageError{exerquiz}{%
+ The fourth required parameter of \string\RespBoxTxt\MessageBreak
+ is required to be a positive integer. You entered\MessageBreak
+ #4\space instead}{Enter a positive integer.}\fi
+}
+\def\@argRead#1{\xdef\jsTempArgs{\txtAltList}%
+ \ifx\txtAltList\@empty\xdef\txtAltList{"#1"}\else
+ \xdef\txtAltList{\jsTempArgs,"#1"}\fi\@@argRead}
+\def\@@argRead{\advance\count0 by-1\relax
+ \ifnum\count0=0\relax
+ \def\eq@next{\endgroup
+ \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}%
+ \if\grpquestions\eq@Zero
+ \ifwithinMCFI
+ \xdef\s@veCorrAnsMCFI{[\txtAltList]}\else
+ \eq@recordCorrAns{[\txtAltList]}\fi
+ \else
+ \eq@recordGrpAnsArray{[\txtAltList]}%
+ \fi
+ \eq@@RespBoxTxt
+ }%
+ \else
+ \def\eq@next{\@argRead}%
+ \fi\eq@next
+}
+\def\eq@@RespBoxTxt{%
+ \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi
+ \eq@TextField
+ \egroup
+}
+\def\gobbleTxt#1>#2,#3,#4,{}
+\gdef\txt@correctAnswer{\ttfamily\color{\@proofingsymbolColor}%
+ \spaceskip=2pt\xspaceskip=2pt
+ \expandafter\gobbleTxt\meaning\rbTxtAlt
+}
+\begin{defineJS}[%
+ \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxtPC}
+if(event.willCommit){
+ RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,%
+@thegrpquestionno,@grpPointValue,@grpTotalWeight,%
+"@grpEvalFunction"@fi);
+ RecordProblemType("@eqQT",@thequestionno);
+ var retn = ProcRespTxtPC(@rbTxtAlt);
+@ifx@grpquestions1%
+ ProbValue[@thequestionno][3+@thegrpquestionno]%
+=ProcRespTxtPC.txtPCpCr;@else%
+ ProbValue[@thequestionno]=ProcRespTxtPC.txtPCpCr;@fi
+ ProcUserResp(retn,event.value,@thequestionno,0%
+@ifx@grpquestions1,@thegrpquestionno@fi);
+}
+if (!isQuizInitialized("@currQuiz")) {
+ @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3);
+ event.rc = false;
+}
+\end{defineJS}
+\def\@@RespBoxTxtPCActions
+{%
+ \AA{\if\eqQuizType\isQZ
+ \AAKeystroke{\AAKqRespBoxTxtPC}
+ \else
+ \AAKeystroke{%
+ if(event.willCommit) {\r\t
+ retn = ProcRespTxtPC(\rbTxtAlt);\r
+\if\@sqTurnOffAlerts1%
+ \t\RespBoxTxtOnBlur\r
+\fi
+ }%
+ }
+ \AAOnFocus{\JS{var retn = null;}}
+\if\@sqTurnOffAlerts0%
+ \AAOnBlur{\JS{\RespBoxTxtOnBlur}}%
+\fi
+ \fi
+ }
+}
+\newcommand{\RespBoxTxtPC}{\def\rbFlag{0}\@RespBoxTxtPC}
+\def\annot@subtype@rbtpc{rbtpc}
+\newcommand\@RespBoxTxtPC[1][]
+{%
+ \edef\annot@subtype{\annot@subtype@rbtpc}%
+ \eq@AddProbToQzQuesList
+ \smallskip\ifx\grpquestions\eq@Zero
+ \addtocounter{eqpointvalue}{\eqPTs}\fi
+ \if\eqQuizType\isQZ\def\rbFlag{1}\global\IsRespBoxtrue
+ \ifx\grpquestions\eq@One
+ \stepcounter{grpquestionno}%
+ \def\Fld@name{%
+ grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}%
+ \else
+ \eq@recordThesePTs\eq@recordProbType
+ \edef\eqtmp{\aPointType}%
+ \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}%
+ \stepcounter{questionno}%
+ \def\Fld@name{obj.\curr@quiz.\thequestionno}%
+ \fi
+ \else
+ \stepcounter{questionno}%
+ \def\Fld@name{obj.\oField.\thequestionno}%
+ \fi
+ \moreRespBoxTxtDefaults
+ \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}%
+ {\RBW}{\DefaultHeightOfWidget}%
+ {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxtPC}%
+ {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults
+ \@@RespBoxTxtPCActions\every@eqTextField\every@RespBoxTxt}%
+}
+\def\@@RespBoxTxtPC#1{\@ifnextchar[{\@@@RespBoxTxtPC{#1}}
+ {\@ifstar{\@@@RespBoxTxtPC{#1}[\curr@quiz.\thequestionno]}%
+ {\@@@RespBoxTxtPC{#1}[]}}}
+\def\@@@RespBoxTxtPC#1[#2]#3{\xdef\@qzsolndest{#2}%
+ \begingroup
+ \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}%
+ \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}%
+ \def\word##1{\\b##1\\b}\def\any{@any@}
+ \gdef\rbTxtAlt{\rbFlag,#1,1}% force sub-string match
+ \global\let\txtAltList\@empty
+ \count0=#3 \ifnum\count0>0 \expandafter\@argReadPC\else
+ \PackageError{exerquiz}{%
+ The third required parameter of
+ \string\RespBoxTxtPC\MessageBreak
+ is required to be a positive integer.
+ You entered\MessageBreak #3\space instead}
+ {Enter a positive integer.}\fi
+}
+\newcommand\@argReadPC[2][0]{\xdef\jsTempArgs{\txtAltList}%
+ \ifx\txtAltList\@empty\xdef\txtAltList{["#2",#1]}\else
+ \xdef\txtAltList{\jsTempArgs,["#2",#1]}\fi\@@argReadPC}
+\def\@@argReadPC{\advance\count0 by-1\relax
+ \ifnum\count0=0\relax
+ \def\eq@next{\endgroup
+ \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}%
+ \if\grpquestions\eq@Zero
+ \ifwithinMCFI
+ \xdef\s@veCorrAnsFCFI{[\txtAltList]}\else
+ \eq@recordCorrAns{[\txtAltList]}\fi
+ \else
+ \eq@recordGrpAnsArray{[\txtAltList]}%
+ \fi
+ \eq@@RespBoxTxtPC
+ }%
+ \else
+ \def\eq@next{\@argReadPC}%
+ \fi\eq@next
+}
+\def\eq@@RespBoxTxtPC{%
+ \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi
+ \eq@TextField
+ \egroup
+}
+\def\RespBoxEssayDefaults
+{%
+ \BC{0 0 0}\W{1}\S{S}\Ff{\FfMultiline}\rawPDF{}%
+}
+\def\@@RespBoxEssayActions
+{%
+ \AA{\if\eqQuizType\isQZ
+ \AAKeystroke{%
+ if(event.willCommit){\jsR\jsT
+ RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT
+ RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
+ }\jsR
+ if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT
+ @eqObjAlert\space eqAppAlert(%
+ InitMsg("\bqlabelISO"),3);\jsR\jsT
+ event.rc = false;\jsR
+ }%
+ }%
+ \fi
+ }
+}
+\newcommand\RespBoxEssay[3][]
+{%
+ \smallskip\addtocounter{eqpointvalue}{\eqPTs}%
+ \stepcounter{questionno}%
+ \mbox{\text@@Field{#1}{essay.\curr@quiz.\thequestionno}{#2}{#3}%
+ \edef\eqtmp{\aPointType}\xdef\aPointType{\eqtmp,[\eqPTs,"essay"]}%
+ {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxEssayActions
+ \eq@TextField}{\RespBoxEssayDefaults\every@eqTextField}}%
+}
+\let\@@sqTallyBoxActions\@empty
+\@ifundefined{calcOrder}{%
+\ifpdf\def\@@sqTallyBoxActions{%
+ \AA{\AAValidate{getTotalTally("\oField");}}}\fi}{}
+\def\sqTallyBoxDefaults
+{%
+ \BC{0 0 0}\W{1}\textColor{1 0 0 rg}\S{I}\Q{2}\Ff{\FfReadOnly}
+}
+\ifpdf\def\@@sqTallyBoxActions{%
+ \AA{\AAValidate{getTotalTally("\oField");}}}\else
+ \let\@@sqTallyBoxActions\@empty
+\fi
+\newcommand\sqTallyBox[1][]
+{%
+ \mbox{\text@@Field{#1}{tally.\oField.\thequestionno}%
+ {\TBW}{\DefaultHeightOfWidget}%
+ {}{\eq@setWidgetProps\eq@TextField}%
+ {\sqTallyBoxDefaults\@@sqTallyBoxActions\every@eqTextField
+ \every@sqTallyBox}}%
+}
+\def\sqTallyTotalDefaults
+{%
+ \rawPDF{}\W{1}\BC{0 0 0}\S{I}\textColor{1 0 0 rg}%
+ \Q{2}\Ff{\FfReadOnly}%
+}
+\def\@@sqTallyTotalActions
+{%
+ \AA{%
+ \AAKeystroke{AFNumber_Keystroke(0,0,0,0,"",true);}
+ \AAFormat{AFNumber_Format(0,0,0,0,"",true);}
+ \AACalculate{%
+ AFSimple_Calculate("SUM",new Array("tally.\oField"));
+ }}
+}
+\newcommand\sqTallyTotal[1][]
+{%
+ \mbox{\text@@Field{#1}{tallytotal.\oField}{\TBW}%
+ {\DefaultHeightOfWidget}{\eq@protect\AA}%
+ {\eq@setWidgetProps\eq@TextField}%
+ {\sqTallyTotalDefaults\@@sqTallyTotalActions\every@eqTextField
+ \every@sqTallyTotal}}%
+}
+\def\CorrAnsButtonDefaults
+{%
+ \CA{\eq@local@CorrAnsButton}\W{1}\S{S}
+ \BC{0 0 0}\BG{.7529 .7529 .7529}\H{P}
+}
+\def\normalCABtnBC{0 0 0}
+\def\qCorrAnsButtonActionHook{\JS{%
+\ifx\@qzsolndest\@empty\else
+ if (event.shift)\jsR\jsT
+ this.gotoNamedDest("\@qzsolndest");\jsR
+ else {\jsR\jsT\fi
+\ifShowAppr % dps17
+ \ifarrowDelim
+ if (typeof event.target.appr=="undefined")\r\JST\t
+ event.target.appr=false;\r\JST
+ event.target.appr=!event.target.appr;\r\JST
+ if (event.target.appr) {\r\t\JST
+ var _substVars=\indepVars;\r\t\JST
+ var _substAns=getSubstValue(_substVars,"\CorrectAns");\r\t\JST
+ var value=RespBoxAppr("\CorrectAns");\r\JST
+ } else value="\CorrectAns";\r\JST
+ \else
+ value="\CorrectAns";\r\JST
+ \fi
+\else
+ value="\CorrectAns";\r\JST
+\fi
+ \processJSfunc("Ans.\curr@quiz",value,\currQuiz);\r
+\ifx\@qzsolndest\@empty\else % dps17
+ }\fi
+}}
+ \def\sqCorrAnsButtonActionHook
+ {%
+ \JS{%
+ \ifx\@qzsolndest\@empty\else
+ if (event.shift)\jsR\jsT
+ this.gotoNamedDest("\@qzsolndest");\jsR
+ else\jsR\jsT
+ \fi
+ \processJSfunc("obj.\oField.\thequestionno","\CorrectAns",%
+\currQuiz);
+ }%
+ }
+\newcommand\CorrAnsButton[1][]{\eq@@CorrAnsButton{#1}}
+\def\eq@@CorrAnsButton#1#2{\bgroup\makeJSspecials % 1/12
+ \@ifstar{\eq@@@CorrAnsButton{#1}{#2}}{%
+ \eq@@@CorrAnsButton{#1}{#2}{DisplayAnswer}}%
+}
+\def\eq@@@CorrAnsButton#1#2#3{\gdef\CorrectAns{#2}%
+ \def\processJSfunc{#3}\ifx\@qzsolndest\@empty\let\JST\@empty\else
+ \let\JST\jsT\fi % dps17
+ \ifx\eq@ProcRespIntervals\g@processJSfunc % 01/11
+ \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble
+ \pdfstringdef{\CorrectAns}{\CorrectAns}%
+ \let\@inmathwarn\@inmathwarn@SAVE\fi
+ \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}%
+ \else\def\Fld@name{corr.\oField.\thequestionno}\fi
+ \if\eqQuizType\isQZ
+ \edef\@@CorrAnsButtonActions{\noexpand\F{\FHidden}%
+ \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}%
+ \else\noexpand\BC{\solution@Color}\fi
+ \noexpand\A{\noexpand\qCorrAnsButtonActionHook}}%
+ \ifeq@noquizsolutions\else % dps17 (\let\rpl\eq@rpl)
+ \mbox{\let\rpl\eq@rpl
+ \push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\CorrAnsButtonDefaults\@@CorrAnsButtonActions
+ \every@ButtonField\every@CorrAnsButton}}%
+ \fi
+ \else
+ \edef\@@CorrAnsButtonActions{%
+ \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
+ \else\noexpand\BC{\solution@Color}\fi
+ \noexpand\A{\noexpand\sqCorrAnsButtonActionHook}}%
+ \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\CorrAnsButtonDefaults\@@CorrAnsButtonActions
+ \every@ButtonField\every@CorrAnsButton}}%
+ \fi
+ \egroup
+}
+\def\sqClearButtonDefaults
+{%
+ \CA{\eq@local@sqClearButton}\textColor{0 g}\F{\FPrint}
+ \BC{0 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}\Ff{\FfNoExport}
+}
+\def\@@sqClearButtonActions
+{%
+ \A{\JS{ProcessIt = false;\jsR
+ if ( typeof \oField\space== "undefined" )\jsR\jsT
+ \oField\space= new Object;\jsR
+ if (typeof appAlerts["\oField"] == "undefined")\jsR\jsT
+ appAlerts["\oField"] = new Object;\jsR
+ this.resetForm(new Array("mc.\oField","obj.\oField",%
+ "tally.\oField","grpobj.\oField"));\jsR
+ var f = this.getField("obj.\oField");\jsR
+ if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty
+\defaultColorJS\else\defaultColorJSLoc\fi;\jsR
+ f = this.getField("grpobj.\oField");\jsR
+ if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty
+\defaultColorJS\else\defaultColorJSLoc\fi;\jsR
+ f = this.getField("rbmarkup.\oField");\jsR
+ if ( f != null ) f.display=display.hidden;\jsR
+ \oField.Grp = {};\jsR
+ appAlerts["\oField"].bAfterValue=false;\jsR
+ ProcessIt=true;}%
+ }
+}
+\newcommand\sqClearButton[1][]
+{%
+ \mbox{\push@@Button{#1}{clear.\oField}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\sqClearButtonDefaults\@@sqClearButtonActions\every@ButtonField
+ \every@sqClearButton}}%
+}
+\def\PromptButtonDefaults
+{%
+ \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0}
+ \BG{.7529 .7529 .7529}\H{P}
+}
+\newcommand{\promptButtonMsg}{%
+ "Would you like to see the correct answer at this time? "\r\t\t
+ + "Your current answer will be the one that will be scored. "\r\t\t
+ + "If you click on \\"Yes\\",
+ you will not be able to change your answer."
+}
+\newcommand{\AnsPromptBtnStr}{Answer:\space}
+\def\PromptButtonActionHook
+{%
+ \JS{%
+ if (!isQuizInitialized("\currQuiz")) {\r\t
+ eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t
+ event.rc=false;\r
+ } else {\r\t
+ if ( !\currQuiz.oAlertCheck.bAfterValue ) {\r\t
+ var resp=eqAppAlert({\r\t\t
+ cMsg:\promptButtonMsg,\r\t\t
+ nIcon: 2, nType: 2,\r\t\t
+ cTitle: ("AcroTeX Prompt Message"),\r\t\t
+ oCheckbox: \currQuiz.oAlertCheck\r\t
+ });\r\t
+ }\r
+ if ( promptQuiz.oAlertCheck.bAfterValue || resp==4 )\r\t
+ {\r\t\t
+ var field=this.getField(%
+ "obj.\currQuiz.\thequestionno");\r\t\t
+ field.readonly=true;\r\t\t
+ field=this.getField("Ans.\currQuiz");\r\t\t
+ if (field!=null)
+ field.value = "\AnsPromptBtnStr\PromptAns";\r\t
+ }\r
+ }
+ }%
+}
+\newcommand\@PromptButton[2][]
+{%
+ \def\PromptAns{#2}\if\eqQuizType\isQZ
+ \def\Fld@name{promptButton.\curr@quiz.\thequestionno}%
+ \else\def\Fld@name{promptButton.\oField.\thequestionno}\fi
+ \if\eqQuizType\isQZ
+ \def\@@PromptButtonActions{%
+ \A{\PromptButtonActionHook}}%
+ \mbox{\push@@Button{#1}{\Fld@name}{}%
+ {\DefaultHeightOfWidget}{\eq@protect\A}%
+ {\eq@setButtonProps\eq@Button@driver}%
+ {\PromptButtonDefaults\@@PromptButtonActions
+ \every@ButtonField\every@CorrAnsButton}}%
+ \else\PackageWarning{exerquiz}{The \string\PromptButton
+ is for quiz questions only.}
+ \fi
+}
+\newcommand{\PromptButton}{\makebox[0pt][r] % assumes xcolor
+ {\@PromptButton[\textColor{1 0 0 rg}]{\CorrectAns}}}
+\let\eq@ansGrpArray\@empty
+\def\eq@recordGrpAnsArray#1{%
+ \ifx\eq@ansGrpArray\@empty
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansGrpArray{#1}}\else
+ \edef\tmp@exp{\noexpand\g@addto@macro
+ \noexpand\eq@ansGrpArray{,#1}}\fi
+ \tmp@exp
+}
+\let\grpquestions\eq@Zero
+\def\mathGrp{\global\let\eq@ansGrpArray\@empty
+ \@ifnextchar[{\@imathGrp}{\@imathGrp[groupEval]}}
+\def\@imathGrp[#1]{\def\argi{#1}%
+ \@ifnextchar[{\@iimathGrp}{\@iimathGrp[]}}
+\def\@iimathGrp[#1]{\def\argii{#1}%
+ \eq@AddProbToQzQuesList
+ \global\let\grpquestions\eq@One
+ \setcounter{grpquestionno}{0}%
+ \stepcounter{questionno}%
+ \xdef\beginGrp{\thequestionno}%
+ \xdef\grpPointValue{\eqPTs}%
+ \eq@recordThesePTs\eq@recordProbType
+ \if\eqQuizType\isQZ
+ \edef\eqtmp{\aPointType}%
+ \xdef\aPointType{\eqtmp,[\eqPTs,"grp"]}\fi
+ \addtocounter{eqpointvalue}{\eqPTs}%
+ \ifx\argii\@empty
+ \xdef\grpTotalWeight{\eqPTs}%
+ \xdef\grpEvalFunction{\argi}%
+ \else
+ \xdef\grpTotalWeight{\argi}%
+ \xdef\grpEvalFunction{\argii}%
+ \fi
+}
+\def\endmathGrp{\global\let\grpquestions\eq@Zero
+ \eq@recordCorrAns{[\eq@ansGrpArray]}%
+ \xdef\endGrp{\thequestionno}}
+\def\CorrAnsButtonGrpDefaults
+{%
+ \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0}
+ \BG{.7529 .7529 .7529}\H{P}
+}
+\def\CorrAnsButtonGrpActionHook{\JS{%
+\ifx\@qzsolndest\@empty\else
+ if (event.shift)\jsR\jsT
+ this.gotoNamedDest("\@qzsolndest");\jsR
+ else\jsR
+\fi
+ {\jsR\jsT
+ var aCorrectAns=\CorrectAns;\jsR\jsT
+ var beginGrp = 1;\jsR\jsT
+ grpOffset = beginGrp;\jsR\jsT
+ if ( \currQuiz.Grp==null ) \currQuiz.Grp = {};\jsR\jsT
+ if (typeof \currQuiz.Grp["\thequestionno"]=="undefined")\jsR\jsT
+ {\jsR\jsT\jsT
+ \currQuiz.Grp["\thequestionno"] = {offset: 0};\jsR\jsT\jsT
+ var f = this.getField(%
+ "grpobj.\curr@quiz.\thequestionno."
+ + grpOffset)\jsR\jsT\jsT
+ if ( f.readonly ) {\jsR\jsT\jsT
+ f.readonly = false;\jsR\jsT\jsT
+ f.setFocus();\jsR\jsT\jsT
+ eqDelay = app.setTimeOut(%
+ "f.readonly = true;
+ app.clearTimeOut(eqDelay);",10);\jsR\jsT
+ } else f.setFocus();\jsR\jsT
+ }\jsR\jsT
+ else \jsR\jsT
+ {\jsR\jsT\jsT
+ \currQuiz.Grp["\thequestionno"].offset =
+ ++\currQuiz.Grp["\thequestionno"].offset
+ \% aCorrectAns.length;\jsR\jsT\jsT
+ grpOffset = beginGrp
+ + \currQuiz.Grp["\thequestionno"].offset;\jsR\jsT\jsT
+ var f = this.getField("grpobj.\curr@quiz.\thequestionno."
+ + grpOffset);\jsR\jsT\jsT
+ if ( f.readonly ) {\jsR\jsT\jsT
+ f.readonly = false;\jsR\jsT\jsT
+ f.setFocus();\jsR\jsT\jsT
+ eqDelay = app.setTimeOut("f.readonly = true;
+ app.clearTimeOut(eqDelay);",10);\jsR\jsT
+ } else f.setFocus();\jsR\jsT
+ }\jsR\jsT
+\if\eqQuizType\isQZ
+ DisplayAnswer("Ans.\curr@quiz",
+ aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],%
+\currQuiz);
+\else
+ DisplayAnswer("grpobj.\oField.\thequestionno."+ grpOffset,
+ aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],%
+\oField);\jsR
+\fi
+ }
+}}
+\newcommand\CorrAnsButtonGrp[2][]
+{%
+ \makeStringArray{#2}%
+ \edef\CorrectAns{\stringArray}%
+ \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}%
+ \else\edef\currQuiz{\oField}%
+ \def\Fld@name{corr.\oField.\thequestionno}\fi
+ \if\eqQuizType\isQZ
+ \edef\@@CorrAnsButtonGrpActions{\noexpand\F{\FHidden}%
+ \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
+ \else\noexpand\BC{\solution@Color}\fi
+ \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}%
+ \ifeq@noquizsolutions\else
+ \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions
+ \every@ButtonField\every@CorrAnsButton}}%
+ \fi
+ \else
+ \edef\@@CorrAnsButtonGrpActions{%
+ \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}
+ \else\noexpand\BC{\solution@Color}\fi
+ \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}%
+ \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
+ {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}%
+ {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions
+ \every@ButtonField\every@CorrAnsButton}}%
+ \fi
+}
+\def\makeStringArray#1{\def\stringArray{[}\@makeStringArray#1,\@nil}
+\def\@makeStringArray#1,#2\@nil{%
+ \edef\eq@temp{\stringArray}\def\argii{#2}%
+ \ifx\argii\@empty
+ \edef\stringArray{\eq@temp"#1"]}%
+ \def\eq@next{}%
+ \else
+ \edef\stringArray{\eq@temp"#1",}%
+ \def\eq@next{\@makeStringArray#2\@nil}%
+ \fi
+ \eq@next
+}
+\let\@eqListExp\relax
+\let\@currentQues\@empty
+\let\eqQzQuesList\@empty
+\def\eq@AddProbToQzQuesList{%
+ \edef\eq@tmpExp{\noexpand\g@addto@macro%
+ \noexpand\eqQzQuesList{%
+ \noexpand\@eqListExp{\@currentQues}{\thepage}}}%
+ \ifx\grpquestions\eq@Zero\eq@tmpExp\fi
+}
+\LangRedefinitions
+\input{aebjs.def}
+\inputSumryTblCode
+\inputMCFICode
+\newcommand{\solutionColor}[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
+ \def\solution@Color{\solutionColorDef}\else
+ \def\solution@Color{#1}\fi}
+\newcommand{\solutionColorDef}{0 .6 0}
+\solutionColor{\solutionColorDef}
+\@ifundefined{jsColor}{%
+ \InputIfFileExists{eqcolor.def}{\PackageInfo{exerquiz}
+ {Inputting eqcolor.def}}
+ {\PackageError{exerquiz}{cannot find eqcolor.def}
+ {Refresh your file name database and try again.}}
+}{}
+\newcommand\rghtColorJSDef{["RGB", 0, .6, 0]}
+\newcommand\rghtColorJS{\rghtColorJSDef}
+\newcommand\wrngColorJSDef{color.red}
+\newcommand\wrngColorJS{\wrngColorJSDef}
+\newcommand\partialColorJSDef{color.blue}
+\newcommand\partialColorJS{\partialColorJSDef}
+\newcommand\defaultColorJSDef{color.black}
+\newcommand\defaultColorJS{\defaultColorJSDef}
+\let\defaultColorJSLoc\@empty
+\let\defaultColorJSLocDef\@empty
+\let\rghtColorJSLoc\@empty
+\let\rghtColorJSLocDef\@empty
+\let\wrngColorJSLoc\@empty
+\let\wrngColorJSLocDef\@empty
+\let\partialColorJSLoc\@empty
+\let\partialColorJSLocDef\@empty
+\def\chooseJSsymbol{\@ifstar{\let\eq@isstar\eq@YES\chooseJSsymboli}
+ {\let\eq@isstar\eq@NO\chooseJSsymboli}}
+\def\chooseJSsymboli#1{\lowercase{\edef\eq@arg{#1}}%
+ \def\eq@carg{check}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.ch}\else
+ \def\eq@carg{cross}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.cr}\else
+ \def\eq@carg{diamond}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.di}\else
+ \def\eq@carg{circle}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.ci}\else
+ \def\eq@carg{star}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.st}\else
+ \def\eq@carg{square}\ifx\eq@arg\eq@carg
+ \def\eq@retnStyle{style.sq}\else
+ \let\eq@retnStyle\@empty
+ \ifx\eq@isstar\eq@NO\PackageWarning{exerquiz}
+ {Argument `#1' not recognized.\MessageBreak
+ Permissible values are check, cross, diamond,\MessageBreak
+ circle, star, square. Will use the default}\fi
+ \fi\fi\fi\fi\fi\fi
+}
+\newcommand\setRghtAnsSymb[1]{\chooseJSsymbol{#1}%
+ \ifx\eq@retnStyle\@empty\else
+ \edef\rghtAnsSymbJS{\eq@retnStyle}%
+ \edef\rghtAnsSymb{\eq@carg}\fi}
+\def\rghtAnsSymbJS{style.ch}
+\def\rghtAnsSymb{check}
+\newcommand\setCorrAnsSymb[1]{\chooseJSsymbol{#1}%
+ \ifx\eq@retnStyle\@empty\else
+ \edef\corrAnsSymbJS{\eq@retnStyle}%
+ \edef\corrAnsSymb{\eq@carg}\fi}
+\def\corrAnsSymbJS{style.ci}
+\def\corrAnsSymb{circle}
+\newcommand\setWrngAnsSymb[1]{\chooseJSsymbol{#1}%
+ \ifx\eq@retnStyle\@empty\else
+ \edef\wrngAnsSymbJS{\eq@retnStyle}%
+ \edef\wrngAnsSymb{\eq@carg}\fi}
+\def\wrngAnsSymbJS{style.cr}
+\def\wrngAnsSymb{cross}
+\def\setRghtAnsSymbLoc#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \let\rghtAnsSymbJSLoc\@empty\else
+ \edef\rghtAnsSymbJSLoc{\eq@retnStyle}\fi
+}
+\def\setCorrAnsSymbLoc#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \let\corrAnsSymbJSLoc\@empty\else
+ \edef\corrAnsSymbJSLoc{\eq@retnStyle}\fi
+}
+\def\setWrngAnsSymbLoc#1{\chooseJSsymbol*{#1}%
+ \ifx\eq@retnStyle\@empty
+ \let\wrngAnsSymbJSLoc\@empty\else
+ \edef\wrngAnsSymbJSLoc{\eq@retnStyle}\fi
+}
+\let\rghtAnsSymbJSLoc\@empty
+\let\rghtAnsSymbJSLocDef\@empty
+\let\corrAnsSymbJSLoc\@empty
+\let\corrAnsSymbJSLocDef\@empty
+\let\wrngAnsSymbJSLoc\@empty
+\let\wrngAnsSymbJSLocDef\@empty
+\newcommand\everyeqTextField[1]{\def\every@eqTextField{#1}}
+\def\every@eqTextField{}
+\newcommand\everyRespBoxMath[1]{\def\every@RespBoxMath{#1}}
+\def\every@RespBoxMath{}
+\newcommand\everyRespBoxTxt[1]{\def\every@RespBoxTxt{#1}}
+\def\every@RespBoxTxt{}
+\newcommand\everyrbMarkup[1]{\def\every@rbMarkup{#1}}
+\def\every@rbMarkup{}
+\newcommand\everysqTallyBox[1]{\def\every@sqTallyBox{#1}}
+\def\every@sqTallyBox{}
+\newcommand\everysqTallyTotal[1]{\def\every@sqTallyTotal{#1}}
+\def\every@sqTallyTotal{}
+\newcommand\everyScoreField[1]{\def\every@ScoreField{#1}}
+\def\every@ScoreField{}
+\newcommand\everyAnswerField[1]{\def\every@AnswerField{#1}}
+\def\every@AnswerField{}
+\newcommand\everyPointsField[1]{\def\every@PointsField{#1}}
+\def\every@PointsField{}
+\newcommand\everyPercentField[1]{\def\every@PercentField{#1}}
+\def\every@PercentField{}
+\newcommand\everyGradeField[1]{\def\every@GradeField{#1}}
+\def\every@GradeField{}
+\newcommand{\everysqRadioButton}[1]{\def\every@sqRadioButton{#1}}
+\def\every@sqRadioButton{}
+\newcommand{\everyqRadioButton}[1]{\def\every@qRadioButton{#1}}
+\def\every@qRadioButton{}
+\newcommand{\everyqckCheckBox}[1]{\def\every@qckCheckbox{#1}}
+\def\every@qckCheckbox{}
+\newcommand{\everyqCheckBox}[1]{\def\every@qCheckBox{#1}}
+\def\every@qCheckBox{}
+\newcommand{\everysqCheckBox}[1]{\def\every@sqCheckBox{#1}}
+\def\every@sqCheckBox{}
+\let\everyeqButtonField\everyButtonField
+\newcommand\everyCorrAnsButton[1]{\def\every@CorrAnsButton{#1}}
+\def\every@CorrAnsButton{}
+\newcommand\everysqClearButton[1]{\def\every@sqClearButton{#1}}
+\def\every@sqClearButton{}
+\newcommand\everyeqButton[1]{\def\every@eqButton{#1}}
+\newcommand\everyCorrButton{\everyeqButton}
+\def\every@eqButton{}
+\newcommand\everyBeginQuizButton[1]{\def\every@BeginQuizButton{#1}}
+\def\every@BeginQuizButton{}
+\newcommand\everyEndQuizButton[1]{\def\every@EndQuizButton{#1}}
+\def\every@EndQuizButton{}
+\let\everyeqGenButton\everyPushButton
+\let\every@eqGenButton\every@PushButton
+\let\eqGenButton\pushButton
+\newcommand\everyeqIcon[1]{\def\every@eqIcon{#1}}
+\def\every@eqIcon{}
+\def\formatInitAltApprs{\formatInitAltApprs}
+\def\@eqAddAAFormat#1{\def\@rgi{#1}\ifx\@rgi\formatInitAltApprs
+ \bInitAltAppr\else\def\eqAddAAFormat{#1}\fi}
+\def\eqAddAAFormat{}
+\def\formatAsSet{try{formatAsSet()}catch(e){}}
+\def\formatAsVector{try{formatAsVector()}catch(e){}}
+\def\eq@SupActnLst{{\AddAAKeystroke}{\AddAAMouseUpMC}%
+ {\AddAAMouseUpMS}{\AddAAFormat}}
+\newcommand\setActionKeys{\edef\catOfAt{\the\catcode`@}%
+ \ifnum\catOfAt=11 \let\eq@CatTail\relax\else
+ \makeatletter\let\eq@CatTail\makeatother\fi\setActionKeysi}
+\def\setActionKeysi#1{\let\eq@itsGood\eq@One
+ \def\setActionKeys@cont{\processAppArgs#1\end\@nil}%
+ \begingroup\eq@checkivValidKeys#1\end\ef@nil\endgroup\eq@CatTail}
+\def\eq@checkivValidKeys#1#2{\def\eq@GOOD{good}\expandafter
+ \@tfor\expandafter
+ \@ction\expandafter:\expandafter=\eq@SupActnLst\do{%
+ \expandafter\def\@ction{good}}%
+ \ifx\end#1% if #1=\end, #2=\ef@nil.
+ \def\eq@next{\aftergroup\setActionKeys@cont}%
+ \else
+ \if\eq@itsGood\eq@One
+ \let\itp@ss0\let\@@next\relax
+ \expandafter\@tfor\expandafter
+ \@ction\expandafter:\expandafter=\eq@SupActnLst\do{%
+ \expandafter\ifx\expandafter#1\@ction
+ \let\itp@ss\eq@One\@break@tfor
+ \fi}% do
+ \if\itp@ss\eq@Zero\let\eq@itsGood\eq@Zero
+ \def\eq@next{\def\eq@lastArg{#1}\expandafter
+ \eq@sqkErrorMsg\ef@gobbletonil}\else
+ \let\eq@next\eq@checkivValidKeys\fi
+ \else\let\eq@next\ef@gobbletonil\fi
+ \fi %\ifx\end
+ \eq@next
+}
+\def\eq@sqkErrorMsg#1{\PackageError{exerquiz}{The key \expandafter
+ \string\eq@lastArg\space is not supported by
+ \string\setActionKeys.\MessageBreak
+ Remove the key or correct the spelling of the key}{}}
+\def\addToAction{\makeatletter\@ifstar{\let\isSt@r\eq@YES\@ddToAction}
+ {\let\isSt@r\eq@NO\@ddToAction}}
+\def\@ddToAction#1#2{\let\eq@itsGood\eq@One
+ \def\setActionKeys@cont{\@@ddToAction{#1}{#2}}\begingroup
+ \eq@checkivValidKeys{#1}{#2}\end\ef@nil\endgroup\makeatother}
+\def\@@ddToAction#1#2{\@getCmdName{#1}%
+ \if\isSt@r\eq@YES\toks2={#2}%
+ \toks@=\aeb@exiii{\csname eq\@CmdName\endcsname}%
+ \edef\tmp@tokshold{\the\toks2 \the\toks@}%
+ \toks@=\expandafter{\tmp@tokshold}\else
+ \toks@=\aeb@exiii{\csname eq\@CmdName\endcsname#2}\fi
+ \expandafter\edef\csname eq\@CmdName\endcsname{\the\toks@}%
+}
+\def\@eqAddAAKeystroke#1{\def\argi{#1}\ifx\argi\@empty
+ \def\eqAddAAKeystroke{}\else\def\eqAddAAKeystroke{#1}\fi} %\r
+\def\eqAddAAKeystroke{}
+\def\@eqAddAAMouseUpMC#1{\def\argi{#1}\ifx\argi\@empty
+ \def\eqAddAAMouseUpMC{}\else\def\eqAddAAMouseUpMC{#1}\fi}
+\def\eqAddAAMouseUpMC{}
+\def\@eqAddAAMouseUpMS#1{\def\argi{#1}\ifx\argi\@empty
+ \def\eqAddAAMouseUpMS{}\else\def\eqAddAAMouseUpMS{#1}\fi}
+\def\eqAddAAMouseUpMS{}
+\def\eqIconDefaults
+{%
+ \rawPDF{}\S{}\mkIns{/TP 1}\W{}
+ \CA{}\RC{}\AC{}\BC{}\BG{}\H{N}
+ \textColor{0 g}\Ff{\FfReadOnly}
+}
+\newcommand\eqIcon[4][]
+{%
+ \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{\eq@setButtonProps
+ \eq@Button@driver}{\eqIconDefaults\every@ButtonField
+ \every@eqIcon}}%
+}
+\eq@restoreCats
+\endinput
+%%
+%% End of file `exerquiz.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/insdljs.sty b/texmf-dist/tex/latex/acrotex/insdljs.sty
index 69cc9647..22f2034d 100644
--- a/texmf-dist/tex/latex/acrotex/insdljs.sty
+++ b/texmf-dist/tex/latex/acrotex/insdljs.sty
@@ -1,908 +1,907 @@
-%%
-%% This is file `insdljs.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% insdljs.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% insdljs.sty package, %%
-%% Copyright (C) 2001-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{insdljs}
- [2017/09/03 v2.3g Insert Document Level JavaScripts (dps)]
-\usepackage{xkeyval}
-\RequirePackage{ifpdf}[2006/02/20]
-\RequirePackage{ifxetex}[2006/08/21]
-\RequirePackage{ifluatex}
-\DeclareOptionX{dvipsone}{\def\dljs@drivernum{0}%
- \AtBeginDocument{\dvips@marker}}
-\DeclareOptionX{dvips}{\def\dljs@drivernum{0}%
- \AtBeginDocument{\dvips@marker}}
-\DeclareOptionX{textures}{\def\dljs@drivernum{0}%
- \AtBeginDocument{\dvips@marker}}
-\DeclareOptionX{pdftex}{\def\dljs@drivernum{1}}
-\DeclareOptionX{luatex}{\def\dljs@drivernum{1}}
-\DeclareOptionX{dvipdfm}{\def\dljs@drivernum{2}}
-\DeclareOptionX{dvipdfmx}{\def\dljs@drivernum{2}}
-\DeclareOptionX{xetex}{\def\dljs@drivernum{2}}
-\let\dl@YES=y \let\dl@NO=n
-\let\dl@One=1 \let\dl@Zero=0
-\let\dljs@YES=y \let\dljs@NO=n
-\def\dvips@marker{\ifx\dljspresent\dl@NO\@OAction\fi}
-\let\isOpenAction\dl@NO
-\DeclareOptionX{nodljs}{\let\importdljs\dl@NO}
-\let\importdljs\dl@YES
-\let\firstdljs\dl@YES
-\let\dljspresent\dl@NO
-\DeclareOptionX{debug}{\let\dljs@debug\dl@YES}
-\let\dljs@debug\dl@NO
-\DeclareOptionX{execJS}{\let\execjs\dl@YES}
-\let\execjs\dl@NO
-\DeclareOptionX{nopro}{\let\dl@gopro\dl@NO}
-\let\dl@gopro\dl@YES
-\@ifpackageloaded{web}{%
- \ExecuteOptionsX{\eq@driver@name}%
-}{%
- \@ifpackageloaded{eforms}{%
- \ExecuteOptionsX{\ef@driver}%
- }{%
- \ifpdf\ExecuteOptionsX{pdftex}\else
- \ifxetex\ExecuteOptionsX{xetex}\else
- \@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{dvips}}
- {\ExecuteOptionsX{dvipsone}}\fi\fi
- }%
-}
-\DeclareOptionX{reqjs}{\let\dl@reqJS\dl@YES}
-\let\dljs@reqJS\dl@YES
-\DeclareOptionX{!reqjs}{\let\dl@reqJS\dl@NO}
-\DeclareOptionX{usealtadobe}{\def\inputAltAdbFncs{%
- \InputIfFileExists{altadbfncs.def}%
- {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}%
- {\PackageWarning{insdljs}{Cannot find altadbfncs.def.\MessageBreak
- Reinstall or refresh your file name database.}}}}
-\let\inputAltAdbFncs\relax
-\ProcessOptionsX
-\edef\dl@dquoteCat{\the\catcode`\"}
-\catcode`\"=12\relax
-\@ifundefined{dljs@drivernum}{%
- \PackageError{insdljs}%
- {You have not specified dvips, dvipsone, pdftex,\MessageBreak
- dvipdfm, dvipdfmx, or xetex in the option list
- \MessageBreak of the insdljs package}
- {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the insdljs package.}
-}{}
-\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
-\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
-\RequirePackage{hyperref}
-\ifpdf\ifx\pdfextension\@undefined\else
- \protected\def\pdfnames{\pdfextension names }
- \def\pdfpageref{\pdffeedback pageref}\fi\fi
-\RequirePackage{verbatim}
-\usepackage{conv-xkv}[2017/01/03]
-\@ifundefined{dljs@drivernum}{%
- \@ifundefined{eq@drivernum}{%
- \PackageWarning{insdljs}
- {No driver specified, will check for pdftex.}
- \@ifundefined{pdfoutput}{%
- \@ifundefined{@pdfm@mark}{\def\eq@drivernum{2}%
- \def\dljs@drivernum{1}\let\isOpenAction\dl@NO
- \PackageWarning{insdljs}{No pdftex, but detected dvipdfm}}%
- {\PackageWarning{insdljs}{Neither pdftex nor dvipdfm,
- assuming dvips/dvipsone.}%
- \def\eq@drivernum{0}\def\dljs@drivernum{0}%
- \let\isOpenAction\dl@YES}
- }{%
- \ifcase\pdfoutput
- \def\eq@drivernum{1}\def\dljs@drivernum{1}%
- \let\isOpenAction\dl@NO
- \PackageInfo{insdljs}{Pdftex detected.}%
- \else
- \def\eq@drivernum{0}\def\dljs@drivernum{0}%
- \let\isOpenAction\dl@YES
- \PackageWarning{insdljs}{Pdftex engine detected,
- but is outputting dvi. Assuming dvips as the driver.}%
- \fi
- }%
- }{%
- \begingroup
- \count0=\eq@drivernum
- \xdef\dljs@drivernum{\ifcase\count0 0\or1\or2\or0\else0\fi}
- \ifnum\dljs@drivernum=0\global\let\isOpenAction\dl@YES
- \else\global\let\isOpenAction\dl@NO\fi
- \endgroup
- }%
-}{}
-\ifnum\dljs@drivernum=1\relax
- \RequirePackage{everyshi}
-\fi
-\def\AEB@psMrk{[\space}
-\ifx\dl@reqJS\dl@YES
- \def\dl@@reqJS{/Type/Requirement/S/EnableJavaScripts}
- \ifpdf\pdfcatalog{\dl@@reqJS}\else
- \ifxetex\immediate\@pdfm@mark{put @catalog <<\dl@@reqJS>>}\else
- \literalps@out{\AEB@psMrk{Catalog} <<\dl@@reqJS>> /PUT pdfmark}\fi\fi
-\fi
-\providecommand\JS[1]{/S/JavaScript/JS(#1)}
-\providecommand\Named[1]{/S/Named/N/#1}
-\providecommand{\GoTo}{/S/GoTo/D}
-\providecommand{\GoToD}{/S/GoTo/D}
-\providecommand{\GoToR}{/S/GoToR}
-\def\previewMiKTeX{\def\jsR{\string\r}\def\jsT{\string\t}}
-{\obeylines %
-\gdef\js@@R{\noexpand
-}}
-\let\dljstfor\@tfor
-\def\jsR{\string\r\string\n}
-\def\defineJSjsR{\string\r\eqbs^^J}
-\def\jsN{\string\n}
-{\catcode`\^^I\active %
-\gdef^^I{\noexpand^^I}%
-\gdef\js@@T{\noexpand^^I}%
-}% end of \catcode`\^^I
-\let\jsT=\js@@T
-\newwrite\js@verbatim@out
-\def\iwvo#1{\immediate\write\js@verbatim@out{#1}}
-\def\dl@lparen{(}\def\dl@rparen{)}
-\def\jscsDflt{\let\protect\noexpand\let\jslit\string
- \let\~\dl@tilda\let\^\dl@sup
- \def\\{\eqbs\eqbs}\def\cs##1{\\\\##1}%
- \def\r{\\r}\def\t{\\t}\def\n{\\n}%
- \let\{\dl@lBrace\let\}\dl@rBrace
- \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi
- \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen
- \let\r@paren\dl@rparen\else
- \let\l@paren\@empty\let\r@paren\@empty\fi
-}
-\def\jscsDLJS{\let\protect\noexpand\let\jslit\string
- \let\~\dl@tilda\let\^\dl@sup
- \ifxetex\def\\{\eqbs\eqbs}\else\def\\{\eqbs}\fi\def\cs##1{\\\\##1}%
- \def\r{\\r}\def\t{\\t}\def\n{\\n}%
- \let\{\dl@lBrace\let\}\dl@rBrace
- \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi
- \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen
- \let\r@paren\dl@rparen\else
- \let\l@paren\@empty\let\r@paren\@empty\fi
-}
-\ifpdf\let\jscsDLJS\jscsDflt\fi
-\let\dl@JSCS\jscsDflt
-\newcommand{\flJSStr}{\bgroup
- \let\dl@JSCS\jscsDflt
- \@ifstar{\def\isStar{*}\dl@defJSStr}
- {\let\isStar\relax\dl@defJSStr}}
-\let\fieldJSStr\flJSStr
-\let\defineJSStr\flJSStr
-\newcommand{\dlJSStr}{\bgroup
- \@ifstar{\def\isStar{*}\let\dl@JSCS\jscsDLJS\dl@defJSStr}
- {\let\isStar\relax\let\dl@JSCS\jscsDLJS\dl@defJSStr}}
-\define@key{jsstr}{quotes}[]{\let\jsstr@quotes\dl@One}
-\define@key{jsstr}{noquotes}[]{\let\jsstr@quotes\dl@Zero}
-\define@key{jsstr}{parens}[]{\let\jsstr@parens\dl@One}
-\define@key{jsstr}{noparens}[]{\let\jsstr@parens\dl@Zero}
-\let\jsstr@quotes\dl@One\let\jsstr@parens\dl@One
-\define@key{jsstr}{useUni}[]{\let\jsstr@useUni\dl@One}
-\let\jsstr@useUni\dl@Zero
-\newcommand{\dl@defJSStr}[3][quotes]{\def\dl@argi{#1}\ifx\dl@argi\@empty
- \else\ifx\dl@JSCS\jscsDLJS\let\jsstr@parens\dl@Zero\fi
- \setkeys{jsstr}{#1}\fi\dl@JSCS
- \ifx\jsstr@quotes\dl@One
- \xdef#2{\l@paren"#3"\r@paren}\else
- \xdef#2{\l@paren#3\r@paren}\fi
- \if\isStar*\gdef\dl@afterAction{{\Hy@unicodefalse\expandafter
- \pdfstringdef\expandafter#2\expandafter{#2}}}\else
- \global\let\dl@afterAction\relax\fi
- \aftergroup\dl@afterAction\egroup}
-\def\dlTC#1{try{#1}catch(e){}}
-\def\js@R{\ifcase\dljs@drivernum^^J\else\jsR\fi}
-\def\db#1\db{\ifx\dljs@debug\dl@YES\space\space\space#1\js@R\fi}
-\newcounter{dljs@cnt}
-\newcounter{dljssegs}\setcounter{dljssegs}{2}
-\newenvironment{js@verbatimwrite}% writes to current \js@verbatim@out
- {%
- \@bsphack
- \let\do\@makeother\dospecials\catcode`\^^M\active
- \def\verbatim@processline{%
- \immediate\write\js@verbatim@out{\the\verbatim@line}}%
- \verbatim@start}{\@esphack}
-\def\closejs@verbatim@out{\immediate\closeout\js@verbatim@out}
-\begingroup
-\catcode`\@=0 @catcode`@\=12
-@gdef@eqbs{\}
-@gdef@ccpdfmark{@gdef@eqesc{\}@gdef@eqesci{}}
-@endgroup
-\begingroup
- \catcode`<=1 \catcode`\>=2 \@makeother\{ \@makeother\}
-\gdef\definebraces<\def\{<\eqesc{>\def\}<\eqesc}>>
-\endgroup
-\def\eqdospecials{\do\ \do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\~}
-\begingroup
-\catcode`\~=\active \lccode`\~=`\^^M
-\lowercase{\endgroup
- \def\eqverbatim@#1~{\verbatim@@#1*end\@nil}%
- \def\eqverbatim@@#1*end{%
- \verbatim@addtoline{#1}%
- \futurelet\dl@next\eqverbatim@@@}%
- \def\eqverbatim@@@#1\@nil{%
- \ifx\dl@next\@nil
- \verbatim@processline
- \verbatim@startline
- \let\dl@next\eqverbatim@
- \else
- \def\@tempa##1*end\@nil{##1}%
- \@temptokena{*end}%
- \def\dl@next{\expandafter\verbatim@test\@tempa#1\@nil~}%
- \fi\dl@next}%
-}%
-\def\jsexpverbatimwrite
-{% writes to current \js@verbatim@out
- \@bsphack
- \ccpdfmark
- \catcode`\<=12 \catcode`\>=12
- \input{dljscc.def}%
- \let\verbatim@=\eqverbatim@
- \let\verbatim@@=\eqverbatim@@
- \let\verbatim@@@=\eqverbatim@@@
- \let\do\@makeother\eqdospecials%
- \catcode`\^^M=\active\catcode`\^^I=12%
- \def\verbatim@processline{%
- \edef\expVerb{\the\verbatim@line}%
- \immediate\write\js@verbatim@out{\expVerb}}%
- \verbatim@start%
-}
-\def\endjsexpverbatimwrite{\immediate\closeout\js@verbatim@out\@esphack}
-\let\js@Path\@empty
-\def\insPath#1{\def\js@Path{#1}}
-\begingroup
-\catcode`\{=12 \catcode`\}=12 \catcode`\<=1 \catcode`\>=2
-\gdef\dl@lBrace<\string\{> \gdef\dl@rBrace<\string\}>
-\gdef\dl@tilda<\string~> \gdef\dl@sup<\string^>
-\endgroup
-\def\makeJSspecials{%
- \def\\{\eqbs\eqbs}% % define \\ to be \\
- \let\jslit\string
- \let\{\dl@lBrace\let\}\dl@rBrace
- \let\u\@empty
- \def\({\eqbs(}\def\){\eqbs)}%
- \makespecialJS % make \r=\jsR and \t=\jsT
-}
-\def\dl@fitpage{/Fit}
-\def\dl@actualsize{/XYZ null null 1.0} %{/XYZ -32768 -32768 1.0}
-\def\dl@fitwidth{/FitH null} %{/FitH -32768}
-\def\dl@fitheight{/FitV null} %{/FitV -32768}
-\def\dl@fitvisible{/FitBH null} %{/FitBH -32768}
-\def\dl@inheritzoom{/XYZ 0 0 0}
-\def\dl@mag#1{/XYZ null null #1}
-\edef\dl@Page#1{\ifcase\dljs@drivernum
- {Page#1}\or\noexpand\pdfpageref#1\space\space 0 R\or
- @page#1\fi}
-\def\dl@preProcDefns{\let\Page\dl@Page\let\mag\dl@mag
- \let\fitpage\dl@fitpage\let\actualsize\dl@actualsize
- \let\fitwidth\dl@fitwidth\let\fitheight\dl@fitheight
- \let\fitvisible\dl@fitvisible\let\inheritzoom\dl@inheritzoom
-}
-\let\aeb@additionalOpenAction\@empty
-\let\aeb@addActionCode\@empty
-\let\addActionObj\@empty
-\let\aebpopentoks\@empty
-\let\aebpFA\dl@NO
-\def\aebp@rightDelimiters{}
-\newcommand{\addToDocOpen}[1]{%
- \ifx\aebpFA\dl@NO
- \g@addto@macro\aebpopentoks{#1}%
- \def\aeb@additionalOpenAction{/Next {pubAddToDocOpen}}%
-\ifpdf
- \def\aeb@addActionCode{\immediate\pdfobj{<<
- \aebpopentoks\aebp@rightDelimiters >>}%
- \edef\addActionObj{\the\pdflastobj\space 0 R}}%
-\else\ifxetex
- \def\aeb@addActionCode{\immediate
- \@pdfm@mark{obj @objAddActionObj
- << \aebpopentoks\aebp@rightDelimiters >> }}%
- \def\addActionObj{@objAddActionObj}%
-\else % postscript
- \def\aeb@addActionCode{\literalps@out{%
- \AEB@psMrk/_objdef {pubAddToDocOpen}
- /type/dict /OBJ pdfmark^^J%
- \AEB@psMrk{pubAddToDocOpen} <<
- \aebpopentoks\aebp@rightDelimiters >> /PUT pdfmark}}%
- \def\addActionObj{{pubAddToDocOpen}}%
-\fi\fi
- \global\let\aebpFA\dl@YES
- \let\@pdfstartview\@empty
- \else
- \edef\aebp@dljstmp{\aebp@rightDelimiters}%
- \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
- \g@addto@macro\aebpopentoks{/Next << #1 }%
- \fi
-}
-\def\dljs@OpenActions{/OpenAction \addActionObj}
-\def\dljs@setOpenActions{\bgroup\makeJSspecials\dl@preProcDefns
- \aeb@addActionCode
- \ifpdf\pdfcatalog{\dljs@OpenActions}\else
- \ifxetex\immediate
- \@pdfm@mark{put @catalog <<\dljs@OpenActions>>}\else
- \literalps@out{\AEB@psMrk
- {Catalog} <<\dljs@OpenActions>> /PUT pdfmark}\fi\fi\egroup}
-\@ifpackageloaded{aeb_pro}{}
- {\AtBeginDocument{\ifx\aebpFA\dl@YES\expandafter
- \dljs@setOpenActions\fi}}
-\let\@CloseAction\@empty
-\def\@OAction@pdfmark{\literalps@out{%
- \AEB@psMrk{ThisPage} << /AA << /O << \theFirstAction\space
- \opentoks\@rightDelimiters >> \@CloseAction >> >> /PUT pdfmark}}
-\def\@POAction@pdfmark{\literalps@out{%
- \AEB@psMrk{ThisPage} << /AA << \@thisOpenAction
- \@thisCloseAction >> >> /PUT pdfmark}%
-}
-\def\@OAction@pdftex{%
- \ifx\isOpenAction\dl@YES
- \xdef\pdftexOAction{/AA << /O << \theFirstAction\space
- \opentoks\@rightDelimiters >> \@CloseAction >>}%
- \AtNextShipout{\pdfpageattr=\expandafter{\pdftexOAction}}%
- \fi
-}
-\def\@POAction@pdftex{%
- \xdef\thisPageActionpdftex{/AA << \@thisOpenAction
- \@thisCloseAction >>}%
- \AtNextShipout{\pdfpageattr=\expandafter{\thisPageActionpdftex}}%
-}
-\def\@OAction@dvipdfm{\ifx\isOpenAction\dl@YES
- \@pdfm@mark{put @thispage << /AA << /O << \theFirstAction\space
- \opentoks\@rightDelimiters >> \@CloseAction >> >>}\fi
-}
-\def\@POAction@dvipdfm{%
- \@pdfm@mark{put @thispage << /AA << \@thisOpenAction
- \@thisCloseAction >> >>}%
-}
-\ifcase\dljs@drivernum
- \let\@OAction\@OAction@pdfmark
- \let\@POAction\@POAction@pdfmark
- \gdef\theFirstAction{/S/JavaScript/JS (\the\importfdftoks)}
- \let\isOpenAction\dl@YES
-\or
- \let\@OAction\@OAction@pdftex
- \let\@POAction\@POAction@pdftex
- \AtBeginDocument{\@OAction@pdftex}
-\or
- \let\@OAction\@OAction@dvipdfm
- \let\@POAction\@POAction@dvipdfm
- \AtBeginDocument{\@OAction@dvipdfm}
-\fi
-\def\opentoks{}
-\def\makespecialJS{%
- \let\r\jsR\let\t\jsT\let\n\jsN}
-\def\@rightDelimiters{}
-\def\OpenAction{\@ifnextchar\Next
- {\expandafter\@OpenAction\@gobble}{\@OpenAction}}
-\def\@OpenAction#1{%
- \ifx\isOpenAction\dl@NO
- {\makespecialJS\xdef\theFirstAction{#1}}%
- \global\let\isOpenAction\dl@YES
- \else
- \edef\dljstmp{\@rightDelimiters}%
- \xdef\@rightDelimiters{\dljstmp >> }%
- {\makespecialJS\xdef\dljstmp{\opentoks /Next << #1 }}%
- \xdef\opentoks{\dljstmp}%
- \fi
- \@nextOpenAction
-}
-\def\@nextOpenAction{\@ifnextchar\Next{\expandafter
- \@OpenAction\@gobble}{}}
-\def\protectJSCtrls{\def\r{\string\r\string\n}%
- \def\t{\string\t}\def\n{\string\n}}
-\def\dljs@tstlp{\@ifnextchar\bgroup
- {\let\dljs@multi\dl@YES\dljs@tstlpi}%
- {\let\dljs@multi\dl@NO\dljs@tstlpi}}
-\def\dljs@tstlpi#1\@nil{}%
-\def\dljs@bldScript#1#2#3{{%
- \dljs@tstlp#1\@nil
- \ifx\dljs@multi\dl@NO{\protectJSCtrls\xdef#3{/#2<<#1>>}}\else
- \toks0={}\let\dljs@rAngles\@empty\count0=0
- \@tfor\dljs@arg:=#1\do{%
- \ifnum\count0=0
- \toks0=\expandafter{\dljs@arg}\else
- \toks2=\expandafter{\dljs@arg}%
- \edef\holdtokstmp{\the\toks0
- /Next<<\the\toks2 }%
- \edef\dljs@rAngles{\dljs@rAngles\space>>}%
- \toks0=\expandafter{\holdtokstmp}%
- \fi
- \advance\count0by1
- }%
- {\protectJSCtrls\xdef#3{/#2<<\the\toks0 \dljs@rAngles>>}%
- \xdef#3{#3}}%
- \fi
-}}
-\newcommand{\thisPageAction}[2]{%
- \let\@CloseAction\@empty
- \let\@thisOpenAction\@empty
- \let\@thisCloseAction\@empty
- \def\dljs@argi{#1}\def\dljs@argii{#2}%
- \ifnum\value{page}=1\relax
- \ifx\dljs@argii\@empty\else
- \dljs@bldScript{#2}{C}{\@CloseAction}\fi
- \ifx\dljs@argi\@empty\else\dljs@tstlp#1\@nil
- \ifx\dljs@multi\dl@NO\OpenAction{#1}\else
- \@tfor\dljs@arg:=#1\do{\expandafter
- \OpenAction\expandafter{\dljs@arg}%
- }\fi
- \fi
- \else
- \ifx\dljs@argi\@empty\else
- \dljs@bldScript{#1}{O}{\@thisOpenAction}\fi
- \ifx\dljs@argii\@empty\else
- \dljs@bldScript{#2}{C}{\@thisCloseAction}\fi
- \@POAction
- \fi
-}
-\let\insdljsloadVar\@empty
-\newenvironment{insDLJS}[3][]
-{%
- \gdef\detectdljs{#1}\gdef\dljsBase{#2}%
- \ifxetex{\def\1{\string\1}\def\2{\string2}%
- \def\3{\string\3}\xdef\dljsName{#3}}\else
- \Hy@unicodefalse\pdfstringdef{\dljsName}{#3}\fi
-\ifx\detectdljs\@empty
- \stepcounter{dljs@cnt}%
- \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}%
- \edef\insdljsloadVar{var \detectdljs=true;}%
- \addtocounter{dljs@cnt}{-1}%
-\fi
- \global\let\multisegments\dl@NO\setcounter{dljssegs}{2}%
- \global\dljsobjtoks={}%
- \expandafter\ifx\csname dljs\dljsBase\endcsname\relax
- \else\@insjserrDuplicate\fi
- \ifcase\dljs@drivernum
- \let\insert@DLJS=\insert@DLJS@pdfmark
- \let\endinsDLJS=\endinsert@DLJS@pdfmark
- \let\newsegment=\newsegment@pdfmark
- \let\endnewsegment=\endnewsegment@pdfmark
- \or
- \let\insert@DLJS=\insert@DLJS@pdftex
- \let\endinsDLJS=\endinsert@DLJS@pdftex
- \let\newsegment=\newsegment@pdftex
- \let\endnewsegment=\endnewsegment@pdftex
- \or
- \let\insert@DLJS=\insert@DLJS@dvipdfm
- \let\endinsDLJS=\endinsert@DLJS@dvipdfm
- \let\newsegment=\newsegment@dvipdfm
- \let\endnewsegment=\endnewsegment@dvipdfm
- \fi
- \insert@DLJS
-}{}
-\newenvironment{insDLJS*}[2][]
-{%
- \gdef\detectdljs{#1}\gdef\dljsBase{#2}%
-\ifx\detectdljs\@empty
- \stepcounter{dljs@cnt}%
- \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}%
- \edef\insdljsloadVar{var \detectdljs=true;}%
- \addtocounter{dljs@cnt}{-1}%
-\fi
- \global\let\multisegments\dl@YES\setcounter{dljssegs}{2}%
- \global\dljsobjtoks={}%
- \expandafter\ifx\csname dljs\dljsBase\endcsname\relax
- \else\@insjserrDuplicate\fi
- \ifcase\dljs@drivernum
- \let\insert@DLJS=\insert@DLJS@pdfmark
- \expandafter
- \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdfmark
- \let\newsegment=\newsegment@pdfmark
- \let\endnewsegment=\endnewsegment@pdfmark
- \or
- \let\insert@DLJS=\insert@DLJS@pdftex
- \expandafter
- \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdftex
- \let\newsegment=\newsegment@pdftex
- \let\endnewsegment=\endnewsegment@pdftex
- \or
- \let\insert@DLJS=\insert@DLJS@dvipdfm
- \expandafter
- \let\csname endinsDLJS*\endcsname\endinsert@DLJS@dvipdfm
- \let\newsegment=\newsegment@dvipdfm
- \let\endnewsegment=\endnewsegment@dvipdfm
- \fi
- \insert@DLJS
-}{}
-\def\@insjserrDuplicate{%
- \typeout{^^J! insdljs Package error.}
- \typeout{! insDLJS environment: On line number \the\inputlineno,}
- \typeout{! the base name `\dljsBase' has already been chosen.}
- \typeout{! A DLJS earlier defined has been overwritten!}
- \typeout{! Choose another name for the first required argument}
- \typeout{! of the insDLJS environment.^^J}
-}
-\newif\ifisdljs \isdljsfalse
-\begingroup
-\catcode`\~=12 \catcode`\#=12
-\gdef\efdlspecials{\catcode`\~=12 \catcode`\#=12}
-\endgroup
-\def\ckivspace#1{\if\noexpand#1\space\else\expandafter#1\fi}
-\let\DLspecialDefs\@empty
-\def\fdfAfterheader
-{%
- \iwvo{\string\begingroup\string\efdlspecials}
- \iwvo{\string\DLspecialDefs}
- \iwvo{\string\isdljstrue}
- \iwvo{\string\makeatletter}
- \iwvo{\string\immediate\string\openout\string
-\js@verbatim@out=\string\js@Path\space\dljsBase.fdf}%
- \iwvo{\string\begin{jsexpverbatimwrite}}
- \iwvo{\string\firstFDFline}
- \iwvo{1 0 obj}
- \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R /After 3 0 R >> >> >> }
- \iwvo{endobj}
- \iwvo{2 0 obj}
-\ifpdfmarkup
- \iwvo{[ (ExecJS \dljsBase) (var _\dljsBase\space = true;) ] }\else
- \iwvo{[ (00 ExecJS \dljsBase) (var _\dljsBase\space = true;) ] }\fi
- \iwvo{endobj}
- \iwvo{3 0 obj}
- \iwvo{<<>>}
- \iwvo{stream}
-}
-\newenvironment{execJS}[1]
-{%
- \gdef\detectdljs{\string_#1}\gdef\dljsBase{#1}%
- \global\dljsobjtoks={}%
- \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
- \ifx\importdljs\dl@YES\ifx\execjs\dl@YES
- \ifx\dl@gopro\dl@YES
- \ifnum\dljs@drivernum=0\relax
- \addImportAnFDF\importAnFDFTemplate
- \else
- \OpenAction{/S/JavaScript/JS (\importAnFDFTemplate)}%
- \fi\fi
- \fi\fi
- \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \fdfAfterheader
- \js@verbatimwrite
-}{%
- \fdfendstreamobj
- \endjs@verbatimwrite
- \fdftrailer
- \closejs@verbatim@out
- \expandafter\xdef\csname\dljsBase OBJ\endcsname{\the\dljsobjtoks}%
- \edef\@dljstmp{\noexpand\AtBeginDocument{%
- \noexpand\input{\js@Path\dljsBase.djs}}}\@dljstmp
-}
-\newtoks\JStoks
-\newenvironment{defineJS}[2][]
-{%
- \expandafter\@ifundefined\expandafter{%
- \expandafter\@gobble\string#2}{}{%
- \PackageWarning{insdljs}{The command
- \string#2 already defined}}%
- \gdef\defineJSArg{#2}\JStoks={}%
- \def\verbatim@processline
- {%
- \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
- \global\JStoks=\expandafter{\JS@temp}%
- }%
- \let\do\@makeother\dospecials\catcode`\^^M\active
- #1%
- \verbatim@start
-}{\gdef\eq@JStemp{\expandafter\edef\defineJSArg{\the\JStoks}}%
- \aftergroup\eq@JStemp}
-\newenvironment{@defineJS}[2][]
-{%
- \gdef\defineJSArg{#2}\JStoks={}%
- \def\verbatim@processline
- {%
- \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
- \global\JStoks=\expandafter{\JS@temp}%
- }%
- \let\do\@makeother\dospecials\catcode`\^^M\active
- #1%
- \verbatim@start
-}{\gdef\eq@JStemp{\expandafter\edef\defineJSArg{\the\JStoks}}%
- \aftergroup\eq@JStemp}
-\newenvironment{localJS}[1][]{}{\ifvmode\else\unskip\fi}
-\newenvironment{willClose}[1][]
-{\@defineJS[#1]{\will@Close}}
-{\end@defineJS}
-\let\will@Close\@empty
-\newenvironment{willSave}[1][]
-{\@defineJS[#1]{\will@Save}}
-{\end@defineJS}
-\let\will@Save\@empty
-\newenvironment{didSave}[1][]
-{\@defineJS[#1]{\did@Save}}
-{\end@defineJS}
-\let\did@Save\@empty
-\newenvironment{willPrint}[1][]
-{\@defineJS[#1]{\will@Print}}
-{\end@defineJS}
-\let\will@Print\@empty
-\newenvironment{didPrint}[1][]
-{\@defineJS[#1]{\did@Print}}
-{\end@defineJS}
-\let\did@Print\@empty
-\def\dljs@willDidActions{/AA <<
- \ifx\test@will@Close\@empty\else/WC <<
- \JS{\will@Close} >>\fi
- \ifx\test@will@Save\@empty\else/WS <<
- \JS{\will@Save} >>\fi
- \ifx\test@did@Save\@empty\else/DS <<
- \JS{\did@Save} >>\fi
- \ifx\test@will@Print\@empty\else/WP <<
- \JS{\will@Print} >>\fi
- \ifx\test@did@Print\@empty\else/DP <<
- \JS{\did@Print} >>\fi
- >>
-}
-\newcommand\dljs@setDocActions{%
- \edef\test@will@Close{\will@Close}%
- \edef\test@will@Save{\will@Save}%
- \edef\test@did@Save{\did@Save}%
- \edef\test@will@Print{\will@Print}%
- \edef\test@did@Print{\did@Print}%
- \ifpdf\pdfcatalog{\dljs@willDidActions}\else
- \ifxetex\immediate
- \@pdfm@mark{put @catalog <<\dljs@willDidActions>>}\else
- \literalps@out{\AEB@psMrk
- {Catalog} <<\dljs@willDidActions>> /PUT pdfmark}\fi\fi
-}
-\@ifpackageloaded{aeb_pro}{}
- {\AtBeginDocument{\dljs@setDocActions}}
-\begingroup
-\catcode`\%=12
-\gdef\firstFDFline{%FDF-1.2}
-\gdef\lastFDFline{%%EOF}
-\endgroup
-\def\fdfheader
-{%
- \iwvo{\string\begingroup\string\efdlspecials}
- \iwvo{\string\isdljstrue}
- \iwvo{\string\makeatletter}
- \iwvo{\string\immediate\string\openout\string
- \js@verbatim@out=\string\js@Path\space\dljsBase.fdf}%
- \iwvo{\string\begin{jsexpverbatimwrite}}
- \iwvo{\string\firstFDFline}
- \iwvo{1 0 obj}
- \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R >> >> >>}
- \iwvo{endobj}
- \iwvo{2 0 obj}
- \iwvo{[ \string\csname\string\@gobble\space\dljsBase%
- OBJ\string\endcsname]}
- \iwvo{endobj}
-}
-\def\fdfbeginstreamobj
-{%
- \iwvo{\thedljssegs\space 0 obj}
- \iwvo{<<>>}
- \iwvo{stream}
- \ifx\insdljsloadVar\@empty\else
- \iwvo{\insdljsloadVar}
- \global\let\insdljsloadVar\@empty
- \fi
-}
-\def\fdfendstreamobj{%
- \iwvo{endstream}
- \iwvo{endobj}
-}
- \def\fdftrailer{%
- \iwvo{trailer}
- \iwvo{<< /Root 1 0 R >>}
- \iwvo{\string\lastFDFline}
- \iwvo{*end{jsexpverbatimwrite}}
- \iwvo{\string\endgroup}
-}
-\newtoks\importfdftoks \importfdftoks={}
-\newtoks\dljsobjtoks \dljsobjtoks={}
-\def\importAnFDFTemplate{%
-if(typeof \detectdljs\space == "undefined")\jsR\jsT
- ( app.viewerVersion > 8 ) ? %
- aebTrustedFunctions( this, aebImportAnFDF, %
- "\js@Path\dljsBase.fdf") : %
- this.importAnFDF("\js@Path\dljsBase.fdf");\jsR
-}
-\def\addImportAnFDF#1{%
- \ifx\importdljs\dl@YES
- \edef\importAnFDFtmp{\the\importfdftoks#1}%
- \global\importfdftoks=\expandafter{\importAnFDFtmp}%
- \fi
-}
-\def\importAnFDF{\ifx\importdljs\dl@YES\@OAction\fi}
-\newenvironment{newsegment@pdfmark}[1]{%
- \addtocounter{dljssegs}{1}%
- \addtocounter{dljs@cnt}{1}%
- \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}%
- \edef\@dljstmp{\the\dljsobjtoks(\dljsName)
- \thedljssegs\space 0 R\space}
- \global\dljsobjtoks=\expandafter{\@dljstmp}
- \fdfbeginstreamobj
- \js@verbatimwrite
-}{%
- \fdfendstreamobj
- \endjs@verbatimwrite
-}
-\def\insert@DLJS@pdfmark{%
- \global\let\dljspresent\dl@YES
- \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
- \ifx\importdljs\dl@YES\ifx\dl@gopro\dl@YES
- \addImportAnFDF\importAnFDFTemplate
- \fi\fi
- \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \fdfheader
- \ifx\multisegments\dl@NO\expandafter
- \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi
-}
-\def\endinsert@DLJS@pdfmark{%
- \ifx\importdljs\dl@YES
- \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
- \fdftrailer
- \closejs@verbatim@out
- \expandafter\xdef\csname\dljsBase%
- OBJ\endcsname{\the\dljsobjtoks}%
- \edef\@dljstmp{\noexpand\AtBeginDocument{%
- \noexpand\input{\js@Path\dljsBase.djs}}}%
- \@dljstmp
- \ifx\firstdljs\dl@YES
- \AtBeginDocument{\edef\@dljstmp{\importAnFDF}%
- \@dljstmp}\global\let\firstdljs\dl@NO
- \fi
- \fi
-}
-\begingroup
-\catcode`\@=0 @catcode`@\=12
-@gdef@ccpdftex{@gdef@eqesc{\\}@gdef@eqesci{\}}
-@endgroup
-\def\begindljs
-{%
- \iwvo{\string\begingroup\string\efdlspecials}
- \iwvo{\string\isdljstrue}
- \iwvo{\string\makeatletter}
- {\uccode`c=`\%\uppercase{%
- \iwvo{\string\obeyspaces\string\obeylines
- \string\let\string^\string^M=\string\jsR c}}}
- {\escapechar=-1 \lccode`C=`\%\lowercase{%
- \iwvo{\string\\catcode`\string\\"=12C}}}
-}
-\def\beginseg
-{%
- {\lccode`P=`\{\lccode`C=`\%\lowercase{%
- \iwvo{\string\gdef\string\dljs\dljsBase\roman{dljssegs}PC}}}%
-}
-\def\endseg
-{%
- {\uccode`c=`\%\uccode`p=`\}\uppercase{\iwvo{pc}}}%
-}
-\def\enddljs
-{%
- \iwvo{\string\endgroup}%
-}
-\def\@roman#1{\romannumeral#1}
-\def\write@objs
-{%
-\iwvo{\begingroup}
-\iwvo{\string\catcode`\string\<=12 }
-\iwvo{\string\catcode`\string\>=12 }
-{\lccode`C=`\%\lowercase{\iwvo{\string\ccpdftex C}}}
-{\lccode`C=`\%\lowercase{\iwvo{%
- \string\input{dljscc.def}C\the\dljsobjtoks}}}
-\iwvo{\endgroup}
-}
-\newenvironment{newsegment@pdftex}[1]{%
- \addtocounter{dljssegs}{1}%
- \addtocounter{dljs@cnt}{1}%
- \edef\tmp{^^J\string\immediate\string\pdfobj{ << /S/JavaScript/JS%
- (\string\dljs\dljsBase\roman{dljssegs}) >> }}%
- \edef\@dljstmp{\the\dljsobjtoks\tmp}%
- \global\dljsobjtoks=\expandafter{\@dljstmp}%
- \edef\tmp{^^J\string\xdef\string\obj\dljsBase\roman{dljssegs}%
- {\string\the\string\pdflastobj\string\space 0 R}}%
- \edef\@dljstmp{\the\dljsobjtoks\tmp}%
- \global\dljsobjtoks=\expandafter{\@dljstmp}%
- \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}%
- \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}%
- \edef\dljspdftextmp
- {\the\importfdftoks (\curr@Cnt\space\dljsName)
- \noexpand\csname obj\dljsBase\roman{dljssegs}%
- \noexpand\endcsname\space}%
- \global\importfdftoks=\expandafter{\dljspdftextmp}%
- \beginseg
- \js@verbatimwrite
-}{%
- \endjs@verbatimwrite
- \endseg
-}
-\newenvironment{insert@DLJS@pdftex}{%
- \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
- \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \begindljs
- \ifx\multisegments\dl@NO\expandafter
- \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi
-}{%
- \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
- \enddljs
- \write@objs
- \endjs@verbatimwrite
- \closejs@verbatim@out
- \edef\@dljstmp{\noexpand\AtBeginDocument{%
- \noexpand\input{\js@Path\dljsBase.djs}}}%
- \@dljstmp
- \ifx\importdljs\dl@YES
- \ifx\firstdljs\dl@YES
- \AtEndDocument{\edef\@dljstmp{\setDLJSRef@pdftex}\@dljstmp}
- \global\let\firstdljs\dl@NO
- \fi
- \fi
-}
-\def\setDLJSRef@pdftex
-{%
- \noexpand\immediate\noexpand\pdfobj {%
- << /Names [\the\importfdftoks] >> }%
- \edef\noexpand\objNames{\noexpand\the\noexpand\pdflastobj\space 0 R}%
- \pdfnames {/JavaScript \noexpand\objNames}%
-}
-\newenvironment{newsegment@dvipdfm}[1]
-{%
- \addtocounter{dljssegs}{1}%
- \addtocounter{dljs@cnt}{1}%
- \edef\tmp{^^J\string\immediate\string
- \csname\space @pdfm@mark\string\endcsname
- {obj @obj\dljsBase\roman{dljssegs}\space << /S/JavaScript%
- /JS(\string\dljs\dljsBase\roman{dljssegs}) >> }}%
- \edef\@dljstmp{\the\dljsobjtoks\space\tmp}%
- \global\dljsobjtoks=\expandafter{\@dljstmp}%
- \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}%
- {\def\1{\string\1}\def\2{\string2}%
- \def\3{\string\3}\xdef\dljsName{#1}}%
- \edef\dljspdftextmp
- {\the\importfdftoks (\curr@Cnt\space \dljsName) %
- @obj\dljsBase\roman{dljssegs}\space}%
- \global\importfdftoks=\expandafter{\dljspdftextmp}%
- \beginseg
- \js@verbatimwrite
-}{%
- \endjs@verbatimwrite
- \endseg
-}
-\def\setDLJSRef@dvipdfm
-{%
- \immediate\@pdfm@mark{obj @objnames %
- << /Names [\the\importfdftoks] >> }%
- \@pdfm@mark{put @names %
- << /JavaScript @objnames >> }%
-}
-\newenvironment{insert@DLJS@dvipdfm}
-{%
- \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
- \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \begindljs
- \ifx\multisegments\dl@NO\expandafter\newsegment\expandafter{%
- \expandafter\dljsName\expandafter}\fi
-}{%
- \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
- \enddljs
- \write@objs
- \endjs@verbatimwrite
- \closejs@verbatim@out
- \edef\@dljstmp{\noexpand\AtBeginDocument{%
- \noexpand\input{\js@Path\dljsBase.djs}}}%
- \@dljstmp
- \ifx\importdljs\dl@YES
- \ifx\firstdljs\dl@YES
- \AtBeginDocument{\setDLJSRef@dvipdfm}%
- \global\let\firstdljs\dl@NO
- \fi
- \fi
-}
-\catcode`\"=\dl@dquoteCat
-\inputAltAdbFncs
-\endinput
-%%
-%% End of file `insdljs.sty'.
+%%
+%% This is file `insdljs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% insdljs.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% insdljs.sty package, %%
+%% Copyright (C) 2001-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{insdljs}
+ [2018/07/21 v2.4 Insert Document Level JavaScripts (dps)]
+\usepackage{xkeyval}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{ifluatex}
+\DeclareOptionX{dvipsone}{\def\dljs@drivernum{0}%
+ \AtBeginDocument{\dvips@marker}}
+\DeclareOptionX{dvips}{\def\dljs@drivernum{0}%
+ \AtBeginDocument{\dvips@marker}}
+\DeclareOptionX{textures}{\def\dljs@drivernum{0}%
+ \AtBeginDocument{\dvips@marker}}
+\DeclareOptionX{pdftex}{\def\dljs@drivernum{1}}
+\DeclareOptionX{luatex}{\def\dljs@drivernum{1}}
+\DeclareOptionX{dvipdfm}{\def\dljs@drivernum{2}}
+\DeclareOptionX{dvipdfmx}{\def\dljs@drivernum{2}}
+\DeclareOptionX{xetex}{\def\dljs@drivernum{2}}
+\let\dl@YES=y \let\dl@NO=n
+\let\dl@One=1 \let\dl@Zero=0
+\let\dljs@YES=y \let\dljs@NO=n
+\def\dvips@marker{\ifx\dljspresent\dl@NO\@OAction\fi}
+\let\isOpenAction\dl@NO
+\DeclareOptionX{nodljs}{\let\importdljs\dl@NO}
+\let\importdljs\dl@YES
+\let\firstdljs\dl@YES
+\let\dljspresent\dl@NO
+\DeclareOptionX{debug}{\let\dljs@debug\dl@YES}
+\let\dljs@debug\dl@NO
+\DeclareOptionX{execJS}{\let\execjs\dl@YES}
+\let\execjs\dl@NO
+\DeclareOptionX{nopro}{\let\dl@gopro\dl@NO}
+\let\dl@gopro\dl@YES
+\@ifpackageloaded{web}{%
+ \ExecuteOptionsX{\eq@driver@name}%
+}{%
+ \@ifpackageloaded{eforms}{%
+ \ExecuteOptionsX{\ef@driver}%
+ }{%
+ \ifpdf\ExecuteOptionsX{pdftex}\else
+ \ifxetex\ExecuteOptionsX{xetex}\else
+ \@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{dvips}}
+ {\ExecuteOptionsX{dvipsone}}\fi\fi
+ }%
+}
+\DeclareOptionX{reqjs}{\let\dl@reqJS\dl@YES}
+\let\dljs@reqJS\dl@YES
+\DeclareOptionX{!reqjs}{\let\dl@reqJS\dl@NO}
+\DeclareOptionX{usealtadobe}{\def\inputAltAdbFncs{%
+ \InputIfFileExists{altadbfncs.def}%
+ {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}%
+ {\PackageWarning{insdljs}{Cannot find altadbfncs.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}}
+\let\inputAltAdbFncs\relax
+\ProcessOptionsX
+\edef\dl@dquoteCat{\the\catcode`\"}
+\catcode`\"=12\relax
+\@ifundefined{dljs@drivernum}{%
+ \PackageError{insdljs}%
+ {You have not specified dvips, dvipsone, pdftex,\MessageBreak
+ dvipdfm, dvipdfmx, or xetex in the option list
+ \MessageBreak of the insdljs package}
+ {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the insdljs package.}
+}{}
+\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
+\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
+\RequirePackage{hyperref}
+\ifpdf\ifx\pdfextension\@undefined\else
+ \protected\def\pdfnames{\pdfextension names }
+ \def\pdfpageref{\pdffeedback pageref}\fi\fi
+\RequirePackage{verbatim}
+\usepackage{conv-xkv}[2017/01/03]
+\@ifundefined{dljs@drivernum}{%
+ \@ifundefined{eq@drivernum}{%
+ \PackageWarning{insdljs}
+ {No driver specified, will check for pdftex.}
+ \@ifundefined{pdfoutput}{%
+ \@ifundefined{@pdfm@mark}{\def\eq@drivernum{2}%
+ \def\dljs@drivernum{1}\let\isOpenAction\dl@NO
+ \PackageWarning{insdljs}{No pdftex, but detected dvipdfm}}%
+ {\PackageWarning{insdljs}{Neither pdftex nor dvipdfm,
+ assuming dvips/dvipsone.}%
+ \def\eq@drivernum{0}\def\dljs@drivernum{0}%
+ \let\isOpenAction\dl@YES}
+ }{%
+ \ifcase\pdfoutput
+ \def\eq@drivernum{1}\def\dljs@drivernum{1}%
+ \let\isOpenAction\dl@NO
+ \PackageInfo{insdljs}{Pdftex detected.}%
+ \else
+ \def\eq@drivernum{0}\def\dljs@drivernum{0}%
+ \let\isOpenAction\dl@YES
+ \PackageWarning{insdljs}{Pdftex engine detected,
+ but is outputting dvi. Assuming dvips as the driver.}%
+ \fi
+ }%
+ }{%
+ \begingroup
+ \count0=\eq@drivernum
+ \xdef\dljs@drivernum{\ifcase\count0 0\or1\or2\or0\else0\fi}
+ \ifnum\dljs@drivernum=0\global\let\isOpenAction\dl@YES
+ \else\global\let\isOpenAction\dl@NO\fi
+ \endgroup
+ }%
+}{}
+\ifnum\dljs@drivernum=1\relax
+ \RequirePackage{everyshi}
+\fi
+\def\AEB@psMrk{[\space}
+\ifx\dl@reqJS\dl@YES
+ \def\dl@@reqJS{/Type/Requirement/S/EnableJavaScripts}
+ \ifpdf\pdfcatalog{\dl@@reqJS}\else
+ \ifxetex\immediate\@pdfm@mark{put @catalog <<\dl@@reqJS>>}\else
+ \literalps@out{\AEB@psMrk{Catalog} <<\dl@@reqJS>> /PUT pdfmark}\fi\fi
+\fi
+\newif\ifthereisdjs \thereisdjsfalse
+\def\applydljs#1{\ifthereisdjs\else#1
+ \global\thereisdjstrue\fi}
+\providecommand\JS[1]{/S/JavaScript/JS(#1)}
+\providecommand\Named[1]{/S/Named/N/#1}
+\providecommand{\GoTo}{/S/GoTo/D}
+\providecommand{\GoToD}{/S/GoTo/D}
+\providecommand{\GoToR}{/S/GoToR}
+\def\previewMiKTeX{\def\jsR{\string\r}\def\jsT{\string\t}}
+{\obeylines %
+\gdef\js@@R{\noexpand
+}}
+\let\dljstfor\@tfor
+\def\jsR{\string\r\string\n}
+\def\defineJSjsR{\string\r\eqbs^^J}
+\def\jsN{\string\n}
+{\catcode`\^^I\active %
+\gdef^^I{\noexpand^^I}%
+\gdef\js@@T{\noexpand^^I}%
+}% end of \catcode`\^^I
+\let\jsT=\js@@T
+\newwrite\js@verbatim@out
+\def\iwvo#1{\immediate\write\js@verbatim@out{#1}}
+\def\dl@lparen{(}\def\dl@rparen{)}
+\def\jscsDflt{\let\protect\noexpand\let\jslit\string
+ \let\~\dl@tilda\let\^\dl@sup
+ \def\\{\eqbs\eqbs}\def\cs##1{\\\\##1}%
+ \def\r{\\r}\def\t{\\t}\def\n{\\n}%
+ \let\{\dl@lBrace\let\}\dl@rBrace
+ \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi
+ \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen
+ \let\r@paren\dl@rparen\else
+ \let\l@paren\@empty\let\r@paren\@empty\fi
+}
+\def\jscsDLJS{\let\protect\noexpand\let\jslit\string
+ \let\~\dl@tilda\let\^\dl@sup
+ \ifxetex\def\\{\eqbs\eqbs}\else\def\\{\eqbs}\fi\def\cs##1{\\\\##1}%
+ \def\r{\\r}\def\t{\\t}\def\n{\\n}%
+ \let\{\dl@lBrace\let\}\dl@rBrace
+ \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi
+ \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen
+ \let\r@paren\dl@rparen\else
+ \let\l@paren\@empty\let\r@paren\@empty\fi
+}
+\ifpdf\let\jscsDLJS\jscsDflt\fi
+\let\dl@JSCS\jscsDflt
+\newcommand{\flJSStr}{\bgroup
+ \let\dl@JSCS\jscsDflt
+ \@ifstar{\def\isStar{*}\dl@defJSStr}
+ {\let\isStar\relax\dl@defJSStr}}
+\let\fieldJSStr\flJSStr
+\let\defineJSStr\flJSStr
+\newcommand{\dlJSStr}{\bgroup
+ \@ifstar{\def\isStar{*}\let\dl@JSCS\jscsDLJS\dl@defJSStr}
+ {\let\isStar\relax\let\dl@JSCS\jscsDLJS\dl@defJSStr}}
+\define@key{jsstr}{quotes}[]{\let\jsstr@quotes\dl@One}
+\define@key{jsstr}{noquotes}[]{\let\jsstr@quotes\dl@Zero}
+\define@key{jsstr}{parens}[]{\let\jsstr@parens\dl@One}
+\define@key{jsstr}{noparens}[]{\let\jsstr@parens\dl@Zero}
+\let\jsstr@quotes\dl@One\let\jsstr@parens\dl@One
+\define@key{jsstr}{useUni}[]{\let\jsstr@useUni\dl@One}
+\let\jsstr@useUni\dl@Zero
+\newcommand{\dl@defJSStr}[3][quotes]{\def\dl@argi{#1}\ifx\dl@argi\@empty
+ \else\ifx\dl@JSCS\jscsDLJS\let\jsstr@parens\dl@Zero\fi
+ \setkeys{jsstr}{#1}\fi\dl@JSCS
+ \ifx\jsstr@quotes\dl@One
+ \xdef#2{\l@paren"#3"\r@paren}\else
+ \xdef#2{\l@paren#3\r@paren}\fi
+ \if\isStar*\gdef\dl@afterAction{{\Hy@unicodefalse\expandafter
+ \pdfstringdef\expandafter#2\expandafter{#2}}}\else
+ \global\let\dl@afterAction\relax\fi
+ \aftergroup\dl@afterAction\egroup}
+\def\dlTC#1{try{#1}catch(e){}}
+\def\js@R{\ifcase\dljs@drivernum^^J\else\jsR\fi}
+\def\db#1\db{\ifx\dljs@debug\dl@YES\space\space\space#1\js@R\fi}
+\newcounter{dljs@cnt}
+\newcounter{dljssegs}\setcounter{dljssegs}{2}
+\newenvironment{js@verbatimwrite}% writes to current \js@verbatim@out
+ {%
+ \@bsphack
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ \def\verbatim@processline{%
+ \immediate\write\js@verbatim@out{\the\verbatim@line}}%
+ \verbatim@start}{\@esphack}
+\def\closejs@verbatim@out{\immediate\closeout\js@verbatim@out}
+\begingroup
+\catcode`\@=0 @catcode`@\=12
+@gdef@eqbs{\}
+@gdef@ccpdfmark{@gdef@eqesc{\}@gdef@eqesci{}}
+@endgroup
+\begingroup
+ \catcode`<=1 \catcode`\>=2 \@makeother\{ \@makeother\}
+\gdef\definebraces<\def\{<\eqesc{>\def\}<\eqesc}>>
+\endgroup
+\def\eqdospecials{\do\ \do\{\do\}\do\$\do\&%
+ \do\#\do\^\do\_\do\~}
+\begingroup
+\catcode`\~=\active \lccode`\~=`\^^M
+\lowercase{\endgroup
+ \def\eqverbatim@#1~{\verbatim@@#1*end\@nil}%
+ \def\eqverbatim@@#1*end{%
+ \verbatim@addtoline{#1}%
+ \futurelet\dl@next\eqverbatim@@@}%
+ \def\eqverbatim@@@#1\@nil{%
+ \ifx\dl@next\@nil
+ \verbatim@processline
+ \verbatim@startline
+ \let\dl@next\eqverbatim@
+ \else
+ \def\@tempa##1*end\@nil{##1}%
+ \@temptokena{*end}%
+ \def\dl@next{\expandafter\verbatim@test\@tempa#1\@nil~}%
+ \fi\dl@next}%
+}%
+\def\jsexpverbatimwrite
+{% writes to current \js@verbatim@out
+ \@bsphack
+ \ccpdfmark
+ \catcode`\<=12 \catcode`\>=12
+ \input{dljscc.def}%
+ \let\verbatim@=\eqverbatim@
+ \let\verbatim@@=\eqverbatim@@
+ \let\verbatim@@@=\eqverbatim@@@
+ \let\do\@makeother\eqdospecials%
+ \catcode`\^^M=\active\catcode`\^^I=12%
+ \def\verbatim@processline{%
+ \edef\expVerb{\the\verbatim@line}%
+ \immediate\write\js@verbatim@out{\expVerb}}%
+ \verbatim@start%
+}
+\def\endjsexpverbatimwrite{\immediate\closeout\js@verbatim@out\@esphack}
+\let\js@Path\@empty
+\def\insPath#1{\def\js@Path{#1}}
+\begingroup
+\catcode`\{=12 \catcode`\}=12 \catcode`\<=1 \catcode`\>=2
+\gdef\dl@lBrace<\string\{> \gdef\dl@rBrace<\string\}>
+\gdef\dl@tilda<\string~> \gdef\dl@sup<\string^>
+\endgroup
+\def\makeJSspecials{%
+ \def\\{\eqbs\eqbs}% % define \\ to be \\
+ \let\jslit\string
+ \let\{\dl@lBrace\let\}\dl@rBrace
+ \let\u\@empty
+ \def\({\eqbs(}\def\){\eqbs)}%
+ \makespecialJS % make \r=\jsR and \t=\jsT
+}
+\def\dl@fitpage{/Fit}
+\def\dl@actualsize{/XYZ null null 1.0} %{/XYZ -32768 -32768 1.0}
+\def\dl@fitwidth{/FitH null} %{/FitH -32768}
+\def\dl@fitheight{/FitV null} %{/FitV -32768}
+\def\dl@fitvisible{/FitBH null} %{/FitBH -32768}
+\def\dl@inheritzoom{/XYZ 0 0 0}
+\def\dl@mag#1{/XYZ null null #1}
+\edef\dl@Page#1{\ifcase\dljs@drivernum
+ {Page#1}\or\noexpand\pdfpageref#1\space\space 0 R\or
+ @page#1\fi}
+\def\dl@preProcDefns{\let\Page\dl@Page\let\mag\dl@mag
+ \let\fitpage\dl@fitpage\let\actualsize\dl@actualsize
+ \let\fitwidth\dl@fitwidth\let\fitheight\dl@fitheight
+ \let\fitvisible\dl@fitvisible\let\inheritzoom\dl@inheritzoom
+}
+\let\aeb@additionalOpenAction\@empty
+\let\aeb@addActionCode\@empty
+\let\addActionObj\@empty
+\let\aebpopentoks\@empty
+\let\aebpFA\dl@NO
+\def\aebp@rightDelimiters{}
+\newcommand{\addToDocOpen}[1]{%
+ \ifx\aebpFA\dl@NO
+ \g@addto@macro\aebpopentoks{#1}%
+ \def\aeb@additionalOpenAction{/Next {pubAddToDocOpen}}%
+\ifpdf
+ \def\aeb@addActionCode{\immediate\pdfobj{<<
+ \aebpopentoks\aebp@rightDelimiters >>}%
+ \edef\addActionObj{\the\pdflastobj\space 0 R}}%
+\else\ifxetex
+ \def\aeb@addActionCode{\immediate
+ \@pdfm@mark{obj @objAddActionObj
+ << \aebpopentoks\aebp@rightDelimiters >> }}%
+ \def\addActionObj{@objAddActionObj}%
+\else % postscript
+ \def\aeb@addActionCode{\literalps@out{%
+ \AEB@psMrk/_objdef {pubAddToDocOpen}
+ /type/dict /OBJ pdfmark^^J%
+ \AEB@psMrk{pubAddToDocOpen} <<
+ \aebpopentoks\aebp@rightDelimiters >> /PUT pdfmark}}%
+ \def\addActionObj{{pubAddToDocOpen}}%
+\fi\fi
+ \global\let\aebpFA\dl@YES
+ \let\@pdfstartview\@empty
+ \else
+ \edef\aebp@dljstmp{\aebp@rightDelimiters}%
+ \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
+ \g@addto@macro\aebpopentoks{/Next << #1 }%
+ \fi
+}
+\def\dljs@OpenActions{/OpenAction \addActionObj}
+\def\dljs@setOpenActions{\bgroup\makeJSspecials\dl@preProcDefns
+ \aeb@addActionCode
+ \ifpdf\pdfcatalog{\dljs@OpenActions}\else
+ \ifxetex\immediate
+ \@pdfm@mark{put @catalog <<\dljs@OpenActions>>}\else
+ \literalps@out{\AEB@psMrk
+ {Catalog} <<\dljs@OpenActions>> /PUT pdfmark}\fi\fi\egroup}
+\@ifpackageloaded{aeb_pro}{}
+ {\AtBeginDocument{\ifx\aebpFA\dl@YES\expandafter
+ \dljs@setOpenActions\fi}}
+\let\@CloseAction\@empty
+\def\@OAction@pdfmark{\literalps@out{%
+ \AEB@psMrk{ThisPage} << /AA << /O << \theFirstAction\space
+ \opentoks\@rightDelimiters >> \@CloseAction >> >> /PUT pdfmark}}
+\def\@POAction@pdfmark{\literalps@out{%
+ \AEB@psMrk{ThisPage} << /AA << \@thisOpenAction
+ \@thisCloseAction >> >> /PUT pdfmark}%
+}
+\def\@OAction@pdftex{%
+ \ifx\isOpenAction\dl@YES
+ \xdef\pdftexOAction{/AA << /O << \theFirstAction\space
+ \opentoks\@rightDelimiters >> \@CloseAction >>}%
+ \AtNextShipout{\pdfpageattr=\expandafter{\pdftexOAction}}%
+ \fi
+}
+\def\@POAction@pdftex{%
+ \xdef\thisPageActionpdftex{/AA << \@thisOpenAction
+ \@thisCloseAction >>}%
+ \AtNextShipout{\pdfpageattr=\expandafter{\thisPageActionpdftex}}%
+}
+\def\@OAction@dvipdfm{\ifx\isOpenAction\dl@YES
+ \@pdfm@mark{put @thispage << /AA << /O << \theFirstAction\space
+ \opentoks\@rightDelimiters >> \@CloseAction >> >>}\fi
+}
+\def\@POAction@dvipdfm{%
+ \@pdfm@mark{put @thispage << /AA << \@thisOpenAction
+ \@thisCloseAction >> >>}%
+}
+\ifcase\dljs@drivernum
+ \let\@OAction\@OAction@pdfmark
+ \let\@POAction\@POAction@pdfmark
+ \gdef\theFirstAction{/S/JavaScript/JS (\the\importfdftoks)}
+ \let\isOpenAction\dl@YES
+\or
+ \let\@OAction\@OAction@pdftex
+ \let\@POAction\@POAction@pdftex
+ \AtBeginDocument{\@OAction@pdftex}
+\or
+ \let\@OAction\@OAction@dvipdfm
+ \let\@POAction\@POAction@dvipdfm
+ \AtBeginDocument{\@OAction@dvipdfm}
+\fi
+\def\opentoks{}
+\def\makespecialJS{%
+ \let\r\jsR\let\t\jsT\let\n\jsN}
+\def\@rightDelimiters{}
+\def\OpenAction{\@ifnextchar\Next
+ {\expandafter\@OpenAction\@gobble}{\@OpenAction}}
+\def\@OpenAction#1{%
+ \ifx\isOpenAction\dl@NO
+ {\makespecialJS\xdef\theFirstAction{#1}}%
+ \global\let\isOpenAction\dl@YES
+ \else
+ \edef\dljstmp{\@rightDelimiters}%
+ \xdef\@rightDelimiters{\dljstmp >> }%
+ {\makespecialJS\xdef\dljstmp{\opentoks /Next << #1 }}%
+ \xdef\opentoks{\dljstmp}%
+ \fi
+ \@nextOpenAction
+}
+\def\@nextOpenAction{\@ifnextchar\Next{\expandafter
+ \@OpenAction\@gobble}{}}
+\def\protectJSCtrls{\def\r{\string\r\string\n}%
+ \def\t{\string\t}\def\n{\string\n}}
+\def\dljs@tstlp{\@ifnextchar\bgroup
+ {\let\dljs@multi\dl@YES\dljs@tstlpi}%
+ {\let\dljs@multi\dl@NO\dljs@tstlpi}}
+\def\dljs@tstlpi#1\@nil{}%
+\def\dljs@bldScript#1#2#3{{%
+ \dljs@tstlp#1\@nil
+ \ifx\dljs@multi\dl@NO{\protectJSCtrls\xdef#3{/#2<<#1>>}}\else
+ \toks0={}\let\dljs@rAngles\@empty\count0=0
+ \@tfor\dljs@arg:=#1\do{%
+ \ifnum\count0=0
+ \toks0=\expandafter{\dljs@arg}\else
+ \toks2=\expandafter{\dljs@arg}%
+ \edef\holdtokstmp{\the\toks0
+ /Next<<\the\toks2 }%
+ \edef\dljs@rAngles{\dljs@rAngles\space>>}%
+ \toks0=\expandafter{\holdtokstmp}%
+ \fi
+ \advance\count0by1
+ }%
+ {\protectJSCtrls\xdef#3{/#2<<\the\toks0 \dljs@rAngles>>}%
+ \xdef#3{#3}}%
+ \fi
+}}
+\newcommand{\thisPageAction}[2]{%
+ \let\@CloseAction\@empty
+ \let\@thisOpenAction\@empty
+ \let\@thisCloseAction\@empty
+ \def\dljs@argi{#1}\def\dljs@argii{#2}%
+ \ifnum\value{page}=1\relax
+ \ifx\dljs@argii\@empty\else
+ \dljs@bldScript{#2}{C}{\@CloseAction}\fi
+ \ifx\dljs@argi\@empty\else\dljs@tstlp#1\@nil
+ \ifx\dljs@multi\dl@NO\OpenAction{#1}\else
+ \@tfor\dljs@arg:=#1\do{\expandafter
+ \OpenAction\expandafter{\dljs@arg}%
+ }\fi
+ \fi
+ \else
+ \ifx\dljs@argi\@empty\else
+ \dljs@bldScript{#1}{O}{\@thisOpenAction}\fi
+ \ifx\dljs@argii\@empty\else
+ \dljs@bldScript{#2}{C}{\@thisCloseAction}\fi
+ \@POAction
+ \fi
+}
+\let\insdljsloadVar\@empty
+\newenvironment{insDLJS}[3][]
+{%
+ \gdef\detectdljs{#1}\gdef\dljsBase{#2}%
+ \ifxetex{\def\1{\string\1}\def\2{\string2}%
+ \def\3{\string\3}\xdef\dljsName{#3}}\else
+ \Hy@unicodefalse\pdfstringdef{\dljsName}{#3}\fi
+\ifx\detectdljs\@empty
+ \stepcounter{dljs@cnt}%
+ \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}%
+ \edef\insdljsloadVar{var \detectdljs=true;}%
+ \addtocounter{dljs@cnt}{-1}%
+\fi
+ \global\let\multisegments\dl@NO\setcounter{dljssegs}{2}%
+ \global\dljsobjtoks={}%
+ \expandafter\ifx\csname dljs\dljsBase\endcsname\relax
+ \else\@insjserrDuplicate\fi
+ \ifcase\dljs@drivernum
+ \let\insert@DLJS=\insert@DLJS@pdfmark
+ \let\endinsDLJS=\endinsert@DLJS@pdfmark
+ \let\newsegment=\newsegment@pdfmark
+ \let\endnewsegment=\endnewsegment@pdfmark
+ \or
+ \let\insert@DLJS=\insert@DLJS@pdftex
+ \let\endinsDLJS=\endinsert@DLJS@pdftex
+ \let\newsegment=\newsegment@pdftex
+ \let\endnewsegment=\endnewsegment@pdftex
+ \or
+ \let\insert@DLJS=\insert@DLJS@dvipdfm
+ \let\endinsDLJS=\endinsert@DLJS@dvipdfm
+ \let\newsegment=\newsegment@dvipdfm
+ \let\endnewsegment=\endnewsegment@dvipdfm
+ \fi
+ \insert@DLJS
+}{}
+\newenvironment{insDLJS*}[2][]
+{%
+ \gdef\detectdljs{#1}\gdef\dljsBase{#2}%
+\ifx\detectdljs\@empty
+ \stepcounter{dljs@cnt}%
+ \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}%
+ \edef\insdljsloadVar{var \detectdljs=true;}%
+ \addtocounter{dljs@cnt}{-1}%
+\fi
+ \global\let\multisegments\dl@YES\setcounter{dljssegs}{2}%
+ \global\dljsobjtoks={}%
+ \expandafter\ifx\csname dljs\dljsBase\endcsname\relax
+ \else\@insjserrDuplicate\fi
+ \ifcase\dljs@drivernum
+ \let\insert@DLJS=\insert@DLJS@pdfmark
+ \expandafter
+ \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdfmark
+ \let\newsegment=\newsegment@pdfmark
+ \let\endnewsegment=\endnewsegment@pdfmark
+ \or
+ \let\insert@DLJS=\insert@DLJS@pdftex
+ \expandafter
+ \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdftex
+ \let\newsegment=\newsegment@pdftex
+ \let\endnewsegment=\endnewsegment@pdftex
+ \or
+ \let\insert@DLJS=\insert@DLJS@dvipdfm
+ \expandafter
+ \let\csname endinsDLJS*\endcsname\endinsert@DLJS@dvipdfm
+ \let\newsegment=\newsegment@dvipdfm
+ \let\endnewsegment=\endnewsegment@dvipdfm
+ \fi
+ \insert@DLJS
+}{}
+\def\@insjserrDuplicate{%
+ \typeout{^^J! insdljs Package error.}
+ \typeout{! insDLJS environment: On line number \the\inputlineno,}
+ \typeout{! the base name `\dljsBase' has already been chosen.}
+ \typeout{! A DLJS earlier defined has been overwritten!}
+ \typeout{! Choose another name for the first required argument}
+ \typeout{! of the insDLJS environment.^^J}
+}
+\newif\ifisdljs \isdljsfalse
+\begingroup
+\catcode`\~=12 \catcode`\#=12
+\gdef\efdlspecials{\catcode`\~=12 \catcode`\#=12}
+\endgroup
+\def\ckivspace#1{\if\noexpand#1\space\else\expandafter#1\fi}
+\let\DLspecialDefs\@empty
+\def\fdfAfterheader
+{%
+ \iwvo{\string\begingroup\string\efdlspecials}
+ \iwvo{\string\DLspecialDefs}
+ \iwvo{\string\isdljstrue}
+ \iwvo{\string\makeatletter}
+ \iwvo{\string\immediate\string\openout\string
+\js@verbatim@out=\string\js@Path\space\dljsBase.fdf}%
+ \iwvo{\string\begin{jsexpverbatimwrite}}
+ \iwvo{\string\firstFDFline}
+ \iwvo{1 0 obj}
+ \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R /After 3 0 R >> >> >> }
+ \iwvo{endobj}
+ \iwvo{2 0 obj}
+ \let\x\@empty
+ \applydljs{\def\x{^^Jvar _thereisdjs=true;}}%
+ \ifpdfmarkup
+ \iwvo{[ (ExecJS \dljsBase) (var _\dljsBase\space = true;\x) ] }\else
+ \iwvo{[ (00 ExecJS \dljsBase) (var _\dljsBase\space = true;\x)] }\fi
+ \iwvo{endobj}
+ \iwvo{3 0 obj}
+ \iwvo{<<>>}
+ \iwvo{stream}
+}
+\newenvironment{execJS}[1]
+{%
+ \gdef\detectdljs{\string_#1}\gdef\dljsBase{#1}%
+ \global\dljsobjtoks={}%
+ \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
+ \ifx\importdljs\dl@YES\ifx\execjs\dl@YES
+ \ifx\dl@gopro\dl@YES
+ \ifnum\dljs@drivernum=0\relax
+ \addImportAnFDF\importAnFDFTemplate
+ \else
+ \OpenAction{/S/JavaScript/JS (\importAnFDFTemplate)}%
+ \fi\fi
+ \fi\fi
+ \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
+ \fdfAfterheader
+ \js@verbatimwrite
+}{%
+ \fdfendstreamobj
+ \endjs@verbatimwrite
+ \fdftrailer
+ \closejs@verbatim@out
+ \expandafter\xdef\csname\dljsBase OBJ\endcsname{\the\dljsobjtoks}%
+ \edef\@dljstmp{\noexpand\AtBeginDocument{%
+ \noexpand\input{\js@Path\dljsBase.djs}}}\@dljstmp
+}
+\newtoks\JStoks
+\newenvironment{defineJS}[2][]
+{%
+ \expandafter\@ifundefined\expandafter{%
+ \expandafter\@gobble\string#2}{}{%
+ \PackageWarning{insdljs}{The command
+ \string#2 already defined}}%
+ \gdef\defineJSArg{#2}\JStoks={}%
+ \def\verbatim@processline
+ {%
+ \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
+ \global\JStoks=\expandafter{\JS@temp}%
+ }%
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ #1%
+ \verbatim@start
+}{\gdef\eq@JStemp{\expandafter\edef\defineJSArg{\the\JStoks}}%
+ \aftergroup\eq@JStemp}
+\newenvironment{@defineJS}[2][]
+{%
+ \gdef\defineJSArg{#2}\JStoks={}%
+ \def\verbatim@processline
+ {%
+ \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
+ \global\JStoks=\expandafter{\JS@temp}%
+ }%
+ \let\do\@makeother\dospecials\catcode`\^^M\active
+ #1%
+ \verbatim@start
+}{\gdef\eq@JStemp{\expandafter\edef\defineJSArg{\the\JStoks}}%
+ \aftergroup\eq@JStemp}
+\newenvironment{localJS}[1][]{}{\ifvmode\else\unskip\fi}
+\newenvironment{willClose}[1][]
+{\@defineJS[#1]{\will@Close}}
+{\end@defineJS}
+\let\will@Close\@empty
+\newenvironment{willSave}[1][]
+{\@defineJS[#1]{\will@Save}}
+{\end@defineJS}
+\let\will@Save\@empty
+\newenvironment{didSave}[1][]
+{\@defineJS[#1]{\did@Save}}
+{\end@defineJS}
+\let\did@Save\@empty
+\newenvironment{willPrint}[1][]
+{\@defineJS[#1]{\will@Print}}
+{\end@defineJS}
+\let\will@Print\@empty
+\newenvironment{didPrint}[1][]
+{\@defineJS[#1]{\did@Print}}
+{\end@defineJS}
+\let\did@Print\@empty
+\def\dljs@willDidActions{/AA <<
+ \ifx\test@will@Close\@empty\else/WC <<
+ \JS{\will@Close} >>\fi
+ \ifx\test@will@Save\@empty\else/WS <<
+ \JS{\will@Save} >>\fi
+ \ifx\test@did@Save\@empty\else/DS <<
+ \JS{\did@Save} >>\fi
+ \ifx\test@will@Print\@empty\else/WP <<
+ \JS{\will@Print} >>\fi
+ \ifx\test@did@Print\@empty\else/DP <<
+ \JS{\did@Print} >>\fi
+ >>
+}
+\newcommand\dljs@setDocActions{%
+ \edef\test@will@Close{\will@Close}%
+ \edef\test@will@Save{\will@Save}%
+ \edef\test@did@Save{\did@Save}%
+ \edef\test@will@Print{\will@Print}%
+ \edef\test@did@Print{\did@Print}%
+ \ifpdf\pdfcatalog{\dljs@willDidActions}\else
+ \ifxetex\immediate
+ \@pdfm@mark{put @catalog <<\dljs@willDidActions>>}\else
+ \literalps@out{\AEB@psMrk
+ {Catalog} <<\dljs@willDidActions>> /PUT pdfmark}\fi\fi
+}
+\@ifpackageloaded{aeb_pro}{}
+ {\AtBeginDocument{\dljs@setDocActions}}
+\begingroup
+\catcode`\%=12
+\gdef\firstFDFline{%FDF-1.2}
+\gdef\lastFDFline{%%EOF}
+\endgroup
+\def\fdfheader
+{%
+ \iwvo{\string\begingroup\string\efdlspecials}
+ \iwvo{\string\isdljstrue}
+ \iwvo{\string\makeatletter}
+ \iwvo{\string\immediate\string\openout\string
+ \js@verbatim@out=\string\js@Path\space\dljsBase.fdf}%
+ \iwvo{\string\begin{jsexpverbatimwrite}}
+ \iwvo{\string\firstFDFline}
+ \iwvo{1 0 obj}
+ \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R >> >> >>}
+ \iwvo{endobj}
+ \iwvo{2 0 obj}
+ \iwvo{[ \string\csname\string\@gobble\space\dljsBase%
+ OBJ\string\endcsname]}
+ \iwvo{endobj}
+}
+\def\fdfbeginstreamobj
+{%
+ \iwvo{\thedljssegs\space 0 obj}
+ \iwvo{<<>>}
+ \iwvo{stream}
+ \applydljs{\iwvo{var _thereisdjs=true;}}
+ \ifx\insdljsloadVar\@empty\else
+ \iwvo{\insdljsloadVar}
+ \global\let\insdljsloadVar\@empty
+ \fi
+}
+\def\fdfendstreamobj{%
+ \iwvo{endstream}
+ \iwvo{endobj}
+}
+\def\fdftrailer{%
+ \iwvo{trailer}
+ \iwvo{<< /Root 1 0 R >>}
+ \iwvo{\string\lastFDFline}
+ \iwvo{*end{jsexpverbatimwrite}}
+ \iwvo{\string\endgroup}
+}
+\newtoks\importfdftoks \importfdftoks={}
+\newtoks\dljsobjtoks \dljsobjtoks={}
+\def\importAnFDFTemplate{%
+if(typeof \detectdljs\space == "undefined")\jsR\jsT
+ ( app.viewerVersion > 8 ) ? %
+ aebTrustedFunctions( this, aebImportAnFDF, %
+ "\js@Path\dljsBase.fdf") : %
+ this.importAnFDF("\js@Path\dljsBase.fdf");\jsR
+}
+\def\addImportAnFDF#1{%
+ \ifx\importdljs\dl@YES
+ \edef\importAnFDFtmp{\the\importfdftoks#1}%
+ \global\importfdftoks=\expandafter{\importAnFDFtmp}%
+ \fi
+}
+\def\importAnFDF{\ifx\importdljs\dl@YES\@OAction\fi}
+\newenvironment{newsegment@pdfmark}[1]{%
+ \addtocounter{dljssegs}{1}%
+ \addtocounter{dljs@cnt}{1}%
+ \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}%
+ \edef\@dljstmp{\the\dljsobjtoks(\dljsName)
+ \thedljssegs\space 0 R\space}
+ \global\dljsobjtoks=\expandafter{\@dljstmp}
+ \fdfbeginstreamobj
+ \js@verbatimwrite
+}{%
+ \fdfendstreamobj
+ \endjs@verbatimwrite
+}
+\def\insert@DLJS@pdfmark{%
+ \global\let\dljspresent\dl@YES
+ \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
+ \ifx\importdljs\dl@YES\ifx\dl@gopro\dl@YES
+ \addImportAnFDF\importAnFDFTemplate
+ \fi\fi
+ \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
+ \fdfheader
+ \ifx\multisegments\dl@NO\expandafter
+ \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi
+}
+\def\endinsert@DLJS@pdfmark{%
+ \ifx\importdljs\dl@YES
+ \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
+ \fdftrailer
+ \closejs@verbatim@out
+ \expandafter\xdef\csname\dljsBase%
+ OBJ\endcsname{\the\dljsobjtoks}%
+ \edef\@dljstmp{\noexpand\AtBeginDocument{%
+ \noexpand\input{\js@Path\dljsBase.djs}}}%
+ \@dljstmp
+ \ifx\firstdljs\dl@YES
+ \AtBeginDocument{\edef\@dljstmp{\importAnFDF}%
+ \@dljstmp}\global\let\firstdljs\dl@NO
+ \fi
+ \fi
+}
+\begingroup
+\catcode`\@=0 @catcode`@\=12
+@gdef@ccpdftex{@gdef@eqesc{\\}@gdef@eqesci{\}}
+@endgroup
+\def\begindljs
+{%
+ \iwvo{\string\begingroup\string\efdlspecials}
+ \iwvo{\string\isdljstrue}
+ \iwvo{\string\makeatletter}
+ {\uccode`c=`\%\uppercase{%
+ \iwvo{\string\obeyspaces\string\obeylines
+ \string\let\string^\string^M=\string\jsR c}}}
+ {\escapechar=-1 \lccode`C=`\%\lowercase{%
+ \iwvo{\string\\catcode`\string\\"=12C}}}
+}
+\def\beginseg{%
+ {\lccode`P=`\{\lccode`C=`\%\lowercase{%
+ \iwvo{\string\gdef\string\dljs\dljsBase\roman{dljssegs}PC}}}%
+ \applydljs{\iwvo{var _thereisdjs=true;}}%
+}
+\def\endseg{{\uccode`c=`\%\uccode`p=`\}\uppercase{\iwvo{pc}}}}
+\def\enddljs{\iwvo{\string\endgroup}}
+\def\@roman#1{\romannumeral#1}
+\def\write@objs{%
+ \iwvo{\begingroup}
+ \iwvo{\string\catcode`\string\<=12 }
+ \iwvo{\string\catcode`\string\>=12 }
+ {\lccode`C=`\%\lowercase{\iwvo{\string\ccpdftex C}}}
+ {\lccode`C=`\%\lowercase{\iwvo{%
+ \string\input{dljscc.def}C\the\dljsobjtoks}}}
+ \iwvo{\endgroup}
+}
+\newenvironment{newsegment@pdftex}[1]{%
+ \addtocounter{dljssegs}{1}%
+ \addtocounter{dljs@cnt}{1}%
+ \edef\tmp{^^J\string\immediate\string\pdfobj{ << /S/JavaScript/JS%
+ (\string\dljs\dljsBase\roman{dljssegs}) >> }}%
+ \edef\@dljstmp{\the\dljsobjtoks\tmp}%
+ \global\dljsobjtoks=\expandafter{\@dljstmp}%
+ \edef\tmp{^^J\string\xdef\string\obj\dljsBase\roman{dljssegs}%
+ {\string\the\string\pdflastobj\string\space 0 R}}%
+ \edef\@dljstmp{\the\dljsobjtoks\tmp}%
+ \global\dljsobjtoks=\expandafter{\@dljstmp}%
+ \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}%
+ \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}%
+ \edef\dljspdftextmp
+ {\the\importfdftoks (\curr@Cnt\space\dljsName)
+ \noexpand\csname obj\dljsBase\roman{dljssegs}%
+ \noexpand\endcsname\space}%
+ \global\importfdftoks=\expandafter{\dljspdftextmp}%
+ \beginseg
+ \js@verbatimwrite
+}{%
+ \endjs@verbatimwrite
+ \endseg
+}
+\newenvironment{insert@DLJS@pdftex}{%
+ \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
+ \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
+ \begindljs
+ \ifx\multisegments\dl@NO\expandafter
+ \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi
+}{%
+ \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
+ \enddljs
+ \write@objs
+ \endjs@verbatimwrite
+ \closejs@verbatim@out
+ \edef\@dljstmp{\noexpand\AtBeginDocument{%
+ \noexpand\input{\js@Path\dljsBase.djs}}}%
+ \@dljstmp
+ \ifx\importdljs\dl@YES
+ \ifx\firstdljs\dl@YES
+ \AtEndDocument{\edef\@dljstmp{\setDLJSRef@pdftex}\@dljstmp}
+ \global\let\firstdljs\dl@NO
+ \fi
+ \fi
+}
+\def\setDLJSRef@pdftex
+{%
+ \noexpand\immediate\noexpand\pdfobj {%
+ << /Names [\the\importfdftoks] >> }%
+ \edef\noexpand\objNames{\noexpand\the\noexpand\pdflastobj\space 0 R}%
+ \pdfnames {/JavaScript \noexpand\objNames}%
+}
+\newenvironment{newsegment@dvipdfm}[1]
+{%
+ \addtocounter{dljssegs}{1}%
+ \addtocounter{dljs@cnt}{1}%
+ \edef\tmp{^^J\string\immediate\string
+ \csname\space @pdfm@mark\string\endcsname
+ {obj @obj\dljsBase\roman{dljssegs}\space << /S/JavaScript%
+ /JS(\string\dljs\dljsBase\roman{dljssegs}) >> }}%
+ \edef\@dljstmp{\the\dljsobjtoks\space\tmp}%
+ \global\dljsobjtoks=\expandafter{\@dljstmp}%
+ \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}%
+ {\def\1{\string\1}\def\2{\string2}%
+ \def\3{\string\3}\xdef\dljsName{#1}}%
+ \edef\dljspdftextmp
+ {\the\importfdftoks (\curr@Cnt\space \dljsName) %
+ @obj\dljsBase\roman{dljssegs}\space}%
+ \global\importfdftoks=\expandafter{\dljspdftextmp}%
+ \beginseg
+ \js@verbatimwrite
+}{%
+ \endjs@verbatimwrite
+ \endseg
+}
+\def\setDLJSRef@dvipdfm
+{%
+ \immediate\@pdfm@mark{obj @objnames %
+ << /Names [\the\importfdftoks] >> }%
+ \@pdfm@mark{put @names %
+ << /JavaScript @objnames >> }%
+}
+\newenvironment{insert@DLJS@dvipdfm}
+{%
+ \expandafter\gdef\csname dljs\dljsBase\endcsname{}%
+ \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
+ \begindljs
+ \ifx\multisegments\dl@NO\expandafter\newsegment\expandafter{%
+ \expandafter\dljsName\expandafter}\fi
+}{%
+ \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi
+ \enddljs
+ \write@objs
+ \endjs@verbatimwrite
+ \closejs@verbatim@out
+ \edef\@dljstmp{\noexpand\AtBeginDocument{%
+ \noexpand\input{\js@Path\dljsBase.djs}}}%
+ \@dljstmp
+ \ifx\importdljs\dl@YES
+ \ifx\firstdljs\dl@YES
+ \AtBeginDocument{\setDLJSRef@dvipdfm}%
+ \global\let\firstdljs\dl@NO
+ \fi
+ \fi
+}
+\catcode`\"=\dl@dquoteCat
+\inputAltAdbFncs
+\endinput
+%%
+%% End of file `insdljs.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/pdfdochex.def b/texmf-dist/tex/latex/acrotex/pdfdochex.def
index 41ac2fb1..758789df 100644
--- a/texmf-dist/tex/latex/acrotex/pdfdochex.def
+++ b/texmf-dist/tex/latex/acrotex/pdfdochex.def
@@ -1,278 +1,278 @@
-%%
-%% This is file `pdfdochex.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,hexoctcodes')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\HexGlyph{00}{efHxError}%{000}
-\HexGlyph{01}{efHxError}%{001}
-\HexGlyph{02}{efHxError}%{002}
-\HexGlyph{03}{efHxError}%{003}
-\HexGlyph{04}{efHxError}%{004}
-\HexGlyph{05}{efHxError}%{005}
-\HexGlyph{06}{efHxError}%{006}
-\HexGlyph{07}{efHxError}%{006}
-\HexGlyph{08}{efHxError}%{008}
-\HexGlyph{09}{efHxError}%{009}
-\HexGlyph{0A}{efHxError}%{012}
-\HexGlyph{0B}{efHxError}%{013}
-\HexGlyph{0C}{efHxError}%{014}
-\HexGlyph{0D}{efHxError}%{015}
-\HexGlyph{0E}{efHxError}%{016}
-\HexGlyph{0F}{efHxError}%{017}
-\HexGlyph{10}{efHxError}%{020}
-\HexGlyph{11}{efHxError}%{021}
-\HexGlyph{12}{efHxError}%{022}
-\HexGlyph{13}{efHxError}%{023}
-\HexGlyph{14}{efHxError}%{024}
-\HexGlyph{15}{efHxError}%{025}
-\HexGlyph{16}{efHxError}%{026}
-\HexGlyph{17}{efHxError}%{027}
-\HexGlyph{18}{030}% U+02D8 BREVE
-\HexGlyph{19}{031}% U+02c7 CARON
-\HexGlyph{1A}{032}% U+02c6 MODIFIER LETTER CIRCUMFLEX ACCENT
-\HexGlyph{1B}{033}% U+02D9 DOT ABOVE
-\HexGlyph{1C}{034}% U+02DD DOUBLE ACUTE ACCENT
-\HexGlyph{1D}{035}% U+02DB OGONEK
-\HexGlyph{1E}{036}% U+02DA RING ABOVEZ
-\HexGlyph{1F}{037}% U+02DC SMALL TILDE
-\HexGlyph{20}{040}% U+0020 SPACE
-\HexGlyph{21}{041}% U+0021 EXCLAMATION MARK
-\HexGlyph{22}{042}% U+0022 QUOTATION MARK
-\HexGlyph{23}{043}% U+0022 NUMBER SIGN
-\HexGlyph{24}{044}% U+0023 DOLLAR SIGN
-\HexGlyph{25}{045}% U+002 PERCENT SIGN
-\HexGlyph{26}{046}% U+0026 AMPERSAND
-\HexGlyph{27}{047}% U+0027 APOSTROPHE
-\HexGlyph{28}{050}% U+0028 LEFT PARENTHESIS
-\HexGlyph{29}{051}% U+0029 RIGHT PAENTHESIS
-\HexGlyph{2A}{052}% U+002A ASTERISK
-\HexGlyph{2B}{053}% U+002B PLUS SIGN
-\HexGlyph{2C}{054}% U+002C COMMA
-\HexGlyph{2D}{055}% U+002D HYPHEN-MINUS
-\HexGlyph{2E}{056}% U+002E FULL STOP
-\HexGlyph{2F}{057}% U+002F SOLIDUS
-\HexGlyph{30}{060}% U+0030 ZERO
-\HexGlyph{31}{061}% U+0031 ONE
-\HexGlyph{32}{062}% U+0032 TWO
-\HexGlyph{33}{063}% U+0033 THREE
-\HexGlyph{34}{064}% U+0034 FOUR
-\HexGlyph{35}{065}% U+0035 FIVE
-\HexGlyph{36}{066}% U+0036 SIX
-\HexGlyph{37}{067}% U+0037 SEVEN
-\HexGlyph{38}{070}% U+0038 EIGHT
-\HexGlyph{39}{071}% U+0039 NINE
-\HexGlyph{3A}{072}% U+003A COLON
-\HexGlyph{3B}{073}% U+003B SEMICOLON
-\HexGlyph{3C}{074}% U+003C LESS-THAN SIGN
-\HexGlyph{3D}{075}% U+003D EQUALS SIGN
-\HexGlyph{3E}{076}% U+003E GREATER-THAN SIGN
-\HexGlyph{3F}{077}% U+003F QUESTION MARK
-\HexGlyph{40}{100}% U+0040 COMMERCIAL AT
-\HexGlyph{41}{101}% U+0041 CAPITAL LETTER A
-\HexGlyph{42}{102}% U+0042 B
-\HexGlyph{43}{103}% U+0043 C
-\HexGlyph{44}{104}% U+0044 D
-\HexGlyph{45}{105}% U+0045 E
-\HexGlyph{46}{106}% U+0046 F
-\HexGlyph{47}{107}% U+0047 G
-\HexGlyph{48}{110}% U+0048 H
-\HexGlyph{49}{111}% U+0049 I
-\HexGlyph{4A}{112}% U+004A J
-\HexGlyph{4B}{113}% U+004B K
-\HexGlyph{4C}{114}% U+004C L
-\HexGlyph{4D}{115}% U+004D M
-\HexGlyph{4E}{116}% U+004E N
-\HexGlyph{4F}{117}% U+004F O
-\HexGlyph{50}{120}% U+0050 P
-\HexGlyph{51}{121}% U+0051 Q
-\HexGlyph{52}{122}% U+0052 R
-\HexGlyph{53}{123}% U+0053 S
-\HexGlyph{54}{124}% U+0054 T
-\HexGlyph{55}{125}% U+0055 U
-\HexGlyph{56}{126}% U+0056 V
-\HexGlyph{57}{127}% U+0057 W
-\HexGlyph{58}{130}% U+0058 X
-\HexGlyph{59}{131}% U+0059 Y
-\HexGlyph{5A}{132}% U+005A Z
-\HexGlyph{5B}{133}% U+005B LEFT SQUARE BRACKET
-\HexGlyph{5C}{134}% U+005C REVERSE SOLIDUS (BACKSLASH)
-\HexGlyph{5D}{135}% U+005D RIGHT SQUARE BRACKET
-\HexGlyph{5E}{136}% U+005E CIRCUMFLEX ACCENT
-\HexGlyph{5F}{137}% U+005F LOW LINE
-\HexGlyph{60}{140}% U+0060 GRAVE ACCENT
-\HexGlyph{61}{141}% U+0061 LATIN SMALL LETTER a
-\HexGlyph{62}{142}% U+0062 b
-\HexGlyph{63}{143}% U+0063 c
-\HexGlyph{64}{144}% U+0064 d
-\HexGlyph{65}{145}% U+0065 e
-\HexGlyph{66}{146}% U+0066 f
-\HexGlyph{67}{147}% U+0067 g
-\HexGlyph{68}{150}% U+0068 h
-\HexGlyph{69}{151}% U+0069 i
-\HexGlyph{6A}{152}% U+006A j
-\HexGlyph{6B}{153}% U+006B k
-\HexGlyph{6C}{154}% U+006C l
-\HexGlyph{6D}{155}% U+006D m
-\HexGlyph{6E}{156}% U+006E n
-\HexGlyph{6F}{157}% U+006F o
-\HexGlyph{70}{160}% U+0070 p
-\HexGlyph{71}{161}% U+0071 q
-\HexGlyph{72}{162}% U+0072 r
-\HexGlyph{73}{163}% U+0073 s
-\HexGlyph{74}{164}% U+0074 t
-\HexGlyph{75}{165}% U+0075 u
-\HexGlyph{76}{166}% U+0076 v
-\HexGlyph{77}{167}% U+0077 w
-\HexGlyph{78}{170}% U+0078 x
-\HexGlyph{79}{171}% U+0079 y
-\HexGlyph{7A}{172}% U+007A z
-\HexGlyph{7B}{173}% U+007B LEFT CURLY BRACKET
-\HexGlyph{7C}{174}% U+007C VERTICAL LINE
-\HexGlyph{7D}{175}% U+007D RIGHT CURLY BRACKET
-\HexGlyph{7E}{176}% U+007E TILDE
-\HexGlyph{7F}{efHxError}% 177 UNDEFINED IN PDFDOCENC
-\HexGlyph{80}{200}% U+2022 BULLET
-\HexGlyph{81}{201}% U+2020 DAGGER
-\HexGlyph{82}{202}% U+2021 DOUBLE DAGGER
-\HexGlyph{83}{203}% U+2026 HORIZONTAL ELLIPSIS
-\HexGlyph{84}{204}% U+2014 EM DASH
-\HexGlyph{85}{205}% U+2013 EN DASH
-\HexGlyph{86}{206}% U+0192 LATIN SMALL LETTER F WITH HOOK
-\HexGlyph{87}{207}% U+2044 FRACTION SLASH
-\HexGlyph{88}{210}% U+2039 SINGLE LEFT-POINTING ANGLE QUOTE MARK
-\HexGlyph{89}{211}% U+203A SINGLE RIGHT-POINTING ANGLE QUOTE MARK
-\HexGlyph{8A}{212}% U+2212 MINUS-SIGN
-\HexGlyph{8B}{213}% U+2030 PER MILL SIGN
-\HexGlyph{8C}{214}% U+201E DOUBLE LOW-9 QUOTE MARK
-\HexGlyph{8D}{215}% U+201C LEFT DOUBLE QUOTE MARK
-\HexGlyph{8E}{216}% U+201C RIGHT DOUBLE QUOTE MARK
-\HexGlyph{8F}{217}% U+2018 LEFT SINGLE QUOTE MARK
-\HexGlyph{90}{220}% U+2019 RIGHT SINGLE QUOTE MARK
-\HexGlyph{91}{221}% U+201A SINGLE LOW-9 QUOTE MARK
-\HexGlyph{92}{222}% U+2122 TRADE MARK SIGN
-\HexGlyph{93}{223}% U+FB01 LATIN SMALL LIGATURE FI
-\HexGlyph{94}{224}% U+FB02 LATIN SMALL LIGATURE FL
-\HexGlyph{95}{225}% U+0141 LATIN CAPITAL LETTER L WITH STROKE
-\HexGlyph{96}{226}% U+0152 LATIN CAPITAL LIGATURE OE
-\HexGlyph{97}{227}% U+0160 LATIN CAPITAL LETTER S WITH CARON
-\HexGlyph{98}{230}% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
-\HexGlyph{99}{231}% U+017D LATIN CAPITAL LETTER Z WITH CARON
-\HexGlyph{9A}{232}% U+0131 LATIN SMALL LETTER DOTLESS I
-\HexGlyph{9B}{233}% U+0142 LATIN SMALL LETTER L WITH STROKE
-\HexGlyph{9C}{234}% U+0153 LATIN SMALL LIGATURE OE
-\HexGlyph{9D}{235}% U+0161 LATIN SMALL LETTER S WITH CARON
-\HexGlyph{9E}{236}% U+017E LATIN SMALL LETTER Z WITH CARON
-\HexGlyph{9F}{efHxError}% 237 UNDEF IN PDFDOCENC
-\HexGlyph{A0}{240}% U+20AC EURO SIGN
-\HexGlyph{A1}{241}% U+00A1 INVERTED EXCLAMATION MARK
-\HexGlyph{A2}{242}% U+00A2 CENT SIGN
-\HexGlyph{A3}{243}% U+00A3 POUND SIGN
-\HexGlyph{A4}{244}% U+00A4 CURRENCY SIGN
-\HexGlyph{A5}{245}% U+00A5 YEN SIGN
-\HexGlyph{A6}{246}% U+00A6 BROKEN BAR
-\HexGlyph{A7}{247}% U+00A7 SECTION SIGN
-\HexGlyph{A8}{250}% U+00A8 DIAERESIS
-\HexGlyph{A9}{251}% U+00A9 COPYRIGHT SIGN
-\HexGlyph{AA}{252}% U+00AA FEMININE ORDINAL INDICATOR
-\HexGlyph{AB}{253}% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTE MARK
-\HexGlyph{AC}{254}% U+00AC NOT SIGN
-\HexGlyph{AD}{efHxError}% 255 UNDEFINED IN PDFDOCENC
-\HexGlyph{AE}{256}% U+00AE REGISTERED SIGN
-\HexGlyph{AF}{257}% U+00AF MACRON
-\HexGlyph{B0}{260}% U+00B0 DEGREE SIGN
-\HexGlyph{B1}{261}% U+00B1 PLUS-MINUS SIGN
-\HexGlyph{B2}{262}% U+00B2 SUPERSCRIPT 2
-\HexGlyph{B3}{263}% U+00B3 SUPERSCRIPT 3
-\HexGlyph{B4}{264}% U+00B4 ACUTE ACCENT
-\HexGlyph{B5}{265}% U+00B5 MICRO SIGN
-\HexGlyph{B6}{266}% U+00B6 PILCROW SIGN (PARAGRAPH SIGN)
-\HexGlyph{B7}{267}% U+00B7 MIDDLE DOT
-\HexGlyph{B8}{270}% U+00B8 CEDILLA
-\HexGlyph{B9}{271}% U+00B9 SUPERSCRIPT ONE
-\HexGlyph{BA}{272}% U+00BA MASCULINE ORDINAL INDICATOR
-\HexGlyph{BB}{273}% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTE MARK
-\HexGlyph{BC}{274}% U+00BC VULGAR FRACTION ONE QUARTER
-\HexGlyph{BD}{275}% U+00BD VULGAR FRACTION ONE HALF
-\HexGlyph{BE}{276}% U+00BE VULGAR FRACTION THREE QUARTERS
-\HexGlyph{BF}{277}% U+00BF INVERTED QUESTION MARK
-\HexGlyph{C0}{300}% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
-\HexGlyph{C1}{301}% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
-\HexGlyph{C2}{302}% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-\HexGlyph{C3}{303}% U+00C3 LATIN CAPITAL LETTER A WITH TILDE
-\HexGlyph{C4}{304}% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
-\HexGlyph{C5}{305}% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
-\HexGlyph{C6}{306}% U+00C6 LATIN CAPITAL LETTER AE
-\HexGlyph{C7}{307}% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
-\HexGlyph{C8}{310}% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
-\HexGlyph{C9}{311}% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
-\HexGlyph{CA}{312}% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-\HexGlyph{CB}{313}% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
-\HexGlyph{CC}{314}% U+00CC LATIN CAPITAL LETTER I WITH GRAVE
-\HexGlyph{CD}{315}% U+00CD LATIN CAPITAL LETTER I WITH ACUTE
-\HexGlyph{CE}{316}% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-\HexGlyph{CF}{317}% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
-\HexGlyph{D0}{320}% U+00D0 LATIN CAPITAL LETTER ETH
-\HexGlyph{D1}{321}% U+00D1 LATIN CAPITAL LETTER D WITH TILDE
-\HexGlyph{D2}{322}% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
-\HexGlyph{D3}{323}% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
-\HexGlyph{D4}{324}% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-\HexGlyph{D5}{325}% U+00D5 LATIN CAPITAL LETTER O WITH TILDE
-\HexGlyph{D6}{326}% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
-\HexGlyph{D7}{327}% U+00D7 MULTIPLICATION SIGN
-\HexGlyph{D8}{330}% U+00D8 LATIN CAPITAL LETTER O WITH STROKE
-\HexGlyph{D9}{331}% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
-\HexGlyph{DA}{332}% U+00DA LATIN CAPITAL LETTER U WITH ACUTE
-\HexGlyph{DB}{333}% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-\HexGlyph{DC}{334}% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
-\HexGlyph{DD}{335}% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
-\HexGlyph{DE}{336}% U+00DE LATIN CAPITAL LETTER THORN
-\HexGlyph{DF}{337}% U+00DF LATIN CAPITAL LETTER SHARP S (Eszett)
-\HexGlyph{E0}{340}% U+00E0 LATIN SMALL LETTER A WITH GRAVE
-\HexGlyph{E1}{341}% U+00E1 LATIN SMALL LETTER A WITH ACUTE
-\HexGlyph{E2}{342}% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
-\HexGlyph{E3}{343}% U+00E3 LATIN SMALL LETTER A WITH TILDE
-\HexGlyph{E4}{344}% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
-\HexGlyph{E5}{345}% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
-\HexGlyph{E6}{346}% U+00E6 LATIN SMALL LETTER AE
-\HexGlyph{E7}{347}% U+00E7 LATIN SMALL LETTER C WITH CEDILLA
-\HexGlyph{E8}{350}% U+00E8 LATIN SMALL LETTER E WITH GRAVE
-\HexGlyph{E9}{351}% U+00E9 LATIN SMALL LETTER E WITH ACUTE
-\HexGlyph{EA}{352}% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
-\HexGlyph{EB}{353}% U+00EB LATIN SMALL LETTER E WITH DIAERESIS
-\HexGlyph{EC}{354}% U+00EC LATIN SMALL LETTER I WITH GRAVE
-\HexGlyph{ED}{355}% U+00ED LATIN SMALL LETTER I WITH ACUTE
-\HexGlyph{EE}{356}% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
-\HexGlyph{EF}{357}% U+00EF LATIN SMALL LETTER I WITH DIAERESIS
-\HexGlyph{F0}{360}% U+00F0 LATIN SMALL LETTER ETH
-\HexGlyph{F1}{361}% U+00F1 LATIN SMALL LETTER N WITH TILDE
-\HexGlyph{F2}{362}% U+00F2 LATIN SMALL LETTER O WITH GRAVE
-\HexGlyph{F3}{363}% U+00F3 LATIN SMALL LETTER O WITH ACUTE
-\HexGlyph{F4}{364}% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
-\HexGlyph{F5}{365}% U+00F5 LATIN SMALL LETTER O WITH DIAERESIS
-\HexGlyph{F6}{366}% U+00F6 LATIN SMALL LETTER C WITH ETH
-\HexGlyph{F7}{367}% U+00F7 DIVISION SIGN
-\HexGlyph{F8}{270}% U+00F8 LATIN SMALL LETTER O WITH STROKE
-\HexGlyph{F9}{271}% U+00F9 LATIN SMALL LETTER U WITH GRAVE
-\HexGlyph{FA}{272}% U+00FA LATIN SMALL LETTER U WITH ACUTE
-\HexGlyph{FB}{273}% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
-\HexGlyph{FC}{374}% U+00FC LATIN SMALL LETTER U WITH DIAERESIS
-\HexGlyph{FD}{375}% U+00FD LATIN SMALL LETTER Y WITH ACUTE
-\HexGlyph{FE}{376}% U+00FE LATIN SMALL LETTER C THORN
-\HexGlyph{FF}{377}% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
-\endinput
-%%
-%% End of file `pdfdochex.def'.
+%%
+%% This is file `pdfdochex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,hexoctcodes')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\HexGlyph{00}{efHxError}%{000}
+\HexGlyph{01}{efHxError}%{001}
+\HexGlyph{02}{efHxError}%{002}
+\HexGlyph{03}{efHxError}%{003}
+\HexGlyph{04}{efHxError}%{004}
+\HexGlyph{05}{efHxError}%{005}
+\HexGlyph{06}{efHxError}%{006}
+\HexGlyph{07}{efHxError}%{006}
+\HexGlyph{08}{efHxError}%{008}
+\HexGlyph{09}{efHxError}%{009}
+\HexGlyph{0A}{efHxError}%{012}
+\HexGlyph{0B}{efHxError}%{013}
+\HexGlyph{0C}{efHxError}%{014}
+\HexGlyph{0D}{efHxError}%{015}
+\HexGlyph{0E}{efHxError}%{016}
+\HexGlyph{0F}{efHxError}%{017}
+\HexGlyph{10}{efHxError}%{020}
+\HexGlyph{11}{efHxError}%{021}
+\HexGlyph{12}{efHxError}%{022}
+\HexGlyph{13}{efHxError}%{023}
+\HexGlyph{14}{efHxError}%{024}
+\HexGlyph{15}{efHxError}%{025}
+\HexGlyph{16}{efHxError}%{026}
+\HexGlyph{17}{efHxError}%{027}
+\HexGlyph{18}{030}% U+02D8 BREVE
+\HexGlyph{19}{031}% U+02c7 CARON
+\HexGlyph{1A}{032}% U+02c6 MODIFIER LETTER CIRCUMFLEX ACCENT
+\HexGlyph{1B}{033}% U+02D9 DOT ABOVE
+\HexGlyph{1C}{034}% U+02DD DOUBLE ACUTE ACCENT
+\HexGlyph{1D}{035}% U+02DB OGONEK
+\HexGlyph{1E}{036}% U+02DA RING ABOVEZ
+\HexGlyph{1F}{037}% U+02DC SMALL TILDE
+\HexGlyph{20}{040}% U+0020 SPACE
+\HexGlyph{21}{041}% U+0021 EXCLAMATION MARK
+\HexGlyph{22}{042}% U+0022 QUOTATION MARK
+\HexGlyph{23}{043}% U+0022 NUMBER SIGN
+\HexGlyph{24}{044}% U+0023 DOLLAR SIGN
+\HexGlyph{25}{045}% U+002 PERCENT SIGN
+\HexGlyph{26}{046}% U+0026 AMPERSAND
+\HexGlyph{27}{047}% U+0027 APOSTROPHE
+\HexGlyph{28}{050}% U+0028 LEFT PARENTHESIS
+\HexGlyph{29}{051}% U+0029 RIGHT PAENTHESIS
+\HexGlyph{2A}{052}% U+002A ASTERISK
+\HexGlyph{2B}{053}% U+002B PLUS SIGN
+\HexGlyph{2C}{054}% U+002C COMMA
+\HexGlyph{2D}{055}% U+002D HYPHEN-MINUS
+\HexGlyph{2E}{056}% U+002E FULL STOP
+\HexGlyph{2F}{057}% U+002F SOLIDUS
+\HexGlyph{30}{060}% U+0030 ZERO
+\HexGlyph{31}{061}% U+0031 ONE
+\HexGlyph{32}{062}% U+0032 TWO
+\HexGlyph{33}{063}% U+0033 THREE
+\HexGlyph{34}{064}% U+0034 FOUR
+\HexGlyph{35}{065}% U+0035 FIVE
+\HexGlyph{36}{066}% U+0036 SIX
+\HexGlyph{37}{067}% U+0037 SEVEN
+\HexGlyph{38}{070}% U+0038 EIGHT
+\HexGlyph{39}{071}% U+0039 NINE
+\HexGlyph{3A}{072}% U+003A COLON
+\HexGlyph{3B}{073}% U+003B SEMICOLON
+\HexGlyph{3C}{074}% U+003C LESS-THAN SIGN
+\HexGlyph{3D}{075}% U+003D EQUALS SIGN
+\HexGlyph{3E}{076}% U+003E GREATER-THAN SIGN
+\HexGlyph{3F}{077}% U+003F QUESTION MARK
+\HexGlyph{40}{100}% U+0040 COMMERCIAL AT
+\HexGlyph{41}{101}% U+0041 CAPITAL LETTER A
+\HexGlyph{42}{102}% U+0042 B
+\HexGlyph{43}{103}% U+0043 C
+\HexGlyph{44}{104}% U+0044 D
+\HexGlyph{45}{105}% U+0045 E
+\HexGlyph{46}{106}% U+0046 F
+\HexGlyph{47}{107}% U+0047 G
+\HexGlyph{48}{110}% U+0048 H
+\HexGlyph{49}{111}% U+0049 I
+\HexGlyph{4A}{112}% U+004A J
+\HexGlyph{4B}{113}% U+004B K
+\HexGlyph{4C}{114}% U+004C L
+\HexGlyph{4D}{115}% U+004D M
+\HexGlyph{4E}{116}% U+004E N
+\HexGlyph{4F}{117}% U+004F O
+\HexGlyph{50}{120}% U+0050 P
+\HexGlyph{51}{121}% U+0051 Q
+\HexGlyph{52}{122}% U+0052 R
+\HexGlyph{53}{123}% U+0053 S
+\HexGlyph{54}{124}% U+0054 T
+\HexGlyph{55}{125}% U+0055 U
+\HexGlyph{56}{126}% U+0056 V
+\HexGlyph{57}{127}% U+0057 W
+\HexGlyph{58}{130}% U+0058 X
+\HexGlyph{59}{131}% U+0059 Y
+\HexGlyph{5A}{132}% U+005A Z
+\HexGlyph{5B}{133}% U+005B LEFT SQUARE BRACKET
+\HexGlyph{5C}{134}% U+005C REVERSE SOLIDUS (BACKSLASH)
+\HexGlyph{5D}{135}% U+005D RIGHT SQUARE BRACKET
+\HexGlyph{5E}{136}% U+005E CIRCUMFLEX ACCENT
+\HexGlyph{5F}{137}% U+005F LOW LINE
+\HexGlyph{60}{140}% U+0060 GRAVE ACCENT
+\HexGlyph{61}{141}% U+0061 LATIN SMALL LETTER a
+\HexGlyph{62}{142}% U+0062 b
+\HexGlyph{63}{143}% U+0063 c
+\HexGlyph{64}{144}% U+0064 d
+\HexGlyph{65}{145}% U+0065 e
+\HexGlyph{66}{146}% U+0066 f
+\HexGlyph{67}{147}% U+0067 g
+\HexGlyph{68}{150}% U+0068 h
+\HexGlyph{69}{151}% U+0069 i
+\HexGlyph{6A}{152}% U+006A j
+\HexGlyph{6B}{153}% U+006B k
+\HexGlyph{6C}{154}% U+006C l
+\HexGlyph{6D}{155}% U+006D m
+\HexGlyph{6E}{156}% U+006E n
+\HexGlyph{6F}{157}% U+006F o
+\HexGlyph{70}{160}% U+0070 p
+\HexGlyph{71}{161}% U+0071 q
+\HexGlyph{72}{162}% U+0072 r
+\HexGlyph{73}{163}% U+0073 s
+\HexGlyph{74}{164}% U+0074 t
+\HexGlyph{75}{165}% U+0075 u
+\HexGlyph{76}{166}% U+0076 v
+\HexGlyph{77}{167}% U+0077 w
+\HexGlyph{78}{170}% U+0078 x
+\HexGlyph{79}{171}% U+0079 y
+\HexGlyph{7A}{172}% U+007A z
+\HexGlyph{7B}{173}% U+007B LEFT CURLY BRACKET
+\HexGlyph{7C}{174}% U+007C VERTICAL LINE
+\HexGlyph{7D}{175}% U+007D RIGHT CURLY BRACKET
+\HexGlyph{7E}{176}% U+007E TILDE
+\HexGlyph{7F}{efHxError}% 177 UNDEFINED IN PDFDOCENC
+\HexGlyph{80}{200}% U+2022 BULLET
+\HexGlyph{81}{201}% U+2020 DAGGER
+\HexGlyph{82}{202}% U+2021 DOUBLE DAGGER
+\HexGlyph{83}{203}% U+2026 HORIZONTAL ELLIPSIS
+\HexGlyph{84}{204}% U+2014 EM DASH
+\HexGlyph{85}{205}% U+2013 EN DASH
+\HexGlyph{86}{206}% U+0192 LATIN SMALL LETTER F WITH HOOK
+\HexGlyph{87}{207}% U+2044 FRACTION SLASH
+\HexGlyph{88}{210}% U+2039 SINGLE LEFT-POINTING ANGLE QUOTE MARK
+\HexGlyph{89}{211}% U+203A SINGLE RIGHT-POINTING ANGLE QUOTE MARK
+\HexGlyph{8A}{212}% U+2212 MINUS-SIGN
+\HexGlyph{8B}{213}% U+2030 PER MILL SIGN
+\HexGlyph{8C}{214}% U+201E DOUBLE LOW-9 QUOTE MARK
+\HexGlyph{8D}{215}% U+201C LEFT DOUBLE QUOTE MARK
+\HexGlyph{8E}{216}% U+201C RIGHT DOUBLE QUOTE MARK
+\HexGlyph{8F}{217}% U+2018 LEFT SINGLE QUOTE MARK
+\HexGlyph{90}{220}% U+2019 RIGHT SINGLE QUOTE MARK
+\HexGlyph{91}{221}% U+201A SINGLE LOW-9 QUOTE MARK
+\HexGlyph{92}{222}% U+2122 TRADE MARK SIGN
+\HexGlyph{93}{223}% U+FB01 LATIN SMALL LIGATURE FI
+\HexGlyph{94}{224}% U+FB02 LATIN SMALL LIGATURE FL
+\HexGlyph{95}{225}% U+0141 LATIN CAPITAL LETTER L WITH STROKE
+\HexGlyph{96}{226}% U+0152 LATIN CAPITAL LIGATURE OE
+\HexGlyph{97}{227}% U+0160 LATIN CAPITAL LETTER S WITH CARON
+\HexGlyph{98}{230}% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+\HexGlyph{99}{231}% U+017D LATIN CAPITAL LETTER Z WITH CARON
+\HexGlyph{9A}{232}% U+0131 LATIN SMALL LETTER DOTLESS I
+\HexGlyph{9B}{233}% U+0142 LATIN SMALL LETTER L WITH STROKE
+\HexGlyph{9C}{234}% U+0153 LATIN SMALL LIGATURE OE
+\HexGlyph{9D}{235}% U+0161 LATIN SMALL LETTER S WITH CARON
+\HexGlyph{9E}{236}% U+017E LATIN SMALL LETTER Z WITH CARON
+\HexGlyph{9F}{efHxError}% 237 UNDEF IN PDFDOCENC
+\HexGlyph{A0}{240}% U+20AC EURO SIGN
+\HexGlyph{A1}{241}% U+00A1 INVERTED EXCLAMATION MARK
+\HexGlyph{A2}{242}% U+00A2 CENT SIGN
+\HexGlyph{A3}{243}% U+00A3 POUND SIGN
+\HexGlyph{A4}{244}% U+00A4 CURRENCY SIGN
+\HexGlyph{A5}{245}% U+00A5 YEN SIGN
+\HexGlyph{A6}{246}% U+00A6 BROKEN BAR
+\HexGlyph{A7}{247}% U+00A7 SECTION SIGN
+\HexGlyph{A8}{250}% U+00A8 DIAERESIS
+\HexGlyph{A9}{251}% U+00A9 COPYRIGHT SIGN
+\HexGlyph{AA}{252}% U+00AA FEMININE ORDINAL INDICATOR
+\HexGlyph{AB}{253}% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTE MARK
+\HexGlyph{AC}{254}% U+00AC NOT SIGN
+\HexGlyph{AD}{efHxError}% 255 UNDEFINED IN PDFDOCENC
+\HexGlyph{AE}{256}% U+00AE REGISTERED SIGN
+\HexGlyph{AF}{257}% U+00AF MACRON
+\HexGlyph{B0}{260}% U+00B0 DEGREE SIGN
+\HexGlyph{B1}{261}% U+00B1 PLUS-MINUS SIGN
+\HexGlyph{B2}{262}% U+00B2 SUPERSCRIPT 2
+\HexGlyph{B3}{263}% U+00B3 SUPERSCRIPT 3
+\HexGlyph{B4}{264}% U+00B4 ACUTE ACCENT
+\HexGlyph{B5}{265}% U+00B5 MICRO SIGN
+\HexGlyph{B6}{266}% U+00B6 PILCROW SIGN (PARAGRAPH SIGN)
+\HexGlyph{B7}{267}% U+00B7 MIDDLE DOT
+\HexGlyph{B8}{270}% U+00B8 CEDILLA
+\HexGlyph{B9}{271}% U+00B9 SUPERSCRIPT ONE
+\HexGlyph{BA}{272}% U+00BA MASCULINE ORDINAL INDICATOR
+\HexGlyph{BB}{273}% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTE MARK
+\HexGlyph{BC}{274}% U+00BC VULGAR FRACTION ONE QUARTER
+\HexGlyph{BD}{275}% U+00BD VULGAR FRACTION ONE HALF
+\HexGlyph{BE}{276}% U+00BE VULGAR FRACTION THREE QUARTERS
+\HexGlyph{BF}{277}% U+00BF INVERTED QUESTION MARK
+\HexGlyph{C0}{300}% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
+\HexGlyph{C1}{301}% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\HexGlyph{C2}{302}% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\HexGlyph{C3}{303}% U+00C3 LATIN CAPITAL LETTER A WITH TILDE
+\HexGlyph{C4}{304}% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\HexGlyph{C5}{305}% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+\HexGlyph{C6}{306}% U+00C6 LATIN CAPITAL LETTER AE
+\HexGlyph{C7}{307}% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\HexGlyph{C8}{310}% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
+\HexGlyph{C9}{311}% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\HexGlyph{CA}{312}% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+\HexGlyph{CB}{313}% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\HexGlyph{CC}{314}% U+00CC LATIN CAPITAL LETTER I WITH GRAVE
+\HexGlyph{CD}{315}% U+00CD LATIN CAPITAL LETTER I WITH ACUTE
+\HexGlyph{CE}{316}% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\HexGlyph{CF}{317}% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+\HexGlyph{D0}{320}% U+00D0 LATIN CAPITAL LETTER ETH
+\HexGlyph{D1}{321}% U+00D1 LATIN CAPITAL LETTER D WITH TILDE
+\HexGlyph{D2}{322}% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
+\HexGlyph{D3}{323}% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\HexGlyph{D4}{324}% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\HexGlyph{D5}{325}% U+00D5 LATIN CAPITAL LETTER O WITH TILDE
+\HexGlyph{D6}{326}% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\HexGlyph{D7}{327}% U+00D7 MULTIPLICATION SIGN
+\HexGlyph{D8}{330}% U+00D8 LATIN CAPITAL LETTER O WITH STROKE
+\HexGlyph{D9}{331}% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
+\HexGlyph{DA}{332}% U+00DA LATIN CAPITAL LETTER U WITH ACUTE
+\HexGlyph{DB}{333}% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+\HexGlyph{DC}{334}% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\HexGlyph{DD}{335}% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\HexGlyph{DE}{336}% U+00DE LATIN CAPITAL LETTER THORN
+\HexGlyph{DF}{337}% U+00DF LATIN CAPITAL LETTER SHARP S (Eszett)
+\HexGlyph{E0}{340}% U+00E0 LATIN SMALL LETTER A WITH GRAVE
+\HexGlyph{E1}{341}% U+00E1 LATIN SMALL LETTER A WITH ACUTE
+\HexGlyph{E2}{342}% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\HexGlyph{E3}{343}% U+00E3 LATIN SMALL LETTER A WITH TILDE
+\HexGlyph{E4}{344}% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\HexGlyph{E5}{345}% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
+\HexGlyph{E6}{346}% U+00E6 LATIN SMALL LETTER AE
+\HexGlyph{E7}{347}% U+00E7 LATIN SMALL LETTER C WITH CEDILLA
+\HexGlyph{E8}{350}% U+00E8 LATIN SMALL LETTER E WITH GRAVE
+\HexGlyph{E9}{351}% U+00E9 LATIN SMALL LETTER E WITH ACUTE
+\HexGlyph{EA}{352}% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+\HexGlyph{EB}{353}% U+00EB LATIN SMALL LETTER E WITH DIAERESIS
+\HexGlyph{EC}{354}% U+00EC LATIN SMALL LETTER I WITH GRAVE
+\HexGlyph{ED}{355}% U+00ED LATIN SMALL LETTER I WITH ACUTE
+\HexGlyph{EE}{356}% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\HexGlyph{EF}{357}% U+00EF LATIN SMALL LETTER I WITH DIAERESIS
+\HexGlyph{F0}{360}% U+00F0 LATIN SMALL LETTER ETH
+\HexGlyph{F1}{361}% U+00F1 LATIN SMALL LETTER N WITH TILDE
+\HexGlyph{F2}{362}% U+00F2 LATIN SMALL LETTER O WITH GRAVE
+\HexGlyph{F3}{363}% U+00F3 LATIN SMALL LETTER O WITH ACUTE
+\HexGlyph{F4}{364}% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\HexGlyph{F5}{365}% U+00F5 LATIN SMALL LETTER O WITH DIAERESIS
+\HexGlyph{F6}{366}% U+00F6 LATIN SMALL LETTER C WITH ETH
+\HexGlyph{F7}{367}% U+00F7 DIVISION SIGN
+\HexGlyph{F8}{270}% U+00F8 LATIN SMALL LETTER O WITH STROKE
+\HexGlyph{F9}{271}% U+00F9 LATIN SMALL LETTER U WITH GRAVE
+\HexGlyph{FA}{272}% U+00FA LATIN SMALL LETTER U WITH ACUTE
+\HexGlyph{FB}{273}% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
+\HexGlyph{FC}{374}% U+00FC LATIN SMALL LETTER U WITH DIAERESIS
+\HexGlyph{FD}{375}% U+00FD LATIN SMALL LETTER Y WITH ACUTE
+\HexGlyph{FE}{376}% U+00FE LATIN SMALL LETTER C THORN
+\HexGlyph{FF}{377}% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
+\endinput
+%%
+%% End of file `pdfdochex.def'.
diff --git a/texmf-dist/tex/latex/acrotex/setcorder.def b/texmf-dist/tex/latex/acrotex/setcorder.def
index 1135abd9..3826d623 100644
--- a/texmf-dist/tex/latex/acrotex/setcorder.def
+++ b/texmf-dist/tex/latex/acrotex/setcorder.def
@@ -1,66 +1,66 @@
-%%
-%% This is file `setcorder.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,setcorder')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{insDLJS}{cojs}{eforms: JavaScript to set calculation order}
-var debugCalc=false;
-ef_setCalcOrder.lastIndex=0;
-function ef_setCalcOrder (a) {
- var o1, o2, f;
- while ( a.length > 0) {
- if (a.length > 1) {
- f=a.shift();
- o1=this.getField(f);
- if ( o1 == null ) {
- ef_CalcOrderErr(f);
- continue;
- }
- f = a[0];
- o2=this.getField(f);
- if ( o2 == null ) {
- ef_CalcOrderErr(f);
- a.shift();
- continue;
- }
- if ( o2.calcOrderIndex < o1.calcOrderIndex ) {
- o2.calcOrderIndex=o1.calcOrderIndex+1;
-ef_setCalcOrder.lastIndex=o2.calcOrderIndex;
-}
- } else {
- f=a.shift();
-o1=this.getField(f);
- if ( o1 == null ) {
- ef_CalcOrderErr(f);
- continue;
- }
-o1.calcOrderIndex=ef_setCalcOrder.lastIndex;
-}
- }
-}
-function ef_CalcOrderErr(f) {
- console.show(); app.beep(0);
- console.println("calcOrder: the field \""+ f
- + "\" does not exist in this document, skipping it.\n\n"
- + "calcOrder: Check the case sensitive spelling of the field.");
-}
-var _EfCalcOrder=\efCalcOrder;
-ef_setCalcOrder(_EfCalcOrder);
-\end{insDLJS}
-\endinput
-%%
-%% End of file `setcorder.def'.
+%%
+%% This is file `setcorder.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,setcorder')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{insDLJS}{cojs}{eforms: JavaScript to set calculation order}
+var debugCalc=false;
+ef_setCalcOrder.lastIndex=0;
+function ef_setCalcOrder (a) {
+ var o1, o2, f;
+ while ( a.length > 0) {
+ if (a.length > 1) {
+ f=a.shift();
+ o1=this.getField(f);
+ if ( o1 == null ) {
+ ef_CalcOrderErr(f);
+ continue;
+ }
+ f = a[0];
+ o2=this.getField(f);
+ if ( o2 == null ) {
+ ef_CalcOrderErr(f);
+ a.shift();
+ continue;
+ }
+ if ( o2.calcOrderIndex < o1.calcOrderIndex ) {
+ o2.calcOrderIndex=o1.calcOrderIndex+1;
+ef_setCalcOrder.lastIndex=o2.calcOrderIndex;
+}
+ } else {
+ f=a.shift();
+o1=this.getField(f);
+ if ( o1 == null ) {
+ ef_CalcOrderErr(f);
+ continue;
+ }
+o1.calcOrderIndex=ef_setCalcOrder.lastIndex;
+}
+ }
+}
+function ef_CalcOrderErr(f) {
+ console.show(); app.beep(0);
+ console.println("calcOrder: the field \""+ f
+ + "\" does not exist in this document, skipping it.\n\n"
+ + "calcOrder: Check the case sensitive spelling of the field.");
+}
+var _EfCalcOrder=\efCalcOrder;
+ef_setCalcOrder(_EfCalcOrder);
+\end{insDLJS}
+\endinput
+%%
+%% End of file `setcorder.def'.
diff --git a/texmf-dist/tex/latex/acrotex/taborder.sty b/texmf-dist/tex/latex/acrotex/taborder.sty
index 1a633f74..64abc732 100644
--- a/texmf-dist/tex/latex/acrotex/taborder.sty
+++ b/texmf-dist/tex/latex/acrotex/taborder.sty
@@ -1,92 +1,92 @@
-%%
-%% This is file `taborder.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% taborder.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% taborder.sty package, %%
-%% Copyright (C) 2009--2016 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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\NeedsTeXFormat{LaTeX2e}[1997/12/01]
-\ProvidesPackage{taborder}
- [2009/09/04 v0.1 taborder: Sets the tab order, Acrobat Distiller only (dps)]
-\DeclareOption{structure}{\let\to@earlyendinput\relax}
-\let\to@earlyendinput\endinput
-\let\setTabOrderByList\relax\let\setTabOrderByNumber\relax
-\ProcessOptions
-\newif\ifto@structOrder\to@structOrderfalse
-\newcommand{\setTabOrder}[1]{\begingroup
- \global\to@structOrderfalse
- \def\to@to@C{C}\def\to@to@R{R}\def\to@to@S{S}%
- \def\to@to@W{W}\def\to@to@A{A}\def\to@to@us{UNSPECIFIED}%
- \uppercase{\def\ef@taborder{#1}}%
- \ifx\ef@taborder\@empty
- \else\ifx\ef@taborder\to@to@us
- \let\ef@taborder\@empty
- \else\ifx\to@to@C\ef@taborder
- \else\ifx\to@to@R\ef@taborder
- \else\ifx\to@to@S\ef@taborder
- \ifx\to@earlyendinput\endinput
- \PackageWarning{taborder}{%
- The structure (S) option is supported only\MessageBreak
- with Acrobat Distiller. Using the default\MessageBreak
- value of 'unspecified'}\let\ef@taborder\@empty
- \else\global\to@structOrdertrue\fi
- \else\ifx\to@to@W\ef@taborder
- \else\ifx\to@to@A\ef@taborder
- \else\PackageWarning{taborder}{%
- Invalid value for \string\setTabOrder. Permissible \MessageBreak
- values are R, C, S, W, A, and unspecified. Using \MessageBreak
- the default value of 'unspecified'}\let\ef@taborder\@empty
- \fi\fi\fi\fi\fi\fi\fi\ef@setTabOrder
-}
-\to@earlyendinput
-\def\ef@setTabOrder{%
- \ifx\ef@taborder\@empty\else\literalps@out{%
- [ {ThisPage} <</Tabs/\ef@taborder>> /PUT pdfmark}\fi
- \endgroup
-}
-\newcommand{\setTabOrderByList}{%
- \global\to@settabsbylisttrue
- \global\let\setStructTabOrder\to@setStructTabOrder
-}
-\newcommand{\setTabOrderByNumber}{%
- \global\to@settabsbylistfalse
- \global\let\setStructTabOrder\@gobble
-}
-\newcommand{\to@setStructTabOrder}[1]{%
- \@setStructTabOrder#1\end
-}
-\newif\ifto@settabsbylist\to@settabsbylisttrue
-\let\setStructTabOrder\to@setStructTabOrder
-\define@key{structOpts}{title}[]{\def\structOpts@title{#1}}
-\define@key{structOpts}{type}[Form]{\def\structOpts@type{#1}}
-\newcommand{\@setStructTabOrder}[2][]{%
- \setkeys{structOpts}{title,type,#1}
- \ifx#2\end\else\literalps@out{%
- [/Subtype/\structOpts@type\ifx\structOpts@title\@empty
- \else/Title (\structOpts@title)\fi/StPNE pdfmark
- [/Obj {#2} /StOBJ pdfmark
- [/StPop pdfmark}\expandafter\@setStructTabOrder
- \fi
-}
-\def\to@insertStrucTabOrder#1{%
- \ifto@structOrder\ifx\eq@objdef\@empty\else
- \ifx\eq@taborder\@empty\else\literalps@out{%
- [/Subtype/#1/At \eq@taborder/StPNE pdfmark
- [/Obj {\eq@objdefName} /StOBJ pdfmark [/StPop pdfmark}%
- \fi\fi\fi
-}
-\endinput
-%%
-%% End of file `taborder.sty'.
+%%
+%% This is file `taborder.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% taborder.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% taborder.sty package, %%
+%% Copyright (C) 2009--2016 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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{taborder}
+ [2009/09/04 v0.1 taborder: Sets the tab order, Acrobat Distiller only (dps)]
+\DeclareOption{structure}{\let\to@earlyendinput\relax}
+\let\to@earlyendinput\endinput
+\let\setTabOrderByList\relax\let\setTabOrderByNumber\relax
+\ProcessOptions
+\newif\ifto@structOrder\to@structOrderfalse
+\newcommand{\setTabOrder}[1]{\begingroup
+ \global\to@structOrderfalse
+ \def\to@to@C{C}\def\to@to@R{R}\def\to@to@S{S}%
+ \def\to@to@W{W}\def\to@to@A{A}\def\to@to@us{UNSPECIFIED}%
+ \uppercase{\def\ef@taborder{#1}}%
+ \ifx\ef@taborder\@empty
+ \else\ifx\ef@taborder\to@to@us
+ \let\ef@taborder\@empty
+ \else\ifx\to@to@C\ef@taborder
+ \else\ifx\to@to@R\ef@taborder
+ \else\ifx\to@to@S\ef@taborder
+ \ifx\to@earlyendinput\endinput
+ \PackageWarning{taborder}{%
+ The structure (S) option is supported only\MessageBreak
+ with Acrobat Distiller. Using the default\MessageBreak
+ value of 'unspecified'}\let\ef@taborder\@empty
+ \else\global\to@structOrdertrue\fi
+ \else\ifx\to@to@W\ef@taborder
+ \else\ifx\to@to@A\ef@taborder
+ \else\PackageWarning{taborder}{%
+ Invalid value for \string\setTabOrder. Permissible \MessageBreak
+ values are R, C, S, W, A, and unspecified. Using \MessageBreak
+ the default value of 'unspecified'}\let\ef@taborder\@empty
+ \fi\fi\fi\fi\fi\fi\fi\ef@setTabOrder
+}
+\to@earlyendinput
+\def\ef@setTabOrder{%
+ \ifx\ef@taborder\@empty\else\literalps@out{%
+ [ {ThisPage} <</Tabs/\ef@taborder>> /PUT pdfmark}\fi
+ \endgroup
+}
+\newcommand{\setTabOrderByList}{%
+ \global\to@settabsbylisttrue
+ \global\let\setStructTabOrder\to@setStructTabOrder
+}
+\newcommand{\setTabOrderByNumber}{%
+ \global\to@settabsbylistfalse
+ \global\let\setStructTabOrder\@gobble
+}
+\newcommand{\to@setStructTabOrder}[1]{%
+ \@setStructTabOrder#1\end
+}
+\newif\ifto@settabsbylist\to@settabsbylisttrue
+\let\setStructTabOrder\to@setStructTabOrder
+\define@key{structOpts}{title}[]{\def\structOpts@title{#1}}
+\define@key{structOpts}{type}[Form]{\def\structOpts@type{#1}}
+\newcommand{\@setStructTabOrder}[2][]{%
+ \setkeys{structOpts}{title,type,#1}
+ \ifx#2\end\else\literalps@out{%
+ [/Subtype/\structOpts@type\ifx\structOpts@title\@empty
+ \else/Title (\structOpts@title)\fi/StPNE pdfmark
+ [/Obj {#2} /StOBJ pdfmark
+ [/StPop pdfmark}\expandafter\@setStructTabOrder
+ \fi
+}
+\def\to@insertStrucTabOrder#1{%
+ \ifto@structOrder\ifx\eq@objdef\@empty\else
+ \ifx\eq@taborder\@empty\else\literalps@out{%
+ [/Subtype/#1/At \eq@taborder/StPNE pdfmark
+ [/Obj {\eq@objdefName} /StOBJ pdfmark [/StPop pdfmark}%
+ \fi\fi\fi
+}
+\endinput
+%%
+%% End of file `taborder.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/template.def b/texmf-dist/tex/latex/acrotex/template.def
index b9099ad4..62b9307f 100644
--- a/texmf-dist/tex/latex/acrotex/template.def
+++ b/texmf-dist/tex/latex/acrotex/template.def
@@ -1,257 +1,257 @@
-%%
-%% This is file `template.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,template')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesFile{template.def}
- [2018/03/21 v8.2.2 %
- Exerquiz template for language support (dps)]
-%%------------- Instructions ------------------------------------
-%% Make your language localizations to this file and rename it to
-%% something like \texttt{eq<mylang>.def}, where \texttt{<mylang>}
-%% is a short 2-letter designator of the language. Test the tile
-%% by inputting it in the preamble of your document
-%% \input{eq<mylang>.def}. When satisfied, send it to me at
-%% dpstory@uakron.edu or dpstory@acrotex.net.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web.sty %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Language dependent definitions for Web.sty
-\DeclareOption{newlanguage}{%
- \AtEndOfPackage{%
- \def\today{\ifcase\month\or January
- \or February \or March \or April
- \or May \or June \or July \or August
- \or September \or October \or November
- \or December \fi \the\day, \the\year}
- \def\web@versionlabel{Version}
- \def\web@toc{Table of Contents}
- \def\web@continued{cont.}
- \def\web@article{Begin \hyperlink{section.1}{Article}}
- \def\web@directory{Directory}
- \def\web@revision{Last Revision Date:}
- \def\web@copyright{Copyright}
- \def\web@section{Section}
- % Label Navibar
- \def\web@back{Back}
- \def\web@doc{Doc}} % restricted to three characters
- \PassOptionsToPackage{newlanguage}{exerquiz}
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeclareOption{newlanguage}{%
- \def\LangRedefinitions{\InputIfFileExists{eqlang.def}%
- {\PackageInfo{exerquiz}{Inputting a New Language Option}}%
- {\PackageInfo{exerquiz}{Language Option: Cannot find the file
- eqpo.def, using the default, English.}}}}
-
-% The exercise label
-% Accents: \renewcommand\exlabel{\"Ubung} (German)
-\renewcommand\exlabel{Exercise}
-% The value of this macro is written to \jobname.sol,
-% accented characters must be protected with a \protect
-% E.g., \renewcommand\exlabelsol{\protect\"Ubung} (German)
-\renewcommand\exlabelsol{\exlabel}
-
-% Title of exercise solution section
-% E.g.: \renewcommand\exsectitle
-% {L\"osungen der \exlabel en} (German)
-\renewcommand\exsectitle{Solutions to \exlabel s}
-\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
-
-% Solution label for solutionafter option for exercise
-\renewcommand\exsolafter{\textit{Solution}:}
-
-% Title of short quiz solution section
-% Example: \renewcommand\eq@sqslsectitle
-% {L\"osungen der Aufgaben} (German)
-\renewcommand\eq@sqslsectitle{Solutions to Quizzes}
-\renewcommand\sqslsectitle{\eq@sqslsectitle}
-
-% Running header/section title for solutions to short quizzes
-\renewcommand\eq@sqslsecrunhead{Solutions to Quizzes}
-% User access
-\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
-
-% Label for solutions to short quizzes, appears
-% in solutions sections
-% Protect accents with \protect
-% E.g.: \renewcommand\eq@sqsllabel
-% {\string\textbf{L\protect\"osung zu Aufgabe:}} (German)
-\renewcommand\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
-% User access
-\renewcommand\sqsllabel{\eq@sqsllabel}
-
-% Solution label for solutionafter option for shortquiz
-\renewcommand\sqsolafter{\textit{Solution}:}
-
-% User access to shortquiz label
-\renewcommand\sqlabel{\eq@sqlabel}
-% Here is the default short quiz label.
-\sqDefaultFmtTitle{\textcolor{red}{Quiz.}}
-
-% Here is the default short quiz return label
-% No formatting allowed
-\renewcommand\eq@sqslrtnlabel{End Quiz}
-% User access to shortquiz label
-\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
-
-% Short quiz feedback messages
-\renewcommand\eqsqrtmsg{"Right!"}
-\renewcommand\eqsqwgmsg{"Wrong!"}
-\renewcommand\doNotShowAgainMsg{Do not show this message again}
-
-% Here is the default quiz label.
-% No formatting allowed
-% For Example: \renewcommand\eq@bqlabel{D\'ebut} (French)
-\renewcommand\eq@bqlabel{Begin Quiz}
-% User access to shortquiz label
-\renewcommand\bqlabel{\eq@bqlabel}
-% Used for writing JavaScript Messages on screen.
-% Use PDFDocEncoding
-% For Example:
-% \renewcommand\eq@bqlabelISO{D\string\351but} (French)
-% Use \string not \protect, this helps out
-% TeX4ht by Eitan Gurari.
-\renewcommand\eq@bqlabelISO{\eq@bqlabel}
-\renewcommand\bqlabelISO{\eq@bqlabel}
-% Default title for a quiz used for \verb!\@currentlablename!
-\setDefShortQuizLabelName{Quiz}
-\setDefQuizLabelName{Quiz}
-
-% Here is the default quiz label.
-% No formatting allowed
-\renewcommand\eq@eqlabel{End Quiz}
-% User access to shortquiz label
-\renewcommand\eqlabel{\eq@eqlabel}
-
-% JavaScript Messages for Quiz Environments. Use PDFDocEncoding
-% Note: Use \string rather than \protect for escape codes,
-% i.e. \string\374
-%
-% In the Text Field showing the score, there is the default
-% phrase in English
-% Score: 2 out of 3, the word "Score" and "out of" needs
-% translation.
-\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{out of}
-\renewcommand\eq@ptScore{Score:}
-% used in summary tables
-\renewcommand\stOutOf{of}
-% If you are taking a quiz and click on an alternative without
-% initializing the quiz
-% first, this message appears.
-% This string is placed in the DLJS, so the escape sequences
-% need to be protected more. Instead of \string\340 we need
-% \string\\340.
-% Example: \renewcommand\eqInitQuizMsg{% (German)
-% "Sie m\string\\374ssen die Aufgaben initialisieren!
-% Bitte klicken Sie auf "+msg+"."}
-\renewcommand\eqInitQuizMsg{%
- "You must initialize the Quiz! Click on "+msg+"."}
-
-% This macro doesn't usually need translation, it uses \eqScore
-% and \eqOutOf. However, if the sentence "Score: 2 out of 3"
-% does not translate conveniently into a particular language,
-% this macro may have to be modified. It's the one that puts
-% the message in the message box.
-\renewcommand\eqQuizTotalMsg
- {"\eqScore\space"+Score+" \eqOutOf\space"+nQuestions}
-\renewcommand\eqQuizPointsMsg{%
- "\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal}
-\renewcommand\eqQuizPercentMsg{pcScore+"\%"}
-\renewcommand\eqQuizGradeMsg{quizGrade}
-
-% In the link form of a quiz, of you change your choice,
-% this message appears. This string is placed in the
-% DLJS, so the escape sequences need to be protected more.
-% Instead of \string\340 we need \string\\340.
-% For Example: \renewcommand\eqMadeChoice{%
-% "Vous avez d\string\\351j\string\\340 fait un choix,
-% ce choix est ("+Responses[probno]+").
-% Souhaitez vous le modifier ?"} (French)
-\renewcommand\eqMadeChoice{%
- "You have already made a choice.
- Your choice was ("+Responses[probno]+").
- Do you want to change it?"}
-% Default button labels for \eqButton
-% Accents are handled as above:
-% A French Language Example
-% \renewcommand\eq@local@CA{R\string\351ponses}
-% \renewcommand\eq@local@RC{Correctes}
-% \renewcommand\eq@local@AC{SVP !}
-\renewcommand\eq@local@CA{Correct}
-\renewcommand\eq@local@RC{My Answers!}
-\renewcommand\eq@local@AC{Please!}
-
-% Default button label of \CorrAnsButton.
-\renewcommand\eq@local@CorrAnsButton{Ans}
-% Default button label of \sqClearButton
-\renewcommand{\eq@local@sqClearButton}{Clear}
-% Short string used by the \PromptButton
-\renewcommand{\AnsPromptBtnStr}{Answer:\space}
-
-% These (error) messages are generated when the user enters an
-% invalid math expression into a math fill-in response box.
-% The messages come in the form of an eqAppAlert() so
-% PDFDocEncoding needs to be used.
-\renewcommand\eqerrABS{"Absolute values not balanced. Please correct."}
-\renewcommand\eqerrBadMathFunc{"The expression \""+aF[i]+"\" is neither
- a defined " +"function, nor a valid math expression."}
-\renewcommand\eqParens{"Parentheses"}
-\renewcommand\eqBrackets{"Brackets"}
-\renewcommand\eqBraces{"Braces"}
-\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " not balanced.
- Please correct."}
-\renewcommand\eqerrBadExp{"Invalid mathematical expression.
- A problem with one of the exponents. Please correct."}
-\renewcommand\eqerrUnfinishQuiz{"There is an unfinished quiz,
- please finish before moving on to another."}
-\renewcommand\noPeekMsg{"Viewing Solutions to quizzes is not allowed
- until you take or finish this quiz!"}
-\renewcommand\highThresholdMsg{"You are required to respond to all
- questions before the quiz is evaluated."}
-\renewcommand\eqSyntaxErrorUndefVar{"Syntax Error: Possibly an
- undefined variable present."}
-\newcommand{\eqSyntaxErrorComma}{"Syntax Error: A comma was found"
- + " in your response \\""
- + UserAns + "\\". Please remove the comma, or this answer"
- + " will be marked as wrong."}
-\renewcommand{\limSelWarningMsg}{"For this questions, you are allowed to
- make at most " + n + " selections."}
-\renewcommand{\promptButtonMsg}{%
- "Would you like to see the correct answer at this time? "
- + "Your current answer will be the one that will be scored. "
- + "If you click on \\"Yes\\",
- you will not be able to change your answer."
-}
-\renewcommand{\defaultReqFormMsg}{%
- "The expression is not in the expected form."}
-\renewcommand\eqAnd{and}
-%%%%%%%%%%%%%%%%%%%%%% End Message Section %%%%%%%%%%%%%
-%% Some typeout messages %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\typeout{Inputting French Option}
-\typeout{French Option: Cannot find the file eqfr.def, using the
- default, English.}
-\typeout{Solutions not allowed with this option}
-\typeout{Check: `#1' is not an acceptable option, inserting
- default, `check'.}
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\endinput
-%%
-%% End of file `template.def'.
+%%
+%% This is file `template.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,template')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ProvidesFile{template.def}
+ [2018/03/21 v8.2.2 %
+ Exerquiz template for language support (dps)]
+%%------------- Instructions ------------------------------------
+%% Make your language localizations to this file and rename it to
+%% something like \texttt{eq<mylang>.def}, where \texttt{<mylang>}
+%% is a short 2-letter designator of the language. Test the tile
+%% by inputting it in the preamble of your document
+%% \input{eq<mylang>.def}. When satisfied, send it to me at
+%% dpstory@uakron.edu or dpstory@acrotex.net.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Web.sty %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Language dependent definitions for Web.sty
+\DeclareOption{newlanguage}{%
+ \AtEndOfPackage{%
+ \def\today{\ifcase\month\or January
+ \or February \or March \or April
+ \or May \or June \or July \or August
+ \or September \or October \or November
+ \or December \fi \the\day, \the\year}
+ \def\web@versionlabel{Version}
+ \def\web@toc{Table of Contents}
+ \def\web@continued{cont.}
+ \def\web@article{Begin \hyperlink{section.1}{Article}}
+ \def\web@directory{Directory}
+ \def\web@revision{Last Revision Date:}
+ \def\web@copyright{Copyright}
+ \def\web@section{Section}
+ % Label Navibar
+ \def\web@back{Back}
+ \def\web@doc{Doc}} % restricted to three characters
+ \PassOptionsToPackage{newlanguage}{exerquiz}
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\DeclareOption{newlanguage}{%
+ \def\LangRedefinitions{\InputIfFileExists{eqlang.def}%
+ {\PackageInfo{exerquiz}{Inputting a New Language Option}}%
+ {\PackageInfo{exerquiz}{Language Option: Cannot find the file
+ eqpo.def, using the default, English.}}}}
+
+% The exercise label
+% Accents: \renewcommand\exlabel{\"Ubung} (German)
+\renewcommand\exlabel{Exercise}
+% The value of this macro is written to \jobname.sol,
+% accented characters must be protected with a \protect
+% E.g., \renewcommand\exlabelsol{\protect\"Ubung} (German)
+\renewcommand\exlabelsol{\exlabel}
+
+% Title of exercise solution section
+% E.g.: \renewcommand\exsectitle
+% {L\"osungen der \exlabel en} (German)
+\renewcommand\exsectitle{Solutions to \exlabel s}
+\renewcommand\exsecrunhead{\exsectitle} %% change to @ form
+
+% Solution label for solutionafter option for exercise
+\renewcommand\exsolafter{\textit{Solution}:}
+
+% Title of short quiz solution section
+% Example: \renewcommand\eq@sqslsectitle
+% {L\"osungen der Aufgaben} (German)
+\renewcommand\eq@sqslsectitle{Solutions to Quizzes}
+\renewcommand\sqslsectitle{\eq@sqslsectitle}
+
+% Running header/section title for solutions to short quizzes
+\renewcommand\eq@sqslsecrunhead{Solutions to Quizzes}
+% User access
+\renewcommand\sqslsecrunhead{\eq@sqslsecrunhead}
+
+% Label for solutions to short quizzes, appears
+% in solutions sections
+% Protect accents with \protect
+% E.g.: \renewcommand\eq@sqsllabel
+% {\string\textbf{L\protect\"osung zu Aufgabe:}} (German)
+\renewcommand\eq@sqsllabel{\string\textbf{Solution to Quiz:}}
+% User access
+\renewcommand\sqsllabel{\eq@sqsllabel}
+
+% Solution label for solutionafter option for shortquiz
+\renewcommand\sqsolafter{\textit{Solution}:}
+
+% User access to shortquiz label
+\renewcommand\sqlabel{\eq@sqlabel}
+% Here is the default short quiz label.
+\sqDefaultFmtTitle{\textcolor{red}{Quiz.}}
+
+% Here is the default short quiz return label
+% No formatting allowed
+\renewcommand\eq@sqslrtnlabel{End Quiz}
+% User access to shortquiz label
+\renewcommand\sqslrtnlabel{\eq@sqslrtnlabel}
+
+% Short quiz feedback messages
+\renewcommand\eqsqrtmsg{"Right!"}
+\renewcommand\eqsqwgmsg{"Wrong!"}
+\renewcommand\doNotShowAgainMsg{Do not show this message again}
+
+% Here is the default quiz label.
+% No formatting allowed
+% For Example: \renewcommand\eq@bqlabel{D\'ebut} (French)
+\renewcommand\eq@bqlabel{Begin Quiz}
+% User access to shortquiz label
+\renewcommand\bqlabel{\eq@bqlabel}
+% Used for writing JavaScript Messages on screen.
+% Use PDFDocEncoding
+% For Example:
+% \renewcommand\eq@bqlabelISO{D\string\351but} (French)
+% Use \string not \protect, this helps out
+% TeX4ht by Eitan Gurari.
+\renewcommand\eq@bqlabelISO{\eq@bqlabel}
+\renewcommand\bqlabelISO{\eq@bqlabel}
+% Default title for a quiz used for \verb!\@currentlablename!
+\setDefShortQuizLabelName{Quiz}
+\setDefQuizLabelName{Quiz}
+
+% Here is the default quiz label.
+% No formatting allowed
+\renewcommand\eq@eqlabel{End Quiz}
+% User access to shortquiz label
+\renewcommand\eqlabel{\eq@eqlabel}
+
+% JavaScript Messages for Quiz Environments. Use PDFDocEncoding
+% Note: Use \string rather than \protect for escape codes,
+% i.e. \string\374
+%
+% In the Text Field showing the score, there is the default
+% phrase in English
+% Score: 2 out of 3, the word "Score" and "out of" needs
+% translation.
+\renewcommand\eq@Score{Score:}\renewcommand\eq@OutOf{out of}
+\renewcommand\eq@ptScore{Score:}
+% used in summary tables
+\renewcommand\stOutOf{of}
+% If you are taking a quiz and click on an alternative without
+% initializing the quiz
+% first, this message appears.
+% This string is placed in the DLJS, so the escape sequences
+% need to be protected more. Instead of \string\340 we need
+% \string\\340.
+% Example: \renewcommand\eqInitQuizMsg{% (German)
+% "Sie m\string\\374ssen die Aufgaben initialisieren!
+% Bitte klicken Sie auf "+msg+"."}
+\renewcommand\eqInitQuizMsg{%
+ "You must initialize the Quiz! Click on "+msg+"."}
+
+% This macro doesn't usually need translation, it uses \eqScore
+% and \eqOutOf. However, if the sentence "Score: 2 out of 3"
+% does not translate conveniently into a particular language,
+% this macro may have to be modified. It's the one that puts
+% the message in the message box.
+\renewcommand\eqQuizTotalMsg
+ {"\eqScore\space"+Score+" \eqOutOf\space"+nQuestions}
+\renewcommand\eqQuizPointsMsg{%
+ "\eqptScore\space"+ptScore+" \eqOutOf\space"+nPointTotal}
+\renewcommand\eqQuizPercentMsg{pcScore+"\%"}
+\renewcommand\eqQuizGradeMsg{quizGrade}
+
+% In the link form of a quiz, of you change your choice,
+% this message appears. This string is placed in the
+% DLJS, so the escape sequences need to be protected more.
+% Instead of \string\340 we need \string\\340.
+% For Example: \renewcommand\eqMadeChoice{%
+% "Vous avez d\string\\351j\string\\340 fait un choix,
+% ce choix est ("+Responses[probno]+").
+% Souhaitez vous le modifier ?"} (French)
+\renewcommand\eqMadeChoice{%
+ "You have already made a choice.
+ Your choice was ("+Responses[probno]+").
+ Do you want to change it?"}
+% Default button labels for \eqButton
+% Accents are handled as above:
+% A French Language Example
+% \renewcommand\eq@local@CA{R\string\351ponses}
+% \renewcommand\eq@local@RC{Correctes}
+% \renewcommand\eq@local@AC{SVP !}
+\renewcommand\eq@local@CA{Correct}
+\renewcommand\eq@local@RC{My Answers!}
+\renewcommand\eq@local@AC{Please!}
+
+% Default button label of \CorrAnsButton.
+\renewcommand\eq@local@CorrAnsButton{Ans}
+% Default button label of \sqClearButton
+\renewcommand{\eq@local@sqClearButton}{Clear}
+% Short string used by the \PromptButton
+\renewcommand{\AnsPromptBtnStr}{Answer:\space}
+
+% These (error) messages are generated when the user enters an
+% invalid math expression into a math fill-in response box.
+% The messages come in the form of an eqAppAlert() so
+% PDFDocEncoding needs to be used.
+\renewcommand\eqerrABS{"Absolute values not balanced. Please correct."}
+\renewcommand\eqerrBadMathFunc{"The expression \""+aF[i]+"\" is neither
+ a defined " +"function, nor a valid math expression."}
+\renewcommand\eqParens{"Parentheses"}
+\renewcommand\eqBrackets{"Brackets"}
+\renewcommand\eqBraces{"Braces"}
+\renewcommand\eqerrDelimNotBal{aGroup[i][2] + " not balanced.
+ Please correct."}
+\renewcommand\eqerrBadExp{"Invalid mathematical expression.
+ A problem with one of the exponents. Please correct."}
+\renewcommand\eqerrUnfinishQuiz{"There is an unfinished quiz,
+ please finish before moving on to another."}
+\renewcommand\noPeekMsg{"Viewing Solutions to quizzes is not allowed
+ until you take or finish this quiz!"}
+\renewcommand\highThresholdMsg{"You are required to respond to all
+ questions before the quiz is evaluated."}
+\renewcommand\eqSyntaxErrorUndefVar{"Syntax Error: Possibly an
+ undefined variable present."}
+\newcommand{\eqSyntaxErrorComma}{"Syntax Error: A comma was found"
+ + " in your response \\""
+ + UserAns + "\\". Please remove the comma, or this answer"
+ + " will be marked as wrong."}
+\renewcommand{\limSelWarningMsg}{"For this questions, you are allowed to
+ make at most " + n + " selections."}
+\renewcommand{\promptButtonMsg}{%
+ "Would you like to see the correct answer at this time? "
+ + "Your current answer will be the one that will be scored. "
+ + "If you click on \\"Yes\\",
+ you will not be able to change your answer."
+}
+\renewcommand{\defaultReqFormMsg}{%
+ "The expression is not in the expected form."}
+\renewcommand\eqAnd{and}
+%%%%%%%%%%%%%%%%%%%%%% End Message Section %%%%%%%%%%%%%
+%% Some typeout messages %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{Inputting French Option}
+\typeout{French Option: Cannot find the file eqfr.def, using the
+ default, English.}
+\typeout{Solutions not allowed with this option}
+\typeout{Check: `#1' is not an acceptable option, inserting
+ default, `check'.}
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\endinput
+%%
+%% End of file `template.def'.
diff --git a/texmf-dist/tex/latex/acrotex/uieforms.def b/texmf-dist/tex/latex/acrotex/uieforms.def
index 04ae9dd1..65d1b790 100644
--- a/texmf-dist/tex/latex/acrotex/uieforms.def
+++ b/texmf-dist/tex/latex/acrotex/uieforms.def
@@ -1,389 +1,389 @@
-%%
-%% This is file `uieforms.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% eforms.dtx (with options: `copyright,userinterface')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% eForms package, %%
-%% Copyright (C) 2002-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\@equi#1{}
-\ifHy@colorlinks\def\eq@bordervisibledefault{0}\@eqW{}\else
-\def\eq@bordervisibledefault{1}\@eqW{1}\fi
-\def\getargs#1#2{\def\aeb@argi{#1}\def\aeb@argii{#2}}
-\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
- {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
-\def\aeb@exiii{\expandafter\expandafter\expandafter}
-\newtoks\ef@flagtoks
-\newtoks\ef@jstoks
-\def\noexpandiii{\noexpand\noexpand\noexpand}
-\define@choicekey{eforms}{border}[\val\nr]{visible,invisible}
-{%
- \ifcase\nr
- \def\eq@visibleborder{1}%
- \ifx\eq@W\@empty
- \ifx\eq@W@buffered\@empty\@eqW{1}\else
- \@eqW{\eq@W@buffered}\fi
- \else
- \ifnum\eq@W@value=0 \@eqW{1}\fi
- \ifx\eq@W@buffered\@empty\else
- \@eqW{\eq@W@buffered}\fi
- \fi
- \@eqBorder{0 0 \eq@W@value}%
- \or
- % author has chosen invisible border
- \def\eq@visibleborder{0}\@eqW{}%
- \@eqBorder{0 0 0}\@eqBC{}%
- \fi
-}
-\define@choicekey{eforms}{linewidth}[\val\nr]{thin,medium,thick}
-{%
- \ifx\annot@type\annot@type@link
- \ifx\eq@visibleborder\@empty
- \ifnum\eq@bordervisibledefault=0
- \edef\eq@W@buffered{\ifcase\nr 1\or2\or3\fi}%
- \@eqW{}%
- \else
- \ifcase\nr \@eqW{1}\or\@eqW{2}\or
- \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
- \fi
- \else
- \ifnum\eq@visibleborder=1 % visible border
- \ifcase\nr \@eqW{1}\or\@eqW{2}\or
- \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
- \fi
- \fi
- \else
- \ifx\eq@visibleborder\@empty
- \ifcase\nr \@eqW{1}\or\@eqW{2}\or
- \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
- \edef\eq@W@buffered{\ifcase\nr 1\or2\or3\fi}%
- \else
- \ifnum\eq@visibleborder>0
- \ifcase\nr \@eqW{1}\or\@eqW{2}\or
- \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
- \fi
- \fi
- \fi
-}
-\let\eq@visibleborder\@empty
-\let\eq@W@buffered\@empty
-\define@choicekey{eforms}{highlight}[\val\nr]{none,invert,outline,%
- inset,push}
-{%
- \ifcase\nr
- \@eqH{}\or\@eqH{I}\or\@eqH{O}\or\@eqH{P}\or\@eqH{P}\fi
-}{}
-\define@key{eforms}{bordercolor}[]{%
- \ifx\annot@type\annot@type@link\@eqColor{#1}\else
- \ifx\eq@visibleborder\@empty\@eqBC{#1}\else
- \ifnum\eq@visibleborder>0\relax\@eqBC{#1}\fi\fi\fi
-}
-\define@choicekey{eforms}{linestyle}[\val\nr]{solid,dashed,underlined,%
- beveled,inset}
-{%
- \ifcase\nr\relax
- \@eqS{S}\or\@eqS{D}\or\@eqS{U}%
- \or\@eqS{B}\or\@eqS{I}\else\@eqS{S}%
- \fi
-}
-\define@key{eforms}{dasharray}[3]{\@eqD{#1}}
-\define@key{eforms}{linktxtcolor}[]{%
- \let\ef@linktxtcolor@set=1\@eqlinktxtcolor{#1}}
-\let\ef@linktxtcolor@set=0
-\define@key{eforms}{annotflags}[]{\ef@flagtoks={}%
- \setkeys{annotflags}{#1}}
-\@tfor\ef@flagopts:={{hidden}{FHidden}}{{print}{FPrint}}{{noprint}%
- {FNoPrint}}{{-print}{FNoPrint}}{{noview}{FNoView}}{{lock}{FLock}}%
- \do{\expandafter\getargs\ef@flagopts
- \edef\temp@expand@def{%
- \noexpand\define@key{annotflags}{\aeb@argi}[true]{%
- \noexpand\ef@flagtoks=%
- \noexpand\expandafter{\noexpand\ef@passedArgs}%
- \noexpand\edef\noexpand\ef@passedArgs{\noexpandiii%
- \F{\noexpandiii\csname\aeb@argii\noexpandiii\endcsname}%
- \noexpand\the\noexpand\ef@flagtoks}%
- }%
- }\temp@expand@def
-}
-\define@key{eforms}{fieldflags}[]{\ef@flagtoks={}%
- \setkeys{fieldflags}{#1}}
-\@tfor\ef@flagopts:={{readonly}{FfReadOnly}}{{required}{FfRequired}}%
- {{noexport}{FfNoExport}}{{multiline}{FfMultiline}}%
- {{password}{FfPassword}}{{notoggleoff}{FfNoToggleToOff}}%
- {{radio}{FfRadio}}{{pushbutton}{FfPushButton}}{{combo}{FfCombo}}%
- {{edit}{FfEdit}}{{sort}{FfSort}}{{fileselect}{FfFileSelect}}%
- {{multiselect}{FfMultiSelect}}{{nospellcheck}{FfDoNotSpellCheck}}%
- {{noscrolling}{FfDoNotScroll}}{{comb}{FfComb}}%
- {{radiosinunison}{FfRadiosInUnison}}%
- {{commitonchange}{FfCommitOnSelChange}}{{richtext}{FfRichText}}\do{%
- \expandafter\getargs\ef@flagopts
- \edef\temp@expand@def{%
- \noexpand\define@key{fieldflags}{\aeb@argi}[true]%
- {%
- \noexpand\ef@flagtoks=\noexpand\expandafter{%
- \noexpand\ef@passedArgs}%
- \noexpand\edef\noexpand\ef@passedArgs{\noexpandiii%
- \Ff{\noexpandiii\csname\aeb@argii\noexpandiii\endcsname}%
- \noexpand\the\noexpand\ef@flagtoks}%
- }%
- }\temp@expand@def
-}
-\define@key{eforms}{tooltip}{\@eqTU{#1}}
-\define@key{eforms}{default}{\@eqDV{#1}}
-\define@key{eforms}{defaultstyle}{\@eqDS{#1}}
-\define@key{eforms}{value}{\@eqV{#1}}
-\define@key{eforms}{richvalue}{\@eqRV{#1}}
-\define@key{eforms}{apprD}{\@eqAP{#1}}
-\define@choicekey{eforms}{rotate}[\val\nr]{0,90,180,270}
- {\expandafter\@eqR\expandafter{\val}}{}
-\define@key{eforms}{bgcolor}[]{\@eqBG{#1}}
-\define@key{eforms}{uptxt}{\@eqCA{#1}}
-\define@key{eforms}{downtxt}{\@eqAC{#1}}
-\define@key{eforms}{rollovertxt}{\@eqRC{#1}}
-\define@choicekey{eforms}{align}[\val\nr]{left,centered,right}{%
- \ifx\annot@type\annot@type@text
- \expandafter\@eqQ\expandafter{\nr}\fi}{}
-\define@key{eforms}{textfont}{\@eqtextFont{#1}}
-\define@key{eforms}{textsize}{\@eqtextSize{#1}}
-\define@key{eforms}{textcolor}{%
- \@eqtextColor{#1}%
-}
-\define@key{eforms}{maxlength}{\@eqMaxLen{#1}}
-\define@key{eforms}{normappr}{\@eqI{#1}}
-\define@key{eforms}{rollappr}{\@eqRI{#1}}
-\define@key{eforms}{downappr}{\@eqIX{#1}}
-\define@choicekey{eforms}{layout}[\val\nr]{labelonly,icononly,%
- icontop,iconbottom,iconleft,iconright,labelover}{%
- \ifx\annot@type\annot@type@button
- \expandafter\@eqTP\expandafter{\nr}\fi}{}
-\define@choicekey{eforms}{scalewhen}[\val\nr]{always,never,%
- iconbig,iconsmall}{%
- \ifx\annot@type\annot@type@button
- \ifcase\nr\relax
- \def\eq@@SW{A}\or
- \def\eq@@SW{N}\or
- \def\eq@@SW{B}\or
- \def\eq@@SW{S}\else
- \def\eq@@SW{A}\fi
- \expandafter\@eqSW\expandafter{\eq@@SW}\fi}{}
-\define@choicekey{eforms}{scale}[\val\nr]{proportional,%
- nonproportional}{%
- \ifx\annot@type\annot@type@button
- \ifcase\nr\relax
- \def\eq@@ST{P}\or
- \def\eq@@ST{A}\else
- \def\eq@@ST{P}\fi
- \expandafter\@eqST\expandafter{\eq@@ST}\fi}{}
-\define@key{eforms}{position}{\@eqPA{#1}}
-\define@choicekey{eforms}{fitbounds}[\val\nr]{true,false}[true]{%
- \ifx\annot@type\annot@type@button
- \ifcase\nr\relax
- \def\eq@@FB{true}\or
- \def\eq@@FB{false}\else
- \def\eq@@FB{false}\fi
- \expandafter\@eqFB\expandafter{\eq@@FB}\fi}{}
-\define@key{efappr}{norm}[]{\def\efappr@norm{#1}}
-\define@key{efappr}{roll}[]{\def\efappr@roll{#1}}
-\define@key{efappr}{down}[]{\def\efappr@down{#1}}
-\setkeys{efappr}{norm,roll,down}
-\define@key{efappr@state}{on}[]{%
- \expandafter\def\csname \ef@state @on\endcsname{#1}}
-\define@key{efappr@state}{off}[]{%
- \expandafter\def\csname \ef@state @off\endcsname{#1}}
-\let\norm@on\@empty\let\norm@off\@empty
-\let\roll@on\@empty\let\roll@off\@empty
-\let\down@on\@empty\let\down@off\@empty
-\define@key{eforms}{appr}{\setkeys{efappr}{#1}%
- \def\ef@state{norm}%
- \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@norm}}%
- \ef@edef@tmp\def\ef@state{roll}%
- \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@roll}}%
- \ef@edef@tmp\def\ef@state{down}%
- \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@down}}%
- \ef@edef@tmp\def\eq@AP{%
- /AP<<
- \ifx\efappr@norm\@empty\else/N <<
- \eq@On\space{\norm@on}/Off {\norm@off}>>\fi
- \ifx\efappr@roll\@empty\else/R <<
- \eq@On\space{\roll@on}/Off {\roll@off}>>\fi
- \ifx\efappr@down\@empty\else/D <<
- \eq@On\space{\down@on}/Off {\down@off}>>\fi
- \space>>
- }%
-}
-\define@choicekey{eforms}{autocenter}[\val\nr]{yes,no}
-{%
- \ifcase\nr\relax\@eqautoCenter{y}\or
- \@eqautoCenter{n}\fi
-}{}
-\define@choicekey{eforms}{inline}[\val\nr]{yes,no}
-{%
- \ifcase\nr\relax\@eqinline{y}\or
- \@eqinline{n}\fi
-}{}
-\define@choicekey{eforms}{mlfix}[\val\nr]{yes,no}
-{%
- \ifcase\nr\relax\@eqmlfix{y}\or
- \@eqmlfix{n}\fi
-}{}
-\define@key{eforms}{mlstrut}[\strut]{\@eqmlstrut{#1}}
-\define@key{eforms}{mlcrackat}[]{\@eqmlcrackat{#1}}
-\define@key{eforms}{mlcrackinat}[]{\@eqmlcrackinsat{#1}}
-\define@choicekey{eforms}{mlhyph}[\val\nr]{yes,no}
-{%
- \ifcase\nr\relax\@eqmlhyph{y}\or
- \@eqmlhyph{n}\fi
-}{}
-\define@key{eforms}{presets}{%
- \ef@jstoks=\expandafter{#1}%
- \edef\ef@temp@expand{\noexpand\setkeys{eforms}{\the\ef@jstoks}}%
- \ef@temp@expand
-}
-\define@choicekey{eforms}{symbolchoice}[\val\nr]%
- {check,circle,cross,diamond,square,star}
- {\expandafter\@eqsymbolchoice\expandafter{\val}}{}
-\define@key{eforms}{lock}{\@eqLock{#1}}
-\define@key{eforms}{goto}[]{%
- \cxkvsetkeys{efgoto}{#1}%
- \ifx\ef@goto@url\@empty
- \ifx\ef@goto@file\@empty
- % Jump within the file
- \def\ef@subtype{/S/GoTo }%
- \ifcase\eq@drivernum
- \def\ef@formatpage{{Page\ef@page}}%
- \or
- \def\ef@formatpage{\pdfpageref\ef@page\space\space 0 R}%
- \or
- \def\ef@formatpage{@page\ef@page}%
- \fi
- \let\ef@open\@empty
- \let\ef@formatfile\@empty
- \else
- % Jump to another PDF
- \def\ef@subtype{/S/GoToR }%
- \count0=\ef@page\advance\count0by-1
- \edef\ef@formatpage{\the\count0 }%
- \def\ef@formatfile{/F (\ef@goto@file)}%
- \fi
- \ifx\ef@goto@targetdest\@empty
- \ifx\ef@labeldest\@empty
- % we will jump to a page, it might be the default page
- \expandafter\@eqA\expandafter{\ef@subtype
- /D[\ef@formatpage\ef@view]%
- \ef@formatfile\ef@open}%
- \else
- % jump to a label
- \expandafter\@eqA\expandafter{\ef@subtype%
- /D (\labelRef{\ef@labeldest})%
- \ef@formatfile\ef@open}%
- \fi
- \else
- % jump to a target
- \expandafter\@eqA\expandafter{\ef@subtype%
- /D (\ef@goto@targetdest)%
- \ef@formatfile\ef@open}%
- \fi
- \else % go to url
- \ifx\ef@goto@openparams\@empty
- \@eqA{/S/URI/URI(\ef@goto@url)}\else
- \@eqA{/S/URI/URI(\ef@goto@url\#\ef@goto@openparams)}%
- \fi
- \fi
-}
-\define@key{efgoto}{file}[]{\def\ef@goto@file{#1}}
-\let\ef@goto@file\@empty
-\define@key{efgoto}{url}[]{%
- \if\ef@linktxtcolor@set0\@eqlinktxtcolor{\@urlcolor}\fi
- \def\ef@goto@url{#1}%
-}
-\let\ef@goto@url\@empty
-\define@key{efgoto}{openparams}[]{\def\ef@goto@openparams{#1}}
-\let\ef@goto@openparams\@empty
-\define@key{efgoto}{targetdest}[]{\def\ef@goto@targetdest{#1}}
-\let\ef@goto@targetdest\@empty
-\define@key{efgoto}{labeldest}[]{\def\ef@labeldest{#1}}
-\let\ef@labeldest\@empty
-\define@key{efgoto}{page}[1]{\def\ef@page{#1}}
-\def\ef@page{1}
-\def\ef@view{/Fit}%
-\define@choicekey{efgoto}{view}[\val\nr]{fitpage,actualsize,fitwidth,%
- fitheight,fitvisible,inheritzoom}
-{%
- \edef\ef@view{\csname dl@\val\endcsname}%
-}{}
-\define@choicekey{efgoto}{open}[\val\nr]{userpref,new,existing}
-{%
- \ifcase\nr\relax
- \let\ef@open\@empty\or
- \def\ef@open{/NewWindow true }\or
- \def\ef@open{/NewWindow false }\fi
-}{}
-\let\ef@open\@empty
-\define@key{eforms}{launch}[]{%
- \cxkvsetkeys{eflaunch}{#1}%
- \@eqA{/S/Launch\ifx\ef@launch@file\@empty\else
- /F(\ef@launch@file)\fi\ef@launch@open
- \ifx\ef@launch@win\@empty\else
- /Win<<\ifx\ef@launchwin@file\@empty
- /F(\ef@launch@file)\else/F(\ef@launchwin@file)\fi
- \ifx\ef@launchwin@params\@empty\else
- /P(\ef@launchwin@params)\fi
- \ifx\ef@launchwin@open\@empty\else
- /O(\ef@launchwin@open)\fi
- \ifx\ef@launchwin@dir\@empty\else
- /D(\ef@launchwin@dir)\fi>>
- \fi
- }%
-}
-\define@key{eflaunch}{file}[]{\def\ef@launch@file{#1}}
-\let\ef@launch@file\@empty
-\define@choicekey{eflaunch}{open}[\val\nr]{userpref,new,existing}
-{%
- \ifcase\nr\relax
- \let\ef@launch@open\@empty\or
- \def\ef@launch@open{/NewWindow true }\or
- \def\ef@launch@open{/NewWindow false }\fi
-}{}
-\let\ef@launch@open\@empty
-\define@key{eflaunch}{winParams}[]{\def\ef@launch@win{#1}%
- \setkeys{eflaunchwin}{#1}%
-}\let\ef@launch@win\@empty
-\define@key{eflaunchwin}{file}[]{\def\ef@launchwin@file{#1}}
-\let\ef@launchwin@file\@empty
-\define@key{eflaunchwin}{directory}[]{\def\ef@launchwin@dir{#1}}
-\let\ef@launchwin@dir\@empty
-\define@key{eflaunchwin}{open}[]{\def\ef@launchwin@open{#1}}
-\let\ef@launchwin@open\@empty
-\define@key{eflaunchwin}{params}[]{\def\ef@launchwin@params{#1}}
-\let\ef@launchwin@params\@empty
-\define@key{eforms}{js}[]{\@eqA{\JS{#1}}}
-\@tfor\ef@AActions:={{mouseup}{AAmouseup}}{{mousedown}{AAmousedown}}%
- {{onenter}{AAmouseenter}}{{onexit}{AAmouseexit}}%
- {{onfocus}{AAonfocus}}{{onblur}{AAonblur}}%
- {{format}{AAformat}}{{keystroke}{AAkeystroke}}%
- {{validate}{AAvalidate}}{{calculate}{AAcalculate}}%
- {{pageopen}{AApageopen}}{{pageclose}{AApageclose}}%
- {{pagevisible}{AApagevisible}}%
- {{pageinvisible}{AApageinvisible}}\do{%
- \expandafter\getargs\ef@AActions\ef@jstoks={#1}%
- \edef\temp@expand@def{\noexpand\define@key{eforms}{\aeb@argi}[]%
- {\noexpand\csname @eq\aeb@argii\noexpand\endcsname%
- {\the\ef@jstoks}}}%
- \temp@expand@def
-}
-\define@key{eforms}{objdef}{\@eqobjdef{#1}}
-\define@key{eforms}{taborder}{\@eqtaborder{#1}}
-\endinput
-%%
-%% End of file `uieforms.def'.
+%%
+%% This is file `uieforms.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% eforms.dtx (with options: `copyright,userinterface')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% eForms package, %%
+%% Copyright (C) 2002-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@equi#1{}
+\ifHy@colorlinks\def\eq@bordervisibledefault{0}\@eqW{}\else
+\def\eq@bordervisibledefault{1}\@eqW{1}\fi
+\def\getargs#1#2{\def\aeb@argi{#1}\def\aeb@argii{#2}}
+\def\labelRef#1{\@ifundefined{r@#1}{Doc-Start}
+ {\aeb@exiii\@fourthoffive\csname r@#1\endcsname}}
+\def\aeb@exiii{\expandafter\expandafter\expandafter}
+\newtoks\ef@flagtoks
+\newtoks\ef@jstoks
+\def\noexpandiii{\noexpand\noexpand\noexpand}
+\define@choicekey{eforms}{border}[\val\nr]{visible,invisible}
+{%
+ \ifcase\nr
+ \def\eq@visibleborder{1}%
+ \ifx\eq@W\@empty
+ \ifx\eq@W@buffered\@empty\@eqW{1}\else
+ \@eqW{\eq@W@buffered}\fi
+ \else
+ \ifnum\eq@W@value=0 \@eqW{1}\fi
+ \ifx\eq@W@buffered\@empty\else
+ \@eqW{\eq@W@buffered}\fi
+ \fi
+ \@eqBorder{0 0 \eq@W@value}%
+ \or
+ % author has chosen invisible border
+ \def\eq@visibleborder{0}\@eqW{}%
+ \@eqBorder{0 0 0}\@eqBC{}%
+ \fi
+}
+\define@choicekey{eforms}{linewidth}[\val\nr]{thin,medium,thick}
+{%
+ \ifx\annot@type\annot@type@link
+ \ifx\eq@visibleborder\@empty
+ \ifnum\eq@bordervisibledefault=0
+ \edef\eq@W@buffered{\ifcase\nr 1\or2\or3\fi}%
+ \@eqW{}%
+ \else
+ \ifcase\nr \@eqW{1}\or\@eqW{2}\or
+ \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
+ \fi
+ \else
+ \ifnum\eq@visibleborder=1 % visible border
+ \ifcase\nr \@eqW{1}\or\@eqW{2}\or
+ \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
+ \fi
+ \fi
+ \else
+ \ifx\eq@visibleborder\@empty
+ \ifcase\nr \@eqW{1}\or\@eqW{2}\or
+ \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
+ \edef\eq@W@buffered{\ifcase\nr 1\or2\or3\fi}%
+ \else
+ \ifnum\eq@visibleborder>0
+ \ifcase\nr \@eqW{1}\or\@eqW{2}\or
+ \@eqW{3}\else\@eqW{1}\fi\@eqBorder{0 0 \eq@W@value}%
+ \fi
+ \fi
+ \fi
+}
+\let\eq@visibleborder\@empty
+\let\eq@W@buffered\@empty
+\define@choicekey{eforms}{highlight}[\val\nr]{none,invert,outline,%
+ inset,push}
+{%
+ \ifcase\nr
+ \@eqH{}\or\@eqH{I}\or\@eqH{O}\or\@eqH{P}\or\@eqH{P}\fi
+}{}
+\define@key{eforms}{bordercolor}[]{%
+ \ifx\annot@type\annot@type@link\@eqColor{#1}\else
+ \ifx\eq@visibleborder\@empty\@eqBC{#1}\else
+ \ifnum\eq@visibleborder>0\relax\@eqBC{#1}\fi\fi\fi
+}
+\define@choicekey{eforms}{linestyle}[\val\nr]{solid,dashed,underlined,%
+ beveled,inset}
+{%
+ \ifcase\nr\relax
+ \@eqS{S}\or\@eqS{D}\or\@eqS{U}%
+ \or\@eqS{B}\or\@eqS{I}\else\@eqS{S}%
+ \fi
+}
+\define@key{eforms}{dasharray}[3]{\@eqD{#1}}
+\define@key{eforms}{linktxtcolor}[]{%
+ \let\ef@linktxtcolor@set=1\@eqlinktxtcolor{#1}}
+\let\ef@linktxtcolor@set=0
+\define@key{eforms}{annotflags}[]{\ef@flagtoks={}%
+ \setkeys{annotflags}{#1}}
+\@tfor\ef@flagopts:={{hidden}{FHidden}}{{print}{FPrint}}{{noprint}%
+ {FNoPrint}}{{-print}{FNoPrint}}{{noview}{FNoView}}{{lock}{FLock}}%
+ \do{\expandafter\getargs\ef@flagopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{annotflags}{\aeb@argi}[true]{%
+ \noexpand\ef@flagtoks=%
+ \noexpand\expandafter{\noexpand\ef@passedArgs}%
+ \noexpand\edef\noexpand\ef@passedArgs{\noexpandiii%
+ \F{\noexpandiii\csname\aeb@argii\noexpandiii\endcsname}%
+ \noexpand\the\noexpand\ef@flagtoks}%
+ }%
+ }\temp@expand@def
+}
+\define@key{eforms}{fieldflags}[]{\ef@flagtoks={}%
+ \setkeys{fieldflags}{#1}}
+\@tfor\ef@flagopts:={{readonly}{FfReadOnly}}{{required}{FfRequired}}%
+ {{noexport}{FfNoExport}}{{multiline}{FfMultiline}}%
+ {{password}{FfPassword}}{{notoggleoff}{FfNoToggleToOff}}%
+ {{radio}{FfRadio}}{{pushbutton}{FfPushButton}}{{combo}{FfCombo}}%
+ {{edit}{FfEdit}}{{sort}{FfSort}}{{fileselect}{FfFileSelect}}%
+ {{multiselect}{FfMultiSelect}}{{nospellcheck}{FfDoNotSpellCheck}}%
+ {{noscrolling}{FfDoNotScroll}}{{comb}{FfComb}}%
+ {{radiosinunison}{FfRadiosInUnison}}%
+ {{commitonchange}{FfCommitOnSelChange}}{{richtext}{FfRichText}}\do{%
+ \expandafter\getargs\ef@flagopts
+ \edef\temp@expand@def{%
+ \noexpand\define@key{fieldflags}{\aeb@argi}[true]%
+ {%
+ \noexpand\ef@flagtoks=\noexpand\expandafter{%
+ \noexpand\ef@passedArgs}%
+ \noexpand\edef\noexpand\ef@passedArgs{\noexpandiii%
+ \Ff{\noexpandiii\csname\aeb@argii\noexpandiii\endcsname}%
+ \noexpand\the\noexpand\ef@flagtoks}%
+ }%
+ }\temp@expand@def
+}
+\define@key{eforms}{tooltip}{\@eqTU{#1}}
+\define@key{eforms}{default}{\@eqDV{#1}}
+\define@key{eforms}{defaultstyle}{\@eqDS{#1}}
+\define@key{eforms}{value}{\@eqV{#1}}
+\define@key{eforms}{richvalue}{\@eqRV{#1}}
+\define@key{eforms}{apprD}{\@eqAP{#1}}
+\define@choicekey{eforms}{rotate}[\val\nr]{0,90,180,270}
+ {\expandafter\@eqR\expandafter{\val}}{}
+\define@key{eforms}{bgcolor}[]{\@eqBG{#1}}
+\define@key{eforms}{uptxt}{\@eqCA{#1}}
+\define@key{eforms}{downtxt}{\@eqAC{#1}}
+\define@key{eforms}{rollovertxt}{\@eqRC{#1}}
+\define@choicekey{eforms}{align}[\val\nr]{left,centered,right}{%
+ \ifx\annot@type\annot@type@text
+ \expandafter\@eqQ\expandafter{\nr}\fi}{}
+\define@key{eforms}{textfont}{\@eqtextFont{#1}}
+\define@key{eforms}{textsize}{\@eqtextSize{#1}}
+\define@key{eforms}{textcolor}{%
+ \@eqtextColor{#1}%
+}
+\define@key{eforms}{maxlength}{\@eqMaxLen{#1}}
+\define@key{eforms}{normappr}{\@eqI{#1}}
+\define@key{eforms}{rollappr}{\@eqRI{#1}}
+\define@key{eforms}{downappr}{\@eqIX{#1}}
+\define@choicekey{eforms}{layout}[\val\nr]{labelonly,icononly,%
+ icontop,iconbottom,iconleft,iconright,labelover}{%
+ \ifx\annot@type\annot@type@button
+ \expandafter\@eqTP\expandafter{\nr}\fi}{}
+\define@choicekey{eforms}{scalewhen}[\val\nr]{always,never,%
+ iconbig,iconsmall}{%
+ \ifx\annot@type\annot@type@button
+ \ifcase\nr\relax
+ \def\eq@@SW{A}\or
+ \def\eq@@SW{N}\or
+ \def\eq@@SW{B}\or
+ \def\eq@@SW{S}\else
+ \def\eq@@SW{A}\fi
+ \expandafter\@eqSW\expandafter{\eq@@SW}\fi}{}
+\define@choicekey{eforms}{scale}[\val\nr]{proportional,%
+ nonproportional}{%
+ \ifx\annot@type\annot@type@button
+ \ifcase\nr\relax
+ \def\eq@@ST{P}\or
+ \def\eq@@ST{A}\else
+ \def\eq@@ST{P}\fi
+ \expandafter\@eqST\expandafter{\eq@@ST}\fi}{}
+\define@key{eforms}{position}{\@eqPA{#1}}
+\define@choicekey{eforms}{fitbounds}[\val\nr]{true,false}[true]{%
+ \ifx\annot@type\annot@type@button
+ \ifcase\nr\relax
+ \def\eq@@FB{true}\or
+ \def\eq@@FB{false}\else
+ \def\eq@@FB{false}\fi
+ \expandafter\@eqFB\expandafter{\eq@@FB}\fi}{}
+\define@key{efappr}{norm}[]{\def\efappr@norm{#1}}
+\define@key{efappr}{roll}[]{\def\efappr@roll{#1}}
+\define@key{efappr}{down}[]{\def\efappr@down{#1}}
+\setkeys{efappr}{norm,roll,down}
+\define@key{efappr@state}{on}[]{%
+ \expandafter\def\csname \ef@state @on\endcsname{#1}}
+\define@key{efappr@state}{off}[]{%
+ \expandafter\def\csname \ef@state @off\endcsname{#1}}
+\let\norm@on\@empty\let\norm@off\@empty
+\let\roll@on\@empty\let\roll@off\@empty
+\let\down@on\@empty\let\down@off\@empty
+\define@key{eforms}{appr}{\setkeys{efappr}{#1}%
+ \def\ef@state{norm}%
+ \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@norm}}%
+ \ef@edef@tmp\def\ef@state{roll}%
+ \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@roll}}%
+ \ef@edef@tmp\def\ef@state{down}%
+ \edef\ef@edef@tmp{\noexpand\setkeys{efappr@state}{\efappr@down}}%
+ \ef@edef@tmp\def\eq@AP{%
+ /AP<<
+ \ifx\efappr@norm\@empty\else/N <<
+ \eq@On\space{\norm@on}/Off {\norm@off}>>\fi
+ \ifx\efappr@roll\@empty\else/R <<
+ \eq@On\space{\roll@on}/Off {\roll@off}>>\fi
+ \ifx\efappr@down\@empty\else/D <<
+ \eq@On\space{\down@on}/Off {\down@off}>>\fi
+ \space>>
+ }%
+}
+\define@choicekey{eforms}{autocenter}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqautoCenter{y}\or
+ \@eqautoCenter{n}\fi
+}{}
+\define@choicekey{eforms}{inline}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqinline{y}\or
+ \@eqinline{n}\fi
+}{}
+\define@choicekey{eforms}{mlfix}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqmlfix{y}\or
+ \@eqmlfix{n}\fi
+}{}
+\define@key{eforms}{mlstrut}[\strut]{\@eqmlstrut{#1}}
+\define@key{eforms}{mlcrackat}[]{\@eqmlcrackat{#1}}
+\define@key{eforms}{mlcrackinat}[]{\@eqmlcrackinsat{#1}}
+\define@choicekey{eforms}{mlhyph}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqmlhyph{y}\or
+ \@eqmlhyph{n}\fi
+}{}
+\define@key{eforms}{presets}{%
+ \ef@jstoks=\expandafter{#1}%
+ \edef\ef@temp@expand{\noexpand\setkeys{eforms}{\the\ef@jstoks}}%
+ \ef@temp@expand
+}
+\define@choicekey{eforms}{symbolchoice}[\val\nr]%
+ {check,circle,cross,diamond,square,star}
+ {\expandafter\@eqsymbolchoice\expandafter{\val}}{}
+\define@key{eforms}{lock}{\@eqLock{#1}}
+\define@key{eforms}{goto}[]{%
+ \cxkvsetkeys{efgoto}{#1}%
+ \ifx\ef@goto@url\@empty
+ \ifx\ef@goto@file\@empty
+ % Jump within the file
+ \def\ef@subtype{/S/GoTo }%
+ \ifcase\eq@drivernum
+ \def\ef@formatpage{{Page\ef@page}}%
+ \or
+ \def\ef@formatpage{\pdfpageref\ef@page\space\space 0 R}%
+ \or
+ \def\ef@formatpage{@page\ef@page}%
+ \fi
+ \let\ef@open\@empty
+ \let\ef@formatfile\@empty
+ \else
+ % Jump to another PDF
+ \def\ef@subtype{/S/GoToR }%
+ \count0=\ef@page\advance\count0by-1
+ \edef\ef@formatpage{\the\count0 }%
+ \def\ef@formatfile{/F (\ef@goto@file)}%
+ \fi
+ \ifx\ef@goto@targetdest\@empty
+ \ifx\ef@labeldest\@empty
+ % we will jump to a page, it might be the default page
+ \expandafter\@eqA\expandafter{\ef@subtype
+ /D[\ef@formatpage\ef@view]%
+ \ef@formatfile\ef@open}%
+ \else
+ % jump to a label
+ \expandafter\@eqA\expandafter{\ef@subtype%
+ /D (\labelRef{\ef@labeldest})%
+ \ef@formatfile\ef@open}%
+ \fi
+ \else
+ % jump to a target
+ \expandafter\@eqA\expandafter{\ef@subtype%
+ /D (\ef@goto@targetdest)%
+ \ef@formatfile\ef@open}%
+ \fi
+ \else % go to url
+ \ifx\ef@goto@openparams\@empty
+ \@eqA{/S/URI/URI(\ef@goto@url)}\else
+ \@eqA{/S/URI/URI(\ef@goto@url\#\ef@goto@openparams)}%
+ \fi
+ \fi
+}
+\define@key{efgoto}{file}[]{\def\ef@goto@file{#1}}
+\let\ef@goto@file\@empty
+\define@key{efgoto}{url}[]{%
+ \if\ef@linktxtcolor@set0\@eqlinktxtcolor{\@urlcolor}\fi
+ \def\ef@goto@url{#1}%
+}
+\let\ef@goto@url\@empty
+\define@key{efgoto}{openparams}[]{\def\ef@goto@openparams{#1}}
+\let\ef@goto@openparams\@empty
+\define@key{efgoto}{targetdest}[]{\def\ef@goto@targetdest{#1}}
+\let\ef@goto@targetdest\@empty
+\define@key{efgoto}{labeldest}[]{\def\ef@labeldest{#1}}
+\let\ef@labeldest\@empty
+\define@key{efgoto}{page}[1]{\def\ef@page{#1}}
+\def\ef@page{1}
+\def\ef@view{/Fit}%
+\define@choicekey{efgoto}{view}[\val\nr]{fitpage,actualsize,fitwidth,%
+ fitheight,fitvisible,inheritzoom}
+{%
+ \edef\ef@view{\csname dl@\val\endcsname}%
+}{}
+\define@choicekey{efgoto}{open}[\val\nr]{userpref,new,existing}
+{%
+ \ifcase\nr\relax
+ \let\ef@open\@empty\or
+ \def\ef@open{/NewWindow true }\or
+ \def\ef@open{/NewWindow false }\fi
+}{}
+\let\ef@open\@empty
+\define@key{eforms}{launch}[]{%
+ \cxkvsetkeys{eflaunch}{#1}%
+ \@eqA{/S/Launch\ifx\ef@launch@file\@empty\else
+ /F(\ef@launch@file)\fi\ef@launch@open
+ \ifx\ef@launch@win\@empty\else
+ /Win<<\ifx\ef@launchwin@file\@empty
+ /F(\ef@launch@file)\else/F(\ef@launchwin@file)\fi
+ \ifx\ef@launchwin@params\@empty\else
+ /P(\ef@launchwin@params)\fi
+ \ifx\ef@launchwin@open\@empty\else
+ /O(\ef@launchwin@open)\fi
+ \ifx\ef@launchwin@dir\@empty\else
+ /D(\ef@launchwin@dir)\fi>>
+ \fi
+ }%
+}
+\define@key{eflaunch}{file}[]{\def\ef@launch@file{#1}}
+\let\ef@launch@file\@empty
+\define@choicekey{eflaunch}{open}[\val\nr]{userpref,new,existing}
+{%
+ \ifcase\nr\relax
+ \let\ef@launch@open\@empty\or
+ \def\ef@launch@open{/NewWindow true }\or
+ \def\ef@launch@open{/NewWindow false }\fi
+}{}
+\let\ef@launch@open\@empty
+\define@key{eflaunch}{winParams}[]{\def\ef@launch@win{#1}%
+ \setkeys{eflaunchwin}{#1}%
+}\let\ef@launch@win\@empty
+\define@key{eflaunchwin}{file}[]{\def\ef@launchwin@file{#1}}
+\let\ef@launchwin@file\@empty
+\define@key{eflaunchwin}{directory}[]{\def\ef@launchwin@dir{#1}}
+\let\ef@launchwin@dir\@empty
+\define@key{eflaunchwin}{open}[]{\def\ef@launchwin@open{#1}}
+\let\ef@launchwin@open\@empty
+\define@key{eflaunchwin}{params}[]{\def\ef@launchwin@params{#1}}
+\let\ef@launchwin@params\@empty
+\define@key{eforms}{js}[]{\@eqA{\JS{#1}}}
+\@tfor\ef@AActions:={{mouseup}{AAmouseup}}{{mousedown}{AAmousedown}}%
+ {{onenter}{AAmouseenter}}{{onexit}{AAmouseexit}}%
+ {{onfocus}{AAonfocus}}{{onblur}{AAonblur}}%
+ {{format}{AAformat}}{{keystroke}{AAkeystroke}}%
+ {{validate}{AAvalidate}}{{calculate}{AAcalculate}}%
+ {{pageopen}{AApageopen}}{{pageclose}{AApageclose}}%
+ {{pagevisible}{AApagevisible}}%
+ {{pageinvisible}{AApageinvisible}}\do{%
+ \expandafter\getargs\ef@AActions\ef@jstoks={#1}%
+ \edef\temp@expand@def{\noexpand\define@key{eforms}{\aeb@argi}[]%
+ {\noexpand\csname @eq\aeb@argii\noexpand\endcsname%
+ {\the\ef@jstoks}}}%
+ \temp@expand@def
+}
+\define@key{eforms}{objdef}{\@eqobjdef{#1}}
+\define@key{eforms}{taborder}{\@eqtaborder{#1}}
+\endinput
+%%
+%% End of file `uieforms.def'.
diff --git a/texmf-dist/tex/latex/acrotex/usemcfi.def b/texmf-dist/tex/latex/acrotex/usemcfi.def
index dccaac82..7f89c002 100644
--- a/texmf-dist/tex/latex/acrotex/usemcfi.def
+++ b/texmf-dist/tex/latex/acrotex/usemcfi.def
@@ -1,78 +1,78 @@
-%%
-%% This is file `usemcfi.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% exerquiz.dtx (with options: `copyright,mcfi')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifmakeExSlLocal\protect\endgroup^^J\fi
-\def\bMCFI{%
- \withinMCFItrue
- \ifx\qRadionActionsHook\@empty
- \let\qRadionActionsHook@SAVE\@empty
- \def\qRadionActionsHook{\jsR
- qRadioButtonMCFI(\Ans@choice,"\currQuiz",\thequestionno);}\else
- \let\qRadionActionsHook@SAVE\qRadionActionsHook
- \def\qRadionActionsHook{\qRadionActionsHook@SAVE\jsR
- qRadioButtonMCFI(\Ans@choice,"\currQuiz",\thequestionno);}\fi
- \ifx\every@RespBoxMath\@empty
- \let\every@RespBoxMath@SAVE\@empty
- \def\every@RespBoxMath{%
- \AddAAKeystroke{mcfiKeyStroke("\currQuiz",\thequestionno);}}%
- \else
- \let\every@RespBoxMath@SAVE\every@RespBoxMath
- \expandafter\def\expandafter\every@RespBoxMath\expandafter{%
- \every@RespBoxMath@SAVE
- \AddAAKeystroke{mcfiKeyStroke("\currQuiz",\thequestionno);}}%
- \fi
-}
-\def\eMCFI{%
- \ifx\qRadionActionsHook@SAVE\@empty
- \let\qRadionActionsHook\@empty\else
- \let\qRadionActionsHook\qRadionActionsHook@SAVE\fi
- \ifx\every@RespBoxMath@SAVE\@empty
- \let\every@RespBoxMath\@empty\else
- \let\every@RespBoxMath\every@RespBoxMath@SAVE\fi
- \withinMCFIfalse
-}
-\def\eqNA{-43252452452}
-\@ifundefined{text}{\let\MCFIMarkup@BOX\mbox}{\let\MCFIMarkup@BOX\text}
-\newcommand\mcfiMarkupfmt{\cgBdry
- ${}^{\MCFIMarkup@BOX{\aeb@creditmarkup}}$}
-\def\mcfiMarkup{\addtocounter{questionno}{-1}\mcfiMarkupfmt
- \stepcounter{questionno}}
-\newcommand{\clickChkBxMCFI}{"Click the check box preceding this
- math input field to enter text."}
-\begin{insDLJS}{mcf}{Eq: Supports MCFI-type questions}
-function mcfiKeyStroke(qname,n) {
- if (event.change=="") return;
- var qNumMC=--n;
- var mcName="mc."+qname+"."+qNumMC;
- var mc= this.getField(mcName);
- var aExpVs=mc.exportValues;
- var l=aExpVs.length-1;
- if (!mc.isBoxChecked(l)) {
- eqAppAlert(\clickChkBxMCFI,3);
- event.rc=false;
- }
-}
-function qRadioButtonMCFI(key,qname,n) {
- var fname = "obj."+qname+"."+(n+1);
- if ( key == 0) this.resetForm(fname);
-}
-\end{insDLJS}
-\endinput
-%%
-%% End of file `usemcfi.def'.
+%%
+%% This is file `usemcfi.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% exerquiz.dtx (with options: `copyright,mcfi')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Exerquiz.sty package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ifmakeExSlLocal\protect\endgroup^^J\fi
+\def\bMCFI{%
+ \withinMCFItrue
+ \ifx\qRadionActionsHook\@empty
+ \let\qRadionActionsHook@SAVE\@empty
+ \def\qRadionActionsHook{\jsR
+ qRadioButtonMCFI(\Ans@choice,"\currQuiz",\thequestionno);}\else
+ \let\qRadionActionsHook@SAVE\qRadionActionsHook
+ \def\qRadionActionsHook{\qRadionActionsHook@SAVE\jsR
+ qRadioButtonMCFI(\Ans@choice,"\currQuiz",\thequestionno);}\fi
+ \ifx\every@RespBoxMath\@empty
+ \let\every@RespBoxMath@SAVE\@empty
+ \def\every@RespBoxMath{%
+ \AddAAKeystroke{mcfiKeyStroke("\currQuiz",\thequestionno);}}%
+ \else
+ \let\every@RespBoxMath@SAVE\every@RespBoxMath
+ \expandafter\def\expandafter\every@RespBoxMath\expandafter{%
+ \every@RespBoxMath@SAVE
+ \AddAAKeystroke{mcfiKeyStroke("\currQuiz",\thequestionno);}}%
+ \fi
+}
+\def\eMCFI{%
+ \ifx\qRadionActionsHook@SAVE\@empty
+ \let\qRadionActionsHook\@empty\else
+ \let\qRadionActionsHook\qRadionActionsHook@SAVE\fi
+ \ifx\every@RespBoxMath@SAVE\@empty
+ \let\every@RespBoxMath\@empty\else
+ \let\every@RespBoxMath\every@RespBoxMath@SAVE\fi
+ \withinMCFIfalse
+}
+\def\eqNA{-43252452452}
+\@ifundefined{text}{\let\MCFIMarkup@BOX\mbox}{\let\MCFIMarkup@BOX\text}
+\newcommand\mcfiMarkupfmt{\cgBdry
+ ${}^{\MCFIMarkup@BOX{\aeb@creditmarkup}}$}
+\def\mcfiMarkup{\addtocounter{questionno}{-1}\mcfiMarkupfmt
+ \stepcounter{questionno}}
+\newcommand{\clickChkBxMCFI}{"Click the check box preceding this
+ math input field to enter text."}
+\begin{insDLJS}{mcf}{Eq: Supports MCFI-type questions}
+function mcfiKeyStroke(qname,n) {
+ if (event.change=="") return;
+ var qNumMC=--n;
+ var mcName="mc."+qname+"."+qNumMC;
+ var mc= this.getField(mcName);
+ var aExpVs=mc.exportValues;
+ var l=aExpVs.length-1;
+ if (!mc.isBoxChecked(l)) {
+ eqAppAlert(\clickChkBxMCFI,3);
+ event.rc=false;
+ }
+}
+function qRadioButtonMCFI(key,qname,n) {
+ var fname = "obj."+qname+"."+(n+1);
+ if ( key == 0) this.resetForm(fname);
+}
+\end{insDLJS}
+\endinput
+%%
+%% End of file `usemcfi.def'.
diff --git a/texmf-dist/tex/latex/acrotex/web.cfg b/texmf-dist/tex/latex/acrotex/web.cfg
new file mode 100644
index 00000000..8afdc114
--- /dev/null
+++ b/texmf-dist/tex/latex/acrotex/web.cfg
@@ -0,0 +1,10 @@
+%
+% AeB Web Configuration file
+%
+% This is the web configuration file. Replace dvips with
+% dvipsone, pdftex or dvipdfm, in this case, when the driver
+% is not specified in the option list of the web package,
+% the driver specified here will be used.
+%
+\ExecuteOptions{dvips}
+
diff --git a/texmf-dist/tex/latex/acrotex/web.sty b/texmf-dist/tex/latex/acrotex/web.sty
index 90a836ad..cd41885e 100644
--- a/texmf-dist/tex/latex/acrotex/web.sty
+++ b/texmf-dist/tex/latex/acrotex/web.sty
@@ -1,2209 +1,2209 @@
-%%
-%% This is file `web.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% web.dtx (with options: `copyright,package')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% History: Noel Vaillant began developing a better web.sty
-%% based on my earlier published web.sty. Many thanks
-%% to him for starting me off.
-%%---------------------------------------------------------
-\NeedsTeXFormat{LaTeX2e}[1997/12/01]
-\ProvidesPackage{web}
- [2017/03/20 v6.0o web: A Screen Design Package (dps)]
-\RequirePackage{xkeyval}
-\RequirePackage{ifpdf}[2006/02/20]
-\RequirePackage{ifxetex}[2006/08/21]
-\IfFileExists{xcolor.sty}{%
- \def\eq@ColorPackage{xcolor}%
- \PassOptionsToPackage{xcolor}{table,hyperref}%
-}{\def\eq@ColorPackage{color}}
-\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
-\let\i@web@ddtoHyOpts\@empty
-\let\eq@driver@name\@empty
-\let\web@YES=y \let\web@NO=n
-\DeclareOptionX{dvipsone}{%
- \def\eq@drivernum{0}\def\eq@driver@name{dvipsone}%
- \let\web@set@paper\@empty
- \@namedef{papersize@for@\eq@driver@name}{\AtBeginDocument{%
- \special{papersize=\the\paperwidth,\the\paperheight}}}%
-}
-\DeclareOptionX{dviwindo}{%
- \def\eq@drivernum{4}\def\eq@driver@name{dviwindo}%
- \@namedef{papersize@for@\eq@driver@name}{\def\web@set@paper{%
- \special{papersize=\the\paperwidth,\the\paperheight}}}%
-}
-\DeclareOptionX{dvipdfm}{%
- \def\eq@drivernum{2}\def\eq@driver@name{dvipdfm}%
- \web@opts@xdvipdfmx
-}
-\DeclareOptionX{dvipdfmx}{%
- \def\eq@drivernum{2}\def\eq@driver@name{dvipdfmx}%
- \web@opts@xdvipdfmx
-}
-\DeclareOptionX{xetex}{%
- \def\eq@drivernum{2}\def\eq@driver@name{xetex}%
- \web@opts@xdvipdfmx
-}
-\newcommand{\web@opts@xdvipdfmx}{%
- \@namedef{papersize@for@\eq@driver@name}%
- {\def\web@set@paper{\AtBeginDvi{%
- \special{papersize=\the\paperwidth,\the\paperheight}}}}%
-}
-\DeclareOptionX{dvips}{%
- \def\eq@drivernum{0}\def\eq@driver@name{dvips}%
- \def\i@web@ddtoHyOpts{setpagesize=false}%
- \let\web@set@paper\@empty
- \@namedef{papersize@for@\eq@driver@name}{\AtBeginDocument{%
- \special{papersize=\the\paperwidth,\the\paperheight}}}%
-}
-\DeclareOptionX{pdftex}{\ifx\eq@driver@name\@empty
- \def\eq@drivernum{1}\def\eq@driver@name{pdftex}%
- \def\i@web@ddtoHyOpts{setpagesize}\def\web@set@paper{}\fi
-}
-\DeclareOptionX{luatex}{\ifx\eq@driver@name\@empty
- \def\eq@drivernum{1}\def\eq@driver@name{luatex}%
- \def\i@web@ddtoHyOpts{setpagesize}\def\web@set@paper{}\fi
-}
-\DeclareOptionX{textures}{%
- \def\eq@drivernum{3}\def\eq@driver@name{textures}%
- \@namedef{papersize@for@\eq@driver@name}%
- {\def\web@set@paper{\bgroup
- \dimen2=\origpaperheight \advance\dimen2 by -\topmargin
- \dimen0\dimen2 \advance\dimen0-\paperheight
- \xdef\@pdfpagescrop{0 \strip@pt\dimen0 \space
- \strip@pt\paperwidth\space \strip@pt\dimen2}%
- \egroup}%
- \AtEndOfPackage{%
- \edef\origpaperwidth{\the\paperwidth}%
- \edef\origpaperheight{\the\paperheight}%
- }%
- }%
-}
-\@ifundefined{ifequsecolor}{\newif\ifequsecolor \equsecolorfalse}{}
-\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
- \PassOptionsToPackage{forpaper}{eqexam}
- \PassOptionsToPackage{monochrome}{\eq@ColorPackage}%
- \PassOptionsToPackage{forpaper}{exerquiz}}
-\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue
- \PassOptionsToPackage{forcolorpaper}{eqexam}
- \PassOptionsToPackage{forcolorpaper}{exerquiz}}
-\DeclareOptionX{latexlayout}{%
- \let\web@layout\web@NO\ExecuteOptionsX{forcolorpaper}}
-\DeclareOptionX{uselatexsectioning}{%
- \web@sectioningfalse
-}
-\newif\ifweb@sectioning \web@sectioningtrue
-\DeclareOptionX{weblikeclass}{%
- \ExecuteOptionsX{latexlayout}%
- \ExecuteOptionsX{nobullets}%
- \ExecuteOptionsX{uselatexsectioning}%
-}
-\DeclareOptionX{nodirectory}{\let\web@directory@option\web@NO}
-\DeclareOptionX{usedirectory}{\let\web@directory@option\web@YES}
-\DeclareOptionX{latextoc}{\let\web@latextoc\web@YES}
-\DeclareOptionX{nobullets}{\let\web@bullets\web@NO
- \let\web@latextoc\web@YES\forceSubSubNumbers}
-\def\web@MargScrDimOpts#1#2#3#4#5#6{%
- \margins{#1}{#2}{#3}{#4} % left,right,top, bottom
- \screensize{#5}{#6} % height, width
- \let\margins\@@margins\let\screensize\@gobbletwo
-}
-\DeclareOptionX{designi}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{3.736in}{4.67in}}}
-\DeclareOptionX{designii}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{5in}}}
-\DeclareOptionX{designiii}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{5in}{6in}}}
-\DeclareOptionX{designiv}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4in}{5in}}}
-\DeclareOptionX{designv}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{6in}}}
-\DeclareOptionX{designvi}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.17in}{4.67in}}}
-\DeclareOptionX{designvii}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{7.5in}{10in}}}
-\DeclareOptionX{designviii}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6.67in}}}
-\DeclareOptionX{designix}{\AtEndOfPackage{%
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6in}}}
-\DeclareOptionX{usesf}{%
- \def\aeb@defaultfamily{\sffamily}
- \def\itdefault{sl}
- \renewcommand{\familydefault}{\sfdefault}
- \selectfont
- \renewcommand\labelitemi{\textrm{\textbullet}}
- \AtEndOfPackage{\def\web@copyright@symbol{\textrm{\copyright}}}
-}
-\def\aeb@defaultfamily{\rmfamily}
-\DeclareOptionX{unicode}{\def\aeb@useunicode{unicode}}
-\let\aeb@useunicode\@gobble
-\newif\if@web@hyperref \@web@hyperreftrue
-\DeclareOptionX{xhyperref}{\@web@hyperreffalse}
-\define@choicekey+{webHyOpts}{pdfencoding}[\val\nr]%
- {auto,pdfdoc,unicode}[pdfdoc]{\edef\web@Hypdfencoding{\val}}
- {\PackageWarning{web}{Bad choice for pdfencoding,
- permissible values\MessageBreak
- are auto, pdfdoc, and unicode.\MessageBreak Try again}}
-\let\web@Hypdfencoding\@empty
-\let\u@web@ddtoHyOpts\@empty
-\let\u@web@ddtoHySetup\@empty
-\def\web@addtoHyOpts#1{\g@addto@macro\u@web@ddtoHyOpts{#1}}
-\def\web@addtoHySetup#1{\g@addto@macro\u@web@ddtoHySetup{#1}}
-\define@key{web.sty}{addtoHyOpts}[]{%
- \setkeys*{webHyOpts}{#1}\web@addtoHyOpts{#1}}
-\define@key{web.sty}{addtoHyOpts*}[]{%
- \setkeys*{webHyOpts}{#1}\web@addtoHySetup{#1}}
-\DeclareOptionX{useui}{\PassOptionsToPackage{useui}{eforms}}
-\DeclareOptionX{forceSubSubNumbers}{\ExecuteOptionsX{nobullets}}
-\DeclareOptionX{centertitlepage}{\@centertitlepagetrue}
-\newif\if@centertitlepage \@centertitlepagefalse
-\DeclareOptionX{centertitlepagefull}{\@centertitlepagefulltrue}
-\newif\if@centertitlepagefull \@centertitlepagefullfalse
-\DeclareOptionX{pro}{\let\webpro@loaded\web@YES}
-\DeclareOptionX{extended}{\let\webpro@loaded\web@YES}
-\let\webpro@loaded\web@NO
-\def\loadwebpro{\InputIfFileExists{webpro.def}{}{}}
-\newif\ifweb@allowtemplates \web@allowtemplatestrue
-\DeclareOptionX{draft}{\web@allowtemplatesfalse}
-\DeclareOptionX{usetemplates}{\def\@usetemplates{1}}
-\DeclareOptionX{leftpanel}%
- {\def\@panelconfig{1}\def\@usetemplates{1}}
-\DeclareOptionX{rightpanel}%
- {\def\@panelconfig{2}\def\@usetemplates{1}}
-\newif\iftemplatesforpaper \templatesforpaperfalse
-\DeclareOptionX{templatesforpaper}{\templatesforpapertrue
- \ExecuteOptionsX{forcolorpaper}}
-\DeclareOptionX{rightpanelprt}{%
- \ifeqforpaper\else\ExecuteOptionsX{rightpanel}\fi
-}
-\DeclareOptionX{leftpanelprt}{%
- \ifeqforpaper\else\ExecuteOptionsX{leftpanel}\fi
-}
-\def\templatedefaults{\def\@panelsep{0pt}\def\@usetemplates{0}%
- \def\@panelconfig{0}\def\@textX{0}\def\@panelX{0}%
-}
-\templatedefaults
-\DeclareOptionX{navibar}{\web@navibartrue}
-\DeclareOptionX{tight}{\AtEndOfPackage{\tightsettings}}
-\DeclareOptionX{tight*}{\AtEndOfPackage{\tightsettings*}}
-\let\web@tight\web@NO
-\DeclareOptionX{uselatexparts}{%
- \AtEndOfPackage{\@ifundefined{part}{}{\let\part\web@save@part}}}
-\DeclareOptionX{uselatexchapters}{%
- \AtEndOfPackage{\@ifundefined{chapter}{}
- {\let\chapter\web@save@chapter}}}
-\DeclareOptionX{french}{%
- \AtEndOfPackage{%
- % Recouvrement de \today
- \def\today{\the\day\ \ifcase\month\or janvier
- \or f\'evrier \or mars \or avril
- \or mai \or juin \or juillet \or ao\^ut
- \or septembre \or octobre \or novembre
- \or d\'ecembre \fi \the\year}
- \def\web@toc{Table des mati\`{e}res}
- \def\web@continued{suite}
- \def\web@article{D\'{e}but \hyperlink{\web@Start.1}{Document}}
- \def\web@directory{R\'{e}pertoire}
- \def\web@revision{Mise \`{a} jour :}
- \def\web@copyright{Copyright}
- \def\web@versionlabel{Version}
- \def\web@back{Retour}}
- \PassOptionsToPackage{french}{exerquiz}
-}
-\DeclareOptionX{german}{%
- \AtEndOfPackage{%
- \def\today{\the\day. \ifcase\month\or Januar
- \or Februar \or M\"{a}rz \or April
- \or Mai \or Juni \or Juli \or August
- \or September \or Oktober \or November
- \or Dezember \fi \the\year}
- \def\web@versionlabel{Version}
- \def\web@toc{Inhaltsverzeichnis}
- \def\web@continued{Forts.}
- \def\web@article{Anfang \hyperlink{\web@Start.1}{Artikel}}
- \def\web@directory{\"Ubersicht}
- \def\web@revision{Letzte \"Anderung:}
- \def\web@copyright{Copyright}
- \def\web@section{Abschnitt}
- \def\web@back{Zur\"uck}
- \def\web@doc{Dok}}
- \PassOptionsToPackage{german}{exerquiz}
-}
-\DeclareOptionX{norsk}{%
- \AtEndOfPackage{%
- \def\today{\ifcase\month\or Januar
- \or Februar \or Mars \or April
- \or Mai \or Juni \or Juli \or August
- \or September \or Oktober \or November
- \or Desember \fi \the\day, \the\year}
- \def\web@versionlabel{Versjon}
- \def\web@toc{Innholdsfortegnelse}
- \def\web@continued{forts.}
- \def\web@article{Start \hyperlink{\web@Start.1}{artikkel}}
- \def\web@directory{Katalog}
- \def\web@revision{Sist endret:}
- \def\web@copyright{Copyright}
- \def\web@section{Avsnitt}
- \def\web@back{Tilbake}
- \def\web@doc{Dok}}
- \PassOptionsToPackage{norsk}{exerquiz}
-}
-\DeclareOptionX{dutch}{%
- \AtEndOfPackage{%
- \def\today{\the\day~\ifcase\month\or januari
- \or februari \or maart \or april
- \or mei \or juni \or juli \or augustus
- \or september \or oktober \or november
- \or december \fi \space \the\year}
- \def\web@versionlabel{Versie}
- \def\web@toc{Inhoudsopgave}
- \def\web@continued{vervolg}
- \def\web@article{Begin \hyperlink{\web@Start.1}{Artikel}}
- \def\web@directory{Overzicht}
- \def\web@revision{Laatste wijziging:}
- \def\web@copyright{Copyright}
- \def\web@section{Sectie}
- \def\web@back{Terug}
- \def\web@doc{Doc}}
- \PassOptionsToPackage{dutch}{exerquiz}
-}
-\DeclareOptionX{spanish}{%
- \AtEndOfPackage{%
- \def\today{\the\day\ de \ifcase\month\or Enero
- \or Febrero \or Marzo \or Abril
- \or Mayo \or Junio \or Julio \or Agosto
- \or Septiembre \or Octubre \or Noviembre
- \or Deciembre \fi de \the\year}
- \renewcommand\web@versionlabel{Versi\noexpand\'{o}n}
- \renewcommand\web@toc{Tabla de Contenido}
- \renewcommand\web@continued{cont.}
- \renewcommand\web@article{Inicio
- \hyperlink{\web@Start.1}{Art\'{\i}culo}}
- \renewcommand\web@directory{Directorio}
- \renewcommand\web@revision{Actualizado el:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Secci\'on}
- \renewcommand\web@back{Volver}
- \renewcommand\web@doc{Doc}}
- \PassOptionsToPackage{spanish}{exerquiz}
-}
-\DeclareOptionX{italian}{%
- \AtEndOfPackage{%
- \def\today{\ifcase\month\or Gennaio
- \or Febbraio \or Marzo \or Aprile
- \or Maggio \or Giugno \or Luglio \or Agosto
- \or Settembre \or Ottobre \or Novembre
- \or Dicembre \fi \the\day, \the\year}
- \renewcommand\web@versionlabel{Versione}
- \renewcommand\web@toc{Indice}
- \renewcommand\web@continued{cont.}
- \renewcommand\web@article{Inizio \hyperlink{\web@Start.1}{Articolo}}
- \renewcommand\web@directory{Directory}
- \renewcommand\web@revision{Data Ultima Revisione:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Sezione}
- \renewcommand\web@back{Back}
- \renewcommand\web@doc{Doc}}
- \PassOptionsToPackage{italian}{exerquiz}
-}
-\DeclareOptionX{russian}{%
- \ExecuteOptionsX{unicode}%
- \AtEndOfPackage{%
- \def\today{\the\day\ \ifcase\month
- \or \cyrya\cyrn\cyrv\cyra\cyrr\cyrya
- \or \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya
- \or \cyrm\cyra\cyrr\cyrt\cyra
- \or \cyra\cyrp\cyrr\cyre\cyrl\cyrya
- \or \cyrm\cyra\cyrya
- \or \cyri\cyryu\cyrn\cyrya
- \or \cyri\cyryu\cyrl\cyrya
- \or \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
- \or \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya
- \or \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya
- \or \cyrn\cyro\cyrya\cyrb\cyrr\cyrya
- \or \cyrd\cyre\cyrk\cyrya\cyrb\cyrr\cyrya \fi{ }%
- \the\year\ \cyrg.}
- \gdef\eq@protected##1##2{{\ifhmode ##2\else
- \ifvmode ##2\else\ifinner##2\else\noexpand ##1\fi\fi\fi}}%
- \def\cyrCommand##1##2{\def##1{\eq@protected##1{##2}}}%
- \cyrCommand\web@toc{\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn%
- \cyri\cyre}
- \cyrCommand\web@continued{\cyrp\cyrr\cyro\cyrd\cyro\cyrl%
- \cyrzh\cyre\cyrn\cyri\cyre}
- \cyrCommand\web@article{\CYRN\cyra\cyrch\cyra\cyrl\cyro{ }%
- \hyperlink{\web@Start.1}{\cyrd\cyro\cyrk\cyru\cyrm\cyre%
- \cyrn\cyrt\cyra}}
- \cyrCommand\web@directory{\CYRS\cyro\cyrd\cyre\cyrr\cyrzh%
- \cyra\cyrn\cyri\cyre}
- \cyrCommand\web@revision{\CYRP\cyro\cyrs\cyrl\cyre\cyrd\cyrn%
- \cyrya\cyrya{ }\cyrr\cyre\cyrv\cyri\cyrz\cyri\cyrya:}
- \let\web@copyright\@gobble
- \cyrCommand\web@versionlabel{\CYRV\cyre\cyrr\cyrs\cyri\cyrya}
- \cyrCommand\web@back{\CYRN\cyra\cyrz\cyra\cyrd}
- \cyrCommand\web@section{\CYRCH\cyra\cyrs\cyrt\cyrsftsn}}
- \PassOptionsToPackage{russian}{exerquiz}
-}
-\DeclareOptionX{dansk}{%
- \AtEndOfPackage{%
- \def\today{\ifcase\month\or Januar
- \or Februar \or Marts \or April
- \or Maj \or Juni \or Juli \or August
- \or September \or Oktober \or November
- \or December \fi \the\day, \the\year}
- \renewcommand\web@versionlabel{Version}
- \renewcommand\web@toc{Indholdsfortegnelse}
- \renewcommand\web@continued{forts.}
- \renewcommand\web@article{Begin \hyperlink{\web@Start.1}{Artikel}}
- \renewcommand\web@directory{Katalog}
- \renewcommand\web@revision{Sidst revideret:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Afsnit}
- % Label Navibar
- \renewcommand\web@back{Tilbage}
- \renewcommand\web@doc{Dok}} % restricted to three characters
- \PassOptionsToPackage{dansk}{exerquiz}
-}
-\DeclareOptionX{polish}{%
- \AtEndOfPackage{%
- \def\today{\ifcase\month\or {Stycze\'{n}}
- \or Luty \or Marzec \or {Kwiecie\'{n}}
- \or Maj \or Czerwiec \or Lipiec \or {\'{S}ierpie\'{n}}
- \or {Wrzesie\'{n}} \or {Pa\'{z}dziernik} \or Listopad
- \or {Grudzie\'{n}} \fi \the\day, \the\year}
- \renewcommand\web@versionlabel{Wersja}
- \renewcommand\web@toc{Spis Tre\'{s}ci}
- \renewcommand\web@continued{verte}
- \renewcommand\web@article{Pocz\k{a}tek do
- \hyperlink{\web@Start.1}{Tekstu}}
- \renewcommand\web@directory{Zawarto\'{s}\'{c}}
- \renewcommand\web@revision{Ostatnia zmiana:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Cze\'{s}\'{c}}
- % Label Navibar
- \renewcommand\web@back{Wstecz}
- \renewcommand\web@doc{Dok}} % restricted to three characters
- \PassOptionsToPackage{polish}{exerquiz}
-}
-\DeclareOptionX{finnish}{%
- \AtEndOfPackage{%
- % Recouvrement de \today
- \def\today{\the\day\ \ifcase\month\or Tammikuu
- \or Helmikuu \or Maaliskuu \or Huhtikuu
- \or Toukokuu \or Kes\"{a}kuu \or Hein\"{a}kuu \or Elokuu
- \or Syyskuu \or Lokakuu \or Marraskuu
- \or Joulukuu \fi \the\year}
- \def\web@toc{Sis\"{a}llys}
- \def\web@continued{jatka}
- \def\web@article{Aloita \hyperlink{section.1}{Artikkeli}}
- \def\web@directory{Hakemisto}
- \def\web@revision{Muutettu viimeeksi:}
- \def\web@copyright{Copyright}
- \def\web@section{Kappale}
- \def\web@versionlabel{Versio}
- \def\web@back{Takaisin}}
- \PassOptionsToPackage{finnish}{exerquiz}
-}
-\DeclareOptionX{catalan}{%
- \AtEndOfPackage{%
- \def\today{\the\day\ de \ifcase\month\or Gener
- \or Febrer \or Mar\c{c} \or Abril
- \or Maig \or Juny \or Juliol \or Agost
- \or Setembre \or Octubre \or Novembre
- \or Desembre \fi de \the\year}
- \renewcommand\web@versionlabel{Versi\noexpand\'{o}}
- \renewcommand\web@toc{Taula de Contingut}
- \renewcommand\web@continued{cont.}
- \renewcommand\web@article{Inici \hyperlink{\web@Start.1}{Article}}
- \renewcommand\web@directory{Directori}
- \renewcommand\web@revision{Actualizat el:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Secci\'o}
- \renewcommand\web@back{Tornar}
- \renewcommand\web@doc{Doc}}
- \PassOptionsToPackage{catalan}{exerquiz}
-}
-\DeclareOptionX{czech}{%
- \AtEndOfPackage{%
- \def\today{\number\day. \ifcase\month\or ledna\or \'unora\or
- b\v{r}ezna\or dubna\or kv\v{e}tna\or \v{c}ervna\or \v{c}ervence\or
- srpna\or z\'a\v{r}\'\i\or \v{r}\'{\i}jna\or listopadu\or prosince\fi
- \space\number\year}
- \def\web@versionlabel{Verze}
- \def\web@toc{Obsah}
- \def\web@continued{pokr.}
- \def\web@article{Za\v{c}\'{a}tek \hyperlink{\web@Start.1}{textu}}
- \def\web@directory{Rozcestn\'{\i}k}
- \def\web@revision{Posledn\'{\i} zm\v{e}na}
- \def\web@copyright{Copyright}
- \def\web@section{Kapitola}
- \def\web@back{Zp\v{e}t}
- \def\web@doc{Dok}}
- \PassOptionsToPackage{czech}{exerquiz}
-}
-\DeclareOptionX{brazil}{%
- \AtEndOfPackage{%
- \def\today{\the\day\ de \ifcase\month\or janeiro
- \or fevereiro \or mar\c{c}o \or abril
- \or maio \or junho \or julho \or agosto
- \or setembro \or outubro \or novembro
- \or dezembro \fi de \the\year}
- \renewcommand\web@versionlabel{Vers\~{a}o}
- \renewcommand\web@toc{Tabela de Conte\'{u}do}
- \renewcommand\web@continued{cont.}
- \renewcommand\web@article{Inicie o
- \hyperlink{\web@Start.1}{Artigo}}
- \renewcommand\web@directory{Diret\'{o}rio}
- \renewcommand\web@revision{Atualizado em:}
- \renewcommand\web@copyright{Copyright}
- \renewcommand\web@section{Se\c{c}\noexpand\~{a}o}
- \renewcommand\web@back{Voltar}
- \renewcommand\web@doc{Doc}}
- \PassOptionsToPackage{brazil}{exerquiz}
-}
-\DeclareOptionX{turkish}{%
- \ExecuteOptionsX{unicode}%
- \AtEndOfPackage{%
- \def\today{\the\day\ \ifcase\month\or Ocak
- \or \c{S}ubat \or Mart \or Nisan
- \or May{\i}s \or Haziran \or Temmuz \or A\u{g}ustos
- \or Eyl\"ul \or Ekim \or Kas{\i}m
- \or Aral{\i}k \fi \the\year}
- \def\web@toc{{\.I}\c{c}indekiler}
- \def\web@continued{suite}
- \def\web@article{\hyperlink{\web@Start.1}{D\"ok\"umanta} ba{\c s}la}
- \def\web@directory{Dosya}
- \def\web@revision{Son versiyon tarihi :}
- \def\web@copyright{Copyright}
- \def\web@versionlabel{Versiyon}
- \def\web@section{K{\i}s{\i}m}
- \def\web@back{Geri}
- \def\web@doc{D\"ok}}
- \PassOptionsToPackage{turkish}{exerquiz}
-}
-\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}
- {\eq@ColorPackage}}
-\@ifpackageloaded{xcolor}%
-{%
- \@ifpackagelater{xcolor}{2004/07/04}{}
- {%
- \PackageError{web}{%
- *************************************************\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]{web}\MessageBreak
- * or \string\documentclass[noxcolor]{article}\MessageBreak
- *************************************************}{}%
- }%
-}{}
-\newif\ifweb@navibar\web@navibarfalse
-\def\NaviBarOn{\global\web@navibartrue}
-\def\NaviBarOff{\global\web@navibarfalse}
-\newif\ifeqforpaper \eqforpaperfalse % for those who insist on paper
-\newif\ifweb@papersize@set \web@papersize@setfalse
-\newif\ifweb@margins@set \web@margins@setfalse
-\newif\if@defaultsubsubding \@defaultsubsubdingtrue
-\def\forceSubSubNumbers{%
- \ifx\web@latextoc\web@YES\else
- \PackageWarning{webpro}{\string\forSubSubNumbers\space
- requested,\MessageBreak I'm adding the option of latextoc}\fi
- \let\web@latextoc\web@YES\@defaultsubsubdingfalse
-}
-\@ifclassloaded{report}{\newif\if@mainmatter\@mainmattertrue}{}
-\newcommand\NewPage{\ifeqforpaper\else\newpage\fi}
-\let\web@directory@option\web@NO
-\let\web@latextoc\web@NO
-\let\web@layout\web@YES
-\let\web@bullets\web@YES
-\def\web@finalDot{.}
-\def\noFinalDot{\let\web@finalDot\@empty}
-\@onlypreamble\noFinalDot
-\def\minPanelWidth#1{\def\web@minpanelwidth{#1}}
-\minPanelWidth{1in}
-\ifpdf\ExecuteOptionsX{pdftex}\else
- \ifxetex\ExecuteOptionsX{xetex}\else
- \let\ExecuteOptions@SAVE\ExecuteOptions
- \let\ExecuteOptions\ExecuteOptionsX
- \InputIfFileExists{web.cfg}{}
- {\@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{dvips}}
- {\ExecuteOptionsX{dvipsone}}}%
- \let\ExecuteOptions\ExecuteOptions@SAVE
- \fi\fi
-\ProcessOptionsX
-\ifx\web@Hypdfencoding\@empty\else
- \let\aeb@useunicode\@gobble\fi
-\def\w@csarg#1#2{\expandafter#1\csname#2\endcsname}
-\@nameuse{papersize@for@\eq@driver@name}
-\ifx\web@layout\web@YES\else\templatedefaults\fi
-\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}
-\pdfmarkupfalse\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
-\iftemplatesforpaper\def\@usetemplates{1}\fi
-\if@centertitlepagefull\@centertitlepagetrue\fi
-\RequirePackage{\eq@ColorPackage}
-\RequirePackage{calc}
-\RequirePackage{amssymb}% used for navibar
-\edef\web@RequireHyperref{\noexpand\RequirePackage[%
- \ifpdf\else\ifxetex\else\eq@driver@name,\fi\fi
- bookmarks,bookmarksnumbered,bookmarksopen,%
- colorlinks,\aeb@useunicode,linkcolor=webgreen,%
- filecolor=webbrown,citecolor=webgreen,%
- urlcolor=webbrown,pagebackref,pdfpagemode=UseNone,%
- pdfstartview=Fit,pdfpagelayout=SinglePage%
- \ifx\u@web@ddtoHyOpts\@empty\else,\u@web@ddtoHyOpts\fi
- \ifx\i@web@ddtoHyOpts\@empty\else,\i@web@ddtoHyOpts\fi]{hyperref}%
-}
-\def\w@isHyLoaded{\@ifpackageloaded{hyperref}{}{\PackageError{web}
- {The xhyperref option used, but hyperref is not\MessageBreak
- already loaded. Will load hyperref with the options\MessageBreak
- chosen by web}{Remove xhyperref or load hyperref prior to the web
- package.}\web@RequireHyperref}%
-}
-\if@web@hyperref\expandafter\web@RequireHyperref\else
- \expandafter\w@isHyLoaded\fi
-\ifx\u@web@ddtoHySetup\@empty\else\edef\x{\noexpand\hypersetup
- {\u@web@ddtoHySetup}}\expandafter\x\fi
-\def\@pdfcreator{The AcroTeX eDucation Bundle}
-\RequirePackage{comment}
-\ifnum\@usetemplates=1\relax
- \def\x{\RequirePackage{graphicx}}\expandafter\x\fi
-\ifnum\@usetemplates=1\relax
- \RequirePackage{eso-pic}
- \ifnum\eq@drivernum=2\relax
- \def\web@set@paper{\AddToShipoutPicture*{%
- \special{papersize=\the\paperwidth,\the\paperheight}}}%
- \AtBeginShipoutFirst{%
- \begingroup
- \@ifundefined{stockwidth}{%
- \ifx\special@paper\@empty
- \special{papersize=\the\paperwidth,\the\paperheight}%
- \else
- \special{papersize=\special@paper}%
- \fi
- }{%
- \ifdim\stockwidth=\z@
- \else
- \special{papersize=\the\stockwidth,\the\stockheight}%
- \fi
- }%
- \endgroup
- }%
- \@ifundefined{@ShipoutPicture}{}{%
- \renewcommand{\@ShipoutPicture}{%
- \bgroup
- \@tempswafalse%
- \ifx\ESO@HookI\@empty\else\@tempswatrue\fi%
- \ifx\ESO@HookII\@empty\else\@tempswatrue\fi%
- \if@tempswa%
- \@tempdima=1in\@tempdimb=-\@tempdima%
- \advance\@tempdimb\paperheight
- \@ifundefined{stockwidth}{}{%
- \advance\@tempdima+\trimedge%
- \advance\@tempdima+\paperwidth%
- \advance\@tempdima-\stockwidth%
- \if@twoside\ifodd\c@page\else%
- \advance\@tempdima-2\trimedge%
- \advance\@tempdima-\paperwidth%
- \advance\@tempdima+\stockwidth%
- \fi\fi%
- \advance\@tempdimb+\trimtop}%
- \unitlength=1pt%
- \global\setbox\@cclv\vbox{%
- \vbox{\let\protect\relax
- \pictur@(0,0)%
- (\strip@pt\@tempdima,\strip@pt\@tempdimb)%
- \ESO@HookII\ESO@HookI\global\let\ESO@HookII\@empty%
- \endpicture}%
- \box\@cclv%
- }%
- \fi
- \egroup
- }%
- }%
- \fi
-\fi
-\def\getargs#1#2{\def\aeb@argi{#1}\def\aeb@argii{#2}}
-\let\getargsii\getargs
-\newlength{\textscreenwidth}
-\setlength{\textscreenwidth}{\paperwidth}
-\newlength{\@panelwidth}
-\def\panelscreenwidth{\@panelwidth}
-\newdimen\@Leftmargin \@Leftmargin=0pt
-\newdimen\@Rightmargin \@Rightmargin=0pt
-\newdimen\@Bottommargin \@Bottommargin=0pt
-\newdimen\@Topmargin \@Topmargin=0pt
-\newdimen\web@Topmargin \web@Topmargin=8pt
-\newcommand{\websetheadheight}{8pt}
-\newcommand{\web@footskip}{4pt}
-\def\web@additionalheadsep{0pt}
-\pagestyle{empty}
-\def\InitLayout
-{%
- \ifeqforpaper\else
- \setlength\headheight{\websetheadheight}
- \hoffset=0pt \voffset=0pt
- \fi
- \ifeqforpaper\else
- {\@tempdima=\paperwidth
- \addtolength{\@tempdima}{-\@Leftmargin}%
- \addtolength{\@tempdima}{-\@Rightmargin}%
- \xdef\fullscreenwidth{\the\@tempdima}}%
- \fi
- \ifx\web@layout\web@YES\else\templatedefaults\fi
- \ifeqforpaper\else
- \setlength{\textwidth}{\paperwidth}
- \setlength{\textheight}{\paperheight}
- \addtolength{\textheight}{-\@Topmargin}
- \addtolength{\textheight}{-\@Bottommargin}
- \setlength{\headsep}{\@Topmargin}
- \addtolength\headsep{-\headheight}
- \setlength{\topmargin}{\web@Topmargin}
- \addtolength\headsep{-\topmargin}
- \addtolength\headsep{\web@additionalheadsep}
- \addtolength{\topmargin}{-1in}
- \setlength\footskip{\@Bottommargin}
- \addtolength{\footskip}{-\web@footskip} % depth of navibar
- \ifcase\@panelconfig
- \setlength{\oddsidemargin}{\@Leftmargin}
- \setlength{\evensidemargin}{\@Leftmargin}
- \or
- \setlength{\oddsidemargin}{\@panelwidth}
- \setlength{\evensidemargin}{\@panelwidth}
- \or
- \setlength{\oddsidemargin}{\@Leftmargin}
- \setlength{\evensidemargin}{\@Leftmargin}
- \fi
- \addtolength{\evensidemargin}{-1in}
- \addtolength{\oddsidemargin}{-1in}
- \fi
- \ifx\web@layout\web@YES
- \ifcase\@panelconfig
- \addtolength{\textwidth}{-\@Leftmargin}
- \addtolength{\textwidth}{-\@Rightmargin}
- \or % leftpanel
- \addtolength{\textwidth}{-\@panelwidth}
- \addtolength{\textwidth}{-\@Rightmargin}
- \or % rightpanel
- \addtolength{\textwidth}{-\@panelwidth}
- \addtolength{\textwidth}{-\@Leftmargin}
- \fi
- \ifnum\@usetemplates=1\relax
- \setlength{\textscreenwidth}{\paperwidth}
- \def\@textX{0}
- \ifnum\@panelconfig=1 % leftpanel
- \addtolength{\textwidth}{-\@panelsep}
- \addtolength{\oddsidemargin}{\@panelsep}
- \addtolength{\evensidemargin}{\@panelsep}
- \addtolength{\textscreenwidth}{-\@panelwidth}
- \def\@textX{\strip@pt\@panelwidth}
- \def\@panelX{0}
- \fi
- \ifnum\@panelconfig=2 % rightpanel
- \addtolength{\textwidth}{-\@panelsep}
- \addtolength{\textscreenwidth}{-\@panelwidth}
- \def\@textX{0}
- \def\@panelX{\strip@pt\textscreenwidth}
- \fi
- \calculatefullwidth
- \fi
- \fi
-}
-\def\@convLtoP#1#2{%
- \afterassignment\@convLtoP@i\dimen@#2bp\relax{#1}{#2}}
-\def\@convLtoP@i#1\relax#2#3{%
- \if!#1!%
- \def#2{#3}%
- \else
- \dimen@.99626\dimen@
- \edef#2{\strip@pt\dimen@}%
- \fi}
-\providecommand\setPageDevice[3][600]{\bgroup
- \@convLtoP{\width}{#2}\@convLtoP{\height}{#3}
- \ifpdfmarkup\headerps@out{<< /HWResolution [#1 #1] %
- /PageSize [\width\space\height] >> setpagedevice}\else
- \PackageWarning{web}{This is a distiller only command,\MessageBreak
- ignoring \string\setPageDevice}\fi\egroup}
-\providecommand\allowTransparency{\bgroup
- \ifpdfmarkup\headerps@out{<< %
- /AllowTransparency true >> setdistillerparams}\else
- \PackageWarning{web}{This is a distiller only command,\MessageBreak
- ignoring \string\allowTransparency}\fi\egroup}
-\@onlypreamble\setPageDevice
-\@onlypreamble\allowTransparency
-\def\screensize#1#2{%
- \def\webSaveSSDim{{#1}{#2}}%
- \begingroup
- \ifeqforpaper
- \ifx\web@layout\web@YES
- \setlength{\@tempdima}{#2}%
- \global\textwidth\@tempdima
- \addtolength{\@tempdima}{-\@Leftmargin}%
- \addtolength{\@tempdima}{-\@Rightmargin}%
- \xdef\fullscreenwidth{\the\@tempdima}%
- \else
- \xdef\fullscreenwidth{\the\textwidth}%
- \fi
- \else
- \setlength{\@tempdima}{#1}%
- \global\paperheight\@tempdima
- \setlength{\@tempdima}{#2}%
- \global\paperwidth\@tempdima
- \fi
- \endgroup
- \web@papersize@settrue
- \web@set@paper % dps modified
- \let\screensize\@gobbletwo
- \InitLayout
-}
-\let\screensize@web@save\screensize
-\newcommand{\setScreensizeFromGraphic}[2][]{%
- \getDimsFromGraphic[#1]{#2}%
- {\web@graphicScreenWidth}{\web@graphicScreenHeight}%
- \screensize{\web@graphicScreenHeight}{\web@graphicScreenWidth}%
-}
-\@onlypreamble\setScreensizeFromGraphic
-\newcommand{\getDimsFromGraphic}[4][]{{%
- \setbox0=\hbox{\includegraphics[draft,#1]{#2}}%
- \dimen@=\dp0 \advance\dimen@\ht0
- \xdef#3{\the\wd0 }\xdef#4{\the\dimen@}%
-}}
-\def\web@getSSDims#1#2{\edef\web@@height{#1}\edef\web@@width{#2}}
-\def\addToWebHWError{\PackageError{web}{%
- You must declare screen size first by using\MessageBreak
- the \string\screensize\space command, or by declaring \MessageBreak
- a design in the web option list}%
- {Do as is suggested in error message!}}
-\newcommand{\addtoWebHeight}[1]{%
- \ifx\screensize\@gobbletwo
- \expandafter\web@getSSDims\webSaveSSDim
- \screensize@web@save{\web@@height+#1}{\web@@width}%
- \else\addToWebHWError\fi
-}
-\newcommand{\addtoWebWidth}[1]{%
- \ifx\screensize\@gobbletwo
- \expandafter\web@getSSDims\webSaveSSDim
- \screensize@web@save{\web@@height}{\web@@width+#1}%
- \else\addToWebHWError\fi
-}
-\@onlypreamble\addtoWebHeight
-\@onlypreamble\addtoWebWidth
-\newcommand{\@margins}[5][\web@minpanelwidth]
-{%
- \def\webSaveMargDim{[#1]{#2}{#3}{#4}{#5}}%
- \setlength{\@panelwidth}{#1}%
- \ifdim\@panelwidth<\web@minpanelwidth
- \setlength{\@panelwidth}{\web@minpanelwidth}\fi
- \setlength{\@Leftmargin}{#2}%
- \setlength{\@Rightmargin}{#3}%
- \setlength{\@Topmargin}{#4}%
- \setlength{\@Bottommargin}{#5}%
- \web@margins@settrue
- \InitLayout
-}
-\let\margins\@margins
-\let\margins@web@save\margins
-\newcommand{\@@margins}[5][]{}
-\let\marginsize\margins
-\newcommand\get@MargDim[5][]{%
- \def\currPanelWidth{#1}%
- \def\currLeftMarg{#2}\def\currRightMarg{#3}%
- \def\currTopMarg{#4}\def\currBottomMarg{#5}}
-\newcommand{\resetmargins}[5][\web@minpanelwidth]{%
- \expandafter\get@MargDim\webSaveMargDim
- \begingroup
- \let\incby\currPanelWidth
- \def\web@arg{#1}\ifx\web@arg\@empty
- \setlength{\@tempdima}{\currPanelWidth}\else
- \setlength{\@tempdima}{#1}\fi
- \xdef\newPanelWidth{\the\@tempdima}%
- \let\incby\currLeftMarg
- \def\web@arg{#2}\ifx\web@arg\@empty
- \setlength{\@tempdima}{\currLeftMarg}\else
- \setlength{\@tempdima}{#2}\fi
- \xdef\newLeftMarg{\the\@tempdima}%
- \let\incby\currRightMarg
- \def\web@arg{#3}\ifx\web@arg\@empty
- \setlength{\@tempdima}{\currRightMarg}\else
- \setlength{\@tempdima}{#3}\fi
- \xdef\newRightMarg{\the\@tempdima}%
- \let\incby\currTopMarg
- \def\web@arg{#4}\ifx\web@arg\@empty
- \setlength{\@tempdima}{\currTopMarg}\else
- \setlength{\@tempdima}{#4}\fi
- \xdef\newTopMarg{\the\@tempdima}%
- \let\incby\currBottomMarg
- \def\web@arg{#4}\ifx\web@arg\@empty
- \setlength{\@tempdima}{\currBottomMarg}\else
- \setlength{\@tempdima}{#5}\fi
- \xdef\newBottomMarg{\the\@tempdima}%
- \endgroup
- \margins@web@save[\newPanelWidth]{\newLeftMarg}{\newRightMarg}
- {\newTopMarg}{\newBottomMarg}
-}
-\@onlypreamble\resetscreensize
-\let\web@save@title\title
-\def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
-\def\@web@title[#1]#2{\gdef\webtitle{#2}\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}\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}%
- \hypersetup{pdfsubject={#2}}}
-\def\email#1{\gdef\webemail{#1}}
-\def\thewebemail{\href{mailto:\webemail}{\webemail}}
-\def\keywords#1{\gdef\webkeywords{#1}\hypersetup{pdfkeywords={#1}}}
-\def\pdfLang#1{\def\web@pdfLang{#1}\hypersetup{pdflang={#1}}}
-\let\web@pdfLang\@empty
-\def\university#1{\gdef\webuniversity{#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\copyrightyears#1{\gdef\webcopyrightyears{#1}}
-\newcommand{\tocName}[1]{\def\web@toc{#1}}
-\tocName{Table of Contents}
-\newcommand{\tocNameCont}[1]{\def\web@continued{#1}}
-\tocNameCont{cont.}
-\newcommand{\dirContentLink}[1]{\def\web@article{#1}}
-\dirContentLink{Begin \hyperlink{\web@Start.1}{Article}}
-\newcommand{\directoryName}[1]{\def\web@directory{#1}}
-\directoryName{Directory}
-\newcommand{\revisionLabel}[1]{\def\web@revision{#1}}
-\revisionLabel{Last Revision Date:}
-\def\norevisionLabel{\let\web@revision\@gobble}
-\newcommand{\copyrightLabel}[1]{\def\web@copyright{#1}}
-\copyrightLabel{Copyright}
-\def\nocopyright{\let\web@copyright\@gobble}
-\def\nocopyrightNotice{\let\web@copyright\@gobblethree}
-\def\web@section{Section}
-\def\web@back{Back}
-\def\web@doc{Doc} % restricted to three characters
-\title{}\author{}\email{}\subject{}\keywords{}\version{}
-\university{}\copyrightyears{\the\year}
-\let\IF@AorBswitch\ifeqforpaper
-\def\prtscr{\@ifstar{\prtscrV}{\prtscrA}}
-\def\prtscrA#1#2{\ifeqforpaper#1\else#2\fi}
-\newtoks\webtoksi
-\newbox\webtempboxi
-\newbox\webtempboxii
-\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
-\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
-\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
-\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
-\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
- \afterassignment\TRUEACTIONia\fi
- \setbox\webtempboxi=\hbox}
-\providecommand\SETTEMPBOXii{\IF@AorBswitch
- \afterassignment\FALSEACTIONiia\fi
- \setbox\webtempboxii=\hbox}
-\def\prtscrV{\let\IF@AorBswitch\ifeqforpaper
- \ifeqforpaper
- \def\web@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
- \def\web@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
- \web@next}
-\newcommand{\web@aboveOptPgMatDef}{\minimumskip\vspace{\stretch{1}}}
-\newcommand{\aboveOPMvspace}{\web@aboveOptPgMatDef}
-\newcommand{\optionalPageMatter}[2][\web@aboveOptPgMatDef]{%
- \def\aboveOPMvspace{#1}\def\optionalpagematter{#2}%
-}
-\def\optionalpagematter{}
-\@ifundefined{thechapter}
- {\def\web@Start{section}}{\def\web@Start{chapter}}
-\newcommand{\titleauthorproportion}{.33}
-\newcommand{\hproportionwebuniversity}{.7}
-\newcommand{\hproportionwebtitle}{.7}
-\newcommand{\hproportionwebauthor}{.4}
-\newcommand{\minimumskip}{\medskip}
-\def\web@copyright@symbol{\copyright}
-\newcommand{\copyrightSymbol}[1]{\def\web@copyright@symbol{#1}}
-\def\nocopyrightsymbol{\let\web@copyright@symbol\@gobble}
-\newcommand{\trailerFontSize}{\footnotesize}
-\def\maketitle@trailer@ul{\web@copyright\ \web@copyright@symbol\
- \webcopyrightyears}
-\def\maketitle@trailer@ll{\web@revision\ \@date}
-\def\maketitle@trailer@ur{\thewebemail}
-\def\maketitle@trailer@lr{\webversion}
-\newcommand{\titlepageTrailer}
-{%
- \makebox[\linewidth]{\parbox{\linewidth}{%
- \maketitle@trailer@ul\hfill\maketitle@trailer@ur\\
- \maketitle@trailer@ll\hfill\maketitle@trailer@lr}}%
-}
-\newcommand{\webdirectory}{%
- \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}%
- \web@priorDirMatter
- \begin{flushleft}{\web@formatWordDirectory\web@directory}%
- \web@priorDirList
- \vspace{\vspaceAfterDirName}%
- \begin{itemize}\setlength{\itemsep}{-3pt}\web@formatDirectoryItems
- \ifx\web@removeDirTOC\web@YES\else\item\relax\dirTOCItem\fi
- \ifx\web@removeDirArticle\web@YES\else
- \item\relax\dirArticleItem\fi
- \web@addtoDirList
- \end{itemize}
- \web@afterDirList
- \end{flushleft}
- \web@afterDirMatter
-}
-\newcommand{\directoryhook}[1]{\def\web@directory@hook##1{#1}}
-\let\web@directory@hook\@empty
-\newcommand{\vspaceAfterDirName}{-3pt}
-\newcommand{\dirTOCItem}{\hyperlink{webtoc}{\web@toc}}
-\newcommand{\dirArticleItem}{\web@article}
-\newcommand{\removeDirTOC}{\let\web@removeDirTOC\web@YES}
-\let\web@removeDirTOC\web@NO
-\newcommand{\removeDirArticle}{\let\web@removeDirArticle\web@YES}
-\let\web@removeDirArticle\web@NO
-\let\web@addtoDirList\@empty
-\newcommand{\formatWordDirectory}[1]{\def\web@formatWordDirectory{#1}}
-\formatWordDirectory{\bfseries\large}
-\newcommand{\formatDirectoryItems}[1]{\def\web@formatDirectoryItems{#1}}
-\formatDirectoryItems{\bfseries}
-\newcommand{\addtoDirList}[1]{\g@addto@macro\web@addtoDirList{\item #1}}
-\newcommand{\priorDirList}[1]{\def\web@priorDirList{#1}}
-\let\web@priorDirList\@empty
-\newcommand{\afterDirList}[1]{\def\web@afterDirList{#1}}
-\let\web@afterDirList\@empty
-\newcommand{\priorDirMatter}[1]{\def\web@priorDirMatter{#1}}
-\let\web@priorDirMatter\@empty
-\newcommand{\afterDirMatter}[1]{\def\web@afterDirMatter{#1}}
-\let\web@afterDirMatter\@empty
-\newcommand{\universityColor}[1]{\def\webuniversity@color{#1}}
-\universityColor{blue}
-\newcommand{\titleColor}[1]{\def\webtitle@color{#1}}
-\titleColor{black}
-\newcommand{\authorColor}[1]{\def\webauthor@color{#1}}
-\authorColor{black}
-\newcommand{\subjectColor}[1]{\def\websubject@color{#1}}
-\subjectColor{black}
-\def\aboveTopTitleSkip#1{\def\web@aboveTopTitleSkip{#1}}
-\aboveTopTitleSkip{0pt}
-\newcommand{\topTitlePage}
-{%
- \vglue\web@aboveTopTitleSkip
- \noindent\makebox[\linewidth]{%
- \parbox{\hproportionwebuniversity\linewidth}%
- {\bfseries\color{\webuniversity@color}\ifeqforpaper\large\fi
- \centering\webuniversity}}\par\ifeqforpaper\else\minimumskip\fi
- \vspace{\stretch{1}}%
- \noindent\makebox[\linewidth]{%
- \parbox{\hproportionwebtitle\linewidth}%
- {\bfseries\color{\webtitle@color}\ifeqforpaper\Large\else
- \large\fi\centering\webtitle}}\par\ifeqforpaper
- \vspace{2\baselineskip}\else\minimumskip\vspace{\stretch{1}}\fi
- \noindent\makebox[\linewidth]{%
- \parbox{\hproportionwebauthor\linewidth}%
- {\bfseries\color{\webauthor@color}\ifeqforpaper
- \large\fi\centering\webauthor}}
-}
-\newcommand{\allowHeadingsTitlePage}{\let\web@titlepagestyle\@gobble}
-\def\web@titlepagestyle#1{#1}
-\newcommand{\coverpagemargin}{1in}
-\newcommand{\maketitlepreamble}
-{%
- \web@titlepagestyle{\thispagestyle{empty}}%
- \ifeqforpaper\if@centertitlepage
- \begingroup
- \if@centertitlepagefull
- \@tempdima=\coverpagemargin
- \else
- \@tempdima\paperwidth
- \advance\@tempdima-\textwidth
- \@tempdima=.5\@tempdima
- \edef\coverpagemargin{\the\@tempdima}%
- \fi
- \@tempdimb\paperwidth
- \addtolength{\@tempdimb}{-2\@tempdima}%
- \edef\fullscreenwidth{\the\@tempdimb}%
- \linewidth\fullscreenwidth
- \textwidth\fullscreenwidth
- \hfuzz\linewidth
- \setlength{\oddsidemargin}{\coverpagemargin-1in}%
- \setlength{\evensidemargin}{\oddsidemargin}%
- \marginparsep=0pt
- \marginparwidth=0pt
- \parindent0pt
- \fi\fi
-}
-\newcommand{\maketitlepostamble}
-{%
- \newpage
- \ifeqforpaper\if@centertitlepage\endgroup\fi\fi
-}
-\newcommand{\web@maketitle}
-{%
- \maketitlepreamble
- \ifeqforpaper\vspace*{2\baselineskip}\else
- \vbox to\titleauthorproportion\textheight\bgroup\fi
- \topTitlePage
- \ifeqforpaper\else\egroup\fi % end of \vbox for title and author
- \ifx\optionalpagematter\@empty\par\else
- \begingroup\par
- \aboveOPMvspace
- \noindent\parbox{\linewidth}{\optionalpagematter}%
- \par\endgroup\fi
- \vspace{\stretch{1}}
- \ifx\web@directory@option\web@YES\web@directory@hook\webdirectory\fi
- \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}
- \vfill\noindent\begingroup
- \trailerFontSize\titlepageTrailer\par\endgroup
- \maketitlepostamble
-}
-\let\web@save@maketitle\maketitle
-\let\maketitle\web@maketitle
-\newcommand{\makeinlinetitle}
-{%
- \noindent\makebox[\linewidth][c]{%
- \bfseries\color{\webtitle@color}\webtitle}
- \makebox[\linewidth]{%
- \shortstack[l]{\strut\\
- \makebox[0pt][l]{\webuniversity}\\
- \makebox[0pt][l]{%
- \@ifundefined{aeb@prepared}
- {\@date}{\aeb@prepared}%
- }%
- }\hfill
- \shortstack[c]{\strut\webauthor\\\strut}\hfill
- \shortstack[r]{\strut\makebox[0pt][r]{\thewebemail}\\
- \makebox[0pt][r]{%
- \@ifundefined{aeb@talksite}{\webversion}
- {\ifx\aeb@talksite\@empty\webversion
- \else\aeb@talksite\fi}%
- }%
- }%
- }%
- \bigskip
-}
-\setcounter{secnumdepth}{3}
-\setcounter{tocdepth}{3}
-\ifeqforpaper\else
- \clubpenalty=50
- \widowpenalty=50
-\fi
-\let\web@save@listi\@listi
-\let\web@save@listii\@listii
-\let\web@save@listiii\@listiii
-\let\web@save@normalsize\normalsize
-\let\web@save@partopsep\partopsep
-\let\web@normalsize\normalsize
-\def\w@ppp#1#2#3{#1\p@ \@plus#2\p@ \@minus#3\p@}
-\def\w@zpp#1#2{\z@ \@plus#1\p@ \@minus#2\p@}
-\def\tightsettings@z{%
- \setlength\partopsep{\w@ppp{2}{}{}} % unchanged
- \def\web@listi{\leftmargin\leftmargini
- \parsep \w@ppp{2}{2}{}% 4+2-1
- \topsep \w@ppp{2}{1}{}% 8+2-4
- \itemsep\w@ppp{2}{1}{}}% 4+2-1
- \let\@listi\web@listi
- \let\@listI\@listi
- \@listi
- \def\web@listii {\leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep \w@zpp{}{}% 4+2-1
- \parsep \w@zpp{}{}% 2+1-1
- \itemsep \parsep}% unchanged
- \def\web@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep \w@zpp{}{}% 2+1-1
- \parsep \z@ % unchanged
- \partopsep \w@ppp{}{}{}% unchanged
- \itemsep \topsep}% unchanged
- \let\@listii\web@listii
- \let\@listiii\web@listiii
- \renewcommand\web@normalsize{%
- \@setfontsize\normalsize\@xpt\@xiipt
- \abovedisplayskip \w@ppp{5}{3}{}% 10+2-5
- \abovedisplayshortskip \w@zpp{3}{0}% unchanged
- \belowdisplayshortskip \w@ppp{3}{2}{2}% 6+3-3
- \belowdisplayskip \abovedisplayskip
- \let\@listi\@listI}%
- \let\normalsize\web@normalsize
- \normalsize
-}
-\def\tightsettings@i{%
- \setlength\partopsep{\w@ppp{2}{}{}}% 3+1-1
- \def\web@listi{\leftmargin\leftmargini
- \parsep \w@ppp{2.5}{2}{}% 4.5+2-1
- \topsep \w@ppp{4.5}{1.5}{2.5}% 9+3-5
- \itemsep \w@ppp{2.5}{}{}}% 4.5+2-1
- \let\@listi\web@listi
- \let\@listI\@listi
- \@listi
- \def\web@listii {\leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep \w@ppp{}{}{}% 4.5+2-1
- \parsep \w@ppp{}{}{}% 2+1-1
- \itemsep \parsep}% unchanged
- \def\web@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep \w@ppp{}{}{}% 2+1-1
- \parsep \z@ % unchanged
- \partopsep \w@ppp{}{}{}% unchanged
- \itemsep \topsep}% unchanged
- \let\@listii\web@listii
- \let\@listiii\web@listiii
- \renewcommand\web@normalsize{%
- \@setfontsize\normalsize\@xipt{13.6}%
- \abovedisplayskip \w@ppp{5.5}{3}{3}% 11+3-6
- \abovedisplayshortskip \w@zpp{}{0}% unchanged
- \belowdisplayshortskip \w@ppp{4}{2}{2}% 6.5+3.5-3
- \belowdisplayskip \abovedisplayskip
- \let\@listi\@listI}%
- \let\normalsize\web@normalsize
- \normalsize
-}
-\def\tightsettings@ii{%
- \setlength\partopsep{\w@ppp{3}{2}{2}}% unchanged
- \def\web@listi{\leftmargin\leftmargini
- \parsep \w@ppp{3}{2}{}% 5+2.5-1
- \topsep \w@ppp{5}{2}{3}% 10+4-6
- \itemsep\w@ppp{2.5}{}{}}% 5+2.5-1
- \let\@listi\web@listi
- \let\@listI\@listi
- \@listi
- \def\web@listii {\leftmargin\leftmarginii
- \labelwidth\leftmarginii
- \advance\labelwidth-\labelsep
- \topsep \w@ppp{2.5}{}{}% 5+2.5-1
- \parsep \w@ppp{2}{}{}% 2.5+1-1
- \itemsep \parsep}% unchanged
- \def\web@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii
- \advance\labelwidth-\labelsep
- \topsep \w@ppp{1.5}{}{}% 2.5+1-1
- \parsep \z@ % unchanged
- \partopsep \w@ppp{}{}{}% unchanged
- \itemsep \topsep}% unchanged
- \let\@listii\web@listii
- \let\@listiii\web@listiii
- \renewcommand\web@normalsize{%
- \@setfontsize\normalsize\@xiipt{14.5}%
- \abovedisplayskip \w@ppp{6}{1.5}{3.5}% 12+3-7
- \abovedisplayshortskip \w@zpp{3}{0}% unchanged
- \belowdisplayshortskip \w@ppp{4}{2}{2}% 6.5+3.5-3
- \belowdisplayskip \abovedisplayskip
- \let\@listi\@listI}%
- \let\normalsize\web@normalsize
- \normalsize
-}
-\def\tightsettings{\@ifstar{\ifeqforpaper\else\tightsettings@cont\fi}
- {\tightsettings@cont}}
-\def\tightsettings@cont{\let\web@tight\web@YES
- \ifcase\@ptsize
- \tightsettings@z\or
- \tightsettings@i\or
- \tightsettings@ii
- \fi
-}
-\def\restorenormalsettings{\let\web@tight\web@NO
- \let\@listi\web@save@listi
- \let\@listii\web@save@listii
- \let\@listiii\web@save@listiii
- \let\normalsize\web@save@normalsize
- \let\partopsep\web@save@partopsep
- \let\@listI\@listi
- \@listi
- \normalsize
-}
-\def\navibarTextColor#1{\def\@menucolor{#1}}
-\def\@menucolor{webblue}
-\def\navibarBgColor#1{\def\@menuBgColor{#1}}
-\def\@menuBgColor{webgray}
-\newcommand{\newNaviIcon}[1][\@empty]
-{%
- \ifx#1m\let\web@next\@newNaviIconMenu
- \else\ifx#1j\let\web@next\@newNaviIconJS
- \else\ifx#1l\let\web@next\@newNaviIconLink
- \else\ifx#1\@empty\let\web@next\@newNaviIconLink
- \else\let\web@next\relax
- \PackageWarning{web}{\string\newNaviIcon: unknown first parameter}
- \fi\fi\fi\fi\web@next
-}
-\def\web@colorbox@w@transparency#1{%
- \ifx#1\@empty\setlength{\fboxrule}{0pt}\let\aeb@next\fbox\else
- \def\aeb@next{\colorbox{#1}}\fi\aeb@next}
-\newcommand{\@newNaviIconMenu}[6][I]
-{%
- \def#2{{\setlength{\fboxsep}{0pt}\def\@pdfhighlight{/#1}%
- \Acrobatmenu{#6}{\web@colorbox@w@transparency{\@menuBgColor}{%
- \parbox[c][#4][c]{#3}%
- {\normalsize\centering\color{\@menucolor}#5}}}%
- }}%
-}
-\newcommand{\@newNaviIconJS}[6][I]
-{%
- \ifcase\eq@drivernum
- \def#2{{\setlength{\fboxsep}{0pt}%
- \pdf@rect{\web@colorbox@w@transparency{\@menuBgColor}%
- {\parbox[c][#4][c]{#3}%
- {\normalsize\centering\color{\@menucolor}#5}}}%
- \literalps@out{%
- [ /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- /Border [ 0 0 0 ]/H/#1\space
- /Action <</S/JavaScript/JS (#6) >>
- /Subtype/Link
- /ANN pdfmark}%
- }}%
- \or
- \def#2{{\setlength{\fboxsep}{0pt}%
- \leavevmode\pdfstartlink
- attr {/Border [0 0 0 ] /H/#1}%
- user{ /Subtype /Link
- /A << /S/JavaScript/JS (#6) >>}%
- \web@colorbox@w@transparency{\@menuBgColor}%
- {\parbox[c][#4][c]{#3}%
- {\normalsize\centering\color{\@menucolor}#5}}%
- \pdfendlink
- }}%
- \or
- \def#2{{\setlength{\fboxsep}{0pt}%
- \@pdfm@mark{bann
- <<
- /Border [0 0 0 ] /H/#1\space
- /Subtype /Link
- /A << /S/JavaScript/JS (#6) >>
- >>}\web@colorbox@w@transparency{\@menuBgColor}%
- {\parbox[c][#4][c]{#3}%
- {\normalsize\centering\color{\@menucolor}#5}}%
- \@pdfm@mark{eann}%
- }}%
- \fi
-}
-\newcommand{\@newNaviIconLink}[6][I]
-{%
- \def#2{{\setlength{\fboxsep}{0pt}\def\@pdfhighlight{/#1}%
- #6{\web@colorbox@w@transparency{\@menuBgColor}%
- {\parbox[c][#4][c]{#3}%
- {\normalsize\centering\color{\@menucolor}#5}}}%
- }}%
-}
-\let\insertwebtoc\relax
-\def\insert@webtoc{\web@TOC\ }
-\def\web@TocText{Toc}
-\newNaviIcon[l]{\web@TOC}{\web@nb@width}{\web@nb@height}
- {\footnotesize\web@TocText}{\hyperlink{webtoc}}
-\newcommand\navibariconWidth[1]{\def\web@nb@width{#1}}
-\newcommand\navibariconHeight[1]{\def\web@nb@height{#1}}
-\navibariconWidth{34pt}\navibariconHeight{10pt}
-\@newNaviIconMenu{\web@FirstPage}{\web@nb@width}{\web@nb@height}
- {\web@FirstPageText}{FirstPage}
-\def\web@FirstPageText{$\blacktriangleleft\blacktriangleleft$}
-\@newNaviIconMenu{\web@LastPage}{\web@nb@width}{\web@nb@height}
- {\web@LastPageText}{LastPage}
-\def\web@LastPageText{$\blacktriangleright\blacktriangleright$}
-\@newNaviIconMenu{\web@PrevPage}{\web@nb@width}{\web@nb@height}
- {\web@PrevPageText}{PrevPage}
-\def\web@PrevPageText{$\blacktriangleleft$}
-\@newNaviIconMenu{\web@NextPage}{\web@nb@width}{\web@nb@height}
- {\web@NextPageText}{NextPage}
-\def\web@NextPageText{$\blacktriangleright$}
-\@newNaviIconMenu{\web@GoBack}{\web@nb@width}{\web@nb@height}
- {\footnotesize\web@back}{GoBack}
-\@newNaviIconMenu{\web@GoBackDoc}{\web@nb@width}{\web@nb@height}
- {$\blacktriangleleft$\ \footnotesize\web@doc}{GoBackDoc}
-\@newNaviIconMenu{\web@GoForwardDoc}{\web@nb@width}{\web@nb@height}
- {\footnotesize\web@doc\ \normalsize$\blacktriangleright$}
- {GoForwardDoc}
-\@newNaviIconMenu{\web@FS}{\web@nb@width}{\web@nb@height}
- {\footnotesize\web@FSText}{FullScreen}
-\def\web@FSText{FS}
-\@newNaviIconMenu{\web@GoToPage}{\web@nb@width}{\web@nb@height}
- {\footnotesize\web@GoToPageText}{GoToPage}
-\def\web@GoToPageText{Page...}
-\newcommand\web@navigationbar{%
-\hfil\bfseries\footnotesize
-\insertwebtoc
-\web@FirstPage\
-\web@LastPage\
-\web@PrevPage\
-\web@NextPage\
-\web@GoBack
-\hfil}
-\newcommand{\panelgroupWidth}[1]{%
- \global\let\chkpanelgroup\web@chkpanelgroup
- \def\web@pg@width{#1}}
-\newcommand{\panelgroupHeight}[1]{%
- \global\let\chkpanelgroup\web@chkpanelgroup
- \def\web@pg@height{#1}}
-\newcommand{\panelgroupSep}[1]{%
- \global\let\chkpanelgroup\web@chkpanelgroup
- \def\web@pg@sep{#1}}
-\@newNaviIconMenu{\panel@FirstPage}{\web@pg@width}{\web@pg@height}
- {\web@FirstPageText}{FirstPage}
-\@newNaviIconMenu{\panel@LastPage}{\web@pg@width}{\web@pg@height}
- {\web@LastPageText}{LastPage}
-\@newNaviIconMenu{\panel@PrevPage}{\web@pg@width}{\web@pg@height}
- {\web@PrevPageText}{PrevPage}
-\@newNaviIconMenu{\panel@NextPage}{\web@pg@width}{\web@pg@height}
- {\web@NextPageText}{NextPage}
-\@newNaviIconMenu{\panel@GoBack}{\web@pg@width}{\web@pg@height}
- {\footnotesize\web@back}{GoBack}
-\@newNaviIconMenu{\panel@GoBackDoc}{\web@pg@width}{\web@pg@height}
- {$\blacktriangleleft$\,\footnotesize\web@doc}{GoBackDoc}
-\@newNaviIconMenu{\panel@GoForwardDoc}{\web@pg@width}{\web@pg@height}
- {\footnotesize\web@doc\,\normalsize$\blacktriangleright$}
- {GoForwardDoc}
-\@newNaviIconMenu{\panel@Close}{\web@pg@width}{\web@pg@height}
- {\footnotesize Close}{Close}
-\def\web@CloseText{Close}
-\@newNaviIconMenu{\panel@FS}{\web@pg@width}{\web@pg@height}
- {\footnotesize\web@FSText}{FullScreen}
-\@newNaviIconMenu{\panel@GoToPage}{\web@pg@width}{\web@pg@height}
- {\footnotesize\web@GoToPageText}{GoToPage}
-\newcommand{\web@chkpanelgroup}{\bgroup
- \setlength{\@tempdima}{\web@pg@width+\web@pg@width+\web@pg@sep}%
- \ifdim\@tempdima>\@panelwidth\PackageError{web}{Width of
- \string\panelNaviGroup\space is wider than the panel}{}\else
- \xdef\panelNavigroupWidth{\the\@tempdima}\fi
- \egroup\global\let\chkpanelgroup\@empty
-}
-\panelgroupWidth{28pt}\panelgroupHeight{15pt}
-\panelgroupSep{2pt}
-\newcommand{\panelrowsep}{1pt}
-\newcommand\panelNaviGroup{\chkpanelgroup
- \parbox[c]{\panelNavigroupWidth}{%
- \offinterlineskip
- \panelIconGroup
- }%
-}
-\newcommand{\panelIconGroup}{%
- \panel@FirstPage\hfill\panel@LastPage\\[\panelrowsep]
- \panel@PrevPage\hfill\panel@NextPage\\[\panelrowsep]
- \panel@GoBack\hfill\panel@Close
-}
-\let\ins@NaviBar\@empty
-\newcommand\insNaviBar{\@ifstar{\@gdefInsNaviBar}{\@defInsNaviBar}}
-\def\@gdefInsNaviBar#1{\gdef\ins@NaviBar{#1}}
-\def\@defInsNaviBar#1{\def\ins@NaviBar{#1}}
-\newcommand\insNaviBarOff{\global\let\ins@NaviBar\@empty}
-\def\web@ifOnThisPage#1#2{\ifnum\c@page=\@thispage\relax
- #1\else#2\fi}
-\newcommand{\insertnaviiconhere}[1]
-{%
- \xdef\@thispage{\the\c@page}%
- \def\web@insToRight{%
- \ifeqforpaper\makebox[0pt][l]{\ifdim\marginparsep>0pt\relax
- \hspace{\marginparsep}\else\ \fi#1}\else
- \makebox[0pt][l]{%
- \ifnum\@panelconfig=2\relax
- \hspace{\@panelsep}\else
- \hspace{\@Rightmargin}\fi
- \makebox[0pt][r]{#1}}\fi
- }\expandafter\rheader\expandafter
- {\expandafter\web@ifOnThisPage
- \expandafter{\web@rightheader\web@insToRight}%
- {\web@defaultrightheader}}%
-}
-\def\insertnaviiconhereafter#1{\def\web@insToLeft{%
- \ifeqforpaper\makebox[0pt][r]{#1\ifdim\marginparsep>0pt\relax
- \hspace{\marginparsep}\else\ \fi}\else
- \makebox[0pt][r]{\makebox[0pt][l]{#1}%
- \ifnum\@panelconfig=1\relax
- \hspace{\@panelsep}\else
- \hspace{\@Leftmargin}\fi}\fi
- }\expandafter\lheader\expandafter
- {\expandafter\web@insToLeft\web@lhead}}
-\def\removehereaftericon{\lheader{\aeb@setmarks}}
-\let\defaultpageheader\removehereaftericon
-\newcommand\ArrowUp[1]
-{%
- \normalsize\ifeqforpaper
- \setlength{\fboxsep}{6pt}\else
- \setlength{\fboxsep}{4pt}\fi
- \raisebox{\depth-\fboxsep}[0pt][0pt]{%
- #1{\web@colorbox@w@transparency{\web@directionIconBgColor}%
- {\textcolor{\web@directionIconTextColor}{$\bigl\Uparrow$}}}}%
-}
-\newcommand\ArrowDown[1]
-{%
- \normalsize\ifeqforpaper
- \setlength{\fboxsep}{6pt}\else
- \setlength{\fboxsep}{4pt}\fi
- \raisebox{\depth-\fboxsep}[0pt][0pt]{%
- #1{\web@colorbox@w@transparency{\web@directionIconBgColor}%
- {\textcolor{\web@directionIconTextColor}{$\bigl\Downarrow$}}}}%
-}
-\def\directionIconTextColor#1{\def\web@directionIconTextColor{#1}}
-\def\web@directionIconTextColor{webblue}
-\def\directionIconBgColor#1{\def\web@directionIconBgColor{#1}}
-\def\web@directionIconBgColor{webgray}
-\def\web@defaultrightheader{\ifnum\value{page}=1\relax\else\thepage\fi}
-\let\web@headerhook\@empty
-\let\web@headerprivate\@empty
-\let\web@footerhook\@empty
-\let\web@footerprivate\@empty
-\def\lheader#1{\gdef\web@lhead{#1}}
-\def\cheader#1{\gdef\web@chead{#1}}
-\def\rheader#1{\gdef\web@rightheader{#1}}
-\lheader{\rightmark}
-\cheader{}
-\rheader{\web@defaultrightheader}
-\def\lfooter#1{\gdef\web@lfoot{#1}}
-\def\cfooter#1{\gdef\web@cfoot{#1}}
-\def\rfooter#1{\gdef\web@rfoot{#1}}
-\lfooter{}\rfooter{}
-\newcommand{\placeScreenNavibar}{%
- \ifweb@navibar\web@navigationbar\else
- \ins@NaviBar\global\let\ins@NaviBar\@empty\fi}
-\cfooter{\placeScreenNavibar}
-\newcommand{\clearHeaders}{%
- \let\web@lhead@save\web@lhead
- \let\web@chead@save\web@chead
- \let\web@rightheader@save\web@rightheader
- \let\web@lhead\@empty\let\web@chead\@empty
- \let\web@rightheader\@empty}
-\newcommand{\restoreHeaders}{%
- \let\web@lhead\web@lhead@save
- \let\web@chead\web@chead@save
- \let\web@rightheader\web@rightheader@save}
-\newcommand{\clearFooters}{%
- \let\web@lfoot@save\web@lfoot
- \let\web@cfoot@save\web@cfoot
- \let\web@rfoot@save\web@lfoot
- \let\web@lfoot\@empty\let\web@cfoot\@empty
- \let\web@rfoot\@empty}
-\newcommand{\restoreFooters}{%
- \let\web@lfoot\web@lfoot@save
- \let\web@cfoot\web@cfoot@save
- \let\web@rfoot\web@rfoot@save}
-\def\headerformat#1{\def\web@headerhook{#1}}
-\headerformat{}
-\def\footerformat#1{\def\web@footerhook{#1}}
-\footerformat{}
-\let\webheadwrapper\@empty
-\let\webfootwrapper\@empty
-\newcommand{\headWrapper}[1]{\def\webheadwrapper##1{#1}}
-\newcommand{\footWrapper}[1]{\def\webfootwrapper##1{#1}}
-\newcommand{\ps@webheadings}
-{%
- \renewcommand{\@oddhead}{\webheadwrapper{%
- \normalfont\ifeqforpaper\else\footnotesize\fi
- \web@headerprivate\web@headerhook\web@lhead\hfil\web@chead\hfil
- \web@rightheader}}
- \renewcommand{\@evenhead}{\@oddhead}
- \renewcommand{\@oddfoot}{\webfootwrapper{%
- \normalfont\ifeqforpaper\else\footnotesize\fi
- \web@footerprivate\web@footerhook\web@lfoot\hfil
- \web@cfoot\hfil\web@rfoot}}
- \renewcommand{\@evenfoot}{\@oddfoot}
-}
-\renewcommand{\sectionmark}[1]{%
- \markboth{}{\web@section\ \thesection: #1}}
-\newcommand{\noHeadersOnSectionPage}{%
- \gdef\web@headerpolicy{%
- \expandafter\aeb@gettopmark\topmark{}{}%
- \expandafter\aeb@getbotmark\botmark{}{}%
- \ifx\aeb@topmark\aeb@botmark\rightmark\fi
- }%
-}
-\noHeadersOnSectionPage
-\newcommand{\headersOnSectionPage}{%
- \gdef\web@headerpolicy{\rightmark}%
-}
-\def\aeb@gettopmark#1#2{\def\aeb@topmark{#2}}
-\def\aeb@getbotmark#1#2{\def\aeb@botmark{#2}}
-\def\aeb@setmarks{\web@headerpolicy}
-\lheader{\aeb@setmarks}
-\AtEndOfPackage{\pagestyle{webheadings}}
-\newcommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
- \def\aeb@sectioncolor{#1}}
-\sectionColor{blue}
-\def\web@inputsectiondefs{\InputIfFileExists{websec.def}{}
- {\PackageError{web}{Cannot find the file websec.def}{}}
-}
-\ifweb@sectioning\expandafter\web@inputsectiondefs\fi
-\def\aebwritelastpage{%
- \immediate\write\@auxout{\string\expandafter\string\gdef
- \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}%
-}
-\AtEndDocument{%
- \clearpage\addtocounter{page}{-1}\aebwritelastpage
- \addtocounter{page}{1}}
-\def\useFullWidthForPaper{\ifeqforpaper
- \setlength{\textwidth}{\paperwidth-2in}
- \setlength{\textheight}
- {\paperheight-2in-\footskip-\topmargin-\headheight-\headsep}
- \oddsidemargin=0pt
- \evensidemargin=0pt
- \marginparsep=0pt
- \marginparwidth=0pt
- \fi
-}
-\def\maxtextscreentext{%
- \iftemplatesforpaper\else\ifeqforpaper
- \ifnum\@usetemplates=1
- \ifnum\@panelconfig=1 % left panel
- \setlength{\oddsidemargin}%
- {\@panelwidth+\@panelsep-1in}%
- \setlength{\textwidth}%
- {\paperwidth-\@panelwidth-\@panelsep-%
- \marginparwidth-\marginparsep}%
- \else\ifnum\@panelconfig=2 % right panel
- \setlength{\oddsidemargin}{0in}%
- \setlength{\textwidth}%
- {\paperwidth-\@panelwidth-\@panelsep-%
- \oddsidemargin-\marginparwidth-\marginparsep}%
- \else
- \useFullWidthForPaper
- \fi\fi\fi
- \fi\fi
-}
-\newcommand{\centertextonpage}{%
- \ifeqforpaper\AtBeginDocument{\web@centertextonpage}\fi}
-\def\web@centertextonpage{%
- \setlength{\oddsidemargin}{\paperwidth-\textwidth-2in}%
- \oddsidemargin=.5\oddsidemargin
- \evensidemargin=\oddsidemargin
-}
-\definecolor{webgreen}{rgb}{0,.5,0}
-\definecolor{webbrown}{rgb}{.6,0,0}
-\definecolor{webyellow}{rgb}{0.98,0.92,0.73}
-\definecolor{webgray}{rgb}{.753,.753,.753}
-\definecolor{webgrey}{rgb}{.753,.753,.753}
-\definecolor{webblue}{rgb}{0,0,.8}
-\definecolor{wheat}{rgb}{.96, .87, .70}
-\definecolor{oldlace}{rgb}{.992, .96187, .902}
-\definecolor{snow}{rgb}{1, .98, .98}
-\definecolor{ghostwhite}{rgb}{.973, .973, 1}
-\definecolor{cornsilk}{rgb}{1, .973, .863}
-\definecolor{honeydew}{rgb}{.941, 1, .941}
-\definecolor{lavenderdark}{rgb}{.8, .8, .9529411}
-\definecolor{lavender}{rgb}{.902, .902, .980}
-\definecolor{lightblue}{rgb}{.8, .8, .95}
-\definecolor{lightgray}{rgb}{.827, .827, .827}
-\definecolor{lightsteelblue}{rgb}{.690, .769, .871}
-\definecolor{lightturquoise}{rgb}{.686, .933, .933}
-\definecolor{darkgreen}{rgb}{.0, .392, .0}
-\definecolor{yellowgreen}{rgb}{.604, .804, .196}
-\definecolor{vlightblue}{rgb}{.88, .85, .95}
-\definecolor{khaki}{rgb}{.741, .718, .42}
-\ifx\web@latextoc\web@YES\ifx\web@bullets\web@YES%
- \@ifundefined{chapter} {%
- \renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{1.2em}}
- }{%
- \renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{1.2em}}
- }%
-\fi\fi
-\def\tocColor#1{\def\web@tocColor{#1}\def\aeb@toccolor{#1}}
-\tocColor{blue}
-\newcommand{\allowHeadingsTocPage}{\let\web@Tocpagestyle\@gobble}
-\def\web@Tocpagestyle#1{#1}
-\let\web@latextoc@save\tableofcontents
-\ifx\web@bullets\web@YES
-\def\tableofcontents
-{%
- \global\let\insertwebtoc\insert@webtoc
- \def\contentsname{\web@toc}%
- \pdfbookmark[1]{\web@toc}{toc}%
- \web@Tocpagestyle{\thispagestyle{empty}}%
- \markright{{\normalfont\small \web@toc\ (\web@continued)}}%
- \@ifundefined{sectionToc}{%
- \begin{center}\hypertarget{webtoc}{}%
- \normalfont\bfseries\Large\color{\web@tocColor}%
- \contentsname
- \end{center}
- }{\sectionToc{\web@toc}}\par
- \ifx\web@latextoc\web@YES
- \@starttoc{toc}% LaTeX toc listing with page numbers
- \else
- \noindent\webtableofcontents
- \fi
- \newpage
-}
-\else
- \PackageInfo{web}{No Bullets Requested}
- \def\tableofcontents{%
- \begingroup
- \def\contentsname{\web@toc}%
- \let\web@save@mkboth\@mkboth
- \def\@mkboth{\protect\hypertarget{webtoc}{}\web@save@mkboth}%
- \ifx\web@finalDot\@empty\else
- \def\numberline##1{\hb@xt@\@tempdima{##1.\hfil}}\fi
- \web@latextoc@save
- \endgroup\newpage
- }
- \renewcommand\subsubsection{\renewcommand{\@seccntformat}[1]{%
- \@nameuse{the##1}\web@finalDot\enspace}
- \@startsection{subsubsection}{3}{\z@}%
- {-2ex\@plus -1ex \@minus -.2ex}{.5ex \@plus .2ex}%
- {\noindent\normalfont\normalsize\bfseries}}
- \renewcommand*{\thesubsubsection}
- {\thesubsection.\arabic{subsubsection}}
-\fi
-\def\widestNumber#1{%
- \def\widest@Number{#1\ }}
-\widestNumber{0.0.}
-\newcommand{\tocIndent}[1]{\def\toc@indent{#1}}
-\tocIndent{20pt}
-\def\tocIndentByNumber#1{{%
- \settowidth{\@tempdima}{\normalfont\textbf{#1\ }}%
- \xdef\toc@indent{\the\@tempdima}%
-}}
-\tocIndentByNumber{00.}
-\let\tocindent\tocIndent
-\let\tocindentByNumber\tocIndentByNumber
-\def\webtableofcontents
-{%
- \begingroup
- \global\let\isChapter\web@NO
- \parskip0pt\parindent\toc@indent\relax
- \settowidth{\@tempdima}{\normalfont
- \textbf{\widest@Number}}%
- \@tempdimb\@tempdima
- \advance\@tempdimb by\parindent
- \edef\web@subsubSecIndent{\the\@tempdimb}%
- \def\par{\endgraf\leftskip=0pt}%
- \let\numberline\web@numberline
- \let\contentsline\web@contentsline
- \def\web@section##1##2##3{\web@parse##1\\%
- \web@toc@section{##1}{##2}{##3}}%
- \def\web@subsection##1##2##3{\web@parse##1\\%
- \web@toc@subsection{##1}{##2}{##3}}%
- \def\web@subsubsection##1##2##3{\web@parse##1\\%
- \web@toc@subsubsection{##1}{##2}{##3}}%
- \def\web@part##1##2##3{\web@toc@part{##1}{##2}{##3}}%
- \def\web@chapter##1##2##3{\web@parse##1\\%
- \web@toc@chapter{##1}{##2}{##3}}%
- \@starttoc{toc}%
- \setlength{\@tempdimb}{\ifx\isChapter\web@YES
- \parindent+\web@subsubSecIndent\else\web@subsubSecIndent\fi}%
- \leftskip\@tempdimb
- \par\endgroup
-}
-\def\web@numberline#1{\makebox[0pt]{#1\enspace}}%
-\def\web@contentsline#1#2#3#4{%
- \@nameuse{web@#1}{#2}{#3}{#4}}%
-\def\web@parse#1#2#3\\{%
- \def\web@title{#3}\def\numberline{#2}}%
-\def\web@toc@part#1#2#3{\par\noindent
- {\bfseries\hyperlink{#3}{#1}}\par\smallskip}
-\def\web@toc@chapter#1#2#3{\global\let\isChapter\web@YES
- \par\mbox{}{\bfseries\makebox[0pt][r]{\hyperlink{#3}%
- {\numberline\web@finalDot}\space}\web@title}\par\smallskip
-}
-\def\web@toc@section#1#2#3{\penalty-500\par
- \hspace*{\if\isChapter y\parindent\else0pt\fi}\mbox{}{\bfseries
- \ifx\numberline\@empty
- \@ifundefined{d@DingToc}{\hyperlink{#3}{\web@title}}
- {%
- \ifx\d@DingToc\@empty
- \hyperlink{#3}{\web@title}%
- \else
- \if\aeb@use@section@numbers0\relax
- \makebox[0pt][r]{\color{\d@DingTocColor}%
- \d@DingToc\space}\hyperlink{#3}{\web@title}%
- \else
- \hyperlink{#3}{\web@title}%
- \fi
- \fi
- }%
- \else
- \makebox[0pt][r]{\hyperlink{#3}{%
- \numberline\web@finalDot}\space}\web@title
- \fi}\endgraf
-}%
-\def\web@toc@subsection#1#2#3{\par
- \setlength{\@tempdimb}{\ifx\isChapter\web@YES
- \parindent+\@tempdima\else\@tempdima\fi}%
- \penalty-50 \hspace*{\@tempdimb}\mbox{}{\bfseries
- \ifx\numberline\@empty
- \@ifundefined{dd@DingToc}{\hyperlink{#3}{\web@title}}
- {%
- \ifx\dd@DingToc\@empty
- \hyperlink{#3}{\web@title}%
- \else
- \makebox[0pt][r]{\color{\dd@DingTocColor}%
- \dd@DingToc\space}\hyperlink{#3}{\web@title}%
- \fi
- }%
- \else
- \makebox[0pt][r]{\makebox[\@tempdima][l]%
- {\hyperlink{#3}{\numberline\web@finalDot}}}\web@title
- \fi}\endgraf
-}%
-\def\web@toc@subsubsection#1#2#3{%
- \def\numberline{\strut$\bullet$}%
- \setlength{\@tempdimb}{\ifx\isChapter\web@YES
- \parindent+\web@subsubSecIndent\else\web@subsubSecIndent\fi}%
- \leftskip\@tempdimb\noindent\unskip\mbox{}\penalty-50
- \@ifundefined{ddd@DingToc}{}{%
- \if\aeb@use@section@numbers0\relax\ifx\ddd@DingToc\@empty\else
- \def\numberline{\color{\ddd@DingTocColor}\strut\ddd@DingToc}%
-\fi\fi}\hyperlink{#3}{\numberline}~\web@title\
-}%
-\let\web@textTemplate\@empty
-\newcommand{\@AddToTextTemplate}{\g@addto@macro\web@textTemplate}
-\newcommand{\template}[2][]
-{%
- \ifweb@allowtemplates
- \def\web@argi{#1}\ifx\web@argi\@empty
- \xdef\web@template@opt@args{\web@addtotemplateArgs}%
- \else\xdef\web@template@opt@args{\web@addtotemplateArgs,#1}%
- \fi\gdef\web@template{#2}%
- \fi
-}
-\let\web@template\@empty
-\def\addtotemplateArgs#1{\gdef\web@addtotemplateArgs{#1}}
-\def\cleartemplateArgs{\global\let\web@addtotemplateArgs=\@empty}
-\let\web@addtotemplateArgs\@empty
-\let\text@scaletype\@empty
-\newcommand{\textBgColor}[1]{\gdef\web@textBgColor{#1}}
-\let\web@textBgColor\@empty
-\let\listAddToTemplates\@empty
-\newcommand{\AddToTemplate}[1]
-{%
- \global\w@csarg\let{eqTmpl#1}\web@YES
- {\toks@=\expandafter{\listAddToTemplates}%
- \xdef\listAddToTemplates{\the\toks@\noexpand\\{#1}}}%
- \ifweb@allowtemplates
- \@AddToTextTemplate{%
- \w@csarg\ifx{eqTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@textX,0){\@nameuse{#1}}%
- \fi
- }%
- \else
- \w@csarg\ifx{#1}\BGColorAndGraphic
- \@AddToTextTemplate{%
- \w@csarg\ifx{eqTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@textX,0){\@nameuse{#1}}%
- \fi
- }%
- \fi
- \w@csarg\ifx{#1}\BGColorAndGraphicFullWidth
- \@AddToTextTemplate{%
- \w@csarg\ifx{eqTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@textX,0){\@nameuse{#1}}%
- \fi
- }%
- \fi
- \fi
-}
-\newcommand\placeTemplateInLayer[2][webTextBG]{%
- \@ifpackageloaded{aeb_pro}
- {\@ifundefined{xBld}{\PackageWarning{web}
- {The uselayers option
- of aeb_pro is\MessageBreak required with
- \string\placeTemplateInLayer}}
- {\def\b@webTextLayer{\xBld[#2]{#1}}%
- \def\e@webTextLayer{\eBld}}}%
- {\PackageWarning{web}{\string\placeTemplateInLayer\space
- requires the\MessageBreak aeb_pro package}}%
-}
-\let\b@webTextLayer\@empty \let\e@webTextLayer\@empty
-\newcommand{\BGColorAndGraphic}{%
- \b@webTextLayer\web@colorbox@w@transparency{\web@textBgColor}%
- {%
- \parbox[b][\paperheight]{\textscreenwidth}%
- {%
- \ifx\web@template\@empty
- \hfill\vfill
- \else
- \hfuzz=1pt\vfuzz=1pt\expandafter
- \includegraphics\expandafter[\web@template@opt@args,%
- width=\textscreenwidth,height=\paperheight]%
- {\web@template}
- \fi
- }%
- }\e@webTextLayer
-}
-\AddToTemplate{BGColorAndGraphic}
-\let\web@panelTemplate\@empty
-\newcommand{\@AddToPanelTemplate}{\g@addto@macro\web@panelTemplate}
-\let\listAddToPanelTemplates=\@empty
-\newcommand{\AddToPanelTemplate}[1]
-{%
- \global\w@csarg\let{eqPanTmpl#1}\web@YES
- {\toks@=\expandafter{\listAddToPanelTemplates}%
- \xdef\listAddToPanelTemplates{\the\toks@\noexpand\\{#1}}}%
- \ifweb@allowtemplates
- \@AddToPanelTemplate{%
- \w@csarg\ifx{eqPanTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@panelX,0){\@nameuse{#1}}\fi
- }%
- \else
- \w@csarg\ifx{#1}\stdPanelBG
- \@AddToPanelTemplate{%
- \w@csarg\ifx{eqPanTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@panelX,0){\@nameuse{#1}}\fi
- }%
- \fi
- \w@csarg\ifx{#1}\stdbldpanel
- \@AddToPanelTemplate{%
- \w@csarg\ifx{eqPanTmpl#1}\web@YES
- \fboxsep=0pt\setlength{\unitlength}{1pt}%
- \put(\@panelX,0){\@nameuse{#1}}\fi
- }%
- \fi
- \fi
-}
-\newcommand{\paneltemplate}[2][]
-{%
- \ifweb@allowtemplates\def\web@argi{#1}%
- \ifx\web@argi\@empty
- \edef\web@paneltemplate@opt@args{%
- \web@addtopaneltemplateArgs}%
- \else
- \edef\web@paneltemplate@opt@args{%
- \web@addtopaneltemplateArgs,#1}%
- \fi\gdef\web@paneltemplate{#2}%
- \fi
-}
-\let\web@paneltemplate\@empty
-\def\addtopaneltemplateArgs#1{\gdef\web@addtopaneltemplateArgs{#1}}
-\def\clearpaneltemplateArgs{%
- \global\let\web@addtopaneltemplateArgs=\@empty}
-\let\web@addtopaneltemplateArgs=\@empty
-\let\panel@scaletype\@empty
-\newcommand\panelsep[1]{\bgroup
- \setlength\@tempdima{#1}%
- \xdef\@panelsep{\the\@tempdima}\egroup}
-\panelsep{10bp}
-\def\panelSep{\@panelsep}
-\newcommand{\panelwidth}[1]{%
- \let\web@next\relax
- \iftemplatesforpaper\else\ifnum\@panelconfig>0
- \ifnum\@panelconfig=1 % left panel
- \ifx\web@layout\web@YES
- \addtolength{\textwidth}{\@panelwidth}%
- \addtolength{\textwidth}{\@Rightmargin}%
- \fi
- \addtolength{\textwidth}{\@panelsep}%
- \addtolength{\oddsidemargin}{-\@panelsep}%
- \addtolength{\evensidemargin}{-\@panelsep}%
- \addtolength{\textscreenwidth}{\@panelwidth}%
- \fi
- \ifnum\@panelconfig=2 % panel right
- \ifx\web@layout\web@YES
- \addtolength{\textwidth}{\@panelwidth}%
- \addtolength{\textwidth}{\@Leftmargin}%
- \fi
- \addtolength{\textwidth}{\@panelsep}%
- \addtolength{\textscreenwidth}{\@panelwidth}%
- \fi
- \setlength{\@panelwidth}{#1}%
- \ifdim\@panelwidth<\web@minpanelwidth
- \setlength{\@panelwidth}{\web@minpanelwidth}\fi
- \def\web@next{\InitLayout}%
- \fi\fi\web@next
-}
-\newcommand{\panelBgColor}[1]{\gdef\web@panelBgColor{#1}}
-\let\web@panelBgColor\@empty
-\newcommand\placePanelTemplateInLayer[2][webPanelBG]{%
- \@ifpackageloaded{aeb_pro}
- {\@ifundefined{xBld}{\PackageWarning{web}
- {The uselayers option
- of aeb_pro is\MessageBreak required with
- \string\placePanelTemplateInLayer}}
- {\def\b@webPanelLayer{\xBld[#2]{#1}}%
- \def\e@webPanelLayer{\eBld}}}%
- {\PackageWarning{web}{\string\placePanelTemplateInLayer\space
- requires the\MessageBreak aeb_pro package}}%
-}
-\let\b@webPanelLayer\@empty \let\e@webPanelLayer\@empty
-\newcommand\stdPanelBG
-{%
- \b@webPanelLayer\web@colorbox@w@transparency{\web@panelBgColor}%
- {\parbox[b][\paperheight]{\@panelwidth}%
- {\ifx\web@paneltemplate\@empty\hfill\vfill\else
- \hfuzz=1pt\vfuzz=1pt\expandafter
- \includegraphics\expandafter[\web@paneltemplate@opt@args,%
- width=\@panelwidth,height=\paperheight]%
- {\web@paneltemplate}\fi}}\e@webPanelLayer
-}
-\AddToPanelTemplate{stdPanelBG}
-\newcommand{\buildpanel}[1]
-{%
- \gdef\stdbldpanel
- {%
- \parbox[b][\paperheight]{\@panelwidth}%
- {%
- \normalsfcodes\normalfont\normalsize
- \spaceskip=0pt\xspaceskip=0pt
- \par\medskip\vfil
- \centering#1%
- \par\medskip\vfil
- }%
- }%
-}
-\let\stdbldpanel\@empty
-\AddToPanelTemplate{stdbldpanel}
-\newcommand{\useStandardPanel}{%
- \buildpanel{%
- \web@panel@top
- \par\vspace{\stretch{1}}%
- \web@panel@middle
- \par\vspace{\stretch{1}}%
- \web@panel@bottom
- }%
-}
-\newcommand{\panelTop}[1]{\def\web@panel@top{#1}}
-\panelTop{}
-\newcommand{\panelMiddle}[1]{\def\web@panel@middle{#1}}
-\panelMiddle{}
-\newcommand{\panelBottom}[1]{\def\web@panel@bottom{#1}}
-\panelBottom{\panelNaviGroup}
-\newcommand{\ClearTextTemplate}
-{%
- \global\let\web@textBgColor\@empty
- \global\let\web@template\@empty
-}
-\newcommand{\ClearPanelTemplate}
-{%
- \global\let\web@panelBgColor\@empty
- \global\let\web@paneltemplate\@empty
-}
-\newcommand{\ClearBuildPanel}
- {\global\let\stdbldpanel\@empty}
-
-\newcommand{\ClearAllTemplates}
-{%
- \ClearTextTemplate
- \ClearPanelTemplate
-}
-\newcommand{\ClearTextTemplateBuffer}
- {\global\let\web@textTemplate\@empty}
-\newcommand{\ClearPanelTemplateBuffer}
- {\global\let\web@panelTemplate\@empty}
-\newcommand{\saveElements}[1]
-{%
- \begingroup
- \global\w@csarg\let{web@SaveTmpls#1}\@empty
- \toks@={}%
- \def\web@addtoSaveToks##1{%
- \edef\web@let{\global\expandafter
- \let\expandafter\noexpand\csname#1##1\endcsname=%
- \expandafter\noexpand\csname##1\endcsname}%
- \web@let
- \edef\web@SaveTmpls{\the\toks@\noexpand\\{##1}%
- \expandafter\noexpand\csname#1##1\endcsname}%
- \toks@=\expandafter{\web@SaveTmpls}%
- }%
- \web@addtoSaveToks{web@textBgColor}%
- \web@addtoSaveToks{web@template}%
- \web@addtoSaveToks{stdbldpanel}%
- \web@addtoSaveToks{web@panelBgColor}%
- \web@addtoSaveToks{web@paneltemplate}%
- \w@csarg\xdef{web@SaveTmpls#1}{\the\toks@}%
- \endgroup
-}
-\newcommand{\saveClearElements}[1]{%
- \saveElements{#1}\ClearAllTemplates\ClearBuildPanel
-}
-\newcommand{\restoreElements}[1]{%
- \ClearAllTemplates\ClearBuildPanel
- \begingroup
- \toks@=\expandafter{\csname web@SaveTmpls#1\endcsname}%
- \def\\##1##2{\global\w@csarg\let{##1}=##2}\the\toks@
- \endgroup
-}
-\newcommand{\disableScreens}[1]
-{%
- \begingroup
- \toks@=\expandafter{\listAddToTemplates}%
- \toks2={}%
- \def\\##1{\w@csarg\ifx{eqTmpl##1}\web@YES
- \disableTemplate{##1}%
- \xdef\web@saveAddTo{\the\toks2 \noexpand\\{##1}}%
- \toks2=\expandafter{\web@saveAddTo}\fi}%
- \the\toks@
- \endgroup
- \w@csarg\let{web@DisabledTmpls#1}\web@saveAddTo
-}
-\newcommand{\restoreScreens}[1]
-{%
- \begingroup
- \toks@=\expandafter{\csname web@DisabledTmpls#1\endcsname}%
- \def\\##1{\enableTemplate{##1}}\the\toks@
- \endgroup
-}
-\newcommand{\disablePanels}[1]
-{%
- \begingroup
- \toks@ = \expandafter{\listAddToPanelTemplates}%
- \toks2 = {}%
- \def\\##1{\w@csarg\ifx{eqPanTmpl##1}\web@YES
- \disablePanelTemplate{##1}%
- \xdef\web@saveAddTo{\the\toks2 \noexpand\\{##1}}%
- \toks2 =\expandafter{\web@saveAddTo}\fi}%
- \the\toks@
- \endgroup
- \global\w@csarg\let{web@DisabledPanelTmpls#1}\web@saveAddTo
-}
-\newcommand{\restorePanels}[1]
-{%
- \begingroup
- \toks@=\expandafter{\csname web@DisabledPanelTmpls#1\endcsname}%
- \def\\##1{\enablePanelTemplate{##1}}\the\toks@
- \endgroup
-}
-\newcommand{\disableTemplate}[1]{{%
- \global\w@csarg\let{eqTmpl#1}\web@NO}}
-\newcommand{\enableTemplate}[1]{{%
- \global\w@csarg\let{eqTmpl#1}\web@YES}}
-\newcommand{\disablePanelTemplate}[1]{{%
- \global\w@csarg\let{eqPanTmpl#1}\web@NO}}
-\newcommand{\enablePanelTemplate}[1]{{%
- \global\w@csarg\let{eqPanTmpl#1}\web@YES}}
-\let\fullscreenwidthadj\@empty
-\def\web@leftMargAdj{0pt}
-\def\web@rightMargAdj{0pt}
-\def\calculatefullwidth{%
- \ifeqforpaper
- \let\fullscreenwidthadj\@empty
- \else
- \ifnum\@panelconfig=1\relax % leftpanel
- \bgroup
- \setlength{\@tempdima}{-\@panelwidth-\@panelsep+\@Leftmargin}%
- \xdef\web@leftMargAdj{\the\@tempdima}%
- \setlength{\@tempdima}{-\@panelwidth-\@panelsep+\@Rightmargin}%
- \xdef\web@rightMargAdj{\the\@tempdima}%
- \egroup
- \def\fullscreenwidthadj{\hspace{\web@leftMargAdj}}%
- \fi
- \fi
-}
-\newcommand{\makeFullwidthhead}{%
- \global\let\web@save@oddhead\@oddhead
- \renewcommand{\@oddhead}{\fullscreenwidthadj
- \hbox to\fullscreenwidth{\normalfont\footnotesize
- \web@headerhook\web@lhead\hfil\web@chead\hfil
- \web@rightheader}\hss}%
-}
-\newcommand{\restoreSavedHead}{%
- \global\let\@oddhead\web@save@oddhead
- \let\web@save@oddhead\@empty
-}
-\def\webNotPaneledWarning{%
- The Fullwidthtext environment is valid only\MessageBreak
- for a paneled document, ignoring this\MessageBreak
- environment}
-\newenvironment{Fullwidthtext}{%
- \ifnum\@panelconfig=0\relax
- \PackageWarning{web}{\webNotPaneledWarning}%
- \let\web@next\relax
- \else
- \def\web@next{%
- \enableTemplate{BGColorAndGraphicFullWidth}%
- \list{}{%
- \setlength{\textwidth}{\fullscreenwidth}%
- \setlength{\linewidth}{\fullscreenwidth}%
- \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
- \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
- \setlength{\listparindent}{\parindent}%
- \setlength{\leftmargin}{\web@leftMargAdj}%
- \setlength{\rightmargin}{-\web@rightMargAdj}%
- }\item\relax}%
- \fi\web@next
-}{%
- \ifnum\@panelconfig=0\relax\let\web@next\relax\else
- \def\web@next{\endlist\newpage
- \disableTemplate{BGColorAndGraphicFullWidth}}%
- \fi\web@next
-}
-\newcommand{\pushToFullWidthPage}{%
- \ifnum\@panelconfig>0\relax
- \disableScreens{gofullwidth}%
- \disablePanels{gofullwidth}%
- \makeFullwidthhead
- \let\web@save@footwrapper\webfootwrapper
- \def\webfootwrapper{\fullscreenwidthadj
- \makebox[\fullscreenwidth]}%
- \fi
- \begin{Fullwidthtext}
-}
-\newcommand{\popFromFullWidthPage}{%
- \end{Fullwidthtext}
- \ifnum\@panelconfig>0\relax
- \restoreScreens{gofullwidth}%
- \restorePanels{gofullwidth}%
- \restoreSavedHead
- \let\webfootwrapper\web@save@footwrapper
- \fi
-}
-\def\addtofullwidthtemplateArgs#1{%
- \gdef\web@addtofullwidthtemplateArgs{#1}}
-\def\clearfullwidthtemplateArgs{%
- \global\let\web@addtofullwidthtemplateArgs\@empty}
-\let\web@addtofullwidthtemplateArgs\@empty
-\newcommand{\fullwidthBgColor}[1]{\gdef\web@fullwidthBgColor{#1}}
-\let\web@fullwidthBgColor\@empty
-\let\web@fullwidthtemplate\@empty
-\newcommand{\fullwidthtemplate}[2][]
-{%
- \ifweb@allowtemplates
- \def\web@arg{#1}\ifx\web@argi\@empty
- \xdef\web@fullwidthtemplate@opt@args
- {\web@addtofullwidthtemplateArgs}%
- \else
- \xdef\web@fullwidthtemplate@opt@args
- {\web@addtofullwidthtemplateArgs,#1}%
- \fi\gdef\web@fullwidthtemplate{#2}%
- \fi
-}
-\newcommand\BGColorAndGraphicFullWidth
-{%
- \put(-\@textX,0){%
- \web@colorbox@w@transparency{\web@fullwidthBgColor}%
- {%
- \parbox[b][\paperheight]{\paperwidth}%
- {%
- \ifx\web@fullwidthtemplate\@empty
- \hfill\vfill
- \else
- \hfuzz=1pt\vfuzz=1pt
- \expandafter\includegraphics\expandafter
- [\web@fullwidthtemplate@opt@args,%
- width=\paperwidth,height=\paperheight]%
- {\web@fullwidthtemplate}%
- \fi
- }%
- }%
- }%
-}
-\AddToTemplate{BGColorAndGraphicFullWidth}
-\disableTemplate{BGColorAndGraphicFullWidth}
-\ifnum\@usetemplates>0
- \ifnum\@panelconfig>0
- \AtBeginDocument{%
- \AddToShipoutPicture{\web@textTemplate\web@panelTemplate}}
- \else
- \AtBeginDocument{\AddToShipoutPicture{\web@textTemplate}}
- \fi
-\fi
-\raggedbottom
-\ifx\webpro@loaded\web@YES\expandafter\loadwebpro\fi
-\endinput
-%%
-%% End of file `web.sty'.
+%%
+%% This is file `web.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% web.dtx (with options: `copyright,package')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Web package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% History: Noel Vaillant began developing a better web.sty
+%% based on my earlier published web.sty. Many thanks
+%% to him for starting me off.
+%%---------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{web}
+ [2017/03/20 v6.0o web: A Screen Design Package (dps)]
+\RequirePackage{xkeyval}
+\RequirePackage{ifpdf}[2006/02/20]
+\RequirePackage{ifxetex}[2006/08/21]
+\IfFileExists{xcolor.sty}{%
+ \def\eq@ColorPackage{xcolor}%
+ \PassOptionsToPackage{xcolor}{table,hyperref}%
+}{\def\eq@ColorPackage{color}}
+\DeclareOptionX{noxcolor}{\def\eq@ColorPackage{color}}
+\let\i@web@ddtoHyOpts\@empty
+\let\eq@driver@name\@empty
+\let\web@YES=y \let\web@NO=n
+\DeclareOptionX{dvipsone}{%
+ \def\eq@drivernum{0}\def\eq@driver@name{dvipsone}%
+ \let\web@set@paper\@empty
+ \@namedef{papersize@for@\eq@driver@name}{\AtBeginDocument{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}%
+}
+\DeclareOptionX{dviwindo}{%
+ \def\eq@drivernum{4}\def\eq@driver@name{dviwindo}%
+ \@namedef{papersize@for@\eq@driver@name}{\def\web@set@paper{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}%
+}
+\DeclareOptionX{dvipdfm}{%
+ \def\eq@drivernum{2}\def\eq@driver@name{dvipdfm}%
+ \web@opts@xdvipdfmx
+}
+\DeclareOptionX{dvipdfmx}{%
+ \def\eq@drivernum{2}\def\eq@driver@name{dvipdfmx}%
+ \web@opts@xdvipdfmx
+}
+\DeclareOptionX{xetex}{%
+ \def\eq@drivernum{2}\def\eq@driver@name{xetex}%
+ \web@opts@xdvipdfmx
+}
+\newcommand{\web@opts@xdvipdfmx}{%
+ \@namedef{papersize@for@\eq@driver@name}%
+ {\def\web@set@paper{\AtBeginDvi{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}}%
+}
+\DeclareOptionX{dvips}{%
+ \def\eq@drivernum{0}\def\eq@driver@name{dvips}%
+ \def\i@web@ddtoHyOpts{setpagesize=false}%
+ \let\web@set@paper\@empty
+ \@namedef{papersize@for@\eq@driver@name}{\AtBeginDocument{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}%
+}
+\DeclareOptionX{pdftex}{\ifx\eq@driver@name\@empty
+ \def\eq@drivernum{1}\def\eq@driver@name{pdftex}%
+ \def\i@web@ddtoHyOpts{setpagesize}\def\web@set@paper{}\fi
+}
+\DeclareOptionX{luatex}{\ifx\eq@driver@name\@empty
+ \def\eq@drivernum{1}\def\eq@driver@name{luatex}%
+ \def\i@web@ddtoHyOpts{setpagesize}\def\web@set@paper{}\fi
+}
+\DeclareOptionX{textures}{%
+ \def\eq@drivernum{3}\def\eq@driver@name{textures}%
+ \@namedef{papersize@for@\eq@driver@name}%
+ {\def\web@set@paper{\bgroup
+ \dimen2=\origpaperheight \advance\dimen2 by -\topmargin
+ \dimen0\dimen2 \advance\dimen0-\paperheight
+ \xdef\@pdfpagescrop{0 \strip@pt\dimen0 \space
+ \strip@pt\paperwidth\space \strip@pt\dimen2}%
+ \egroup}%
+ \AtEndOfPackage{%
+ \edef\origpaperwidth{\the\paperwidth}%
+ \edef\origpaperheight{\the\paperheight}%
+ }%
+ }%
+}
+\@ifundefined{ifequsecolor}{\newif\ifequsecolor \equsecolorfalse}{}
+\DeclareOptionX{forpaper}{\equsecolorfalse\eqforpapertrue
+ \PassOptionsToPackage{forpaper}{eqexam}
+ \PassOptionsToPackage{monochrome}{\eq@ColorPackage}%
+ \PassOptionsToPackage{forpaper}{exerquiz}}
+\DeclareOptionX{forcolorpaper}{\equsecolortrue\eqforpapertrue
+ \PassOptionsToPackage{forcolorpaper}{eqexam}
+ \PassOptionsToPackage{forcolorpaper}{exerquiz}}
+\DeclareOptionX{latexlayout}{%
+ \let\web@layout\web@NO\ExecuteOptionsX{forcolorpaper}}
+\DeclareOptionX{uselatexsectioning}{%
+ \web@sectioningfalse
+}
+\newif\ifweb@sectioning \web@sectioningtrue
+\DeclareOptionX{weblikeclass}{%
+ \ExecuteOptionsX{latexlayout}%
+ \ExecuteOptionsX{nobullets}%
+ \ExecuteOptionsX{uselatexsectioning}%
+}
+\DeclareOptionX{nodirectory}{\let\web@directory@option\web@NO}
+\DeclareOptionX{usedirectory}{\let\web@directory@option\web@YES}
+\DeclareOptionX{latextoc}{\let\web@latextoc\web@YES}
+\DeclareOptionX{nobullets}{\let\web@bullets\web@NO
+ \let\web@latextoc\web@YES\forceSubSubNumbers}
+\def\web@MargScrDimOpts#1#2#3#4#5#6{%
+ \margins{#1}{#2}{#3}{#4} % left,right,top, bottom
+ \screensize{#5}{#6} % height, width
+ \let\margins\@@margins\let\screensize\@gobbletwo
+}
+\DeclareOptionX{designi}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{3.736in}{4.67in}}}
+\DeclareOptionX{designii}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{5in}}}
+\DeclareOptionX{designiii}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{5in}{6in}}}
+\DeclareOptionX{designiv}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4in}{5in}}}
+\DeclareOptionX{designv}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{6in}}}
+\DeclareOptionX{designvi}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.17in}{4.67in}}}
+\DeclareOptionX{designvii}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{7.5in}{10in}}}
+\DeclareOptionX{designviii}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6.67in}}}
+\DeclareOptionX{designix}{\AtEndOfPackage{%
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6in}}}
+\DeclareOptionX{usesf}{%
+ \def\aeb@defaultfamily{\sffamily}
+ \def\itdefault{sl}
+ \renewcommand{\familydefault}{\sfdefault}
+ \selectfont
+ \renewcommand\labelitemi{\textrm{\textbullet}}
+ \AtEndOfPackage{\def\web@copyright@symbol{\textrm{\copyright}}}
+}
+\def\aeb@defaultfamily{\rmfamily}
+\DeclareOptionX{unicode}{\def\aeb@useunicode{unicode}}
+\let\aeb@useunicode\@gobble
+\newif\if@web@hyperref \@web@hyperreftrue
+\DeclareOptionX{xhyperref}{\@web@hyperreffalse}
+\define@choicekey+{webHyOpts}{pdfencoding}[\val\nr]%
+ {auto,pdfdoc,unicode}[pdfdoc]{\edef\web@Hypdfencoding{\val}}
+ {\PackageWarning{web}{Bad choice for pdfencoding,
+ permissible values\MessageBreak
+ are auto, pdfdoc, and unicode.\MessageBreak Try again}}
+\let\web@Hypdfencoding\@empty
+\let\u@web@ddtoHyOpts\@empty
+\let\u@web@ddtoHySetup\@empty
+\def\web@addtoHyOpts#1{\g@addto@macro\u@web@ddtoHyOpts{#1}}
+\def\web@addtoHySetup#1{\g@addto@macro\u@web@ddtoHySetup{#1}}
+\define@key{web.sty}{addtoHyOpts}[]{%
+ \setkeys*{webHyOpts}{#1}\web@addtoHyOpts{#1}}
+\define@key{web.sty}{addtoHyOpts*}[]{%
+ \setkeys*{webHyOpts}{#1}\web@addtoHySetup{#1}}
+\DeclareOptionX{useui}{\PassOptionsToPackage{useui}{eforms}}
+\DeclareOptionX{forceSubSubNumbers}{\ExecuteOptionsX{nobullets}}
+\DeclareOptionX{centertitlepage}{\@centertitlepagetrue}
+\newif\if@centertitlepage \@centertitlepagefalse
+\DeclareOptionX{centertitlepagefull}{\@centertitlepagefulltrue}
+\newif\if@centertitlepagefull \@centertitlepagefullfalse
+\DeclareOptionX{pro}{\let\webpro@loaded\web@YES}
+\DeclareOptionX{extended}{\let\webpro@loaded\web@YES}
+\let\webpro@loaded\web@NO
+\def\loadwebpro{\InputIfFileExists{webpro.def}{}{}}
+\newif\ifweb@allowtemplates \web@allowtemplatestrue
+\DeclareOptionX{draft}{\web@allowtemplatesfalse}
+\DeclareOptionX{usetemplates}{\def\@usetemplates{1}}
+\DeclareOptionX{leftpanel}%
+ {\def\@panelconfig{1}\def\@usetemplates{1}}
+\DeclareOptionX{rightpanel}%
+ {\def\@panelconfig{2}\def\@usetemplates{1}}
+\newif\iftemplatesforpaper \templatesforpaperfalse
+\DeclareOptionX{templatesforpaper}{\templatesforpapertrue
+ \ExecuteOptionsX{forcolorpaper}}
+\DeclareOptionX{rightpanelprt}{%
+ \ifeqforpaper\else\ExecuteOptionsX{rightpanel}\fi
+}
+\DeclareOptionX{leftpanelprt}{%
+ \ifeqforpaper\else\ExecuteOptionsX{leftpanel}\fi
+}
+\def\templatedefaults{\def\@panelsep{0pt}\def\@usetemplates{0}%
+ \def\@panelconfig{0}\def\@textX{0}\def\@panelX{0}%
+}
+\templatedefaults
+\DeclareOptionX{navibar}{\web@navibartrue}
+\DeclareOptionX{tight}{\AtEndOfPackage{\tightsettings}}
+\DeclareOptionX{tight*}{\AtEndOfPackage{\tightsettings*}}
+\let\web@tight\web@NO
+\DeclareOptionX{uselatexparts}{%
+ \AtEndOfPackage{\@ifundefined{part}{}{\let\part\web@save@part}}}
+\DeclareOptionX{uselatexchapters}{%
+ \AtEndOfPackage{\@ifundefined{chapter}{}
+ {\let\chapter\web@save@chapter}}}
+\DeclareOptionX{french}{%
+ \AtEndOfPackage{%
+ % Recouvrement de \today
+ \def\today{\the\day\ \ifcase\month\or janvier
+ \or f\'evrier \or mars \or avril
+ \or mai \or juin \or juillet \or ao\^ut
+ \or septembre \or octobre \or novembre
+ \or d\'ecembre \fi \the\year}
+ \def\web@toc{Table des mati\`{e}res}
+ \def\web@continued{suite}
+ \def\web@article{D\'{e}but \hyperlink{\web@Start.1}{Document}}
+ \def\web@directory{R\'{e}pertoire}
+ \def\web@revision{Mise \`{a} jour :}
+ \def\web@copyright{Copyright}
+ \def\web@versionlabel{Version}
+ \def\web@back{Retour}}
+ \PassOptionsToPackage{french}{exerquiz}
+}
+\DeclareOptionX{german}{%
+ \AtEndOfPackage{%
+ \def\today{\the\day. \ifcase\month\or Januar
+ \or Februar \or M\"{a}rz \or April
+ \or Mai \or Juni \or Juli \or August
+ \or September \or Oktober \or November
+ \or Dezember \fi \the\year}
+ \def\web@versionlabel{Version}
+ \def\web@toc{Inhaltsverzeichnis}
+ \def\web@continued{Forts.}
+ \def\web@article{Anfang \hyperlink{\web@Start.1}{Artikel}}
+ \def\web@directory{\"Ubersicht}
+ \def\web@revision{Letzte \"Anderung:}
+ \def\web@copyright{Copyright}
+ \def\web@section{Abschnitt}
+ \def\web@back{Zur\"uck}
+ \def\web@doc{Dok}}
+ \PassOptionsToPackage{german}{exerquiz}
+}
+\DeclareOptionX{norsk}{%
+ \AtEndOfPackage{%
+ \def\today{\ifcase\month\or Januar
+ \or Februar \or Mars \or April
+ \or Mai \or Juni \or Juli \or August
+ \or September \or Oktober \or November
+ \or Desember \fi \the\day, \the\year}
+ \def\web@versionlabel{Versjon}
+ \def\web@toc{Innholdsfortegnelse}
+ \def\web@continued{forts.}
+ \def\web@article{Start \hyperlink{\web@Start.1}{artikkel}}
+ \def\web@directory{Katalog}
+ \def\web@revision{Sist endret:}
+ \def\web@copyright{Copyright}
+ \def\web@section{Avsnitt}
+ \def\web@back{Tilbake}
+ \def\web@doc{Dok}}
+ \PassOptionsToPackage{norsk}{exerquiz}
+}
+\DeclareOptionX{dutch}{%
+ \AtEndOfPackage{%
+ \def\today{\the\day~\ifcase\month\or januari
+ \or februari \or maart \or april
+ \or mei \or juni \or juli \or augustus
+ \or september \or oktober \or november
+ \or december \fi \space \the\year}
+ \def\web@versionlabel{Versie}
+ \def\web@toc{Inhoudsopgave}
+ \def\web@continued{vervolg}
+ \def\web@article{Begin \hyperlink{\web@Start.1}{Artikel}}
+ \def\web@directory{Overzicht}
+ \def\web@revision{Laatste wijziging:}
+ \def\web@copyright{Copyright}
+ \def\web@section{Sectie}
+ \def\web@back{Terug}
+ \def\web@doc{Doc}}
+ \PassOptionsToPackage{dutch}{exerquiz}
+}
+\DeclareOptionX{spanish}{%
+ \AtEndOfPackage{%
+ \def\today{\the\day\ de \ifcase\month\or Enero
+ \or Febrero \or Marzo \or Abril
+ \or Mayo \or Junio \or Julio \or Agosto
+ \or Septiembre \or Octubre \or Noviembre
+ \or Deciembre \fi de \the\year}
+ \renewcommand\web@versionlabel{Versi\noexpand\'{o}n}
+ \renewcommand\web@toc{Tabla de Contenido}
+ \renewcommand\web@continued{cont.}
+ \renewcommand\web@article{Inicio
+ \hyperlink{\web@Start.1}{Art\'{\i}culo}}
+ \renewcommand\web@directory{Directorio}
+ \renewcommand\web@revision{Actualizado el:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Secci\'on}
+ \renewcommand\web@back{Volver}
+ \renewcommand\web@doc{Doc}}
+ \PassOptionsToPackage{spanish}{exerquiz}
+}
+\DeclareOptionX{italian}{%
+ \AtEndOfPackage{%
+ \def\today{\ifcase\month\or Gennaio
+ \or Febbraio \or Marzo \or Aprile
+ \or Maggio \or Giugno \or Luglio \or Agosto
+ \or Settembre \or Ottobre \or Novembre
+ \or Dicembre \fi \the\day, \the\year}
+ \renewcommand\web@versionlabel{Versione}
+ \renewcommand\web@toc{Indice}
+ \renewcommand\web@continued{cont.}
+ \renewcommand\web@article{Inizio \hyperlink{\web@Start.1}{Articolo}}
+ \renewcommand\web@directory{Directory}
+ \renewcommand\web@revision{Data Ultima Revisione:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Sezione}
+ \renewcommand\web@back{Back}
+ \renewcommand\web@doc{Doc}}
+ \PassOptionsToPackage{italian}{exerquiz}
+}
+\DeclareOptionX{russian}{%
+ \ExecuteOptionsX{unicode}%
+ \AtEndOfPackage{%
+ \def\today{\the\day\ \ifcase\month
+ \or \cyrya\cyrn\cyrv\cyra\cyrr\cyrya
+ \or \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya
+ \or \cyrm\cyra\cyrr\cyrt\cyra
+ \or \cyra\cyrp\cyrr\cyre\cyrl\cyrya
+ \or \cyrm\cyra\cyrya
+ \or \cyri\cyryu\cyrn\cyrya
+ \or \cyri\cyryu\cyrl\cyrya
+ \or \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+ \or \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya
+ \or \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya
+ \or \cyrn\cyro\cyrya\cyrb\cyrr\cyrya
+ \or \cyrd\cyre\cyrk\cyrya\cyrb\cyrr\cyrya \fi{ }%
+ \the\year\ \cyrg.}
+ \gdef\eq@protected##1##2{{\ifhmode ##2\else
+ \ifvmode ##2\else\ifinner##2\else\noexpand ##1\fi\fi\fi}}%
+ \def\cyrCommand##1##2{\def##1{\eq@protected##1{##2}}}%
+ \cyrCommand\web@toc{\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn%
+ \cyri\cyre}
+ \cyrCommand\web@continued{\cyrp\cyrr\cyro\cyrd\cyro\cyrl%
+ \cyrzh\cyre\cyrn\cyri\cyre}
+ \cyrCommand\web@article{\CYRN\cyra\cyrch\cyra\cyrl\cyro{ }%
+ \hyperlink{\web@Start.1}{\cyrd\cyro\cyrk\cyru\cyrm\cyre%
+ \cyrn\cyrt\cyra}}
+ \cyrCommand\web@directory{\CYRS\cyro\cyrd\cyre\cyrr\cyrzh%
+ \cyra\cyrn\cyri\cyre}
+ \cyrCommand\web@revision{\CYRP\cyro\cyrs\cyrl\cyre\cyrd\cyrn%
+ \cyrya\cyrya{ }\cyrr\cyre\cyrv\cyri\cyrz\cyri\cyrya:}
+ \let\web@copyright\@gobble
+ \cyrCommand\web@versionlabel{\CYRV\cyre\cyrr\cyrs\cyri\cyrya}
+ \cyrCommand\web@back{\CYRN\cyra\cyrz\cyra\cyrd}
+ \cyrCommand\web@section{\CYRCH\cyra\cyrs\cyrt\cyrsftsn}}
+ \PassOptionsToPackage{russian}{exerquiz}
+}
+\DeclareOptionX{dansk}{%
+ \AtEndOfPackage{%
+ \def\today{\ifcase\month\or Januar
+ \or Februar \or Marts \or April
+ \or Maj \or Juni \or Juli \or August
+ \or September \or Oktober \or November
+ \or December \fi \the\day, \the\year}
+ \renewcommand\web@versionlabel{Version}
+ \renewcommand\web@toc{Indholdsfortegnelse}
+ \renewcommand\web@continued{forts.}
+ \renewcommand\web@article{Begin \hyperlink{\web@Start.1}{Artikel}}
+ \renewcommand\web@directory{Katalog}
+ \renewcommand\web@revision{Sidst revideret:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Afsnit}
+ % Label Navibar
+ \renewcommand\web@back{Tilbage}
+ \renewcommand\web@doc{Dok}} % restricted to three characters
+ \PassOptionsToPackage{dansk}{exerquiz}
+}
+\DeclareOptionX{polish}{%
+ \AtEndOfPackage{%
+ \def\today{\ifcase\month\or {Stycze\'{n}}
+ \or Luty \or Marzec \or {Kwiecie\'{n}}
+ \or Maj \or Czerwiec \or Lipiec \or {\'{S}ierpie\'{n}}
+ \or {Wrzesie\'{n}} \or {Pa\'{z}dziernik} \or Listopad
+ \or {Grudzie\'{n}} \fi \the\day, \the\year}
+ \renewcommand\web@versionlabel{Wersja}
+ \renewcommand\web@toc{Spis Tre\'{s}ci}
+ \renewcommand\web@continued{verte}
+ \renewcommand\web@article{Pocz\k{a}tek do
+ \hyperlink{\web@Start.1}{Tekstu}}
+ \renewcommand\web@directory{Zawarto\'{s}\'{c}}
+ \renewcommand\web@revision{Ostatnia zmiana:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Cze\'{s}\'{c}}
+ % Label Navibar
+ \renewcommand\web@back{Wstecz}
+ \renewcommand\web@doc{Dok}} % restricted to three characters
+ \PassOptionsToPackage{polish}{exerquiz}
+}
+\DeclareOptionX{finnish}{%
+ \AtEndOfPackage{%
+ % Recouvrement de \today
+ \def\today{\the\day\ \ifcase\month\or Tammikuu
+ \or Helmikuu \or Maaliskuu \or Huhtikuu
+ \or Toukokuu \or Kes\"{a}kuu \or Hein\"{a}kuu \or Elokuu
+ \or Syyskuu \or Lokakuu \or Marraskuu
+ \or Joulukuu \fi \the\year}
+ \def\web@toc{Sis\"{a}llys}
+ \def\web@continued{jatka}
+ \def\web@article{Aloita \hyperlink{section.1}{Artikkeli}}
+ \def\web@directory{Hakemisto}
+ \def\web@revision{Muutettu viimeeksi:}
+ \def\web@copyright{Copyright}
+ \def\web@section{Kappale}
+ \def\web@versionlabel{Versio}
+ \def\web@back{Takaisin}}
+ \PassOptionsToPackage{finnish}{exerquiz}
+}
+\DeclareOptionX{catalan}{%
+ \AtEndOfPackage{%
+ \def\today{\the\day\ de \ifcase\month\or Gener
+ \or Febrer \or Mar\c{c} \or Abril
+ \or Maig \or Juny \or Juliol \or Agost
+ \or Setembre \or Octubre \or Novembre
+ \or Desembre \fi de \the\year}
+ \renewcommand\web@versionlabel{Versi\noexpand\'{o}}
+ \renewcommand\web@toc{Taula de Contingut}
+ \renewcommand\web@continued{cont.}
+ \renewcommand\web@article{Inici \hyperlink{\web@Start.1}{Article}}
+ \renewcommand\web@directory{Directori}
+ \renewcommand\web@revision{Actualizat el:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Secci\'o}
+ \renewcommand\web@back{Tornar}
+ \renewcommand\web@doc{Doc}}
+ \PassOptionsToPackage{catalan}{exerquiz}
+}
+\DeclareOptionX{czech}{%
+ \AtEndOfPackage{%
+ \def\today{\number\day. \ifcase\month\or ledna\or \'unora\or
+ b\v{r}ezna\or dubna\or kv\v{e}tna\or \v{c}ervna\or \v{c}ervence\or
+ srpna\or z\'a\v{r}\'\i\or \v{r}\'{\i}jna\or listopadu\or prosince\fi
+ \space\number\year}
+ \def\web@versionlabel{Verze}
+ \def\web@toc{Obsah}
+ \def\web@continued{pokr.}
+ \def\web@article{Za\v{c}\'{a}tek \hyperlink{\web@Start.1}{textu}}
+ \def\web@directory{Rozcestn\'{\i}k}
+ \def\web@revision{Posledn\'{\i} zm\v{e}na}
+ \def\web@copyright{Copyright}
+ \def\web@section{Kapitola}
+ \def\web@back{Zp\v{e}t}
+ \def\web@doc{Dok}}
+ \PassOptionsToPackage{czech}{exerquiz}
+}
+\DeclareOptionX{brazil}{%
+ \AtEndOfPackage{%
+ \def\today{\the\day\ de \ifcase\month\or janeiro
+ \or fevereiro \or mar\c{c}o \or abril
+ \or maio \or junho \or julho \or agosto
+ \or setembro \or outubro \or novembro
+ \or dezembro \fi de \the\year}
+ \renewcommand\web@versionlabel{Vers\~{a}o}
+ \renewcommand\web@toc{Tabela de Conte\'{u}do}
+ \renewcommand\web@continued{cont.}
+ \renewcommand\web@article{Inicie o
+ \hyperlink{\web@Start.1}{Artigo}}
+ \renewcommand\web@directory{Diret\'{o}rio}
+ \renewcommand\web@revision{Atualizado em:}
+ \renewcommand\web@copyright{Copyright}
+ \renewcommand\web@section{Se\c{c}\noexpand\~{a}o}
+ \renewcommand\web@back{Voltar}
+ \renewcommand\web@doc{Doc}}
+ \PassOptionsToPackage{brazil}{exerquiz}
+}
+\DeclareOptionX{turkish}{%
+ \ExecuteOptionsX{unicode}%
+ \AtEndOfPackage{%
+ \def\today{\the\day\ \ifcase\month\or Ocak
+ \or \c{S}ubat \or Mart \or Nisan
+ \or May{\i}s \or Haziran \or Temmuz \or A\u{g}ustos
+ \or Eyl\"ul \or Ekim \or Kas{\i}m
+ \or Aral{\i}k \fi \the\year}
+ \def\web@toc{{\.I}\c{c}indekiler}
+ \def\web@continued{suite}
+ \def\web@article{\hyperlink{\web@Start.1}{D\"ok\"umanta} ba{\c s}la}
+ \def\web@directory{Dosya}
+ \def\web@revision{Son versiyon tarihi :}
+ \def\web@copyright{Copyright}
+ \def\web@versionlabel{Versiyon}
+ \def\web@section{K{\i}s{\i}m}
+ \def\web@back{Geri}
+ \def\web@doc{D\"ok}}
+ \PassOptionsToPackage{turkish}{exerquiz}
+}
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}
+ {\eq@ColorPackage}}
+\@ifpackageloaded{xcolor}%
+{%
+ \@ifpackagelater{xcolor}{2004/07/04}{}
+ {%
+ \PackageError{web}{%
+ *************************************************\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]{web}\MessageBreak
+ * or \string\documentclass[noxcolor]{article}\MessageBreak
+ *************************************************}{}%
+ }%
+}{}
+\newif\ifweb@navibar\web@navibarfalse
+\def\NaviBarOn{\global\web@navibartrue}
+\def\NaviBarOff{\global\web@navibarfalse}
+\newif\ifeqforpaper \eqforpaperfalse % for those who insist on paper
+\newif\ifweb@papersize@set \web@papersize@setfalse
+\newif\ifweb@margins@set \web@margins@setfalse
+\newif\if@defaultsubsubding \@defaultsubsubdingtrue
+\def\forceSubSubNumbers{%
+ \ifx\web@latextoc\web@YES\else
+ \PackageWarning{webpro}{\string\forSubSubNumbers\space
+ requested,\MessageBreak I'm adding the option of latextoc}\fi
+ \let\web@latextoc\web@YES\@defaultsubsubdingfalse
+}
+\@ifclassloaded{report}{\newif\if@mainmatter\@mainmattertrue}{}
+\newcommand\NewPage{\ifeqforpaper\else\newpage\fi}
+\let\web@directory@option\web@NO
+\let\web@latextoc\web@NO
+\let\web@layout\web@YES
+\let\web@bullets\web@YES
+\def\web@finalDot{.}
+\def\noFinalDot{\let\web@finalDot\@empty}
+\@onlypreamble\noFinalDot
+\def\minPanelWidth#1{\def\web@minpanelwidth{#1}}
+\minPanelWidth{1in}
+\ifpdf\ExecuteOptionsX{pdftex}\else
+ \ifxetex\ExecuteOptionsX{xetex}\else
+ \let\ExecuteOptions@SAVE\ExecuteOptions
+ \let\ExecuteOptions\ExecuteOptionsX
+ \InputIfFileExists{web.cfg}{}
+ {\@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{dvips}}
+ {\ExecuteOptionsX{dvipsone}}}%
+ \let\ExecuteOptions\ExecuteOptions@SAVE
+ \fi\fi
+\ProcessOptionsX
+\ifx\web@Hypdfencoding\@empty\else
+ \let\aeb@useunicode\@gobble\fi
+\def\w@csarg#1#2{\expandafter#1\csname#2\endcsname}
+\@nameuse{papersize@for@\eq@driver@name}
+\ifx\web@layout\web@YES\else\templatedefaults\fi
+\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}
+\pdfmarkupfalse\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
+\iftemplatesforpaper\def\@usetemplates{1}\fi
+\if@centertitlepagefull\@centertitlepagetrue\fi
+\RequirePackage{\eq@ColorPackage}
+\RequirePackage{calc}
+\RequirePackage{amssymb}% used for navibar
+\edef\web@RequireHyperref{\noexpand\RequirePackage[%
+ \ifpdf\else\ifxetex\else\eq@driver@name,\fi\fi
+ bookmarks,bookmarksnumbered,bookmarksopen,%
+ colorlinks,\aeb@useunicode,linkcolor=webgreen,%
+ filecolor=webbrown,citecolor=webgreen,%
+ urlcolor=webbrown,pagebackref,pdfpagemode=UseNone,%
+ pdfstartview=Fit,pdfpagelayout=SinglePage%
+ \ifx\u@web@ddtoHyOpts\@empty\else,\u@web@ddtoHyOpts\fi
+ \ifx\i@web@ddtoHyOpts\@empty\else,\i@web@ddtoHyOpts\fi]{hyperref}%
+}
+\def\w@isHyLoaded{\@ifpackageloaded{hyperref}{}{\PackageError{web}
+ {The xhyperref option used, but hyperref is not\MessageBreak
+ already loaded. Will load hyperref with the options\MessageBreak
+ chosen by web}{Remove xhyperref or load hyperref prior to the web
+ package.}\web@RequireHyperref}%
+}
+\if@web@hyperref\expandafter\web@RequireHyperref\else
+ \expandafter\w@isHyLoaded\fi
+\ifx\u@web@ddtoHySetup\@empty\else\edef\x{\noexpand\hypersetup
+ {\u@web@ddtoHySetup}}\expandafter\x\fi
+\def\@pdfcreator{The AcroTeX eDucation Bundle}
+\RequirePackage{comment}
+\ifnum\@usetemplates=1\relax
+ \def\x{\RequirePackage{graphicx}}\expandafter\x\fi
+\ifnum\@usetemplates=1\relax
+ \RequirePackage{eso-pic}
+ \ifnum\eq@drivernum=2\relax
+ \def\web@set@paper{\AddToShipoutPicture*{%
+ \special{papersize=\the\paperwidth,\the\paperheight}}}%
+ \AtBeginShipoutFirst{%
+ \begingroup
+ \@ifundefined{stockwidth}{%
+ \ifx\special@paper\@empty
+ \special{papersize=\the\paperwidth,\the\paperheight}%
+ \else
+ \special{papersize=\special@paper}%
+ \fi
+ }{%
+ \ifdim\stockwidth=\z@
+ \else
+ \special{papersize=\the\stockwidth,\the\stockheight}%
+ \fi
+ }%
+ \endgroup
+ }%
+ \@ifundefined{@ShipoutPicture}{}{%
+ \renewcommand{\@ShipoutPicture}{%
+ \bgroup
+ \@tempswafalse%
+ \ifx\ESO@HookI\@empty\else\@tempswatrue\fi%
+ \ifx\ESO@HookII\@empty\else\@tempswatrue\fi%
+ \if@tempswa%
+ \@tempdima=1in\@tempdimb=-\@tempdima%
+ \advance\@tempdimb\paperheight
+ \@ifundefined{stockwidth}{}{%
+ \advance\@tempdima+\trimedge%
+ \advance\@tempdima+\paperwidth%
+ \advance\@tempdima-\stockwidth%
+ \if@twoside\ifodd\c@page\else%
+ \advance\@tempdima-2\trimedge%
+ \advance\@tempdima-\paperwidth%
+ \advance\@tempdima+\stockwidth%
+ \fi\fi%
+ \advance\@tempdimb+\trimtop}%
+ \unitlength=1pt%
+ \global\setbox\@cclv\vbox{%
+ \vbox{\let\protect\relax
+ \pictur@(0,0)%
+ (\strip@pt\@tempdima,\strip@pt\@tempdimb)%
+ \ESO@HookII\ESO@HookI\global\let\ESO@HookII\@empty%
+ \endpicture}%
+ \box\@cclv%
+ }%
+ \fi
+ \egroup
+ }%
+ }%
+ \fi
+\fi
+\def\getargs#1#2{\def\aeb@argi{#1}\def\aeb@argii{#2}}
+\let\getargsii\getargs
+\newlength{\textscreenwidth}
+\setlength{\textscreenwidth}{\paperwidth}
+\newlength{\@panelwidth}
+\def\panelscreenwidth{\@panelwidth}
+\newdimen\@Leftmargin \@Leftmargin=0pt
+\newdimen\@Rightmargin \@Rightmargin=0pt
+\newdimen\@Bottommargin \@Bottommargin=0pt
+\newdimen\@Topmargin \@Topmargin=0pt
+\newdimen\web@Topmargin \web@Topmargin=8pt
+\newcommand{\websetheadheight}{8pt}
+\newcommand{\web@footskip}{4pt}
+\def\web@additionalheadsep{0pt}
+\pagestyle{empty}
+\def\InitLayout
+{%
+ \ifeqforpaper\else
+ \setlength\headheight{\websetheadheight}
+ \hoffset=0pt \voffset=0pt
+ \fi
+ \ifeqforpaper\else
+ {\@tempdima=\paperwidth
+ \addtolength{\@tempdima}{-\@Leftmargin}%
+ \addtolength{\@tempdima}{-\@Rightmargin}%
+ \xdef\fullscreenwidth{\the\@tempdima}}%
+ \fi
+ \ifx\web@layout\web@YES\else\templatedefaults\fi
+ \ifeqforpaper\else
+ \setlength{\textwidth}{\paperwidth}
+ \setlength{\textheight}{\paperheight}
+ \addtolength{\textheight}{-\@Topmargin}
+ \addtolength{\textheight}{-\@Bottommargin}
+ \setlength{\headsep}{\@Topmargin}
+ \addtolength\headsep{-\headheight}
+ \setlength{\topmargin}{\web@Topmargin}
+ \addtolength\headsep{-\topmargin}
+ \addtolength\headsep{\web@additionalheadsep}
+ \addtolength{\topmargin}{-1in}
+ \setlength\footskip{\@Bottommargin}
+ \addtolength{\footskip}{-\web@footskip} % depth of navibar
+ \ifcase\@panelconfig
+ \setlength{\oddsidemargin}{\@Leftmargin}
+ \setlength{\evensidemargin}{\@Leftmargin}
+ \or
+ \setlength{\oddsidemargin}{\@panelwidth}
+ \setlength{\evensidemargin}{\@panelwidth}
+ \or
+ \setlength{\oddsidemargin}{\@Leftmargin}
+ \setlength{\evensidemargin}{\@Leftmargin}
+ \fi
+ \addtolength{\evensidemargin}{-1in}
+ \addtolength{\oddsidemargin}{-1in}
+ \fi
+ \ifx\web@layout\web@YES
+ \ifcase\@panelconfig
+ \addtolength{\textwidth}{-\@Leftmargin}
+ \addtolength{\textwidth}{-\@Rightmargin}
+ \or % leftpanel
+ \addtolength{\textwidth}{-\@panelwidth}
+ \addtolength{\textwidth}{-\@Rightmargin}
+ \or % rightpanel
+ \addtolength{\textwidth}{-\@panelwidth}
+ \addtolength{\textwidth}{-\@Leftmargin}
+ \fi
+ \ifnum\@usetemplates=1\relax
+ \setlength{\textscreenwidth}{\paperwidth}
+ \def\@textX{0}
+ \ifnum\@panelconfig=1 % leftpanel
+ \addtolength{\textwidth}{-\@panelsep}
+ \addtolength{\oddsidemargin}{\@panelsep}
+ \addtolength{\evensidemargin}{\@panelsep}
+ \addtolength{\textscreenwidth}{-\@panelwidth}
+ \def\@textX{\strip@pt\@panelwidth}
+ \def\@panelX{0}
+ \fi
+ \ifnum\@panelconfig=2 % rightpanel
+ \addtolength{\textwidth}{-\@panelsep}
+ \addtolength{\textscreenwidth}{-\@panelwidth}
+ \def\@textX{0}
+ \def\@panelX{\strip@pt\textscreenwidth}
+ \fi
+ \calculatefullwidth
+ \fi
+ \fi
+}
+\def\@convLtoP#1#2{%
+ \afterassignment\@convLtoP@i\dimen@#2bp\relax{#1}{#2}}
+\def\@convLtoP@i#1\relax#2#3{%
+ \if!#1!%
+ \def#2{#3}%
+ \else
+ \dimen@.99626\dimen@
+ \edef#2{\strip@pt\dimen@}%
+ \fi}
+\providecommand\setPageDevice[3][600]{\bgroup
+ \@convLtoP{\width}{#2}\@convLtoP{\height}{#3}
+ \ifpdfmarkup\headerps@out{<< /HWResolution [#1 #1] %
+ /PageSize [\width\space\height] >> setpagedevice}\else
+ \PackageWarning{web}{This is a distiller only command,\MessageBreak
+ ignoring \string\setPageDevice}\fi\egroup}
+\providecommand\allowTransparency{\bgroup
+ \ifpdfmarkup\headerps@out{<< %
+ /AllowTransparency true >> setdistillerparams}\else
+ \PackageWarning{web}{This is a distiller only command,\MessageBreak
+ ignoring \string\allowTransparency}\fi\egroup}
+\@onlypreamble\setPageDevice
+\@onlypreamble\allowTransparency
+\def\screensize#1#2{%
+ \def\webSaveSSDim{{#1}{#2}}%
+ \begingroup
+ \ifeqforpaper
+ \ifx\web@layout\web@YES
+ \setlength{\@tempdima}{#2}%
+ \global\textwidth\@tempdima
+ \addtolength{\@tempdima}{-\@Leftmargin}%
+ \addtolength{\@tempdima}{-\@Rightmargin}%
+ \xdef\fullscreenwidth{\the\@tempdima}%
+ \else
+ \xdef\fullscreenwidth{\the\textwidth}%
+ \fi
+ \else
+ \setlength{\@tempdima}{#1}%
+ \global\paperheight\@tempdima
+ \setlength{\@tempdima}{#2}%
+ \global\paperwidth\@tempdima
+ \fi
+ \endgroup
+ \web@papersize@settrue
+ \web@set@paper % dps modified
+ \let\screensize\@gobbletwo
+ \InitLayout
+}
+\let\screensize@web@save\screensize
+\newcommand{\setScreensizeFromGraphic}[2][]{%
+ \getDimsFromGraphic[#1]{#2}%
+ {\web@graphicScreenWidth}{\web@graphicScreenHeight}%
+ \screensize{\web@graphicScreenHeight}{\web@graphicScreenWidth}%
+}
+\@onlypreamble\setScreensizeFromGraphic
+\newcommand{\getDimsFromGraphic}[4][]{{%
+ \setbox0=\hbox{\includegraphics[draft,#1]{#2}}%
+ \dimen@=\dp0 \advance\dimen@\ht0
+ \xdef#3{\the\wd0 }\xdef#4{\the\dimen@}%
+}}
+\def\web@getSSDims#1#2{\edef\web@@height{#1}\edef\web@@width{#2}}
+\def\addToWebHWError{\PackageError{web}{%
+ You must declare screen size first by using\MessageBreak
+ the \string\screensize\space command, or by declaring \MessageBreak
+ a design in the web option list}%
+ {Do as is suggested in error message!}}
+\newcommand{\addtoWebHeight}[1]{%
+ \ifx\screensize\@gobbletwo
+ \expandafter\web@getSSDims\webSaveSSDim
+ \screensize@web@save{\web@@height+#1}{\web@@width}%
+ \else\addToWebHWError\fi
+}
+\newcommand{\addtoWebWidth}[1]{%
+ \ifx\screensize\@gobbletwo
+ \expandafter\web@getSSDims\webSaveSSDim
+ \screensize@web@save{\web@@height}{\web@@width+#1}%
+ \else\addToWebHWError\fi
+}
+\@onlypreamble\addtoWebHeight
+\@onlypreamble\addtoWebWidth
+\newcommand{\@margins}[5][\web@minpanelwidth]
+{%
+ \def\webSaveMargDim{[#1]{#2}{#3}{#4}{#5}}%
+ \setlength{\@panelwidth}{#1}%
+ \ifdim\@panelwidth<\web@minpanelwidth
+ \setlength{\@panelwidth}{\web@minpanelwidth}\fi
+ \setlength{\@Leftmargin}{#2}%
+ \setlength{\@Rightmargin}{#3}%
+ \setlength{\@Topmargin}{#4}%
+ \setlength{\@Bottommargin}{#5}%
+ \web@margins@settrue
+ \InitLayout
+}
+\let\margins\@margins
+\let\margins@web@save\margins
+\newcommand{\@@margins}[5][]{}
+\let\marginsize\margins
+\newcommand\get@MargDim[5][]{%
+ \def\currPanelWidth{#1}%
+ \def\currLeftMarg{#2}\def\currRightMarg{#3}%
+ \def\currTopMarg{#4}\def\currBottomMarg{#5}}
+\newcommand{\resetmargins}[5][\web@minpanelwidth]{%
+ \expandafter\get@MargDim\webSaveMargDim
+ \begingroup
+ \let\incby\currPanelWidth
+ \def\web@arg{#1}\ifx\web@arg\@empty
+ \setlength{\@tempdima}{\currPanelWidth}\else
+ \setlength{\@tempdima}{#1}\fi
+ \xdef\newPanelWidth{\the\@tempdima}%
+ \let\incby\currLeftMarg
+ \def\web@arg{#2}\ifx\web@arg\@empty
+ \setlength{\@tempdima}{\currLeftMarg}\else
+ \setlength{\@tempdima}{#2}\fi
+ \xdef\newLeftMarg{\the\@tempdima}%
+ \let\incby\currRightMarg
+ \def\web@arg{#3}\ifx\web@arg\@empty
+ \setlength{\@tempdima}{\currRightMarg}\else
+ \setlength{\@tempdima}{#3}\fi
+ \xdef\newRightMarg{\the\@tempdima}%
+ \let\incby\currTopMarg
+ \def\web@arg{#4}\ifx\web@arg\@empty
+ \setlength{\@tempdima}{\currTopMarg}\else
+ \setlength{\@tempdima}{#4}\fi
+ \xdef\newTopMarg{\the\@tempdima}%
+ \let\incby\currBottomMarg
+ \def\web@arg{#4}\ifx\web@arg\@empty
+ \setlength{\@tempdima}{\currBottomMarg}\else
+ \setlength{\@tempdima}{#5}\fi
+ \xdef\newBottomMarg{\the\@tempdima}%
+ \endgroup
+ \margins@web@save[\newPanelWidth]{\newLeftMarg}{\newRightMarg}
+ {\newTopMarg}{\newBottomMarg}
+}
+\@onlypreamble\resetscreensize
+\let\web@save@title\title
+\def\title{\@ifnextchar[{\@web@title}{\@web@title[]}}
+\def\@web@title[#1]#2{\gdef\webtitle{#2}\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}\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}%
+ \hypersetup{pdfsubject={#2}}}
+\def\email#1{\gdef\webemail{#1}}
+\def\thewebemail{\href{mailto:\webemail}{\webemail}}
+\def\keywords#1{\gdef\webkeywords{#1}\hypersetup{pdfkeywords={#1}}}
+\def\pdfLang#1{\def\web@pdfLang{#1}\hypersetup{pdflang={#1}}}
+\let\web@pdfLang\@empty
+\def\university#1{\gdef\webuniversity{#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\copyrightyears#1{\gdef\webcopyrightyears{#1}}
+\newcommand{\tocName}[1]{\def\web@toc{#1}}
+\tocName{Table of Contents}
+\newcommand{\tocNameCont}[1]{\def\web@continued{#1}}
+\tocNameCont{cont.}
+\newcommand{\dirContentLink}[1]{\def\web@article{#1}}
+\dirContentLink{Begin \hyperlink{\web@Start.1}{Article}}
+\newcommand{\directoryName}[1]{\def\web@directory{#1}}
+\directoryName{Directory}
+\newcommand{\revisionLabel}[1]{\def\web@revision{#1}}
+\revisionLabel{Last Revision Date:}
+\def\norevisionLabel{\let\web@revision\@gobble}
+\newcommand{\copyrightLabel}[1]{\def\web@copyright{#1}}
+\copyrightLabel{Copyright}
+\def\nocopyright{\let\web@copyright\@gobble}
+\def\nocopyrightNotice{\let\web@copyright\@gobblethree}
+\def\web@section{Section}
+\def\web@back{Back}
+\def\web@doc{Doc} % restricted to three characters
+\title{}\author{}\email{}\subject{}\keywords{}\version{}
+\university{}\copyrightyears{\the\year}
+\let\IF@AorBswitch\ifeqforpaper
+\def\prtscr{\@ifstar{\prtscrV}{\prtscrA}}
+\def\prtscrA#1#2{\ifeqforpaper#1\else#2\fi}
+\newtoks\webtoksi
+\newbox\webtempboxi
+\newbox\webtempboxii
+\providecommand\SHOWTEMPBOXi{\unhbox\webtempboxi}
+\providecommand\TRUEACTIONi{\aftergroup\SETTEMPBOXii}
+\providecommand\TRUEACTIONia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\FALSEACTIONii{\aftergroup\SETTEMPBOXi}
+\providecommand\FALSEACTIONiia{\aftergroup\SHOWTEMPBOXi}
+\providecommand\SETTEMPBOXi{\IF@AorBswitch\else
+ \afterassignment\TRUEACTIONia\fi
+ \setbox\webtempboxi=\hbox}
+\providecommand\SETTEMPBOXii{\IF@AorBswitch
+ \afterassignment\FALSEACTIONiia\fi
+ \setbox\webtempboxii=\hbox}
+\def\prtscrV{\let\IF@AorBswitch\ifeqforpaper
+ \ifeqforpaper
+ \def\web@next{\afterassignment\TRUEACTIONi\SETTEMPBOXi}\else
+ \def\web@next{\afterassignment\FALSEACTIONii\SETTEMPBOXii}\fi
+ \web@next}
+\newcommand{\web@aboveOptPgMatDef}{\minimumskip\vspace{\stretch{1}}}
+\newcommand{\aboveOPMvspace}{\web@aboveOptPgMatDef}
+\newcommand{\optionalPageMatter}[2][\web@aboveOptPgMatDef]{%
+ \def\aboveOPMvspace{#1}\def\optionalpagematter{#2}%
+}
+\def\optionalpagematter{}
+\@ifundefined{thechapter}
+ {\def\web@Start{section}}{\def\web@Start{chapter}}
+\newcommand{\titleauthorproportion}{.33}
+\newcommand{\hproportionwebuniversity}{.7}
+\newcommand{\hproportionwebtitle}{.7}
+\newcommand{\hproportionwebauthor}{.4}
+\newcommand{\minimumskip}{\medskip}
+\def\web@copyright@symbol{\copyright}
+\newcommand{\copyrightSymbol}[1]{\def\web@copyright@symbol{#1}}
+\def\nocopyrightsymbol{\let\web@copyright@symbol\@gobble}
+\newcommand{\trailerFontSize}{\footnotesize}
+\def\maketitle@trailer@ul{\web@copyright\ \web@copyright@symbol\
+ \webcopyrightyears}
+\def\maketitle@trailer@ll{\web@revision\ \@date}
+\def\maketitle@trailer@ur{\thewebemail}
+\def\maketitle@trailer@lr{\webversion}
+\newcommand{\titlepageTrailer}
+{%
+ \makebox[\linewidth]{\parbox{\linewidth}{%
+ \maketitle@trailer@ul\hfill\maketitle@trailer@ur\\
+ \maketitle@trailer@ll\hfill\maketitle@trailer@lr}}%
+}
+\newcommand{\webdirectory}{%
+ \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}%
+ \web@priorDirMatter
+ \begin{flushleft}{\web@formatWordDirectory\web@directory}%
+ \web@priorDirList
+ \vspace{\vspaceAfterDirName}%
+ \begin{itemize}\setlength{\itemsep}{-3pt}\web@formatDirectoryItems
+ \ifx\web@removeDirTOC\web@YES\else\item\relax\dirTOCItem\fi
+ \ifx\web@removeDirArticle\web@YES\else
+ \item\relax\dirArticleItem\fi
+ \web@addtoDirList
+ \end{itemize}
+ \web@afterDirList
+ \end{flushleft}
+ \web@afterDirMatter
+}
+\newcommand{\directoryhook}[1]{\def\web@directory@hook##1{#1}}
+\let\web@directory@hook\@empty
+\newcommand{\vspaceAfterDirName}{-3pt}
+\newcommand{\dirTOCItem}{\hyperlink{webtoc}{\web@toc}}
+\newcommand{\dirArticleItem}{\web@article}
+\newcommand{\removeDirTOC}{\let\web@removeDirTOC\web@YES}
+\let\web@removeDirTOC\web@NO
+\newcommand{\removeDirArticle}{\let\web@removeDirArticle\web@YES}
+\let\web@removeDirArticle\web@NO
+\let\web@addtoDirList\@empty
+\newcommand{\formatWordDirectory}[1]{\def\web@formatWordDirectory{#1}}
+\formatWordDirectory{\bfseries\large}
+\newcommand{\formatDirectoryItems}[1]{\def\web@formatDirectoryItems{#1}}
+\formatDirectoryItems{\bfseries}
+\newcommand{\addtoDirList}[1]{\g@addto@macro\web@addtoDirList{\item #1}}
+\newcommand{\priorDirList}[1]{\def\web@priorDirList{#1}}
+\let\web@priorDirList\@empty
+\newcommand{\afterDirList}[1]{\def\web@afterDirList{#1}}
+\let\web@afterDirList\@empty
+\newcommand{\priorDirMatter}[1]{\def\web@priorDirMatter{#1}}
+\let\web@priorDirMatter\@empty
+\newcommand{\afterDirMatter}[1]{\def\web@afterDirMatter{#1}}
+\let\web@afterDirMatter\@empty
+\newcommand{\universityColor}[1]{\def\webuniversity@color{#1}}
+\universityColor{blue}
+\newcommand{\titleColor}[1]{\def\webtitle@color{#1}}
+\titleColor{black}
+\newcommand{\authorColor}[1]{\def\webauthor@color{#1}}
+\authorColor{black}
+\newcommand{\subjectColor}[1]{\def\websubject@color{#1}}
+\subjectColor{black}
+\def\aboveTopTitleSkip#1{\def\web@aboveTopTitleSkip{#1}}
+\aboveTopTitleSkip{0pt}
+\newcommand{\topTitlePage}
+{%
+ \vglue\web@aboveTopTitleSkip
+ \noindent\makebox[\linewidth]{%
+ \parbox{\hproportionwebuniversity\linewidth}%
+ {\bfseries\color{\webuniversity@color}\ifeqforpaper\large\fi
+ \centering\webuniversity}}\par\ifeqforpaper\else\minimumskip\fi
+ \vspace{\stretch{1}}%
+ \noindent\makebox[\linewidth]{%
+ \parbox{\hproportionwebtitle\linewidth}%
+ {\bfseries\color{\webtitle@color}\ifeqforpaper\Large\else
+ \large\fi\centering\webtitle}}\par\ifeqforpaper
+ \vspace{2\baselineskip}\else\minimumskip\vspace{\stretch{1}}\fi
+ \noindent\makebox[\linewidth]{%
+ \parbox{\hproportionwebauthor\linewidth}%
+ {\bfseries\color{\webauthor@color}\ifeqforpaper
+ \large\fi\centering\webauthor}}
+}
+\newcommand{\allowHeadingsTitlePage}{\let\web@titlepagestyle\@gobble}
+\def\web@titlepagestyle#1{#1}
+\newcommand{\coverpagemargin}{1in}
+\newcommand{\maketitlepreamble}
+{%
+ \web@titlepagestyle{\thispagestyle{empty}}%
+ \ifeqforpaper\if@centertitlepage
+ \begingroup
+ \if@centertitlepagefull
+ \@tempdima=\coverpagemargin
+ \else
+ \@tempdima\paperwidth
+ \advance\@tempdima-\textwidth
+ \@tempdima=.5\@tempdima
+ \edef\coverpagemargin{\the\@tempdima}%
+ \fi
+ \@tempdimb\paperwidth
+ \addtolength{\@tempdimb}{-2\@tempdima}%
+ \edef\fullscreenwidth{\the\@tempdimb}%
+ \linewidth\fullscreenwidth
+ \textwidth\fullscreenwidth
+ \hfuzz\linewidth
+ \setlength{\oddsidemargin}{\coverpagemargin-1in}%
+ \setlength{\evensidemargin}{\oddsidemargin}%
+ \marginparsep=0pt
+ \marginparwidth=0pt
+ \parindent0pt
+ \fi\fi
+}
+\newcommand{\maketitlepostamble}
+{%
+ \newpage
+ \ifeqforpaper\if@centertitlepage\endgroup\fi\fi
+}
+\newcommand{\web@maketitle}
+{%
+ \maketitlepreamble
+ \ifeqforpaper\vspace*{2\baselineskip}\else
+ \vbox to\titleauthorproportion\textheight\bgroup\fi
+ \topTitlePage
+ \ifeqforpaper\else\egroup\fi % end of \vbox for title and author
+ \ifx\optionalpagematter\@empty\par\else
+ \begingroup\par
+ \aboveOPMvspace
+ \noindent\parbox{\linewidth}{\optionalpagematter}%
+ \par\endgroup\fi
+ \vspace{\stretch{1}}
+ \ifx\web@directory@option\web@YES\web@directory@hook\webdirectory\fi
+ \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}
+ \vfill\noindent\begingroup
+ \trailerFontSize\titlepageTrailer\par\endgroup
+ \maketitlepostamble
+}
+\let\web@save@maketitle\maketitle
+\let\maketitle\web@maketitle
+\newcommand{\makeinlinetitle}
+{%
+ \noindent\makebox[\linewidth][c]{%
+ \bfseries\color{\webtitle@color}\webtitle}
+ \makebox[\linewidth]{%
+ \shortstack[l]{\strut\\
+ \makebox[0pt][l]{\webuniversity}\\
+ \makebox[0pt][l]{%
+ \@ifundefined{aeb@prepared}
+ {\@date}{\aeb@prepared}%
+ }%
+ }\hfill
+ \shortstack[c]{\strut\webauthor\\\strut}\hfill
+ \shortstack[r]{\strut\makebox[0pt][r]{\thewebemail}\\
+ \makebox[0pt][r]{%
+ \@ifundefined{aeb@talksite}{\webversion}
+ {\ifx\aeb@talksite\@empty\webversion
+ \else\aeb@talksite\fi}%
+ }%
+ }%
+ }%
+ \bigskip
+}
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{3}
+\ifeqforpaper\else
+ \clubpenalty=50
+ \widowpenalty=50
+\fi
+\let\web@save@listi\@listi
+\let\web@save@listii\@listii
+\let\web@save@listiii\@listiii
+\let\web@save@normalsize\normalsize
+\let\web@save@partopsep\partopsep
+\let\web@normalsize\normalsize
+\def\w@ppp#1#2#3{#1\p@ \@plus#2\p@ \@minus#3\p@}
+\def\w@zpp#1#2{\z@ \@plus#1\p@ \@minus#2\p@}
+\def\tightsettings@z{%
+ \setlength\partopsep{\w@ppp{2}{}{}} % unchanged
+ \def\web@listi{\leftmargin\leftmargini
+ \parsep \w@ppp{2}{2}{}% 4+2-1
+ \topsep \w@ppp{2}{1}{}% 8+2-4
+ \itemsep\w@ppp{2}{1}{}}% 4+2-1
+ \let\@listi\web@listi
+ \let\@listI\@listi
+ \@listi
+ \def\web@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \w@zpp{}{}% 4+2-1
+ \parsep \w@zpp{}{}% 2+1-1
+ \itemsep \parsep}% unchanged
+ \def\web@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \w@zpp{}{}% 2+1-1
+ \parsep \z@ % unchanged
+ \partopsep \w@ppp{}{}{}% unchanged
+ \itemsep \topsep}% unchanged
+ \let\@listii\web@listii
+ \let\@listiii\web@listiii
+ \renewcommand\web@normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip \w@ppp{5}{3}{}% 10+2-5
+ \abovedisplayshortskip \w@zpp{3}{0}% unchanged
+ \belowdisplayshortskip \w@ppp{3}{2}{2}% 6+3-3
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}%
+ \let\normalsize\web@normalsize
+ \normalsize
+}
+\def\tightsettings@i{%
+ \setlength\partopsep{\w@ppp{2}{}{}}% 3+1-1
+ \def\web@listi{\leftmargin\leftmargini
+ \parsep \w@ppp{2.5}{2}{}% 4.5+2-1
+ \topsep \w@ppp{4.5}{1.5}{2.5}% 9+3-5
+ \itemsep \w@ppp{2.5}{}{}}% 4.5+2-1
+ \let\@listi\web@listi
+ \let\@listI\@listi
+ \@listi
+ \def\web@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \w@ppp{}{}{}% 4.5+2-1
+ \parsep \w@ppp{}{}{}% 2+1-1
+ \itemsep \parsep}% unchanged
+ \def\web@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \w@ppp{}{}{}% 2+1-1
+ \parsep \z@ % unchanged
+ \partopsep \w@ppp{}{}{}% unchanged
+ \itemsep \topsep}% unchanged
+ \let\@listii\web@listii
+ \let\@listiii\web@listiii
+ \renewcommand\web@normalsize{%
+ \@setfontsize\normalsize\@xipt{13.6}%
+ \abovedisplayskip \w@ppp{5.5}{3}{3}% 11+3-6
+ \abovedisplayshortskip \w@zpp{}{0}% unchanged
+ \belowdisplayshortskip \w@ppp{4}{2}{2}% 6.5+3.5-3
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}%
+ \let\normalsize\web@normalsize
+ \normalsize
+}
+\def\tightsettings@ii{%
+ \setlength\partopsep{\w@ppp{3}{2}{2}}% unchanged
+ \def\web@listi{\leftmargin\leftmargini
+ \parsep \w@ppp{3}{2}{}% 5+2.5-1
+ \topsep \w@ppp{5}{2}{3}% 10+4-6
+ \itemsep\w@ppp{2.5}{}{}}% 5+2.5-1
+ \let\@listi\web@listi
+ \let\@listI\@listi
+ \@listi
+ \def\web@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \w@ppp{2.5}{}{}% 5+2.5-1
+ \parsep \w@ppp{2}{}{}% 2.5+1-1
+ \itemsep \parsep}% unchanged
+ \def\web@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \w@ppp{1.5}{}{}% 2.5+1-1
+ \parsep \z@ % unchanged
+ \partopsep \w@ppp{}{}{}% unchanged
+ \itemsep \topsep}% unchanged
+ \let\@listii\web@listii
+ \let\@listiii\web@listiii
+ \renewcommand\web@normalsize{%
+ \@setfontsize\normalsize\@xiipt{14.5}%
+ \abovedisplayskip \w@ppp{6}{1.5}{3.5}% 12+3-7
+ \abovedisplayshortskip \w@zpp{3}{0}% unchanged
+ \belowdisplayshortskip \w@ppp{4}{2}{2}% 6.5+3.5-3
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}%
+ \let\normalsize\web@normalsize
+ \normalsize
+}
+\def\tightsettings{\@ifstar{\ifeqforpaper\else\tightsettings@cont\fi}
+ {\tightsettings@cont}}
+\def\tightsettings@cont{\let\web@tight\web@YES
+ \ifcase\@ptsize
+ \tightsettings@z\or
+ \tightsettings@i\or
+ \tightsettings@ii
+ \fi
+}
+\def\restorenormalsettings{\let\web@tight\web@NO
+ \let\@listi\web@save@listi
+ \let\@listii\web@save@listii
+ \let\@listiii\web@save@listiii
+ \let\normalsize\web@save@normalsize
+ \let\partopsep\web@save@partopsep
+ \let\@listI\@listi
+ \@listi
+ \normalsize
+}
+\def\navibarTextColor#1{\def\@menucolor{#1}}
+\def\@menucolor{webblue}
+\def\navibarBgColor#1{\def\@menuBgColor{#1}}
+\def\@menuBgColor{webgray}
+\newcommand{\newNaviIcon}[1][\@empty]
+{%
+ \ifx#1m\let\web@next\@newNaviIconMenu
+ \else\ifx#1j\let\web@next\@newNaviIconJS
+ \else\ifx#1l\let\web@next\@newNaviIconLink
+ \else\ifx#1\@empty\let\web@next\@newNaviIconLink
+ \else\let\web@next\relax
+ \PackageWarning{web}{\string\newNaviIcon: unknown first parameter}
+ \fi\fi\fi\fi\web@next
+}
+\def\web@colorbox@w@transparency#1{%
+ \ifx#1\@empty\setlength{\fboxrule}{0pt}\let\aeb@next\fbox\else
+ \def\aeb@next{\colorbox{#1}}\fi\aeb@next}
+\newcommand{\@newNaviIconMenu}[6][I]
+{%
+ \def#2{{\setlength{\fboxsep}{0pt}\def\@pdfhighlight{/#1}%
+ \Acrobatmenu{#6}{\web@colorbox@w@transparency{\@menuBgColor}{%
+ \parbox[c][#4][c]{#3}%
+ {\normalsize\centering\color{\@menucolor}#5}}}%
+ }}%
+}
+\newcommand{\@newNaviIconJS}[6][I]
+{%
+ \ifcase\eq@drivernum
+ \def#2{{\setlength{\fboxsep}{0pt}%
+ \pdf@rect{\web@colorbox@w@transparency{\@menuBgColor}%
+ {\parbox[c][#4][c]{#3}%
+ {\normalsize\centering\color{\@menucolor}#5}}}%
+ \literalps@out{%
+ [ /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ /Border [ 0 0 0 ]/H/#1\space
+ /Action <</S/JavaScript/JS (#6) >>
+ /Subtype/Link
+ /ANN pdfmark}%
+ }}%
+ \or
+ \def#2{{\setlength{\fboxsep}{0pt}%
+ \leavevmode\pdfstartlink
+ attr {/Border [0 0 0 ] /H/#1}%
+ user{ /Subtype /Link
+ /A << /S/JavaScript/JS (#6) >>}%
+ \web@colorbox@w@transparency{\@menuBgColor}%
+ {\parbox[c][#4][c]{#3}%
+ {\normalsize\centering\color{\@menucolor}#5}}%
+ \pdfendlink
+ }}%
+ \or
+ \def#2{{\setlength{\fboxsep}{0pt}%
+ \@pdfm@mark{bann
+ <<
+ /Border [0 0 0 ] /H/#1\space
+ /Subtype /Link
+ /A << /S/JavaScript/JS (#6) >>
+ >>}\web@colorbox@w@transparency{\@menuBgColor}%
+ {\parbox[c][#4][c]{#3}%
+ {\normalsize\centering\color{\@menucolor}#5}}%
+ \@pdfm@mark{eann}%
+ }}%
+ \fi
+}
+\newcommand{\@newNaviIconLink}[6][I]
+{%
+ \def#2{{\setlength{\fboxsep}{0pt}\def\@pdfhighlight{/#1}%
+ #6{\web@colorbox@w@transparency{\@menuBgColor}%
+ {\parbox[c][#4][c]{#3}%
+ {\normalsize\centering\color{\@menucolor}#5}}}%
+ }}%
+}
+\let\insertwebtoc\relax
+\def\insert@webtoc{\web@TOC\ }
+\def\web@TocText{Toc}
+\newNaviIcon[l]{\web@TOC}{\web@nb@width}{\web@nb@height}
+ {\footnotesize\web@TocText}{\hyperlink{webtoc}}
+\newcommand\navibariconWidth[1]{\def\web@nb@width{#1}}
+\newcommand\navibariconHeight[1]{\def\web@nb@height{#1}}
+\navibariconWidth{34pt}\navibariconHeight{10pt}
+\@newNaviIconMenu{\web@FirstPage}{\web@nb@width}{\web@nb@height}
+ {\web@FirstPageText}{FirstPage}
+\def\web@FirstPageText{$\blacktriangleleft\blacktriangleleft$}
+\@newNaviIconMenu{\web@LastPage}{\web@nb@width}{\web@nb@height}
+ {\web@LastPageText}{LastPage}
+\def\web@LastPageText{$\blacktriangleright\blacktriangleright$}
+\@newNaviIconMenu{\web@PrevPage}{\web@nb@width}{\web@nb@height}
+ {\web@PrevPageText}{PrevPage}
+\def\web@PrevPageText{$\blacktriangleleft$}
+\@newNaviIconMenu{\web@NextPage}{\web@nb@width}{\web@nb@height}
+ {\web@NextPageText}{NextPage}
+\def\web@NextPageText{$\blacktriangleright$}
+\@newNaviIconMenu{\web@GoBack}{\web@nb@width}{\web@nb@height}
+ {\footnotesize\web@back}{GoBack}
+\@newNaviIconMenu{\web@GoBackDoc}{\web@nb@width}{\web@nb@height}
+ {$\blacktriangleleft$\ \footnotesize\web@doc}{GoBackDoc}
+\@newNaviIconMenu{\web@GoForwardDoc}{\web@nb@width}{\web@nb@height}
+ {\footnotesize\web@doc\ \normalsize$\blacktriangleright$}
+ {GoForwardDoc}
+\@newNaviIconMenu{\web@FS}{\web@nb@width}{\web@nb@height}
+ {\footnotesize\web@FSText}{FullScreen}
+\def\web@FSText{FS}
+\@newNaviIconMenu{\web@GoToPage}{\web@nb@width}{\web@nb@height}
+ {\footnotesize\web@GoToPageText}{GoToPage}
+\def\web@GoToPageText{Page...}
+\newcommand\web@navigationbar{%
+\hfil\bfseries\footnotesize
+\insertwebtoc
+\web@FirstPage\
+\web@LastPage\
+\web@PrevPage\
+\web@NextPage\
+\web@GoBack
+\hfil}
+\newcommand{\panelgroupWidth}[1]{%
+ \global\let\chkpanelgroup\web@chkpanelgroup
+ \def\web@pg@width{#1}}
+\newcommand{\panelgroupHeight}[1]{%
+ \global\let\chkpanelgroup\web@chkpanelgroup
+ \def\web@pg@height{#1}}
+\newcommand{\panelgroupSep}[1]{%
+ \global\let\chkpanelgroup\web@chkpanelgroup
+ \def\web@pg@sep{#1}}
+\@newNaviIconMenu{\panel@FirstPage}{\web@pg@width}{\web@pg@height}
+ {\web@FirstPageText}{FirstPage}
+\@newNaviIconMenu{\panel@LastPage}{\web@pg@width}{\web@pg@height}
+ {\web@LastPageText}{LastPage}
+\@newNaviIconMenu{\panel@PrevPage}{\web@pg@width}{\web@pg@height}
+ {\web@PrevPageText}{PrevPage}
+\@newNaviIconMenu{\panel@NextPage}{\web@pg@width}{\web@pg@height}
+ {\web@NextPageText}{NextPage}
+\@newNaviIconMenu{\panel@GoBack}{\web@pg@width}{\web@pg@height}
+ {\footnotesize\web@back}{GoBack}
+\@newNaviIconMenu{\panel@GoBackDoc}{\web@pg@width}{\web@pg@height}
+ {$\blacktriangleleft$\,\footnotesize\web@doc}{GoBackDoc}
+\@newNaviIconMenu{\panel@GoForwardDoc}{\web@pg@width}{\web@pg@height}
+ {\footnotesize\web@doc\,\normalsize$\blacktriangleright$}
+ {GoForwardDoc}
+\@newNaviIconMenu{\panel@Close}{\web@pg@width}{\web@pg@height}
+ {\footnotesize Close}{Close}
+\def\web@CloseText{Close}
+\@newNaviIconMenu{\panel@FS}{\web@pg@width}{\web@pg@height}
+ {\footnotesize\web@FSText}{FullScreen}
+\@newNaviIconMenu{\panel@GoToPage}{\web@pg@width}{\web@pg@height}
+ {\footnotesize\web@GoToPageText}{GoToPage}
+\newcommand{\web@chkpanelgroup}{\bgroup
+ \setlength{\@tempdima}{\web@pg@width+\web@pg@width+\web@pg@sep}%
+ \ifdim\@tempdima>\@panelwidth\PackageError{web}{Width of
+ \string\panelNaviGroup\space is wider than the panel}{}\else
+ \xdef\panelNavigroupWidth{\the\@tempdima}\fi
+ \egroup\global\let\chkpanelgroup\@empty
+}
+\panelgroupWidth{28pt}\panelgroupHeight{15pt}
+\panelgroupSep{2pt}
+\newcommand{\panelrowsep}{1pt}
+\newcommand\panelNaviGroup{\chkpanelgroup
+ \parbox[c]{\panelNavigroupWidth}{%
+ \offinterlineskip
+ \panelIconGroup
+ }%
+}
+\newcommand{\panelIconGroup}{%
+ \panel@FirstPage\hfill\panel@LastPage\\[\panelrowsep]
+ \panel@PrevPage\hfill\panel@NextPage\\[\panelrowsep]
+ \panel@GoBack\hfill\panel@Close
+}
+\let\ins@NaviBar\@empty
+\newcommand\insNaviBar{\@ifstar{\@gdefInsNaviBar}{\@defInsNaviBar}}
+\def\@gdefInsNaviBar#1{\gdef\ins@NaviBar{#1}}
+\def\@defInsNaviBar#1{\def\ins@NaviBar{#1}}
+\newcommand\insNaviBarOff{\global\let\ins@NaviBar\@empty}
+\def\web@ifOnThisPage#1#2{\ifnum\c@page=\@thispage\relax
+ #1\else#2\fi}
+\newcommand{\insertnaviiconhere}[1]
+{%
+ \xdef\@thispage{\the\c@page}%
+ \def\web@insToRight{%
+ \ifeqforpaper\makebox[0pt][l]{\ifdim\marginparsep>0pt\relax
+ \hspace{\marginparsep}\else\ \fi#1}\else
+ \makebox[0pt][l]{%
+ \ifnum\@panelconfig=2\relax
+ \hspace{\@panelsep}\else
+ \hspace{\@Rightmargin}\fi
+ \makebox[0pt][r]{#1}}\fi
+ }\expandafter\rheader\expandafter
+ {\expandafter\web@ifOnThisPage
+ \expandafter{\web@rightheader\web@insToRight}%
+ {\web@defaultrightheader}}%
+}
+\def\insertnaviiconhereafter#1{\def\web@insToLeft{%
+ \ifeqforpaper\makebox[0pt][r]{#1\ifdim\marginparsep>0pt\relax
+ \hspace{\marginparsep}\else\ \fi}\else
+ \makebox[0pt][r]{\makebox[0pt][l]{#1}%
+ \ifnum\@panelconfig=1\relax
+ \hspace{\@panelsep}\else
+ \hspace{\@Leftmargin}\fi}\fi
+ }\expandafter\lheader\expandafter
+ {\expandafter\web@insToLeft\web@lhead}}
+\def\removehereaftericon{\lheader{\aeb@setmarks}}
+\let\defaultpageheader\removehereaftericon
+\newcommand\ArrowUp[1]
+{%
+ \normalsize\ifeqforpaper
+ \setlength{\fboxsep}{6pt}\else
+ \setlength{\fboxsep}{4pt}\fi
+ \raisebox{\depth-\fboxsep}[0pt][0pt]{%
+ #1{\web@colorbox@w@transparency{\web@directionIconBgColor}%
+ {\textcolor{\web@directionIconTextColor}{$\bigl\Uparrow$}}}}%
+}
+\newcommand\ArrowDown[1]
+{%
+ \normalsize\ifeqforpaper
+ \setlength{\fboxsep}{6pt}\else
+ \setlength{\fboxsep}{4pt}\fi
+ \raisebox{\depth-\fboxsep}[0pt][0pt]{%
+ #1{\web@colorbox@w@transparency{\web@directionIconBgColor}%
+ {\textcolor{\web@directionIconTextColor}{$\bigl\Downarrow$}}}}%
+}
+\def\directionIconTextColor#1{\def\web@directionIconTextColor{#1}}
+\def\web@directionIconTextColor{webblue}
+\def\directionIconBgColor#1{\def\web@directionIconBgColor{#1}}
+\def\web@directionIconBgColor{webgray}
+\def\web@defaultrightheader{\ifnum\value{page}=1\relax\else\thepage\fi}
+\let\web@headerhook\@empty
+\let\web@headerprivate\@empty
+\let\web@footerhook\@empty
+\let\web@footerprivate\@empty
+\def\lheader#1{\gdef\web@lhead{#1}}
+\def\cheader#1{\gdef\web@chead{#1}}
+\def\rheader#1{\gdef\web@rightheader{#1}}
+\lheader{\rightmark}
+\cheader{}
+\rheader{\web@defaultrightheader}
+\def\lfooter#1{\gdef\web@lfoot{#1}}
+\def\cfooter#1{\gdef\web@cfoot{#1}}
+\def\rfooter#1{\gdef\web@rfoot{#1}}
+\lfooter{}\rfooter{}
+\newcommand{\placeScreenNavibar}{%
+ \ifweb@navibar\web@navigationbar\else
+ \ins@NaviBar\global\let\ins@NaviBar\@empty\fi}
+\cfooter{\placeScreenNavibar}
+\newcommand{\clearHeaders}{%
+ \let\web@lhead@save\web@lhead
+ \let\web@chead@save\web@chead
+ \let\web@rightheader@save\web@rightheader
+ \let\web@lhead\@empty\let\web@chead\@empty
+ \let\web@rightheader\@empty}
+\newcommand{\restoreHeaders}{%
+ \let\web@lhead\web@lhead@save
+ \let\web@chead\web@chead@save
+ \let\web@rightheader\web@rightheader@save}
+\newcommand{\clearFooters}{%
+ \let\web@lfoot@save\web@lfoot
+ \let\web@cfoot@save\web@cfoot
+ \let\web@rfoot@save\web@lfoot
+ \let\web@lfoot\@empty\let\web@cfoot\@empty
+ \let\web@rfoot\@empty}
+\newcommand{\restoreFooters}{%
+ \let\web@lfoot\web@lfoot@save
+ \let\web@cfoot\web@cfoot@save
+ \let\web@rfoot\web@rfoot@save}
+\def\headerformat#1{\def\web@headerhook{#1}}
+\headerformat{}
+\def\footerformat#1{\def\web@footerhook{#1}}
+\footerformat{}
+\let\webheadwrapper\@empty
+\let\webfootwrapper\@empty
+\newcommand{\headWrapper}[1]{\def\webheadwrapper##1{#1}}
+\newcommand{\footWrapper}[1]{\def\webfootwrapper##1{#1}}
+\newcommand{\ps@webheadings}
+{%
+ \renewcommand{\@oddhead}{\webheadwrapper{%
+ \normalfont\ifeqforpaper\else\footnotesize\fi
+ \web@headerprivate\web@headerhook\web@lhead\hfil\web@chead\hfil
+ \web@rightheader}}
+ \renewcommand{\@evenhead}{\@oddhead}
+ \renewcommand{\@oddfoot}{\webfootwrapper{%
+ \normalfont\ifeqforpaper\else\footnotesize\fi
+ \web@footerprivate\web@footerhook\web@lfoot\hfil
+ \web@cfoot\hfil\web@rfoot}}
+ \renewcommand{\@evenfoot}{\@oddfoot}
+}
+\renewcommand{\sectionmark}[1]{%
+ \markboth{}{\web@section\ \thesection: #1}}
+\newcommand{\noHeadersOnSectionPage}{%
+ \gdef\web@headerpolicy{%
+ \expandafter\aeb@gettopmark\topmark{}{}%
+ \expandafter\aeb@getbotmark\botmark{}{}%
+ \ifx\aeb@topmark\aeb@botmark\rightmark\fi
+ }%
+}
+\noHeadersOnSectionPage
+\newcommand{\headersOnSectionPage}{%
+ \gdef\web@headerpolicy{\rightmark}%
+}
+\def\aeb@gettopmark#1#2{\def\aeb@topmark{#2}}
+\def\aeb@getbotmark#1#2{\def\aeb@botmark{#2}}
+\def\aeb@setmarks{\web@headerpolicy}
+\lheader{\aeb@setmarks}
+\AtEndOfPackage{\pagestyle{webheadings}}
+\newcommand{\sectionColor}[1]{\def\web@sectionsColorOld{#1}
+ \def\aeb@sectioncolor{#1}}
+\sectionColor{blue}
+\def\web@inputsectiondefs{\InputIfFileExists{websec.def}{}
+ {\PackageError{web}{Cannot find the file websec.def}{}}
+}
+\ifweb@sectioning\expandafter\web@inputsectiondefs\fi
+\def\aebwritelastpage{%
+ \immediate\write\@auxout{\string\expandafter\string\gdef
+ \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}%
+}
+\AtEndDocument{%
+ \clearpage\addtocounter{page}{-1}\aebwritelastpage
+ \addtocounter{page}{1}}
+\def\useFullWidthForPaper{\ifeqforpaper
+ \setlength{\textwidth}{\paperwidth-2in}
+ \setlength{\textheight}
+ {\paperheight-2in-\footskip-\topmargin-\headheight-\headsep}
+ \oddsidemargin=0pt
+ \evensidemargin=0pt
+ \marginparsep=0pt
+ \marginparwidth=0pt
+ \fi
+}
+\def\maxtextscreentext{%
+ \iftemplatesforpaper\else\ifeqforpaper
+ \ifnum\@usetemplates=1
+ \ifnum\@panelconfig=1 % left panel
+ \setlength{\oddsidemargin}%
+ {\@panelwidth+\@panelsep-1in}%
+ \setlength{\textwidth}%
+ {\paperwidth-\@panelwidth-\@panelsep-%
+ \marginparwidth-\marginparsep}%
+ \else\ifnum\@panelconfig=2 % right panel
+ \setlength{\oddsidemargin}{0in}%
+ \setlength{\textwidth}%
+ {\paperwidth-\@panelwidth-\@panelsep-%
+ \oddsidemargin-\marginparwidth-\marginparsep}%
+ \else
+ \useFullWidthForPaper
+ \fi\fi\fi
+ \fi\fi
+}
+\newcommand{\centertextonpage}{%
+ \ifeqforpaper\AtBeginDocument{\web@centertextonpage}\fi}
+\def\web@centertextonpage{%
+ \setlength{\oddsidemargin}{\paperwidth-\textwidth-2in}%
+ \oddsidemargin=.5\oddsidemargin
+ \evensidemargin=\oddsidemargin
+}
+\definecolor{webgreen}{rgb}{0,.5,0}
+\definecolor{webbrown}{rgb}{.6,0,0}
+\definecolor{webyellow}{rgb}{0.98,0.92,0.73}
+\definecolor{webgray}{rgb}{.753,.753,.753}
+\definecolor{webgrey}{rgb}{.753,.753,.753}
+\definecolor{webblue}{rgb}{0,0,.8}
+\definecolor{wheat}{rgb}{.96, .87, .70}
+\definecolor{oldlace}{rgb}{.992, .96187, .902}
+\definecolor{snow}{rgb}{1, .98, .98}
+\definecolor{ghostwhite}{rgb}{.973, .973, 1}
+\definecolor{cornsilk}{rgb}{1, .973, .863}
+\definecolor{honeydew}{rgb}{.941, 1, .941}
+\definecolor{lavenderdark}{rgb}{.8, .8, .9529411}
+\definecolor{lavender}{rgb}{.902, .902, .980}
+\definecolor{lightblue}{rgb}{.8, .8, .95}
+\definecolor{lightgray}{rgb}{.827, .827, .827}
+\definecolor{lightsteelblue}{rgb}{.690, .769, .871}
+\definecolor{lightturquoise}{rgb}{.686, .933, .933}
+\definecolor{darkgreen}{rgb}{.0, .392, .0}
+\definecolor{yellowgreen}{rgb}{.604, .804, .196}
+\definecolor{vlightblue}{rgb}{.88, .85, .95}
+\definecolor{khaki}{rgb}{.741, .718, .42}
+\ifx\web@latextoc\web@YES\ifx\web@bullets\web@YES%
+ \@ifundefined{chapter} {%
+ \renewcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{1.2em}}
+ }{%
+ \renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{1.2em}}
+ }%
+\fi\fi
+\def\tocColor#1{\def\web@tocColor{#1}\def\aeb@toccolor{#1}}
+\tocColor{blue}
+\newcommand{\allowHeadingsTocPage}{\let\web@Tocpagestyle\@gobble}
+\def\web@Tocpagestyle#1{#1}
+\let\web@latextoc@save\tableofcontents
+\ifx\web@bullets\web@YES
+\def\tableofcontents
+{%
+ \global\let\insertwebtoc\insert@webtoc
+ \def\contentsname{\web@toc}%
+ \pdfbookmark[1]{\web@toc}{toc}%
+ \web@Tocpagestyle{\thispagestyle{empty}}%
+ \markright{{\normalfont\small \web@toc\ (\web@continued)}}%
+ \@ifundefined{sectionToc}{%
+ \begin{center}\hypertarget{webtoc}{}%
+ \normalfont\bfseries\Large\color{\web@tocColor}%
+ \contentsname
+ \end{center}
+ }{\sectionToc{\web@toc}}\par
+ \ifx\web@latextoc\web@YES
+ \@starttoc{toc}% LaTeX toc listing with page numbers
+ \else
+ \noindent\webtableofcontents
+ \fi
+ \newpage
+}
+\else
+ \PackageInfo{web}{No Bullets Requested}
+ \def\tableofcontents{%
+ \begingroup
+ \def\contentsname{\web@toc}%
+ \let\web@save@mkboth\@mkboth
+ \def\@mkboth{\protect\hypertarget{webtoc}{}\web@save@mkboth}%
+ \ifx\web@finalDot\@empty\else
+ \def\numberline##1{\hb@xt@\@tempdima{##1.\hfil}}\fi
+ \web@latextoc@save
+ \endgroup\newpage
+ }
+ \renewcommand\subsubsection{\renewcommand{\@seccntformat}[1]{%
+ \@nameuse{the##1}\web@finalDot\enspace}
+ \@startsection{subsubsection}{3}{\z@}%
+ {-2ex\@plus -1ex \@minus -.2ex}{.5ex \@plus .2ex}%
+ {\noindent\normalfont\normalsize\bfseries}}
+ \renewcommand*{\thesubsubsection}
+ {\thesubsection.\arabic{subsubsection}}
+\fi
+\def\widestNumber#1{%
+ \def\widest@Number{#1\ }}
+\widestNumber{0.0.}
+\newcommand{\tocIndent}[1]{\def\toc@indent{#1}}
+\tocIndent{20pt}
+\def\tocIndentByNumber#1{{%
+ \settowidth{\@tempdima}{\normalfont\textbf{#1\ }}%
+ \xdef\toc@indent{\the\@tempdima}%
+}}
+\tocIndentByNumber{00.}
+\let\tocindent\tocIndent
+\let\tocindentByNumber\tocIndentByNumber
+\def\webtableofcontents
+{%
+ \begingroup
+ \global\let\isChapter\web@NO
+ \parskip0pt\parindent\toc@indent\relax
+ \settowidth{\@tempdima}{\normalfont
+ \textbf{\widest@Number}}%
+ \@tempdimb\@tempdima
+ \advance\@tempdimb by\parindent
+ \edef\web@subsubSecIndent{\the\@tempdimb}%
+ \def\par{\endgraf\leftskip=0pt}%
+ \let\numberline\web@numberline
+ \let\contentsline\web@contentsline
+ \def\web@section##1##2##3{\web@parse##1\\%
+ \web@toc@section{##1}{##2}{##3}}%
+ \def\web@subsection##1##2##3{\web@parse##1\\%
+ \web@toc@subsection{##1}{##2}{##3}}%
+ \def\web@subsubsection##1##2##3{\web@parse##1\\%
+ \web@toc@subsubsection{##1}{##2}{##3}}%
+ \def\web@part##1##2##3{\web@toc@part{##1}{##2}{##3}}%
+ \def\web@chapter##1##2##3{\web@parse##1\\%
+ \web@toc@chapter{##1}{##2}{##3}}%
+ \@starttoc{toc}%
+ \setlength{\@tempdimb}{\ifx\isChapter\web@YES
+ \parindent+\web@subsubSecIndent\else\web@subsubSecIndent\fi}%
+ \leftskip\@tempdimb
+ \par\endgroup
+}
+\def\web@numberline#1{\makebox[0pt]{#1\enspace}}%
+\def\web@contentsline#1#2#3#4{%
+ \@nameuse{web@#1}{#2}{#3}{#4}}%
+\def\web@parse#1#2#3\\{%
+ \def\web@title{#3}\def\numberline{#2}}%
+\def\web@toc@part#1#2#3{\par\noindent
+ {\bfseries\hyperlink{#3}{#1}}\par\smallskip}
+\def\web@toc@chapter#1#2#3{\global\let\isChapter\web@YES
+ \par\mbox{}{\bfseries\makebox[0pt][r]{\hyperlink{#3}%
+ {\numberline\web@finalDot}\space}\web@title}\par\smallskip
+}
+\def\web@toc@section#1#2#3{\penalty-500\par
+ \hspace*{\if\isChapter y\parindent\else0pt\fi}\mbox{}{\bfseries
+ \ifx\numberline\@empty
+ \@ifundefined{d@DingToc}{\hyperlink{#3}{\web@title}}
+ {%
+ \ifx\d@DingToc\@empty
+ \hyperlink{#3}{\web@title}%
+ \else
+ \if\aeb@use@section@numbers0\relax
+ \makebox[0pt][r]{\color{\d@DingTocColor}%
+ \d@DingToc\space}\hyperlink{#3}{\web@title}%
+ \else
+ \hyperlink{#3}{\web@title}%
+ \fi
+ \fi
+ }%
+ \else
+ \makebox[0pt][r]{\hyperlink{#3}{%
+ \numberline\web@finalDot}\space}\web@title
+ \fi}\endgraf
+}%
+\def\web@toc@subsection#1#2#3{\par
+ \setlength{\@tempdimb}{\ifx\isChapter\web@YES
+ \parindent+\@tempdima\else\@tempdima\fi}%
+ \penalty-50 \hspace*{\@tempdimb}\mbox{}{\bfseries
+ \ifx\numberline\@empty
+ \@ifundefined{dd@DingToc}{\hyperlink{#3}{\web@title}}
+ {%
+ \ifx\dd@DingToc\@empty
+ \hyperlink{#3}{\web@title}%
+ \else
+ \makebox[0pt][r]{\color{\dd@DingTocColor}%
+ \dd@DingToc\space}\hyperlink{#3}{\web@title}%
+ \fi
+ }%
+ \else
+ \makebox[0pt][r]{\makebox[\@tempdima][l]%
+ {\hyperlink{#3}{\numberline\web@finalDot}}}\web@title
+ \fi}\endgraf
+}%
+\def\web@toc@subsubsection#1#2#3{%
+ \def\numberline{\strut$\bullet$}%
+ \setlength{\@tempdimb}{\ifx\isChapter\web@YES
+ \parindent+\web@subsubSecIndent\else\web@subsubSecIndent\fi}%
+ \leftskip\@tempdimb\noindent\unskip\mbox{}\penalty-50
+ \@ifundefined{ddd@DingToc}{}{%
+ \if\aeb@use@section@numbers0\relax\ifx\ddd@DingToc\@empty\else
+ \def\numberline{\color{\ddd@DingTocColor}\strut\ddd@DingToc}%
+\fi\fi}\hyperlink{#3}{\numberline}~\web@title\
+}%
+\let\web@textTemplate\@empty
+\newcommand{\@AddToTextTemplate}{\g@addto@macro\web@textTemplate}
+\newcommand{\template}[2][]
+{%
+ \ifweb@allowtemplates
+ \def\web@argi{#1}\ifx\web@argi\@empty
+ \xdef\web@template@opt@args{\web@addtotemplateArgs}%
+ \else\xdef\web@template@opt@args{\web@addtotemplateArgs,#1}%
+ \fi\gdef\web@template{#2}%
+ \fi
+}
+\let\web@template\@empty
+\def\addtotemplateArgs#1{\gdef\web@addtotemplateArgs{#1}}
+\def\cleartemplateArgs{\global\let\web@addtotemplateArgs=\@empty}
+\let\web@addtotemplateArgs\@empty
+\let\text@scaletype\@empty
+\newcommand{\textBgColor}[1]{\gdef\web@textBgColor{#1}}
+\let\web@textBgColor\@empty
+\let\listAddToTemplates\@empty
+\newcommand{\AddToTemplate}[1]
+{%
+ \global\w@csarg\let{eqTmpl#1}\web@YES
+ {\toks@=\expandafter{\listAddToTemplates}%
+ \xdef\listAddToTemplates{\the\toks@\noexpand\\{#1}}}%
+ \ifweb@allowtemplates
+ \@AddToTextTemplate{%
+ \w@csarg\ifx{eqTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@textX,0){\@nameuse{#1}}%
+ \fi
+ }%
+ \else
+ \w@csarg\ifx{#1}\BGColorAndGraphic
+ \@AddToTextTemplate{%
+ \w@csarg\ifx{eqTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@textX,0){\@nameuse{#1}}%
+ \fi
+ }%
+ \fi
+ \w@csarg\ifx{#1}\BGColorAndGraphicFullWidth
+ \@AddToTextTemplate{%
+ \w@csarg\ifx{eqTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@textX,0){\@nameuse{#1}}%
+ \fi
+ }%
+ \fi
+ \fi
+}
+\newcommand\placeTemplateInLayer[2][webTextBG]{%
+ \@ifpackageloaded{aeb_pro}
+ {\@ifundefined{xBld}{\PackageWarning{web}
+ {The uselayers option
+ of aeb_pro is\MessageBreak required with
+ \string\placeTemplateInLayer}}
+ {\def\b@webTextLayer{\xBld[#2]{#1}}%
+ \def\e@webTextLayer{\eBld}}}%
+ {\PackageWarning{web}{\string\placeTemplateInLayer\space
+ requires the\MessageBreak aeb_pro package}}%
+}
+\let\b@webTextLayer\@empty \let\e@webTextLayer\@empty
+\newcommand{\BGColorAndGraphic}{%
+ \b@webTextLayer\web@colorbox@w@transparency{\web@textBgColor}%
+ {%
+ \parbox[b][\paperheight]{\textscreenwidth}%
+ {%
+ \ifx\web@template\@empty
+ \hfill\vfill
+ \else
+ \hfuzz=1pt\vfuzz=1pt\expandafter
+ \includegraphics\expandafter[\web@template@opt@args,%
+ width=\textscreenwidth,height=\paperheight]%
+ {\web@template}
+ \fi
+ }%
+ }\e@webTextLayer
+}
+\AddToTemplate{BGColorAndGraphic}
+\let\web@panelTemplate\@empty
+\newcommand{\@AddToPanelTemplate}{\g@addto@macro\web@panelTemplate}
+\let\listAddToPanelTemplates=\@empty
+\newcommand{\AddToPanelTemplate}[1]
+{%
+ \global\w@csarg\let{eqPanTmpl#1}\web@YES
+ {\toks@=\expandafter{\listAddToPanelTemplates}%
+ \xdef\listAddToPanelTemplates{\the\toks@\noexpand\\{#1}}}%
+ \ifweb@allowtemplates
+ \@AddToPanelTemplate{%
+ \w@csarg\ifx{eqPanTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@panelX,0){\@nameuse{#1}}\fi
+ }%
+ \else
+ \w@csarg\ifx{#1}\stdPanelBG
+ \@AddToPanelTemplate{%
+ \w@csarg\ifx{eqPanTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@panelX,0){\@nameuse{#1}}\fi
+ }%
+ \fi
+ \w@csarg\ifx{#1}\stdbldpanel
+ \@AddToPanelTemplate{%
+ \w@csarg\ifx{eqPanTmpl#1}\web@YES
+ \fboxsep=0pt\setlength{\unitlength}{1pt}%
+ \put(\@panelX,0){\@nameuse{#1}}\fi
+ }%
+ \fi
+ \fi
+}
+\newcommand{\paneltemplate}[2][]
+{%
+ \ifweb@allowtemplates\def\web@argi{#1}%
+ \ifx\web@argi\@empty
+ \edef\web@paneltemplate@opt@args{%
+ \web@addtopaneltemplateArgs}%
+ \else
+ \edef\web@paneltemplate@opt@args{%
+ \web@addtopaneltemplateArgs,#1}%
+ \fi\gdef\web@paneltemplate{#2}%
+ \fi
+}
+\let\web@paneltemplate\@empty
+\def\addtopaneltemplateArgs#1{\gdef\web@addtopaneltemplateArgs{#1}}
+\def\clearpaneltemplateArgs{%
+ \global\let\web@addtopaneltemplateArgs=\@empty}
+\let\web@addtopaneltemplateArgs=\@empty
+\let\panel@scaletype\@empty
+\newcommand\panelsep[1]{\bgroup
+ \setlength\@tempdima{#1}%
+ \xdef\@panelsep{\the\@tempdima}\egroup}
+\panelsep{10bp}
+\def\panelSep{\@panelsep}
+\newcommand{\panelwidth}[1]{%
+ \let\web@next\relax
+ \iftemplatesforpaper\else\ifnum\@panelconfig>0
+ \ifnum\@panelconfig=1 % left panel
+ \ifx\web@layout\web@YES
+ \addtolength{\textwidth}{\@panelwidth}%
+ \addtolength{\textwidth}{\@Rightmargin}%
+ \fi
+ \addtolength{\textwidth}{\@panelsep}%
+ \addtolength{\oddsidemargin}{-\@panelsep}%
+ \addtolength{\evensidemargin}{-\@panelsep}%
+ \addtolength{\textscreenwidth}{\@panelwidth}%
+ \fi
+ \ifnum\@panelconfig=2 % panel right
+ \ifx\web@layout\web@YES
+ \addtolength{\textwidth}{\@panelwidth}%
+ \addtolength{\textwidth}{\@Leftmargin}%
+ \fi
+ \addtolength{\textwidth}{\@panelsep}%
+ \addtolength{\textscreenwidth}{\@panelwidth}%
+ \fi
+ \setlength{\@panelwidth}{#1}%
+ \ifdim\@panelwidth<\web@minpanelwidth
+ \setlength{\@panelwidth}{\web@minpanelwidth}\fi
+ \def\web@next{\InitLayout}%
+ \fi\fi\web@next
+}
+\newcommand{\panelBgColor}[1]{\gdef\web@panelBgColor{#1}}
+\let\web@panelBgColor\@empty
+\newcommand\placePanelTemplateInLayer[2][webPanelBG]{%
+ \@ifpackageloaded{aeb_pro}
+ {\@ifundefined{xBld}{\PackageWarning{web}
+ {The uselayers option
+ of aeb_pro is\MessageBreak required with
+ \string\placePanelTemplateInLayer}}
+ {\def\b@webPanelLayer{\xBld[#2]{#1}}%
+ \def\e@webPanelLayer{\eBld}}}%
+ {\PackageWarning{web}{\string\placePanelTemplateInLayer\space
+ requires the\MessageBreak aeb_pro package}}%
+}
+\let\b@webPanelLayer\@empty \let\e@webPanelLayer\@empty
+\newcommand\stdPanelBG
+{%
+ \b@webPanelLayer\web@colorbox@w@transparency{\web@panelBgColor}%
+ {\parbox[b][\paperheight]{\@panelwidth}%
+ {\ifx\web@paneltemplate\@empty\hfill\vfill\else
+ \hfuzz=1pt\vfuzz=1pt\expandafter
+ \includegraphics\expandafter[\web@paneltemplate@opt@args,%
+ width=\@panelwidth,height=\paperheight]%
+ {\web@paneltemplate}\fi}}\e@webPanelLayer
+}
+\AddToPanelTemplate{stdPanelBG}
+\newcommand{\buildpanel}[1]
+{%
+ \gdef\stdbldpanel
+ {%
+ \parbox[b][\paperheight]{\@panelwidth}%
+ {%
+ \normalsfcodes\normalfont\normalsize
+ \spaceskip=0pt\xspaceskip=0pt
+ \par\medskip\vfil
+ \centering#1%
+ \par\medskip\vfil
+ }%
+ }%
+}
+\let\stdbldpanel\@empty
+\AddToPanelTemplate{stdbldpanel}
+\newcommand{\useStandardPanel}{%
+ \buildpanel{%
+ \web@panel@top
+ \par\vspace{\stretch{1}}%
+ \web@panel@middle
+ \par\vspace{\stretch{1}}%
+ \web@panel@bottom
+ }%
+}
+\newcommand{\panelTop}[1]{\def\web@panel@top{#1}}
+\panelTop{}
+\newcommand{\panelMiddle}[1]{\def\web@panel@middle{#1}}
+\panelMiddle{}
+\newcommand{\panelBottom}[1]{\def\web@panel@bottom{#1}}
+\panelBottom{\panelNaviGroup}
+\newcommand{\ClearTextTemplate}
+{%
+ \global\let\web@textBgColor\@empty
+ \global\let\web@template\@empty
+}
+\newcommand{\ClearPanelTemplate}
+{%
+ \global\let\web@panelBgColor\@empty
+ \global\let\web@paneltemplate\@empty
+}
+\newcommand{\ClearBuildPanel}
+ {\global\let\stdbldpanel\@empty}
+
+\newcommand{\ClearAllTemplates}
+{%
+ \ClearTextTemplate
+ \ClearPanelTemplate
+}
+\newcommand{\ClearTextTemplateBuffer}
+ {\global\let\web@textTemplate\@empty}
+\newcommand{\ClearPanelTemplateBuffer}
+ {\global\let\web@panelTemplate\@empty}
+\newcommand{\saveElements}[1]
+{%
+ \begingroup
+ \global\w@csarg\let{web@SaveTmpls#1}\@empty
+ \toks@={}%
+ \def\web@addtoSaveToks##1{%
+ \edef\web@let{\global\expandafter
+ \let\expandafter\noexpand\csname#1##1\endcsname=%
+ \expandafter\noexpand\csname##1\endcsname}%
+ \web@let
+ \edef\web@SaveTmpls{\the\toks@\noexpand\\{##1}%
+ \expandafter\noexpand\csname#1##1\endcsname}%
+ \toks@=\expandafter{\web@SaveTmpls}%
+ }%
+ \web@addtoSaveToks{web@textBgColor}%
+ \web@addtoSaveToks{web@template}%
+ \web@addtoSaveToks{stdbldpanel}%
+ \web@addtoSaveToks{web@panelBgColor}%
+ \web@addtoSaveToks{web@paneltemplate}%
+ \w@csarg\xdef{web@SaveTmpls#1}{\the\toks@}%
+ \endgroup
+}
+\newcommand{\saveClearElements}[1]{%
+ \saveElements{#1}\ClearAllTemplates\ClearBuildPanel
+}
+\newcommand{\restoreElements}[1]{%
+ \ClearAllTemplates\ClearBuildPanel
+ \begingroup
+ \toks@=\expandafter{\csname web@SaveTmpls#1\endcsname}%
+ \def\\##1##2{\global\w@csarg\let{##1}=##2}\the\toks@
+ \endgroup
+}
+\newcommand{\disableScreens}[1]
+{%
+ \begingroup
+ \toks@=\expandafter{\listAddToTemplates}%
+ \toks2={}%
+ \def\\##1{\w@csarg\ifx{eqTmpl##1}\web@YES
+ \disableTemplate{##1}%
+ \xdef\web@saveAddTo{\the\toks2 \noexpand\\{##1}}%
+ \toks2=\expandafter{\web@saveAddTo}\fi}%
+ \the\toks@
+ \endgroup
+ \w@csarg\let{web@DisabledTmpls#1}\web@saveAddTo
+}
+\newcommand{\restoreScreens}[1]
+{%
+ \begingroup
+ \toks@=\expandafter{\csname web@DisabledTmpls#1\endcsname}%
+ \def\\##1{\enableTemplate{##1}}\the\toks@
+ \endgroup
+}
+\newcommand{\disablePanels}[1]
+{%
+ \begingroup
+ \toks@ = \expandafter{\listAddToPanelTemplates}%
+ \toks2 = {}%
+ \def\\##1{\w@csarg\ifx{eqPanTmpl##1}\web@YES
+ \disablePanelTemplate{##1}%
+ \xdef\web@saveAddTo{\the\toks2 \noexpand\\{##1}}%
+ \toks2 =\expandafter{\web@saveAddTo}\fi}%
+ \the\toks@
+ \endgroup
+ \global\w@csarg\let{web@DisabledPanelTmpls#1}\web@saveAddTo
+}
+\newcommand{\restorePanels}[1]
+{%
+ \begingroup
+ \toks@=\expandafter{\csname web@DisabledPanelTmpls#1\endcsname}%
+ \def\\##1{\enablePanelTemplate{##1}}\the\toks@
+ \endgroup
+}
+\newcommand{\disableTemplate}[1]{{%
+ \global\w@csarg\let{eqTmpl#1}\web@NO}}
+\newcommand{\enableTemplate}[1]{{%
+ \global\w@csarg\let{eqTmpl#1}\web@YES}}
+\newcommand{\disablePanelTemplate}[1]{{%
+ \global\w@csarg\let{eqPanTmpl#1}\web@NO}}
+\newcommand{\enablePanelTemplate}[1]{{%
+ \global\w@csarg\let{eqPanTmpl#1}\web@YES}}
+\let\fullscreenwidthadj\@empty
+\def\web@leftMargAdj{0pt}
+\def\web@rightMargAdj{0pt}
+\def\calculatefullwidth{%
+ \ifeqforpaper
+ \let\fullscreenwidthadj\@empty
+ \else
+ \ifnum\@panelconfig=1\relax % leftpanel
+ \bgroup
+ \setlength{\@tempdima}{-\@panelwidth-\@panelsep+\@Leftmargin}%
+ \xdef\web@leftMargAdj{\the\@tempdima}%
+ \setlength{\@tempdima}{-\@panelwidth-\@panelsep+\@Rightmargin}%
+ \xdef\web@rightMargAdj{\the\@tempdima}%
+ \egroup
+ \def\fullscreenwidthadj{\hspace{\web@leftMargAdj}}%
+ \fi
+ \fi
+}
+\newcommand{\makeFullwidthhead}{%
+ \global\let\web@save@oddhead\@oddhead
+ \renewcommand{\@oddhead}{\fullscreenwidthadj
+ \hbox to\fullscreenwidth{\normalfont\footnotesize
+ \web@headerhook\web@lhead\hfil\web@chead\hfil
+ \web@rightheader}\hss}%
+}
+\newcommand{\restoreSavedHead}{%
+ \global\let\@oddhead\web@save@oddhead
+ \let\web@save@oddhead\@empty
+}
+\def\webNotPaneledWarning{%
+ The Fullwidthtext environment is valid only\MessageBreak
+ for a paneled document, ignoring this\MessageBreak
+ environment}
+\newenvironment{Fullwidthtext}{%
+ \ifnum\@panelconfig=0\relax
+ \PackageWarning{web}{\webNotPaneledWarning}%
+ \let\web@next\relax
+ \else
+ \def\web@next{%
+ \enableTemplate{BGColorAndGraphicFullWidth}%
+ \list{}{%
+ \setlength{\textwidth}{\fullscreenwidth}%
+ \setlength{\linewidth}{\fullscreenwidth}%
+ \setlength{\itemindent}{0pt}\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{0pt}\setlength{\parsep}{0pt}%
+ \setlength{\listparindent}{\parindent}%
+ \setlength{\leftmargin}{\web@leftMargAdj}%
+ \setlength{\rightmargin}{-\web@rightMargAdj}%
+ }\item\relax}%
+ \fi\web@next
+}{%
+ \ifnum\@panelconfig=0\relax\let\web@next\relax\else
+ \def\web@next{\endlist\newpage
+ \disableTemplate{BGColorAndGraphicFullWidth}}%
+ \fi\web@next
+}
+\newcommand{\pushToFullWidthPage}{%
+ \ifnum\@panelconfig>0\relax
+ \disableScreens{gofullwidth}%
+ \disablePanels{gofullwidth}%
+ \makeFullwidthhead
+ \let\web@save@footwrapper\webfootwrapper
+ \def\webfootwrapper{\fullscreenwidthadj
+ \makebox[\fullscreenwidth]}%
+ \fi
+ \begin{Fullwidthtext}
+}
+\newcommand{\popFromFullWidthPage}{%
+ \end{Fullwidthtext}
+ \ifnum\@panelconfig>0\relax
+ \restoreScreens{gofullwidth}%
+ \restorePanels{gofullwidth}%
+ \restoreSavedHead
+ \let\webfootwrapper\web@save@footwrapper
+ \fi
+}
+\def\addtofullwidthtemplateArgs#1{%
+ \gdef\web@addtofullwidthtemplateArgs{#1}}
+\def\clearfullwidthtemplateArgs{%
+ \global\let\web@addtofullwidthtemplateArgs\@empty}
+\let\web@addtofullwidthtemplateArgs\@empty
+\newcommand{\fullwidthBgColor}[1]{\gdef\web@fullwidthBgColor{#1}}
+\let\web@fullwidthBgColor\@empty
+\let\web@fullwidthtemplate\@empty
+\newcommand{\fullwidthtemplate}[2][]
+{%
+ \ifweb@allowtemplates
+ \def\web@arg{#1}\ifx\web@argi\@empty
+ \xdef\web@fullwidthtemplate@opt@args
+ {\web@addtofullwidthtemplateArgs}%
+ \else
+ \xdef\web@fullwidthtemplate@opt@args
+ {\web@addtofullwidthtemplateArgs,#1}%
+ \fi\gdef\web@fullwidthtemplate{#2}%
+ \fi
+}
+\newcommand\BGColorAndGraphicFullWidth
+{%
+ \put(-\@textX,0){%
+ \web@colorbox@w@transparency{\web@fullwidthBgColor}%
+ {%
+ \parbox[b][\paperheight]{\paperwidth}%
+ {%
+ \ifx\web@fullwidthtemplate\@empty
+ \hfill\vfill
+ \else
+ \hfuzz=1pt\vfuzz=1pt
+ \expandafter\includegraphics\expandafter
+ [\web@fullwidthtemplate@opt@args,%
+ width=\paperwidth,height=\paperheight]%
+ {\web@fullwidthtemplate}%
+ \fi
+ }%
+ }%
+ }%
+}
+\AddToTemplate{BGColorAndGraphicFullWidth}
+\disableTemplate{BGColorAndGraphicFullWidth}
+\ifnum\@usetemplates>0
+ \ifnum\@panelconfig>0
+ \AtBeginDocument{%
+ \AddToShipoutPicture{\web@textTemplate\web@panelTemplate}}
+ \else
+ \AtBeginDocument{\AddToShipoutPicture{\web@textTemplate}}
+ \fi
+\fi
+\raggedbottom
+\ifx\webpro@loaded\web@YES\expandafter\loadwebpro\fi
+\endinput
+%%
+%% End of file `web.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/webpro.def b/texmf-dist/tex/latex/acrotex/webpro.def
index dcd4a2f9..5043dbae 100644
--- a/texmf-dist/tex/latex/acrotex/webpro.def
+++ b/texmf-dist/tex/latex/acrotex/webpro.def
@@ -1,876 +1,876 @@
-%%
-%% This is file `webpro.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% web.dtx (with options: `copyright,webpro')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% History: Noel Vaillant began developing a better web.sty
-%% based on my earlier published web.sty. Many thanks
-%% to him for starting me off.
-%%---------------------------------------------------------
-\RequirePackage{pifont}
-\newcommand{\DeclareDocInfo}[1]{\setkeys{aebDocInfo}{#1}%
- \ifx\web@talkdate@value\@empty\else\let\webversion\webtalkdate\fi}
-\@onlypreamble\DeclareDocInfo
-\define@key{aebDocInfo}{title}[]{\title{#1}}
-\define@key{aebDocInfo}{author}[]{\author{#1}}
-\define@key{aebDocInfo}{university}[]{\university{#1}}
-\define@key{aebDocInfo}{email}[]{\email{#1}}
-\define@key{aebDocInfo}{talksite}[]{\talksite{#1}}
-\define@key{aebDocInfo}{talkdate}[]{\talkdate{#1}}
-\define@key{aebDocInfo}{talkdateLabel}[Presented:]{\talkdateLabel{#1}}
-\define@key{aebDocInfo}{version}[]{\version{#1}}
-\define@key{aebDocInfo}{versionLabel}[Version]{\versionLabel{#1}}
-\define@key{aebDocInfo}{subject}[]{\subject{#1}}
-\define@key{aebDocInfo}{keywords}[]{\keywords{#1}}
-\define@key{aebDocInfo}{copyrightyears}[]{\copyrightyears{#1}}
-\define@key{aebDocInfo}{prepared}[]{\prepared{#1}}
-\define@key{aebDocInfo}{preparedLabel}[]{\preparedLabel{#1}}
-\define@key{aebDocInfo}{Title}[]%
- {\@ifpackageloaded{aebxmp}{\Title{#1}}{}}
-\define@key{aebDocInfo}{authors}[]%
- {\@ifpackageloaded{aebxmp}{\Authors{#1}}{}}
-\define@key{aebDocInfo}{Subject}[]%
- {\@ifpackageloaded{aebxmp}{\Subject{#1}}{\subject{#1}}}
-\define@key{aebDocInfo}{Keywords}[]%
- {\@ifpackageloaded{aebxmp}{\Keywords{#1}}{\keywords{#1}}}
-\define@key{aebDocInfo}{lang}[]%
- {\@ifpackageloaded{aebxmp}{\metaLang{#1}}{}}
-\define@key{aebDocInfo}{copyrightStatus}[]%
- {\@ifpackageloaded{aebxmp}{\copyrightStatus{#1}}{}}
-\define@key{aebDocInfo}{copyrightNotice}[]%
- {\@ifpackageloaded{aebxmp}{\copyrightNotice{#1}}{}}
-\define@key{aebDocInfo}{copyrightInfoURL}[]%
- {\@ifpackageloaded{aebxmp}{\copyrightInfoURL{#1}}{}}
-\define@key{aebDocInfo}{authortitle}[]%
- {\@ifpackageloaded{aebxmp}{\authortitle{#1}}{}}
-\define@key{aebDocInfo}{descriptionwriter}[]%
- {\@ifpackageloaded{aebxmp}{\descriptionwriter{#1}}{}}
-\define@key{aebDocInfo}{customProperties}[]%
- {\@ifpackageloaded{aebxmp}{\customProperties{#1}}{}}
-\newcommand{\DeclarePageLayout}[1]{\save@prtscr
- \setkeys{web@pl}{topmargin,headheight,marginparsep,%
- marginparwidth,marginparpush,webfootskip}%
- \protected@edef\web@temp{\noexpand\setkeys{web@pl}{#1}}%
- \web@temp\save@prtscr
- \ifx\web@pl@screensize\@empty\else
- \expandafter\screensize\web@pl@screensize\fi
- \ifx\web@pl@margins\@empty\else
- \expandafter\margins\web@pl@margins\fi
- \ifeqforpaper\else
- \ifdim\@Leftmargin<\@Rightmargin
- \ifdim\marginparwidth>\@Leftmargin
- \setlength{\marginparwidth}
- {\@Leftmargin-2\marginparsep}%
- \fi
- \else
- \ifdim\marginparwidth>\@Rightmargin
- \setlength{\marginparwidth}
- {\@Rightmargin-2\marginparsep}%
- \fi
- \fi
- \fi
- \ifeqforpaper\else
- \ifdim\@Bottommargin<\web@footskip\relax\PackageError{web}{%
- Error in the value of the webfootskip key\MessageBreak
- of the \string\DeclarePageLayout\space command.\MessageBreak
- The bottom margin must be larger then\MessageBreak
- the value of webfootskip}{%
- Increase the size of the bottom margin,\MessageBreak
- or decrease the value of webfootskip.}\else
- \fi
- \fi
-}
-\@onlypreamble\DeclarePageLayout
-\define@key{web@pl}{screensize}[]{\def\web@pl@screensize{#1}}
-\let\web@pl@screensize\@empty
-\define@key{web@pl}{margins}[]{\def\web@pl@margins{#1}}
-\let\web@pl@margins\@empty
-\define@choicekey+{web@pl}{design}[\val\nr]{designi,designii,%
- designiii,designiv,designv,designvi,designvii,designviii,designix}{%
- \ifcase\nr\relax
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{3.736in}{4.67in}\or
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{5in}\or
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{5in}{6in}\or
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4in}{5in}\or
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{6in}\or
- \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.17in}{4.67in}\or
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{7.5in}{10in}\or
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6.67in}\or
- \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6in}\fi
- }{\PackageWarning{webpro}{%
- Bad choice for design, use designi--designvix. Try again}}
-\define@choicekey+{web@pl}{screensizeOf}[\val\nr]{designi,designii,%
- designiii,designiv,designv,designvi,designvii,designviii,designix}{%
- \ifcase\nr\relax
- \screensize{3.736in}{4.67in}\or
- \screensize{4.5in}{5in}\or
- \screensize{5in}{6in}\or
- \screensize{4in}{5in}\or
- \screensize{4.5in}{6in}\or
- \screensize{4.17in}{4.67in}\or
- \screensize{7.5in}{10in}\or
- \screensize{3.75in}{6.67in}\or
- \screensize{3.75in}{6in}\fi
- }{\PackageWarning{webpro}{%
- Bad choice for screensizeOf, use designi--designvix. Try again}}
-\define@key{web@pl}{headheight}[8pt]{\def\websetheadheight{#1}}
-\define@key{web@pl}{topmargin}[\prtscr{\the\topmargin}{8pt}]{%
- \edef\web@argi{#1}\ifx\web@argi\@empty
- \edef\web@argi{\prtscr{\the\topmargin}{8pt}}\fi
- \ifeqforpaper
- \setlength{\topmargin}{\web@argi}%
- \else
- \setlength{\web@Topmargin}{\web@argi}%
- \fi}
-\define@key{web@pl}{textwidth}[345pt]{\setlength{\textwidth}{#1}}
-\define@key{web@pl}{textheight}[43\baselineskip]%
- {\setlength{\textheight}{#1}}
-\define@key{web@pl}{oddsidemargin}[63pt]%
- {\setlength{\oddsidemargin}{#1}}
-\define@key{web@pl}{evensidemargin}[63pt]%
- {\setlength{\evensidemargin}{#1}}
-\define@key{web@pl}{marginparsep}[\prtscr{\the\marginparsep}{11pt}]{%
- \edef\web@argi{#1}\ifx\web@argi\@empty
- \edef\web@argi{\prtscr{\the\marginparsep}{11pt}}\fi
- \setlength{\marginparsep}{\web@argi}}
-\define@key{web@pl}{marginparwidth}%
- [\prtscr{\the\marginparwidth}{.25in}]{%
- \edef\web@argi{#1}\ifx\web@argi\@empty
- \edef\web@argi{\prtscr{\the\marginparwidth}{.25in}}\fi
- \setlength{\marginparwidth}{\web@argi}}
-\define@key{web@pl}{marginparpush}[5pt]{%
- \setlength{\marginparpush}{#1}}
-\define@key{web@pl}{webfootskip}[4pt]{%
- \def\web@footskip{#1}}
-\define@key{web@pl}{footskip}[30pt]{\setlength{\footskip}{#1}}
-\define@key{web@pl}{panelwidth}[1in]{\panelwidth{#1}}
-\define@key{web@pl}{panelsep}[10pt]{\panelsep{#1}}
-\define@key{web@pl}{additionalheadsep}[0pt]%
- {\def\web@additionalheadsep{#1}}
-\renewcommand{\topTitlePage}
-{%
- \vglue\web@aboveTopTitleSkip
- \noindent\makebox[\linewidth][\halignuniversity]{\parbox{%
- \hproportionwebuniversity\linewidth}%
- {\sectionUniversity{\webuniversity}}}%
- \par\ifeqforpaper\else\minimumskip\fi
- \vspace{\stretch{1}}%
- \noindent\makebox[\linewidth][\haligntitle]%
- {\parbox{\hproportionwebtitle\linewidth}%
- {\sectionTitle{\webtitle}}}%
- \par\ifeqforpaper\vspace{2\baselineskip}\else
- \minimumskip\vspace{\stretch{1}}\fi
- \noindent\makebox[\linewidth][\halignauthor]%
- {\parbox{\hproportionwebauthor\linewidth}%
- {\sectionAuthor{\webauthor}}}
- \par\ifeqforpaper\vspace{2\baselineskip}\else
- \minimumskip\vspace{\stretch{1}}\fi
-}
-\newcommand{\topTitlePageProportion}[1]{\def\titleauthorproportion{#1}}
-\renewcommand{\titlepageTrailer}
-{%
- \webtpTrailerWrapper{\makebox[\web@tp@linewidth]{%
- \parbox{\web@tp@linewidth}{%
- \ifx\tpTrailer@textcolor\@empty\else
- \color{\tpTrailer@textcolor}\fi\web@tpTrailer@formatting
- \maketitle@trailer@ul\hfill\maketitle@trailer@ur\\
- \maketitle@trailer@ll\hfill\maketitle@trailer@lr
- }}}%
-}
-\def\maketitle@trailer@ul{\web@copyright\ \web@copyright@symbol\
- \webcopyrightyears\ \thewebemail}
-\def\maketitle@trailer@ll{\aeb@Prepared}
-\def\maketitle@trailer@ur{\aeb@talksite}
-\def\maketitle@trailer@lr{\webversion}
-\let\webtpTrailerWrapper\relax
-\let\web@tpTrailerBgColor\@empty
-\let\web@tpTrailerBorderColor\@empty
-\let\tpTrailer@textcolor\@empty
-\let\web@tpTrailer@graphic\@empty
-\let\web@tpTrailer@namedgraphic\@empty
-\let\web@tpTrailer@formatting\@empty
-\def\web@tpTrailer@raise{0pt}
-\def\web@tp@linewidth{\linewidth}
-\define@key{tpTrailer}{ul}{\def\maketitle@trailer@ul{#1}}
-\define@key{tpTrailer}{ll}{\def\maketitle@trailer@ll{#1}}
-\define@key{tpTrailer}{ur}{\def\maketitle@trailer@ur{#1}}
-\define@key{tpTrailer}{lr}{\def\maketitle@trailer@lr{#1}}
-\define@key{tpTrailer}{textColor}{\def\tpTrailer@textcolor{#1}}
-\define@key{tpTrailer}{bgColor}{\def\web@tpTrailerBgColor{#1}}
-\define@key{tpTrailer}{borderColor}{\def\web@tpTrailerBorderColor{#1}}
-\define@key{tpTrailer}{fboxsep}{\def\web@tpTrailerfboxsep{#1}}
-\define@key{tpTrailer}{fboxrule}{\def\web@tpTrailerfboxrule{#1}}
-\define@key{tpTrailer}{graphic}{\def\web@tpTrailer@graphic{#1}}
-\define@key{tpTrailer}{namedgraphic}{%
- \def\web@tpTrailer@namedgraphic{#1}}
-\define@key{tpTrailer}{fontSize}{\renewcommand{\trailerFontSize}{#1}}
-\define@key{tpTrailer}{formatting}{\def\web@tpTrailer@formatting{#1}}
-\define@key{tpTrailer}{raise}{\def\web@tpTrailer@raise{#1}}
-\newcommand{\DesignTitlePageTrailer}[1]
-{%
- \setkeys{tpTrailer}{fboxsep=3pt,fboxrule=.4pt}%
- \setkeys{tpTrailer}{#1}%
- \setlength{\fboxsep}{\web@tpTrailerfboxsep}%
- \setlength{\fboxrule}{\web@tpTrailerfboxrule}%
- \let\web@tp@graphic\web@NO
- \ifx\web@tpTrailer@graphic\@empty
- \ifx\web@tpTrailer@namedgraphic\@empty\else
- \let\web@tp@graphic\web@YES\fi
- \else\let\web@tp@graphic\web@YES\fi
- \ifx\web@tp@graphic\web@NO\relax
- \ifx\web@tpTrailerBgColor\@empty
- \def\grfbox@spec##1{##1}%
- \else
- \ifx\web@tpTrailerBorderColor\@empty
- \def\web@tp@linewidth{\linewidth-2\fboxsep}%
- \def\grfbox@spec{\colorbox{\web@tpTrailerBgColor}}%
- \else
- \def\web@tp@linewidth{%
- \linewidth-2\fboxsep-2\fboxrule}%
- \def\grfbox@spec{\fcolorbox{\web@tpTrailerBorderColor}%
- {\web@tpTrailerBgColor}}%
- \fi
- \fi
- \def\webtpTrailerWrapper##1{\smash{\raisebox
- {\web@tpTrailer@raise}{\grfbox@spec{##1}}}}%
- \else
- \@ifundefined{graphicxbox}{\begingroup
- \gdef\webtpTrailerWrapper##1{%
- \edef\web@tmp@opt{\ifx\web@tpTrailer@namedgraphic\@empty\else
- name=\web@tpTrailer@namedgraphic,\fi}%
- \def\web@tp@linewidth{\linewidth-2\fboxsep}%
- \setbox0=\hbox{##1}%
- \noindent\makebox[0pt][l]{%
- \smash{\raisebox{-\dp0-\fboxsep+\web@tpTrailer@raise}{%
- \expandafter\includegraphics\expandafter[\web@tmp@opt
- width=\wd0+2\fboxsep,%
- height=\dp0+\ht0+2\fboxsep]{\web@tpTrailer@graphic}}%
- }}\kern\fboxsep\smash{%
- \raisebox{\web@tpTrailer@raise}{\unhbox0\relax}}%
- }%
- \endgroup}{%
- \xdef\grfbox@spec{%
- \ifx\web@tpTrailerBorderColor\@empty
- \noexpand\graphicxbox\else
- \noexpand\fgraphicxbox{\web@tpTrailerBorderColor}\fi
- \ifx\web@tpTrailer@namedgraphic\@empty\else
- [name=\web@tpTrailer@namedgraphic]\fi}%
- \gdef\webtpTrailerWrapper##1{%
- \edef\web@tp@linewidth{%
- \linewidth-2\fboxsep\ifx\web@tpTrailerBorderColor\@empty
- \else-2\fboxrule\fi}%
- \smash{\raisebox{\web@tpTrailer@raise}{%
- \grfbox@spec{\web@tpTrailer@graphic}{##1}}}}%
- }%
- \fi
-}
-\renewcommand{\web@maketitle}
-{%
- \maketitlepreamble
- \ifeqforpaper\vspace*{2\baselineskip}\else
- \vbox to\titleauthorproportion\textheight\bgroup\fi
- \topTitlePage
- \ifeqforpaper\else\egroup\fi % end of \vbox for title and author
- \begingroup\par
- \aboveOPMvspace
- \noindent\parbox{\linewidth}{\optionalpagematter}%
- \par\endgroup
- \par\vspace{\stretch{1}}
- \ifx\web@directory@option\web@YES\web@directory@hook\webdirectory\fi
- \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}
- \vfill\noindent\begingroup\trailerFontSize\titlepageTrailer
- \par\endgroup
- \maketitlepostamble
-}
-\let\web@maketitle@save\maketitle
-\let\maketitle\web@maketitle
-\def\preparedLabel#1{\def\web@revision{#1}}
-\preparedLabel{Prepared:}
-\def\prepared#1{\def\argi{#1}\ifx\argi\@empty
- \else\def\aeb@prepared{#1}\fi}
-\def\aeb@prepared{\@date}
-\def\aeb@Prepared{\web@revision\ \aeb@prepared}
-\def\talkdate#1{\gdef\web@talkdate@value{#1}%
- \edef\webtalkdate{\ifx\web@talkdate@value\@empty
- \else\noexpand\web@talkdatelabel\ #1\fi}}
-\let\web@talkdate@value\@empty
-\def\talkdateLabel#1{\def\web@talkdatelabel{#1}}
-\talkdateLabel{Presented:}
-\def\talksite#1{\def\aeb@talksite{#1}}
-\talksite{}
-\define@choicekey+{aebsection}{reset}[\val\nr]{font,all}{%
- \ifcase\nr\relax
- \aeb@reset@section@fonts\or
- \aeb@reset@section@all\fi
-}{\PackageWarning{webpro}{Bad choice for reset, permissible values
- are font and all. Try again}}
-\define@choicekey+{aebsection}{type}[\val\nr]{section,subsection,%
- subsubsection,university,title,author,toc}%
-{%
- \edef\aeb@section@type{#1}%
- \edef\aeb@section@typeIndex{\nr}%
-}{}{}
-\define@key{aebsection}{special}{%
- \edef\aeb@temp@expand{%
- \noexpand\XKV@cc+[\noexpand\val\noexpand\nr]{#1}}%
- \aeb@temp@expand{shadow,framebox,colorbox,fcolorbox,frameboxfit,%
- colorboxfit,fcolorboxfit,colorboxfitrule,custom,default}%
-{%
- \ifcase\nr\relax
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@shadowHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@frameboxHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@colorboxHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@fcolorboxHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@frameboxfitHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}\aeb@colorboxfitHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}
- \aeb@fcolorboxfitHead\or
- \w@csarg\let{aeb@\aeb@section@type @special}
- \aeb@colorboxfitruleHead\or
- \edef\aeb@temp{\noexpand\def\expandafter\noexpand
- \csname aeb@\aeb@section@type @special\endcsname{\expandafter
- \noexpand\csname aeb@\aeb@section@type @customHead\endcsname}}%
- \aeb@temp\or
- \w@csarg\let{aeb@\aeb@section@type @special}\@empty\fi
-}{%
- \PackageWarning{webpro}{Bad choice for special, permissible values
- are shadow, framebox, colorbox, fcolorbox, custom and default.
- Try again}}%
-}
-\@tfor\@@tmp:={section}{subsection}{subsubsection}%
-{university}{title}{author}{toc}\do{%
- \w@csarg\let{aeb@\@@tmp @special}\@empty}
-\newcommand{\customSecHead}[1]{\def\aeb@section@customHead##1{#1}}
-\newcommand{\customSubsecHead}[1]{\def\aeb@subsection@customHead##1{#1}}
-\newcommand{\customSubsubsecHead}[1]
- {\def\aeb@subsubsection@customHead##1{#1}}
-\newcommand{\customUniversity}[1]{\def\aeb@university@customHead##1{#1}}
-\newcommand{\customTitle}[1]{\def\aeb@title@customHead##1{#1}}
-\newcommand{\customAuthor}[1]{\def\aeb@author@customHead##1{#1}}
-\newcommand{\customToc}[1]{\def\aeb@toc@customHead##1{#1}}
-\def\aeb@frameboxHead#1{%
- \begingroup
- \@tempdima=\linewidth
- \advance\@tempdima-2\fboxsep
- \advance\@tempdima-2\fboxrule
- \edef\@@aeb@sectionframecolor
- {\@nameuse{aeb@\aeb@section@type framecolor}}%
- \edef\@@aeb@sectioncolor
- {\@nameuse{aeb@\aeb@section@type color}}%
- \setbox0\vbox{\hsize=\@tempdima#1}\color{\@@aeb@sectionframecolor}%
- \framebox{\color{\@@aeb@sectioncolor}\copy0}%
- \endgroup
-}
-\def\aeb@colorboxHead#1{%
- \begingroup
- \@tempdima=\linewidth
- \advance\@tempdima-2\fboxsep
- \setbox0\vbox{\hsize=\@tempdima#1}%
- \edef\@@aeb@sectionbgcolor
- {\@nameuse{aeb@\aeb@section@type bgcolor}}%
- \colorbox{\@@aeb@sectionbgcolor}{\copy0}%
- \endgroup
-}
-\def\aeb@fcolorboxHead#1{%
- \begingroup
- \@tempdima=\linewidth
- \advance\@tempdima-2\fboxsep
- \advance\@tempdima-2\fboxrule
- \setbox0\vbox{\hsize=\@tempdima#1}%
- \edef\@@aeb@sectionbgcolor
- {\@nameuse{aeb@\aeb@section@type bgcolor}}%
- \fcolorbox{\aeb@sectionframecolor}%
- {\@@aeb@sectionbgcolor}{\copy0}
- \endgroup
-}
-\def\aeb@frameboxfitHead#1{%
- \begingroup
- \edef\@@aeb@sectionframecolor
- {\@nameuse{aeb@\aeb@section@type framecolor}}%
- \edef\@@aeb@sectioncolor
- {\@nameuse{aeb@\aeb@section@type color}}%
- \vbox{\color{\@@aeb@sectionframecolor}%
- \framebox{\color{\@@aeb@sectioncolor}#1}}%
- \endgroup
-}
-\def\aeb@colorboxfitHead#1{%
- \begingroup
- \edef\@@aeb@sectioncolor
- {\@nameuse{aeb@\aeb@section@type color}}%
- \edef\@@aeb@sectionbgcolor
- {\@nameuse{aeb@\aeb@section@type bgcolor}}%
- \vbox{\colorbox{\@@aeb@sectionbgcolor}%
- {\color{\@@aeb@sectioncolor}#1}}%
- \endgroup
-}
-\def\aeb@fcolorboxfitHead#1{%
- \begingroup
- \edef\@@aeb@sectioncolor
- {\@nameuse{aeb@\aeb@section@type color}}%
- \edef\@@aeb@sectionbgcolor
- {\@nameuse{aeb@\aeb@section@type bgcolor}}%
- \edef\@@aeb@sectionframecolor
- {\@nameuse{aeb@\aeb@section@type framecolor}}%
- \vbox{\fcolorbox{\@@aeb@sectionframecolor}{\@@aeb@sectionbgcolor}%
- {\color{\@@aeb@sectioncolor}#1}}%
- \endgroup
-}
-\def\shadowhoffset#1{\def\aeb@shadowhoffset{#1}}
-\shadowhoffset{.2ex}
-\def\shadowvoffset#1{\def\aeb@shadowvoffset{#1}}
-\shadowvoffset{-.2ex}
-\def\aeb@shadowHead#1{% dps1
- \begingroup
- \edef\@@aeb@sectionshadowcolor
- {\@nameuse{aeb@\aeb@section@type shadowcolor}}%
- \edef\@@aeb@sectioncolor
- {\@nameuse{aeb@\aeb@section@type color}}%
- \setbox0\vbox{\Shadowtrue\hsize=\linewidth #1}%
- \wd0\z@\dp0\z@\relax\raisebox{\aeb@shadowvoffset}%
- {\hbox to\z@{\kern\aeb@shadowhoffset%
- \Shadowtrue\color{\@@aeb@sectionshadowcolor}
- \box0\hss}}%
- \setbox0\vbox{\Shadowfalse\hsize=\linewidth #1}\box0
- \endgroup
-}
-\define@key{aebsection}{usefont}{%
- \w@csarg\def{aeb@\aeb@section@type @usefont}{\aeb@usefont#1}}
-\@tfor\@@tmp:={section}{subsection}{subsubsection}
-{university}{title}{author}{toc}\do{%
- \w@csarg\let{aeb@\@@tmp @usefont}\@empty}
-\def\aeb@usefont#1#2#3#4#5{\def\aeb@usefontargv{#5}%
- \ifx\aeb@usefontargv\@empty
- \def\aeb@next{\expandafter\@gobble\@gobbletwo}%
- \else
- \def\aeb@next{\expandafter\@gobbletwo\@gobbletwo}%
- \fi
- \fontencoding{#1}\fontfamily{#2}%
- \fontseries{#3}\fontshape{#4}\ifx\aeb@usefontargv\@empty\else
- \fontsize#5\fi\selectfont\aeb@next
-}
-\define@key{aebsection}{fontfamily}{%
- \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
- \aeb@temp@expand{rmfamily,sffamily,ttfamily}{%
- \w@csarg\def{aeb@\aeb@section@type @fontfamily}{\@nameuse{#1}}%
-}{\PackageWarning{webpro}{Bad choice for fontfamily, permissible values
- are rmfamily, sffamily and ttfamily. Try again}}%
-}
-\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
-{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontfamily}\aeb@defaultfamily}
-\define@key{aebsection}{fontseries}{%
- \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
- \aeb@temp@expand{bfseries,mdseries}{%
- \w@csarg\def{aeb@\aeb@section@type @fontseries}{\@nameuse{#1}}%
-}{\PackageWarning{webpro}{Bad choice for fontseries, permissible values
- are bfseries and mdseries. Try again}}%
-}
-\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
-{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontseries}\bfseries}
-\define@key{aebsection}{fontshape}{%
- \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
- \aeb@temp@expand{upshape,itshape,scshape,slshape}{%
- \w@csarg\def{aeb@\aeb@section@type @fontshape}{\@nameuse{#1}}%
-}{\PackageWarning{webpro}{Bad choice for fontshape, permissible values
- are upshape, itshape, scshape and slshape. Try again}}%
-}
-\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
-{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontshape}\upshape}
-\define@key{aebsection}{fontsize}{%
- \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
- \aeb@temp@expand{tiny,scriptsize,footnotesize,%
- small,normalsize,large,Large,LARGE,huge,Huge}{%
- \w@csarg\def{aeb@\aeb@section@type @fontsize}{\@nameuse{#1}}%
-}{\PackageWarning{webpro}{Bad choice for fontsize, permissible values
- are tiny, scriptsize, footnotesize, small, normalsize,
- large, Large, LARGE, huge and Huge. Try again}}%
-}
-\@tfor\@@tmp:={{section}{\normalsize}}{{subsection}{\normalsize}}%
-{{subsubsection}{\normalsize}}{{university}{\normalsize}}%
-{{title}{\large}}{{author}{\normalsize}}{{toc}{\small}}\do{%
- \expandafter\getargs\@@tmp
- \edef\aeb@temp{\global\noexpand
- \let\expandafter\noexpand\csname aeb@\aeb@argi @fontsize\endcsname
- \expandafter\noexpand\aeb@argii}\aeb@temp
-}
-\define@key{aebsection}{halign}{%
- \edef\aeb@temp@expand{%
- \noexpand\XKV@cc+[\noexpand\val\noexpand\nr]{#1}}%
- \aeb@temp@expand{l,c,r}{%
- \ifcase\nr\relax
- \w@csarg\let{aeb@\aeb@section@type @halign}\raggedright\or
- \w@csarg\let{aeb@\aeb@section@type @halign}\centering\or
- \w@csarg\let{aeb@\aeb@section@type @halign}\raggedleft\fi
-}{\PackageWarning{webpro}{Bad choice for halign, permissible values
- are l, c and r. Try again}}%
-}
-\@tfor\@@tmp:={\aeb@section@halign\raggedright}
-{\aeb@subsection@halign\raggedright}
-{\aeb@subsubsection@halign\raggedright}
-{\aeb@university@halign\centering}
-{\aeb@title@halign\centering}{\aeb@author@halign\centering}%
-{\aeb@toc@halign\centering}\do
-{%
- \expandafter\getargs\@@tmp
- \edef\aeb@temp{\noexpand\let\expandafter\noexpand\aeb@argi
- \expandafter\noexpand\aeb@argii}\aeb@temp
-}
-\define@key{aebsection}{ding}{\if\aeb@use@section@numbers0
- \webtoksi=\expandafter{\expandafter\protect
- \expandafter\web@sel@sec@col\expandafter{\aeb@section@type}#1\ }%
- \w@csarg\edef{aeb@\aeb@section@type Num}##1{\the\webtoksi}%
- \else\PackageWarning{webpro}{The ding key is not available with a
- section numbering system,\MessageBreak
- ignoring request for a ding.}\fi
-}
-\define@key{aebsection}{color}{%
- \w@csarg\def{aeb@\aeb@section@type color}{#1}}
-\define@key{aebsection}{ruleheight}{%
- \w@csarg\def{aeb@\aeb@section@type ruleheight}{#1}}
-\define@key{aebsection}{numdingcolor}{%
- \w@csarg\def{aeb@\aeb@section@type numdingcolor}{#1}}
-\def\aeb@sectioncolor{blue}
-\def\aeb@subsectioncolor{\aeb@sectioncolor}
-\def\aeb@subsubsectioncolor{\aeb@sectioncolor}
-\def\aeb@sectionnumdingcolor{\aeb@sectioncolor}
-\def\aeb@subsectionnumdingcolor{\aeb@sectioncolor}
-\def\aeb@subsubsectionnumdingcolor{\aeb@sectioncolor}
-\def\aeb@universitycolor{black}
-\def\aeb@universitynumdingcolor{\aeb@universitycolor}
-\def\aeb@titlecolor{blue}
-\def\aeb@titlenumdingcolor{\aeb@titlecolor}
-\def\aeb@authorcolor{black}
-\def\aeb@authornumdingcolor{\aeb@authorcolor}
-\def\aeb@toccolor{blue}
-\def\aeb@tocnumdingcolor{\aeb@toccolor}
-\define@key{aebsection}{framecolor}{%
- \w@csarg\def{aeb@\aeb@section@type framecolor}{#1}}
-\def\aeb@sectionframecolor{blue}
-\def\aeb@subsectionframecolor{blue}
-\def\aeb@subsubsectionframecolor{blue}
-\def\aeb@universityframecolor{blue}
-\def\aeb@titleframecolor{blue}
-\def\aeb@authorframecolor{blue}
-\def\aeb@tocframecolor{blue}
-\define@key{aebsection}{bgcolor}{%
- \w@csarg\def{aeb@\aeb@section@type bgcolor}{#1}}
-\def\aeb@sectionbgcolor{cornsilk}
-\def\aeb@subsectionbgcolor{cornsilk}
-\def\aeb@subsubsectionbgcolor{cornsilk}
-\def\aeb@authorbgcolor{cornsilk}
-\def\aeb@titlebgcolor{cornsilk}
-\def\aeb@authorbgcolor{cornsilk}
-\def\aeb@tocbgcolor{cornsilk}
-\define@key{aebsection}{shadowcolor}{%
- \w@csarg\def{aeb@\aeb@section@type shadowcolor}{#1}}
-\def\aeb@sectionshadowcolor{black}
-\def\aeb@subsectionshadowcolor{black}
-\def\aeb@subsubsectionshadowcolor{black}
-\def\aeb@universityshadowcolor{black}
-\def\aeb@titleshadowcolor{black}
-\def\aeb@authorshadowcolor{black}
-\def\aeb@tocshadowcolor{black}
-\define@key{aebsection}{indent}[0pt]{%
- \edef\web@argi{#1}\ifx\web@argi\@empty
- \def\web@argi{0pt}\fi
- \w@csarg\edef{aeb@\aeb@section@type @indent}{\web@argi}}
-\def\aeb@section@indent{\z@}
-\def\aeb@subsection@indent{\z@}
-\def\aeb@subsubsection@indent{\z@}
-\def\aeb@university@indent{\z@}
-\def\aeb@title@indent{\z@}
-\def\aeb@author@indent{\z@}
-\def\aeb@toc@indent{\z@}
-\define@key{aebsection}{beforeskip}{%
- \w@csarg\def{aeb@\aeb@section@type @beforeskip}{#1}}
-\def\aeb@section@beforeskip{-3ex\@plus -1ex \@minus-.2ex}
-\def\aeb@subsection@beforeskip{-2.5ex\@plus -1ex \@minus -.2ex}
-\def\aeb@subsubsection@beforeskip{-2ex\@plus -1ex \@minus -.2ex}
-\def\aeb@university@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
-\def\aeb@title@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
-\def\aeb@author@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
-\def\aeb@toc@beforeskip{-3ex\@plus -1ex \@minus-.2ex}
-\define@key{aebsection}{afterskip}{%
- \w@csarg\def{aeb@\aeb@section@type @afterskip}{#1}}
-\def\aeb@section@afterskip{1ex\@plus .2ex}
-\def\aeb@subsection@afterskip{1ex\@plus .2ex}
-\def\aeb@subsubsection@afterskip{.5ex\@plus .2ex}
-\def\aeb@university@afterskip{1ex\@plus .2ex}
-\def\aeb@title@afterskip{1ex\@plus .2ex}
-\def\aeb@author@afterskip{1ex \@plus1fill} %{1ex\@plus .2ex}
-\def\aeb@toc@afterskip{1ex\@plus .2ex}
-\define@key{aebsection}{hproportion}{%
- \w@csarg\def{hproportionweb\aeb@section@type}{#1}}
-\define@key{aebsection}{xhalign}{%
- \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
- \aeb@temp@expand{l,c,r}{%
- \w@csarg\def{halign\aeb@section@type}{#1}%
-}{\PackageWarning{webpro}{Bad choice for xhalign, permissible values
- are l, c and r. Try again}}%
-}
-\def\halignuniversity{c}
-\def\haligntitle{c}
-\def\halignauthor{c}
-\let\halignsection\relax
-\let\halignsubsection\relax
-\let\halignsubsubsection\relax
-\let\haligntoc\relax
-\define@key{aebToc}{tocName}{\tocName{#1}}
-\define@key{aebToc}{tocNameCont}{\tocNameCont{#1}}
-\def\aeb@reset@section@fonts{%
- \normalfont\normalsize
- \ifcase\aeb@section@typeIndex\relax
- \let\aeb@section@usefont\@empty
- \let\aeb@section@fontfamily\aeb@defaultfamily
- \let\aeb@section@fontseries\bfseries
- \let\aeb@section@fontshape\upshape
- \let\aeb@section@fontsize\Large
- \or
- \let\aeb@subsection@usefont\@empty
- \let\aeb@subsection@fontfamily\aeb@defaultfamily
- \let\aeb@subsection@fontseries\bfseries
- \let\aeb@subsection@fontshape\upshape
- \let\aeb@subsection@fontsize\large
- \or
- \let\aeb@subsubsection@usefont\@empty
- \let\aeb@subsubsection@fontfamily\aeb@defaultfamily
- \let\aeb@subsubsection@fontseries\bfseries
- \let\aeb@subsubsection@fontshape\upshape
- \let\aeb@subsubsection@fontsize\normalsize
- \fi
-}
-\def\aeb@reset@section@all{%
- \aeb@reset@section@fonts
- \ifcase\aeb@section@typeIndex\relax
- \let\aeb@section@halign\raggedright
- \def\aeb@sectioncolor{blue}%
- \def\aeb@sectionshadowcolor{black}%
- \let\aeb@section@special=\@empty
- \def\aeb@section@beforeskip{-3ex\@plus -1ex \@minus-.2ex}%
- \def\aeb@section@afterskip{1ex\@plus .2ex}%
- \def\aeb@sectionframecolor{blue}%
- \def\aeb@sectionframecolor{cornsilk}%
- \or
- \let\aeb@subsection@halign\raggedright
- \def\aeb@subsectioncolor{blue}%
- \def\aeb@subsectionshadowcolor{black}%
- \let\aeb@subsection@special=\@empty
- \def\aeb@subsection@beforeskip{-2.5ex\@plus-1ex \@minus-.2ex}%
- \def\aeb@subsection@afterskip{1ex\@plus .2ex}%
- \def\aeb@subsectionframecolor{blue}%
- \def\aeb@subsectionframecolor{cornsilk}%
- \or
- \let\aeb@subsubsection@halign\raggedright
- \def\aeb@subsubsectioncolor{blue}%
- \def\aeb@subsubsectionshadowcolor{black}%
- \let\aeb@subsubsection@special=\@empty
- \def\aeb@subsubsection@beforeskip{-2ex\@plus-1ex \@minus-.2ex}%
- \def\aeb@subsubsection@afterskip{1ex\@plus .2ex}%
- \def\aeb@subsubsectionframecolor{blue}%
- \def\aeb@subsubsectionframecolor{cornsilk}%
- \fi
-}
-\renewcommand{\section}{% dps1
- \renewcommand{\@seccntformat}[1]{\aeb@sectionNum{##1}}%
- \@startsection{section}{1}{\aeb@section@indent}%
- {\aeb@section@beforeskip}{\aeb@section@afterskip}%
- {\noindent\xdef\aeb@sectionpage{\the\c@page}%
- \def\aeb@section@type{section}%
- \aeb@section@usefont\aeb@section@fontfamily\aeb@section@fontseries
- \aeb@section@fontshape\aeb@section@fontsize\aeb@section@halign
- \color{\aeb@sectioncolor}\aeb@section@special}}
-\renewcommand\subsection{% dps1
- \renewcommand{\@seccntformat}[1]{\aeb@subsectionNum{##1}}%
- \@startsection{subsection}{2}{\aeb@subsection@indent}%
- {\aeb@subsection@beforeskip}{\aeb@subsection@afterskip}%
- {\noindent\def\aeb@section@type{subsection}%
- \aeb@subsection@usefont\aeb@subsection@fontfamily
- \aeb@subsection@fontseries\aeb@subsection@fontshape
- \aeb@subsection@fontsize\aeb@subsection@halign
- \color{\aeb@subsectioncolor}\aeb@subsection@special}}
-\def\subsubDefaultDing#1{\def\web@subsubDefaultDing{{#1}}}
-\subsubDefaultDing{\textrm\textbullet}
-\renewcommand\subsubsection{% dps1
- \renewcommand{\@seccntformat}[1]{\aeb@subsubsectionNum{##1}}%
- \@startsection{subsubsection}{3}{\aeb@subsubsection@indent}%
- {\aeb@subsubsection@beforeskip}{\aeb@subsubsection@afterskip}%
- {\noindent\def\aeb@section@type{subsubsection}%
- \aeb@subsubsection@usefont\aeb@subsubsection@fontfamily
- \aeb@subsubsection@fontseries\aeb@subsubsection@fontshape
- \aeb@subsubsection@fontsize\aeb@subsubsection@halign
- \color{\aeb@subsubsectioncolor}\aeb@subsubsection@special}}
-\renewcommand*\thesection{%
- \if\aeb@use@section@numbers1\arabic{section}\fi}
-\renewcommand*\thesubsection{%
- \if\aeb@use@section@numbers1\thesection.\arabic{subsection}\fi}
-\renewcommand*{\thesubsubsection}{%
- \if\aeb@use@section@numbers1%
- \if@defaultsubsubding\web@subsubDefaultDing
- \else\thesubsection.\arabic{subsubsection}\fi
- \fi}
-\newcommand{\sectionTitle}{\aeb@sectionTitle*}
-\newcommand{\aeb@sectionTitle}{%
- \renewcommand{\@seccntformat}[1]{\aeb@titleNum{##1}}%
- \@startsection{section}{1}{\aeb@title@indent}%
- {\aeb@title@beforeskip}{\aeb@title@afterskip}%
- {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{title}%
- \aeb@title@usefont\aeb@title@fontfamily\aeb@title@fontseries
- \aeb@title@fontshape\aeb@title@fontsize\aeb@title@halign
- \ifx\webtitle@color\@empty\else\color{\aeb@titlecolor}\fi
- \aeb@title@special}}
-\newcommand{\sectionAuthor}{\aeb@sectionAuthor*}
-\newcommand{\aeb@sectionAuthor}{%
- \renewcommand{\@seccntformat}[1]{\aeb@authorNum{##1}}%
- \@startsection{section}{1}{\aeb@author@indent}%
- {\aeb@author@beforeskip}{\aeb@author@afterskip}%
- {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{author}%
- \aeb@author@usefont\aeb@author@fontfamily\aeb@author@fontseries
- \aeb@author@fontshape\aeb@author@fontsize\aeb@author@halign
- \ifx\webauthor@color\@empty\else\color{\aeb@authorcolor}\fi
- \aeb@author@special}}
-\newcommand{\sectionUniversity}{\aeb@sectionUniversity*}
-\newcommand{\aeb@sectionUniversity}{%
- \renewcommand{\@seccntformat}[1]{\aeb@universityNum{##1}}%
- \@startsection{section}{1}{\aeb@university@indent}%
- {\aeb@university@beforeskip}{\aeb@university@afterskip}%
- {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{university}%
- \aeb@university@usefont\aeb@university@fontfamily
- \aeb@university@fontseries\aeb@university@fontshape
- \aeb@university@fontsize\aeb@university@halign
- \ifx\webuniversity@color\@empty\else
- \color{\aeb@universitycolor}\fi\aeb@university@special}}
-\newcommand{\sectionToc}{\aeb@sectionToc*}
-\newcommand{\aeb@sectionToc}{%
- \renewcommand{\@seccntformat}[1]{\aeb@tocNum{##1}}%
- \@startsection{section}{1}{\aeb@toc@indent}%
- {\aeb@toc@beforeskip}{\aeb@toc@afterskip}%
- {\hypertarget{webtoc}{}%
- \xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{toc}%
- \aeb@toc@usefont\aeb@toc@fontfamily
- \aeb@toc@fontseries\aeb@toc@fontshape
- \aeb@toc@fontsize\aeb@toc@halign
- \ifx\aeb@toccolor\@empty\else
- \color{\aeb@toccolor}\fi\aeb@toc@special}}
-\def\save@prtscr{\global\let\prtscr@save\prtscr
- \global\let\prtscr\prtscrA}
-\def\restore@prtscr{\global\let\prtscr\prtscr@save}
-\newcommand{\sectionLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=section,color=blue,ruleheight=1pt}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\newcommand{\subsectionLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=subsection,color=blue,ruleheight=1pt}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\newcommand{\subsubsectionLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=subsubsection,color=blue,ruleheight=1pt}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\newcommand{\universityLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=university}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\universityLayout{fontsize={\prtscrA{large}{normalsize}}}
-\newcommand{\titleLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=title}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\titleLayout{fontsize={\prtscrA{Large}{normalsize}}}
-\newcommand{\authorLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=author}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
- \aeb@temp\restore@prtscr}
-\authorLayout{fontsize={\prtscrA{large}{normalsize}}}
-\newcommand{\tocLayout}[1]{\save@prtscr
- \setkeys{aebsection}{type=toc,color=\web@tocColor}%
- \protected@edef\aeb@temp{\noexpand\setkeys{aebsection,aebToc}{#1}}%
- \aeb@temp\restore@prtscr}
-\tocLayout{fontsize=Large}
-\newif\ifShadow \Shadowfalse % dps1
-\def\web@sel@sec@col#1{\ifShadow
- \color{\@nameuse{aeb@#1shadowcolor}}\else
- \color{\@nameuse{aeb@#1numdingcolor}}\fi}
-\newcommand{\useSectionNumbers}
-{% dps1
- \let\aeb@use@section@numbers1\relax
- \def\aeb@sectionNum##1{\protect\web@sel@sec@col{section}%
- \@nameuse{the##1}\web@finalDot\ }%
- \def\aeb@subsectionNum##1{\protect\web@sel@sec@col{subsection}%
- \@nameuse{the##1}\web@finalDot\ }%
- \def\aeb@subsubsectionNum##1{%
- \protect\web@sel@sec@col{subsubsection}%
- \@nameuse{the##1}\if@defaultsubsubding\else\web@finalDot\fi\ }%
- \def\sectionmark##1{\markright{##1}}%
-}
-\newcommand{\noSectionNumbers}
-{%
- \ifx\web@latextoc\web@YES
- \PackageInfo{web}{The nobullets or latextoc option
- taken,\MessageBreak
- ignoring \string\noSectionNumbers}%
- \else
- \let\aeb@use@section@numbers0\relax
- \let\aeb@sectionNum\@gobble
- \let\aeb@subsectionNum\@gobble
- \let\aeb@subsubsectionNum\@gobble
- \fi
-}
-\useSectionNumbers
-\define@key{aebcolordesign}{universityColor}{\universityColor{#1}}
- \def\aeb@universitycolor{\webuniversity@color}
-\define@key{aebcolordesign}{titleColor}{\titleColor{#1}}
- \def\aeb@titlecolor{\webtitle@color}
-\define@key{aebcolordesign}{authorColor}{\authorColor{#1}}
- \def\aeb@authorcolor{\webauthor@color}
-\define@key{aebcolordesign}{textBgColor}{\textBgColor{#1}}
-\define@key{aebcolordesign}{panelBgColor}{\panelBgColor{#1}}
-\define@key{aebcolordesign}{linkColor}{\def\@linkcolor{#1}}
-\define@key{aebcolordesign}{fileColor}{\def\@filecolor{#1}}
-\define@key{aebcolordesign}{citeColor}{\def\@citecolor{#1}}
-\define@key{aebcolordesign}{urlColor}{\def\@urlcolor{#1}}
-\newcommand{\selectColors}[1]{\setkeys{aebcolordesign}{#1}}
-\define@key{aebDings}{dDing}{\dDingToc{#1}}
-\define@key{aebDings}{ddDing}{\ddDingToc{#1}}
-\define@key{aebDings}{dddDing}{\dddDingToc{#1}}
-\define@key{aebDings}{dDingColor}{\dDingTocColor{#1}}
-\define@key{aebDings}{ddDingColor}{\ddDingTocColor{#1}}
-\define@key{aebDings}{dddDingColor}{\dddDingTocColor{#1}}
-\def\dDingToc#1{\def\d@DingToc{#1}}
-\def\ddDingToc#1{\def\dd@DingToc{#1}}
-\def\dddDingToc#1{\def\ddd@DingToc{#1}}
-\def\dDingTocColor#1{\def\d@DingTocColor{#1}}
-\def\ddDingTocColor#1{\def\dd@DingTocColor{#1}}
-\def\dddDingTocColor#1{\def\ddd@DingTocColor{#1}}
-\dDingTocColor{red}
-\ddDingTocColor{blue}
-\dddDingTocColor{webgreen}
-\@tfor\@@tmp:={d@DingToc}{dd@DingToc}{ddd@DingToc}\do
- {\w@csarg\let{\@@tmp}\@empty}
-\newcommand{\selectTocDings}[1]{\setkeys{aebDings}{#1}}
-\def\@setTocDings{%
- \ifx\d@DingToc\@empty\else\dDing{\d@DingToc}\fi
- \ifx\dd@DingToc\@empty\else\ddDing{\dd@DingToc}\fi
- \ifx\ddd@DingToc\@empty\else\dddDing{\ddd@DingToc}\fi
-}
-\ifeqforpaper
- \includecomment{forpaper}\excludecomment{forscreen}
-\else
- \includecomment{forscreen}\excludecomment{forpaper}
-\fi
-\endinput
-%%
-%% End of file `webpro.def'.
+%%
+%% This is file `webpro.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% web.dtx (with options: `copyright,webpro')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Web package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% History: Noel Vaillant began developing a better web.sty
+%% based on my earlier published web.sty. Many thanks
+%% to him for starting me off.
+%%---------------------------------------------------------
+\RequirePackage{pifont}
+\newcommand{\DeclareDocInfo}[1]{\setkeys{aebDocInfo}{#1}%
+ \ifx\web@talkdate@value\@empty\else\let\webversion\webtalkdate\fi}
+\@onlypreamble\DeclareDocInfo
+\define@key{aebDocInfo}{title}[]{\title{#1}}
+\define@key{aebDocInfo}{author}[]{\author{#1}}
+\define@key{aebDocInfo}{university}[]{\university{#1}}
+\define@key{aebDocInfo}{email}[]{\email{#1}}
+\define@key{aebDocInfo}{talksite}[]{\talksite{#1}}
+\define@key{aebDocInfo}{talkdate}[]{\talkdate{#1}}
+\define@key{aebDocInfo}{talkdateLabel}[Presented:]{\talkdateLabel{#1}}
+\define@key{aebDocInfo}{version}[]{\version{#1}}
+\define@key{aebDocInfo}{versionLabel}[Version]{\versionLabel{#1}}
+\define@key{aebDocInfo}{subject}[]{\subject{#1}}
+\define@key{aebDocInfo}{keywords}[]{\keywords{#1}}
+\define@key{aebDocInfo}{copyrightyears}[]{\copyrightyears{#1}}
+\define@key{aebDocInfo}{prepared}[]{\prepared{#1}}
+\define@key{aebDocInfo}{preparedLabel}[]{\preparedLabel{#1}}
+\define@key{aebDocInfo}{Title}[]%
+ {\@ifpackageloaded{aebxmp}{\Title{#1}}{}}
+\define@key{aebDocInfo}{authors}[]%
+ {\@ifpackageloaded{aebxmp}{\Authors{#1}}{}}
+\define@key{aebDocInfo}{Subject}[]%
+ {\@ifpackageloaded{aebxmp}{\Subject{#1}}{\subject{#1}}}
+\define@key{aebDocInfo}{Keywords}[]%
+ {\@ifpackageloaded{aebxmp}{\Keywords{#1}}{\keywords{#1}}}
+\define@key{aebDocInfo}{lang}[]%
+ {\@ifpackageloaded{aebxmp}{\metaLang{#1}}{}}
+\define@key{aebDocInfo}{copyrightStatus}[]%
+ {\@ifpackageloaded{aebxmp}{\copyrightStatus{#1}}{}}
+\define@key{aebDocInfo}{copyrightNotice}[]%
+ {\@ifpackageloaded{aebxmp}{\copyrightNotice{#1}}{}}
+\define@key{aebDocInfo}{copyrightInfoURL}[]%
+ {\@ifpackageloaded{aebxmp}{\copyrightInfoURL{#1}}{}}
+\define@key{aebDocInfo}{authortitle}[]%
+ {\@ifpackageloaded{aebxmp}{\authortitle{#1}}{}}
+\define@key{aebDocInfo}{descriptionwriter}[]%
+ {\@ifpackageloaded{aebxmp}{\descriptionwriter{#1}}{}}
+\define@key{aebDocInfo}{customProperties}[]%
+ {\@ifpackageloaded{aebxmp}{\customProperties{#1}}{}}
+\newcommand{\DeclarePageLayout}[1]{\save@prtscr
+ \setkeys{web@pl}{topmargin,headheight,marginparsep,%
+ marginparwidth,marginparpush,webfootskip}%
+ \protected@edef\web@temp{\noexpand\setkeys{web@pl}{#1}}%
+ \web@temp\save@prtscr
+ \ifx\web@pl@screensize\@empty\else
+ \expandafter\screensize\web@pl@screensize\fi
+ \ifx\web@pl@margins\@empty\else
+ \expandafter\margins\web@pl@margins\fi
+ \ifeqforpaper\else
+ \ifdim\@Leftmargin<\@Rightmargin
+ \ifdim\marginparwidth>\@Leftmargin
+ \setlength{\marginparwidth}
+ {\@Leftmargin-2\marginparsep}%
+ \fi
+ \else
+ \ifdim\marginparwidth>\@Rightmargin
+ \setlength{\marginparwidth}
+ {\@Rightmargin-2\marginparsep}%
+ \fi
+ \fi
+ \fi
+ \ifeqforpaper\else
+ \ifdim\@Bottommargin<\web@footskip\relax\PackageError{web}{%
+ Error in the value of the webfootskip key\MessageBreak
+ of the \string\DeclarePageLayout\space command.\MessageBreak
+ The bottom margin must be larger then\MessageBreak
+ the value of webfootskip}{%
+ Increase the size of the bottom margin,\MessageBreak
+ or decrease the value of webfootskip.}\else
+ \fi
+ \fi
+}
+\@onlypreamble\DeclarePageLayout
+\define@key{web@pl}{screensize}[]{\def\web@pl@screensize{#1}}
+\let\web@pl@screensize\@empty
+\define@key{web@pl}{margins}[]{\def\web@pl@margins{#1}}
+\let\web@pl@margins\@empty
+\define@choicekey+{web@pl}{design}[\val\nr]{designi,designii,%
+ designiii,designiv,designv,designvi,designvii,designviii,designix}{%
+ \ifcase\nr\relax
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{3.736in}{4.67in}\or
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{5in}\or
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{5in}{6in}\or
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4in}{5in}\or
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.5in}{6in}\or
+ \web@MargScrDimOpts{.25in}{.25in}{24pt}{.25in}{4.17in}{4.67in}\or
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{7.5in}{10in}\or
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6.67in}\or
+ \web@MargScrDimOpts{.5in}{.5in}{24pt}{.5in}{3.75in}{6in}\fi
+ }{\PackageWarning{webpro}{%
+ Bad choice for design, use designi--designvix. Try again}}
+\define@choicekey+{web@pl}{screensizeOf}[\val\nr]{designi,designii,%
+ designiii,designiv,designv,designvi,designvii,designviii,designix}{%
+ \ifcase\nr\relax
+ \screensize{3.736in}{4.67in}\or
+ \screensize{4.5in}{5in}\or
+ \screensize{5in}{6in}\or
+ \screensize{4in}{5in}\or
+ \screensize{4.5in}{6in}\or
+ \screensize{4.17in}{4.67in}\or
+ \screensize{7.5in}{10in}\or
+ \screensize{3.75in}{6.67in}\or
+ \screensize{3.75in}{6in}\fi
+ }{\PackageWarning{webpro}{%
+ Bad choice for screensizeOf, use designi--designvix. Try again}}
+\define@key{web@pl}{headheight}[8pt]{\def\websetheadheight{#1}}
+\define@key{web@pl}{topmargin}[\prtscr{\the\topmargin}{8pt}]{%
+ \edef\web@argi{#1}\ifx\web@argi\@empty
+ \edef\web@argi{\prtscr{\the\topmargin}{8pt}}\fi
+ \ifeqforpaper
+ \setlength{\topmargin}{\web@argi}%
+ \else
+ \setlength{\web@Topmargin}{\web@argi}%
+ \fi}
+\define@key{web@pl}{textwidth}[345pt]{\setlength{\textwidth}{#1}}
+\define@key{web@pl}{textheight}[43\baselineskip]%
+ {\setlength{\textheight}{#1}}
+\define@key{web@pl}{oddsidemargin}[63pt]%
+ {\setlength{\oddsidemargin}{#1}}
+\define@key{web@pl}{evensidemargin}[63pt]%
+ {\setlength{\evensidemargin}{#1}}
+\define@key{web@pl}{marginparsep}[\prtscr{\the\marginparsep}{11pt}]{%
+ \edef\web@argi{#1}\ifx\web@argi\@empty
+ \edef\web@argi{\prtscr{\the\marginparsep}{11pt}}\fi
+ \setlength{\marginparsep}{\web@argi}}
+\define@key{web@pl}{marginparwidth}%
+ [\prtscr{\the\marginparwidth}{.25in}]{%
+ \edef\web@argi{#1}\ifx\web@argi\@empty
+ \edef\web@argi{\prtscr{\the\marginparwidth}{.25in}}\fi
+ \setlength{\marginparwidth}{\web@argi}}
+\define@key{web@pl}{marginparpush}[5pt]{%
+ \setlength{\marginparpush}{#1}}
+\define@key{web@pl}{webfootskip}[4pt]{%
+ \def\web@footskip{#1}}
+\define@key{web@pl}{footskip}[30pt]{\setlength{\footskip}{#1}}
+\define@key{web@pl}{panelwidth}[1in]{\panelwidth{#1}}
+\define@key{web@pl}{panelsep}[10pt]{\panelsep{#1}}
+\define@key{web@pl}{additionalheadsep}[0pt]%
+ {\def\web@additionalheadsep{#1}}
+\renewcommand{\topTitlePage}
+{%
+ \vglue\web@aboveTopTitleSkip
+ \noindent\makebox[\linewidth][\halignuniversity]{\parbox{%
+ \hproportionwebuniversity\linewidth}%
+ {\sectionUniversity{\webuniversity}}}%
+ \par\ifeqforpaper\else\minimumskip\fi
+ \vspace{\stretch{1}}%
+ \noindent\makebox[\linewidth][\haligntitle]%
+ {\parbox{\hproportionwebtitle\linewidth}%
+ {\sectionTitle{\webtitle}}}%
+ \par\ifeqforpaper\vspace{2\baselineskip}\else
+ \minimumskip\vspace{\stretch{1}}\fi
+ \noindent\makebox[\linewidth][\halignauthor]%
+ {\parbox{\hproportionwebauthor\linewidth}%
+ {\sectionAuthor{\webauthor}}}
+ \par\ifeqforpaper\vspace{2\baselineskip}\else
+ \minimumskip\vspace{\stretch{1}}\fi
+}
+\newcommand{\topTitlePageProportion}[1]{\def\titleauthorproportion{#1}}
+\renewcommand{\titlepageTrailer}
+{%
+ \webtpTrailerWrapper{\makebox[\web@tp@linewidth]{%
+ \parbox{\web@tp@linewidth}{%
+ \ifx\tpTrailer@textcolor\@empty\else
+ \color{\tpTrailer@textcolor}\fi\web@tpTrailer@formatting
+ \maketitle@trailer@ul\hfill\maketitle@trailer@ur\\
+ \maketitle@trailer@ll\hfill\maketitle@trailer@lr
+ }}}%
+}
+\def\maketitle@trailer@ul{\web@copyright\ \web@copyright@symbol\
+ \webcopyrightyears\ \thewebemail}
+\def\maketitle@trailer@ll{\aeb@Prepared}
+\def\maketitle@trailer@ur{\aeb@talksite}
+\def\maketitle@trailer@lr{\webversion}
+\let\webtpTrailerWrapper\relax
+\let\web@tpTrailerBgColor\@empty
+\let\web@tpTrailerBorderColor\@empty
+\let\tpTrailer@textcolor\@empty
+\let\web@tpTrailer@graphic\@empty
+\let\web@tpTrailer@namedgraphic\@empty
+\let\web@tpTrailer@formatting\@empty
+\def\web@tpTrailer@raise{0pt}
+\def\web@tp@linewidth{\linewidth}
+\define@key{tpTrailer}{ul}{\def\maketitle@trailer@ul{#1}}
+\define@key{tpTrailer}{ll}{\def\maketitle@trailer@ll{#1}}
+\define@key{tpTrailer}{ur}{\def\maketitle@trailer@ur{#1}}
+\define@key{tpTrailer}{lr}{\def\maketitle@trailer@lr{#1}}
+\define@key{tpTrailer}{textColor}{\def\tpTrailer@textcolor{#1}}
+\define@key{tpTrailer}{bgColor}{\def\web@tpTrailerBgColor{#1}}
+\define@key{tpTrailer}{borderColor}{\def\web@tpTrailerBorderColor{#1}}
+\define@key{tpTrailer}{fboxsep}{\def\web@tpTrailerfboxsep{#1}}
+\define@key{tpTrailer}{fboxrule}{\def\web@tpTrailerfboxrule{#1}}
+\define@key{tpTrailer}{graphic}{\def\web@tpTrailer@graphic{#1}}
+\define@key{tpTrailer}{namedgraphic}{%
+ \def\web@tpTrailer@namedgraphic{#1}}
+\define@key{tpTrailer}{fontSize}{\renewcommand{\trailerFontSize}{#1}}
+\define@key{tpTrailer}{formatting}{\def\web@tpTrailer@formatting{#1}}
+\define@key{tpTrailer}{raise}{\def\web@tpTrailer@raise{#1}}
+\newcommand{\DesignTitlePageTrailer}[1]
+{%
+ \setkeys{tpTrailer}{fboxsep=3pt,fboxrule=.4pt}%
+ \setkeys{tpTrailer}{#1}%
+ \setlength{\fboxsep}{\web@tpTrailerfboxsep}%
+ \setlength{\fboxrule}{\web@tpTrailerfboxrule}%
+ \let\web@tp@graphic\web@NO
+ \ifx\web@tpTrailer@graphic\@empty
+ \ifx\web@tpTrailer@namedgraphic\@empty\else
+ \let\web@tp@graphic\web@YES\fi
+ \else\let\web@tp@graphic\web@YES\fi
+ \ifx\web@tp@graphic\web@NO\relax
+ \ifx\web@tpTrailerBgColor\@empty
+ \def\grfbox@spec##1{##1}%
+ \else
+ \ifx\web@tpTrailerBorderColor\@empty
+ \def\web@tp@linewidth{\linewidth-2\fboxsep}%
+ \def\grfbox@spec{\colorbox{\web@tpTrailerBgColor}}%
+ \else
+ \def\web@tp@linewidth{%
+ \linewidth-2\fboxsep-2\fboxrule}%
+ \def\grfbox@spec{\fcolorbox{\web@tpTrailerBorderColor}%
+ {\web@tpTrailerBgColor}}%
+ \fi
+ \fi
+ \def\webtpTrailerWrapper##1{\smash{\raisebox
+ {\web@tpTrailer@raise}{\grfbox@spec{##1}}}}%
+ \else
+ \@ifundefined{graphicxbox}{\begingroup
+ \gdef\webtpTrailerWrapper##1{%
+ \edef\web@tmp@opt{\ifx\web@tpTrailer@namedgraphic\@empty\else
+ name=\web@tpTrailer@namedgraphic,\fi}%
+ \def\web@tp@linewidth{\linewidth-2\fboxsep}%
+ \setbox0=\hbox{##1}%
+ \noindent\makebox[0pt][l]{%
+ \smash{\raisebox{-\dp0-\fboxsep+\web@tpTrailer@raise}{%
+ \expandafter\includegraphics\expandafter[\web@tmp@opt
+ width=\wd0+2\fboxsep,%
+ height=\dp0+\ht0+2\fboxsep]{\web@tpTrailer@graphic}}%
+ }}\kern\fboxsep\smash{%
+ \raisebox{\web@tpTrailer@raise}{\unhbox0\relax}}%
+ }%
+ \endgroup}{%
+ \xdef\grfbox@spec{%
+ \ifx\web@tpTrailerBorderColor\@empty
+ \noexpand\graphicxbox\else
+ \noexpand\fgraphicxbox{\web@tpTrailerBorderColor}\fi
+ \ifx\web@tpTrailer@namedgraphic\@empty\else
+ [name=\web@tpTrailer@namedgraphic]\fi}%
+ \gdef\webtpTrailerWrapper##1{%
+ \edef\web@tp@linewidth{%
+ \linewidth-2\fboxsep\ifx\web@tpTrailerBorderColor\@empty
+ \else-2\fboxrule\fi}%
+ \smash{\raisebox{\web@tpTrailer@raise}{%
+ \grfbox@spec{\web@tpTrailer@graphic}{##1}}}}%
+ }%
+ \fi
+}
+\renewcommand{\web@maketitle}
+{%
+ \maketitlepreamble
+ \ifeqforpaper\vspace*{2\baselineskip}\else
+ \vbox to\titleauthorproportion\textheight\bgroup\fi
+ \topTitlePage
+ \ifeqforpaper\else\egroup\fi % end of \vbox for title and author
+ \begingroup\par
+ \aboveOPMvspace
+ \noindent\parbox{\linewidth}{\optionalpagematter}%
+ \par\endgroup
+ \par\vspace{\stretch{1}}
+ \ifx\web@directory@option\web@YES\web@directory@hook\webdirectory\fi
+ \par\ifeqforpaper\else\minimumskip\fi\vspace{\stretch{1}}
+ \vfill\noindent\begingroup\trailerFontSize\titlepageTrailer
+ \par\endgroup
+ \maketitlepostamble
+}
+\let\web@maketitle@save\maketitle
+\let\maketitle\web@maketitle
+\def\preparedLabel#1{\def\web@revision{#1}}
+\preparedLabel{Prepared:}
+\def\prepared#1{\def\argi{#1}\ifx\argi\@empty
+ \else\def\aeb@prepared{#1}\fi}
+\def\aeb@prepared{\@date}
+\def\aeb@Prepared{\web@revision\ \aeb@prepared}
+\def\talkdate#1{\gdef\web@talkdate@value{#1}%
+ \edef\webtalkdate{\ifx\web@talkdate@value\@empty
+ \else\noexpand\web@talkdatelabel\ #1\fi}}
+\let\web@talkdate@value\@empty
+\def\talkdateLabel#1{\def\web@talkdatelabel{#1}}
+\talkdateLabel{Presented:}
+\def\talksite#1{\def\aeb@talksite{#1}}
+\talksite{}
+\define@choicekey+{aebsection}{reset}[\val\nr]{font,all}{%
+ \ifcase\nr\relax
+ \aeb@reset@section@fonts\or
+ \aeb@reset@section@all\fi
+}{\PackageWarning{webpro}{Bad choice for reset, permissible values
+ are font and all. Try again}}
+\define@choicekey+{aebsection}{type}[\val\nr]{section,subsection,%
+ subsubsection,university,title,author,toc}%
+{%
+ \edef\aeb@section@type{#1}%
+ \edef\aeb@section@typeIndex{\nr}%
+}{}{}
+\define@key{aebsection}{special}{%
+ \edef\aeb@temp@expand{%
+ \noexpand\XKV@cc+[\noexpand\val\noexpand\nr]{#1}}%
+ \aeb@temp@expand{shadow,framebox,colorbox,fcolorbox,frameboxfit,%
+ colorboxfit,fcolorboxfit,colorboxfitrule,custom,default}%
+{%
+ \ifcase\nr\relax
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@shadowHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@frameboxHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@colorboxHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@fcolorboxHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@frameboxfitHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\aeb@colorboxfitHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}
+ \aeb@fcolorboxfitHead\or
+ \w@csarg\let{aeb@\aeb@section@type @special}
+ \aeb@colorboxfitruleHead\or
+ \edef\aeb@temp{\noexpand\def\expandafter\noexpand
+ \csname aeb@\aeb@section@type @special\endcsname{\expandafter
+ \noexpand\csname aeb@\aeb@section@type @customHead\endcsname}}%
+ \aeb@temp\or
+ \w@csarg\let{aeb@\aeb@section@type @special}\@empty\fi
+}{%
+ \PackageWarning{webpro}{Bad choice for special, permissible values
+ are shadow, framebox, colorbox, fcolorbox, custom and default.
+ Try again}}%
+}
+\@tfor\@@tmp:={section}{subsection}{subsubsection}%
+{university}{title}{author}{toc}\do{%
+ \w@csarg\let{aeb@\@@tmp @special}\@empty}
+\newcommand{\customSecHead}[1]{\def\aeb@section@customHead##1{#1}}
+\newcommand{\customSubsecHead}[1]{\def\aeb@subsection@customHead##1{#1}}
+\newcommand{\customSubsubsecHead}[1]
+ {\def\aeb@subsubsection@customHead##1{#1}}
+\newcommand{\customUniversity}[1]{\def\aeb@university@customHead##1{#1}}
+\newcommand{\customTitle}[1]{\def\aeb@title@customHead##1{#1}}
+\newcommand{\customAuthor}[1]{\def\aeb@author@customHead##1{#1}}
+\newcommand{\customToc}[1]{\def\aeb@toc@customHead##1{#1}}
+\def\aeb@frameboxHead#1{%
+ \begingroup
+ \@tempdima=\linewidth
+ \advance\@tempdima-2\fboxsep
+ \advance\@tempdima-2\fboxrule
+ \edef\@@aeb@sectionframecolor
+ {\@nameuse{aeb@\aeb@section@type framecolor}}%
+ \edef\@@aeb@sectioncolor
+ {\@nameuse{aeb@\aeb@section@type color}}%
+ \setbox0\vbox{\hsize=\@tempdima#1}\color{\@@aeb@sectionframecolor}%
+ \framebox{\color{\@@aeb@sectioncolor}\copy0}%
+ \endgroup
+}
+\def\aeb@colorboxHead#1{%
+ \begingroup
+ \@tempdima=\linewidth
+ \advance\@tempdima-2\fboxsep
+ \setbox0\vbox{\hsize=\@tempdima#1}%
+ \edef\@@aeb@sectionbgcolor
+ {\@nameuse{aeb@\aeb@section@type bgcolor}}%
+ \colorbox{\@@aeb@sectionbgcolor}{\copy0}%
+ \endgroup
+}
+\def\aeb@fcolorboxHead#1{%
+ \begingroup
+ \@tempdima=\linewidth
+ \advance\@tempdima-2\fboxsep
+ \advance\@tempdima-2\fboxrule
+ \setbox0\vbox{\hsize=\@tempdima#1}%
+ \edef\@@aeb@sectionbgcolor
+ {\@nameuse{aeb@\aeb@section@type bgcolor}}%
+ \fcolorbox{\aeb@sectionframecolor}%
+ {\@@aeb@sectionbgcolor}{\copy0}
+ \endgroup
+}
+\def\aeb@frameboxfitHead#1{%
+ \begingroup
+ \edef\@@aeb@sectionframecolor
+ {\@nameuse{aeb@\aeb@section@type framecolor}}%
+ \edef\@@aeb@sectioncolor
+ {\@nameuse{aeb@\aeb@section@type color}}%
+ \vbox{\color{\@@aeb@sectionframecolor}%
+ \framebox{\color{\@@aeb@sectioncolor}#1}}%
+ \endgroup
+}
+\def\aeb@colorboxfitHead#1{%
+ \begingroup
+ \edef\@@aeb@sectioncolor
+ {\@nameuse{aeb@\aeb@section@type color}}%
+ \edef\@@aeb@sectionbgcolor
+ {\@nameuse{aeb@\aeb@section@type bgcolor}}%
+ \vbox{\colorbox{\@@aeb@sectionbgcolor}%
+ {\color{\@@aeb@sectioncolor}#1}}%
+ \endgroup
+}
+\def\aeb@fcolorboxfitHead#1{%
+ \begingroup
+ \edef\@@aeb@sectioncolor
+ {\@nameuse{aeb@\aeb@section@type color}}%
+ \edef\@@aeb@sectionbgcolor
+ {\@nameuse{aeb@\aeb@section@type bgcolor}}%
+ \edef\@@aeb@sectionframecolor
+ {\@nameuse{aeb@\aeb@section@type framecolor}}%
+ \vbox{\fcolorbox{\@@aeb@sectionframecolor}{\@@aeb@sectionbgcolor}%
+ {\color{\@@aeb@sectioncolor}#1}}%
+ \endgroup
+}
+\def\shadowhoffset#1{\def\aeb@shadowhoffset{#1}}
+\shadowhoffset{.2ex}
+\def\shadowvoffset#1{\def\aeb@shadowvoffset{#1}}
+\shadowvoffset{-.2ex}
+\def\aeb@shadowHead#1{% dps1
+ \begingroup
+ \edef\@@aeb@sectionshadowcolor
+ {\@nameuse{aeb@\aeb@section@type shadowcolor}}%
+ \edef\@@aeb@sectioncolor
+ {\@nameuse{aeb@\aeb@section@type color}}%
+ \setbox0\vbox{\Shadowtrue\hsize=\linewidth #1}%
+ \wd0\z@\dp0\z@\relax\raisebox{\aeb@shadowvoffset}%
+ {\hbox to\z@{\kern\aeb@shadowhoffset%
+ \Shadowtrue\color{\@@aeb@sectionshadowcolor}
+ \box0\hss}}%
+ \setbox0\vbox{\Shadowfalse\hsize=\linewidth #1}\box0
+ \endgroup
+}
+\define@key{aebsection}{usefont}{%
+ \w@csarg\def{aeb@\aeb@section@type @usefont}{\aeb@usefont#1}}
+\@tfor\@@tmp:={section}{subsection}{subsubsection}
+{university}{title}{author}{toc}\do{%
+ \w@csarg\let{aeb@\@@tmp @usefont}\@empty}
+\def\aeb@usefont#1#2#3#4#5{\def\aeb@usefontargv{#5}%
+ \ifx\aeb@usefontargv\@empty
+ \def\aeb@next{\expandafter\@gobble\@gobbletwo}%
+ \else
+ \def\aeb@next{\expandafter\@gobbletwo\@gobbletwo}%
+ \fi
+ \fontencoding{#1}\fontfamily{#2}%
+ \fontseries{#3}\fontshape{#4}\ifx\aeb@usefontargv\@empty\else
+ \fontsize#5\fi\selectfont\aeb@next
+}
+\define@key{aebsection}{fontfamily}{%
+ \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
+ \aeb@temp@expand{rmfamily,sffamily,ttfamily}{%
+ \w@csarg\def{aeb@\aeb@section@type @fontfamily}{\@nameuse{#1}}%
+}{\PackageWarning{webpro}{Bad choice for fontfamily, permissible values
+ are rmfamily, sffamily and ttfamily. Try again}}%
+}
+\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
+{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontfamily}\aeb@defaultfamily}
+\define@key{aebsection}{fontseries}{%
+ \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
+ \aeb@temp@expand{bfseries,mdseries}{%
+ \w@csarg\def{aeb@\aeb@section@type @fontseries}{\@nameuse{#1}}%
+}{\PackageWarning{webpro}{Bad choice for fontseries, permissible values
+ are bfseries and mdseries. Try again}}%
+}
+\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
+{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontseries}\bfseries}
+\define@key{aebsection}{fontshape}{%
+ \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
+ \aeb@temp@expand{upshape,itshape,scshape,slshape}{%
+ \w@csarg\def{aeb@\aeb@section@type @fontshape}{\@nameuse{#1}}%
+}{\PackageWarning{webpro}{Bad choice for fontshape, permissible values
+ are upshape, itshape, scshape and slshape. Try again}}%
+}
+\@tfor\@@tmp:={section}{subsection}{subsubsection}{university}{title}%
+{author}{toc}\do{\w@csarg\let{aeb@\@@tmp @fontshape}\upshape}
+\define@key{aebsection}{fontsize}{%
+ \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
+ \aeb@temp@expand{tiny,scriptsize,footnotesize,%
+ small,normalsize,large,Large,LARGE,huge,Huge}{%
+ \w@csarg\def{aeb@\aeb@section@type @fontsize}{\@nameuse{#1}}%
+}{\PackageWarning{webpro}{Bad choice for fontsize, permissible values
+ are tiny, scriptsize, footnotesize, small, normalsize,
+ large, Large, LARGE, huge and Huge. Try again}}%
+}
+\@tfor\@@tmp:={{section}{\normalsize}}{{subsection}{\normalsize}}%
+{{subsubsection}{\normalsize}}{{university}{\normalsize}}%
+{{title}{\large}}{{author}{\normalsize}}{{toc}{\small}}\do{%
+ \expandafter\getargs\@@tmp
+ \edef\aeb@temp{\global\noexpand
+ \let\expandafter\noexpand\csname aeb@\aeb@argi @fontsize\endcsname
+ \expandafter\noexpand\aeb@argii}\aeb@temp
+}
+\define@key{aebsection}{halign}{%
+ \edef\aeb@temp@expand{%
+ \noexpand\XKV@cc+[\noexpand\val\noexpand\nr]{#1}}%
+ \aeb@temp@expand{l,c,r}{%
+ \ifcase\nr\relax
+ \w@csarg\let{aeb@\aeb@section@type @halign}\raggedright\or
+ \w@csarg\let{aeb@\aeb@section@type @halign}\centering\or
+ \w@csarg\let{aeb@\aeb@section@type @halign}\raggedleft\fi
+}{\PackageWarning{webpro}{Bad choice for halign, permissible values
+ are l, c and r. Try again}}%
+}
+\@tfor\@@tmp:={\aeb@section@halign\raggedright}
+{\aeb@subsection@halign\raggedright}
+{\aeb@subsubsection@halign\raggedright}
+{\aeb@university@halign\centering}
+{\aeb@title@halign\centering}{\aeb@author@halign\centering}%
+{\aeb@toc@halign\centering}\do
+{%
+ \expandafter\getargs\@@tmp
+ \edef\aeb@temp{\noexpand\let\expandafter\noexpand\aeb@argi
+ \expandafter\noexpand\aeb@argii}\aeb@temp
+}
+\define@key{aebsection}{ding}{\if\aeb@use@section@numbers0
+ \webtoksi=\expandafter{\expandafter\protect
+ \expandafter\web@sel@sec@col\expandafter{\aeb@section@type}#1\ }%
+ \w@csarg\edef{aeb@\aeb@section@type Num}##1{\the\webtoksi}%
+ \else\PackageWarning{webpro}{The ding key is not available with a
+ section numbering system,\MessageBreak
+ ignoring request for a ding.}\fi
+}
+\define@key{aebsection}{color}{%
+ \w@csarg\def{aeb@\aeb@section@type color}{#1}}
+\define@key{aebsection}{ruleheight}{%
+ \w@csarg\def{aeb@\aeb@section@type ruleheight}{#1}}
+\define@key{aebsection}{numdingcolor}{%
+ \w@csarg\def{aeb@\aeb@section@type numdingcolor}{#1}}
+\def\aeb@sectioncolor{blue}
+\def\aeb@subsectioncolor{\aeb@sectioncolor}
+\def\aeb@subsubsectioncolor{\aeb@sectioncolor}
+\def\aeb@sectionnumdingcolor{\aeb@sectioncolor}
+\def\aeb@subsectionnumdingcolor{\aeb@sectioncolor}
+\def\aeb@subsubsectionnumdingcolor{\aeb@sectioncolor}
+\def\aeb@universitycolor{black}
+\def\aeb@universitynumdingcolor{\aeb@universitycolor}
+\def\aeb@titlecolor{blue}
+\def\aeb@titlenumdingcolor{\aeb@titlecolor}
+\def\aeb@authorcolor{black}
+\def\aeb@authornumdingcolor{\aeb@authorcolor}
+\def\aeb@toccolor{blue}
+\def\aeb@tocnumdingcolor{\aeb@toccolor}
+\define@key{aebsection}{framecolor}{%
+ \w@csarg\def{aeb@\aeb@section@type framecolor}{#1}}
+\def\aeb@sectionframecolor{blue}
+\def\aeb@subsectionframecolor{blue}
+\def\aeb@subsubsectionframecolor{blue}
+\def\aeb@universityframecolor{blue}
+\def\aeb@titleframecolor{blue}
+\def\aeb@authorframecolor{blue}
+\def\aeb@tocframecolor{blue}
+\define@key{aebsection}{bgcolor}{%
+ \w@csarg\def{aeb@\aeb@section@type bgcolor}{#1}}
+\def\aeb@sectionbgcolor{cornsilk}
+\def\aeb@subsectionbgcolor{cornsilk}
+\def\aeb@subsubsectionbgcolor{cornsilk}
+\def\aeb@authorbgcolor{cornsilk}
+\def\aeb@titlebgcolor{cornsilk}
+\def\aeb@authorbgcolor{cornsilk}
+\def\aeb@tocbgcolor{cornsilk}
+\define@key{aebsection}{shadowcolor}{%
+ \w@csarg\def{aeb@\aeb@section@type shadowcolor}{#1}}
+\def\aeb@sectionshadowcolor{black}
+\def\aeb@subsectionshadowcolor{black}
+\def\aeb@subsubsectionshadowcolor{black}
+\def\aeb@universityshadowcolor{black}
+\def\aeb@titleshadowcolor{black}
+\def\aeb@authorshadowcolor{black}
+\def\aeb@tocshadowcolor{black}
+\define@key{aebsection}{indent}[0pt]{%
+ \edef\web@argi{#1}\ifx\web@argi\@empty
+ \def\web@argi{0pt}\fi
+ \w@csarg\edef{aeb@\aeb@section@type @indent}{\web@argi}}
+\def\aeb@section@indent{\z@}
+\def\aeb@subsection@indent{\z@}
+\def\aeb@subsubsection@indent{\z@}
+\def\aeb@university@indent{\z@}
+\def\aeb@title@indent{\z@}
+\def\aeb@author@indent{\z@}
+\def\aeb@toc@indent{\z@}
+\define@key{aebsection}{beforeskip}{%
+ \w@csarg\def{aeb@\aeb@section@type @beforeskip}{#1}}
+\def\aeb@section@beforeskip{-3ex\@plus -1ex \@minus-.2ex}
+\def\aeb@subsection@beforeskip{-2.5ex\@plus -1ex \@minus -.2ex}
+\def\aeb@subsubsection@beforeskip{-2ex\@plus -1ex \@minus -.2ex}
+\def\aeb@university@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
+\def\aeb@title@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
+\def\aeb@author@beforeskip{-1ex\@plus -1ex \@minus-.2ex}
+\def\aeb@toc@beforeskip{-3ex\@plus -1ex \@minus-.2ex}
+\define@key{aebsection}{afterskip}{%
+ \w@csarg\def{aeb@\aeb@section@type @afterskip}{#1}}
+\def\aeb@section@afterskip{1ex\@plus .2ex}
+\def\aeb@subsection@afterskip{1ex\@plus .2ex}
+\def\aeb@subsubsection@afterskip{.5ex\@plus .2ex}
+\def\aeb@university@afterskip{1ex\@plus .2ex}
+\def\aeb@title@afterskip{1ex\@plus .2ex}
+\def\aeb@author@afterskip{1ex \@plus1fill} %{1ex\@plus .2ex}
+\def\aeb@toc@afterskip{1ex\@plus .2ex}
+\define@key{aebsection}{hproportion}{%
+ \w@csarg\def{hproportionweb\aeb@section@type}{#1}}
+\define@key{aebsection}{xhalign}{%
+ \edef\aeb@temp@expand{\noexpand\XKV@cc+{#1}}%
+ \aeb@temp@expand{l,c,r}{%
+ \w@csarg\def{halign\aeb@section@type}{#1}%
+}{\PackageWarning{webpro}{Bad choice for xhalign, permissible values
+ are l, c and r. Try again}}%
+}
+\def\halignuniversity{c}
+\def\haligntitle{c}
+\def\halignauthor{c}
+\let\halignsection\relax
+\let\halignsubsection\relax
+\let\halignsubsubsection\relax
+\let\haligntoc\relax
+\define@key{aebToc}{tocName}{\tocName{#1}}
+\define@key{aebToc}{tocNameCont}{\tocNameCont{#1}}
+\def\aeb@reset@section@fonts{%
+ \normalfont\normalsize
+ \ifcase\aeb@section@typeIndex\relax
+ \let\aeb@section@usefont\@empty
+ \let\aeb@section@fontfamily\aeb@defaultfamily
+ \let\aeb@section@fontseries\bfseries
+ \let\aeb@section@fontshape\upshape
+ \let\aeb@section@fontsize\Large
+ \or
+ \let\aeb@subsection@usefont\@empty
+ \let\aeb@subsection@fontfamily\aeb@defaultfamily
+ \let\aeb@subsection@fontseries\bfseries
+ \let\aeb@subsection@fontshape\upshape
+ \let\aeb@subsection@fontsize\large
+ \or
+ \let\aeb@subsubsection@usefont\@empty
+ \let\aeb@subsubsection@fontfamily\aeb@defaultfamily
+ \let\aeb@subsubsection@fontseries\bfseries
+ \let\aeb@subsubsection@fontshape\upshape
+ \let\aeb@subsubsection@fontsize\normalsize
+ \fi
+}
+\def\aeb@reset@section@all{%
+ \aeb@reset@section@fonts
+ \ifcase\aeb@section@typeIndex\relax
+ \let\aeb@section@halign\raggedright
+ \def\aeb@sectioncolor{blue}%
+ \def\aeb@sectionshadowcolor{black}%
+ \let\aeb@section@special=\@empty
+ \def\aeb@section@beforeskip{-3ex\@plus -1ex \@minus-.2ex}%
+ \def\aeb@section@afterskip{1ex\@plus .2ex}%
+ \def\aeb@sectionframecolor{blue}%
+ \def\aeb@sectionframecolor{cornsilk}%
+ \or
+ \let\aeb@subsection@halign\raggedright
+ \def\aeb@subsectioncolor{blue}%
+ \def\aeb@subsectionshadowcolor{black}%
+ \let\aeb@subsection@special=\@empty
+ \def\aeb@subsection@beforeskip{-2.5ex\@plus-1ex \@minus-.2ex}%
+ \def\aeb@subsection@afterskip{1ex\@plus .2ex}%
+ \def\aeb@subsectionframecolor{blue}%
+ \def\aeb@subsectionframecolor{cornsilk}%
+ \or
+ \let\aeb@subsubsection@halign\raggedright
+ \def\aeb@subsubsectioncolor{blue}%
+ \def\aeb@subsubsectionshadowcolor{black}%
+ \let\aeb@subsubsection@special=\@empty
+ \def\aeb@subsubsection@beforeskip{-2ex\@plus-1ex \@minus-.2ex}%
+ \def\aeb@subsubsection@afterskip{1ex\@plus .2ex}%
+ \def\aeb@subsubsectionframecolor{blue}%
+ \def\aeb@subsubsectionframecolor{cornsilk}%
+ \fi
+}
+\renewcommand{\section}{% dps1
+ \renewcommand{\@seccntformat}[1]{\aeb@sectionNum{##1}}%
+ \@startsection{section}{1}{\aeb@section@indent}%
+ {\aeb@section@beforeskip}{\aeb@section@afterskip}%
+ {\noindent\xdef\aeb@sectionpage{\the\c@page}%
+ \def\aeb@section@type{section}%
+ \aeb@section@usefont\aeb@section@fontfamily\aeb@section@fontseries
+ \aeb@section@fontshape\aeb@section@fontsize\aeb@section@halign
+ \color{\aeb@sectioncolor}\aeb@section@special}}
+\renewcommand\subsection{% dps1
+ \renewcommand{\@seccntformat}[1]{\aeb@subsectionNum{##1}}%
+ \@startsection{subsection}{2}{\aeb@subsection@indent}%
+ {\aeb@subsection@beforeskip}{\aeb@subsection@afterskip}%
+ {\noindent\def\aeb@section@type{subsection}%
+ \aeb@subsection@usefont\aeb@subsection@fontfamily
+ \aeb@subsection@fontseries\aeb@subsection@fontshape
+ \aeb@subsection@fontsize\aeb@subsection@halign
+ \color{\aeb@subsectioncolor}\aeb@subsection@special}}
+\def\subsubDefaultDing#1{\def\web@subsubDefaultDing{{#1}}}
+\subsubDefaultDing{\textrm\textbullet}
+\renewcommand\subsubsection{% dps1
+ \renewcommand{\@seccntformat}[1]{\aeb@subsubsectionNum{##1}}%
+ \@startsection{subsubsection}{3}{\aeb@subsubsection@indent}%
+ {\aeb@subsubsection@beforeskip}{\aeb@subsubsection@afterskip}%
+ {\noindent\def\aeb@section@type{subsubsection}%
+ \aeb@subsubsection@usefont\aeb@subsubsection@fontfamily
+ \aeb@subsubsection@fontseries\aeb@subsubsection@fontshape
+ \aeb@subsubsection@fontsize\aeb@subsubsection@halign
+ \color{\aeb@subsubsectioncolor}\aeb@subsubsection@special}}
+\renewcommand*\thesection{%
+ \if\aeb@use@section@numbers1\arabic{section}\fi}
+\renewcommand*\thesubsection{%
+ \if\aeb@use@section@numbers1\thesection.\arabic{subsection}\fi}
+\renewcommand*{\thesubsubsection}{%
+ \if\aeb@use@section@numbers1%
+ \if@defaultsubsubding\web@subsubDefaultDing
+ \else\thesubsection.\arabic{subsubsection}\fi
+ \fi}
+\newcommand{\sectionTitle}{\aeb@sectionTitle*}
+\newcommand{\aeb@sectionTitle}{%
+ \renewcommand{\@seccntformat}[1]{\aeb@titleNum{##1}}%
+ \@startsection{section}{1}{\aeb@title@indent}%
+ {\aeb@title@beforeskip}{\aeb@title@afterskip}%
+ {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{title}%
+ \aeb@title@usefont\aeb@title@fontfamily\aeb@title@fontseries
+ \aeb@title@fontshape\aeb@title@fontsize\aeb@title@halign
+ \ifx\webtitle@color\@empty\else\color{\aeb@titlecolor}\fi
+ \aeb@title@special}}
+\newcommand{\sectionAuthor}{\aeb@sectionAuthor*}
+\newcommand{\aeb@sectionAuthor}{%
+ \renewcommand{\@seccntformat}[1]{\aeb@authorNum{##1}}%
+ \@startsection{section}{1}{\aeb@author@indent}%
+ {\aeb@author@beforeskip}{\aeb@author@afterskip}%
+ {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{author}%
+ \aeb@author@usefont\aeb@author@fontfamily\aeb@author@fontseries
+ \aeb@author@fontshape\aeb@author@fontsize\aeb@author@halign
+ \ifx\webauthor@color\@empty\else\color{\aeb@authorcolor}\fi
+ \aeb@author@special}}
+\newcommand{\sectionUniversity}{\aeb@sectionUniversity*}
+\newcommand{\aeb@sectionUniversity}{%
+ \renewcommand{\@seccntformat}[1]{\aeb@universityNum{##1}}%
+ \@startsection{section}{1}{\aeb@university@indent}%
+ {\aeb@university@beforeskip}{\aeb@university@afterskip}%
+ {\xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{university}%
+ \aeb@university@usefont\aeb@university@fontfamily
+ \aeb@university@fontseries\aeb@university@fontshape
+ \aeb@university@fontsize\aeb@university@halign
+ \ifx\webuniversity@color\@empty\else
+ \color{\aeb@universitycolor}\fi\aeb@university@special}}
+\newcommand{\sectionToc}{\aeb@sectionToc*}
+\newcommand{\aeb@sectionToc}{%
+ \renewcommand{\@seccntformat}[1]{\aeb@tocNum{##1}}%
+ \@startsection{section}{1}{\aeb@toc@indent}%
+ {\aeb@toc@beforeskip}{\aeb@toc@afterskip}%
+ {\hypertarget{webtoc}{}%
+ \xdef\aeb@titlepage{\the\c@page}\def\aeb@section@type{toc}%
+ \aeb@toc@usefont\aeb@toc@fontfamily
+ \aeb@toc@fontseries\aeb@toc@fontshape
+ \aeb@toc@fontsize\aeb@toc@halign
+ \ifx\aeb@toccolor\@empty\else
+ \color{\aeb@toccolor}\fi\aeb@toc@special}}
+\def\save@prtscr{\global\let\prtscr@save\prtscr
+ \global\let\prtscr\prtscrA}
+\def\restore@prtscr{\global\let\prtscr\prtscr@save}
+\newcommand{\sectionLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=section,color=blue,ruleheight=1pt}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\newcommand{\subsectionLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=subsection,color=blue,ruleheight=1pt}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\newcommand{\subsubsectionLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=subsubsection,color=blue,ruleheight=1pt}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\newcommand{\universityLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=university}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\universityLayout{fontsize={\prtscrA{large}{normalsize}}}
+\newcommand{\titleLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=title}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\titleLayout{fontsize={\prtscrA{Large}{normalsize}}}
+\newcommand{\authorLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=author}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection}{#1}}%
+ \aeb@temp\restore@prtscr}
+\authorLayout{fontsize={\prtscrA{large}{normalsize}}}
+\newcommand{\tocLayout}[1]{\save@prtscr
+ \setkeys{aebsection}{type=toc,color=\web@tocColor}%
+ \protected@edef\aeb@temp{\noexpand\setkeys{aebsection,aebToc}{#1}}%
+ \aeb@temp\restore@prtscr}
+\tocLayout{fontsize=Large}
+\newif\ifShadow \Shadowfalse % dps1
+\def\web@sel@sec@col#1{\ifShadow
+ \color{\@nameuse{aeb@#1shadowcolor}}\else
+ \color{\@nameuse{aeb@#1numdingcolor}}\fi}
+\newcommand{\useSectionNumbers}
+{% dps1
+ \let\aeb@use@section@numbers1\relax
+ \def\aeb@sectionNum##1{\protect\web@sel@sec@col{section}%
+ \@nameuse{the##1}\web@finalDot\ }%
+ \def\aeb@subsectionNum##1{\protect\web@sel@sec@col{subsection}%
+ \@nameuse{the##1}\web@finalDot\ }%
+ \def\aeb@subsubsectionNum##1{%
+ \protect\web@sel@sec@col{subsubsection}%
+ \@nameuse{the##1}\if@defaultsubsubding\else\web@finalDot\fi\ }%
+ \def\sectionmark##1{\markright{##1}}%
+}
+\newcommand{\noSectionNumbers}
+{%
+ \ifx\web@latextoc\web@YES
+ \PackageInfo{web}{The nobullets or latextoc option
+ taken,\MessageBreak
+ ignoring \string\noSectionNumbers}%
+ \else
+ \let\aeb@use@section@numbers0\relax
+ \let\aeb@sectionNum\@gobble
+ \let\aeb@subsectionNum\@gobble
+ \let\aeb@subsubsectionNum\@gobble
+ \fi
+}
+\useSectionNumbers
+\define@key{aebcolordesign}{universityColor}{\universityColor{#1}}
+ \def\aeb@universitycolor{\webuniversity@color}
+\define@key{aebcolordesign}{titleColor}{\titleColor{#1}}
+ \def\aeb@titlecolor{\webtitle@color}
+\define@key{aebcolordesign}{authorColor}{\authorColor{#1}}
+ \def\aeb@authorcolor{\webauthor@color}
+\define@key{aebcolordesign}{textBgColor}{\textBgColor{#1}}
+\define@key{aebcolordesign}{panelBgColor}{\panelBgColor{#1}}
+\define@key{aebcolordesign}{linkColor}{\def\@linkcolor{#1}}
+\define@key{aebcolordesign}{fileColor}{\def\@filecolor{#1}}
+\define@key{aebcolordesign}{citeColor}{\def\@citecolor{#1}}
+\define@key{aebcolordesign}{urlColor}{\def\@urlcolor{#1}}
+\newcommand{\selectColors}[1]{\setkeys{aebcolordesign}{#1}}
+\define@key{aebDings}{dDing}{\dDingToc{#1}}
+\define@key{aebDings}{ddDing}{\ddDingToc{#1}}
+\define@key{aebDings}{dddDing}{\dddDingToc{#1}}
+\define@key{aebDings}{dDingColor}{\dDingTocColor{#1}}
+\define@key{aebDings}{ddDingColor}{\ddDingTocColor{#1}}
+\define@key{aebDings}{dddDingColor}{\dddDingTocColor{#1}}
+\def\dDingToc#1{\def\d@DingToc{#1}}
+\def\ddDingToc#1{\def\dd@DingToc{#1}}
+\def\dddDingToc#1{\def\ddd@DingToc{#1}}
+\def\dDingTocColor#1{\def\d@DingTocColor{#1}}
+\def\ddDingTocColor#1{\def\dd@DingTocColor{#1}}
+\def\dddDingTocColor#1{\def\ddd@DingTocColor{#1}}
+\dDingTocColor{red}
+\ddDingTocColor{blue}
+\dddDingTocColor{webgreen}
+\@tfor\@@tmp:={d@DingToc}{dd@DingToc}{ddd@DingToc}\do
+ {\w@csarg\let{\@@tmp}\@empty}
+\newcommand{\selectTocDings}[1]{\setkeys{aebDings}{#1}}
+\def\@setTocDings{%
+ \ifx\d@DingToc\@empty\else\dDing{\d@DingToc}\fi
+ \ifx\dd@DingToc\@empty\else\ddDing{\dd@DingToc}\fi
+ \ifx\ddd@DingToc\@empty\else\dddDing{\ddd@DingToc}\fi
+}
+\ifeqforpaper
+ \includecomment{forpaper}\excludecomment{forscreen}
+\else
+ \includecomment{forscreen}\excludecomment{forpaper}
+\fi
+\endinput
+%%
+%% End of file `webpro.def'.
diff --git a/texmf-dist/tex/latex/acrotex/websec.def b/texmf-dist/tex/latex/acrotex/websec.def
index 6d0f973c..0735eaf0 100644
--- a/texmf-dist/tex/latex/acrotex/websec.def
+++ b/texmf-dist/tex/latex/acrotex/websec.def
@@ -1,192 +1,192 @@
-%%
-%% This is file `websec.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% web.dtx (with options: `copyright,websectioning')
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Web package, %%
-%% Copyright (C) 1999-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 of the %%
-%% License, or (at your option) any later version. %%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% History: Noel Vaillant began developing a better web.sty
-%% based on my earlier published web.sty. Many thanks
-%% to him for starting me off.
-%%---------------------------------------------------------
-\renewcommand*\thesection{\arabic{section}}
-\renewcommand*\thesubsection{\thesection.\arabic{subsection}}
-\renewcommand*{\thesubsubsection}{\textbullet}
-\renewcommand{\section}{\renewcommand{\@seccntformat}[1]{%
- \@nameuse{the##1}\web@finalDot\enspace}%
- \@startsection{section}{1}{\z@}%
- {-3ex\@plus -1ex \@minus-.2ex}%
- {1ex\@plus .2ex}% 6pt
- {\noindent\normalfont\normalsize\bfseries
- \color{\web@sectionsColorOld}}}%
-\renewcommand{\subsection}{\renewcommand{\@seccntformat}[1]{%
- \@nameuse{the##1}\web@finalDot\enspace}%
- \@startsection{subsection}{2}{\z@}%
- {-2.5ex\@plus -1ex \@minus -.2ex}%
- {1ex\@plus .2ex}%
- {\noindent\normalfont\normalsize\bfseries
- \color{\web@sectionsColorOld}}}
-\renewcommand{\subsubsection}{%
- \renewcommand{\@seccntformat}[1]{\color{\web@sectionsColorOld}\large
- $\bullet$\enspace}%
- \@startsection{subsubsection}{3}{\z@}%
- {-2ex\@plus -1ex \@minus -.2ex}%
- {.5ex\@plus .2ex}%
- {\noindent\normalfont\normalsize\bfseries}}
-\def\tocPartTitle#1{\def\web@tocPartTitle##1{#1}}
-\tocPartTitle{\thepart\hspace{1em}#1}
-\newcommand\@webpart{\secdef\web@@part\web@@spart}
-\def\web@@part[#1]#2{%
- \newpage
- \def\@currentlabelname{#1}%
- \ifnum\Hy@secnum@part>\c@secnumdepth
- \phantomsection
- \fi
- \ifnum \c@secnumdepth >\m@ne
- \refstepcounter{part}%
- \addcontentsline{toc}{part}{\web@tocPartTitle{#1}}%
- \else
- \addcontentsline{toc}{part}{#1}%
- \fi
- {\web@makeparthead{#2}}%
- \nobreak
- \vskip 1ex
- \@afterheading
-}
-\def\web@@spart#1{%
- \Hy@GlobalStepCount\Hy@linkcounter
- \xdef\@currentHref{part*.\the\Hy@linkcounter}%
- \Hy@raisedlink{%
- \hyper@anchorstart{\@currentHref}\hyper@anchorend
- }{\web@makesparthead{#1}}%
- \nobreak
- \vskip 1ex
- \@afterheading
-}
-\let\web@save@part\part
-\let\part\@webpart
-\newcommand{\formatPartTitle}[1]{%
- \def\web@formatPartTitle##1{#1}}
-\def\web@defaultFormatPartTitle#1{%
- \large\bfseries
- \ifnum \c@secnumdepth >\m@ne
- \partname~\thepart:\space
- \fi#1}
-\let\web@formatPartTitle\web@defaultFormatPartTitle
-\newcommand{\restorePartTitleFormat}{%
- \let\web@formatPartTitle\web@defaultFormatPartTitle}
-\def\noPartNumbers{\formatPartTitle{\large\bfseries##1}%
- \tocPartTitle{##1}}
-\def\web@makeparthead#1{%
- \parindent\z@\raggedright
- \interlinepenalty \@M
- \normalfont
- \web@formatPartTitle{#1}%
- \markboth{}{}\par
-}
-\def\web@makesparthead#1{%
- \parindent\z@\raggedright
- \interlinepenalty \@M
- \normalfont
- \large\bfseries #1\par
-}
-\@ifundefined{chapter}{}{%
- \newcommand\@webchapter{%
- \global\@topnum\z@
- \@afterindentfalse
- \secdef\web@@chapter\web@@schapter
- }
- \let\web@save@chapter\chapter
- \let\chapter\@webchapter
- \def\web@@chapter[#1]#2{%
- \def\@currentlabelname{#1}%
- \def\Hy@next{%
- \Hy@GlobalStepCount\Hy@linkcounter
- \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}%
- \Hy@raisedlink{%
- \hyper@anchorstart{\@currentHref}\hyper@anchorend
- }%
- }%
- \ifnum\c@secnumdepth>\m@ne
- \@ifundefined{if@mainmatter}%
- \iftrue{\@nameuse{if@mainmatter}}%
- \let\Hy@next\relax
- \fi
- \fi
- \Hy@next
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \refstepcounter{chapter}%
- \typeout{\@chapapp\space\thechapter.}%
- \addcontentsline{toc}{chapter}%
- {\protect\numberline{\thechapter}#1}%
- \else
- \addcontentsline{toc}{chapter}{{}{}#1}%
- \fi
- \else
- \addcontentsline{toc}{chapter}{{}{}#1}%
- \fi
- \chaptermark{#1}%
- \addtocontents{lof}{\protect\addvspace{10\p@}}%
- \addtocontents{lot}{\protect\addvspace{10\p@}}%
- \if@twocolumn
- \@topnewpage[\web@makechapterhead{#2}]%
- \else
- \web@makechapterhead{#2}%
- \@afterheading
- \fi
- }
- \def\web@@schapter#1{%
- \if@twocolumn
- \@topnewpage[\@makeschapterhead{#1}]%
- \else
- \web@makeschapterhead{#1}%
- \@afterheading
- \fi
- }
- \long\def\formatChapterNumber#1{\def\web@formatChapterNumber{#1}}
- \formatChapterNumber{\large\bfseries
- \@chapapp\space\thechapter\par\nobreak}
- \long\def\formatChapterTitle#1{\def\web@formatChapterTitle##1{#1}}
- \formatChapterTitle{%
- \interlinepenalty\@M
- \noindent\hspace{1em}\large\bfseries#1\par\nobreak
- }
- \def\web@makechapterhead#1{%
- \vspace{3\p@}{%
- \parindent\z@ \raggedright \normalfont
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \web@formatChapterNumber
- \fi
- \fi
- \web@formatChapterTitle{#1}%
- \vskip 12\p@
- }%
- }
- \def\web@makeschapterhead#1{%
- \vspace{3\p@}{%
- \parindent\z@\raggedright
- \normalfont
- \interlinepenalty\@M
- \large\bfseries #1\par\nobreak
- \vskip 12\p@
- }%
- }
-} % end \@ifundefined{chapter}
-\endinput
-%%
-%% End of file `websec.def'.
+%%
+%% This is file `websec.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% web.dtx (with options: `copyright,websectioning')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Web package, %%
+%% Copyright (C) 1999-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 of the %%
+%% License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% History: Noel Vaillant began developing a better web.sty
+%% based on my earlier published web.sty. Many thanks
+%% to him for starting me off.
+%%---------------------------------------------------------
+\renewcommand*\thesection{\arabic{section}}
+\renewcommand*\thesubsection{\thesection.\arabic{subsection}}
+\renewcommand*{\thesubsubsection}{\textbullet}
+\renewcommand{\section}{\renewcommand{\@seccntformat}[1]{%
+ \@nameuse{the##1}\web@finalDot\enspace}%
+ \@startsection{section}{1}{\z@}%
+ {-3ex\@plus -1ex \@minus-.2ex}%
+ {1ex\@plus .2ex}% 6pt
+ {\noindent\normalfont\normalsize\bfseries
+ \color{\web@sectionsColorOld}}}%
+\renewcommand{\subsection}{\renewcommand{\@seccntformat}[1]{%
+ \@nameuse{the##1}\web@finalDot\enspace}%
+ \@startsection{subsection}{2}{\z@}%
+ {-2.5ex\@plus -1ex \@minus -.2ex}%
+ {1ex\@plus .2ex}%
+ {\noindent\normalfont\normalsize\bfseries
+ \color{\web@sectionsColorOld}}}
+\renewcommand{\subsubsection}{%
+ \renewcommand{\@seccntformat}[1]{\color{\web@sectionsColorOld}\large
+ $\bullet$\enspace}%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-2ex\@plus -1ex \@minus -.2ex}%
+ {.5ex\@plus .2ex}%
+ {\noindent\normalfont\normalsize\bfseries}}
+\def\tocPartTitle#1{\def\web@tocPartTitle##1{#1}}
+\tocPartTitle{\thepart\hspace{1em}#1}
+\newcommand\@webpart{\secdef\web@@part\web@@spart}
+\def\web@@part[#1]#2{%
+ \newpage
+ \def\@currentlabelname{#1}%
+ \ifnum\Hy@secnum@part>\c@secnumdepth
+ \phantomsection
+ \fi
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\web@tocPartTitle{#1}}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ {\web@makeparthead{#2}}%
+ \nobreak
+ \vskip 1ex
+ \@afterheading
+}
+\def\web@@spart#1{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{part*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }{\web@makesparthead{#1}}%
+ \nobreak
+ \vskip 1ex
+ \@afterheading
+}
+\let\web@save@part\part
+\let\part\@webpart
+\newcommand{\formatPartTitle}[1]{%
+ \def\web@formatPartTitle##1{#1}}
+\def\web@defaultFormatPartTitle#1{%
+ \large\bfseries
+ \ifnum \c@secnumdepth >\m@ne
+ \partname~\thepart:\space
+ \fi#1}
+\let\web@formatPartTitle\web@defaultFormatPartTitle
+\newcommand{\restorePartTitleFormat}{%
+ \let\web@formatPartTitle\web@defaultFormatPartTitle}
+\def\noPartNumbers{\formatPartTitle{\large\bfseries##1}%
+ \tocPartTitle{##1}}
+\def\web@makeparthead#1{%
+ \parindent\z@\raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \web@formatPartTitle{#1}%
+ \markboth{}{}\par
+}
+\def\web@makesparthead#1{%
+ \parindent\z@\raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \large\bfseries #1\par
+}
+\@ifundefined{chapter}{}{%
+ \newcommand\@webchapter{%
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef\web@@chapter\web@@schapter
+ }
+ \let\web@save@chapter\chapter
+ \let\chapter\@webchapter
+ \def\web@@chapter[#1]#2{%
+ \def\@currentlabelname{#1}%
+ \def\Hy@next{%
+ \Hy@GlobalStepCount\Hy@linkcounter
+ \xdef\@currentHref{\Hy@chapapp*.\the\Hy@linkcounter}%
+ \Hy@raisedlink{%
+ \hyper@anchorstart{\@currentHref}\hyper@anchorend
+ }%
+ }%
+ \ifnum\c@secnumdepth>\m@ne
+ \@ifundefined{if@mainmatter}%
+ \iftrue{\@nameuse{if@mainmatter}}%
+ \let\Hy@next\relax
+ \fi
+ \fi
+ \Hy@next
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}%
+ \else
+ \addcontentsline{toc}{chapter}{{}{}#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{{}{}#1}%
+ \fi
+ \chaptermark{#1}%
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\web@makechapterhead{#2}]%
+ \else
+ \web@makechapterhead{#2}%
+ \@afterheading
+ \fi
+ }
+ \def\web@@schapter#1{%
+ \if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \web@makeschapterhead{#1}%
+ \@afterheading
+ \fi
+ }
+ \long\def\formatChapterNumber#1{\def\web@formatChapterNumber{#1}}
+ \formatChapterNumber{\large\bfseries
+ \@chapapp\space\thechapter\par\nobreak}
+ \long\def\formatChapterTitle#1{\def\web@formatChapterTitle##1{#1}}
+ \formatChapterTitle{%
+ \interlinepenalty\@M
+ \noindent\hspace{1em}\large\bfseries#1\par\nobreak
+ }
+ \def\web@makechapterhead#1{%
+ \vspace{3\p@}{%
+ \parindent\z@ \raggedright \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \web@formatChapterNumber
+ \fi
+ \fi
+ \web@formatChapterTitle{#1}%
+ \vskip 12\p@
+ }%
+ }
+ \def\web@makeschapterhead#1{%
+ \vspace{3\p@}{%
+ \parindent\z@\raggedright
+ \normalfont
+ \interlinepenalty\@M
+ \large\bfseries #1\par\nobreak
+ \vskip 12\p@
+ }%
+ }
+} % end \@ifundefined{chapter}
+\endinput
+%%
+%% End of file `websec.def'.