From 17e285e7733468f00b6e8d096fdd7ffe818f09c8 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 11 Jun 2018 12:19:19 +0900 Subject: acrotex update --- texmf-dist/tex/latex/acrotex/aebjs.def | 260 ++++-- texmf-dist/tex/latex/acrotex/aebrandom.def | 6 +- texmf-dist/tex/latex/acrotex/aebsumrytbls.def | 5 +- texmf-dist/tex/latex/acrotex/altadbfncs.def | 3 +- texmf-dist/tex/latex/acrotex/dljscc.def | 2 +- texmf-dist/tex/latex/acrotex/dljslib.sty | 170 ++-- texmf-dist/tex/latex/acrotex/edvipdfm.def | 2 +- texmf-dist/tex/latex/acrotex/eforms.sty | 102 ++- texmf-dist/tex/latex/acrotex/epdfmark.def | 10 +- texmf-dist/tex/latex/acrotex/epdftex.def | 2 +- texmf-dist/tex/latex/acrotex/eqbr.def | 3 +- texmf-dist/tex/latex/acrotex/eqcat.def | 3 +- texmf-dist/tex/latex/acrotex/eqcolor.def | 3 +- texmf-dist/tex/latex/acrotex/eqcz.def | 3 +- texmf-dist/tex/latex/acrotex/eqda.def | 3 +- texmf-dist/tex/latex/acrotex/eqde.def | 3 +- texmf-dist/tex/latex/acrotex/eqes.def | 3 +- texmf-dist/tex/latex/acrotex/eqexam.def | 364 ++++---- texmf-dist/tex/latex/acrotex/eqfin.def | 3 +- texmf-dist/tex/latex/acrotex/eqfr.def | 3 +- texmf-dist/tex/latex/acrotex/eqit.def | 3 +- texmf-dist/tex/latex/acrotex/eqnl.def | 3 +- texmf-dist/tex/latex/acrotex/eqno.def | 3 +- texmf-dist/tex/latex/acrotex/eqpo.def | 3 +- texmf-dist/tex/latex/acrotex/eqru.def | 3 +- texmf-dist/tex/latex/acrotex/eqtr.def | 3 +- texmf-dist/tex/latex/acrotex/exerquiz.sty | 1164 ++++++++++++++++--------- texmf-dist/tex/latex/acrotex/insdljs.sty | 6 +- texmf-dist/tex/latex/acrotex/pdfdochex.def | 278 ++++++ texmf-dist/tex/latex/acrotex/setcorder.def | 2 +- texmf-dist/tex/latex/acrotex/template.def | 5 +- texmf-dist/tex/latex/acrotex/uieforms.def | 15 +- texmf-dist/tex/latex/acrotex/usemcfi.def | 3 +- texmf-dist/tex/latex/acrotex/web.sty | 2 +- texmf-dist/tex/latex/acrotex/webpro.def | 2 +- texmf-dist/tex/latex/acrotex/websec.def | 2 +- 36 files changed, 1681 insertions(+), 769 deletions(-) create mode 100644 texmf-dist/tex/latex/acrotex/pdfdochex.def (limited to 'texmf-dist/tex') 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; i7); // 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; i7); // 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; i7); // 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) 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) 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\@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\@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 %% -- cgit v1.2.3