diff options
Diffstat (limited to 'texmf-dist/tex/latex/acrotex/exerquiz.sty')
-rw-r--r-- | texmf-dist/tex/latex/acrotex/exerquiz.sty | 256 |
1 files changed, 144 insertions, 112 deletions
diff --git a/texmf-dist/tex/latex/acrotex/exerquiz.sty b/texmf-dist/tex/latex/acrotex/exerquiz.sty index a9c14748..7530720b 100644 --- a/texmf-dist/tex/latex/acrotex/exerquiz.sty +++ b/texmf-dist/tex/latex/acrotex/exerquiz.sty @@ -19,8 +19,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{exerquiz} - [2019/08/13 v8.3 % - Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)] + [2019/12/17 v8.5.5 % + Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)] \usepackage{keyval} \RequirePackage{ifpdf}[2006/02/20] \RequirePackage{ifxetex}[2006/08/21] @@ -305,7 +305,8 @@ \RequirePackage{verbatim} \RequirePackage{hyperref} \RequirePackage{amssymb}% used for return symbols -\RequirePackage{eforms}[2012/06/20] +\RequirePackage{eforms}[2019/10/23] +\dlSetPkgInfo \@ifundefined{eq@drivernum}{% \PackageError{exerquiz}% {You have not specified dvips, dvipsone, pdftex, dvipdfm, @@ -1497,11 +1498,26 @@ \let\eq@solutionshook\@empty \let\priorexsectitle\@empty \let\priorexslinput\@empty -\def\exerSolnsHeadnToc{\section*{\exsectitle}% - \addcontentsline{toc}{section}{% - \@ifundefined{web@latextoc}{}{% - \ifx\web@latextoc\eq@YES\else - \protect\numberline{}\fi}\exsectitle}} +\def\InputExrSolnsLevel{\@ifstar + {\def\eq@ExrSolnsStar{*}\InputExrSolnsLevel@i} + {\let\eq@ExrSolnsStar\@empty\InputExrSolnsLevel@i}} +\newcommand{\InputExrSolnsLevel@i}[2][]{% + \def\eq@ExrSolnsLabel{#1}\def\eq@ExrSolnsLevel{#2}} +\InputExrSolnsLevel*{section} +\def\exerSolnsHeadnToc{% + \edef\eq@mkCmd{\expandafter\noexpand + \csname\eq@ExrSolnsLevel\endcsname\eq@ExrSolnsStar}% + \eq@mkCmd{\exsectitle}\if!\eq@ExrSolnsLabel!\else + \label{\eq@ExrSolnsLabel}\fi + \if\eq@ExrSolnsStar*% + \addcontentsline{toc}{\eq@ExrSolnsLevel}{% + \@ifundefined{web@latextoc}{}{% + \ifx\web@latextoc\eq@YES\else + \protect\numberline{}\fi + }\exsectitle + }% + \fi +} \@ifpackageloaded{web}{\def\eq@normallheader{\lheader{\rightmark}}} {\let\eq@normallheader\relax} \@ifpackageloaded{web}{\def\eq@defaultlheader{\lheader{\aeb@setmarks}}} @@ -1853,8 +1869,8 @@ } \def\eq@promoteNewPageHere#1{\par \bgroup\@nobreakfalse\addpenalty{-500}% - \setlength{\@tempdimb}{#1}% - \@tempdima \pagegoal \advance \@tempdima -\pagetotal + \setlength{\@tempdimb}{#1}\@tempdima \pagegoal + \advance \@tempdima -\pagetotal \ifdim \@tempdima<\@tempdimb\ifnum\col@number>\@ne\columnbreak \else\newpage\penalty1\fi\fi\egroup } @@ -1912,11 +1928,27 @@ \let\eqqzsolutionshook\@empty \let\priorsqslsectitle\@empty \let\priorsqslinput\@empty -\def\quizSolnsHeadnToc{\section*{\sqslsectitle}% - \addcontentsline{toc}{section}{% - \@ifundefined{web@latextoc}{}{% - \ifx\web@latextoc\eq@YES\else - \protect\numberline{}\fi}\sqslsectitle}} +\def\InputQzSolnsLevel{\@ifstar + {\def\eq@QzSolnsStar{*}\InputQzSolnsLevel@i} + {\let\eq@QzSolnsStar\@empty\InputQzSolnsLevel@i}} +\newcommand{\InputQzSolnsLevel@i}[2][]{% + \def\eq@QzSolnsLabel{#1}\def\eq@QzSolnsLevel{#2}} +\InputQzSolnsLevel*{section} +\def\quizSolnsHeadnToc +{% + \edef\eq@mkCmd{\expandafter\noexpand + \csname\eq@QzSolnsLevel\endcsname\eq@QzSolnsStar}% + \eq@mkCmd{\sqslsectitle}\if!\eq@QzSolnsLabel!\else + \label{\eq@QzSolnsLabel}\fi + \if\eq@QzSolnsStar*% + \addcontentsline{toc}{\eq@QzSolnsLevel}{% + \@ifundefined{web@latextoc}{}{% + \ifx\web@latextoc\eq@YES\else + \protect\numberline{}\fi + }\sqslsectitle + }% + \fi +} \newcommand{\quizSolnInput} {% \global\let\webnewpage\relax @@ -2189,14 +2221,14 @@ \def\eqButtonDefaults{% \CA{\eq@local@CA}\AC{}\H{P}\W{1}\S{B} \BC{1 0 0}\BG{.7529 .7529 .7529}} -\def\@@eqButtonActions{% - \A{\JS{if (isEndQuizPushed("\eqBaseName")){\jsR\jsT% - correctQuiz("\eqBaseName",\thequestionno);% - \ifusesumrytbls\jsR\jsT\else\jsR\fi - if (typeof correctSumryTbl == "function")\jsR\jsT\jsT - correctSumryTbl("\eqBaseName",\thequestionno);\jsR - }}}% +\begin{defineJS}[\makeesc\@]{\CorrBtnActionsJS} +if (isEndQuizPushed("@eqBaseName")){ + correctQuiz("@eqBaseName",@thequestionno); + if (typeof correctSumryTbl == "function") + correctSumryTbl("@eqBaseName",@thequestionno); } +\end{defineJS} +\def\@@eqButtonActions{\A{\JS{\CorrBtnActionsJS}}} \newcommand\eqButton[2][]{% \ifnocorrections\else \def\eqBaseName{#2}% @@ -2208,8 +2240,8 @@ } \def\CorrButton{\eqButton} \def\rbMarkup@Defaults{% - \BC{}\F{\FHidden}\Ff{\FfReadOnly}\textSize{12} - \textColor{0 g}\symbolchoice{check}\W{}} + \BC{}\F{\FHidden}\Ff{\FfReadOnly}\textSize{12} + \textColor{0 g}\symbolchoice{check}\W{}} \newcommand\rbMarkup[1][]{% \ifx\grpquestions\eq@One \def\Fld@name{% @@ -2219,7 +2251,7 @@ {rbmarkup.\Fld@name}% {\RadioFieldSize}{\RadioFieldSize}{Yes}{}% {\eq@setWidgetProps\eq@Check@driver}% - {\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}}% + {\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}} \newcommand\minQuizResp{lowThreshold} \newcommand\PTs{\@ifstar{\def\eq@star{*}\@PTs}{\def\eq@star{x}\@PTs}} \def\@PTs#1{\gdef\eq@PTs{#1}\ifx\eq@PTs\@empty\gdef\eq@PTs{1}\fi @@ -3780,114 +3812,113 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT \newcommand\RespBoxTxtNT{\def\rbFlag{0}\@RespBoxTxt} \newcommand\RespBoxTxt{\def\rbFlag{0}\@RespBoxTxt} \def\RespBoxTxtOnBlur{OnBlurRespBox(% - \if\@sqTurnOffAlerts1retn\else null\fi,"\curr@quiz");} + \if\@sqTurnOffAlerts1retn\else null\fi,"\curr@quiz");} \def\eqObjAlert{% - \ifx\eqQuizType\isQZ\ifx\eq@online\eq@YES\ifeq@noquizsolutions - \else if (false) \fi\fi\fi} + \ifx\eqQuizType\isQZ\ifx\eq@online\eq@YES\ifeq@noquizsolutions + \else if (false) \fi\fi\fi} \begin{defineJS}[% \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxt} if(event.willCommit){ - RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% + RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% @thegrpquestionno,@grpPointValue,@grpTotalWeight,% "@grpEvalFunction"@fi); - RecordProblemType("@eqQT",@thequestionno); - var retn = ProcRespTxt(@rbTxtAlt); - ProcUserResp(retn,event.value,@thequestionno,% + RecordProblemType("@eqQT",@thequestionno); + var retn = ProcRespTxt(@rbTxtAlt); + ProcUserResp(retn,event.value,@thequestionno,% 0@ifx@grpquestions1,@thegrpquestionno@fi); } if (!isQuizInitialized("@currQuiz")) { - @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3); - event.rc = false; + @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3); + event.rc = false; } \end{defineJS} \def\RespBoxTxtDefaults {% - \BC{0 0 0}\W{1}\S{S}\textColor{0 g}\F{\FPrint}% + \BC{0 0 0}\W{1}\S{S}\textColor{0 g}\F{\FPrint}% } \def\moreRespBoxTxtDefaults {% - \edef\@moreRespBoxTxtDefaults{% - \if\eqQuizType\isQZ\ifx\eq@online\eq@YES - \ifeq@noquizsolutions\else - \noexpand\Ff{\FfReadOnly}\fi\fi\fi - }% + \edef\@moreRespBoxTxtDefaults{% + \if\eqQuizType\isQZ\ifx\eq@online\eq@YES + \ifeq@noquizsolutions\else + \noexpand\Ff{\FfReadOnly}\fi\fi\fi + }% } \def\@@RespBoxTxtActions {% - \AA{\if\eqQuizType\isQZ - \AAKeystroke{\AAKqRespBoxTxt\eqAddAAKeystroke} - \AAFormat{\eqAddAAFormat} - \else - \AAKeystroke{% - if(event.willCommit) {\r\t - retn = ProcRespTxt(\rbTxtAlt);\r -\if\@sqTurnOffAlerts1 - \t\RespBoxTxtOnBlur\r -\fi - \eqAddAAKeystroke\r - }% - } - \AAFormat{\eqAddAAFormat} - \AAOnFocus{\JS{var retn = null;}} -\if\@sqTurnOffAlerts0 - \AAOnBlur{\JS{\RespBoxTxtOnBlur}}% -\fi - \fi - } + \AA{\if\eqQuizType\isQZ + \AAKeystroke{\AAKqRespBoxTxt\eqAddAAKeystroke} + \AAFormat{\eqAddAAFormat} + \else + \AAKeystroke{% + if(event.willCommit) {\r\t + retn = ProcRespTxt(\rbTxtAlt);\r + \if\@sqTurnOffAlerts1 + \t\RespBoxTxtOnBlur\r\fi + \eqAddAAKeystroke\r + }% + } + \AAFormat{\eqAddAAFormat} + \AAOnFocus{\JS{var retn = null;}} + \if\@sqTurnOffAlerts0% + \AAOnBlur{\JS{\RespBoxTxtOnBlur}}\fi + \fi + } } \def\annot@subtype@rbt{rbt} \newcommand\@RespBoxTxt[1][] {% - \edef\annot@subtype{\annot@subtype@rbt}% - \eq@AddProbToQzQuesList - \ifx\grpquestions\eq@Zero\addtocounter{eqpointvalue}{\eqPTs}\fi - \if\eqQuizType\isQZ - \def\rbFlag{1}\global\IsRespBoxtrue - \ifx\grpquestions\eq@One - \stepcounter{grpquestionno}% - \def\Fld@name{% - grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}% - \else - \eq@recordThesePTs\eq@recordProbType - \edef\eqtmp{\aPointType}% - \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}% - \stepcounter{questionno}% - \def\Fld@name{obj.\curr@quiz.\thequestionno}% - \fi + \edef\annot@subtype{\annot@subtype@rbt}% + \eq@AddProbToQzQuesList + \ifx\grpquestions\eq@Zero\addtocounter{eqpointvalue}{\eqPTs}\fi + \if\eqQuizType\isQZ + \def\rbFlag{1}\global\IsRespBoxtrue + \ifx\grpquestions\eq@One + \stepcounter{grpquestionno}% + \def\Fld@name{% + grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}% \else - \stepcounter{questionno}% - \def\Fld@name{obj.\oField.\thequestionno}% + \eq@recordThesePTs\eq@recordProbType + \edef\eqtmp{\aPointType}% + \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}% + \stepcounter{questionno}% + \def\Fld@name{obj.\curr@quiz.\thequestionno}% \fi - \moreRespBoxTxtDefaults - \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}% - {\RBW}{\DefaultHeightOfWidget}% - {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxt}% - {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults - \@@RespBoxTxtActions\every@eqTextField\every@RespBoxTxt}% + \else + \stepcounter{questionno}% + \def\Fld@name{obj.\oField.\thequestionno}% + \fi + \moreRespBoxTxtDefaults + \leavevmode\hbox\bgroup\text@@Field{#1}{\Fld@name}% + {\RBW}{\DefaultHeightOfWidget}% + {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxTxt}% + {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults + \@@RespBoxTxtActions\every@eqTextField\every@RespBoxTxt}% } \def\@@RespBoxTxt#1#2{% - \@ifnextchar[{\@@@RespBoxTxt{#1}{#2}} - {\@ifstar{\@@@RespBoxTxt{#1}{#2}[\curr@quiz.\thequestionno]}% - {\@@@RespBoxTxt{#1}{#2}[]}}} + \@ifnextchar[%] + {\@@@RespBoxTxt{#1}{#2}} + {\@ifstar{\@@@RespBoxTxt{#1}{#2}[\curr@quiz.\thequestionno]}% + {\@@@RespBoxTxt{#1}{#2}[]}}} \def\eq@ZERO{0}\def\eq@ONE{1}\def\eq@TWO{2} \def\@@@RespBoxTxt#1#2[#3]#4{% - \xdef\@qzsolndest{#3}% - \def\eq@argi{#1}\ifx\eq@argi\eq@ZERO\else - \ifx\eq@argi\eq@ONE\else\ifx\eq@argi\eq@TWO\else - \def\eq@argi{-1}\fi\fi\fi - \def\eq@argii{#2}\ifx\eq@argii\eq@ONE\else\def\eq@argii{0}\fi - \begingroup - \ifnum\eq@argii=1\relax - \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}% - \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}% - \def\word##1{\\b##1\\b}\def\any{@any@}\fi - \xdef\rbTxtAlt{\rbFlag,\eq@argi,\eq@argii}% - \global\let\txtAltList\@empty - \count0=#4 \ifnum\count0 > 0 \expandafter\@argRead\else - \PackageError{exerquiz}{% - The fourth required parameter of \string\RespBoxTxt\MessageBreak - is required to be a positive integer. You entered\MessageBreak - #4\space instead}{Enter a positive integer.}\fi + \xdef\@qzsolndest{#3}% + \def\eq@argi{#1}\ifx\eq@argi\eq@ZERO\else + \ifx\eq@argi\eq@ONE\else\ifx\eq@argi\eq@TWO\else + \def\eq@argi{-1}\fi\fi\fi + \def\eq@argii{#2}\ifx\eq@argii\eq@ONE\else\def\eq@argii{0}\fi + \begingroup + \ifnum\eq@argii=1\relax + \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}% + \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}% + \def\word##1{\\b##1\\b}\def\any{@any@}\fi + \xdef\rbTxtAlt{\rbFlag,\eq@argi,\eq@argii}% + \global\let\txtAltList\@empty + \count0=#4 \ifnum\count0 > 0 \expandafter\@argRead\else + \PackageError{exerquiz}{% + The fourth required parameter of \string\RespBoxTxt\MessageBreak + is required to be a positive integer. You entered\MessageBreak + #4\space instead}{Enter a positive integer.}\fi } \def\@argRead#1{\xdef\jsTempArgs{\txtAltList}% \ifx\txtAltList\@empty\xdef\txtAltList{"#1"}\else @@ -3922,16 +3953,16 @@ if (!isQuizInitialized("@currQuiz")) { \begin{defineJS}[% \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxtPC} if(event.willCommit){ - RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% + RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% @thegrpquestionno,@grpPointValue,@grpTotalWeight,% "@grpEvalFunction"@fi); - RecordProblemType("@eqQT",@thequestionno); - var retn = ProcRespTxtPC(@rbTxtAlt); + RecordProblemType("@eqQT",@thequestionno); + var retn = ProcRespTxtPC(@rbTxtAlt); @ifx@grpquestions1% - ProbValue[@thequestionno][3+@thegrpquestionno]% +ProbValue[@thequestionno][3+@thegrpquestionno]% =ProcRespTxtPC.txtPCpCr;@else% - ProbValue[@thequestionno]=ProcRespTxtPC.txtPCpCr;@fi - ProcUserResp(retn,event.value,@thequestionno,0% +ProbValue[@thequestionno]=ProcRespTxtPC.txtPCpCr;@fi + ProcUserResp(retn,event.value,@thequestionno,0% @ifx@grpquestions1,@thegrpquestionno@fi); } if (!isQuizInitialized("@currQuiz")) { @@ -4067,7 +4098,8 @@ if (!isQuizInitialized("@currQuiz")) { \stepcounter{questionno}% \xdef\@qzsolndest{#1}% \edef\eqtmp{\aPointType}\xdef\aPointType{\eqtmp,[\eqPTs,"essay"]}% - \expandafter\mbox\expandafter{\expandafter\text@@Field\expandafter{\rbe@rgi}{essay.\curr@quiz.\thequestionno}{#2}{#3}% + \expandafter\mbox\expandafter{\expandafter\text@@Field + \expandafter{\rbe@rgi}{essay.\curr@quiz.\thequestionno}{#2}{#3}% {\eq@protect\AA}{\eq@setWidgetProps \eq@TextField}{\RespBoxEssayDefaults\@@RespBoxEssayActions \every@eqTextField}}% @@ -4427,7 +4459,7 @@ if (!isQuizInitialized("@currQuiz")) { \let\eqQzQuesList\@empty \def\eq@AddProbToQzQuesList{% \edef\eq@tmpExp{\noexpand\g@addto@macro% - \noexpand\eqQzQuesList{\string + \noexpand\eqQzQuesList{\noexpand \@eqListExp{\@currentQues}{\the\c@page}}}% \ifx\grpquestions\eq@Zero\eq@tmpExp\fi } |