summaryrefslogtreecommitdiff
path: root/texmf-dist/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2018-06-11 12:19:19 +0900
committerNorbert Preining <norbert@preining.info>2018-06-11 12:19:19 +0900
commit17e285e7733468f00b6e8d096fdd7ffe818f09c8 (patch)
treebb187730b3d22ed29ef7e36594f2fb4bf867e437 /texmf-dist/tex
parent147631b4e676c1f18156ef3dcdee9a5838c0d93d (diff)
acrotex update
Diffstat (limited to 'texmf-dist/tex')
-rw-r--r--texmf-dist/tex/latex/acrotex/aebjs.def260
-rw-r--r--texmf-dist/tex/latex/acrotex/aebrandom.def6
-rw-r--r--texmf-dist/tex/latex/acrotex/aebsumrytbls.def5
-rw-r--r--texmf-dist/tex/latex/acrotex/altadbfncs.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/dljscc.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/dljslib.sty170
-rw-r--r--texmf-dist/tex/latex/acrotex/edvipdfm.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eforms.sty102
-rw-r--r--texmf-dist/tex/latex/acrotex/epdfmark.def10
-rw-r--r--texmf-dist/tex/latex/acrotex/epdftex.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqbr.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcat.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcolor.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcz.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqda.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqde.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqes.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqexam.def364
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfin.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfr.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqit.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqnl.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqno.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqpo.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqru.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/eqtr.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/exerquiz.sty1164
-rw-r--r--texmf-dist/tex/latex/acrotex/insdljs.sty6
-rw-r--r--texmf-dist/tex/latex/acrotex/pdfdochex.def278
-rw-r--r--texmf-dist/tex/latex/acrotex/setcorder.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/template.def5
-rw-r--r--texmf-dist/tex/latex/acrotex/uieforms.def15
-rw-r--r--texmf-dist/tex/latex/acrotex/usemcfi.def3
-rw-r--r--texmf-dist/tex/latex/acrotex/web.sty2
-rw-r--r--texmf-dist/tex/latex/acrotex/webpro.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/websec.def2
36 files changed, 1681 insertions, 769 deletions
diff --git a/texmf-dist/tex/latex/acrotex/aebjs.def b/texmf-dist/tex/latex/acrotex/aebjs.def
index f3acd920..59be747d 100644
--- a/texmf-dist/tex/latex/acrotex/aebjs.def
+++ b/texmf-dist/tex/latex/acrotex/aebjs.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,8 +18,9 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebjs.def}
- [2017/03/16 v7.8g %
+ [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{\\^}
@@ -31,6 +32,17 @@
\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}
/*
@@ -50,12 +62,14 @@ 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 Array();
+var aQuizControl = new Object;
var RightWrong=new Array();
var ProbValue = new Array();
var ProbDist = new Array();
@@ -236,6 +250,8 @@ function addMathObject(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++)
@@ -424,20 +440,24 @@ function TypeParameters(v)
if ( aV[i].indexOf(":") == -1 ) aV[i] = "r:"+aV[i];
return aV.join(",")
}
-function ProcResp(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcResp(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(arguments.length>7)?arguments[7]:event.value;
var success = _ProcResp(flag,CorrAns,UserAns,%
-n,epsilon,domain,indepVar,oComp);
- if ( success == -1 || !ok2Continue ) return null;
- if ( success == null ) { return syntaxError(), null; }
+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,indepVar,oComp)
-{
+function _ProcResp(flag,CorrAns,UserAns,n,epsilon,domain,%
+indepVars,oComp){
ok2Continue = true;
CorrAns = ParseInput(CorrAns);
if (!ok2Continue) {
@@ -462,9 +482,9 @@ function _ProcResp(flag,CorrAns,UserAns,n,epsilon,domain,indepVar,oComp)
var reRlCommaSubst=/@c@/g;
UserAns=UserAns.replace(reRlCommaSubst,",");
UserAns = ParseInput(UserAns);
- indepVar = TypeParameters(indepVar);
+ indepVars = TypeParameters(indepVars);
if (!ok2Continue) return null;
- var success=randomPointCompare(n,domain,indepVar,%
+ var success=randomPointCompare(n,domain,indepVars,%
epsilon,CorrAns,UserAns,comp);
if ( success && (typeof(oComp)=="object") %
&& (typeof(oComp.postParse)!="undefined") )
@@ -489,7 +509,7 @@ function processSpecialParse(oParse,UserAns) {
}
return retn;
}
-function randomPointCompare (n,domain,indepVar,epsilon,%
+function randomPointCompare (n,domain,indepVars,epsilon,%
CorrAns,userAns,comp)
{
var error, i, j, k;
@@ -510,7 +530,7 @@ CorrAns,userAns,comp)
-eval(endpoints[0]))*Math.random();
}
var cXY = aXY.toString();
- error = comp(domain,cXY,indepVar,CorrAns,userAns);
+ error = comp(domain,cXY,indepVars,CorrAns,userAns);
if (error == null) return null;
if ( (error == -1) || (error > epsilon) ) {j=-1; break;}
}
@@ -623,6 +643,87 @@ function requireFormNot(UserAns, regexpr) {
}
}
\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;
@@ -695,7 +796,7 @@ function eqFilter(filterMethod) {
\begin{newsegment}{Eq: Quiz Management}
function InitMsg(msg) { return (\eqInitQuizMsg) }
function syntaxError() { eqAppAlert(\eqSyntaxErrorUndefVar,3); }
-var lstOfQuizzes=new Array();
+var lstOfQuizzes=new Object();
var reExtractBaseName=/^.+?\.(.+?)\..+$/;
function ProcUserResp(key,userresp,probno,notify)
{
@@ -814,6 +915,18 @@ function InitializeQuiz(qtfield,mark) {
}
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;
@@ -871,11 +984,11 @@ function GrpRight( a, nProb, qtfield )
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" ) %
@@ -919,7 +1032,7 @@ function DisplayQuizResults(qtfield,nPointTotal,nQuestions)
}
}
}
-if ( !negPointsAllowed && (ptScore < 0) ) ptScore = 0;
+ if ( !negPointsAllowed && (ptScore < 0) ) ptScore = 0;
if (ptScore == nPointTotal) pcScore = 100;
else pcScore = util.printf("\%.1f", (100 * ptScore) / nPointTotal);
var oQName=eval(qtfield);
@@ -1040,8 +1153,41 @@ function correctQuiz(qtfield,nQuestions)
?\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) f.display = display.visible;
+ 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();
@@ -1212,23 +1358,23 @@ 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")%
+ 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")%
+ var rightSymb=(typeof oQName.RightColorJSLoc=="undefined")%
?\rghtAnsSymbJS:oQName.RightAnsSymbJSLoc;
- var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
+ var wrongColor=(typeof oQName.WrongColorJSLoc=="undefined")%
?\wrngColorJS:oQName.WrongColorJSLoc;
- var wrongSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
+ var wrongSymb=(typeof oQName.WrongAnsSymbJSLoc=="undefined")%
?\wrngAnsSymbJS:oQName.WrongAnsSymbJSLoc;
if (success) {
f.strokeColor = rightColor;
@@ -1287,37 +1433,37 @@ app.clearTimeOut(oNoPeekTimer);",5);
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, %
+ 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, %
+ 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=%
+ }
+ 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;
- }
+ if (isthereRBUP) g.display=display.hidden;
+ event.target.strokeColor = defaultColor;
}
+ }
}
function jmpToNamedDest(fName,cDest,bAlert) {
if ( (typeof appAlerts[fName]!="undefined" %
diff --git a/texmf-dist/tex/latex/acrotex/aebrandom.def b/texmf-dist/tex/latex/acrotex/aebrandom.def
index f5554385..76ec48c1 100644
--- a/texmf-dist/tex/latex/acrotex/aebrandom.def
+++ b/texmf-dist/tex/latex/acrotex/aebrandom.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,8 +18,9 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebrandom.def}
- [2017/03/16 v7.8g %
+ [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
@@ -42,6 +43,7 @@
\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
diff --git a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
index 8c74db2b..b345be1f 100644
--- a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
+++ b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,8 +18,9 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebsumrytbls.def}
- [2017/03/16 v7.8g %
+ [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}
diff --git a/texmf-dist/tex/latex/acrotex/altadbfncs.def b/texmf-dist/tex/latex/acrotex/altadbfncs.def
index 6b7f2389..f277e2b7 100644
--- a/texmf-dist/tex/latex/acrotex/altadbfncs.def
+++ b/texmf-dist/tex/latex/acrotex/altadbfncs.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2017 D. P. Story %%
+%% Copyright (C) 2001-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -33,7 +33,6 @@ var EFSpecial_Keystroke=AFSpecial_Keystroke;
var EFSpecial_Format=AFSpecial_Format;
var EFSpecial_KeystrokeEx=AFSpecial_KeystrokeEx;
var EFRange_Validate=AFRange_Validate;
-var EFRange_Validate=AFRange_Validate;
var EFSimple_Calculate=AFSimple_Calculate;
var EFMergeChange=AFMergeChange;
\end{insDLJS}
diff --git a/texmf-dist/tex/latex/acrotex/dljscc.def b/texmf-dist/tex/latex/acrotex/dljscc.def
index c452b683..6d9ee746 100644
--- a/texmf-dist/tex/latex/acrotex/dljscc.def
+++ b/texmf-dist/tex/latex/acrotex/dljscc.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2017 D. P. Story %%
+%% Copyright (C) 2001-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/dljslib.sty b/texmf-dist/tex/latex/acrotex/dljslib.sty
index 871720d7..67f0867b 100644
--- a/texmf-dist/tex/latex/acrotex/dljslib.sty
+++ b/texmf-dist/tex/latex/acrotex/dljslib.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% dljsLib.sty package, %%
-%% Copyright (C) 2001-2016 D. P. Story %%
+%% Copyright (C) 2001-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dljslib}
- [2014/10/05 v2.0 Manage a Library of Document Level JavaScripts (dps)]
+ [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}
@@ -48,6 +48,7 @@
\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{.}
@@ -77,13 +78,14 @@ var dljslib = true;
\fi
\begin{library@holding}{equations}
\begin{newsegment}{dljslib: Equation Handling}
-function ProcRespEq(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcRespEq(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
if (!ProcessIt) return null;
ok2Continue = true;
var success;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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);
@@ -123,13 +125,13 @@ function ProcRespEq(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
}
zUserAns = ParseInput(zUserAns);
if (!ok2Continue) return null;
- indepVar = TypeParameters(indepVar);
- var lambda = getNonZeroRatio (domain, indepVar, zCorrAns, zUserAns);
+ 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,indepVar,epsilon,
+ success=randomPointCompare (n,domain,indepVars,epsilon,
zCorrAns,zUserAns,comp)
if ( success == null ) { eqAppAlert(\eqSyntaxErrorUndefVar,3);
return null; }
@@ -196,7 +198,7 @@ function getNonZeroRatio (_a, _v, _F, _G)
\fi
\begin{library@holding}{vectors}
\begin{newsegment}{dljslib: Vector Handling}
-function ProcVec (flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcVec (flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
if (!ProcessIt) return null;
ok2Continue = true;
@@ -254,7 +256,7 @@ typeof oComp.priorParse != "undefined" ) {
return null;
}
// convert to new format, if needed
- indepVar = TypeParameters(indepVar);
+ indepVars = TypeParameters(indepVars);
for (i=0; i<aCorrAns.length; i++) {
aCorrAns[i] = ParseInput(aCorrAns[i]);
if (!ok2Continue) {
@@ -267,7 +269,7 @@ typeof oComp.priorParse != "undefined" ) {
return null;
}
if (!ok2Continue) return null;
- success=randomPointCompare (n,domain,indepVar,epsilon,
+ success=randomPointCompare (n,domain,indepVars,epsilon,
aCorrAns[i],aUserAns[i],comp)
if ( success == null ) {
eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
@@ -285,12 +287,13 @@ typeof oComp.priorParse != "undefined" ) {
\fi
\begin{library@holding}{setSupport}
\begin{newsegment}{dljslib: Support for Sets}
-function ProcRespSetNum(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcRespSetNum(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
UserAns = stripWhiteSpace(UserAns);
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
@@ -324,7 +327,7 @@ function ProcRespSetNum(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
return notifyField(false, flag, fieldname);
for ( var i=0; i< aCorrAns.length; i++) {
var retn = _ProcResp(%
-flag,aCorrAns[i],aUserAns[i],n,epsilon,domain,indepVar,oComp);
+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;
@@ -358,12 +361,13 @@ function formatAsVector() {
event.value = "< " + event.value + " >";
}
}
-function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
UserAns = stripWhiteSpace(UserAns);
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
@@ -383,7 +387,7 @@ function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
var retn=ck4Braces(UserAns);
if (retn==null) return null;
var aUserAns = UserAns.split(",");
- var _V = indepVar.split(",");
+ var _V = indepVars.split(",");
for ( var _i=0; _i < _V.length; _i++) {
eval ( "var "+ _V[_i] + " = \"" + _i + "\";");
}
@@ -397,8 +401,8 @@ function ProcRespSetSym(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
for ( var _i=0; _i < aCorrAns.length; _i++) {
try {
if (isNaN(eval(aCorrAns[_i])))
- return eqAppAlert(
- "Author error, recheck your code",3), null;
+ 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; }
@@ -421,11 +425,12 @@ flag,aCorrAns[_i],aUserAns[_i],n,epsilon,"[0,1]","i:_x",oComp);
return notifyField(success, flag, fieldname);
}
function ProcRespListFormula(flag,CorrAns,n,epsilon,domain,%
-indepVar,oComp) {
+indepVars,oComp) {
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
UserAns = stripWhiteSpace(UserAns);
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
@@ -447,7 +452,6 @@ indepVar,oComp) {
UserAns = UserAns.replace(/,+/g, ",");
UserAns = UserAns.replace(/,$/, "");
UserAns = UserAns.replace(/^,/, "");
- event.value = UserAns;
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
var aUserAns = UserAns.split(",");
@@ -457,7 +461,7 @@ indepVar,oComp) {
return notifyField(false, flag, fieldname);
for ( var i=0; i< aCorrAns.length; i++) {
var retn =_ProcResp(flag,aCorrAns[i],aUserAns[i],%
-n,epsilon,domain,indepVar,oComp);
+n,epsilon,domain,indepVars,oComp);
if ( retn == -1 ) return null;
if ( retn == null ) return syntaxError(), null;
numCorrect += (retn) ? 1 : 0;
@@ -466,11 +470,12 @@ n,epsilon,domain,indepVar,oComp);
return notifyField(success, flag, fieldname);
}
function ProcRespSetFormula(flag,CorrAns,n,epsilon,%
-domain,indepVar,oComp) {
+domain,indepVars,oComp) {
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
UserAns = stripWhiteSpace(UserAns);
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
@@ -492,7 +497,6 @@ domain,indepVar,oComp) {
UserAns = UserAns.replace(/,+/g, ",");
UserAns = UserAns.replace(/,$/, "");
UserAns = UserAns.replace(/^,/, "");
- event.value = UserAns;
CorrAns = stripWhiteSpace(CorrAns);
if (!ok2Continue) return null;
var aUserAns = UserAns.split(",");
@@ -504,7 +508,7 @@ domain,indepVar,oComp) {
match = 0;
for ( var j=i; j< aUserAns.length; j++) {
var retn = _ProcResp(%
-flag,aCorrAns[i],aUserAns[j],n,epsilon,domain,indepVar,oComp);
+flag,aCorrAns[i],aUserAns[j],n,epsilon,domain,indepVars,oComp);
if ( retn == -1 ) return null;
if ( retn == null ) return syntaxError(), null;
if (retn==1) {
@@ -539,17 +543,18 @@ flag,aCorrAns[i],aUserAns[j],n,epsilon,domain,indepVar,oComp);
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,indepVar,oComp)
+function ProcRespComplex(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
if (!ProcessIt) return null;
ok2Continue = true;
var i, success;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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;
- indepVar+="i";
+ indepVars+="i";
domain+="x[0,1]";
if (/(\b|[^a-zA-Z])i\^/.test(UserAns)) {
eqAppAlert(\complexPowerAlertMsg,3);
@@ -588,20 +593,21 @@ function ProcRespComplex(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
}
UserAns = ParseInput(UserAns);
CorrAns = ParseInput(CorrAns);
- indepVar = TypeParameters(indepVar);
+ indepVars = TypeParameters(indepVars);
if (!ok2Continue) return null;
success=randomPointCompare(
- n,domain,indepVar,epsilon,CorrAns,UserAns,comp);
+ 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,indepVar,oComp) {
+domain,indepVars,oComp) {
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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;
@@ -621,7 +627,6 @@ domain,indepVar,oComp) {
UserAns = UserAns.replace(/,+/g, ",");
UserAns = UserAns.replace(/,$/, "");
UserAns = UserAns.replace(/^,/, "");
- event.value = UserAns;
var aUserAns = UserAns.split(",");
var aCorrAns = CorrAns.split(",");
if ( aUserAns.length != aCorrAns.length )
@@ -630,10 +635,8 @@ domain,indepVar,oComp) {
var match = 0;
for ( var i=0; i< aCorrAns.length; i++) {
match = 0;
- event.value = aUserAns[i];
- var retn = ProcRespComplex(
- flag,aCorrAns[i],n,epsilon,domain,indepVar,oComp);
- event.value = UserAns;
+ var retn = ProcRespComplex(%
+flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[i]);
if ( retn == null ) return null;
numCorrect += (retn) ? 1 : 0;
}
@@ -641,11 +644,12 @@ domain,indepVar,oComp) {
return notifyField(success, flag, fieldname);
}
function ProcRespSetComplex(flag,CorrAns,n,epsilon,%
-domain,indepVar,oComp) {
+domain,indepVars,oComp) {
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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;
@@ -677,10 +681,8 @@ domain,indepVar,oComp) {
for ( var i=0; i< aCorrAns.length; i++) {
match = 0;
for ( var j=i; j< aUserAns.length; j++) {
- event.value = aUserAns[j];
var retn = ProcRespComplex(%
-flag,aCorrAns[i],n,epsilon,domain,indepVar,oComp);
- event.value = UserAns;
+flag,aCorrAns[i],n,epsilon,domain,indepVars,oComp,aUserAns[j]);
if ( retn == null ) return null;
if (retn==1) {
var temp=aUserAns[j];
@@ -727,21 +729,26 @@ function changeArgs4Cis(str) {
\begin{newsegment}
{dljslib: Support for n-tuple input to Satisfy an Equation}
var bNotifyWrngNumEntries=\satisfyEqNotify;
-function ProcRespEvalEq(flag,CorrAns,n,epsilon,domain,indepVar,oComp){
- var retn=_ProcRespEvalEq(true,flag,CorrAns,n,epsilon,indepVar);
+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,indepVar,oComp) {
- var retn=_ProcRespEvalEq(false,flag,CorrAns,n,epsilon,indepVar);
+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,indepVar)
+function _ProcRespEvalEq(allowzero,flag,CorrAns,n,epsilon,indepVars)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>6); // dps17
+ var UserAns=(bSubstVars)?arguments[6]:event.value;
UserAns = stripWhiteSpace(UserAns);
if (!ok2Continue) return null;
if ( (UserAns.charAt(0) != "\(") || %
@@ -756,7 +763,7 @@ function _ProcRespEvalEq(allowzero,flag,CorrAns,n,epsilon,indepVar)
return eqAppAlert(\eqNonzeroEntries,3), null;
} catch(e) { return syntaxError(), null; }
}
- var _v = TypeParameters(indepVar);
+ var _v = TypeParameters(indepVars);
var _V = _v.split(","); // e.g. _V[0] = "i:x"
var _n = _V.length;
if ( aUserAns.length != _n) {
@@ -777,21 +784,26 @@ function _ProcRespEvalEq(allowzero,flag,CorrAns,n,epsilon,indepVar)
return notifyField(success, flag, fieldname);
}
function ProcRespEvalEqList(flag,CorrAns,n,epsilon,domain,%
-indepVar,oComp) {
- var retn=_ProcRespEvalEqList(true,flag,CorrAns,n,epsilon,indepVar);
+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,%
-indepVar,oComp){
- var retn=_ProcRespEvalEqList(false,flag,CorrAns,n,epsilon,indepVar);
+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,indepVar)
+function _ProcRespEvalEqList(allowzero,flag,CorrAns,n,epsilon,indepVars)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>6); // dps17
+ var UserAns=(bSubstVars)?arguments[6]:event.value;
UserAns = stripWhiteSpace(UserAns);
if (!ok2Continue) return null;
var success;
@@ -805,7 +817,7 @@ function _ProcRespEvalEqList(allowzero,flag,CorrAns,n,epsilon,indepVar)
return eqAppAlert(\eqTooManyEntries,3), null;
if (l > aUserAns.length )
return eqAppAlert(\eqTooFewEntries,3), null;
- var _v = TypeParameters(indepVar);
+ var _v = TypeParameters(indepVars);
var _V = _v.split(","); // e.g. _V[0] = "i:x"
var _n = _V.length;
var testFunc="";
@@ -862,19 +874,20 @@ isCorrect *=Number(success);
\begin{newsegment}
{dljslib: Support for process numbers in the German format}
function ProcRespNumsDe (flag,CorrAns,n,epsilon,%
-domain,indepVar,oComp) {
+domain,indepVars,oComp) {
if (!ProcessIt) return null;
ok2Continue = true;
var fieldname = event.target.name;
- var UserAns = event.value;
+ var bSubstVars=(arguments.length>7); // dps17
+ var UserAns=(bSubstVars)?arguments[7]:event.value;
var success = _ProcRespNumsDe(flag,CorrAns,UserAns,n,%
-epsilon,domain,indepVar,oComp);
+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,indepVar,oComp) {
+domain,indepVars,oComp) {
ok2Continue = true;
CorrAns = ParseInput(CorrAns);
if (!ok2Continue) {
@@ -903,9 +916,9 @@ domain,indepVar,oComp) {
return -1;
}
UserAns = ParseInput(UserAns);
- indepVar = TypeParameters(indepVar);
+ indepVars = TypeParameters(indepVars);
if (!ok2Continue) return null;
- var success=randomPointCompare(n,domain,indepVar,%
+ var success=randomPointCompare(n,domain,indepVars,%
epsilon,CorrAns,UserAns,comp);
if ( success && (typeof(oComp)=="object") %
&& (typeof(oComp.postParse)!="undefined") )
@@ -931,16 +944,17 @@ epsilon,CorrAns,UserAns,comp);
\fi
\begin{library@holding}{factors}
\begin{newsegment}{dljslib: Contrib - Processing Factors as Responses}
-function ProcRespFactors(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcRespFactors(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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,indepVar,oComp);
+domain,indepVars,oComp);
if ( retn == -1 ) return null;
if ( retn == null ) return syntaxError(), null;
if ( retn == 0 ) {
@@ -972,7 +986,7 @@ the proper form");
match = 0;
for ( var j=i; j< aUserAns.length; j++) {
var retn = _ProcResp(flag,aCorrAns[i],aUserAns[j],%
-n,epsilon,domain,indepVar,oComp);
+n,epsilon,domain,indepVars,oComp);
if ( retn == -1 ) return null;
if ( retn == null ) return syntaxError(), null;
if (retn==1) {
@@ -983,7 +997,7 @@ n,epsilon,domain,indepVar,oComp);
}
else {
var retn = _ProcResp(flag,aNegCorrAns[i],aUserAns[j],%
-n,epsilon,domain,indepVar,oComp);
+n,epsilon,domain,indepVars,oComp);
if ( retn == -1 ) return null;
if ( retn == null ) return syntaxError(), null;
if (retn==1) {
@@ -1071,14 +1085,15 @@ function getFactorArray(str) {
\fi
\begin{library@holding}{point}
\begin{newsegment}{dljslib: Contrib - Processing a Point Response}
-function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+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 UserAns = event.value;
+ 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;
@@ -1127,7 +1142,7 @@ function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
eqAppAlert(\pointErrorMsgiii,3);
return null;
}
- indepVar = TypeParameters(indepVar);
+ indepVars = TypeParameters(indepVars);
for (i=0; i<aCorrAns.length; i++) {
aCorrAns[i] = ParseInput(aCorrAns[i]);
if (!ok2Continue) {
@@ -1141,7 +1156,7 @@ function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
}
if (!ok2Continue) return null;
success=randomPointCompare (
- n,domain,indepVar,epsilon,aCorrAns[i],aUserAns[i],comp)
+ n,domain,indepVars,epsilon,aCorrAns[i],aUserAns[i],comp)
if ( success == null ) {
eqAppAlert(\eqSyntaxErrorUndefVar,3); return null; }
truthCnt *= (success) ? 1 : 0;
@@ -1152,18 +1167,19 @@ function ProcPoint(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
\end{library@holding}
\begin{library@holding}{intervals}
\begin{newsegment}{dljslib: Contrib - Processing Interval Responses}
-function ProcRespIntervals(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
+function ProcRespIntervals(flag,CorrAns,n,epsilon,domain,indepVars,oComp)
{
ok2Continue = true;
if (!ProcessIt) return null;
var fieldname = event.target.name;
- var UserAns = event.value;
+ 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");
- indepVar = "x";
+ indepVars = "x";
domain="[0,1]";
var aUserAns = UserAns.split("U");
var aCorrAns = CorrAns.split("U");
@@ -1193,12 +1209,12 @@ function ProcRespIntervals(flag,CorrAns,n,epsilon,domain,indepVar,oComp)
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,indepVar,oComp);
+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,indepVar,oComp);
+n,epsilon,domain,indepVars,oComp);
if (retn2 == -1 ) return null;
if (retn2 == null) return syntaxError(), null;
if (retn2 == 1) matchparts+=1;
diff --git a/texmf-dist/tex/latex/acrotex/edvipdfm.def b/texmf-dist/tex/latex/acrotex/edvipdfm.def
index 994af3d0..113d3c80 100644
--- a/texmf-dist/tex/latex/acrotex/edvipdfm.def
+++ b/texmf-dist/tex/latex/acrotex/edvipdfm.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eforms.sty b/texmf-dist/tex/latex/acrotex/eforms.sty
index 2b2a2bb2..2e1fea4d 100644
--- a/texmf-dist/tex/latex/acrotex/eforms.sty
+++ b/texmf-dist/tex/latex/acrotex/eforms.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,9 +19,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{eforms}
- [2017/02/27 v2.9l Provides general eforms support (dps)]
+ [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}%
@@ -39,6 +40,10 @@
\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}%
@@ -85,10 +90,11 @@
\@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
+ {\ExecuteOptions{dvipsone}}\fi\fi\fi
}%
}
\ProcessOptions
@@ -134,17 +140,20 @@
\@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\previewColor{black}
-\def\ef@Bbox#1#2{%
- \hbox{\ifpreview\setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
+\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\color{\previewColor}%
+ \@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}%
}
@@ -291,8 +300,9 @@
\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=0\else
- \ifx\ef@argii\ef@true\let\ef@mlLink=1\else\let\ef@mlLink=0\fi\fi}
+ \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
@@ -334,7 +344,7 @@
\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=1\else\let\ef@mlLink=0\fi}
+ \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{}
@@ -648,17 +658,60 @@
\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
-\gdef\HEXNAME{efHex}
-\ifpdfmarkup\gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
-\gdef\ef@Hx*1*2{#*1*2}\fi
+ \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{\global\@namedef{efHex#1}{#2}}
+ \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}
- {\typeout{Inputtingpdfdochex.def}}{}}
-\expandafter\ef@inputPDFHEX\fi
+ {\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
@@ -887,14 +940,17 @@
\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\noindent\egroup}
+ \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]\noindent
- \egroup\ignorespaces}
+ \par\nointerlineskip\cgBdry[\ef@dimena]%
+ \egroup\ignorespaces\efSupprIndent}
\def\common@choiceCode{%
/Subtype/Widget
/T (\Fld@name)
@@ -1239,11 +1295,10 @@
\newcommand\setLink{\begingroup
\ef@sanitize@toks\ef@setlinktext
}
-\newcommand{\mlsetLink}{\mlhypertext}
\let\setLinkText\setLink
\newcommand{\ef@setlinktext}[1][]{%
\endgroup\ef@searchmlLink#1\mlLink\end\@nil
- \ifx\ef@mlLink0\def\ef@next{\set@LinkText[#1]}\else
+ \ifx\ef@mlLink\ef@Zero\def\ef@next{\set@LinkText[#1]}\else
\def\ef@next{\mlhypertext[#1]}\fi\ef@next
}
\newcommand\set@LinkText[2][]{%
@@ -1264,6 +1319,11 @@
}%
}
\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
diff --git a/texmf-dist/tex/latex/acrotex/epdfmark.def b/texmf-dist/tex/latex/acrotex/epdfmark.def
index 10e7a3ce..88b4309b 100644
--- a/texmf-dist/tex/latex/acrotex/epdfmark.def
+++ b/texmf-dist/tex/latex/acrotex/epdfmark.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -107,17 +107,19 @@
/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{%
- [ \eq@objdef/Rect [\par@@Rect]
+ \literalps@out{\mllnkcontainer{%
+ [ \eq@objdef\pboxRect
\eq@Border
\eq@QuadPoints % QuadPoints
\common@LinkCode
/Subtype /Link
- /ANN pdfmark}%
+ /ANN pdfmark}}%
\to@insertStrucTabOrder{Link}\endgroup
}
\endinput
diff --git a/texmf-dist/tex/latex/acrotex/epdftex.def b/texmf-dist/tex/latex/acrotex/epdftex.def
index 923db2b2..7edb9d9c 100644
--- a/texmf-dist/tex/latex/acrotex/epdftex.def
+++ b/texmf-dist/tex/latex/acrotex/epdftex.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqbr.def b/texmf-dist/tex/latex/acrotex/eqbr.def
index 4cb03b52..650f2481 100644
--- a/texmf-dist/tex/latex/acrotex/eqbr.def
+++ b/texmf-dist/tex/latex/acrotex/eqbr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqcat.def b/texmf-dist/tex/latex/acrotex/eqcat.def
index d3d89c64..dce3df50 100644
--- a/texmf-dist/tex/latex/acrotex/eqcat.def
+++ b/texmf-dist/tex/latex/acrotex/eqcat.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqcolor.def b/texmf-dist/tex/latex/acrotex/eqcolor.def
index d68dff1e..c95b02b0 100644
--- a/texmf-dist/tex/latex/acrotex/eqcolor.def
+++ b/texmf-dist/tex/latex/acrotex/eqcolor.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -17,6 +17,7 @@
%% 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{%
diff --git a/texmf-dist/tex/latex/acrotex/eqcz.def b/texmf-dist/tex/latex/acrotex/eqcz.def
index a6efb75e..8ec760a9 100644
--- a/texmf-dist/tex/latex/acrotex/eqcz.def
+++ b/texmf-dist/tex/latex/acrotex/eqcz.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqda.def b/texmf-dist/tex/latex/acrotex/eqda.def
index 461c4774..7bee63ed 100644
--- a/texmf-dist/tex/latex/acrotex/eqda.def
+++ b/texmf-dist/tex/latex/acrotex/eqda.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqde.def b/texmf-dist/tex/latex/acrotex/eqde.def
index 960cf0b2..839eea11 100644
--- a/texmf-dist/tex/latex/acrotex/eqde.def
+++ b/texmf-dist/tex/latex/acrotex/eqde.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqes.def b/texmf-dist/tex/latex/acrotex/eqes.def
index 966690d0..195b6265 100644
--- a/texmf-dist/tex/latex/acrotex/eqes.def
+++ b/texmf-dist/tex/latex/acrotex/eqes.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqexam.def b/texmf-dist/tex/latex/acrotex/eqexam.def
index 13b7664f..54fe6082 100644
--- a/texmf-dist/tex/latex/acrotex/eqexam.def
+++ b/texmf-dist/tex/latex/acrotex/eqexam.def
@@ -7,14 +7,19 @@
%% exerquiz.dtx (with options: `eqexam')
%%
\ProvidesFile{eqexam.def}
- [2017/03/16 v7.8g %
+ [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 % dps new
+\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse
\newif\ifnocorrections \nocorrectionsfalse
+\@ifundefined{ifeqe@flextended}{\newif\ifeqe@flextended
+ \eqe@flextendedfalse}{}
+\@ifundefined{ifcont@nnot}{\newif\ifcont@nnot \cont@nnotfalse}{}
+\@ifundefined{if@eqalignfilllinestoleft}{\newif\if@eqalignfilllinestoleft
+ \@eqalignfilllinestoleftfalse}{}
\newif\ifkeepdeclaredvspacing \keepdeclaredvspacingfalse
\newif\ifeq@nolink \eq@nolinkfalse
\def\eq@ckglobalhide{\ifeq@globalshowsolutions\eq@hidesolutionfalse\fi}
@@ -23,7 +28,9 @@
\newif\ifIsRespBox \global\IsRespBoxfalse
\def\SolutionsAfter{\eq@solutionsaftertrue\eq@nolinktrue}
\newif\ifcqSA\cqSAfalse
-\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse}
+\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
@@ -44,9 +51,9 @@
\def\exSolafterDefault{#1}\resetSolnAfterToDefault}
\exsolafterDefault{\textit{Solution}:}
\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
-\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand\setDefShortQuizLabelName[1]%
{\def\eq@defaultShortQuizLabelName{#1}}
\setDefShortQuizLabelName{Quiz}
@@ -351,7 +358,11 @@
\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
@@ -362,6 +373,7 @@
\set@typeset@protect
}
\def\eqExerSolnHeaderList{%
+ \ifmakeExSlLocal\protect\begingroup^^J\fi
\protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
\solnItemMngt\protect\exerSolnHeader{\exsecrunhead}%
{ex.\the@exno\thepartno}{\exsllabelformatwp}%
@@ -378,9 +390,23 @@
\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
\let\solnhspace\space
\let\solnspace\space
-\def\solnexer@woparts{\def\bLeaveVspace{x}% = no vertical space added
+\let\exsolnonceonlytophook\relax
+\def\solnexer@woparts{%
+ \ifanswerkey\ifeqe@flextended\ifcont@nnot
+ \ifx\solutionparshape\@empty\else % dpsj8
+ \pushEnvir
+ \everypar{}\if@eqalignfilllinestoleft\else
+ \parshape=1 \leadinIndent \linewidth\fi
+ \popEnvir
+ \fi\fi\fi\fi\def\bLeaveVspace{x}% = no vertical space added
+ \exsolnonceonlytophook % dps27
+ \global\let\exsolnonceonlytophook\relax
+ \@ifundefined{KV@eqefillLines@bgonly}{}
+ {\ifKV@eqefillLines@bgonly\ifvmode\else
+ \par\leavevmode\strut\fi\fi
+ \ifKV@eqefillLines@outlineonly\leavevmode\strut\fi}%
\ifeq@ckSolnVspace
- \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%
+ \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%]
{\solnexer@@woparts[\null]}}\else
\def\eq@next{\solnexer@@woparts[\null]}\fi
\eq@next
@@ -397,26 +423,26 @@
{\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
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
\ifdim\sameVspace>0pt
- \let\bLeaveVspace\@empty
- \def\leavevspace{%
- \ifx\eq@insertverticalspace\eq@YES\par
- \eqPriorVspace{#1}{\nobreak\noindent
- \ifx\soln@keys@nLines\@empty
- \if@eqlinedfiller
- \def\eq@lines@next{\vspaceFiller{#1}}\else
- \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
- {\vspaceFiller{#1}}}\fi
- \else
- \def\eq@lines@next{\eq@linesXPgs}%
- \fi\eq@lines@next
- }%
- \fi
- }%
- \fi
+ \let\bLeaveVspace\@empty
+ \def\leavevspace{%
+ \ifx\eq@insertverticalspace\eq@YES\par\eq@quessolskip
+ \eqPriorVspace{#1}{\nobreak\noindent
+ \if@eqlinedfiller
+ \ifx\soln@keys@nLines\@empty
+ \def\eq@lines@next{\vspaceFiller{#1}}\else
+ \def\eq@lines@next{\eq@linesXPgs}\fi
+ \else
+ \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
+ {\vspaceFiller{#1}}}%
+ \fi\eq@lines@next}%
+ \fi
+ }\expandafter\leavevspace % dpsj6
+ \fi
}
\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
\let\soln@keys@nLines\@empty
@@ -458,17 +484,21 @@
\let\soln@keys@nLines\@empty\fi
\xdef\sameVspace{\XKV@rm}%
}{\eqSolnForEqexam{#1}}%
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
- \ifvspacewithsolns\vspaceFmt{\sameVspace}\fi
- \ifeq@nosolutions\ifeq@solutionsafter\else
- \vspaceFmt{\sameVspace}\fi\fi
\fi\fi
\solnexer@@@woparts
}
\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
- \def\solnsafterSkipAmt{\the\@tempdima}%
- \def\solutionsafterSkip{\vskip#1\relax}}
+ \edef\solnsafterSkipAmt{\the\@tempdima}%
+ \def\solutionsafterSkip{\vskip\solnsafterSkipAmt\relax}}
\solnsafterSkip{\smallskipamount}
+\def\@solnafterSkipOnce#1{\setlength{\@tempdima}{#1}%
+ \xdef\@solnafterSkipOnceAmt{\the\@tempdima}}%
+\def\@@solnafterSkipOnce{\vskip\@solnafterSkipOnceAmt\relax %dpsj3
+ \gdef\@solnafterSkipOnceAmt{0pt}}
+\def\@solnafterSkipOnceAmt{0pt}
+\def\quessolSkip#1{\setlength{\@tempdima}{#1}%
+ \edef\eq@quessolskip{\noexpand\vskip\the\@tempdima\relax}}
+\def\eq@quessolskip{\vskip\smallskipamount}
\def\eqe@debugVertSkip#1{}
\def\eqe@showEndHere#1{#1}
\def\eqe@setStartSolns{%
@@ -492,67 +522,80 @@
\let\priorexsolafterTab\@empty
\let\priorexsolafterSngl\@empty
\def\eq@Hid{H}\def\eq@hid{h}
-\def\solnexer@@@woparts{%
- \global\thereissolutiontrue
- \def\exerwparts@cols{0}%
- \let\verbatim@out\ex@solns
- \if\currhideopt\eq@Hid
- \let\minVspacet@bs\@empty
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \def\eq@next{\procsoln}%
+\def\solutionafterExCmds#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\eqSolnExCmds\relax\else
+ \def\eqSolnExCmds{#1}\fi}
+\let\eqSolnExCmds\relax
+\def\eq@b@ddCodeSpecialDef#1{#1}% 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
- \eq@ckglobalhide
- \ifeq@hidesolution
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \else
- \ifx\bLeaveVspace\@empty\leavevspace\fi
- \ifeq@solutionsafter\else
- \ifx\eq@@CommonCmd\@empty\else
- \set@display@protect
- \immediate\write\verbatim@out{\eq@@CommonCmd}%
- \set@typeset@protect
- \fi
- \fi
- \let\procsoln\verbatimwrite
- \let\endprocsoln\endverbatimwrite
- \fi
- \def\eq@next{%
- \ifeq@solutionsafter%\par
- \removelastskip\removelastparskip
- \cqSAtrue\eqCQDeclarations
- \declCopyQues{\input{\cq@CutName}}%
- \ifx\exsolafter\@empty
- \ifdim\sameVspace=0pt\eqe@setStartSolns
- \else
- \solutionsafterSkip
- \eqe@setStartSolns
- \fi
- \else\par\kern0pt
- \solutionsafterSkip
- \noindent\strut\eqe@setStartSolns
- \fi
- \parskip\eqeques@parsep
- \ifx\endparts\endexercise@parts@tabular
- \eq@setPrbSolnAftrIndnt
- \restorejustify
- \fi
- \ifx\endparts\endexercise@parts@tabular\expandafter
- \priorexsolafterTab\else
- \ifx\endparts\endexercise@parts@list\expandafter
- \priorexsolafterList\else\expandafter
- \priorexsolafterSngl\fi\fi
- \exsolafter\space\ignorespaces
- \solutionparshape
- \else
- \eqExerSolnHeader
- \global\let\eqExerSolnHeader\@empty
- \global\therearesolutionstrue\expandafter\procsoln
- \fi
- }%
+ \ifeq@solutionsafter\else
+ \ifx\eq@@CommonCmd\@empty\else
+ \set@display@protect
+ \immediate\write\verbatim@out{\eq@@CommonCmd}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \let\procsoln\verbatimwrite
+ \let\endprocsoln\endverbatimwrite
\fi
-\eq@next}
+ \def\eq@next{%
+ \ifeq@solutionsafter
+ \let\procsoln\relax % 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
@@ -564,46 +607,59 @@
{\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
\exrtnlabelformat\fi}}%
\protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
-}
-\def\endsolnexer@woparts{%
- \if\currhideopt H%
- \ifkeepdeclaredvspacing\vskip\sameVspace\fi
- \csname endprocsoln\endcsname
- \else
- \ifeq@solutionsafter
- \if\exerstar*%
- \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
- \eq@fititin{\mbox{\exrtnlabelformat}}\fi
- \ifx\istabularexer\eq@YES\kern0pt\else\par\fi
-\ifx\minVspacet@bs\@empty
- \ifkeepdeclaredvspacing
- \@tempdima\pagetotal
- \advance\@tempdima-\eq@startSoln
- \@tempdimb\sameVspace\relax
- \ifdim\@tempdimb>1sp\relax
- \advance\@tempdimb-\@tempdima
- \ifdim\@tempdimb>0pt\vglue\@tempdimb\kern0pt
- \let\eqe@showEndHere\@gobble
- \edef\tmp@exp{\noexpand\marginpar{%
- \noexpand\smash{e: adj \the\@tempdimb}}}%
- \eqe@debugVertSkip{\tmp@exp}%
- \fi
- \fi
- \fi
- \eqe@showEndHere{\eqe@debugVertSkip{\marginpar{\smash{e}}}}%
-\fi
- \else
- \endprocsoln
- \eq@ckglobalhide
- \ifeq@hidesolution\else
- \endsolnexerhookaux
- \set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnTrailer}%
- \set@typeset@protect
+ \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
-\pkg@endsolnexerhook\endsolnexerhook}
+ \kdvsp@Restore % dpsj20
+ \endsolnexerhook\penalty0\relax}
\let\eq@exerstarEnv\relax
\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
{\endexercise}
@@ -624,7 +680,7 @@
parts environment}{Use \string\tableadin\space
in the problem* environment of eqexam.}%
}
-\let\istabularexer\eq@NO % dps 2016/12/16
+\let\istabularexer\eq@NO
\def\exercise@parts{\let\rlspar\relax
\ifx\solutionparshape\@empty
\let\isitleadin\eq@NO
@@ -632,14 +688,14 @@
\else\let\isitleadin\eq@YES\fi
\rlspar\removelastskip\par
\if\isitleadin\eq@YES
- \def\eqparts@topsep{0pt}% dps88
- \vskip\eqparts@itemsep\relax\fi % dps88
+ \def\eqparts@topsep{0pt}%
+ \vskip\eqparts@itemsep\relax\fi
\topofpartshook
- \let\itsExerParts\eq@YES % dps17
+ \let\itsExerParts\eq@YES
\global\let\@listiiredefined\eq@NO
\def\exerwparts@cols{0}\@ifnextchar[%
{%
- \if@tableadinitem\else\removelastparskip\fi % dps11
+ \if@tableadinitem\else\removelastparskip\fi
\let\endparts\endexercise@parts@tabular\exercise@parts@tabular@}%
{\let\endparts\endexercise@parts@list\exercise@parts@list}}
\def\eq@extralabelsep{0pt}
@@ -661,16 +717,16 @@
\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
\def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
\@ifnextchar[{\@ckhide}{\eq@item}}
-\newcommand{\partsitemsep}[1]{{% dps88
+\newcommand{\partsitemsep}[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@itemsep{\the\@tempdima}}}
\let\eqpartsitemsep\partsitemsep
\def\eqparts@itemsep{0pt}
-\newcommand\partsparsep[1]{{% dps88
+\newcommand\partsparsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@parsep{\the\@tempdima}}}
\def\eqparts@parsep{0pt}
-\newcommand\partstopsep[1]{{% dps88
+\newcommand\partstopsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@topsep{\the\@tempdima}}}
\def\eqparts@topsep{3pt}
@@ -718,9 +774,9 @@
\makebox[\widthOfParts][r]{\eqexlisttabheader}%
}{%
\usecounter{partno}%
- \if\isitleadin\eq@YES % dps7
+ \if\isitleadin\eq@YES
\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}% dps7
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
\if\itsforleadinitem\eqe@YES\setcounter{partno}{\fliPartNo}\else
\setcounter{partno}{1}\fi\fi
\let\leadinitem\eq@leadinitemparts
@@ -797,12 +853,12 @@
\def\inittabMark{\global\eq@extabColCnt=0 }
\def\resettabMark{\global\eq@extabColCnt=1 }
\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
- \ifnum\exerwparts@cols>0\relax % dps cq
+ \ifnum\exerwparts@cols>0\relax
\ifx\eq@tabMarkChk\@gobble
\def\eq@atnext{\expandafter
\tabularnewline\expandafter[#1]}\else
\def\eq@atnext{\resettabMark\tabularnewline
- \noalign{\expandafter\kern#1}}\fi % dps7
+ \noalign{\expandafter\kern#1}}\fi
\expandafter\eq@atnext\fi}
\def\eq@tabMark{%
\ifnum\eq@extabColCnt=0\relax
@@ -831,7 +887,7 @@
\newenvironment{exercise@parts@tabular}{%
\setcounter{partno}{0}%
\def\tablrIndent{\hglue\prtsIndntSep\relax}%
- \if\isitleadin\eq@YES % dps7
+ \if\isitleadin\eq@YES
\if$\the\everypar$\let\tablrIndent\relax\fi
\setcounter{partno}{1}\fi
\let\leadinitem\eq@leadinitemparts
@@ -861,9 +917,9 @@
\tabcolsep\@tempdima
\multiply\@tempdima\@tempcnta
\advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by\exerwparts@cols
- \advance\eq@tmpdima\prtsIndntSep\relax
- \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi % dps11
+ \divide\eq@tmpdima by\exerwparts@cols\relax %dpsj3
+ \edef\widthOfPartsBox{\the\eq@tmpdima}% dpsj2
+ \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi
\noindent\normalbaselines\kern0pt
\prior@parts@hook\abovepartshook
\tablrIndent\tabular[t]{@{}*{\exerwparts@cols}{>{\setTabulrSolnEnv
@@ -894,7 +950,6 @@
\eq@tmpdima=\wd\eq@tmpbox
\addtolength\eq@tmplength{\eq@extralabelsep}%
\xdef\partshangamount{\the\eq@tmplength}%
- \advance\linewidth-\eq@tmplength
\parshape \@ne 0pt \linewidth
\everypar{\parshape \@ne 0pt \linewidth}%
\eq@setPrbSolnAftrIndnt
@@ -980,7 +1035,7 @@
\fi
\markright{\exsectitle}%
\ifx\webnewpage\relax
- \def\webnewpage{\let\webnewpage\newpage}%
+ \def\webnewpage{\global\let\webnewpage\newpage}%
\fi
\priorexsectitle\exerSolnsHeadnToc\priorexslinput
\InputIfFileExists{\jobname.sol}
@@ -1078,6 +1133,7 @@
\def\@shortquizCnt{0}
\def\@sqGenBaseName{eqSqBn\@shortquizCnt}
\let\sqhspace\space
+\let\ListOfSQuizNames\@empty
\newenvironment{shortquiz}
{%
\xdef\eq@pageThisQ{\the\c@page}%
@@ -1102,8 +1158,11 @@
\protected@edef\@currentlabelname{\@currentlabelname}\fi
}
\let\isQZ=q \let\isSQZ=s
+\let\eqQuizType\relax
\def\@@shortquiz[#1]{%\begingroup
\gdef\oField{#1}\gdef\curr@quiz{#1}\gdef\currQuiz{#1}%
+ \edef\tmp@Exp{\noexpand\g@addto@macro\noexpand
+ \ListOfSQuizNames{,#1}}\tmp@Exp
\global\let\eqQzQuesList\@empty
\let\eq@AddProbToQzQuesList\relax
\edef\@currentlabel{\@shortquizCnt}%
@@ -1149,6 +1208,9 @@
\let\prior@eqQt\@empty
\let\prior@eqSQt\@empty
\def\sqsolafterhspace{\space}
+\newif\ifmakeQzSlLocal \makeQzSlLocalfalse
+\def\makeQzSolnsLocalOn{\makeQzSlLocaltrue}
+\def\makeQzSolnsLocalOff{\makeQzSlLocalfalse}
\def\solution@sq{\let\eq@next\relax
\ifx\@qzsolndest\@empty
\PackageWarning{exerquiz}%
@@ -1164,6 +1226,7 @@
\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
@@ -1208,6 +1271,7 @@
{\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
\fi
\ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+ \ifmakeQzSlLocal\protect\endgroup^^J\fi
}
\let\eqSQt\@gobble
\let\endeqSQt\relax
@@ -1308,8 +1372,8 @@
\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
+\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
@@ -1328,7 +1392,7 @@
\setlength{\itemsep}{0pt}\setlength{\partopsep}{0pt}%
\setlength{\listparindent}{\parindent}%
\ifnum\exerwparts@cols>1\relax
- \ifx\itsExerParts\eq@YES % dps17
+ \ifx\itsExerParts\eq@YES
\setlength{\leftmargin}{\labelwidth}\else
\setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
\else
@@ -1340,15 +1404,15 @@
}%
}%
{\endlist\setcounter{quizno}{0}\eq@answersEndHook}
-\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}%
- \xdef\Ans@choice{#2}\leavevmode\@Ans
+\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}\xdef\Ans@choice{#2}%
+ \leavevmode\@Ans
}
\newcommand\sqtabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
\def\sq@tabsep{1.5pt}\else\def\sq@tabsep{#1}\fi}
\sqtabsep{1.5pt}
\def\sqTabPos#1{\def\sq@TabPos{[#1]}}\sqTabPos{}
\def\answers@@sq@tabular#1{%
- \ifinner % dps17
+ \ifinner
\ifx\itsExerParts\eq@YES\par\removelastskip
\removelastparskip\vskip\aboveanswersSkip\fi
\else\par\removelastskip\removelastparskip
diff --git a/texmf-dist/tex/latex/acrotex/eqfin.def b/texmf-dist/tex/latex/acrotex/eqfin.def
index 052d634b..9dc6a740 100644
--- a/texmf-dist/tex/latex/acrotex/eqfin.def
+++ b/texmf-dist/tex/latex/acrotex/eqfin.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqfr.def b/texmf-dist/tex/latex/acrotex/eqfr.def
index 75d5978a..701f798e 100644
--- a/texmf-dist/tex/latex/acrotex/eqfr.def
+++ b/texmf-dist/tex/latex/acrotex/eqfr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqit.def b/texmf-dist/tex/latex/acrotex/eqit.def
index 025cf02a..5fda30b2 100644
--- a/texmf-dist/tex/latex/acrotex/eqit.def
+++ b/texmf-dist/tex/latex/acrotex/eqit.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqnl.def b/texmf-dist/tex/latex/acrotex/eqnl.def
index c5670fe9..6cd37a7c 100644
--- a/texmf-dist/tex/latex/acrotex/eqnl.def
+++ b/texmf-dist/tex/latex/acrotex/eqnl.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqno.def b/texmf-dist/tex/latex/acrotex/eqno.def
index ffaea3d8..1f29f357 100644
--- a/texmf-dist/tex/latex/acrotex/eqno.def
+++ b/texmf-dist/tex/latex/acrotex/eqno.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqpo.def b/texmf-dist/tex/latex/acrotex/eqpo.def
index ce866ed1..dc495ea4 100644
--- a/texmf-dist/tex/latex/acrotex/eqpo.def
+++ b/texmf-dist/tex/latex/acrotex/eqpo.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqru.def b/texmf-dist/tex/latex/acrotex/eqru.def
index d1ccae6c..d6416359 100644
--- a/texmf-dist/tex/latex/acrotex/eqru.def
+++ b/texmf-dist/tex/latex/acrotex/eqru.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/eqtr.def b/texmf-dist/tex/latex/acrotex/eqtr.def
index 19984136..d587b854 100644
--- a/texmf-dist/tex/latex/acrotex/eqtr.def
+++ b/texmf-dist/tex/latex/acrotex/eqtr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,6 +18,7 @@
%% 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 %%
diff --git a/texmf-dist/tex/latex/acrotex/exerquiz.sty b/texmf-dist/tex/latex/acrotex/exerquiz.sty
index 52977314..8583fa71 100644
--- a/texmf-dist/tex/latex/acrotex/exerquiz.sty
+++ b/texmf-dist/tex/latex/acrotex/exerquiz.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,11 +19,12 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{exerquiz}
- [2017/03/16 v7.8g %
+ [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}%
@@ -52,6 +53,7 @@
\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,
@@ -66,6 +68,8 @@
\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}}
@@ -100,6 +104,11 @@
\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}%
@@ -227,8 +236,13 @@
\providecommand\turnProofingOff{\eq@proofingfalse}
\newif\ifeqforpaper \eqforpaperfalse
\newif\ifeq@noforms \eq@noformsfalse
-\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse % dps new
+\newif\ifeq@noquizsolutions \eq@noquizsolutionsfalse
\newif\ifnocorrections \nocorrectionsfalse
+\@ifundefined{ifeqe@flextended}{\newif\ifeqe@flextended
+ \eqe@flextendedfalse}{}
+\@ifundefined{ifcont@nnot}{\newif\ifcont@nnot \cont@nnotfalse}{}
+\@ifundefined{if@eqalignfilllinestoleft}{\newif\if@eqalignfilllinestoleft
+ \@eqalignfilllinestoleftfalse}{}
\newif\ifkeepdeclaredvspacing \keepdeclaredvspacingfalse
\newif\ifeq@nolink \eq@nolinkfalse
\def\eq@ckglobalhide{\ifeq@globalshowsolutions\eq@hidesolutionfalse\fi}
@@ -237,7 +251,9 @@
\newif\ifIsRespBox \global\IsRespBoxfalse
\def\SolutionsAfter{\eq@solutionsaftertrue\eq@nolinktrue}
\newif\ifcqSA\cqSAfalse
-\def\SolutionsAtEnd{\eq@solutionsafterfalse\eq@nolinkfalse}
+\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
@@ -265,17 +281,18 @@
\@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
+ {\ExecuteOptions{dvipsone}}}\fi\fi\fi
}
\ProcessOptions
\RequirePackage{array}
\RequirePackage{\eq@ColorPackage}
-\RequirePackage{verbatim}
\RequirePackage{comment}
+\RequirePackage{verbatim}
\RequirePackage{hyperref}
\RequirePackage{amssymb}% used for return symbols
\RequirePackage{eforms}[2012/06/20]
@@ -288,6 +305,16 @@
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
@@ -307,9 +334,9 @@
\def\exSolafterDefault{#1}\resetSolnAfterToDefault}
\exsolafterDefault{\textit{Solution}:}
\newcommand{\renameSolnAfterTo}[1]{\def\exsolafter{#1}}
-\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand{\adjDisplayBelow}{\vskip-\lastskip\vskip-\baselineskip}
\newcommand{\adjDisplayBelowPlus}{\adjDisplayBelow\recoverDisplayBelow}
+\def\recoverDisplayBelow{\vskip\belowdisplayskip}
\newcommand\eq@sqslsectitle{Solutions to Quizzes}
\newcommand\sqslsectitle{\eq@sqslsectitle}
\newcommand\eq@sqslsecrunhead{Solutions to Quizzes}
@@ -388,7 +415,7 @@
make at most " + n + " selections."}
\newcommand{\defaultReqFormMsg}{%
"The expression is not in the expected form."}
-\typeout{^^Jexerquiz: * Using \eq@driver\space option *^^J}
+\PackageInfo{exerquiz}{* Using \eq@driver\space option *}
\ifsolutionsonly
\InputIfFileExists{\jobname_xdefs.cut}{%
\typeout{^^JExerquiz|Eqexam: Reading \jobname_xdefs.cut^^J}}
@@ -731,7 +758,11 @@
\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
@@ -742,6 +773,7 @@
\set@typeset@protect
}
\def\eqExerSolnHeaderList{%
+ \ifmakeExSlLocal\protect\begingroup^^J\fi
\protect\eqEXt{\eqExtArg}{\eqFilterArg}\protect
\solnItemMngt\protect\exerSolnHeader{\exsecrunhead}%
{ex.\the@exno\thepartno}{\exsllabelformatwp}%
@@ -758,9 +790,23 @@
\def\noSolnOpt{\global\eq@ckSolnVspacefalse}
\let\solnhspace\space
\let\solnspace\space
-\def\solnexer@woparts{\def\bLeaveVspace{x}% = no vertical space added
+\let\exsolnonceonlytophook\relax
+\def\solnexer@woparts{%
+ \ifanswerkey\ifeqe@flextended\ifcont@nnot
+ \ifx\solutionparshape\@empty\else % dpsj8
+ \pushEnvir
+ \everypar{}\if@eqalignfilllinestoleft\else
+ \parshape=1 \leadinIndent \linewidth\fi
+ \popEnvir
+ \fi\fi\fi\fi\def\bLeaveVspace{x}% = no vertical space added
+ \exsolnonceonlytophook % dps27
+ \global\let\exsolnonceonlytophook\relax
+ \@ifundefined{KV@eqefillLines@bgonly}{}
+ {\ifKV@eqefillLines@bgonly\ifvmode\else
+ \par\leavevmode\strut\fi\fi
+ \ifKV@eqefillLines@outlineonly\leavevmode\strut\fi}%
\ifeq@ckSolnVspace
- \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%
+ \def\eq@next{\@ifnextchar[{\solnexer@@woparts}%]
{\solnexer@@woparts[\null]}}\else
\def\eq@next{\solnexer@@woparts[\null]}\fi
\eq@next
@@ -777,26 +823,26 @@
{\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
+ \ifx\solutionparshape\@empty\else
+ \advance\linewidth-\leadinIndentPrtSep\fi
\ifdim\sameVspace>0pt
- \let\bLeaveVspace\@empty
- \def\leavevspace{%
- \ifx\eq@insertverticalspace\eq@YES\par
- \eqPriorVspace{#1}{\nobreak\noindent
- \ifx\soln@keys@nLines\@empty
- \if@eqlinedfiller
- \def\eq@lines@next{\vspaceFiller{#1}}\else
- \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
- {\vspaceFiller{#1}}}\fi
- \else
- \def\eq@lines@next{\eq@linesXPgs}%
- \fi\eq@lines@next
- }%
- \fi
- }%
- \fi
+ \let\bLeaveVspace\@empty
+ \def\leavevspace{%
+ \ifx\eq@insertverticalspace\eq@YES\par\eq@quessolskip
+ \eqPriorVspace{#1}{\nobreak\noindent
+ \if@eqlinedfiller
+ \ifx\soln@keys@nLines\@empty
+ \def\eq@lines@next{\vspaceFiller{#1}}\else
+ \def\eq@lines@next{\eq@linesXPgs}\fi
+ \else
+ \def\eq@lines@next{\parbox[b][#1][t]{\linewidth}
+ {\vspaceFiller{#1}}}%
+ \fi\eq@lines@next}%
+ \fi
+ }\expandafter\leavevspace % dpsj6
+ \fi
}
\define@key{soln@keys}{nLines}[]{\def\soln@keys@nLines{#1}}
\let\soln@keys@nLines\@empty
@@ -838,17 +884,21 @@
\let\soln@keys@nLines\@empty\fi
\xdef\sameVspace{\XKV@rm}%
}{\eqSolnForEqexam{#1}}%
- \ifx\sameVspace\@empty\gdef\sameVspace{0pt}\fi
- \ifvspacewithsolns\vspaceFmt{\sameVspace}\fi
- \ifeq@nosolutions\ifeq@solutionsafter\else
- \vspaceFmt{\sameVspace}\fi\fi
\fi\fi
\solnexer@@@woparts
}
\def\solnsafterSkip#1{\setlength{\@tempdima}{#1}%
- \def\solnsafterSkipAmt{\the\@tempdima}%
- \def\solutionsafterSkip{\vskip#1\relax}}
+ \edef\solnsafterSkipAmt{\the\@tempdima}%
+ \def\solutionsafterSkip{\vskip\solnsafterSkipAmt\relax}}
\solnsafterSkip{\smallskipamount}
+\def\@solnafterSkipOnce#1{\setlength{\@tempdima}{#1}%
+ \xdef\@solnafterSkipOnceAmt{\the\@tempdima}}%
+\def\@@solnafterSkipOnce{\vskip\@solnafterSkipOnceAmt\relax %dpsj3
+ \gdef\@solnafterSkipOnceAmt{0pt}}
+\def\@solnafterSkipOnceAmt{0pt}
+\def\quessolSkip#1{\setlength{\@tempdima}{#1}%
+ \edef\eq@quessolskip{\noexpand\vskip\the\@tempdima\relax}}
+\def\eq@quessolskip{\vskip\smallskipamount}
\def\eqe@debugVertSkip#1{}
\def\eqe@showEndHere#1{#1}
\def\eqe@setStartSolns{%
@@ -872,67 +922,80 @@
\let\priorexsolafterTab\@empty
\let\priorexsolafterSngl\@empty
\def\eq@Hid{H}\def\eq@hid{h}
-\def\solnexer@@@woparts{%
- \global\thereissolutiontrue
- \def\exerwparts@cols{0}%
- \let\verbatim@out\ex@solns
- \if\currhideopt\eq@Hid
- \let\minVspacet@bs\@empty
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \def\eq@next{\procsoln}%
+\def\solutionafterExCmds#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\eqSolnExCmds\relax\else
+ \def\eqSolnExCmds{#1}\fi}
+\let\eqSolnExCmds\relax
+\def\eq@b@ddCodeSpecialDef#1{#1}% 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
- \eq@ckglobalhide
- \ifeq@hidesolution
- \let\procsoln\eqSavedComment
- \let\endprocsoln\eqSavedEndCommet
- \else
- \ifx\bLeaveVspace\@empty\leavevspace\fi
- \ifeq@solutionsafter\else
- \ifx\eq@@CommonCmd\@empty\else
- \set@display@protect
- \immediate\write\verbatim@out{\eq@@CommonCmd}%
- \set@typeset@protect
- \fi
- \fi
- \let\procsoln\verbatimwrite
- \let\endprocsoln\endverbatimwrite
- \fi
- \def\eq@next{%
- \ifeq@solutionsafter%\par
- \removelastskip\removelastparskip
- \cqSAtrue\eqCQDeclarations
- \declCopyQues{\input{\cq@CutName}}%
- \ifx\exsolafter\@empty
- \ifdim\sameVspace=0pt\eqe@setStartSolns
- \else
- \solutionsafterSkip
- \eqe@setStartSolns
- \fi
- \else\par\kern0pt
- \solutionsafterSkip
- \noindent\strut\eqe@setStartSolns
- \fi
- \parskip\eqeques@parsep
- \ifx\endparts\endexercise@parts@tabular
- \eq@setPrbSolnAftrIndnt
- \restorejustify
- \fi
- \ifx\endparts\endexercise@parts@tabular\expandafter
- \priorexsolafterTab\else
- \ifx\endparts\endexercise@parts@list\expandafter
- \priorexsolafterList\else\expandafter
- \priorexsolafterSngl\fi\fi
- \exsolafter\space\ignorespaces
- \solutionparshape
- \else
- \eqExerSolnHeader
- \global\let\eqExerSolnHeader\@empty
- \global\therearesolutionstrue\expandafter\procsoln
- \fi
- }%
+ \ifeq@solutionsafter\else
+ \ifx\eq@@CommonCmd\@empty\else
+ \set@display@protect
+ \immediate\write\verbatim@out{\eq@@CommonCmd}%
+ \set@typeset@protect
+ \fi
+ \fi
+ \let\procsoln\verbatimwrite
+ \let\endprocsoln\endverbatimwrite
\fi
-\eq@next}
+ \def\eq@next{%
+ \ifeq@solutionsafter
+ \let\procsoln\relax % 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
@@ -948,46 +1011,59 @@
{\protect\mbox{\if\exerstar*\exrtnlabelformatwp\else
\exrtnlabelformat\fi}}%
\protect\endeqEXt\ifeqforpaper\protect\par{\belowexsolnskip}\fi^^J%
-}
-\def\endsolnexer@woparts{%
- \if\currhideopt H%
- \ifkeepdeclaredvspacing\vskip\sameVspace\fi
- \csname endprocsoln\endcsname
- \else
- \ifeq@solutionsafter
- \if\exerstar*%
- \eq@fititin{\mbox{\exrtnlabelformatwp}}\else
- \eq@fititin{\mbox{\exrtnlabelformat}}\fi
- \ifx\istabularexer\eq@YES\kern0pt\else\par\fi
-\ifx\minVspacet@bs\@empty
- \ifkeepdeclaredvspacing
- \@tempdima\pagetotal
- \advance\@tempdima-\eq@startSoln
- \@tempdimb\sameVspace\relax
- \ifdim\@tempdimb>1sp\relax
- \advance\@tempdimb-\@tempdima
- \ifdim\@tempdimb>0pt\vglue\@tempdimb\kern0pt
- \let\eqe@showEndHere\@gobble
- \edef\tmp@exp{\noexpand\marginpar{%
- \noexpand\smash{e: adj \the\@tempdimb}}}%
- \eqe@debugVertSkip{\tmp@exp}%
- \fi
- \fi
- \fi
- \eqe@showEndHere{\eqe@debugVertSkip{\marginpar{\smash{e}}}}%
-\fi
- \else
- \endprocsoln
- \eq@ckglobalhide
- \ifeq@hidesolution\else
- \endsolnexerhookaux
- \set@display@protect
- \immediate\write\verbatim@out{\eqExerSolnTrailer}%
- \set@typeset@protect
+ \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
-\pkg@endsolnexerhook\endsolnexerhook}
+ \kdvsp@Restore % dpsj20
+ \endsolnexerhook\penalty0\relax}
\let\eq@exerstarEnv\relax
\newenvironment{exercise*}{\def\eq@exerstarEnv{*}\exercise}
{\endexercise}
@@ -1008,7 +1084,7 @@
parts environment}{Use \string\tableadin\space
in the problem* environment of eqexam.}%
}
-\let\istabularexer\eq@NO % dps 2016/12/16
+\let\istabularexer\eq@NO
\def\exercise@parts{\let\rlspar\relax
\ifx\solutionparshape\@empty
\let\isitleadin\eq@NO
@@ -1016,14 +1092,14 @@
\else\let\isitleadin\eq@YES\fi
\rlspar\removelastskip\par
\if\isitleadin\eq@YES
- \def\eqparts@topsep{0pt}% dps88
- \vskip\eqparts@itemsep\relax\fi % dps88
+ \def\eqparts@topsep{0pt}%
+ \vskip\eqparts@itemsep\relax\fi
\topofpartshook
- \let\itsExerParts\eq@YES % dps17
+ \let\itsExerParts\eq@YES
\global\let\@listiiredefined\eq@NO
\def\exerwparts@cols{0}\@ifnextchar[%
{%
- \if@tableadinitem\else\removelastparskip\fi % dps11
+ \if@tableadinitem\else\removelastparskip\fi
\let\endparts\endexercise@parts@tabular\exercise@parts@tabular@}%
{\let\endparts\endexercise@parts@list\exercise@parts@list}}
\def\eq@extralabelsep{0pt}
@@ -1045,16 +1121,16 @@
\def\eq@item@common{\eq@insertContAnnot\eqp@rtc@lcm@rk
\def\currhideopt{x}\eq@hidesolutionfalse\eq@nolinkfalse
\@ifnextchar[{\@ckhide}{\eq@item}}
-\newcommand{\partsitemsep}[1]{{% dps88
+\newcommand{\partsitemsep}[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@itemsep{\the\@tempdima}}}
\let\eqpartsitemsep\partsitemsep
\def\eqparts@itemsep{0pt}
-\newcommand\partsparsep[1]{{% dps88
+\newcommand\partsparsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@parsep{\the\@tempdima}}}
\def\eqparts@parsep{0pt}
-\newcommand\partstopsep[1]{{% dps88
+\newcommand\partstopsep[1]{{%
\setlength{\@tempdima}{#1}%
\xdef\eqparts@topsep{\the\@tempdima}}}
\def\eqparts@topsep{3pt}
@@ -1102,9 +1178,9 @@
\makebox[\widthOfParts][r]{\eqexlisttabheader}%
}{%
\usecounter{partno}%
- \if\isitleadin\eq@YES % dps7
+ \if\isitleadin\eq@YES
\settowidth{\eq@tmplength}{\parts@indent\eqe@prtsepPrb}%
- \xdef\prtsIndntSep{\the\eq@tmplength}% dps7
+ \xdef\prtsIndntSep{\the\eq@tmplength}%
\if\itsforleadinitem\eqe@YES\setcounter{partno}{\fliPartNo}\else
\setcounter{partno}{1}\fi\fi
\let\leadinitem\eq@leadinitemparts
@@ -1181,12 +1257,12 @@
\def\inittabMark{\global\eq@extabColCnt=0 }
\def\resettabMark{\global\eq@extabColCnt=1 }
\newcommand\autotabnewline[1][\eqparts@tabrowsep]{%
- \ifnum\exerwparts@cols>0\relax % dps cq
+ \ifnum\exerwparts@cols>0\relax
\ifx\eq@tabMarkChk\@gobble
\def\eq@atnext{\expandafter
\tabularnewline\expandafter[#1]}\else
\def\eq@atnext{\resettabMark\tabularnewline
- \noalign{\expandafter\kern#1}}\fi % dps7
+ \noalign{\expandafter\kern#1}}\fi
\expandafter\eq@atnext\fi}
\def\eq@tabMark{%
\ifnum\eq@extabColCnt=0\relax
@@ -1215,7 +1291,7 @@
\newenvironment{exercise@parts@tabular}{%
\setcounter{partno}{0}%
\def\tablrIndent{\hglue\prtsIndntSep\relax}%
- \if\isitleadin\eq@YES % dps7
+ \if\isitleadin\eq@YES
\if$\the\everypar$\let\tablrIndent\relax\fi
\setcounter{partno}{1}\fi
\let\leadinitem\eq@leadinitemparts
@@ -1245,9 +1321,9 @@
\tabcolsep\@tempdima
\multiply\@tempdima\@tempcnta
\advance\eq@tmpdima-\@tempdima
- \divide\eq@tmpdima by\exerwparts@cols
- \advance\eq@tmpdima\prtsIndntSep\relax
- \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi % dps11
+ \divide\eq@tmpdima by\exerwparts@cols\relax %dpsj3
+ \edef\widthOfPartsBox{\the\eq@tmpdima}% dpsj2
+ \if@tableadinitem\else\vskip\eq@partstabtopsep\relax\fi
\noindent\normalbaselines\kern0pt
\prior@parts@hook\abovepartshook
\tablrIndent\tabular[t]{@{}*{\exerwparts@cols}{>{\setTabulrSolnEnv
@@ -1278,7 +1354,6 @@
\eq@tmpdima=\wd\eq@tmpbox
\addtolength\eq@tmplength{\eq@extralabelsep}%
\xdef\partshangamount{\the\eq@tmplength}%
- \advance\linewidth-\eq@tmplength
\parshape \@ne 0pt \linewidth
\everypar{\parshape \@ne 0pt \linewidth}%
\eq@setPrbSolnAftrIndnt
@@ -1339,7 +1414,7 @@
\def\setENum{\Elabel\if\exerstar*\thequestionno(\thepartno)\else
\thequestionno\fi}%
\ifExSolutionsSet\else
- \writeToExSolns{\protect\begin{exEnumerate}}\fi
+ \writeToExSolns{^^J\protect\begin{exEnumerate}^^J}\fi
\list{}{%
\ifx\exE@labelwidth\@empty
\settowidth{\labelwidth}{\exE@labelwidthTo}\else
@@ -1354,7 +1429,7 @@
\settowidth{\labelsep}{\normalfont\ }%
\setlength{\leftmargin}{\labelwidth}%
}\item\relax}{\ifExSolutionsSet\else
- \writeToExSolns{\protect\end{exEnumerate}}\fi
+ \writeToExSolns{\protect\end{exEnumerate}^^J}\fi
\endlist}
\newenvironment{enumex}{%
\renewcommand\exlabelformat{\textbf{\thequestionno.}}%
@@ -1420,7 +1495,7 @@
\fi
\markright{\exsectitle}%
\ifx\webnewpage\relax
- \def\webnewpage{\let\webnewpage\newpage}%
+ \def\webnewpage{\global\let\webnewpage\newpage}%
\fi
\priorexsectitle\exerSolnsHeadnToc\priorexslinput
\InputIfFileExists{\jobname.sol}
@@ -1571,6 +1646,7 @@
\def\@shortquizCnt{0}
\def\@sqGenBaseName{eqSqBn\@shortquizCnt}
\let\sqhspace\space
+\let\ListOfSQuizNames\@empty
\newenvironment{shortquiz}
{%
\xdef\eq@pageThisQ{\the\c@page}%
@@ -1612,8 +1688,17 @@
\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}%
@@ -1673,6 +1758,9 @@
\let\prior@eqQt\@empty
\let\prior@eqSQt\@empty
\def\sqsolafterhspace{\space}
+\newif\ifmakeQzSlLocal \makeQzSlLocalfalse
+\def\makeQzSolnsLocalOn{\makeQzSlLocaltrue}
+\def\makeQzSolnsLocalOff{\makeQzSlLocalfalse}
\def\solution@sq{\let\eq@next\relax
\ifx\@qzsolndest\@empty
\PackageWarning{exerquiz}%
@@ -1688,6 +1776,7 @@
\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
@@ -1750,6 +1839,7 @@
{\protect\mbox{\sqslrtnlabel}}\string\endeqSQt%
\fi
\ifeqforpaper\protect\fpAfterSolutionsSkip\fi^^J%
+ \ifmakeQzSlLocal\protect\endgroup^^J\fi
}
\let\eqSQt\@gobble
\let\endeqSQt\relax
@@ -1794,13 +1884,13 @@
\protect\numberline{}\fi}\sqslsectitle}}
\newcommand{\quizSolnInput}
{%
- \let\webnewpage\relax
+ \global\let\webnewpage\relax
\immediate\closeout\quiz@solns
\ifeq@noquizsolutions\else
\iftherearequizsolutions\newpage\markright{}%
\eq@normallheader\markright{\sqslsecrunhead}%
\ifx\webnewpage\relax
- \def\webnewpage{\let\webnewpage\newpage}\fi
+ \def\webnewpage{\global\let\webnewpage\newpage}\fi
\priorsqslsectitle\quizSolnsHeadnToc\priorsqslinput
\InputIfFileExists{\jobname.qsl}{}%
{!!! Solutions to quizzes not found}
@@ -1856,6 +1946,7 @@
{\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
@@ -1872,6 +1963,7 @@
\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}%
@@ -1913,9 +2005,6 @@
{\renewcommand\eq@beginQuiz{\eq@BeginQuizLink}}
\newcommand\useEndQuizLink
{\renewcommand\eq@endQuiz{\eq@EndQuizLink}}
-\def\listOfQuizzes{}
-\def\listOfSubmitQuizzes{}
-\def\initializeAllSubmitQuizzes{}
\newcommand\@initQuiz{%
var \curr@quiz=new Object();\jsR
lstOfQuizzes["\curr@quiz"]=\curr@quiz;\jsR
@@ -1927,7 +2016,7 @@
\oField.RightColorJSLoc=\rghtColorJSLoc;\fi
\ifx\wrngColorJSLoc\@empty\else\jsR
\oField.WrongColorJSLoc=\wrngColorJSLoc;\fi
- \ifx\partialColorJSLoc\@empty\else\r
+ \ifx\partialColorJSLoc\@empty\else\jsR
\oField.PartialColorJSLoc=\partialColorJSLoc;\fi
\ifx\rghtAnsSymbJSLoc\@empty\else\jsR
\oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi
@@ -1937,7 +2026,9 @@
\oField.CorrAnsSymbJSLoc=\corrAnsSymbJSLoc;\fi
\ifx\eqGradeScaleLoc\@empty\else\jsR
\oField.GradeScaleLoc=new Array(\eqGradeScaleLoc);\fi
- \ifx\priorInitQuiz\@empty\else\jsR\priorInitQuiz\fi\jsR
+ \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
@@ -1959,6 +2050,7 @@
\let\bqlabelFmt\@empty
\def\eq@BeginQuizLink
{%
+ \qz@IDTxtField
\set@@Link{}{}{}{\color{\@linkcolor}\bqlabelFmt\bqlabel}{}%
{\eq@setWidgetProps\setLink@driver}%
{\eq@BeginQuizLinkDefaults\eq@@BeginQuizLinkActions\every@Link}%
@@ -1966,27 +2058,28 @@
}
\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
+\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
+ \curr@quiz.CorrAns=(new %
+ Array(\corrAnsArray));\jsR\jsT\jsT
\fi
- DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
-\thequestionno);\jsR\jsT\jsT
- \eq@submitURL
- \postSubmitQuiz
- resetQuiz("\curr@quiz");\jsR\jsT
- }\jsR
- }}}%
+ 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
@@ -2001,8 +2094,8 @@ Array(\corrAnsArray));\jsR\jsT\jsT
{\eq@EndQuizLinkDefaults\eq@@EndQuizLinkActions\every@Link}%
\makebox[0pt][r]{\textField[\BC{}\autoCenter{n}]%
{htxtfld.\curr@quiz}{0bp}{0bp}}%
- \makebox[0pt][r]{\eq@insertHiddenFields}\global\let\eq@CGI\@empty
- \ignorespaces
+ \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}%
+ \global\let\eq@CGI\@empty\ignorespaces
}
\def\BeginQuizButtonDefaults
{%
@@ -2017,7 +2110,7 @@ Array(\corrAnsArray));\jsR\jsT\jsT
}
\newcommand\eq@BeginQuizButton[1][]
{%
- \mbox{\push@@Button{#1}{beginQuiz.\curr@quiz}{}%
+ \mbox{\qz@IDTxtField\push@@Button{#1}{beginQuiz.\curr@quiz}{}%
{\DefaultHeightOfWidget}{\eq@protect\A}%
{\eq@setButtonProps\eq@Button@driver}%
{\BeginQuizButtonDefaults\eq@@BeginQuizButtonActions
@@ -2028,29 +2121,31 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\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
+\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
+ \curr@quiz.CorrAns=(new %
+ Array(\corrAnsArray));\jsR\jsT\jsT
\fi
- DisplayQuizResults("\curr@quiz",\theeqpointvalue,%
-\thequestionno);\jsR\jsT\jsT
- \eq@submitURL
- \postSubmitQuiz
- resetQuiz("\curr@quiz");\jsR\jsT
- }\jsR
- }}%
- }
-}
+ 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
@@ -2062,7 +2157,8 @@ Array(\corrAnsArray));\jsR\jsT\jsT
{\eq@setButtonProps\eq@Button@driver}%
{\EndQuizButtonDefaults\eq@@EndQuizButtonActions
\every@ButtonField\every@EndQuizButton}}%
- \makebox[0pt][r]{\eq@insertHiddenFields}\global\let\eq@CGI\@empty
+ \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{}
@@ -2238,11 +2334,9 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\global\let\eqScore\eq@Score
\global\let\eqOutOf\eq@OutOf
}
-\def\DeclareQuiz#1{%
- \edef\thisQuiz{#1}%
- \edef\curr@quiz{#1}%
- \edef\currQuiz{#1}%
- \edef\curr@quiz{#1}%
+\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}
@@ -2441,8 +2535,8 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\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
+\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
@@ -2461,7 +2555,7 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\setlength{\itemsep}{0pt}\setlength{\partopsep}{0pt}%
\setlength{\listparindent}{\parindent}%
\ifnum\exerwparts@cols>1\relax
- \ifx\itsExerParts\eq@YES % dps17
+ \ifx\itsExerParts\eq@YES
\setlength{\leftmargin}{\labelwidth}\else
\setlength{\leftmargin}{\labelwidth+\eqemargin}\fi
\else
@@ -2474,15 +2568,15 @@ Array(\corrAnsArray));\jsR\jsT\jsT
}%
}%
{\endlist\setcounter{quizno}{0}\eq@answersEndHook}
-\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}%
- \xdef\Ans@choice{#2}\leavevmode\@Ans
+\newcommand\Ans@tabular[2][0]{\gdef\eq@pPTs{#1}\xdef\Ans@choice{#2}%
+ \leavevmode\@Ans
}
\newcommand\sqtabsep[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty
\def\sq@tabsep{1.5pt}\else\def\sq@tabsep{#1}\fi}
\sqtabsep{1.5pt}
\def\sqTabPos#1{\def\sq@TabPos{[#1]}}\sqTabPos{}
\def\answers@@sq@tabular#1{%
- \ifinner % dps17
+ \ifinner
\ifx\itsExerParts\eq@YES\par\removelastskip
\removelastparskip\vskip\aboveanswersSkip\fi
\else\par\removelastskip\removelastparskip
@@ -2575,35 +2669,25 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\def\sqNoCorrections{\let\@sqAlertsOnly\eq@One}
\def\sqCorrections{\let\@sqAlertsOnly\eq@Zero}
\sqNoCorrections
-\def\Ans@sq@f@Actions
-{%
- \A{\if\Ans@choice\eq@One
- \JS{%
- \if\@sqTurnOffAlerts1OnBlurRespBox(true,"\oField");\jsR\fi
- \ifx\@qzsolndest\@empty\else
- \ifeq@solutionsafter\else
- jmpToNamedDest("\oField","\@qzsolndest",%
-\if\@sqTurnOffAlerts00\else1\fi);\fi
- \fi}%
- \else
- \JS{%
- \if\@sqTurnOffAlerts1OnBlurRespBox( false, %
-"\oField" );\jsR\fi
- \ifx\oField\@empty\else
- updateTally("\oField.\thequestionno");
- \fi}%
- \fi%
- }%
- \AA{\AAMouseDown{\JS{%
- 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\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
@@ -2674,51 +2758,48 @@ Array(\corrAnsArray));\jsR\jsT\jsT
\catcode`\&=12
\gdef\eq@AND{&&}
\endgroup
-\def\Ans@ck@sq@f@Actions
-{%
- \A{\if\Ans@choice1%
- \JS{%
-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
-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}%
- \else%
- \JS{%
-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}%
- \fi%
- }%
- \AA{\AAMouseDown{%
-\JS{updateTally.downState=!!event.target.isBoxChecked(0);}}}
-}
+\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}}
@@ -3395,8 +3476,7 @@ if (_bOK) {\jsR\jsT
\xdef\eq@pageThisQ{\the\c@page}%
\global\let\eqQzQuesList\@empty
\xdef\oField{#1}\xdef\curr@quiz{#1}\xdef\currQuiz{#1}%
- \let\@qzsolndest\@empty
- \stepcounter{questionno}%
+ \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
@@ -3410,6 +3490,7 @@ if (_bOK) {\jsR\jsT
\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}}
@@ -3423,26 +3504,59 @@ if (_bOK) {\jsR\jsT
\def\requireAlertBox{\def\bcheckboxused{false}}
\def\allowNoAlertBox{\def\bcheckboxused{true}}
\allowNoAlertBox
-\newcommand\RespBoxNT{\def\rbFlag{0}\@RespBox}
-\newcommand\RespBox{\def\rbFlag{0}\@RespBox}
-\newcommand\RespBoxMath{\def\rbFlag{0}\@RespBox}
-\begin{defineJS}[%
- \catcode`\%=14\relax\catcode`\@=0\relax]{\AAKqRespBoxMath}
-if(event.willCommit){
- RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,%
-@thegrpquestionno,@grpPointValue,@grpTotalWeight,%
-"@grpEvalFunction"@fi);
- RecordProblemType("@eqQT",@thequestionno);
- _mathVars=@indepVar;
- var retn = @processJSfunc(@rbArgs,@compareJSfunc);
- ProcUserResp(retn,event.value,@thequestionno,%
-0@ifx@grpquestions1,@thegrpquestionno@fi);
-}
-if (!isQuizInitialized("@currQuiz")) {
- @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3);
- event.rc = false;
+\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
+ }
}
-\end{defineJS}
\def\RespBoxMathDefaults
{%
\BC{0 0 0}\S{S}\textColor{0 g}\F{\FPrint}\W{1}
@@ -3455,118 +3569,237 @@ if (!isQuizInitialized("@currQuiz")) {
\else\noexpand\Ff{\FfReadOnly}\fi\fi\fi
}%
}
-\let\eqFormatArg\@empty
-\def\@@RespBoxMathActions
-{%
- \AA{\if\eqQuizType\isQZ
- \AAKeystroke{\AAKqRespBoxMath\eqAAKeystrokeArg}
- \AAFormat{\eqFormatArg}
- \else
- \AAKeystroke{if(event.willCommit) {\r\t
- _mathVars=\indepVar;\r\t
- retn=\processJSfunc(\rbArgs,\compareJSfunc);\r
-\if\@sqTurnOffAlerts1
- \t OnBlurRespBox(%
- \if\@sqTurnOffAlerts1retn\else null\fi,"\curr@quiz");
- \eqAAKeystrokeArg\r
+\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
- }%
- }
- \AAFormat{\eqFormatArg}%
- \AAOnFocus{\JS{var retn = null;}}%
- \AAOnBlur{\JS{OnBlurRespBox(null,"\curr@quiz");}}%
- \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][]
{%
- \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
+ \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
- \let\Array\aeb@array
- \moreRespBoxMathDefaults
- \leavevmode\hbox\bgroup\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{\gdef\eqCorrectAns{#1}\if\grpquestions\eq@Zero
- \ifwithinMCFI\gdef\s@veCorrAnsMCFI{"#1"}\else
-\fi\else\eq@recordGrpAnsArray{"#1"}\fi
- \@ifnextchar({\@eq@RespBox{#1}}{\@eq@RespBox{#1}(x)}}
+ \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)[]}}}
+ {\@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}
-\def\@eq@RespB@x#1(#2)[#3]#4#5#6{\xdef\@qzsolndest{#3}%
- \def\indepVar{"#2"}\def\eq@precision{#5}%
+\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,"\eqCorrectAns",#4,\eq@defaultRDPrecision}\else
- \def\eq@defaultCompare{diffCompare}%
- \def\rbArgstmp{\rbFlag,"\eqCorrectAns",#4,#5}\fi
- \edef\eq@ixparam{#6}%
- \expandafter\@checkforInterval\eq@ixparam\\%
-}
-\def\viidna{[]}
-\def\@checkforInterval{%
- \@ifnextchar[{\@checkforIntervali}{\@checkforIntervalii}}
-\def\@checkforIntervali#1\\{%
- \def\rbArgs{\rbArgstmp,"#1",\indepVar}%
- \@ifnextchar[{\@eq@@RespBox[ \expandafter\@gobble}%
- {\@eq@@RespBox[\eq@defaultCompare]}%
-}
-\def\@checkforIntervalii#1\\#2{%
- \def\rbArgs{\rbArgstmp,"[#1,#2]",\indepVar}%
- \@ifnextchar[{\@eq@@RespBox}{\@eq@@RespBox[\eq@defaultCompare]}%
-}
-\def\@eq@@RespBox{\@eq@@@RespBox}
-\def\@eq@@@RespBox[#1]{\@ifstar{\jsRespBox[#1]}%
+ \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
- \ifx\eq@ProcRespIntervals\g@processJSfunc
- \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble
- \pdfstringdef{\eqCorrectAns}{\eqCorrectAns}%
- \let\@inmathwarn\@inmathwarn@SAVE\fi
- \eq@recordCorrAns{"\eqCorrectAns"}% 01/11
- \ifeq@proofing\makebox[0pt][l]{\space\math@correctAnswer}\fi
- \eq@TextField % send to the driver-dependent macro
- \egroup
+ \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\eqCorrectAns
+\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}
@@ -3606,7 +3839,8 @@ if (!isQuizInitialized("@currQuiz")) {
\def\@@RespBoxTxtActions
{%
\AA{\if\eqQuizType\isQZ
- \AAKeystroke{\AAKqRespBoxTxt}
+ \AAKeystroke{\AAKqRespBoxTxt\eqAddAAKeystroke}
+ \AAFormat{\eqAddAAFormat}
\else
\AAKeystroke{%
if(event.willCommit) {\r\t
@@ -3614,8 +3848,10 @@ if (!isQuizInitialized("@currQuiz")) {
\if\@sqTurnOffAlerts1
\t\RespBoxTxtOnBlur\r
\fi
+ \eqAddAAKeystroke\r
}%
}
+ \AAFormat{\eqAddAAFormat}
\AAOnFocus{\JS{var retn = null;}}
\if\@sqTurnOffAlerts0
\AAOnBlur{\JS{\RespBoxTxtOnBlur}}%
@@ -3623,8 +3859,10 @@ if (!isQuizInitialized("@currQuiz")) {
\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
@@ -3746,8 +3984,10 @@ if (!isQuizInitialized("@currQuiz")) {
}
}
\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
@@ -3895,17 +4135,31 @@ if (!isQuizInitialized("@currQuiz")) {
\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
- \processJSfunc("Ans.\curr@quiz","\CorrectAns",\currQuiz);
- }%
- }
+\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{%
@@ -3924,7 +4178,8 @@ if (!isQuizInitialized("@currQuiz")) {
\eq@@@CorrAnsButton{#1}{#2}{DisplayAnswer}}%
}
\def\eq@@@CorrAnsButton#1#2#3{\gdef\CorrectAns{#2}%
- \def\processJSfunc{#3}%
+ \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}%
@@ -3936,8 +4191,9 @@ if (!isQuizInitialized("@currQuiz")) {
\ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}%
\else\noexpand\BC{\solution@Color}\fi
\noexpand\A{\noexpand\qCorrAnsButtonActionHook}}%
- \ifeq@noquizsolutions\else
- \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}%
+ \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}}%
@@ -4304,13 +4560,6 @@ if (!isQuizInitialized("@currQuiz")) {
\def\every@PercentField{}
\newcommand\everyGradeField[1]{\def\every@GradeField{#1}}
\def\every@GradeField{}
-\def\@eqAddAAFormat#1{\def\eqFormatArg{#1}}
-\def\eq@AddAAFormat{}
-\def\formatAsSet{try{formatAsSet()}catch(e){}}
-\def\formatAsVector{try{formatAsVector()}catch(e){}}
-\def\@eqAddAAKeystroke#1{\def\argi{#1}\ifx\argi\@empty
- \def\eqAAKeystrokeArg{}\else\def\eqAAKeystrokeArg{\r #1}\fi}
-\def\eqAAKeystrokeArg{}
\newcommand{\everysqRadioButton}[1]{\def\every@sqRadioButton{#1}}
\def\every@sqRadioButton{}
\newcommand{\everyqRadioButton}[1]{\def\every@qRadioButton{#1}}
@@ -4335,9 +4584,71 @@ if (!isQuizInitialized("@currQuiz")) {
\def\every@EndQuizButton{}
\let\everyeqGenButton\everyPushButton
\let\every@eqGenButton\every@PushButton
+\let\eqGenButton\pushButton
\newcommand\everyeqIcon[1]{\def\every@eqIcon{#1}}
\def\every@eqIcon{}
-\let\eqGenButton\pushButton
+\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{}
@@ -4350,6 +4661,7 @@ if (!isQuizInitialized("@currQuiz")) {
\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 37b18777..69cc9647 100644
--- a/texmf-dist/tex/latex/acrotex/insdljs.sty
+++ b/texmf-dist/tex/latex/acrotex/insdljs.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2017 D. P. Story %%
+%% Copyright (C) 2001-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,10 +19,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{insdljs}
- [2017/03/02 v2.3f Insert Document Level JavaScripts (dps)]
+ [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}%
@@ -30,6 +31,7 @@
\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}}
diff --git a/texmf-dist/tex/latex/acrotex/pdfdochex.def b/texmf-dist/tex/latex/acrotex/pdfdochex.def
new file mode 100644
index 00000000..41ac2fb1
--- /dev/null
+++ b/texmf-dist/tex/latex/acrotex/pdfdochex.def
@@ -0,0 +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'.
diff --git a/texmf-dist/tex/latex/acrotex/setcorder.def b/texmf-dist/tex/latex/acrotex/setcorder.def
index 3a76b74e..1135abd9 100644
--- a/texmf-dist/tex/latex/acrotex/setcorder.def
+++ b/texmf-dist/tex/latex/acrotex/setcorder.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/template.def b/texmf-dist/tex/latex/acrotex/template.def
index f0e90700..b9099ad4 100644
--- a/texmf-dist/tex/latex/acrotex/template.def
+++ b/texmf-dist/tex/latex/acrotex/template.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{template.def}
- [2017/03/16 v7.8g %
+ [2018/03/21 v8.2.2 %
Exerquiz template for language support (dps)]
%%------------- Instructions ------------------------------------
%% Make your language localizations to this file and rename it to
@@ -251,6 +251,7 @@
\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 0fe265be..04ae9dd1 100644
--- a/texmf-dist/tex/latex/acrotex/uieforms.def
+++ b/texmf-dist/tex/latex/acrotex/uieforms.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -232,6 +232,19 @@
\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}}%
diff --git a/texmf-dist/tex/latex/acrotex/usemcfi.def b/texmf-dist/tex/latex/acrotex/usemcfi.def
index edf05da7..dccaac82 100644
--- a/texmf-dist/tex/latex/acrotex/usemcfi.def
+++ b/texmf-dist/tex/latex/acrotex/usemcfi.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -17,6 +17,7 @@
%% 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
diff --git a/texmf-dist/tex/latex/acrotex/web.sty b/texmf-dist/tex/latex/acrotex/web.sty
index 42b5ea55..90a836ad 100644
--- a/texmf-dist/tex/latex/acrotex/web.sty
+++ b/texmf-dist/tex/latex/acrotex/web.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Web package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/webpro.def b/texmf-dist/tex/latex/acrotex/webpro.def
index b32eaa7e..dcd4a2f9 100644
--- a/texmf-dist/tex/latex/acrotex/webpro.def
+++ b/texmf-dist/tex/latex/acrotex/webpro.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Web package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/websec.def b/texmf-dist/tex/latex/acrotex/websec.def
index 34fed26d..6d0f973c 100644
--- a/texmf-dist/tex/latex/acrotex/websec.def
+++ b/texmf-dist/tex/latex/acrotex/websec.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Web package, %%
-%% Copyright (C) 1999-2017 D. P. Story %%
+%% Copyright (C) 1999-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%