From a979a969ee8a924408ebeb767035b9e4f48f7efa Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 1 Feb 2021 13:14:30 +0900 Subject: acrotex (2021-02-01) --- texmf-dist/tex/latex/acrotex/exerquiz.sty | 3009 ++++++++++++++--------------- 1 file changed, 1490 insertions(+), 1519 deletions(-) (limited to 'texmf-dist/tex/latex/acrotex/exerquiz.sty') diff --git a/texmf-dist/tex/latex/acrotex/exerquiz.sty b/texmf-dist/tex/latex/acrotex/exerquiz.sty index 5993a465..06db5760 100644 --- a/texmf-dist/tex/latex/acrotex/exerquiz.sty +++ b/texmf-dist/tex/latex/acrotex/exerquiz.sty @@ -19,7 +19,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{exerquiz} - [2020/03/14 v8.5.10 % + [2021/01/20 v8.6.2 % Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)] \usepackage{keyval} \RequirePackage{ifpdf}[2006/02/20] @@ -27,9 +27,9 @@ \RequirePackage{ifluatex} \@ifundefined{exqtable}{\def\exqtable{table}}{} \IfFileExists{xcolor.sty}{% - \def\eq@ColorPackage{xcolor}% - \PassOptionsToPackage{\exqtable,hyperref}{xcolor}} - {\def\eq@ColorPackage{color}} + \def\eq@ColorPackage{xcolor}% + \PassOptionsToPackage{\exqtable,hyperref}{xcolor}} + {\def\eq@ColorPackage{color}} \DeclareOption{noxcolor}{\def\eq@ColorPackage{color}} \DeclareOption{forpaper}{% \eqforpapertrue\PassOptionsToPackage{monochrome}{\eq@ColorPackage} @@ -269,8 +269,11 @@ \expandafter#2\fi} \newif\ifeq@randomizeChoices \eq@randomizeChoicesfalse \newif\ifeq@randomizeallChoices \eq@randomizeallChoicesfalse +\newif\if@DoNotRandomize \@DoNotRandomizefalse \def\turnOnRandomize{\eq@randomizeallChoicestrue} \def\obeyLocalRandomize{\eq@randomizeallChoicesfalse} +\def\doNotRandomizeChoices{\@DoNotRandomizetrue} +\def\allowRandomizedChoices{\@DoNotRandomizefalse} \let\saveRandomSeed\relax \let\inputRandomSeed\relax \def\CorrectionsOn{\global\nocorrectionsfalse} @@ -1641,45 +1644,44 @@ \let\propQ@labelwidth\@empty \define@key{props@ques}{topsep}[\the\topsep]{\edef\propQ@topsep{#1}} \define@key{props@ques}{partopsep}[\the\partopsep]% - {\edef\propQ@partopsep{#1}} + {\edef\propQ@partopsep{#1}} \define@key{props@ques}{parsep}[\the\parsep]{\edef\propQ@parsep{#1}} \define@key{props@ques}{itemsep}[\the\itemsep]{\edef\propQ@itemsep{#1}} \define@key{props@ques}{labelsepTo}[\normalsize\normalfont\ ]% - {\def\propQ@labelsepTo{#1}} + {\def\propQ@labelsepTo{#1}} \define@key{props@ques}{labelsep}[\@empty]{\def\propQ@labelsep{#1}} \let\propQ@labelsep\@empty \define@key{props@ques}{color}[blue]{\quesNumColor{#1}} \setkeys{props@ques}{labelwidthTo,topsep,partopsep,parsep,% itemsep,labelsepTo,color}% -\newenvironment{questions}[1][] -{% - \ifnum\@eqquestiondepth>\tw@\@toodeep\else - \advance\@eqquestiondepth\@ne\fi - \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}% - \toks@=\expandafter\expandafter\expandafter{#1}\expandafter - \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}% - \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp - \list{\qMark@Hook\prior@questionsHook - \insE@rlyAtQues\gdef\eqPTs{1}% - \global\let\eqQT\eq@na% - {\@tempcnta=0 \let\@thispr@b\@empty - \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne - \ifx\@thispr@b\@empty\edef\@thispr@b{% - \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else - \edef\@thispr@b{\@thispr@b% - \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi - }\xdef\@currentQues{\@thispr@b}}% - \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}% - \xdef\eq@pageThisQ{\the\c@page}% - \post@questionsHook}{\usecounter{\@quesctr}% +\newenvironment{questions}[1][]{% + \ifnum\@eqquestiondepth>\tw@\@toodeep\else + \advance\@eqquestiondepth\@ne\fi + \def\@quesctr{eqquestionno\romannumeral\the\@eqquestiondepth}% + \toks@=\expandafter\expandafter\expandafter{#1}\expandafter + \xdef\csname quesOpts\@quesctr\endcsname{\the\toks@}% + \edef\tempexp{\noexpand\setkeys{props@ques}{\the\toks@}}\tempexp + \list{\qMark@Hook\prior@questionsHook + \insE@rlyAtQues\gdef\eqPTs{1}% + \global\let\eqQT\eq@na% + {\@tempcnta=0 \let\@thispr@b\@empty + \@whilenum\@tempcnta<\@eqquestiondepth\do{\advance\@tempcnta\@ne + \ifx\@thispr@b\@empty\edef\@thispr@b{% + \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\else + \edef\@thispr@b{\@thispr@b% + \csname theeqquestionno\romannumeral\the\@tempcnta\endcsname}\fi + }\xdef\@currentQues{\@thispr@b}}% + \makebox[\labelwidth][r]{\normalfont\@nameuse{label\@quesctr}}% + \xdef\eq@pageThisQ{\the\c@page}% + \post@questionsHook}{\usecounter{\@quesctr}% \ifx\propQ@labelsep\@empty - \settowidth{\labelsep}{\propQ@labelsepTo}\else - \setlength{\labelsep}{\propQ@labelsep}\fi + \settowidth{\labelsep}{\propQ@labelsepTo}\else + \setlength{\labelsep}{\propQ@labelsep}\fi \ifx\propQ@labelwidth\@empty - \settowidth{\labelwidth}% - {\propQ@labelwidthTo\hspace{\labelsep}}\else - \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}% - \hspace{\labelsep}}\fi + \settowidth{\labelwidth}% + {\propQ@labelwidthTo\hspace{\labelsep}}\else + \settowidth{\labelwidth}{\hspace{\propQ@labelwidth}% + \hspace{\labelsep}}\fi \setlength{\topsep}{\propQ@topsep}% \setlength{\partopsep}{\propQ@partopsep}% \ifdim\parskip>\z@\addtolength{\topsep}{-\parskip}\fi @@ -1717,45 +1719,48 @@ }{\aeb@endshortquiz} \newenvironment{shortquiz*} {% - \xdef\eq@pageThisQ{\the\c@page}% - {\eqtmpcnta\@shortquizCnt\relax\advance\eqtmpcnta\@ne - \xdef\@shortquizCnt{\the\eqtmpcnta}}% - \sqForms\@shortquiz + \xdef\eq@pageThisQ{\the\c@page}% + {\eqtmpcnta\@shortquizCnt\relax\advance\eqtmpcnta\@ne + \xdef\@shortquizCnt{\the\eqtmpcnta}}% + \sqForms\@shortquiz }{\aeb@endshortquiz} \def\@shortquiz{\@ifnextchar[% - {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}} + {\@@shortquiz}{\@@shortquiz[\@sqGenBaseName]}} \def\sq@setCLN#1{\ifx\aebTitleQuiz\@empty - \protected@edef\@currentlabelname{#1}\else - \protected@edef\@currentlabelname{\@currentlabelname}\fi + \protected@edef\@currentlabelname{#1}\else + \protected@edef\@currentlabelname{\@currentlabelname}\fi } \let\isQZ=q \let\isSQZ=s -\def\sq@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{} - \S{S}\textSize{0}\Ff{\FfReadOnly} - \AA{\AAFormat{% - if (typeof \oField=="undefined")\r\t - var \oField=new Object;\r - \oField.Grp={}; - \ifx\defaultColorJSLoc\@empty\else\r - \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi - \ifx\rghtColorJSLoc\@empty\else\r - \oField.RightColorJSLoc=\rghtColorJSLoc;\fi - \ifx\wrngColorJSLoc\@empty\else\r - \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi - \ifx\rghtAnsSymbJSLoc\@empty\else\r - \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi - \ifx\wrngAnsSymbJSLoc\@empty\else\r - \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi -}}]{sqID\oField}{2bp}{2bp}}% -} -\def\qz@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{} +\def\sq@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");\r - if (typeof \oField=="undefined")\r\t - var \oField=new Object;\r - }}]{qzID\oField}{2bp}{2bp}}} + \AA{\AAFormat{% + if\eqSP(typeof\eqSP\oField=="undefined")\eqSP + var\eqSP\oField=new\eqSP Object;\r + \oField.Grp={};% + \ifx\defaultColorJSLoc\@empty\else\r + \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi + \ifx\rghtColorJSLoc\@empty\else\r + \oField.RightColorJSLoc=\rghtColorJSLoc;\fi + \ifx\wrngColorJSLoc\@empty\else\r + \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi + \ifx\rghtAnsSymbJSLoc\@empty\else\r + \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi + \ifx\wrngAnsSymbJSLoc\@empty\else\r + \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi + }}]{sqID\oField}{2bp}{2bp}}% +} +\begin{defineJS}[\makeesc\!\makecmt\%]{\qzIDFmt} +if(typeof aQuizzesInDoc=="undefined") + var aQuizzesInDoc=new Array(); +if (aQuizzesInDoc.indexOf("!oField")) + aQuizzesInDoc.push("!oField"); +if (typeof !oField=="undefined") + var !oField=new Object; +\end{defineJS} +\def\qz@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{} + \S{S}\textSize{0}\Ff{\FfReadOnly} + \AA{\AAFormat{\qzIDFmt}}]{qzID\oField}{2bp}{2bp}}} \let\eqQuizType\relax \def\@@shortquiz[#1]{%\begingroup \gdef\oField{#1}\gdef\curr@quiz{#1}\gdef\currQuiz{#1}% @@ -1770,7 +1775,7 @@ \let\@Ans\Ans@sq@f \ifx\oField\@empty \typeout{^^JExerquiz: Base field name required when using - shortquiz with '*' option}% + shortquiz with '*' option}% \PackageInfo{exerquiz}{Assuming link style^^J}% \let\@Ans\Ans@sq@l \fi @@ -1786,16 +1791,16 @@ \let\endsolution\endsolution@sq \let\ifstaroption\eq@ifstaroption \if\eq@tq@star*% - \def\sqlabel{\aebtitleQuiz\@gobbletwo}% + \def\sqlabel{\aebtitleQuiz\@gobbletwo}% \fi - \sq@aboveskip\sq@priorhook - \@ifundefined{PointsOnLeft}% - {\sq@setCLN{\eq@defaultShortQuizLabelName}% - \ifx\sqlabel\@empty\else\noindent\fi - \hypertarget{sqH\@currentHref}{}\sq@IDTxtField - \ifx\sqlabel\@empty\else\expandafter - \sqlabel\expandafter\sqhspace\fi - {\set@typeset@protect\aebtitleQuiz}}{}\ignorespaces + \sq@aboveskip\sq@priorhook + \@ifundefined{PointsOnLeft}% + {\sq@setCLN{\eq@defaultShortQuizLabelName}% + \ifx\sqlabel\@empty\else\noindent\fi + \hypertarget{sqH\@currentHref}{}\sq@IDTxtField + \ifx\sqlabel\@empty\else\expandafter + \sqlabel\expandafter\sqhspace\fi + {\set@typeset@protect\aebtitleQuiz}}{}\ignorespaces } \newcommand\belowsqskip[1]{\def\aftershortquizskip{#1}} \belowsqskip{\medskip} @@ -1915,29 +1920,29 @@ \let\endeqQt\relax \let\prior@quizSolnHeaderHook\@empty \newcommand\quizSolnHeader[3][]{% - \prior@quizSolnHeaderHook - \ifeqforpaper\else\webnewpage\fi\noindent - \def\eq@argi{#1}% - \ifx\eq@argi\@empty\else\noPeek#1\fi - \hypertarget{#2}{#3}\relax - \solnspace + \prior@quizSolnHeaderHook + \ifeqforpaper\else\webnewpage\fi\noindent + \def\eq@argi{#1}% + \ifx\eq@argi\@empty\else\noPeek#1\fi + \hypertarget{#2}{#3}\relax + \solnspace } \def\AllowPeeking{\global\let\allow@peek\eq@YES}\AllowPeeking \def\NoPeeking{\global\let\allow@peek\eq@NO} \def\noPeekAction#1#2{% - /AA <> >> + /AA <> >> } \newif\iftherearequizsolutions \therearequizsolutionsfalse \let\aeb@FLOverride\relax \def\includequizsolutions{\@ifstar - {\let\resetQZtsolns\relax\includequizsolutionsi} - {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}% - \includequizsolutionsi}} + {\let\resetQZtsolns\relax\includequizsolutionsi} + {\def\resetQZtsolns{\global\let\include@quizsolutions\relax}% + \includequizsolutionsi}} \newcommand{\includequizsolutionsi}[1][]{% - \filterFor{#1}\includequizsolutionsii} + \filterFor{#1}\includequizsolutionsii} \def\includequizsolutionsii{\include@quizsolutions - \resetQZtsolns - \let\eqFilterArg\@empty} + \resetQZtsolns + \let\eqFilterArg\@empty} \let\eqqzsolutionshook\@empty \let\priorsqslsectitle\@empty \let\priorsqslinput\@empty @@ -1964,22 +1969,22 @@ } \newcommand{\quizSolnInput} {% - \global\let\webnewpage\relax - \bgroup\OKToWriteExamDatatrue - \writeT@QzSolns{\string\endinput}\egroup - \immediate\closeout\quiz@solns - \ifeq@noquizsolutions\else - \iftherearequizsolutions\newpage\markright{}% - \eq@normallheader\markright{\sqslsecrunhead}% - \ifx\webnewpage\relax - \def\webnewpage{\global\let\webnewpage\newpage}\fi - \priorsqslsectitle\quizSolnsHeadnToc\priorsqslinput - \InputIfFileExists{\jobname.qsl}{}% - {!!! Solutions to quizzes not found} - \eqqzsolutionshook - \newpage\eq@defaultlheader - \fi + \global\let\webnewpage\relax + \bgroup\OKToWriteExamDatatrue + \writeT@QzSolns{\string\endinput}\egroup + \immediate\closeout\quiz@solns + \ifeq@noquizsolutions\else + \iftherearequizsolutions\newpage\markright{}% + \eq@normallheader\markright{\sqslsecrunhead}% + \ifx\webnewpage\relax + \def\webnewpage{\global\let\webnewpage\newpage}\fi + \priorsqslsectitle\quizSolnsHeadnToc\priorsqslinput + \InputIfFileExists{\jobname.qsl}{}% + {!!! Solutions to quizzes not found} + \eqqzsolutionshook + \newpage\eq@defaultlheader \fi + \fi } \def\include@quizsolutions{\quizSolnInput} \newcommand{\priorqhook}[1]{\def\q@priorhook{#1}} @@ -1994,31 +1999,31 @@ \def\belowqskip{\belowqHooknSkip} \let\eq@initializeServerSubmit\@empty \newcommand{\quiztype}[1]{% - \def\@quiztype{#1}\def\aeb@FLOverride{#1}} + \def\@quiztype{#1}\def\aeb@FLOverride{#1}} \let\@quiztype\@empty \newcommand{\defaultquiztype}{\let\@quiztype\@empty - \let\aeb@FLOverride\relax} + \let\aeb@FLOverride\relax} \let\aeb@FLOverride\relax \def\@setFormLinkType{% - \if\qstar*% - \ifx\aeb@FLOverride\relax% - \def\@@quiztype{f}% - \else - \if\aeb@FLOverride l\def\@@quiztype{l}\else - \def\@@quiztype{f}\fi - \fi + \if\qstar*% + \ifx\aeb@FLOverride\relax% + \def\@@quiztype{f}% \else - \ifx\aeb@FLOverride\relax - \def\@@quiztype{l}% - \else - \if\aeb@FLOverride f\def\@@quiztype{f}\else - \def\@@quiztype{l}\fi - \fi + \if\aeb@FLOverride l\def\@@quiztype{l}\else + \def\@@quiztype{f}\fi + \fi + \else + \ifx\aeb@FLOverride\relax + \def\@@quiztype{l}% + \else + \if\aeb@FLOverride f\def\@@quiztype{f}\else + \def\@@quiztype{l}\fi \fi + \fi } \def\setdefault@Ans{\@setFormLinkType - \expandafter\global\expandafter - \let\expandafter\@Ans\expandafter=\csname Ans@\@@quiztype\endcsname + \expandafter\global\expandafter + \let\expandafter\@Ans\expandafter=\csname Ans@\@@quiztype\endcsname } \newcommand\useForms{\def\aeb@FLOverride{f}} \newcommand\useLinks{\def\aeb@FLOverride{l}} @@ -2030,38 +2035,39 @@ \def\@quizCnt{0} \let\ListOfQuizNames\@empty \def\@quiz*#1#2{% - \xdef\eq@pageThisQ{\the\c@page}% - \let\@currentQues\@empty - \global\let\eqQzQuesList\@empty - \global\let\pointValuesArray\@empty - \global\let\ptypeArray\@empty - \global\let\corrAnsArray\@empty - {\eqtmpcnta\@quizCnt\advance\eqtmpcnta\@ne - \xdef\@quizCnt{\the\eqtmpcnta}}% - \edef\@currentlabel{\@quizCnt}% - \edef\@currentHref{quiz.\@quizCnt}% - \sq@setCLN{\eq@defaultQuizLabelName}% - \setcounter{eqpointvalue}{0}\setcounter{questionno}{0}% - \eq@initializeServerSubmit - \global\let\eqQuizType\isQZ %\tabcolsep=0pt - \gdef\eqPTs{1}\global\let\eqQT\eq@na - \g@addto@macro\ListOfQuizNames{,#2}% - \gdef\quiz@total{#2}\xdef\curr@quiz{#2}\xdef\oField{#2}% - \xdef\currQuiz{#2}\xdef\currQuizStartPage{\thepage}% - \xdef\aPointType{0}% - \def\fieldJSStr@CMD{\fieldJSStr*[noquotes]\bqlabelISO}% - \expandafter\fieldJSStr@CMD\expandafter{\bqlabelISO}% - \ifx\@quiztype\@empty\gdef\@@quiztype{#1}\else - \xdef\@@quiztype{\@quiztype}\fi - \let\@qzsolndest\@empty - \let\answers\answers@q\let\endanswers\endanswers@q - \let\manswers\manswers@q\let\endmanswers\endanswers@q - \let\solution\solution@sq\let\endsolution\endsolution@sq - \expandafter% - \xdef\csname titleOf\currQuiz\endcsname{\aebTitleQuiz}% - \q@aboveskip\q@priorhook\noindent\hypertarget{qzH\@currentHref}{}% - \eq@beginQuiz\qhspace{\set@typeset@protect\aebtitleQuiz}% - \ignorespaces} + \xdef\eq@pageThisQ{\the\c@page}% + \let\@currentQues\@empty + \global\let\eqQzQuesList\@empty + \global\let\pointValuesArray\@empty + \global\let\ptypeArray\@empty + \global\let\corrAnsArray\@empty + {\eqtmpcnta\@quizCnt\advance\eqtmpcnta\@ne + \xdef\@quizCnt{\the\eqtmpcnta}}% + \edef\@currentlabel{\@quizCnt}% + \edef\@currentHref{quiz.\@quizCnt}% + \sq@setCLN{\eq@defaultQuizLabelName}% + \setcounter{eqpointvalue}{0}\setcounter{questionno}{0}% + \eq@initializeServerSubmit + \global\let\eqQuizType\isQZ %\tabcolsep=0pt + \gdef\eqPTs{1}\global\let\eqQT\eq@na + \g@addto@macro\ListOfQuizNames{,#2}% + \gdef\quiz@total{#2}\xdef\curr@quiz{#2}\xdef\oField{#2}% + \xdef\currQuiz{#2}\xdef\currQuizStartPage{\thepage}% + \xdef\aPointType{0}% + \def\fieldJSStr@CMD{\flJSStr*[noquotes]\bqlabelISO}% + \expandafter\fieldJSStr@CMD\expandafter{\bqlabelISO}% + \ifx\@quiztype\@empty\gdef\@@quiztype{#1}\else + \xdef\@@quiztype{\@quiztype}\fi + \let\@qzsolndest\@empty + \let\answers\answers@q\let\endanswers\endanswers@q + \let\manswers\manswers@q\let\endmanswers\endanswers@q + \let\solution\solution@sq\let\endsolution\endsolution@sq + \expandafter + \xdef\csname titleOf\currQuiz\endcsname{\aebTitleQuiz}% + \q@aboveskip\q@priorhook\noindent\hypertarget{qzH\@currentHref}{}% + \eq@beginQuiz\qhspace{\set@typeset@protect\aebtitleQuiz}% + \ignorespaces +} \def\aeb@endquiz {% \eq@prior@endQuiz\noindent\eq@endQuiz @@ -2079,101 +2085,76 @@ \newcommand\eq@beginQuiz{\eq@BeginQuizLink} \newcommand\eq@endQuiz{\eq@EndQuizLink} \newcommand\useBeginQuizButton[1][] - {\renewcommand\eq@beginQuiz{\eq@BeginQuizButton[#1]}} + {\renewcommand\eq@beginQuiz{\eq@BeginQuizButton[#1]}} \newcommand\useEndQuizButton[1][] - {\renewcommand\eq@endQuiz{\eq@EndQuizButton[#1]}} + {\renewcommand\eq@endQuiz{\eq@EndQuizButton[#1]}} \newcommand\useBeginQuizLink - {\renewcommand\eq@beginQuiz{\eq@BeginQuizLink}} + {\renewcommand\eq@beginQuiz{\eq@BeginQuizLink}} \newcommand\useEndQuizLink - {\renewcommand\eq@endQuiz{\eq@EndQuizLink}} + {\renewcommand\eq@endQuiz{\eq@EndQuizLink}} \newcommand\@initQuiz{% - var \curr@quiz=new Object();\jsR - lstOfQuizzes["\curr@quiz"]=\curr@quiz;\jsR - \curr@quiz.oAlertCheck={bAfterValue:false};\jsR - \curr@quiz.Grp={}; - \ifx\defaultColorJSLoc\@empty\else\jsR - \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi - \ifx\rghtColorJSLoc\@empty\else\jsR - \oField.RightColorJSLoc=\rghtColorJSLoc;\fi - \ifx\wrngColorJSLoc\@empty\else\jsR - \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi - \ifx\partialColorJSLoc\@empty\else\jsR - \oField.PartialColorJSLoc=\partialColorJSLoc;\fi - \ifx\rghtAnsSymbJSLoc\@empty\else\jsR - \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi - \ifx\wrngAnsSymbJSLoc\@empty\else\jsR - \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi - \ifx\corrAnsSymbJSLoc\@empty\else\jsR - \oField.CorrAnsSymbJSLoc=\corrAnsSymbJSLoc;\fi - \ifx\eqGradeScaleLoc\@empty\else\jsR - \oField.GradeScaleLoc=new Array(\eqGradeScaleLoc);\fi - \ifx\eqCorrLocalChoiceFully\@empty\else\jsR % dpsf07 - \oField.fullyCorrectLoc=\eqCorrLocalChoiceFully;\fi - \ifx\priorInitQuiz\@empty\else\jsR\priorInitQuiz\fi %\jsR - InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi); - \ifx\eq@CGI\@empty\jsR\curr@quiz.isSubmitted=false;\else - \jsR\curr@quiz.isSubmitted=true;\fi - \jsR\curr@quiz.initializeWith=% -'InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);' - \ifx\postInitQuiz\@empty\else\jsR\postInitQuiz\fi + var\eqSP\curr@quiz=new Object();\jsR + lstOfQuizzes["\curr@quiz"]=\curr@quiz;\jsR + \curr@quiz.oAlertCheck={bAfterValue:false};\jsR + \curr@quiz.Grp={};% + \ifx\defaultColorJSLoc\@empty\else\jsR + \oField.DefaultColorJSLoc=\defaultColorJSLoc;\fi + \ifx\rghtColorJSLoc\@empty\else\jsR + \oField.RightColorJSLoc=\rghtColorJSLoc;\fi + \ifx\wrngColorJSLoc\@empty\else\jsR + \oField.WrongColorJSLoc=\wrngColorJSLoc;\fi + \ifx\partialColorJSLoc\@empty\else\jsR + \oField.PartialColorJSLoc=\partialColorJSLoc;\fi + \ifx\rghtAnsSymbJSLoc\@empty\else\jsR + \oField.RightAnsSymbJSLoc=\rghtAnsSymbJSLoc;\fi + \ifx\wrngAnsSymbJSLoc\@empty\else\jsR + \oField.WrongAnsSymbJSLoc=\wrngAnsSymbJSLoc;\fi + \ifx\corrAnsSymbJSLoc\@empty\else\jsR + \oField.CorrAnsSymbJSLoc=\corrAnsSymbJSLoc;\fi + \ifx\eqGradeScaleLoc\@empty\else\jsR + \oField.GradeScaleLoc=new Array(\eqGradeScaleLoc);\fi + \ifx\eqCorrLocalChoiceFully\@empty\else\jsR + \oField.fullyCorrectLoc=\eqCorrLocalChoiceFully;\fi + \if$\priorInitQuiz$\else\jsR\priorInitQuiz\fi\jsR + InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);% + \ifx\eq@CGI\@empty\jsR\curr@quiz.isSubmitted=false;\else + \jsR\curr@quiz.isSubmitted=true;\fi + \jsR\curr@quiz.initializeWith=% + 'InitializeQuiz("\curr@quiz",\ifnocorrections0\else1\fi);';% + \if$\postInitQuiz$\else\jsR\postInitQuiz\fi% } \newcommand{\priorInitQuiz}{} \newcommand{\postInitQuiz}{} \let\eq@submitURL\@empty \let\eq@insertHiddenFields\@empty +\newcommand\priorSubmitQuiz{} +\newcommand\postSubmitQuiz{} \def\eq@@BeginQuizLinkActions{\A{\JS{\@initQuiz}}} \def\eq@BeginQuizLinkDefaults{\Border{0 0 0}} \let\bqlabelFmt\@empty -\def\eq@BeginQuizLink{% - \qz@IDTxtField +\def\eq@BeginQuizLink{\qz@IDTxtField \set@@Link{}{}{}{\color{\@linkcolor}\bqlabelFmt\bqlabel}{}% {\eq@setWidgetProps\setLink@driver}% {\eq@BeginQuizLinkDefaults\eq@@BeginQuizLinkActions\every@Link}% \space\ignorespaces} -\newcommand\priorSubmitQuiz{} -\newcommand\postSubmitQuiz{} -\def\eq@@EndQuizLinkActions{\A{\JS{% - if (!isQuizInitialized("\curr@quiz"))\jsR\jsT - eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR - else {\jsR\jsT - if (\minQuizResp(\thequestionno)) {\jsR\jsT\jsT - \curr@quiz.PtValues=new % - Array(\pointValuesArray);\jsR\jsT\jsT - ProbType = [\ptypeArray];\jsR\jsT\jsT -\if@inclkey - \curr@quiz.CorrAns=(new % - Array(\corrAnsArray));\jsR\jsT\jsT -\fi - DisplayQuizResults("\curr@quiz",\theeqpointvalue,% - \thequestionno);\jsR\jsT\jsT - var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT - h.value=Score+";"+NQuestions+";"% - +ptScore+";"+NPointTotal;\jsR\jsT\jsT - \eq@submitURL - \postSubmitQuiz - \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT - }\jsR - }}}% -} +\def\eq@@EndQuizLinkActions{\A{\JS{\eQzBtnActns}}} \def\eq@EndQuizLinkDefaults{\Border{0 0 0}} \let\eqlabelFmt\@empty -\def\eq@EndQuizLink -{% - \ifx\eq@CGI\@empty - \let\eq@submitURL\@empty - \let\eq@insertHiddenFields\@empty - \fi - \set@@Link{}{}{}{\color{\@linkcolor}\eqlabelFmt\eqlabel}{}% - {\eq@setWidgetProps\setLink@driver}% - {\eq@EndQuizLinkDefaults\eq@@EndQuizLinkActions\every@Link}% - \makebox[0pt][r]{\textField[\BC{}\autoCenter{n}]% - {htxtfld.\curr@quiz}{2bp}{2bp}}% - \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}% - \global\let\eq@CGI\@empty\ignorespaces +\def\eq@EndQuizLink{% + \ifx\eq@CGI\@empty + \let\eq@submitURL\@empty + \let\eq@insertHiddenFields\@empty\fi + \set@@Link{}{}{}{\color{\@linkcolor}\eqlabelFmt\eqlabel}{}% + {\eq@setWidgetProps\setLink@driver}% + {\eq@EndQuizLinkDefaults\eq@@EndQuizLinkActions\every@Link}% + \makebox[0pt][r]{\textField[\BC{}\autoCenter{n}]% + {htxtfld.\curr@quiz}{2bp}{2bp}}% + \makebox[0pt][r]{\eq@hiddenScoreData\eq@insertHiddenFields}% + \global\let\eq@CGI\@empty\ignorespaces } \def\BeginQuizButtonDefaults{% - \CA{\bqlabel}\H{P}\F{\FPrint} - \BC{1 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}} + \CA{\bqlabel}\H{P}\F{\FPrint} + \BC{1 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}} \def\eq@@BeginQuizButtonActions{\A{\JS{\@initQuiz}}} \newcommand\eq@BeginQuizButton[1][]{% \mbox{\qz@IDTxtField\push@@Button{#1}{beginQuiz.\curr@quiz}{}% @@ -2181,39 +2162,39 @@ {\eq@setButtonProps\eq@Button@driver}% {\BeginQuizButtonDefaults\eq@@BeginQuizButtonActions \every@ButtonField\every@BeginQuizButton}}} -\def\EndQuizButtonDefaults{% - \CA{\eqlabel}\F{\FPrint}\BC{1 0 0} - \BG{.7529 .7529 .7529}\W{1}\S{B}\H{P}} -\def\eq@@EndQuizButtonActions{\A{\JS{% - if (!isQuizInitialized("\curr@quiz"))\jsR\jsT - eqAppAlert(InitMsg("\bqlabelISO"),3);\jsR - else {\jsR\jsT - if (\minQuizResp(\thequestionno)&&_ModalNotOn){\jsR\jsT\jsT - \curr@quiz.PtValues=(new % - Array(\pointValuesArray));\jsR\jsT\jsT - ProbType=[\ptypeArray];\jsR\jsT\jsT -\if@inclkey - \curr@quiz.CorrAns=(new % - Array(\corrAnsArray));\jsR\jsT\jsT -\fi - DisplayQuizResults("\curr@quiz",\theeqpointvalue,% - \thequestionno);\jsR\jsT\jsT - var h=this.getField("ScoreData.\curr@quiz");\jsR\jsT\jsT - h.value=Score+";"+NQuestions+";"% - +ptScore+";"+NPointTotal;\jsR\jsT\jsT - \eq@submitURL - \postSubmitQuiz - \jsT\jsT resetQuiz("\curr@quiz");\jsR\jsT - }\jsR - }}}% +\begin{defineJS}[\makeesc\*\makecmt\%]{\eQzBtnActns} +if (!isQuizInitialized("*curr@quiz")) + eqAppAlert(InitMsg("*bqlabelISO"),3); +else { + if (*minQuizResp(*thequestionno)&&_ModalNotOn){ + *curr@quiz.PtValues=new Array(*pointValuesArray); + ProbType=[*ptypeArray];% +*if@inclkey + *curr@quiz.CorrAns=new Array(*corrAnsArray);*fi + DisplayQuizResults("*curr@quiz",*theeqpointvalue,% +*thequestionno); + var h=this.getField("ScoreData.*curr@quiz"); + h.value=Score+";"+NQuestions+";"% ++ptScore+";"+NPointTotal;% +*ifx*eq@submitURL*empty*else + *eq@submitURL*fi% +*if$*postSubmitQuiz$*else + *postSubmitQuiz*fi + resetQuiz("*curr@quiz"); + } } +\end{defineJS} +\def\EndQuizButtonDefaults{% + \CA{\eqlabel}\F{\FPrint}\BC{1 0 0} + \BG{.7529 .7529 .7529}\W{1}\S{B}\H{P}} +\def\eq@@EndQuizButtonActions{% + \A{\JS{\eQzBtnActns}}} \newcommand{\eq@hiddenScoreData}{\makebox[0pt][r]{% \textField[\BC{}\F{\FHidden}]{ScoreData.\curr@quiz}{2bp}{2bp}}} \newcommand\eq@EndQuizButton[1][]{% \ifx\eq@CGI\@empty \let\eq@submitURL\@empty - \let\eq@insertHiddenFields\@empty - \fi + \let\eq@insertHiddenFields\@empty\fi \mbox{\push@@Button{#1}{endQuiz.\curr@quiz}{}% {\DefaultHeightOfWidget}{\eq@protect\A}% {\eq@setButtonProps\eq@Button@driver}% @@ -2639,24 +2620,22 @@ if (isEndQuizPushed("@eqBaseName")){ \vspace{\aboveanswersSkip}\@endpetrue\fi } \def\popiiictm{\special{CTM: pop pop pop}} -\def\sqWrongRespJS{OnBlurRespBox( false, "\oField" );} -\def\sqRightRespJS{OnBlurRespBox( true, "\oField" );} +\def\sqWrongRespJS{OnBlurRespBox(false,"\oField");} +\def\sqRightRespJS{OnBlurRespBox(true,"\oField");} \def\Ans@sq@l@Actions {% - \A{\if\Ans@choice1 - \JS{\sqRightRespJS} - \ifx\@qzsolndest\@empty\else - \ifeq@solutionsafter\else - /Next <> - \fi + \A{\if\Ans@choice\eq@One\JS{\sqRightRespJS} + \ifx\@qzsolndest\@empty\else + \ifeq@solutionsafter\else + /Next <> \fi + \fi \else \JS{\sqWrongRespJS\jsR \ifx\oField\@empty\else - updateTally("\oField.\thequestionno"); - \fi}% + updateTally("\oField.\thequestionno");\fi}% \fi - }% + }% } \def\linkContentFormat{\alph{quizno}} \def\aebChoiceAltFmt{\noexpand\ifaebshowgrayletters @@ -2689,39 +2668,49 @@ if (isEndQuizPushed("@eqBaseName")){ \def\sqNoCorrections{\let\@sqAlertsOnly\eq@One} \def\sqCorrections{\let\@sqAlertsOnly\eq@Zero} \sqNoCorrections -\def\Ans@sq@f@ActionsTrue{% - \if\@sqTurnOffAlerts1OnBlurRespBox(true,"\oField");\jsR\fi - \ifx\@qzsolndest\@empty\else\ifeq@solutionsafter\else - jmpToNamedDest("\oField","\@qzsolndest",% - \if\@sqTurnOffAlerts00\else1\fi);\fi - \fi\eqAddAAMouseUpMC} -\def\Ans@sq@f@ActionsFalse{% - \if\@sqTurnOffAlerts1OnBlurRespBox(false,"\oField" );\jsR\fi - \ifx\oField\@empty\else - updateTally("\oField.\thequestionno"); - \fi\jsR\eqAddAAMouseUpMC} -\def\Ans@sq@f@Actions{\A{\if\Ans@choice\eq@One - \JS{\Ans@sq@f@ActionsTrue}\else - \JS{\Ans@sq@f@ActionsFalse}\fi}% - \AAmousedown{updateTally.downState=!!event.target.isBoxChecked% - (\arabic{quizno}-1);}} +\begin{defineJS}[\makeesc\*\makecmt\%]{\Ans@sq@f@ActionsTrue} +*ifx*@sqTurnOffAlerts*eq@One% +OnBlurRespBox(true,"*oField"); +*fi% +var qzSolnDest="*@qzsolndest"; +var solnAfter=*ifeq@solutionsafter% +true*else% +false*fi; +if ((qzSolnDest!="") && !solnAfter) % +jmpToNamedDest("*oField","*@qzsolndest",% +*ifx*@sqTurnOffAlerts*eq@Zero0*else1*fi);% +*ifx*eqAddAAMouseUpMC*empty*else +*eqAddAAMouseUpMC*fi +\end{defineJS} +\begin{defineJS}[\makeesc\*\makecmt\%]{\Ans@sq@f@ActionsFalse} +*ifx*@sqTurnOffAlerts*eq@One% +OnBlurRespBox(false,"*oField"); +*fi% +var qzSolnDest="*@qzsolndest"; +if( qzSolnDest!="") updateTally("*oField.*thequestionno");% +*ifx*eqAddAAMouseUpMC*empty*else +*eqAddAAMouseUpMC*fi +\end{defineJS} +\def\Ans@sq@f@Actions{\AAmouseup{\if\Ans@choice\eq@One + \Ans@sq@f@ActionsTrue\else\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} + \llap{\@proofingsymbol\,\hskip#1\relax}\fi\fi} \def\sqRghtSymbChoice#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \edef\sq@corrsymch{\sqRghtSymbChoiceDef}\else - \edef\sq@corrsymch{#1}\fi} + \ifx\eq@retnStyle\@empty + \edef\sq@corrsymch{\sqRghtSymbChoiceDef}\else + \edef\sq@corrsymch{#1}\fi} \def\sqRghtSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty - \edef\sq@corrsymcol{\sqRghtSymbColorDef}\else - \edef\sq@corrsymcol{#1}\fi} + \edef\sq@corrsymcol{\sqRghtSymbColorDef}\else + \edef\sq@corrsymcol{#1}\fi} \def\sqWrngSymbChoice#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \edef\sq@wrgsymch{\sqWrngSymbChoiceDef}\else - \edef\sq@wrgsymch{#1}\fi} + \ifx\eq@retnStyle\@empty + \edef\sq@wrgsymch{\sqWrngSymbChoiceDef}\else + \edef\sq@wrgsymch{#1}\fi} \def\sqWrngSymbColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty - \edef\sq@wrgsymcol{\sqWrngSymbColorDef}\else - \edef\sq@wrgsymcol{#1}\fi} + \edef\sq@wrgsymcol{\sqWrngSymbColorDef}\else + \edef\sq@wrgsymcol{#1}\fi} \def\sqRghtSymbChoiceDef{check} \def\sqRghtSymbColorDef{0 .6 0 rg} \def\sqWrngSymbChoiceDef{cross} @@ -2731,118 +2720,125 @@ if (isEndQuizPushed("@eqBaseName")){ \edef\sq@wrgsymch{\sqWrngSymbChoiceDef} \edef\sq@wrgsymcol{\sqWrngSymbColorDef} \def\sqResetSymbToDef{% - \sqRghtSymbChoice{}\sqRghtSymbColor{}% - \sqWrngSymbChoice{}\sqWrngSymbColor{}% + \sqRghtSymbChoice{}\sqRghtSymbColor{}% + \sqWrngSymbChoice{}\sqWrngSymbColor{}% } \def\qChoiceSymb#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \edef\qz@chksymb{\qChoiceSymbDef}\else - \edef\qz@chksymb{#1}\fi} + \ifx\eq@retnStyle\@empty + \edef\qz@chksymb{\qChoiceSymbDef}\else + \edef\qz@chksymb{#1}\fi} \def\qChoiceColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty - \edef\qz@chksymbcol{\qChoiceColorDef}\else - \edef\qz@chksymbcol{#1}\fi} + \edef\qz@chksymbcol{\qChoiceColorDef}\else + \edef\qz@chksymbcol{#1}\fi} \def\qChoiceSymbDef{check} \def\qChoiceColorDef{0 0 0 rg} \edef\qz@chksymb{\qChoiceSymbDef} \edef\qz@chksymbcol{\qChoiceColorDef} \let\rbf@Opts\@empty -\def\Ans@sq@f{% - \if\eq@listType\eq@One\stepcounter{quizno}\else - \@ifundefined{ifwithinsoldoc}{\refstepcounter{quizno}} - {\ifwithinsoldoc\stepcounter{quizno}\else - \refstepcounter{quizno}\fi}\fi\PBS\raggedright - \if\Ans@choice\eq@One - \def\rbf@Opts{\symbolchoice{\sq@corrsymch}% - \textColor{\sq@corrsymcol}}\else - \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}% - \textColor{\sq@wrgsymcol}}\fi - \settowidth{\eq@tmplength}{\eq@lw@f}% - \eq@tmpdima=\wd\eq@tmpbox% - \hangindent=\eq@tmplength\hangafter=1\relax - \insertGrayLetters % 6.3d - \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}% - {mc.\oField.\thequestionno}% - {\RadioFieldSize}{\RadioFieldSize}% - {\Ans@choice\alph{quizno}}{\eq@protect\A}% - {\eq@setWidgetProps\eq@Radio@driver}% - {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton - \every@sqRadioButton}}% - \Ans@proofing{\RadioFieldSize}% -\eq@hspanner\ignorespaces} -\def\@@Ans@ck@sq@f@Defaults -{% - \BC{0 0 0}\Ff{\FfNoToggleToOff} - \F{\FPrint}\textSize{12}\textColor{0 g}\W{1} +\def\Ans@sq@f{\if\eq@listType\eq@One + \stepcounter{quizno}\else + \@ifundefined{ifwithinsoldoc}{\refstepcounter{quizno}} + {\ifwithinsoldoc\stepcounter{quizno}\else + \refstepcounter{quizno}\fi}\fi + \PBS\raggedright + \if\Ans@choice\eq@One + \def\rbf@Opts{\symbolchoice{\sq@corrsymch}% + \textColor{\sq@corrsymcol}}\else + \def\rbf@Opts{\symbolchoice{\sq@wrgsymch}% + \textColor{\sq@wrgsymcol}}\fi + \settowidth{\eq@tmplength}{\eq@lw@f}% + \eq@tmpdima=\wd\eq@tmpbox% + \hangindent=\eq@tmplength\hangafter=1\relax + \insertGrayLetters + \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}% + {mc.\oField.\thequestionno}% + {\RadioFieldSize}{\RadioFieldSize}% + {\Ans@choice\alph{quizno}}{\eq@protect\A}% + {\eq@setWidgetProps\eq@Radio@driver}% + {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton + \every@sqRadioButton}}% + \Ans@proofing{\RadioFieldSize}% + \eq@hspanner\ignorespaces} +\def\@@Ans@ck@sq@f@Defaults{% + \BC{0 0 0}\Ff{\FfNoToggleToOff} + \F{\FPrint}\textSize{12}\textColor{0 g}\W{1} } \begingroup \catcode`\&=12 \gdef\eq@AND{&&} \endgroup -\def\Ans@ck@sq@f@ActionsTrue{% - var fName=event.target.name;\jsR - var g=this.getField("mc.\oField.\thequestionno");\jsR - var a=g.getArray();\jsR - for (var i=0; i=a.length) jmpToNamedDest("\oField","\@qzsolndest",% - \if\@sqTurnOffAlerts00\else1\fi); - \fi - \fi\eqAddAAMouseUpMS} -\def\Ans@ck@sq@f@ActionsFalse{% - var fName=event.target.name;\jsR - var g=this.getField("mc.\oField.\thequestionno");\jsR - var a=g.getArray();\jsR - for (var i=0; i=a.length) jmpToNamedDest("*oField","*@qzsolndest",% +*ifx*@sqTurnOffAlerts*eq@Zero0*else1*fi);% +*ifx*eqAddAAMouseUpMS*empty*else +*eqAddAAMouseUpMS*fi +\end{defineJS} +\begin{defineJS}[\makeesc\*\makecmt\%]{\Ans@ck@sq@f@ActionsFalse} +var fName=event.target.name; +var g=this.getField("mc.*oField.*thequestionno"); +var a=g.getArray(); +for (var i=0; i> + /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(% + ["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>> } -\def\Ans@c@f@Defaults -{% - \BC{0 0 0}\S{S}\W{1}\F{\FHidden}\textSize{12} - \textColor{0 g}\symbolchoice{circle} +\def\Ans@c@f@Defaults{% + \BC{0 0 0}\S{S}\W{1}\F{\FHidden}\textSize{12} + \textColor{0 g}\symbolchoice{circle} } \let\bottomOfAnsfStack\relax \providecommand\graylettersColor{gray} \def\insertGrayLetters{\ifaebshowgrayletters - \rlap{\makebox[\RadioFieldSize]% - {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi} -\def\Ans@@f -{% - \settowidth{\eq@tmplength}{\eq@lw@f}% - \hangindent=\eq@tmplength\hangafter=1 - \bottomOfAnsfStack\insertGrayLetters - \edef\rbf@Opts{\ifaeb@usecircles\else - \noexpand\symbolchoice{\qz@chksymb}\fi - \noexpand\textColor{\qz@chksymbcol}}% - \if\Ans@choice1\eq@recordAnsChoice\fi - \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}% - {mc.\curr@quiz.\thequestionno}% - {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}% - {\eq@protect\A}{\eq@setWidgetProps\eq@Radio@driver}% - {\Ans@r@f@Defaults\Ans@r@f@Actions\every@RadioButton - \every@qRadioButton\insert@circlesymbol}}% - \let\late@options\@empty - \ifnocorrections\else - \if\Ans@choice1\relax - \edef\Ans@c@f@Choice{\noexpand\DV{Yes}% - \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}% - \else - \ifeq@noquizsolutions - \noexpand\Ff{\FfReadOnly}% - \else - \noexpand\A{\noexpand\quiz@SolutionActionHook}% - \fi - \fi - }% - \else - \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}% + \rlap{\makebox[\RadioFieldSize]% + {\textcolor{\graylettersColor}{\Alph{quizno}}}}\else\relax\fi} +\def\Ans@@f{% + \settowidth{\eq@tmplength}{\eq@lw@f}% + \hangindent=\eq@tmplength\hangafter=1 + \bottomOfAnsfStack\insertGrayLetters + \edef\rbf@Opts{\ifaeb@usecircles\else + \noexpand\symbolchoice{\qz@chksymb}\fi + \noexpand\textColor{\qz@chksymbcol}}% + \if\Ans@choice\eq@One\eq@recordAnsChoice\fi + \mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}% + {mc.\curr@quiz.\thequestionno}% + {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}% + {\eq@protect\A}{\eq@setWidgetProps\eq@Radio@driver}% + {\Ans@r@f@Defaults\Ans@r@f@Actions\every@RadioButton + \every@qRadioButton\insert@circlesymbol}}% + \let\late@options\@empty + \ifnocorrections\else + \if\Ans@choice\eq@One + \edef\Ans@c@f@Choice{\noexpand\DV{Yes}% + \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}\else + \ifeq@noquizsolutions + \noexpand\Ff{\FfReadOnly}\else + \noexpand\A{\noexpand\quiz@SolutionActionHook}\fi \fi - \ifaeb@usecircles\def\late@options{\BC{}}\fi - \if\Ans@choice1\relax - \ifx\@qzsolndest\@empty\else - \ifeq@noquizsolutions\else - \edef\late@options{\noexpand\BC{\solution@Color}}% - \fi - \fi + }% + \else + \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}% + \fi + \ifaeb@usecircles\def\late@options{\BC{}}\fi + \if\Ans@choice\eq@One + \ifx\@qzsolndest\@empty\else + \ifeq@noquizsolutions\else + \edef\late@options{\noexpand\BC{\solution@Color}}% \fi - \makebox[0pt][r]{\check@@Box{}% - {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}% - {\RadioFieldSize}{\RadioFieldSize}{Yes}{}% - {\eq@setWidgetProps\eq@Check@driver}% - {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox - \every@qCheckBox\late@options}}% + \fi \fi - \Ans@proofing{\RadioFieldSize}% -\eq@hspanner\ignorespaces} + \makebox[0pt][r]{\check@@Box{}% + {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}% + {\RadioFieldSize}{\RadioFieldSize}{Yes}{}% + {\eq@setWidgetProps\eq@Check@driver}% + {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox + \every@qCheckBox\late@options}}% + \fi + \Ans@proofing{\RadioFieldSize}\eq@hspanner + \ignorespaces +} \def\limitSelectionTo#1{\def\eqlimselTo{#1}} \let\eqlimselTo\@empty -\def\Ans@ck@f{\leavevmode\if\eq@listType1\stepcounter{quizno}% - \else\refstepcounter{quizno}\fi - \if\Ans@choice1\eq@recordAnsChoice\fi - \PBS\raggedright\Ans@@ck@f} -\def\Ans@ck@f@Defaults -{% - \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff} - \textSize{12}\textColor{0 g} -} -\def\Ans@ck@f@Actions -{% - \A{\JS{% - var _bOK=true;\jsR -\ifx\eqlimselTo\@empty\else _bOK = LimitSelection(\eqlimselTo,% -"mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi -if (_bOK) {\jsR\jsT - var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",% -\thequestionno,\arabic{quizno},"\curr@quiz",\eqPTs,\eq@pPTs);\jsR\jsT - RecordProblemType("\eqQT",\thequestionno);\jsR\jsT - ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,% -\arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,% -"\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES -\ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR -}}}% +\def\Ans@ck@f{\leavevmode + \if\eq@listType1\stepcounter{quizno}% + \else\refstepcounter{quizno}\fi + \if\Ans@choice\eq@One\eq@recordAnsChoice\fi + \PBS\raggedright\Ans@@ck@f} +\def\Ans@ck@f@Defaults{% + \BC{0 0 0}\S{S}\W{1}\Ff{\FfNoToggleToOff} + \textSize{12}\textColor{0 g} +} +\def\Ans@ck@f@Actions{% + \A{\JS{% + var\eqSP_bOK=true;\jsR +\ifx\eqlimselTo\@empty\else + _bOK\eqSP=\eqSP LimitSelection(\eqlimselTo,% + "mck.\curr@quiz.\thequestionno","\arabic{quizno}");\jsR\fi + if(_bOK)\eqSP{\jsR\jsT + var aPMSretn=ProcessMultiSelection(\Ans@choice,"\alph{quizno}",% + \thequestionno,\arabic{quizno},"\curr@quiz",% + \eqPTs,\eq@pPTs);\jsR\jsT + RecordProblemType("\eqQT",\thequestionno);\jsR\jsT + ProcessQuestion(aPMSretn[0],aPMSretn[1],\thequestionno,% + \arabic{quizno},"\curr@quiz",0,\ifnocorrections0\else1\fi,% + "\bqlabelISO"\if\eqQuizType\isQZ\ifx\eq@online\eq@YES + \ifeq@noquizsolutions\else,1\fi\fi\fi);\jsR + }}}% } -\def\quiz@SolutionActionHook{% - /S/GoTo/D(\@qzsolndest)/Next<<\JS{this.resetForm(% -["mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>> +\def\quiz@SolutionActionHook{/S/GoTo/D(\@qzsolndest)% + /Next<<\JS{this.resetForm([% + "mcq.\curr@quiz.\thequestionno.\arabic{quizno}"]);}>> } -\def\Ans@@ck@f -{% - \settowidth{\eq@tmplength}{\eq@lw@f}% - \hangindent=\eq@tmplength\hangafter=1 - \bottomOfAnsfStack\insertGrayLetters - \bottomOfAnsfStack\insertGrayLetters -\def\cbf@Opts{\symbolchoice{\qz@chksymb}% +\def\Ans@@ck@f{% + \settowidth{\eq@tmplength}{\eq@lw@f}% + \hangindent\eq@tmplength\hangafter\@ne + \bottomOfAnsfStack\insertGrayLetters + \bottomOfAnsfStack\insertGrayLetters + \def\cbf@Opts{\symbolchoice{\qz@chksymb}% \textColor{\qz@chksymbcol}}% - \mbox{\expandafter\check@@Box\expandafter{\cbf@Opts}% - {mck.\curr@quiz.\thequestionno.\arabic{quizno}}% - {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}% - {\eq@protect\A}{\eq@setWidgetProps\eq@Check@driver}% - {\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton - \every@qckCheckbox}}% - \ifnocorrections\else - \if\Ans@choice1\relax - \edef\Ans@c@f@Choice{\noexpand\DV{Yes}% - \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}% - \else - \ifeq@noquizsolutions - \noexpand\Ff{\FfReadOnly}% - \else - \noexpand\A{\noexpand\quiz@SolutionActionHook}% - \fi - \fi - }% - \else - \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}% - \fi - \let\late@options\@empty - \if\Ans@choice1\relax - \ifx\@qzsolndest\@empty\else - \ifeq@noquizsolutions\else - \edef\late@options{\noexpand\BC{\solution@Color}}% - \fi - \fi + \mbox{\expandafter\check@@Box\expandafter{\cbf@Opts}% + {mck.\curr@quiz.\thequestionno.\arabic{quizno}}% + {\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}% + {\eq@protect\A}{\eq@setWidgetProps\eq@Check@driver}% + {\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton + \every@qckCheckbox}}% + \ifnocorrections\else + \if\Ans@choice\eq@One + \edef\Ans@c@f@Choice{\noexpand\DV{Yes}% + \ifx\@qzsolndest\@empty\noexpand\Ff{\FfReadOnly}\else + \ifeq@noquizsolutions + \noexpand\Ff{\FfReadOnly}\else + \noexpand\A{\noexpand\quiz@SolutionActionHook}\fi \fi - \makebox[0pt][r]{\check@@Box{}% - {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}% - {\RadioFieldSize}{\RadioFieldSize}{Yes}{}% - {\eq@setWidgetProps\eq@Check@driver}% - {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox - \every@qCheckBox\late@options}}% + }% + \else + \def\Ans@c@f@Choice{\Ff{\FfReadOnly}}% \fi - \Ans@proofing{\RadioFieldSize}% -\eq@hspanner\ignorespaces} + \let\late@options\@empty + \if\Ans@choice\eq@One + \ifx\@qzsolndest\@empty\else + \ifeq@noquizsolutions\else + \edef\late@options{\noexpand\BC{\solution@Color}}\fi + \fi + \fi + \makebox[0pt][r]{\check@@Box{}% + {mcq.\curr@quiz.\thequestionno.\arabic{quizno}}% + {\RadioFieldSize}{\RadioFieldSize}{Yes}{}% + {\eq@setWidgetProps\eq@Check@driver}% + {\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox + \every@qCheckBox\late@options}}% + \fi + \Ans@proofing{\RadioFieldSize}\eq@hspanner + \ignorespaces +} \newcount\eq@tabColCnt \define@key{bchoice}{nCols}{\def\bChoiceNumCols{#1}} \@for\eqi:=1,2,3,4,5,6,7,8,9,10 \do{\edef\temp@expand@def{% - \noexpand\define@key{bchoice}{\eqi}[\eqi]{% - \noexpand\def\noexpand\bChoiceNumCols{\eqi}}% - }\temp@expand@def + \noexpand\define@key{bchoice}{\eqi}[\eqi]{% + \noexpand\def\noexpand\bChoiceNumCols{\eqi}}% + }\temp@expand@def } \def\bChoiceNumCols{\aeb@numCols} \define@key{bchoice}{random}[true]{% - \csname if#1\endcsname\eq@randomizeChoicestrue - \else\eq@randomizeChoicesfalse\fi + \csname if#1\endcsname\eq@randomizeChoicestrue + \else\eq@randomizeChoicesfalse\fi } \define@key{bchoice}{label}[]{\xdef\bChoiceLabel{#1}} \def\bChoices{\@ifnextchar[{\@ansChoices}{\@ansChoices[\aeb@numCols]}} -\def\@ansChoices[#1]% -{% - \global\let\@tempholdSaveAns\@empty %4/5 - \global\let\@tempholdSaveChoice\@empty %4/5 - \global\let\bChoiceLabel\@empty %4/5 - \setkeys{bchoice}{#1}% - \global\eq@tabColCnt=0 - \ifnum\aeb@numCols=1 % list mode - \def\eq@next{\@layoutListAns}\else % tabular mode - \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi - \eq@next +\def\@ansChoices[#1]{% + \global\let\@tempholdSaveAns\@empty %4/5 + \global\let\@tempholdSaveChoice\@empty %4/5 + \global\let\bChoiceLabel\@empty %4/5 + \setkeys{bchoice}{#1}% + \global\eq@tabColCnt=\z@ + \ifnum\aeb@numCols=\@ne % list mode + \def\eq@next{\@layoutListAns}\else % tabular mode + \def\eq@next{\@layoutTabularAns{\bChoiceNumCols}}\fi + \eq@next } \let\eChoices\relax \def\@layoutListAns{\@ifnextchar\Ans{\@getListAns}% - {\@lookforendansChoices{\@layoutListAns}}% + {\@lookforendansChoices{\@layoutListAns}}% } \newcommand{\eq@saveAns}[2][]{% - \let\eq@next\@@@SaveAnsGobbleAns - \ifx\bChoiceLabel\@empty\else - \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}% - \if\eq@savedAnsZO1 \let\eq@next\@@@SaveAns\fi - \fi\eq@next + \let\eq@next\@@@SaveAnsGobbleAns + \ifx\bChoiceLabel\@empty\else + \def\eq@savedAnsOpt{#1}\def\eq@savedAnsZO{#2}% + \if\eq@savedAnsZO1\let\eq@next\@@@SaveAns\fi + \fi\eq@next } \long\def\@@@SaveAns#1\eAns{% 4/5 - \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}% - \addtocounter{quizno}{1}% - \edef\temp@expand{\noexpand\g@addto@macro\noexpand + \g@addto@macro\@tempholdSaveAns{\\{\ignorespaces#1}}% + \addtocounter{quizno}{1}% + \edef\temp@expand{\noexpand\g@addto@macro\noexpand \@tempholdSaveChoice{% - \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else - \ifaebshowgrayletters\Alph{quizno}\else - \linkContentFormat\fi\fi}}}\temp@expand - \addtocounter{quizno}{-1}% + \noexpand\\{\ifx\sqstar\@empty\aebChoiceAltFmt\else + \ifaebshowgrayletters\Alph{quizno}\else + \linkContentFormat\fi\fi}}}\temp@expand + \addtocounter{quizno}{-1}% } \newif\ifoxfordcomma \oxfordcommatrue \def\oxfordCommaOn{\oxfordcommatrue} \def\oxfordCommaOff{\oxfordcommafalse} \def\eq@insertComma{% - \ifx\eq@comma\@empty - \ifnum\@nameuse{NumAns\eq@namearg}>2\relax - \def\eq@comma{,}\fi - \else\ifx\eq@insertAnd\@empty\eq@comma\space - \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}% - \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space - \fi + \ifx\eq@comma\@empty + \ifnum\@nameuse{NumAns\eq@namearg}>\tw@ + \def\eq@comma{,}\fi + \else\ifx\eq@insertAnd\@empty\eq@comma\space + \else\ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}% + \ifoxfordcomma\eq@comma\fi\else\eq@comma\fi\space \fi + \fi } \newcommand\eqAnd{and}\def\eq@insertAnd{% - \ifnum\@nameuse{NumAns\eq@namearg}<2\relax\else - \ifnum\@nameuse{NumAns\eq@namearg}>2\relax - \else\leavevmode\space\fi\eqAnd\space\fi} -\long\def\eq@displayAns#1{\advance\@tempcnta1\relax - \eq@insertComma - \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1} + \ifnum\@nameuse{NumAns\eq@namearg}<\tw@\else + \ifnum\@nameuse{NumAns\eq@namearg}>\tw@\relax + \else\leavevmode\space\fi\eqAnd\space\fi +} +\long\def\eq@displayAns#1{\advance\@tempcnta\@ne + \eq@insertComma + \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1} \def\eq@displayAlts#1{\advance\@tempcnta1 - \eq@insertComma - \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi - \savedAltFmt{#1}} + \eq@insertComma + \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi + \savedAltFmt{#1}} \def\eq@displayAltsAns#1{\advance\@tempcnta1\relax - \eq@insertComma - \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1} + \eq@insertComma + \ifnum\@tempcnta=\@nameuse{NumAns\eq@namearg}\eq@insertAnd\fi#1} \newcommand{\savedAltFmt}[1]{(#1)} \newcommand{\useSavedAns}{\bgroup\@ifstar{\useSavedAns@i} - {\let\eq@insertAnd\@empty\useSavedAns@i}} + {\let\eq@insertAnd\@empty\useSavedAns@i}} \newcommand{\useSavedAns@i}[2][]{\@tempcnta=0\relax - \def\eq@namearg{#2}\let\label\@gobble - \def\eq@argi{#1}\ifx\eq@argi\@empty - \let\eq@comma\@empty - \let\\\eq@displayAns\@nameuse{SavedAns#2}\else - \@nameuse{SavedAns#2-Idx#1}\fi - \egroup + \def\eq@namearg{#2}\let\label\@gobble + \def\eq@argi{#1}\ifx\eq@argi\@empty + \let\eq@comma\@empty + \let\\\eq@displayAns\@nameuse{SavedAns#2}\else + \@nameuse{SavedAns#2-Idx#1}\fi + \egroup } \newcommand{\useSavedAlts}{\bgroup\@ifstar{\useSavedAlts@i} - {\let\eq@insertAnd\@empty\useSavedAlts@i}} + {\let\eq@insertAnd\@empty\useSavedAlts@i}} \newcommand{\useSavedAlts@i}[2][]{\@tempcnta=0\relax - \def\eq@namearg{#2}\@nameuse{caseFor#2}% - \def\eq@argi{#1}\ifx\eq@argi\@empty - \let\eq@comma\@empty - \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else - \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi - \egroup + \def\eq@namearg{#2}\@nameuse{caseFor#2}% + \def\eq@argi{#1}\ifx\eq@argi\@empty + \let\eq@comma\@empty + \let\\\eq@displayAlts\@nameuse{SavedAlts#2}\else + \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}}\fi + \egroup } \newcommand{\useSavedAltsAns}{\bgroup\@ifstar{\useSavedAltsAns@i} - {\let\eq@insertAnd\@empty\useSavedAltsAns@i}} + {\let\eq@insertAnd\@empty\useSavedAltsAns@i}} \newcommand{\useSavedAltsAns@i}[2][]{\@tempcnta=0\relax - \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble - \def\eq@argi{#1}\ifx\eq@argi\@empty - \let\eq@comma\@empty - \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else - \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}} - \@nameuse{SavedAns#2-Idx#1}\fi - \egroup + \def\eq@namearg{#2}\@nameuse{caseFor#2}\let\label\@gobble + \def\eq@argi{#1}\ifx\eq@argi\@empty + \let\eq@comma\@empty + \let\\\eq@displayAltsAns\@nameuse{SavedAltsAns#2}\else + \savedAltFmt{\@nameuse{SavedAlts#2-Idx#1}} + \@nameuse{SavedAns#2-Idx#1}\fi + \egroup } \newcommand{\useSavedNumAns}[1]{\@nameuse{NumAns#1}} -\long\def\@@@SaveAnsGobbleAns#1\eAns{} % 4/5 -\long\def\@getListAns\Ans#1\eAns{%\@@par %start new paragraph - \eq@saveAns#1\eAns % 4/5 - \Ans#1\vspace{\@rowskip}% - \@layoutListAns +\long\def\@@@SaveAnsGobbleAns#1\eAns{} +\long\def\@getListAns\Ans#1\eAns{%\@@par + \eq@saveAns#1\eAns + \Ans#1\vspace{\@rowskip}% + \@layoutListAns } \long\def\@lookforendansChoices#1{% - \@ifnextchar\eChoices{\rowsep{\rowsep@default}% - \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}% + \@ifnextchar\eChoices{\rowsep{\rowsep@default}% + \expandafter\@findendans\@gobble}{\expandafter#1\@gobble}% } \def\@layoutTabularAns#1{% - \let\eq@tabSep\@empty - \xdef\numShortCols{#1}% - \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi - \@@layoutTabularAns + \let\eq@tabSep\@empty + \xdef\numShortCols{#1}% + \ifnum#1>\aeb@numCols \xdef\numShortCols{\aeb@numCols}\fi + \@@layoutTabularAns } \def\@@layoutTabularAns{% - \@ifnextchar\Ans{\@getTabAns}% - {\@lookforendansChoices{\@@layoutTabularAns}}% + \@ifnextchar\Ans{\@getTabAns}% + {\@lookforendansChoices{\@@layoutTabularAns}}% } \def\rowsep#1{\gdef\@rowsep{[#1]}\gdef\@rowskip{#1}}% \rowsep{\rowsep@default} \def\rowsepDefault#1{\def\rowsep@default{#1}} \def\rowsep@default{0pt} \long\def\@getTabAns\Ans#1\eAns{% - \eq@saveAns#1\eAns - \global\advance\eq@tabColCnt1 - \let\@save@tabSep=\eq@tabSep - \ifnum\eq@tabColCnt=\numShortCols - \global\eq@tabColCnt=0 - \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}% - \else - \gdef\eq@tabSep{&}% - \fi - \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default} - \expandafter\@findendans\@gobble}% - {\@save@tabSep\Ans#1\@@layoutTabularAns}% -} -\def\@findendans{\@ifnextchar\end{% 4/5 - \ifx\bChoiceLabel\@empty\else - \processLabeledAns\fi - }{\expandafter\@findendans\@gobble}}% + \eq@saveAns#1\eAns + \global\advance\eq@tabColCnt1 + \let\@save@tabSep=\eq@tabSep + \ifnum\eq@tabColCnt=\numShortCols + \global\eq@tabColCnt=0 + \xdef\eq@tabSep{\noexpand\\\noalign{\kern\@rowskip\relax}}% + \else + \gdef\eq@tabSep{&}% + \fi + \@ifnextchar\eChoices{\@save@tabSep\Ans#1\rowsep{\rowsep@default} + \expandafter\@findendans\@gobble}% + {\@save@tabSep\Ans#1\@@layoutTabularAns}% +} +\def\@findendans{\@ifnextchar\end{% + \ifx\bChoiceLabel\@empty\else + \processLabeledAns\fi + }{\expandafter\@findendans\@gobble}}% \def\defineEachAns#1{\advance\eqtmpcnta\@ne - \@temptokena={#1}\csarg\xdef - {SavedAns\bChoiceLabel-Idx\the\eqtmpcnta}{\the\@temptokena}% - \ifsolutionsonly\else - {\let\\\relax\eq@IWDefs{\string - \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\eqtmpcnta}% - {\the\@temptokena}}}\fi + \@temptokena={#1}\csarg\xdef + {SavedAns\bChoiceLabel-Idx\the\eqtmpcnta}{\the\@temptokena}% + \ifsolutionsonly\else + {\let\\\relax\eq@IWDefs{\string + \csarg\string\gdef{SavedAns\bChoiceLabel-Idx\the\eqtmpcnta}% + {\the\@temptokena}}}% + \fi } \def\defineEachChoice#1{\advance\eqtmpcnta\@ne - \@temptokena={#1}\csarg\xdef - {SavedAlts\bChoiceLabel-Idx\the\eqtmpcnta}% - {\the\@temptokena}\ifsolutionsonly\else - {\let\\\relax\eq@IWDefs{\string - \csarg\string - \gdef{SavedAlts\bChoiceLabel-Idx\the\eqtmpcnta}% - {\the\@temptokena}}}\fi + \@temptokena={#1}\csarg\xdef + {SavedAlts\bChoiceLabel-Idx\the\eqtmpcnta}% + {\the\@temptokena}\ifsolutionsonly\else + {\let\\\relax\eq@IWDefs{\string + \csarg\string + \gdef{SavedAlts\bChoiceLabel-Idx\the\eqtmpcnta}% + {\the\@temptokena}}}\fi } \def\processLabeledAns{% - \bgroup - \let\label\@gobble -\if\aeb@FLOverride\eq@l - \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else - \ifaebshowgrayletters + \bgroup + \let\label\@gobble + \if\aeb@FLOverride\eq@l + \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\else + \ifaebshowgrayletters \global\@namedef{caseFor\bChoiceLabel}{\graylettersOn}\else \global\@namedef{caseFor\bChoiceLabel}{\graylettersOff}\fi -\fi - \toks@=\expandafter{\@tempholdSaveAns}\csarg - \xdef{SavedAns\bChoiceLabel}{\the\toks@}% - \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string - \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi - \eqtmpcnta\z@\let\\\defineEachAns\the\toks@ - \xdef\@currNCntAns{\the\eqtmpcnta}\csarg - \xdef{NumAns\bChoiceLabel}{\@currNCntAns}% - \ifsolutionsonly\else{\eq@IWDefs{\string - \csarg\string\gdef{NumAns\bChoiceLabel}{\the\eqtmpcnta}}}\fi - \toks@=\expandafter{\@tempholdSaveChoice}\csarg - \xdef{SavedAlts\bChoiceLabel}{\the\toks@}% - \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string - \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi - \eqtmpcnta\z@\relax\let\\\defineEachChoice\the\toks@ - \eqtmpcnta\@ne\toks@={}%{\ignorespaces\@gobble}% - \loop - \edef\temp@exp{\the\toks@\noexpand\\{% - \noexpand\useSavedAlts[\the\eqtmpcnta]{\bChoiceLabel} - \noexpand\useSavedAns[\the\eqtmpcnta]{\bChoiceLabel}}}% - \toks@=\expandafter{\temp@exp}% - \ifnum\eqtmpcnta<\@currNCntAns\relax - \advance\eqtmpcnta\@ne - \repeat - \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}% - \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string - \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi - \egroup + \fi + \toks@=\expandafter{\@tempholdSaveAns}\csarg + \xdef{SavedAns\bChoiceLabel}{\the\toks@}% + \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string + \csarg\string\gdef{SavedAns\bChoiceLabel}{\the\toks@}}}\fi + \eqtmpcnta\z@\let\\\defineEachAns\the\toks@ + \xdef\@currNCntAns{\the\eqtmpcnta}\csarg + \xdef{NumAns\bChoiceLabel}{\@currNCntAns}% + \ifsolutionsonly\else{\eq@IWDefs{\string + \csarg\string\gdef{NumAns\bChoiceLabel}{\the\eqtmpcnta}}}\fi + \toks@=\expandafter{\@tempholdSaveChoice}\csarg + \xdef{SavedAlts\bChoiceLabel}{\the\toks@}% + \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string + \csarg\string\gdef{SavedAlts\bChoiceLabel}{\the\toks@}}}\fi + \eqtmpcnta\z@\relax\let\\\defineEachChoice\the\toks@ + \eqtmpcnta\@ne\toks@={}%{\ignorespaces\@gobble}% + \loop + \edef\temp@exp{\the\toks@\noexpand\\{% + \noexpand\useSavedAlts[\the\eqtmpcnta]{\bChoiceLabel} + \noexpand\useSavedAns[\the\eqtmpcnta]{\bChoiceLabel}}}% + \toks@=\expandafter{\temp@exp}% + \ifnum\eqtmpcnta<\@currNCntAns\relax + \advance\eqtmpcnta\@ne + \repeat + \csarg\xdef{SavedAltsAns\bChoiceLabel}{\the\toks@}% + \ifsolutionsonly\else{\let\\\relax\eq@IWDefs{\string + \csarg\string\gdef{SavedAltsAns\bChoiceLabel}{\the\toks@}}}\fi + \egroup } \def\graylettersOn{\aebshowgrayletterstrue} \def\graylettersOff{\aebshowgraylettersfalse} \def\aeb@exiii{\expandafter\expandafter\expandafter} \def\REF{\@ifstar{\let\isREFstar\eq@One\aeb@REFstar} - {\let\isREFstar\eq@Zero\aeb@REF}} + {\let\isREFstar\eq@Zero\aeb@REF}} \def\aeb@REFstar#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}} - {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}% - \else\ref*{#1}\fi}% + {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}% + \else\ref*{#1}\fi}% } \def\aeb@REF#1{\@ifundefined{r@#1}{\hbox{\reset@font\bfseries ??}} - {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}% - \else\ref{#1}\fi}% + {\ifaebshowgrayletters\aeb@buildUpperCaseRef{#1}% + \else\ref{#1}\fi}% } \def\aeb@buildUpperCaseRef#1{% - \xdef\tmp@expand{\aeb@exiii\@firstoffive\csname r@#1\endcsname}% - \xdef\tmp@expand{\uppercase{\tmp@expand}}% - \if\isREFstar\eq@One\tmp@expand\else\hyperref[#1]{\tmp@expand}\fi + \xdef\tmp@expand{\aeb@exiii\@firstoffive\csname r@#1\endcsname}% + \xdef\tmp@expand{\uppercase{\tmp@expand}}% + \if\isREFstar\eq@One\tmp@expand\else\hyperref[#1]{\tmp@expand}\fi } \newif\ifaeb@usecircles\aeb@usecirclesfalse \let\insert@circlesymbol\@empty \def\useMCCircles{\useForms - \ifaeb@usecircles\else - \global\aeb@usecirclestrue - \gdef\insert@circlesymbol{\symbolchoice{circle}}% - \fi + \ifaeb@usecircles\else + \global\aeb@usecirclestrue + \gdef\insert@circlesymbol{\symbolchoice{circle}}% + \fi } \def\useMCRects{\useForms - \ifaeb@usecircles\global\aeb@usecirclesfalse - \global\let\insert@circlesymbol\@empty - \fi + \ifaeb@usecircles\global\aeb@usecirclesfalse + \global\let\insert@circlesymbol\@empty + \fi } \let\useMCCRects\useMCRects \let\oqpriorhook\@empty \newenvironment{oQuestion}[1]{% - \let\@currentQues\@empty - \xdef\eq@pageThisQ{\the\c@page}% - \global\let\eqQzQuesList\@empty - \xdef\oField{#1}\xdef\curr@quiz{#1}\xdef\currQuiz{#1}% - \g@addto@macro\ListOfSQuizNames{,#1}\let\@qzsolndest\@empty - \let\eqQuizType\isSQZ\gdef\eqPTs{1}\global\let\eqQT\eq@na - \let\answers\answers@sq - \let\endanswers\endanswers@sq - \let\manswers\manswers@sq - \let\endmanswers\endmanswers@sq - \let\solution\solution@sq - \let\endsolution\endsolution@sq - \noindent\oqpriorhook\sq@IDTxtField\ifx\aebTitleQuiz\@empty - \else\aebtitleQuiz\fi\ignorespaces + \let\@currentQues\@empty + \xdef\eq@pageThisQ{\the\c@page}\global + \let\eqQzQuesList\@empty + \xdef\oField{#1}\xdef\curr@quiz{#1}\xdef\currQuiz{#1}% + \g@addto@macro\ListOfSQuizNames{,#1}\let\@qzsolndest\@empty + \let\eqQuizType\isSQZ\gdef\eqPTs{1}\global\let\eqQT\eq@na + \let\answers\answers@sq + \let\endanswers\endanswers@sq + \let\manswers\manswers@sq + \let\endmanswers\endmanswers@sq + \let\solution\solution@sq + \let\endsolution\endsolution@sq + \noindent\oqpriorhook\sq@IDTxtField\ifx\aebTitleQuiz\@empty + \else\aebtitleQuiz\fi\ignorespaces }{% - \global\let\aebtitleQuiz\@empty - \global\let\aebTitleQuiz\@empty - \global\let\eq@tq@star\relax - \aftergroup\ignorespaces + \global\let\aebtitleQuiz\@empty + \global\let\aebTitleQuiz\@empty + \global\let\eq@tq@star\relax + \aftergroup\ignorespaces } \def\oSolution#1{\edef\@qzsolndest{#1}} \def\replaceExclPt#1{\def\replaceexclaim{#1}} @@ -3531,11 +3522,11 @@ if (_bOK) {\jsR\jsT \newcommand\RespBoxMath{\def\rbFlag{0}\begingroup\Hy@unicodefalse \eqsanitize\@RespBox} \def\eq@rpl#1#2{_rplVarsBy('#1','#2')@} % dps17 -\ifnum\eq@drivernum=0\def\RorRT{\r\t}\else\def\RorRT{\r}\fi +\ifnum\eq@drivernum=\z@ + \def\RorRT{\r\t}\else\def\RorRT{\r}\fi \def\toAltApprCnt{0}\def\toAltApprVar{_toAltAppr\toAltApprCnt} \def\toAltApprCntInc{{\@tempcnta=\toAltApprCnt\relax - \advance\@tempcnta1\relax - \xdef\toAltApprCnt{\the\@tempcnta}}} + \advance\@tempcnta\@ne\xdef\toAltApprCnt{\the\@tempcnta}}} \def\setCoreInitAltAppr{% var\eqSP_substVars=\indepVars;\RorRT var\eqSP_mathVars=processMathVars(_substVars);\RorRT @@ -3545,8 +3536,8 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT } \def\bInitAltAppr{\ifShowAppr \def\ShowApprSAVE{true}\toAltApprCntInc\ShowApprfalse - \def\eqAddAAFormat{\ifnum\eq@drivernum=0try\eqLBr\RorRT\fi - \setCoreInitAltAppr\ifnum\eq@drivernum=0 \r\eqRBr catch(e){\RorRT + \def\eqAddAAFormat{\ifnum\eq@drivernum=\z@ try\eqLBr\RorRT\fi + \setCoreInitAltAppr\ifnum\eq@drivernum=\z@\r\eqRBr catch(e){\RorRT var\eqSP\toAltApprVar=% app.setTimeOut('this.resetForm("'+event.target.name+'");% app.clearTimeOut(\toAltApprVar);',250);\r}\fi}\else @@ -3554,72 +3545,71 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT } \def\eInitAltAppr{\@nameuse{ShowAppr\ShowApprSAVE}% \ifShowAppr\altApprOn\let\eqAddAAFormat\@empty\fi} -\def\AAKqRespBoxMath{% - if(event.willCommit){\r\t - RecordPointValue(\eqPTs,\thequestionno\ifx\grpquestions1,% -\thegrpquestionno,\grpPointValue,\grpTotalWeight,% -"\grpEvalFunction"\fi);\r\t - RecordProblemType("\eqQT",\thequestionno);\r\t -\ifSubstVars % dps17 - var\eqSP_substVars=\indepVars;\r\t - var\eqSP_mathVars=processMathVars(_substVars);\r\t - var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t - var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t - var\eqSP retn=\processJSfunc(\rbArgs,% - \compareJSfunc,_substValue);\r\t -\else - var\eqSP_mathVars=\indepVars;\r\t - var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc);\r\t -\fi - ProcUserResp(retn,event.value,\thequestionno,% -0\ifx\grpquestions1,\thegrpquestionno\fi);\r - }\r - if (!isQuizInitialized("\currQuiz")) {\r\t - \eqObjAlert eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t - event.rc = false;\r - } +\begin{defineJS}[\makeesc\*\makecmt\%]{\AAKqRespBoxMath} +if(event.willCommit){ + RecordPointValue(*eqPTs,*thequestionno*ifx*grpquestions*eq@One,% +*thegrpquestionno,*grpPointValue,*grpTotalWeight,% +"*grpEvalFunction"*fi); + RecordProblemType("*eqQT",*thequestionno); +*ifSubstVars% + var _substVars=*indepVars; + var _mathVars=processMathVars(_substVars); + var _substValue=getSubstValue(_substVars,event.value); + var _substAns=getSubstValue(_substVars,"*eqCorrectAns"); + var retn=*processJSfunc(*rbArgs,% + *compareJSfunc,_substValue);*else% + var _mathVars=*indepVars; + var retn=*processJSfunc(*rbArgs,*compareJSfunc);*fi + ProcUserResp(retn,event.value,*thequestionno,0% +*ifx*grpquestions*eq@One,*thegrpquestionno*fi); +} +if (!isQuizInitialized("*currQuiz")) { + *eqObjAlert*eqAppAlert(InitMsg("*bqlabelISO"),3); + event.rc = false;% +*ifx*eqAddAAKeystroke*@empty*else +*eqAddAAKeystroke*fi } -\def\RespBoxMathDefaults -{% - \BC{0 0 0}\S{S}\textColor{0 g}\F{\FPrint}\W{1} +\end{defineJS} +\def\RespBoxMathDefaults{% + \BC{0 0 0}\S{S}\textColor{0 g}\F{\FPrint}\W{1} } -\def\moreRespBoxMathDefaults -{% - \edef\@moreRespBoxMathDefaults{% - \if\eqQuizType\isQZ\ifx\eq@online\eq@YES - \ifeq@noquizsolutions - \else\noexpand\Ff{\FfReadOnly}\fi\fi\fi - }% +\def\moreRespBoxMathDefaults{% + \edef\@moreRespBoxMathDefaults{% + \if\eqQuizType\isQZ\ifx\eq@online\eq@YES + \ifeq@noquizsolutions + \else\noexpand\Ff{\FfReadOnly}\fi\fi\fi + }% } \let\eqAddAAFormat\@empty -\def\eqSP{\string\040} % dps17 +\def\eqSP{\string\040} \def\eqLBr{\string\173} \def\eqRBr{\string\175} +\begin{defineJS}[\makeesc\!\makecmt\%]{\rbmAAKey} +if(event.willCommit) { +!ifSubstVars% + var _substVars=!indepVars; + var _mathVars=processMathVars(_substVars); + var _substValue=getSubstValue(_substVars,event.value); + var _substAns=getSubstValue(_substVars,"!eqCorrectAns"); + var retn=!processJSfunc(!rbArgs,% +!compareJSfunc,_substValue);!else% + var _mathVars=!indepVars; + var retn=!processJSfunc(!rbArgs,!compareJSfunc);!fi% +!ifx!@sqTurnOffAlerts!eq@One + OnBlurRespBox(retn,"!curr@quiz");!fi% +!ifx!eqAddAAKeystroke!@empty!else +!eqAddAAKeystroke!fi +} +\end{defineJS} \def\@@RespBoxMathActions{% \AA{\if\eqQuizType\isQZ - \AAKeystroke{\AAKqRespBoxMath\eqAddAAKeystroke} - \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17 + \AAKeystroke{\AAKqRespBoxMath} + \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim try{event.value=RespBoxAppr(event);}catch(e){}\r \fi\fi\fi\eqAddAAFormat} \else - \AAKeystroke{if(event.willCommit) {\r\t -\ifSubstVars% - var\eqSP_substVars=\indepVars;\r\t - var\eqSP_mathVars=processMathVars(_substVars);\r\t - var\eqSP_substValue=getSubstValue(_substVars,event.value);\r\t - var\eqSP_substAns=getSubstValue(_substVars,"\eqCorrectAns");\r\t - var\eqSP retn=\processJSfunc(\rbArgs,% - \compareJSfunc,_substValue);\r\t -\else - var\eqSP_mathVars=\indepVars;\r\t - var\eqSP retn=\processJSfunc(\rbArgs,\compareJSfunc); -\fi -\if\@sqTurnOffAlerts1% - OnBlurRespBox(retn,"\curr@quiz"); -\fi - \eqAddAAKeystroke\r - }} - \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim % dps17 + \AAKeystroke{\rbmAAKey} + \AAFormat{\ifShowAppr\ifSubstVars\ifarrowDelim try{event.value=RespBoxAppr(event);}catch(e){}\r\fi\fi\fi \eqAddAAFormat}% \AAOnFocus{\JS{var retn = null;}}% @@ -3679,7 +3669,7 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT \def\eq@ZERO{0} \def\defaultRDPrecision#1{\def\eq@defaultRDPrecision{#1}} \defaultRDPrecision{1E-14} -\newif\ifarrowDelim\arrowDelimfalse % dps17 +\newif\ifarrowDelim\arrowDelimfalse \def\rpl@#1#2{\rpl@i#1->\@nil} \def\rpl@i#1->#2\@nil{\def\argii{#2}\ifx\argii\@empty\else \global\arrowDelimtrue\fi} @@ -3757,21 +3747,29 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT } \endgroup \def\@eq@RespB@x#1(#2)[#3]#4#5#6{\xdef\@qzsolndest{#3}% dps17 - \gdef\indepVars{"#2"}\isFrstrpl#2\@nil\if\frstIsrpl\eq@YES - \def\@IVi{#2}\else\expandafter\def\expandafter - \@IVi\expandafter{#2}\fi\edef\@IVii{#2}\ifx\@IVi\@IVii - \global\SubstVarsfalse\else\global\SubstVarstrue - \isAltApprSpec{#2}\fi - \cntVars{#2}\def\eq@precision{#5}% - \ifx\eq@precision\eq@ZERO - \def\eq@defaultCompare{reldiffCompare}% - \def\rbArgstmp{\rbFlag,% dps17 - \ifSubstVars_substAns\else"#1"\fi,#4,% - \eq@defaultRDPrecision}\else - \def\eq@defaultCompare{diffCompare}% - \def\rbArgstmp{\rbFlag,% dps17 - \ifSubstVars_substAns\else"#1"\fi,#4,#5}\fi - \edef\eq@ixparam{#6}\expandafter\eq@chkivIntrvls\eq@ixparam\\% + \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,% + \ifSubstVars_substAns\else"#1"\fi,#4,% + \eq@defaultRDPrecision}% + \else + \def\eq@defaultCompare{diffCompare}% + \def\rbArgstmp{\rbFlag,% + \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}% @@ -3810,9 +3808,8 @@ var\eqSP_substValue=getSubstValue(_substVars,event.value);\RorRT \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 + \ifx\grpquestions\eq@Zero + \eq@recordCorrAns{"\eqCorrectAns"}\fi \ifeq@proofing\makebox[0pt][l]{\space\math@correctAnswer}\fi \eq@TextField % send to the driver-dependent macro \egroup % hbox @@ -3826,62 +3823,62 @@ 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");} + \ifx\@sqTurnOffAlerts\eq@One + retn\else null\fi,"\curr@quiz");} +\def\eqObjAlertIfFalse{if (false) } \def\eqObjAlert{% \ifx\eqQuizType\isQZ\ifx\eq@online\eq@YES\ifeq@noquizsolutions - \else if (false) \fi\fi\fi} -\begin{defineJS}[% - \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxt} + \else\eqObjAlertIfFalse\fi\fi\fi} +\def\eqAppAlert{eqAppAlert} +\begin{defineJS}[\makeesc\*\makecmt\%]{\AAKqRespBoxTxt} if(event.willCommit){ - RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% -@thegrpquestionno,@grpPointValue,@grpTotalWeight,% -"@grpEvalFunction"@fi); - RecordProblemType("@eqQT",@thequestionno); - var retn = ProcRespTxt(@rbTxtAlt); - ProcUserResp(retn,event.value,@thequestionno,% -0@ifx@grpquestions1,@thegrpquestionno@fi); -} -if (!isQuizInitialized("@currQuiz")) { - @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3); + RecordPointValue(*eqPTs,*thequestionno*ifx*grpquestions*eq@One,% +*thegrpquestionno,*grpPointValue,*grpTotalWeight,% +"*grpEvalFunction"*fi); + RecordProblemType("*eqQT",*thequestionno); + var retn = ProcRespTxt(*rbTxtAlt); + ProcUserResp(retn,event.value,*thequestionno,0% +*ifx*grpquestions*eq@One,*thegrpquestionno*fi); +} +if (!isQuizInitialized("!currQuiz")) { + *eqObjAlert*eqAppAlert(InitMsg("*bqlabelISO"),3); event.rc = false; } \end{defineJS} -\def\RespBoxTxtDefaults -{% +\def\RespBoxTxtDefaults{% \BC{0 0 0}\W{1}\S{S}\textColor{0 g}\F{\FPrint}% } -\def\moreRespBoxTxtDefaults -{% +\def\moreRespBoxTxtDefaults{% \edef\@moreRespBoxTxtDefaults{% \if\eqQuizType\isQZ\ifx\eq@online\eq@YES \ifeq@noquizsolutions\else \noexpand\Ff{\FfReadOnly}\fi\fi\fi }% } -\def\@@RespBoxTxtActions -{% +\begin{defineJS}[\makeesc\!\makecmt\%]{\rbtAAKey} +if(event.willCommit) { + var retn = ProcRespTxt(!rbTxtAlt);% +!ifx!@sqTurnOffAlerts!eq@One + !RespBoxTxtOnBlur!fi% +!ifx!eqAddAAKeystroke!@empty!else +!eqAddAAKeystroke!fi +} +\end{defineJS} +\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 - }% - } + \AAKeystroke{\rbtAAKey} \AAFormat{\eqAddAAFormat} - \AAOnFocus{\JS{var retn = null;}} - \if\@sqTurnOffAlerts0% + \AAOnFocus{\JS{var\eqSP retn=null;}} + \ifx\@sqTurnOffAlerts\eq@Zero \AAOnBlur{\JS{\RespBoxTxtOnBlur}}\fi \fi } } \def\annot@subtype@rbt{rbt} -\newcommand\@RespBoxTxt[1][] -{% +\newcommand\@RespBoxTxt[1][]{% \edef\annot@subtype{\annot@subtype@rbt}% \eq@AddProbToQzQuesList \ifx\grpquestions\eq@Zero\addtocounter{eqpointvalue}{\eqPTs}\fi @@ -3922,7 +3919,7 @@ if (!isQuizInitialized("@currQuiz")) { \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 + \ifnum\eq@argii=\@ne \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 @@ -3935,309 +3932,314 @@ if (!isQuizInitialized("@currQuiz")) { #4\space instead}{Enter a positive integer.}\fi } \def\@argRead#1{\xdef\jsTempArgs{\txtAltList}% - \ifx\txtAltList\@empty\xdef\txtAltList{"#1"}\else - \xdef\txtAltList{\jsTempArgs,"#1"}\fi\@@argRead} + \ifx\txtAltList\@empty\xdef\txtAltList{"#1"}\else + \xdef\txtAltList{\jsTempArgs,"#1"}\fi\@@argRead} \def\@@argRead{\advance\eqtmpcnta\m@ne - \ifnum\eqtmpcnta=\z@ - \def\eq@next{\endgroup - \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}% - \if\grpquestions\eq@Zero - \ifwithinMCFI - \xdef\s@veCorrAnsMCFI{[\txtAltList]}\else - \eq@recordCorrAns{[\txtAltList]}\fi - \else - \eq@recordGrpAnsArray{[\txtAltList]}% - \fi - \eq@@RespBoxTxt - }% - \else - \def\eq@next{\@argRead}% - \fi\eq@next + \ifnum\eqtmpcnta=\z@ + \def\eq@next{\endgroup + \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}% + \if\grpquestions\eq@Zero + \ifwithinMCFI + \xdef\s@veCorrAnsMCFI{[\txtAltList]}\else + \eq@recordCorrAns{[\txtAltList]}\fi + \else + \eq@recordGrpAnsArray{[\txtAltList]}% + \fi + \eq@@RespBoxTxt + }% + \else + \def\eq@next{\@argRead}% + \fi\eq@next } \def\eq@@RespBoxTxt{% - \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi - \eq@TextField - \egroup + \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi + \eq@TextField + \egroup } \def\gobbleTxt#1>#2,#3,#4,{} \gdef\txt@correctAnswer{\ttfamily\color{\@proofingsymbolColor}% - \spaceskip=2pt\xspaceskip=2pt - \expandafter\gobbleTxt\meaning\rbTxtAlt + \spaceskip=2pt\xspaceskip=2pt + \expandafter\gobbleTxt\meaning\rbTxtAlt } -\begin{defineJS}[% - \catcode`\@=0\relax\catcode`\%=14\relax]{\AAKqRespBoxTxtPC} +\begin{defineJS}[\makeesc\*\makecmt\%]{\AAKqRespBoxTxtPC} if(event.willCommit){ - RecordPointValue(@eqPTs,@thequestionno@ifx@grpquestions1,% -@thegrpquestionno,@grpPointValue,@grpTotalWeight,% -"@grpEvalFunction"@fi); - RecordProblemType("@eqQT",@thequestionno); - var retn = ProcRespTxtPC(@rbTxtAlt); -@ifx@grpquestions1% -ProbValue[@thequestionno][3+@thegrpquestionno]% -=ProcRespTxtPC.txtPCpCr;@else% -ProbValue[@thequestionno]=ProcRespTxtPC.txtPCpCr;@fi - ProcUserResp(retn,event.value,@thequestionno,0% -@ifx@grpquestions1,@thegrpquestionno@fi); -} -if (!isQuizInitialized("@currQuiz")) { - @eqObjAlert@space eqAppAlert(InitMsg("@bqlabelISO"),3); - event.rc = false; + RecordPointValue(*eqPTs,*thequestionno*ifx*grpquestions*eq@One,% +*thegrpquestionno,*grpPointValue,*grpTotalWeight,% +"*grpEvalFunction"*fi); + RecordProblemType("*eqQT",*thequestionno); + var retn = ProcRespTxtPC(*rbTxtAlt); +*ifx*grpquestions*eq@One% + ProbValue[*thequestionno][3+*thegrpquestionno]% +=ProcRespTxtPC.txtPCpCr;*else% + ProbValue[*thequestionno]=ProcRespTxtPC.txtPCpCr;*fi + ProcUserResp(retn,event.value,*thequestionno,0% +*ifx*grpquestions*eq@One,*thegrpquestionno*fi); +} +if (!isQuizInitialized("*currQuiz")) { + *eqObjAlert*eqAppAlert(InitMsg("*bqlabelISO"),3); + event.rc = false; } \end{defineJS} -\def\@@RespBoxTxtPCActions -{% - \AA{\if\eqQuizType\isQZ - \AAKeystroke{\AAKqRespBoxTxtPC} - \else - \AAKeystroke{% - if(event.willCommit) {\r\t - retn = ProcRespTxtPC(\rbTxtAlt);\r -\if\@sqTurnOffAlerts1% - \t\RespBoxTxtOnBlur\r -\fi - }% - } - \AAOnFocus{\JS{var retn = null;}} -\if\@sqTurnOffAlerts0% - \AAOnBlur{\JS{\RespBoxTxtOnBlur}}% -\fi - \fi - } +\begin{defineJS}[\makeesc\!\makecmt\%]{\rbtPCAAKey} +if(event.willCommit) { + retn = ProcRespTxtPC(!rbTxtAlt);% +!ifx!@sqTurnOffAlerts!eq@One + !RespBoxTxtOnBlur!fi% +} +\end{defineJS} +\def\@@RespBoxTxtPCActions{% + \AA{% + \if\eqQuizType\isQZ + \AAKeystroke{\AAKqRespBoxTxtPC} + \else + \AAKeystroke{\rbtPCAAKey} + \AAOnFocus{\JS{var\eqSP retn=null;}} + \ifx\@sqTurnOffAlerts\eq@Zero + \AAOnBlur{\JS{\RespBoxTxtOnBlur}}\fi + \fi + } } \newcommand{\RespBoxTxtPC}{\def\rbFlag{0}\@RespBoxTxtPC} \def\annot@subtype@rbtpc{rbtpc} -\newcommand\@RespBoxTxtPC[1][] -{% - \edef\annot@subtype{\annot@subtype@rbtpc}% - \eq@AddProbToQzQuesList - \smallskip\ifx\grpquestions\eq@Zero - \addtocounter{eqpointvalue}{\eqPTs}\fi - \if\eqQuizType\isQZ\def\rbFlag{1}\global\IsRespBoxtrue - \ifx\grpquestions\eq@One - \stepcounter{grpquestionno}% - \def\Fld@name{% - grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}% - \else - \eq@recordThesePTs\eq@recordProbType - \edef\eqtmp{\aPointType}% - \xdef\aPointType{\eqtmp,[\eqPTs,"text"]}% - \stepcounter{questionno}% - \def\Fld@name{obj.\curr@quiz.\thequestionno}% - \fi +\newcommand\@RespBoxTxtPC[1][]{% + \edef\annot@subtype{\annot@subtype@rbtpc}% + \eq@AddProbToQzQuesList + \smallskip\ifx\grpquestions\eq@Zero + \addtocounter{eqpointvalue}{\eqPTs}\fi + \if\eqQuizType\isQZ\def\rbFlag{1}\global\IsRespBoxtrue + \ifx\grpquestions\eq@One + \stepcounter{grpquestionno}% + \def\Fld@name{% + grpobj.\curr@quiz.\thequestionno.\thegrpquestionno}% \else - \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\@@RespBoxTxtPC}% - {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults - \@@RespBoxTxtPCActions\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\@@RespBoxTxtPC}% + {\RespBoxTxtDefaults\@moreRespBoxTxtDefaults + \@@RespBoxTxtPCActions\every@eqTextField\every@RespBoxTxt}% } \def\@@RespBoxTxtPC#1{\@ifnextchar[{\@@@RespBoxTxtPC{#1}} - {\@ifstar{\@@@RespBoxTxtPC{#1}[\curr@quiz.\thequestionno]}% - {\@@@RespBoxTxtPC{#1}[]}}} + {\@ifstar{\@@@RespBoxTxtPC{#1}[\curr@quiz.\thequestionno]}% + {\@@@RespBoxTxtPC{#1}[]}}} \def\@@@RespBoxTxtPC#1[#2]#3{\xdef\@qzsolndest{#2}% \begingroup - \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}% - \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}% - \def\word##1{\\b##1\\b}\def\any{@any@} - \gdef\rbTxtAlt{\rbFlag,#1,1}% force sub-string match - \global\let\txtAltList\@empty - \eqtmpcnta=#3\relax\ifnum\eqtmpcnta>\z@\expandafter\@argReadPC\else - \PackageError{exerquiz}{% - The third required parameter of - \string\RespBoxTxtPC\MessageBreak - is required to be a positive integer. - You entered\MessageBreak #3\space instead} - {Enter a positive integer.}\fi + \def\rexpStr##1{\eqbs\eqbs\eqbs\eqbs##1}% + \def\\##1{\eqbs\eqbs\eqbs\eqbs##1}% + \def\word##1{\\b##1\\b}\def\any{@any@} + \gdef\rbTxtAlt{\rbFlag,#1,1}% force sub-string match + \global\let\txtAltList\@empty + \eqtmpcnta=#3\relax\ifnum\eqtmpcnta>\z@\expandafter\@argReadPC\else + \PackageError{exerquiz}{% + The third required parameter of + \string\RespBoxTxtPC\MessageBreak + is required to be a positive integer. + You entered\MessageBreak #3\space instead} + {Enter a positive integer.}\fi } \newcommand\@argReadPC[2][0]{\xdef\jsTempArgs{\txtAltList}% - \ifx\txtAltList\@empty\xdef\txtAltList{["#2",#1]}\else - \xdef\txtAltList{\jsTempArgs,["#2",#1]}\fi\@@argReadPC} + \ifx\txtAltList\@empty\xdef\txtAltList{["#2",#1]}\else + \xdef\txtAltList{\jsTempArgs,["#2",#1]}\fi\@@argReadPC} \def\@@argReadPC{\advance\eqtmpcnta\m@ne - \ifnum\eqtmpcnta=\z@ - \def\eq@next{\endgroup - \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}% - \if\grpquestions\eq@Zero - \ifwithinMCFI - \xdef\s@veCorrAnsFCFI{[\txtAltList]}\else - \eq@recordCorrAns{[\txtAltList]}\fi - \else - \eq@recordGrpAnsArray{[\txtAltList]}% - \fi - \eq@@RespBoxTxtPC - }% - \else - \def\eq@next{\@argReadPC}% - \fi\eq@next -} -\def\eq@@RespBoxTxtPC{% - \ifeq@proofing\makebox[0pt][l]{\space\txt@correctAnswer}\fi - \eq@TextField - \egroup -} + \ifnum\eqtmpcnta=\z@ + \def\eq@next{\endgroup + \xdef\rbTxtAlt{\rbTxtAlt,\txtAltList}% + \if\grpquestions\eq@Zero + \ifwithinMCFI + \xdef\s@veCorrAnsFCFI{[\txtAltList]}\else + \eq@recordCorrAns{[\txtAltList]}\fi + \else + \eq@recordGrpAnsArray{[\txtAltList]}% + \fi + \eq@@RespBoxTxtPC + }% + \else + \def\eq@next{\@argReadPC}% + \fi\eq@next +} +\def\eq@@RespBoxTxtPC{\ifeq@proofing + \makebox[0pt][l]{\space\txt@correctAnswer}\fi + \eq@TextField + \egroup +} +\def\afterSplChkActn#1{\def\@fterSplChkActn{\r #1}} +\let\@fterSplChkActn\@empty +\newcommand{\splChkCA}{Check} +\newcommand{\splChkTU}{Check spelling} +\newcommand\SpellCheck[1][]{% + \pushButton[\CA{\splChkCA}\TU{\splChkTU}\S{S} + #1\A{\JS{% + \ifx\grpquestions\eq@One + var targetFldName=% + "grpobj.\curr@quiz.\thequestionno.\thegrpquestionno"; + \else + \ifx\annot@subtype\annot@subtype@rbe + var targetFldName="essay.\curr@quiz.\thequestionno"; + \else + var targetFldName="obj.\curr@quiz.\thequestionno"; + \fi + \fi\r + var splErrors=checkTheSpelling(targetFldName);\@fterSplChkActn + }}]{spl.\curr@quiz.\thequestionno}{}{11bp}} \def\RespBoxEssayDefaults {% \BC{0 0 0}\W{1}\S{S}\Ff{\FfMultiline}\rawPDF{}% } -\def\@@RespBoxEssayActions -{% - \AA{\if\eqQuizType\isQZ - \AAKeystroke{% - if(event.willCommit){\jsR\jsT - RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT - RecordProblemType("\eqQT",\thequestionno);\jsR %\jsT - }\jsR - if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT - \eqObjAlert\space eqAppAlert(% - InitMsg("\bqlabelISO"),3);\jsR\jsT - event.rc = false;\jsR - }% - }% - \fi - } +\def\@@RespBoxEssayActions{\AA{% + \if\eqQuizType\isQZ + \AAKeystroke{% + if(event.willCommit){\jsR\jsT + RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT + RecordProblemType("\eqQT",\thequestionno);\jsR %\jsT + }\jsR + if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT + \eqObjAlert\space eqAppAlert(% + InitMsg("\bqlabelISO"),3);\jsR\jsT + event.rc = false;\jsR + }% + }% + \fi}% } -\newcommand\RespBoxEssay[1][]{\def\rbe@rgi{#1}\RespBoxEssay@i} +\def\annot@subtype@rbe{rbe} +\newcommand\RespBoxEssay[1][]{\edef\annot@subtype{\annot@subtype@rbe}% + \def\rbe@rgi{#1}\RespBoxEssay@i} \def\RespBoxEssay@i{\@ifnextchar[%] {\RespBoxEssay@ii} {\@ifstar{\RespBoxEssay@ii[\curr@quiz.\thequestionno]}}% {\RespBoxEssay@ii[]}% } -\newcommand\RespBoxEssay@ii[3][] -{% - \smallskip\addtocounter{eqpointvalue}{\eqPTs}% - \eq@AddProbToQzQuesList - \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}% - {\eq@protect\AA}{\eq@setWidgetProps - \eq@TextField}{\RespBoxEssayDefaults\@@RespBoxEssayActions - \every@eqTextField}}% +\newcommand\RespBoxEssay@ii[3][]{% + \smallskip\addtocounter{eqpointvalue}{\eqPTs}% + \eq@AddProbToQzQuesList + \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}% + {\eq@protect\AA}{\eq@setWidgetProps + \eq@TextField}{\RespBoxEssayDefaults\@@RespBoxEssayActions + \every@eqTextField}}% } \let\@@sqTallyBoxActions\@empty \@ifundefined{calcOrder}{% \ifpdf\def\@@sqTallyBoxActions{% \AA{\AAValidate{getTotalTally("\oField");}}}\fi}{} -\def\sqTallyBoxDefaults -{% +\def\sqTallyBoxDefaults{% \BC{0 0 0}\W{1}\textColor{1 0 0 rg}\S{I}\Q{2}\Ff{\FfReadOnly} } \ifpdf\def\@@sqTallyBoxActions{% - \AA{\AAValidate{getTotalTally("\oField");}}}\else - \let\@@sqTallyBoxActions\@empty + \AA{\AAValidate{getTotalTally("\oField");}}}\else + \let\@@sqTallyBoxActions\@empty \fi -\newcommand\sqTallyBox[1][] -{% - \mbox{\text@@Field{#1}{tally.\oField.\thequestionno}% - {\TBW}{\DefaultHeightOfWidget}% - {}{\eq@setWidgetProps\eq@TextField}% - {\sqTallyBoxDefaults\@@sqTallyBoxActions\every@eqTextField - \every@sqTallyBox}}% -} -\def\sqTallyTotalDefaults -{% - \rawPDF{}\W{1}\BC{0 0 0}\S{I}\textColor{1 0 0 rg}% - \Q{2}\Ff{\FfReadOnly}% -} -\def\@@sqTallyTotalActions -{% - \AA{% - \AAKeystroke{AFNumber_Keystroke(0,0,0,0,"",true);} - \AAFormat{AFNumber_Format(0,0,0,0,"",true);} - \AACalculate{% - AFSimple_Calculate("SUM",new Array("tally.\oField")); - }} -} -\newcommand\sqTallyTotal[1][] -{% - \mbox{\text@@Field{#1}{tallytotal.\oField}{\TBW}% - {\DefaultHeightOfWidget}{\eq@protect\AA}% - {\eq@setWidgetProps\eq@TextField}% - {\sqTallyTotalDefaults\@@sqTallyTotalActions\every@eqTextField - \every@sqTallyTotal}}% -} -\def\CorrAnsButtonDefaults -{% - \CA{\eq@local@CorrAnsButton}\W{1}\S{S} - \BC{0 0 0}\BG{.7529 .7529 .7529}\H{P} +\newcommand\sqTallyBox[1][]{% + \mbox{\text@@Field{#1}{tally.\oField.\thequestionno}% + {\TBW}{\DefaultHeightOfWidget}% + {}{\eq@setWidgetProps\eq@TextField}% + {\sqTallyBoxDefaults\@@sqTallyBoxActions\every@eqTextField + \every@sqTallyBox}}% +} +\def\sqTallyTotalDefaults{% + \rawPDF{}\W{1}\BC{0 0 0}\S{I}\textColor{1 0 0 rg}% + \Q{2}\Ff{\FfReadOnly}% +} +\def\@@sqTallyTotalActions{% + \AA{% + \AAKeystroke{AFNumber_Keystroke(0,0,0,0,"",true);} + \AAFormat{AFNumber_Format(0,0,0,0,"",true);} + \AACalculate{% + AFSimple_Calculate("SUM",new Array("tally.\oField")); + }}% +} +\newcommand\sqTallyTotal[1][]{% + \mbox{\text@@Field{#1}{tallytotal.\oField}{\TBW}% + {\DefaultHeightOfWidget}{\eq@protect\AA}% + {\eq@setWidgetProps\eq@TextField}% + {\sqTallyTotalDefaults\@@sqTallyTotalActions\every@eqTextField + \every@sqTallyTotal}}% +} +\def\CorrAnsButtonDefaults{% + \CA{\eq@local@CorrAnsButton}\W{1}\S{S} + \BC{0 0 0}\BG{.7529 .7529 .7529}\H{P} } \def\normalCABtnBC{0 0 0} \def\qCorrAnsButtonActionHook{\JS{% \ifx\@qzsolndest\@empty\else - if (event.shift)\jsR\jsT + if(event.shift)\jsR\jsT this.gotoNamedDest("\@qzsolndest");\jsR else {\jsR\jsT\fi -\ifShowAppr % dps17 +\ifShowAppr \ifarrowDelim - if (typeof event.target.appr=="undefined")\r\JST\t + 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 + if(event.target.appr) {\r\t\JST + var\eqSP_substVars=\indepVars;\r\t\JST + var\eqSP_substAns=getSubstValue(_substVars,"\CorrectAns");\r\t\JST + var\eqSP value=RespBoxAppr("\CorrectAns");\r\JST + } else\eqSP var\eqSP value="\CorrectAns";\r\JST \else - value="\CorrectAns";\r\JST + var\eqSP value="\CorrectAns";\r\JST \fi \else - value="\CorrectAns";\r\JST + var\eqSP value="\CorrectAns";\r\JST \fi \processJSfunc("Ans.\curr@quiz",value,\currQuiz);\r -\ifx\@qzsolndest\@empty\else % dps17 +\ifx\@qzsolndest\@empty\else }\fi }} - \def\sqCorrAnsButtonActionHook - {% - \JS{% - \ifx\@qzsolndest\@empty\else - if (event.shift)\jsR\jsT - this.gotoNamedDest("\@qzsolndest");\jsR - else\jsR\jsT - \fi - \processJSfunc("obj.\oField.\thequestionno","\CorrectAns",% -\currQuiz); - }% - } +\begin{defineJS}[\makeesc\!\makecmt\%]{\sqCorrAnsCode} +!ifx!@qzsolndest!@empty% +!processJSfunc("obj.!oField.!thequestionno","!CorrectAns",% +!currQuiz);!else% +if (event.shift) this.gotoNamedDest("!@qzsolndest"); +else !processJSfunc("obj.!oField.!thequestionno","!CorrectAns",% +!currQuiz);!fi +\end{defineJS} +\def\sqCorrAnsButtonActionHook{\JS{\sqCorrAnsCode}} \newcommand\CorrAnsButton[1][]{\eq@@CorrAnsButton{#1}} \def\eq@@CorrAnsButton#1#2{\bgroup\makeJSspecials % 1/12 - \@ifstar{\eq@@@CorrAnsButton{#1}{#2}}{% - \eq@@@CorrAnsButton{#1}{#2}{DisplayAnswer}}% -} + \@ifstar{\eq@@@CorrAnsButton{#1}{#2}}{% + \eq@@@CorrAnsButton{#1}{#2}{DisplayAnswer}}} \def\eq@@@CorrAnsButton#1#2#3{\gdef\CorrectAns{#2}% - \def\processJSfunc{#3}\ifx\@qzsolndest\@empty\let\JST\@empty\else - \let\JST\jsT\fi % dps17 - \ifx\eq@ProcRespIntervals\g@processJSfunc % 01/11 - \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble - \pdfstringdef{\CorrectAns}{\CorrectAns}% - \let\@inmathwarn\@inmathwarn@SAVE\fi + \def\processJSfunc{#3}\ifx\@qzsolndest\@empty\let\JST\@empty\else + \let\JST\jsT\fi % dps17 + \ifx\eq@ProcRespIntervals\g@processJSfunc % 01/11 + \let\@inmathwarn@SAVE\@inmathwarn\let\@inmathwarn\@gobble + \pdfstringdef{\CorrectAns}{\CorrectAns}% + \let\@inmathwarn\@inmathwarn@SAVE\fi \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}% \else\def\Fld@name{corr.\oField.\thequestionno}\fi \if\eqQuizType\isQZ - \edef\@@CorrAnsButtonActions{\noexpand\F{\FHidden}% - \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}% - \else\noexpand\BC{\solution@Color}\fi - \noexpand\A{\noexpand\qCorrAnsButtonActionHook}}% - \ifeq@noquizsolutions\else % dps17 (\let\rpl\eq@rpl) - \mbox{\let\rpl\eq@rpl - \push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% - {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% - {\CorrAnsButtonDefaults\@@CorrAnsButtonActions - \every@ButtonField\every@CorrAnsButton}}% - \fi + \edef\@@CorrAnsButtonActions{\noexpand\F{\FHidden}% + \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC}% + \else\noexpand\BC{\solution@Color}\fi + \noexpand\A{\noexpand\qCorrAnsButtonActionHook}}% + \ifeq@noquizsolutions\else % dps17 (\let\rpl\eq@rpl) + \mbox{\let\rpl\eq@rpl + \push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% + {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% + {\CorrAnsButtonDefaults\@@CorrAnsButtonActions + \every@ButtonField\every@CorrAnsButton}}% + \fi \else \edef\@@CorrAnsButtonActions{% \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC} \else\noexpand\BC{\solution@Color}\fi \noexpand\A{\noexpand\sqCorrAnsButtonActionHook}}% \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% - {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% - {\CorrAnsButtonDefaults\@@CorrAnsButtonActions - \every@ButtonField\every@CorrAnsButton}}% + {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% + {\CorrAnsButtonDefaults\@@CorrAnsButtonActions + \every@ButtonField\every@CorrAnsButton}}% \fi \egroup } @@ -4246,235 +4248,206 @@ if (!isQuizInitialized("@currQuiz")) { \CA{\eq@local@sqClearButton}\textColor{0 g}\F{\FPrint} \BC{0 0 0}\BG{.7529 .7529 .7529}\W{1}\S{B}\Ff{\FfNoExport} } -\def\@@sqClearButtonActions -{% - \A{\JS{ProcessIt = false;\jsR - if ( typeof \oField\space== "undefined" )\jsR\jsT - \oField\space= new Object;\jsR - if (typeof appAlerts["\oField"] == "undefined")\jsR\jsT - appAlerts["\oField"] = new Object;\jsR - this.resetForm(new Array("mc.\oField","obj.\oField",% - "tally.\oField","grpobj.\oField"));\jsR - var f = this.getField("obj.\oField");\jsR - if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty -\defaultColorJS\else\defaultColorJSLoc\fi;\jsR - f = this.getField("grpobj.\oField");\jsR - if ( f != null ) f.strokeColor=\ifx\defaultColorJSLoc\@empty -\defaultColorJS\else\defaultColorJSLoc\fi;\jsR - f = this.getField("rbmarkup.\oField");\jsR - if ( f != null ) f.display=display.hidden;\jsR - \oField.Grp = {};\jsR - appAlerts["\oField"].bAfterValue=false;\jsR - ProcessIt=true;}% - } -} -\newcommand\sqClearButton[1][] -{% - \mbox{\push@@Button{#1}{clear.\oField}{}{\DefaultHeightOfWidget}% - {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% - {\sqClearButtonDefaults\@@sqClearButtonActions\every@ButtonField - \every@sqClearButton}}% +\begin{defineJS}[\makeesc\*\makecmt\%]{\@@sqClearButtonJSCode} +ProcessIt = false; +if ( typeof *oField == "undefined" ) + *oField = new Object; +if (typeof appAlerts["*oField"] == "undefined") + appAlerts["*oField"] = new Object; +this.resetForm(new Array("mc.*oField","obj.*oField",% +"tally.*oField","grpobj.*oField")); +var f = this.getField("obj.*oField"); +if ( f != null ) f.strokeColor=*ifx*defaultColorJSLoc*@empty% +*defaultColorJS*else*defaultColorJSLoc*fi; +f = this.getField("grpobj.*oField"); +if ( f != null ) f.strokeColor=*ifx*defaultColorJSLoc*@empty% +*defaultColorJS*else*defaultColorJSLoc*fi; +f = this.getField("rbmarkup.*oField"); +if ( f != null ) f.display=display.hidden; +*oField.Grp = {}; +appAlerts["*oField"].bAfterValue=false; +ProcessIt=true; +\end{defineJS} +\def\@@sqClearButtonActions{\A{\JS{\@@sqClearButtonJSCode}}} +\newcommand\sqClearButton[1][]{% + \mbox{\push@@Button{#1}{clear.\oField}{}{\DefaultHeightOfWidget}% + {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% + {\sqClearButtonDefaults\@@sqClearButtonActions\every@ButtonField + \every@sqClearButton}}% } -\def\PromptButtonDefaults -{% - \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0} - \BG{.7529 .7529 .7529}\H{P} +\def\PromptButtonDefaults{% + \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0} + \BG{.7529 .7529 .7529}\H{P} } \newcommand{\promptButtonMsg}{% - "Would you like to see the correct answer at this time? "\r\t\t - + "Your current answer will be the one that will be scored. "\r\t\t - + "If you click on \\"Yes\\", - you will not be able to change your answer." + "Would you like to see the correct answer at this time? "\r\t\t + + "Your current answer will be the one that will be scored. "\r\t\t + + "If you click on \\"Yes\\", + you will not be able to change your answer." } \newcommand{\AnsPromptBtnStr}{Answer:\space} -\def\PromptButtonActionHook -{% - \JS{% - if (!isQuizInitialized("\currQuiz")) {\r\t - eqAppAlert(InitMsg("\bqlabelISO"),3);\r\t - event.rc=false;\r - } else {\r\t - if ( !\currQuiz.oAlertCheck.bAfterValue ) {\r\t - var resp=eqAppAlert({\r\t\t - cMsg:\promptButtonMsg,\r\t\t - nIcon: 2, nType: 2,\r\t\t - cTitle: ("AcroTeX Prompt Message"),\r\t\t - oCheckbox: \currQuiz.oAlertCheck\r\t - });\r\t - }\r - if ( promptQuiz.oAlertCheck.bAfterValue || resp==4 )\r\t - {\r\t\t - var field=this.getField(% - "obj.\currQuiz.\thequestionno");\r\t\t - field.readonly=true;\r\t\t - field=this.getField("Ans.\currQuiz");\r\t\t - if (field!=null) - field.value = "\AnsPromptBtnStr\PromptAns";\r\t - }\r - } - }% +\begin{defineJS}[\makeesc\*\makecmt\%]{\PromptButtonActionCode} +if (!isQuizInitialized("*currQuiz")) { + eqAppAlert(InitMsg("*bqlabelISO"),3); + event.rc=false; +} else { + if ( !*currQuiz.oAlertCheck.bAfterValue ) { + var resp=eqAppAlert({ + cMsg:*promptButtonMsg, + nIcon: 2, nType: 2, + cTitle: ("AcroTeX Prompt Message"), + oCheckbox: *currQuiz.oAlertCheck + }); + } + if ( promptQuiz.oAlertCheck.bAfterValue || resp==4 ) { + var field=this.getField("obj.*currQuiz.*thequestionno"); + field.readonly=true; + field=this.getField("Ans.*currQuiz"); + if (field!=null) field.value = ("*AnsPromptBtnStr*PromptAns"); + } } -\newcommand\@PromptButton[2][] -{% - \def\PromptAns{#2}\if\eqQuizType\isQZ - \def\Fld@name{promptButton.\curr@quiz.\thequestionno}% - \else\def\Fld@name{promptButton.\oField.\thequestionno}\fi - \if\eqQuizType\isQZ - \def\@@PromptButtonActions{% - \A{\PromptButtonActionHook}}% - \mbox{\push@@Button{#1}{\Fld@name}{}% - {\DefaultHeightOfWidget}{\eq@protect\A}% - {\eq@setButtonProps\eq@Button@driver}% - {\PromptButtonDefaults\@@PromptButtonActions - \every@ButtonField\every@CorrAnsButton}}% - \else\PackageWarning{exerquiz}{The \string\PromptButton - is for quiz questions only.} - \fi +\end{defineJS} +\def\PromptButtonActionHook{\JS{\PromptButtonActionCode}} +\newcommand\@PromptButton[2][]{% + \def\PromptAns{#2}\if\eqQuizType\isQZ + \def\Fld@name{promptButton.\curr@quiz.\thequestionno}% + \else\def\Fld@name{promptButton.\oField.\thequestionno}\fi + \if\eqQuizType\isQZ + \def\@@PromptButtonActions{% + \A{\PromptButtonActionHook}}% + \mbox{\push@@Button{#1}{\Fld@name}{}% + {\DefaultHeightOfWidget}{\eq@protect\A}% + {\eq@setButtonProps\eq@Button@driver}% + {\PromptButtonDefaults\@@PromptButtonActions + \every@ButtonField\every@CorrAnsButton}}% + \else\PackageWarning{exerquiz}{The \string\PromptButton + is for quiz questions only.} + \fi } \newcommand{\PromptButton}{\makebox[0pt][r] % assumes xcolor - {\@PromptButton[\textColor{1 0 0 rg}]{\CorrectAns}}} + {\@PromptButton[\textColor{1 0 0 rg}]{\CorrectAns}}} \let\eq@ansGrpArray\@empty \def\eq@recordGrpAnsArray#1{% - \ifx\eq@ansGrpArray\@empty - \edef\tmp@exp{\noexpand\g@addto@macro - \noexpand\eq@ansGrpArray{#1}}\else - \edef\tmp@exp{\noexpand\g@addto@macro - \noexpand\eq@ansGrpArray{,#1}}\fi - \tmp@exp + \ifx\eq@ansGrpArray\@empty + \edef\tmp@exp{\noexpand\g@addto@macro + \noexpand\eq@ansGrpArray{#1}}\else + \edef\tmp@exp{\noexpand\g@addto@macro + \noexpand\eq@ansGrpArray{,#1}}\fi + \tmp@exp } \let\grpquestions\eq@Zero \def\mathGrp{\global\let\eq@ansGrpArray\@empty - \@ifnextchar[{\@imathGrp}{\@imathGrp[groupEval]}} + \@ifnextchar[{\@imathGrp}{\@imathGrp[groupEval]}} \def\@imathGrp[#1]{\def\argi{#1}% - \@ifnextchar[{\@iimathGrp}{\@iimathGrp[]}} + \@ifnextchar[{\@iimathGrp}{\@iimathGrp[]}} \def\@iimathGrp[#1]{\def\argii{#1}% - \eq@AddProbToQzQuesList - \global\let\grpquestions\eq@One - \setcounter{grpquestionno}{0}% - \stepcounter{questionno}% - \xdef\beginGrp{\thequestionno}% - \xdef\grpPointValue{\eqPTs}% - \eq@recordThesePTs\eq@recordProbType - \if\eqQuizType\isQZ - \edef\eqtmp{\aPointType}% - \xdef\aPointType{\eqtmp,[\eqPTs,"grp"]}\fi - \addtocounter{eqpointvalue}{\eqPTs}% - \ifx\argii\@empty - \xdef\grpTotalWeight{\eqPTs}% - \xdef\grpEvalFunction{\argi}% - \else - \xdef\grpTotalWeight{\argi}% - \xdef\grpEvalFunction{\argii}% - \fi + \eq@AddProbToQzQuesList + \global\let\grpquestions\eq@One + \setcounter{grpquestionno}{0}% + \stepcounter{questionno}% + \xdef\beginGrp{\thequestionno}% + \xdef\grpPointValue{\eqPTs}% + \eq@recordThesePTs\eq@recordProbType + \if\eqQuizType\isQZ + \edef\eqtmp{\aPointType}% + \xdef\aPointType{\eqtmp,[\eqPTs,"grp"]}\fi + \addtocounter{eqpointvalue}{\eqPTs}% + \ifx\argii\@empty + \xdef\grpTotalWeight{\eqPTs}% + \xdef\grpEvalFunction{\argi}% + \else + \xdef\grpTotalWeight{\argi}% + \xdef\grpEvalFunction{\argii}% + \fi } \def\endmathGrp{\global\let\grpquestions\eq@Zero - \eq@recordCorrAns{[\eq@ansGrpArray]}% - \xdef\endGrp{\thequestionno}} -\def\CorrAnsButtonGrpDefaults -{% - \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0} - \BG{.7529 .7529 .7529}\H{P} + \eq@recordCorrAns{[\eq@ansGrpArray]}% + \xdef\endGrp{\thequestionno}} +\def\CorrAnsButtonGrpDefaults{% + \CA{\eq@local@CorrAnsButton}\W{1}\S{S}\BC{0 0 0} + \BG{.7529 .7529 .7529}\H{P} +} +\begin{defineJS}[\makeesc\!\makecmt\%]{\cabGrpActn} +!ifx!@qzsolndest!@empty!else% +if (event.shift) this.gotoNamedDest("!@qzsolndest"); +else !fi% +{ + var aCorrectAns=!CorrectAns; + var beginGrp=1; + var grpOffset=beginGrp; + if(!currQuiz.Grp==null)!currQuiz.Grp={}; + if(typeof !currQuiz.Grp["!thequestionno"]=="undefined") + { + !currQuiz.Grp["!thequestionno"]={offset:0}; + } else { + !currQuiz.Grp["!thequestionno"].offset=% +++(!currQuiz.Grp["!thequestionno"].offset)!%aCorrectAns.length; + grpOffset=beginGrp% ++!currQuiz.Grp["!thequestionno"].offset; + } + var f=this.getField("grpobj.!curr@quiz.!thequestionno." % ++ grpOffset); + if(f.readonly){ + f.readonly=false; + f.setFocus(); + eqDelay=app.setTimeOut(% +"f.readonly=true;app.clearTimeOut(eqDelay);",10); + } else f.setFocus(); +!if!eqQuizType!isQZ% + DisplayAnswer("Ans.!curr@quiz",% +aCorrectAns[!currQuiz.Grp["!thequestionno"].offset],!currQuiz);!else% + DisplayAnswer("grpobj.!oField.!thequestionno."+ grpOffset,% +aCorrectAns[!currQuiz.Grp["!thequestionno"].offset],!oField);!fi } -\def\CorrAnsButtonGrpActionHook{\JS{% -\ifx\@qzsolndest\@empty\else - if (event.shift)\jsR\jsT - this.gotoNamedDest("\@qzsolndest");\jsR - else\jsR -\fi - {\jsR\jsT - var aCorrectAns=\CorrectAns;\jsR\jsT - var beginGrp = 1;\jsR\jsT - grpOffset = beginGrp;\jsR\jsT - if ( \currQuiz.Grp==null ) \currQuiz.Grp = {};\jsR\jsT - if (typeof \currQuiz.Grp["\thequestionno"]=="undefined")\jsR\jsT - {\jsR\jsT\jsT - \currQuiz.Grp["\thequestionno"] = {offset: 0};\jsR\jsT\jsT - var f = this.getField(% - "grpobj.\curr@quiz.\thequestionno." - + grpOffset)\jsR\jsT\jsT - if ( f.readonly ) {\jsR\jsT\jsT - f.readonly = false;\jsR\jsT\jsT - f.setFocus();\jsR\jsT\jsT - eqDelay = app.setTimeOut(% - "f.readonly = true; - app.clearTimeOut(eqDelay);",10);\jsR\jsT - } else f.setFocus();\jsR\jsT - }\jsR\jsT - else \jsR\jsT - {\jsR\jsT\jsT - \currQuiz.Grp["\thequestionno"].offset = - ++\currQuiz.Grp["\thequestionno"].offset - \% aCorrectAns.length;\jsR\jsT\jsT - grpOffset = beginGrp - + \currQuiz.Grp["\thequestionno"].offset;\jsR\jsT\jsT - var f = this.getField("grpobj.\curr@quiz.\thequestionno." - + grpOffset);\jsR\jsT\jsT - if ( f.readonly ) {\jsR\jsT\jsT - f.readonly = false;\jsR\jsT\jsT - f.setFocus();\jsR\jsT\jsT - eqDelay = app.setTimeOut("f.readonly = true; - app.clearTimeOut(eqDelay);",10);\jsR\jsT - } else f.setFocus();\jsR\jsT - }\jsR\jsT -\if\eqQuizType\isQZ - DisplayAnswer("Ans.\curr@quiz", - aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],% -\currQuiz); -\else - DisplayAnswer("grpobj.\oField.\thequestionno."+ grpOffset, - aCorrectAns[\currQuiz.Grp["\thequestionno"].offset],% -\oField);\jsR -\fi - } -}} -\newcommand\CorrAnsButtonGrp[2][] -{% - \makeStringArray{#2}% - \edef\CorrectAns{\stringArray}% - \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}% - \else\edef\currQuiz{\oField}% +\end{defineJS} +\def\CorrAnsButtonGrpActionHook{\JS{\cabGrpActn}} +\newcommand\CorrAnsButtonGrp[2][]{% + \makeStringArray{#2}% + \edef\CorrectAns{\stringArray}% + \if\eqQuizType\isQZ\def\Fld@name{corr.\curr@quiz.\thequestionno}% + \else\edef\currQuiz{\oField}% \def\Fld@name{corr.\oField.\thequestionno}\fi - \if\eqQuizType\isQZ - \edef\@@CorrAnsButtonGrpActions{\noexpand\F{\FHidden}% - \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC} - \else\noexpand\BC{\solution@Color}\fi - \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}% - \ifeq@noquizsolutions\else - \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% - {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% - {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions - \every@ButtonField\every@CorrAnsButton}}% - \fi - \else - \edef\@@CorrAnsButtonGrpActions{% - \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC} - \else\noexpand\BC{\solution@Color}\fi - \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}% - \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% - {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% - {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions - \every@ButtonField\every@CorrAnsButton}}% - \fi + \if\eqQuizType\isQZ + \edef\@@CorrAnsButtonGrpActions{\noexpand\F{\FHidden}% + \ifx\@qzsolndest\@empty + \else\noexpand\BC{\solution@Color}\fi + \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}% + \ifeq@noquizsolutions\let\x\relax\else + \def\x{\mbox{\push@@Button{#1}{\Fld@name}{}% + {\DefaultHeightOfWidget}{\eq@protect\A}% + {\eq@setButtonProps\eq@Button@driver}% + {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions + \every@ButtonField\every@CorrAnsButton}}}\fi\x + \else + \edef\@@CorrAnsButtonGrpActions{% + \ifx\@qzsolndest\@empty%\noexpand\BC{\normalCABtnBC} + \else\noexpand\BC{\solution@Color}\fi + \noexpand\A{\noexpand\CorrAnsButtonGrpActionHook}}% + \mbox{\push@@Button{#1}{\Fld@name}{}{\DefaultHeightOfWidget}% + {\eq@protect\A}{\eq@setButtonProps\eq@Button@driver}% + {\CorrAnsButtonGrpDefaults\@@CorrAnsButtonGrpActions + \every@ButtonField\every@CorrAnsButton}}% + \fi } \def\makeStringArray#1{\def\stringArray{[}\@makeStringArray#1,\@nil} \def\@makeStringArray#1,#2\@nil{% - \edef\eq@temp{\stringArray}\def\argii{#2}% - \ifx\argii\@empty - \edef\stringArray{\eq@temp"#1"]}% - \def\eq@next{}% - \else - \edef\stringArray{\eq@temp"#1",}% - \def\eq@next{\@makeStringArray#2\@nil}% - \fi - \eq@next + \edef\eq@temp{\stringArray}\def\argii{#2}% + \ifx\argii\@empty + \edef\stringArray{\eq@temp"#1"]}% + \def\eq@next{}% + \else + \edef\stringArray{\eq@temp"#1",}% + \def\eq@next{\@makeStringArray#2\@nil}% + \fi + \eq@next } \let\@eqListExp\relax \let\@currentQues\@empty \let\eqQzQuesList\@empty \def\eq@AddProbToQzQuesList{% - \edef\eq@tmpExp{\noexpand\g@addto@macro% - \noexpand\eqQzQuesList{\noexpand - \@eqListExp{\@currentQues}{\the\c@page}}}% + \edef\eq@tmpExp{\noexpand\g@addto@macro% + \noexpand\eqQzQuesList{\noexpand + \@eqListExp{\@currentQues}{\the\c@page}}}% \ifx\grpquestions\eq@Zero\eq@tmpExp\fi } \LangRedefinitions @@ -4482,15 +4455,15 @@ if (!isQuizInitialized("@currQuiz")) { \inputSumryTblCode \inputMCFICode \newcommand{\solutionColor}[1]{\def\eq@argi{#1}\ifx\eq@argi\@empty - \def\solution@Color{\solutionColorDef}\else - \def\solution@Color{#1}\fi} + \def\solution@Color{\solutionColorDef}\else + \def\solution@Color{#1}\fi} \newcommand{\solutionColorDef}{0 .6 0} \solutionColor{\solutionColorDef} \@ifundefined{jsColor}{% - \InputIfFileExists{eqcolor.def}{\PackageInfo{exerquiz} - {Inputting eqcolor.def}} - {\PackageError{exerquiz}{cannot find eqcolor.def} - {Refresh your file name database and try again.}} + \InputIfFileExists{eqcolor.def}{\PackageInfo{exerquiz} + {Inputting eqcolor.def}} + {\PackageError{exerquiz}{cannot find eqcolor.def} + {Refresh your file name database and try again.}} }{} \newcommand\rghtColorJSDef{["RGB", 0, .6, 0]} \newcommand\rghtColorJS{\rghtColorJSDef} @@ -4509,59 +4482,59 @@ if (!isQuizInitialized("@currQuiz")) { \let\partialColorJSLoc\@empty \let\partialColorJSLocDef\@empty \def\chooseJSsymbol{\@ifstar{\let\eq@isstar\eq@YES\chooseJSsymboli} - {\let\eq@isstar\eq@NO\chooseJSsymboli}} + {\let\eq@isstar\eq@NO\chooseJSsymboli}} \def\chooseJSsymboli#1{\lowercase{\edef\eq@arg{#1}}% - \def\eq@carg{check}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.ch}\else - \def\eq@carg{cross}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.cr}\else - \def\eq@carg{diamond}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.di}\else - \def\eq@carg{circle}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.ci}\else - \def\eq@carg{star}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.st}\else - \def\eq@carg{square}\ifx\eq@arg\eq@carg - \def\eq@retnStyle{style.sq}\else - \let\eq@retnStyle\@empty - \ifx\eq@isstar\eq@NO\PackageWarning{exerquiz} - {Argument `#1' not recognized.\MessageBreak - Permissible values are check, cross, diamond,\MessageBreak - circle, star, square. Will use the default}\fi - \fi\fi\fi\fi\fi\fi + \def\eq@carg{check}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.ch}\else + \def\eq@carg{cross}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.cr}\else + \def\eq@carg{diamond}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.di}\else + \def\eq@carg{circle}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.ci}\else + \def\eq@carg{star}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.st}\else + \def\eq@carg{square}\ifx\eq@arg\eq@carg + \def\eq@retnStyle{style.sq}\else + \let\eq@retnStyle\@empty + \ifx\eq@isstar\eq@NO\PackageWarning{exerquiz} + {Argument `#1' not recognized.\MessageBreak + Permissible values are check, cross, diamond,\MessageBreak + circle, star, square. Will use the default}\fi + \fi\fi\fi\fi\fi\fi } \newcommand\setRghtAnsSymb[1]{\chooseJSsymbol{#1}% - \ifx\eq@retnStyle\@empty\else - \edef\rghtAnsSymbJS{\eq@retnStyle}% - \edef\rghtAnsSymb{\eq@carg}\fi} + \ifx\eq@retnStyle\@empty\else + \edef\rghtAnsSymbJS{\eq@retnStyle}% + \edef\rghtAnsSymb{\eq@carg}\fi} \def\rghtAnsSymbJS{style.ch} \def\rghtAnsSymb{check} \newcommand\setCorrAnsSymb[1]{\chooseJSsymbol{#1}% - \ifx\eq@retnStyle\@empty\else - \edef\corrAnsSymbJS{\eq@retnStyle}% - \edef\corrAnsSymb{\eq@carg}\fi} + \ifx\eq@retnStyle\@empty\else + \edef\corrAnsSymbJS{\eq@retnStyle}% + \edef\corrAnsSymb{\eq@carg}\fi} \def\corrAnsSymbJS{style.ci} \def\corrAnsSymb{circle} \newcommand\setWrngAnsSymb[1]{\chooseJSsymbol{#1}% - \ifx\eq@retnStyle\@empty\else - \edef\wrngAnsSymbJS{\eq@retnStyle}% - \edef\wrngAnsSymb{\eq@carg}\fi} + \ifx\eq@retnStyle\@empty\else + \edef\wrngAnsSymbJS{\eq@retnStyle}% + \edef\wrngAnsSymb{\eq@carg}\fi} \def\wrngAnsSymbJS{style.cr} \def\wrngAnsSymb{cross} \def\setRghtAnsSymbLoc#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \let\rghtAnsSymbJSLoc\@empty\else - \edef\rghtAnsSymbJSLoc{\eq@retnStyle}\fi + \ifx\eq@retnStyle\@empty + \let\rghtAnsSymbJSLoc\@empty\else + \edef\rghtAnsSymbJSLoc{\eq@retnStyle}\fi } \def\setCorrAnsSymbLoc#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \let\corrAnsSymbJSLoc\@empty\else - \edef\corrAnsSymbJSLoc{\eq@retnStyle}\fi + \ifx\eq@retnStyle\@empty + \let\corrAnsSymbJSLoc\@empty\else + \edef\corrAnsSymbJSLoc{\eq@retnStyle}\fi } \def\setWrngAnsSymbLoc#1{\chooseJSsymbol*{#1}% - \ifx\eq@retnStyle\@empty - \let\wrngAnsSymbJSLoc\@empty\else - \edef\wrngAnsSymbJSLoc{\eq@retnStyle}\fi + \ifx\eq@retnStyle\@empty + \let\wrngAnsSymbJSLoc\@empty\else + \edef\wrngAnsSymbJSLoc{\eq@retnStyle}\fi } \let\rghtAnsSymbJSLoc\@empty \let\rghtAnsSymbJSLocDef\@empty @@ -4672,25 +4645,23 @@ if (!isQuizInitialized("@currQuiz")) { \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{}\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{}\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{}\else\def\eqAddAAMouseUpMS{#1}\fi} \def\eqAddAAMouseUpMS{} -\def\eqIconDefaults -{% - \rawPDF{}\S{}\mkIns{/TP 1}\W{} - \CA{}\RC{}\AC{}\BC{}\BG{}\H{N} - \textColor{0 g}\Ff{\FfReadOnly} -} -\newcommand\eqIcon[4][] -{% - \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{\eq@setButtonProps - \eq@Button@driver}{\eqIconDefaults\every@ButtonField - \every@eqIcon}}% +\def\eqIconDefaults{% + \rawPDF{}\S{}\mkIns{/TP 1}\W{} + \CA{}\RC{}\AC{}\BC{}\BG{}\H{N} + \textColor{0 g}\Ff{\FfReadOnly} +} +\newcommand\eqIcon[4][]{% + \mbox{\push@@Button{#1}{#2}{#3}{#4}{}{\eq@setButtonProps + \eq@Button@driver}{\eqIconDefaults\every@ButtonField + \every@eqIcon}}% } \eq@restoreCats \endinput -- cgit v1.2.3