summaryrefslogtreecommitdiff
path: root/texmf-dist/tex/latex/acrotex/exerquiz.sty
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/tex/latex/acrotex/exerquiz.sty')
-rw-r--r--texmf-dist/tex/latex/acrotex/exerquiz.sty256
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
}