summaryrefslogtreecommitdiff
path: root/texmf-dist
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-29 21:39:50 +0900
committerNorbert Preining <norbert@preining.info>2019-09-29 21:59:54 +0900
commit56cafb279fe43023ee711349757a0e9187c99923 (patch)
tree0c87a81a7bca7c930f74dc2a953aaf239144bab6 /texmf-dist
parentabca5965c032581103020408b1930cd08ba06f1f (diff)
acrotex (2019-09-29)
Diffstat (limited to 'texmf-dist')
-rw-r--r--texmf-dist/doc/latex/acrotex/README.md5
-rw-r--r--texmf-dist/doc/latex/acrotex/aeb_man.pdfbin1355814 -> 1362922 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/aeb_man.tex50
-rw-r--r--texmf-dist/doc/latex/acrotex/eformman.pdfbin989810 -> 995308 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/eformman.tex99
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jquiztst.pdfbin353849 -> 355970 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jquiztst.tex4
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jtxttst.pdfbin320860 -> 319897 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jtxttst.tex81
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/webeqtst.pdfbin490247 -> 489546 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/install_jsfiles.pdfbin237391 -> 236764 bytes
-rw-r--r--texmf-dist/source/latex/acrotex/acrotex.ins47
-rw-r--r--texmf-dist/source/latex/acrotex/eforms.dtx602
-rw-r--r--texmf-dist/source/latex/acrotex/exerquiz.dtx161
-rw-r--r--texmf-dist/source/latex/acrotex/insdljs.dtx106
-rw-r--r--texmf-dist/source/latex/acrotex/web.dtx6
-rw-r--r--texmf-dist/tex/latex/acrotex/aebjs.def4
-rw-r--r--texmf-dist/tex/latex/acrotex/aebrandom.def4
-rw-r--r--texmf-dist/tex/latex/acrotex/aebsumrytbls.def33
-rw-r--r--texmf-dist/tex/latex/acrotex/altadbfncs.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/dljscc.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/edvipdfm.def77
-rw-r--r--texmf-dist/tex/latex/acrotex/eforms.sty186
-rw-r--r--texmf-dist/tex/latex/acrotex/epdfmark.def118
-rw-r--r--texmf-dist/tex/latex/acrotex/epdftex.def60
-rw-r--r--texmf-dist/tex/latex/acrotex/eqbr.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcat.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcolor.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqcz.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqda.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqde.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqes.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqexam.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfin.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqfr.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqit.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqnl.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqno.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqpo.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqru.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/eqtr.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/exerquiz.sty93
-rw-r--r--texmf-dist/tex/latex/acrotex/insdljs.sty44
-rw-r--r--texmf-dist/tex/latex/acrotex/template.def4
-rw-r--r--texmf-dist/tex/latex/acrotex/usemcfi.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/web.sty4
46 files changed, 1437 insertions, 389 deletions
diff --git a/texmf-dist/doc/latex/acrotex/README.md b/texmf-dist/doc/latex/acrotex/README.md
index 0ab4acdb..8e149839 100644
--- a/texmf-dist/doc/latex/acrotex/README.md
+++ b/texmf-dist/doc/latex/acrotex/README.md
@@ -1,6 +1,6 @@
The AcroTeX eDucation Bundle
Author: D. P. Story
-Dated: 2019-05-24
+Dated: 2019-08-13
AeB contains the following:
@@ -19,6 +19,9 @@ AeB contains the following:
6) Documentation for AeB (AcroTeX eDucatation Bundle) and eForms
(including insdljs and dljslib).
+What's New (2019-08-13) Use \protect when formatting a enhanced preview value.
+Other minor changes and bug fixes.
+
What's New (2019-05-24) Added the enhanced preview feature. When in effect along with
ordinary preview, captions of buttons and initial values of other fields are viewable
in non-conforming PDF readers.
diff --git a/texmf-dist/doc/latex/acrotex/aeb_man.pdf b/texmf-dist/doc/latex/acrotex/aeb_man.pdf
index a9d5a9fc..794013af 100644
--- a/texmf-dist/doc/latex/acrotex/aeb_man.pdf
+++ b/texmf-dist/doc/latex/acrotex/aeb_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acrotex/aeb_man.tex b/texmf-dist/doc/latex/acrotex/aeb_man.tex
index ecc2638b..679358f2 100644
--- a/texmf-dist/doc/latex/acrotex/aeb_man.tex
+++ b/texmf-dist/doc/latex/acrotex/aeb_man.tex
@@ -232,10 +232,10 @@
\university{{\AcroT} Software Development Team}
\email{dpstory@acrotex.net}
\versionLabel{Dated:}
-\version{2019/05/24}
+\version{2019/08/13}
\copyrightyears{1999-\the\year}
\nocopyright
-\prepared{2019/05/24}
+\prepared{2019/08/13}
\revisionLabel{Distribution Dated:}
\copyrightStatus{True}
@@ -1695,7 +1695,7 @@ The syntax \cs{optionalPageMatter} is\dots
\begin{dCmd}[commandchars=!()]{\bxSize}
\optionalPageMatter[!ameta(vspace)]{!ameta(content)}
\end{dCmd}
-\eVerb where \ameta{content} content to be displayed in middle title region, and
+\smallskip\eVerb where \ameta{content} content to be displayed in middle title region, and
\texttt{[\ameta{vspace}]} consists of one (or more) \cs{vspace} commands. The default
is
\begin{Verbatim}[xleftmargin=\amtIndent]
@@ -8087,7 +8087,25 @@ credit of zero, and may as well not be included in the list of words.
extensive examples, and discusses techniques of searching using regular
expressions.
+\subsubsection{\texorpdfstring{\protect\cs{RespBoxEssay}}%
+ {\textbackslash RespBoxEssay}: Extended Responses}\label{ss:respboxessay}
+The \cs{RespBoxEssay} command is used to provide space for the student to
+type in an extended response to a question. The student's response is not
+evaluated, it must be reviewed by the instructor, who can assign additional
+credit.
+\aebdimen0pt\bVerb\takeMeasure{\string\RespBoxEssay[\ameta{options}]\ameta{dest}\darg{\ameta{wd}}\darg{\ameta{ht}}}%
+\begin{dCmd}[commandchars=!()]{\bxSize}
+\RespBoxEssay[!ameta(options)]!ameta(dest){!ameta(wd)}{!ameta(ht)}
+\end{dCmd}
+\medskip\eVerb The first (optional) parameter (\ameta{options}) is used to pass key-value
+pairs to the form field. The second (optional) argument (\ameta{dest}) takes
+on one of two forms: (1) a named destination \texttt{[\meta{dest}]} to the
+solution (if provided), were \meta{dest} is a string the document author
+specifies; or (2) an asterisk (\texttt*), where the named destination is
+automatically generated by \pkg{exerquiz}. The third and fourth parameters
+are the width and height of the field. The field is, by default, a
+multi-line text field.
\subsection{Some Enhancements}\label{enhancements}
@@ -8110,7 +8128,7 @@ than the default variable of $x$.
\begin{oQuestion}{sine2}
\redpoint Differentiate\\[1ex]
$\dfrac d{dt} \sin^2(t) =$
-\RespBoxMath{2*sin(t)*cos(t)}(t){4}{.0001}{0}{1}\cgBdry\CorrAnsButton{2*sin(t)*cos(t)}
+\RespBoxMath{2*sin(t)*cos(t)}(t){4}{.0001}{0}{1}\olBdry\CorrAnsButton{2*sin(t)*cos(t)}
\end{oQuestion}
\medskip\noindent
@@ -8118,14 +8136,14 @@ The listing follows:
\begin{Verbatim}[xleftmargin=\amtIndent]
\begin{oQuestion}{sine2}\\[1ex]
\redpoint Differentiate $\dfrac d{dt} \sin^2(t) =$
-\RespBoxMath{2*sin(t)*cos(t)}(t){4}{.0001}{0}{1}\cgBdry
+\RespBoxMath{2*sin(t)*cos(t)}(t){4}{.0001}{0}{1}\olBdry
\CorrAnsButton{2*sin(t)*cos(t)}
\end{oQuestion}
\end{Verbatim}
\noindent The \cs{CorrAnsButton} takes one parameter, the correct answer.
This answer is (usually) the same as the one given as the second
-argument (the optional argument is the first) in the \cs{RespBoxMath}
+argument (the optional argument is the first) in the \cs{RespBoxMath}r
command.
\redpoint The \cs{CorrAnsButton} also controls access to the (optional) solution, see
@@ -8196,7 +8214,7 @@ An example of this optional parameter is
\redpoint Perform the indicated operation, and enter
result into the box.\\[1ex]
$ \text{9} + \text{8} =$
-\RespBoxMath{9 + 8}{1}{.0001}{[0,1]}\cgBdry\CorrAnsButton{9 + 8}*{EvalCorrAnsButton}\cgBdry
+\RespBoxMath{9 + 8}{1}{.0001}{[0,1]}\olBdry\CorrAnsButton{9 + 8}*{EvalCorrAnsButton}\olBdry
\sqTallyBox
\end{oQuestion}
@@ -8207,8 +8225,8 @@ The listing follows:
\redpoint Perform the indicated operation, and enter
result into the box.\\[1ex]
$ 9 + 8 = $
-\RespBoxMath{9 + 8}{1}{.0001}{[0,1]}\cgBdry
- \CorrAnsButton{9 + 8}*{EvalCorrAnsButton}\cgBdry
+\RespBoxMath{9 + 8}{1}{.0001}{[0,1]}\olBdry
+ \CorrAnsButton{9 + 8}*{EvalCorrAnsButton}\olBdry
\sqTallyBox
\end{oQuestion}
\end{Verbatim}
@@ -8224,7 +8242,7 @@ For example,
\begin{oQuestion}{sine4}
\redpoint \hypertarget{exofT}{Differentiate}\\[1ex]
$\dfrac d{dx} \sin^2(x) =$
-\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\cgBdry\CorrAnsButton{2*sin(x)*cos(x)}\cgBdry
+\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\olBdry\CorrAnsButton{2*sin(x)*cos(x)}\olBdry
\sqTallyBox
\end{oQuestion}
@@ -8234,8 +8252,8 @@ The listing follows:
\begin{oQuestion}{sine4}
\redpoint Differentiate\\[1ex]
$\dfrac d{dx} \sin^2(x) =$
-\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\cgBdry
-\CorrAnsButton{2*sin(x)*cos(x)}\cgBdry
+\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\olBdry
+\CorrAnsButton{2*sin(x)*cos(x)}\olBdry
\sqTallyBox
\end{oQuestion}
\end{Verbatim}
@@ -8254,8 +8272,8 @@ insert \cs{sqClearButton}.
\begin{oQuestion}{sine5}
\redpoint Differentiate\\[1ex]
$\dfrac d{dx} \sin^2(x) =$
-\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\kern1bp\CorrAnsButton{2*sin(x)*cos(x)}\cgBdry
-\sqTallyBox\cgBdry\sqClearButton
+\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}\olBdry\CorrAnsButton{2*sin(x)*cos(x)}\olBdry
+\sqTallyBox\olBdry\sqClearButton
\end{oQuestion}
@@ -8266,8 +8284,8 @@ The listing follows:
\redpoint Differentiate\\[1ex]
$\dfrac d{dx} \sin^2(x) =$
\RespBoxMath{2*sin(x)*cos(x)}{4}{.0001}{0}{1}%
-\CorrAnsButton{2*sin(x)*cos(x)}\cgBdry
-\sqTallyBox\cgBdry\sqClearButton
+\CorrAnsButton{2*sin(x)*cos(x)}\olBdry
+\sqTallyBox\olBdry\sqClearButton
\end{oQuestion}
\end{Verbatim}
diff --git a/texmf-dist/doc/latex/acrotex/eformman.pdf b/texmf-dist/doc/latex/acrotex/eformman.pdf
index 7bdd9b3f..c3532cfb 100644
--- a/texmf-dist/doc/latex/acrotex/eformman.pdf
+++ b/texmf-dist/doc/latex/acrotex/eformman.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acrotex/eformman.tex b/texmf-dist/doc/latex/acrotex/eformman.tex
index 7538e0a2..ecfbb3d8 100644
--- a/texmf-dist/doc/latex/acrotex/eformman.tex
+++ b/texmf-dist/doc/latex/acrotex/eformman.tex
@@ -6,8 +6,10 @@
forcolorpaper,latextoc,pro,useui},
exerquiz,aebxmp
]{aeb_pro}
+\usepackage{forms16be}
\usepackage[dblevel=0]{aeb_mlink}
\usepackage[altbullet]{lucidbry}
+\usepackage{pifont}
%\usepackage{myriadpro}
\setlength{\marginparpush}{3pt}
@@ -79,7 +81,7 @@
subject={Documentation for the eforms and insdljs packages},
talksite={\url{www.acrotex.net}},
version={2.0},
- prepared={2019/05/24},
+ prepared={2019/08/06},
preparedLabel={Distribution Dated:},
keywords={LaTeX, hyperref, PDF, exercises, quizzes},
copyrightStatus=True,
@@ -517,13 +519,27 @@ declarative command \cs{pmpvMrk\darg{\ameta{mrk}}} that takes one argument \amet
to be used. The package declares \verb|\pmpvMrk{X}|, another good choice is
\verb|\pmpvMrk{$\checkmark$}|.
+\newtopic\indent\textbf{Finer control over enhanced preview.} When enhanced
+preview is on (\cs{previewOn}\allowbreak \cs{pmpvOn}), the caption for {\pbs}
+may be turned off with \cs{pmpvCAOff}\FmtMP{\cs{pmpvCAOff}} (and may be
+turned back on again with \cs{pmpvCAOn}). Enhanced preview for all other
+field types is controlled with \cs{pmpvVOff}\FmtMP{\cs{pmpvVOff}} (and
+\cs{pmpvVOn}). Turning off enhanced preview may be become an issue when the
+preview text is too wide for the preview rectangle
+{\previewOn\pmpvOn\textField[\autoCenter{y}\BC{}\Ff{\FfReadOnly}\V{We initialize this field}\DV{We
+initialize this field}]{V2Big}{1in}{11bp}}. We can turn off enhanced preview
+for this field only by passing \cs{cmd\darg{\cs{pmpvVOff}}} in the optional
+argument of the field, or turn it off globally by expanding \cs{pmpvVOff}
+prior to expanding the \cs{textField} command.
+
\newtopic\textbf{\textcolor{red}{Final Preparation.}}
In the modern era of {\LaTeX}, it is customary by some to use
\app{sumatraPDF} or some other non-conforming {\PDF} reader during
development; however, you should always open your final {\PDF} (which was
built with \cs{previewOff}\cs{pmpvOff}) in \app{Adobe Reader DC} (or in
\app{Acrobat}), save it to obtain the correct appearances of the fields
-placed in the document.
+placed in the document. Other suggestions can be found in the
+\href{\urlAcroTeXBlog}{\AcroBlog} article cited below.
%http://www.acrotex.net/blog/?p=1404
\exAeBBlogPDF{p=1404} Refer to the article titled \textit{\href{\urlAcroTeXBlog/?p=1404}{eforms: Enhanced Previews}} for more technical
@@ -2841,7 +2857,7 @@ The \hypertarget{\pkg{insdljs}}{insdljsPkg} package provides support to {\LaTeX}
for inserting \app{Acrobat} JavaScript into a PDF file created from a
\LaTeX{} source. This package works correctly for users of \textsf{pdftex}
(and \app{luatex}), \textsf{dvipdfm}, \textsf{dvipdfmx}, and \texttt{xetex}.
-For\marginpar{\small\raggedleft\app{Acrobat} required for
+For\FmtMP{\app{Acrobat} required for
\app{dvips}} those who use either \app{dvips} or
\app{dvipsone} to produce a postscript file, which is then distilled, you are
required to have \app{Acrobat}~5.0 (or later).
@@ -2862,12 +2878,20 @@ of the JavaScripts.
JavaScript. This might be useful, for creating a paper document that is
not interactive. For a non-interactive paper document, no JS is needed.
-\item\NH\texttt{execJS} is a very useful option/feature if you know how to use
- it. Any JavaScript that is written in an \env{execJS} environment is
- executed once when the document is first opened in \app{Acrobat}, then
- discarded. AeB uses this for post-distillation document processing. The
- default is that the JavaScript in an \texttt{execJS} environment is not
- executed; using this option turns on this feature.
+\item\NH\texttt{execJS} is a very useful option/feature if you know how to
+ use it. Any JavaScript that is written in an \env{execJS} environment
+ is executed once when the document is first opened in \app{Acrobat},
+ then discarded. AeB uses this for post-creation document processing.
+ The default is that the JavaScript in an \texttt{execJS} environment is
+ not executed; using this option turns on this feature. Two convenience
+ commands are also defined: \FmtMP{\cs{execJSOn}} \cs{execJSOn} (the
+ equivalent of passing the \opt{execJS} option to the \pkg{insdljs}
+ package) and \FmtMP{\cs{execJSOff}}\cs{execJSOff} (for turning off
+ JavaScript execution within an \env{execJS} environment). Both have no
+ effect outside the preamble of the document.
+
+ For information on the \env{execJS} environment, read
+ Section~\ref{s:execJS} on page~\pageref{s:execJS}.
\end{description}
\section{The \texttt{insDLJS} and \texttt{insDLJS*} Environments}
@@ -3235,8 +3259,20 @@ When \cs{thisPageAction} is executed in the preamble,
the \texttt{<open\_action>} argument gets passed to
the \cs{OpenAction} command.
-\section{The \textsf{execJS} Environment}
+\section{The \textsf{execJS} Environment}\label{s:execJS}
+
+\textbf{Purpose.} The\FmtMP{`\texttt{\eqbs}' and `\texttt{\%}' characters available} \env{execJS} takes JavaScript as content. This
+JavaScript is executed the first time the newly created PDF is opened in
+\app{Acrobat}. This environment is a variation on \env{insDLJS};
+consequently,
+the escape character is `\texttt{\eqbs}' and the comment character is
+`\texttt{\%}'.
+\newtopic
+\textbf{Requirements.} For the script to be executed, the document must be compiled under
+the \opt{execJS} option of \pkg{eforms}.
+
+\newtopic
This is an environment useful to PDF developers who want to tap into
the power of JavaScript. To use this environment, the developer
needs \app{Acrobat}~5.0 or higher. \textsf{pdftex} or \textsf{dvipdfm} can
@@ -3244,8 +3280,8 @@ be used to produce the PDF document, but the developer needs
the \app{Acrobat} product for this environment to do anything.
The \texttt{execJS} is used primarily for post-distillation
-processing (post-creation processing, in the case of \textsf{pdftex}
-and \textsf{dvipdfm}). The \texttt{execJS} environment can be used,
+processing (post-creation processing, in the case of \textsf{pdflatex}
+and \textsf{xelatex}). The \texttt{execJS} environment can be used,
for example, to automatically import named icons into the document,
which can, in turn, be used for an animation.
@@ -3259,18 +3295,22 @@ by the \textsf{execJS} environment is imported, and the JavaScript
executed. This JavaScript is \emph{not} saved with the document.
The syntax of this environment is\dots
-\settowidth{\aebdimen}{\ttfamily\string\begin\darg{execJS}\darg{\meta{name}}}
+\settowidth{\aebdimen}{\ttfamily\string\begin\darg{execJS}[\ameta{\cs{cmd}}]\darg{\meta{name}}}
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
-\begin{execJS}{!meta(name)}
+\begin{execJS}[!ameta(\cmd)]{!meta(name)}
....
-!anglemeta(JavaScript code)
+!ameta(JavaScript code)
....
\end{execJS}
\end{dCmd}
-\PD The environment takes one required argument, the base name of the
-auxiliary files to be generated.
+\PD The environment takes one required argument (\meta{name}), the base name
+of the auxiliary files to be generated. The \env{execJS} environment now has
+an optional argument, the optional argument must be a command
+\ameta{\cs{cmd}}. The purpose of \ameta{\cs{cmd}} is to make special
+definitions at the time the script is expanded.
+\newtopic\indent
Many of the more useful JavaScript methods have security restrictions,
the developer must create folder JavaScript that can be used to \emph{raise
the privilege} of the methods.
@@ -3331,6 +3371,31 @@ app.endPriv();
\end{Verbatim}
\newtopic AeB Pro, the {Acro\!\TeX} Presentation Bundle and @EASE use these execJS techniques.
+\Example In this example, we give a simple example of the use of the optional argument (\ameta{\cs{cmd}}).
+We define a command \cs{myDefns} which gives a special meaning to \cs{oct}. This definition
+are made within a group so it has no effect outside the environment.
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars={!~@}]
+...
+\execJSOn
+!textbf~\def\myDefns{\let\oct\eqbs}@
+\begin{execJS}[!textbf~\myDefns@]{tst}
+var str="Hello J!textbf~\oct@374rgen! \u263A"; // \u already defined
+console.show();
+console.println(str);
+\end{execJS}
+\begin{document}
+...
+\end{document}
+\end{Verbatim}
+\defUniStr{myInitValue}{Hello J\u00FCrgen! \u263A}%
+%\previewOn\pmpvOn
+When the document is first opened, the console window appears and the message, \ding{172}
+\begin{quote}
+\textField[\cmd{\let\pmpvFmt\footnotesize}\Ff\FfReadOnly\BC{}\V{\tops{Hello J\"{u}rgen! \protect\ding{172}}{\unicodeStr(myInitValue)}}
+\DV{\unicodeStr(myInitValue)}]{HJSmiley}{67.68bp}{11bp}
+\end{quote}
+is written to the console window.
+
\section{The \textsf{defineJS} Environment}\label{defineJS}
When you create a form element (button, text field, etc.), you
diff --git a/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf b/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf
index 30175b4f..d000d0dd 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf
+++ b/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex b/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex
index 7bb46805..e6d3a0aa 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex
+++ b/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex
@@ -247,7 +247,7 @@ buttons that have a green boundary to get a solution.
\NoPeeking % or put in preamble
-\begin{quiz}{mathquiz} Answer each of the following. Passing
+\begin{quiz*}{mathquiz} Answer each of the following. Passing
is 100\%.
\begin{questions}
@@ -280,7 +280,7 @@ the power rule:
In the syntax of this document, \js{2*x*e^(x^2)}.
\end{solution}
\end{questions}
-\end{quiz}\quad\ScoreField\currQuiz\olBdry\CorrButton\currQuiz
+\end{quiz*}\quad\ScoreField\currQuiz\olBdry\CorrButton\currQuiz
\noindent
Answers: \AnswerField\currQuiz
diff --git a/texmf-dist/doc/latex/acrotex/examples/jtxttst.pdf b/texmf-dist/doc/latex/acrotex/examples/jtxttst.pdf
index 8638f825..298a75f3 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jtxttst.pdf
+++ b/texmf-dist/doc/latex/acrotex/examples/jtxttst.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex b/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
index 2311e217..ed7b937f 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
+++ b/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
@@ -37,11 +37,11 @@ Department of Mathematics}
\section{Text Fill-in Questions}
-\textsf{Exerquiz} can now create text fill-in questions, questions
-in which the response is text (as opposed to a mathematical
-expression). The underlying JavaScript compares the user's
-response against acceptable alternatives, as supplied by the
-author of the question. If there is a match, the response is
+\textsf{Exerquiz} can now create text fill-in questions,
+questions in which the response is text (as opposed to a
+mathematical expression). The underlying JavaScript compares the
+user's response against acceptable alternatives, as supplied by
+the author of the question. If there is a match, the response is
deemed correct. For example:
\redpoint\begin{oQuestion}{ex1}%
@@ -51,52 +51,59 @@ Who was the first President\footnote{of the United States}?\
\end{oQuestion}
\medskip\noindent
-The command \cs{RespBoxTxt} is the one that creates a text fill-in question. Its
-syntax is
+The command \cs{RespBoxTxt} is the one that creates a text
+fill-in question. Its syntax is
\begin{verbatim}
\RespBoxTxt[#1]#2#3[#4]#5<plus listing of alternatives>
\end{verbatim}
\noindent\textbf{\hypertarget{paraRespBoxTxt}{Parameters:}}
\begin{enumerate}
-\item[\ttfamily\#1:]Optional parameter used to modify the appearance of the
- text field.
-\item[\ttfamily\#2:]This required parameter is a number that indicates
-the filtering method to be used. Permissible values of this parameter are
+\item[\ttfamily\#1:]Optional parameter used to modify the
+ appearance of the text field.
+\item[\ttfamily\#2:]This required parameter is a number that
+ indicates the filtering method to be used. Permissible
+ values of this parameter are
\begin{enumerate}
- \item[\ttfamily-1:] (The default) The author's and user's answers are not filtered
- in any way. (Spaces, case, and punctuation are preserved.)
- \item[\ttfamily0:] The author's and user's answers are converted to
- lower case, any white space and non-word characters are removed.
- \item[\ttfamily1:] The author's and user's answers are converted to
- lower case, any white space is removed.
- \item[\ttfamily2:] The author's and user's answers are stripped of
- white space.
+ \item[\ttfamily-1:] (The default) The author's and
+ user's answers are not filtered in any way. (Spaces,
+ case, and punctuation are preserved.)
+ \item[\ttfamily0:] The author's and user's answers are
+ converted to lower case, any white space and
+ non-word characters are removed.
+ \item[\ttfamily1:] The author's and user's answers are
+ converted to lower case, any white space is removed.
+ \item[\ttfamily2:] The author's and user's answers are
+ stripped of white space.
\end{enumerate}
-See the JavaScript function \texttt{eqFilter} in \texttt{exerquiz.dtx} for
-program code details. Additional filtering options may be added.
+See the JavaScript function \texttt{eqFilter} in
+\texttt{exerquiz.dtx} for program code details. Additional
+filtering options may be added.
-\item[\ttfamily\#3:] This parameter is a number that indicates the compare
-method to be used. Permissible values of this parameter are
+\item[\ttfamily\#3:] This parameter is a number that indicates
+ the compare method to be used. Permissible values of this
+ parameter are
\begin{enumerate}
- \item[\ttfamily0:] (The default) The author's and user's answers are
- compared for an exact match. (These answers are filtered before they are
- compared.)
- \item[\ttfamily1:] The user's response is searched in an attempt to
- get a substring match with the author's alternatives. Additional comparison
- methods may be added.
+ \item[\ttfamily0:] (The default) The author's and user's
+ answers are compared for an exact match. (These
+ answers are filtered before they are compared.)
+ \item[\ttfamily1:] The user's response is searched in an
+ attempt to get a substring match with the author's
+ alternatives. Additional comparison methods may be
+ added.
\end{enumerate}
See the JavaScript function \texttt{compareTxt} in
\texttt{exerquiz.dtx} for the program code details.
\item[\ttfamily\#4:] Optional, a named destination to the
-solution to the question. If this parameter appears, then a
-solution must follow the question, enclosed in a \texttt{solution}
-environment. If the forth parameter is a `\texttt*', then an automatic
-naming scheme is used instead.
-\item[\ttfamily\#5:] This required parameter is the
-number of alternative answers that are acceptable. The alternative
-answers are listed immediately after this parameter. (The example
-above specified that $4$ alternatives follow.)
+ solution to the question. If this parameter appears, then
+ a solution must follow the question, enclosed in a
+ \texttt{solution} environment. If the forth parameter is
+ a `\texttt*', then an automatic naming scheme is used
+ instead.
+\item[\ttfamily\#5:] This required parameter is the number of
+ alternative answers that are acceptable. The alternative
+ answers are listed immediately after this parameter. (The
+ example above specified that $4$ alternatives follow.)
\end{enumerate}
\makeatletter
diff --git a/texmf-dist/doc/latex/acrotex/examples/webeqtst.pdf b/texmf-dist/doc/latex/acrotex/examples/webeqtst.pdf
index c3cd4090..17f62734 100644
--- a/texmf-dist/doc/latex/acrotex/examples/webeqtst.pdf
+++ b/texmf-dist/doc/latex/acrotex/examples/webeqtst.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acrotex/install_jsfiles.pdf b/texmf-dist/doc/latex/acrotex/install_jsfiles.pdf
index 7b2d3fab..221ba16f 100644
--- a/texmf-dist/doc/latex/acrotex/install_jsfiles.pdf
+++ b/texmf-dist/doc/latex/acrotex/install_jsfiles.pdf
Binary files differ
diff --git a/texmf-dist/source/latex/acrotex/acrotex.ins b/texmf-dist/source/latex/acrotex/acrotex.ins
index 99459c8a..3afd02ab 100644
--- a/texmf-dist/source/latex/acrotex/acrotex.ins
+++ b/texmf-dist/source/latex/acrotex/acrotex.ins
@@ -55,29 +55,29 @@
% Install the Exerquiz Package
%
\generate{%
- \file{exerquiz.sty}{\from{exerquiz.dtx}{copyright,package}}
- \file{aebjs.def}{\from{exerquiz.dtx}{copyright,aebjs}}
-% \file{eqexam.def}{\from{exerquiz.dtx}{eqexam}}
- \file{aebrandom.def}{\from{exerquiz.dtx}{copyright,randomize}}
- \file{aebsumrytbls.def}{\from{exerquiz.dtx}{copyright,sumrytbls}}
- \file{usemcfi.def}{\from{exerquiz.dtx}{copyright,mcfi}}
- \file{eqcolor.def}{\from{exerquiz.dtx}{copyright,eqcolor}}
- \file{template.def}{\from{exerquiz.dtx}{copyright,template}}
- \file{eqfr.def}{\from{exerquiz.dtx}{copyright,eqfr}}
- \file{eqde.def}{\from{exerquiz.dtx}{copyright,eqde}}
- \file{eqno.def}{\from{exerquiz.dtx}{copyright,eqno}}
- \file{eqnl.def}{\from{exerquiz.dtx}{copyright,eqnl}}
- \file{eqes.def}{\from{exerquiz.dtx}{copyright,eqes}}
- \file{eqit.def}{\from{exerquiz.dtx}{copyright,eqit}}
- \file{eqru.def}{\from{exerquiz.dtx}{copyright,eqru}}
- \file{eqda.def}{\from{exerquiz.dtx}{copyright,eqda}}
- \file{eqpo.def}{\from{exerquiz.dtx}{copyright,eqpo}}
- \file{eqfin.def}{\from{exerquiz.dtx}{copyright,eqfin}}
- \file{eqcat.def}{\from{exerquiz.dtx}{copyright,eqcat}}
- \file{eqcz.def}{\from{exerquiz.dtx}{copyright,eqcz}}
- \file{eqbr.def}{\from{exerquiz.dtx}{copyright,eqbr}}
- \file{eqtr.def}{\from{exerquiz.dtx}{copyright,eqtr}}
-% \file{exerquiz.drv}{\from{exerquiz.dtx}{copyright,driver}}
+ \file{exerquiz.sty}{\from{exerquiz.dtx}{copyright,package}}
+ \file{aebjs.def}{\from{exerquiz.dtx}{copyright,aebjs}}
+% \file{eqexam.def}{\from{exerquiz.dtx}{eqexam}}
+ \file{aebrandom.def}{\from{exerquiz.dtx}{copyright,randomize}}
+ \file{aebsumrytbls.def}{\from{exerquiz.dtx}{copyright,sumrytbls}}
+ \file{usemcfi.def}{\from{exerquiz.dtx}{copyright,mcfi}}
+ \file{eqcolor.def}{\from{exerquiz.dtx}{copyright,eqcolor}}
+ \file{template.def}{\from{exerquiz.dtx}{copyright,template}}
+ \file{eqfr.def}{\from{exerquiz.dtx}{copyright,eqfr}}
+ \file{eqde.def}{\from{exerquiz.dtx}{copyright,eqde}}
+ \file{eqno.def}{\from{exerquiz.dtx}{copyright,eqno}}
+ \file{eqnl.def}{\from{exerquiz.dtx}{copyright,eqnl}}
+ \file{eqes.def}{\from{exerquiz.dtx}{copyright,eqes}}
+ \file{eqit.def}{\from{exerquiz.dtx}{copyright,eqit}}
+ \file{eqru.def}{\from{exerquiz.dtx}{copyright,eqru}}
+ \file{eqda.def}{\from{exerquiz.dtx}{copyright,eqda}}
+ \file{eqpo.def}{\from{exerquiz.dtx}{copyright,eqpo}}
+ \file{eqfin.def}{\from{exerquiz.dtx}{copyright,eqfin}}
+ \file{eqcat.def}{\from{exerquiz.dtx}{copyright,eqcat}}
+ \file{eqcz.def}{\from{exerquiz.dtx}{copyright,eqcz}}
+ \file{eqbr.def}{\from{exerquiz.dtx}{copyright,eqbr}}
+ \file{eqtr.def}{\from{exerquiz.dtx}{copyright,eqtr}}
+% \file{exerquiz.drv}{\from{exerquiz.dtx}{copyright,driver}}
}
%
% Install eForms Package
@@ -89,6 +89,7 @@
\file{edvipdfm.def}{\from{eforms.dtx}{copyright,edvipdfm}}
\file{uieforms.def}{\from{eforms.dtx}{copyright,userinterface}}
\file{setcorder.def}{\from{eforms.dtx}{copyright,setcorder}}
+ \file{pdfdochex.def}{\from{eforms.dtx}{copyright,hexoctcodes}}
}
%
% Install the Insdljs Package
diff --git a/texmf-dist/source/latex/acrotex/eforms.dtx b/texmf-dist/source/latex/acrotex/eforms.dtx
index dcfcbd78..d3e63f29 100644
--- a/texmf-dist/source/latex/acrotex/eforms.dtx
+++ b/texmf-dist/source/latex/acrotex/eforms.dtx
@@ -16,7 +16,7 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eforms}
-%<package> [2019/05/24 v2.11 Provides general eforms support (dps)]
+%<package> [2019/06/14 v2.3 Provides general eforms support (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}[2012/10/12]
@@ -89,6 +89,9 @@
% \textsf{web}; in this case, the options below must explicitly included.
% Set the driver dependent code for the |quiz| environments.
%
+% \changes{v2.2v2.2}{2019/06/12}{Added fields to fields dict, conforming to hyperref}
+% \changes{v2.13}{2019/06/10}{Added various fields to the fields dictionary so they
+% can get appearances in non-conforming PDF viewers.}
% \changes{v2.5o}{2012/06/18}{Added required package \string\textsf{ifpdf}}
% \changes{v2.9m}{2017/09/03}{Added the ifluatex package}
% \begin{macrocode}
@@ -96,6 +99,7 @@
\RequirePackage{ifxetex}[2006/08/21]
\RequirePackage{ifluatex}
% \end{macrocode}
+% The \pkg{calc} package is now required (2014/02/18).
% \changes{v2.6c}{2014/02/18}{Added the \string\textsf{calc} package as required package.}
% \begin{macrocode}
\RequirePackage{calc}
@@ -251,6 +255,8 @@
\MessageBreak in the option list of the eforms package.}%
}{}
\fi
+\edef\ef@CatChngs{\the\catcode`\$}
+\@makeother\$\relax
\newlength\eflength
\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
@@ -308,6 +314,7 @@
% around the \textit{inner} bounding rectangle.
% \begin{macrocode}
%<*package>
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}
\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{}
\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
@@ -362,6 +369,7 @@
\hb@xt@\noexpand\z@{\hss#1\hss}}\fi}
\let\@PMPV\@empty
\let\pmpvFmt\@empty
+\let\pmpvFmtCtrl\relax
% \end{macrocode}
% The preview bounding box, visible when \cs{previewOn} is expanded. Incorporated into the center
% of the box is \cs{pmpvFmt\darg{\cs{@PMPV}}}. \cs{pmpvFmt} can be used to format its argument (\cs{@PMPV});
@@ -376,7 +384,7 @@
\ifdim\@tempdimb<2\fboxrule\else
\advance\@tempdimb by-2\fboxrule\fi
\ckbox@Color\fbox{\parbox[b][\@tempdimb][c]{\@tempdima}%
- {\vfil\hfil\pmpvFmt{\@PMPV}\hfil\vfil}}\else
+ {\vfil\hfil\pmpvFmtCtrl\pmpvFmt{\@PMPV}\hfil\vfil}}\else
\parbox[b][#2][c]{#1}{\vfil\hfil\hfil\vfil}\fi}%
}
% \end{macrocode}
@@ -481,6 +489,9 @@
\@tempcnta=\eq@FfValue
\def\eq@arg{#2}%
\ifx\eq@arg\@empty\else
+ \def\x{\FfRadiosInUnison}%
+ \ifx\eq@arg\x\let\isRadiosInUnison\ef@YES
+ \else\let\isRadiosInUnison\ef@NO\fi
\advance\@tempcnta by#2\fi
\edef\eq@Ff{/Ff \the\@tempcnta}%
\def\ef@next{\processAppArgs}%
@@ -502,7 +513,7 @@
% (has a flag of 2 or 32), if yes we \cs{let} \DescribeMacro\ef@isHidden\cs{ef@isHidden} to \cs{ef@YES}, otherwise
% it is \cs{let} to \cs{ef@NO}.
% \begin{macrocode}
- \ifnum#2=2\relax % dpstoday
+ \ifnum#2=2\relax
\let\ef@isHidden\ef@YES\else
\ifnum#2=32\relax
\let\ef@isHidden\ef@YES\else
@@ -1127,11 +1138,26 @@
% \begin{macrocode}
\let\pmpvV\@empty
\let\eq@VSAVE\@empty
+% \end{macrocode}
+% Finer control over enhanced preview: for the \cs{V} entry, we can turn the enhanced
+% preview on with \DescribeMacro\pmpvVOn\cmd{\pmpvVOn} and off again with
+% \DescribeMacro\pmpvVOff\cmd\pmpvVOff.
+% \changes{v2.12}{2019/06/07}{Added finer control: \string\cs{pmpvVOff} and
+% \string\cs{pmpvVOn}}
+% \begin{macrocode}
+\let\ef@Vpv\ef@YES
+\def\pmpvVOff{\let\ef@Vpv\ef@NO\let\pmpvFmtCtrl\@gobble}
+\def\pmpvVOn{\let\ef@Vpv\ef@YES\let\pmpvFmtCtrl\relax}
+\def\noexpand@iii{\noexpand\noexpand\noexpand}
\def\@eqV#1{\Hy@pdfstringfalse
% \end{macrocode}
% We define \DescribeMacro\pmpvV\cmd{\pmpvV} to hold the preview value of the field.
+% \changes{v2.3}{2019/06/14}{Special definition of \string\cs{protect} to suppress
+% expansion within first argument of \string\cs{tops} within \string\cs{@eqV}}
% \begin{macrocode}
- \edef\pmpvV{#1}%
+ \let\x\protect
+ \let\protect\noexpand@iii\edef\pmpvV{#1}%
+ \edef\pmpvV{#1}\let\protect\x
% \end{macrocode}
% There is a problem with detecting unicode, if the author wants to use unicode,
% he should use \cs{unicodeStr}, which we try to detect, but we not allow
@@ -1278,6 +1304,18 @@
% enhanced preview, described above in the definition of \cs{@eqV}.
% \changes{v2.11}{2019/05/24}{Modified \string\cs{@eqCA} to enhance preview}
% \begin{macrocode}
+% \end{macrocode}
+% Finer control over enhanced preview: for the \cs{CA} entry, we can turn the enhanced
+% preview on with \DescribeMacro\pmpvCAOn\cmd{\pmpvCAOn} and off again with
+% \DescribeMacro\pmpvCAOff\cmd\pmpvCAOff.
+% \changes{v2.12}{2019/06/07}{Added finer control: \string\cs{pmpvCAOff} and
+% \string\cs{pmpvCAOn}}
+% \changes{v2.3}{2019/06/14}{Special definition of \string\cs{protect} to suppress
+% expansion within first argument of \string\cs{tops} within \string\cs{@eqCA}}
+% \begin{macrocode}
+\let\ef@CApv\ef@YES
+\def\pmpvCAOff{\let\ef@CApv\ef@NO\let\pmpvFmtCtrl\@gobble}
+\def\pmpvCAOn{\let\ef@CApv\ef@YES\let\pmpvFmtCtrl\relax}
\def\@eqCA#1{\let\unicodeStrSAVE\unicodeStr
\Hy@pdfstringtrue\let\unicodeStr\relax
\edef\x{#1}\let\unicodeStr\unicodeStrSAVE
@@ -1292,7 +1330,8 @@
% the caption. It should be something that can be typeset, if not use
% \cs{tops} to offer an alternative.
% \begin{macrocode}
- \edef\pmpvCA{#1}\def\eq@CA{#1}%
+ \let\x\protect\let\protect\noexpand@iii
+ \edef\pmpvCA{#1}\def\eq@CA{#1}\let\protect\x
\edef\ef@kvCA{/CA(\ef@uni@temp)}%
\makespecialJS
\fi
@@ -1711,6 +1750,14 @@
% the parsing mechanism. \cs{protectedKeys} is used in the \pkg{bargraph-js} package.
% \changes{v2.10}{2019/03/16}{Added \string\cs{protectedKeys}}
% \begin{macrocode}
+% \end{macrocode}
+% \DescribeMacro{\multigroupradios} Declares whether there are multiple sets of radio button groups
+% with the same names and values,
+% \begin{macrocode}
+\def\@eqmultigroupradios#1{\let\ef@multigroupradios\ef@YES}
+\let\ef@multigroupradios\ef@NO
+% \end{macrocode}
+% \begin{macrocode}
\def\ef@stop{\relax} %\def\ef@relax{\relax}
\def\protectedKeys#1#2{\ef@scratchtoks={}%
\@ifundefined{#1}{}{\PackageWarning{eforms}
@@ -2558,7 +2605,7 @@
% \begin{macrocode}
\ifx\ef@isBGtransparent\ef@YES
\let\ef@kvCA\@empty\fi
- \PMPV{\eq@CA}\fi
+ \ifx\ef@CApv\ef@YES\PMPV{\eq@CA}\fi\fi
\ef@djXPD#1%
}
% \end{macrocode}
@@ -2587,6 +2634,7 @@
% \end{macrocode}
% (2016/12/22) \cs{ef@djXPD} adjusts the size of the field dimensions, if \cs{makeXasPD} is true.
% \begin{macrocode}
+ \ef@lateWidgetOpts
\ifefpmpv\Hy@pdfstringfalse
% \end{macrocode}
% Having an enhanced preview generates several problems. Text fields are sometimes hidden and their values
@@ -2600,8 +2648,9 @@
% value now that we know this field is hidden.
% \begin{macrocode}
\let\eq@V\eq@VSAVE\else
- \PMPV{\pmpvV}\fi
+ \ifx\ef@Vpv\ef@YES\PMPV{\pmpvV}\fi\fi
\fi
+ \global\let\ef@lateWidgetOpts\relax
\ef@djXPD#1%
}
% \end{macrocode}
@@ -2968,7 +3017,52 @@
% \end{macrocode}
% Here is the field template for check boxes and radio button fields fields.
% \begin{macrocode}
-\def\common@RadioCheckCode{%
+\def\radio@parent{%
+ /DA (\eq@DA)%
+ /FT/Btn%
+ \eq@Ff%
+ \eq@TU%
+ \eq@DV%
+\expandafter\ifx\csname kids@\Fld@name\endcsname\relax\else
+ /Kids [\@nameuse{kids@\Fld@name}]%
+\fi
+\ifx\ef@multigroupradios\ef@YES
+\expandafter\ifx\csname radio@\Fld@name\endcsname\relax\else
+ /Opt[\@nameuse{radio@\Fld@name}]\fi\fi
+ /T(\Fld@name)%
+ \eq@V
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\common@RadioCode{%
+ /Subtype/Widget
+\ifuseNewRadios
+ \expandafter\ifx\csname radio@\Fld@name\endcsname\relax\else
+ /Parent \@nameuse{parent@\Fld@name}\fi
+\else
+ /T (\Fld@name)
+ /FT/Btn
+ \eq@Ff
+ \eq@F
+ \eq@TU
+ \eq@DV\eq@V
+ /DA (\eq@DA)
+\fi
+ /BS <<\eq@W\eq@S>>
+\ifx\eq@AP\@empty
+ /AP<< /N <<\eq@On<<>>>> >>
+ \eq@MK
+\else
+ \eq@AP
+\fi
+ \eq@AS
+% \eq@DV\eq@V
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\common@CheckCode{%
/Subtype/Widget
/T (\Fld@name)
/FT/Btn
@@ -3089,8 +3183,8 @@
\def\checkBoxDefaults{\F{\FPrint}\W{1}\S{S}\BC{0 0 0}}
% \end{macrocode}
% \begin{macrocode}
-\bgroup\obeyspaces
-\gdef\checkBox{\begingroup\global\let =\pdfSP
+\bgroup\obeyspaces%
+\gdef\checkBox{\begingroup\global\let =\pdfSP%
\ef@sanitize@toks\ef@checkbox}\egroup
% \end{macrocode}
% End the sanitizing group, and get the argument, pass them on to
@@ -3098,30 +3192,204 @@
% \begin{macrocode}
\newcommand{\ef@checkbox}[5][]{\endgroup
\mbox{\check@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\checkBoxDefaults\every@CheckBox}}}
+ \eq@Check@driver}{\checkBoxDefaults\every@CheckBox}}}
% \end{macrocode}
% \end{macro}
% \subsubsection{Radio Button}\label{radiobutton}
-% The basic command for creating radio button fields.
-% \begin{macrocode}
+% The basic command for creating radio button fields. As of the version dated 2019/06/14,
+% radio button code was re-written so they operate in certain non-conforming PDF readers. The old code,
+% which has proven to be reliable for many years. The old code
+% is available when \DescribeMacro\useNewRadiosOff\cmd{\useNewRadiosOff} is expanded. This is the default.
+%
+% When \DescribeMacro\useNewRadiosOn\cmd{\useNewRadiosOn} is expanded, the new code for radio buttons is used.
+% As a result, you need t\emph{hree compiles} to bring the AUX files up to date. The AUX files now
+% contain PDF object references to radio buttons. Because this new scheme degrades the experience
+% of creating radio buttons (heavy I/O usage), use this option if you and the consumers of your PDF\emph{ do not use}
+% Adobe PDF viewers (on a desktop/laptop).
+%
+% Use the default setting (\cmd{\useNewRadiosOff}) when you will view the PDF in AA/AR and save it; otherwise, if the PDF is to be viewed in non-conforming
+% PDF readers, never having been saved using AA/AR, use the \cmd{\useNewRadiosOn} setting.
+% \changes{v2.3}{2019/06/14}{Rewrote radio buttons so they work in non-conforming PDF readers}
+%
+% \medskip\noindent\textbf{Discussion.} The default scheme is to create the radio buttons \begin{quote}\footnotesize
+% \cs{radioButton\darg{\ameta{name}}\darg{\ameta{width}}\darg{\ameta{height}}} ...\\
+% ... \cs{radioButton\darg{\ameta{name}}\darg{\ameta{width}}\darg{\ameta{height}}}\end{quote} as separate widgets.
+% When loaded by AA/AR, these viewers do some internal arranging automatically; they build appearances, among other things. Saving
+% the PDF from AA/AR save this appearances within the PDF file, so that those using non-conforming PDF viewers will see
+% a correct representation of the fields. (The fields themselves may not be functional, depending on the PDF viewer.)
+%
+% \def\Odict{<<}\def\Cdict{>>}
+%
+% When \cs{useNewRadiosOn} is expanded, instead of creating separate widgets, we create a radio button field,
+%\begin{quote}\offinterlineskip\ttfamily\obeyspaces\obeylines
+%14 0 obj
+%\Odict\space/DA (/ZaDb 9 Tf 0 g)/FT/Btn/Ff 32768/DV/Three
+%/Kids [15 0 R 16 0 R 17 0 R ]/T(Group1)/V/Two \Cdict
+%endobj
+%\end{quote}
+% \texttt{/FT} and \texttt{Ff} entries declare this field to be a radio button field. Note that
+% the object has a \texttt{/Kids} entry that references the individual widgets. The field contains
+% the default value (\texttt{/DV}), if any, and the initial value (\texttt{/V}), if any.
+% A typical widget referenced by the \texttt{/Kids} entry is,
+%\begin{quote}\offinterlineskip\ttfamily\obeyspaces\obeylines
+%15 0 obj
+%\Odict
+%/Type /Annot
+%/Rect [172.716 654.735 185.716 667.735]
+%/Subtype/Widget /Parent 14 0 R/BS \Odict\space/W 1/S/S\Cdict
+%/AP\Odict\space/N\Odict/One\Odict\Cdict\space\Cdict\space\Cdict /MK \Odict\space/BC [0 0 0]/CA(l) \Cdict
+%/AS/Off
+%\Cdict
+%endobj
+%\end{quote}
+%This is a widget annotation with \texttt{/Rect} entry, as well as other entries. The \cs{/AS} key determines
+%whether this widget is `on' or not. This one is off. Some of the non-conforming PDF viewers parse this
+%structure better than the old scheme.
+%
+%The next six lines are new (2019/06/14), to support the new radio button structure.
+% \begin{macrocode}
+\newif\ifuseNewRadios \useNewRadiosfalse
+\def\useNewRadiosOn{\useNewRadiostrue}
+\def\useNewRadiosOff{\useNewRadiosfalse}
+\let\ef@OptArray\@empty
+\let\ef@KidsArray\@empty
+\let\ef@lateWidgetOpts\relax
\def\annot@type@radio{radiobtn}
+% \end{macrocode}
+% You can create one or more copies of a group of radio buttons, whether more copies of a
+% group is not known until the end of the document, so we must set some properties at
+% the end of the document. This command stores information as a function of the field name
+% for later use at the end of the document.
+% \begin{macrocode}
+\def\ef@NewRadiosLateOpts{%
+% \end{macrocode}
+% We do nothing if the new scheme is not being used.
+% \begin{macrocode}
+ \ifuseNewRadios
+% \end{macrocode}
+% If this is a multi-group radio button field that work independently, we adjust the `on' value, as in this case,
+% the `on' value is referenced by an index, 0, 1, 2,...
+% \begin{macrocode}
+ \@nameuse{multigroup@\Fld@name}%
+ \ifx\ef@multigroupradios\ef@YES
+ \ifpdfmarkup
+ \def\eq@On{(\@nameuse{radioindex@\Fld@name}) cvn }\else
+ \def\eq@On{/\@nameuse{radioindex@\Fld@name}}\fi
+ \expandafter\ifx\csname OnVal@\Fld@name\endcsname\relax
+ \@eqAS{Off}\else % today
+ \ifnum\@nameuse{OnVal@\Fld@name}=%
+ \@nameuse{radioindex@\Fld@name}\relax
+ \@eqAS{\@nameuse{radioindex@\Fld@name}}\else\@eqAS{Off}\fi\fi
+ \else
+ \edef\x{\@nameuse{OnVal@\Fld@name}}%
+ \ifx\x\ef@thisChoice\@eqAS{\@nameuse{OnVal@\Fld@name}}\else
+ \@eqAS{Off}\fi
+ \fi
+% \end{macrocode}
+% If these are groups of radio button fields that light up in unison, we
+% take to get the \cs{/AS} entry right.
+% \begin{macrocode}
+ \@nameuse{uniradios@\Fld@name}%
+ \ifx\isRadiosInUnison\ef@YES
+ \edef\x{\@nameuse{value@\Fld@name}}%
+ \ifx\x\ef@thisChoice\expandafter\@eqAS
+ \expandafter{\ef@thisChoice}\else\@eqAS{Off}\fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% We track the widget belonging to a given field name (\cs{Fld@name}), these radio
+% indices are used when we have multiple groups if independent radios.
+% \begin{macrocode}
+\def\ef@advanceRadioIndex#1{\bgroup
+ \@tempcnta\@nameuse{radioindex@#1}\relax
+ \advance\@tempcnta\@ne
+ \csarg\xdef{radioindex@#1}{\the\@tempcnta}\egroup}
+% \end{macrocode}
+% Some utility commands that are written to the AUX file.
+% \begin{macrocode}
+\def\radioChoices#1{\csarg\xdef{radio@#1}}
+\def\radioKids#1{\csarg\xdef{kids@#1}}
+% \end{macrocode}
+% A warning message when not all the PDF objects have
+% been resolved. We try to emit only one message per
+% compile.
+% \begin{macrocode}
+\def\ef@radioWarning{\PackageWarningNoLine{eforms}
+ {Not all PDF object references have\MessageBreak
+ been resolved, keep compiling}}
+% \end{macrocode}
+% The command that detects whether any object reference is not defined.
+% \begin{macrocode}
+\def\ef@@radioWarning{%
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{kids@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{radio@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{parent@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+}
+% \end{macrocode}
+% Finally, we arrive at the low-level radio button command, where
+% changes for the 2019/06/14 version have been made.
+% \begin{macrocode}
\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
\let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@radio}%
- \pdfstringdef\Fld@name{#2}\@eqAS{Off}\dl@paramlocal
+ \pdfstringdef\Fld@name{#2}%
+% \end{macrocode}
+% Additional code for the new scheme.
+% \begin{macrocode}
+ \ifuseNewRadios
+ \ef@@radioWarning
+ \@ifundefined{rad@\Fld@name}{\let\isRadioParent\ef@YES
+ \global\let\ef@OptArray\@empty
+ \global\let\ef@KidsArray\@empty
+ \csarg\gdef{radioindex@\Fld@name}{-1}\expandafter
+ \global\csarg\let{rad@\Fld@name}\@empty}%
+ {\let\isRadioParent\ef@NO}%
+ \edef\ef@OptArray{\@nameuse{rad@\Fld@name}}%
+ \g@addto@macro\ef@OptArray{(#5)}% opt
+ \csarg\xdef{rad@\Fld@name}{\ef@OptArray}%
+ \ifx\isRadioParent\ef@YES
+ \def\y{\expandafter\string\noexpand}%
+ \edef\x{\noexpand\immediate\noexpand\write\noexpand\@auxout
+ {\y\radioChoices{\Fld@name}{\noexpand
+ \@nameuse{rad@\Fld@name}}}}%
+ \def\z{\expandafter\AtEndDocument\expandafter{\x}}\z
+ \edef\x{\noexpand\immediate\noexpand\write\noexpand\@auxout
+ {\y\radioKids{\Fld@name}{\noexpand
+ \@nameuse{kid@\Fld@name}}}}%
+ \def\z{\expandafter\AtEndDocument\expandafter{\x}}\z
+ \fi
+ \ef@advanceRadioIndex{\Fld@name}%
+ \@nameuse{multigroup@\Fld@name}%
+ \fi
+ \@eqAS{Off}\dl@paramlocal
\def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
\else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
\def\eq@DV{/DV/##1}\fi\fi}%
- \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
-% \end{macrocode}
-% Provide enhanced preview for radio buttons
-% \begin{macrocode}
- \let\eq@V\@empty\else\def\pmpvV{\pmpv@mrk}\ifpdfmarkup
- \def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi
- \ifefpmpv\let\eq@V\@empty\fi}%
+ \def\@eqV##1{\Hy@pdfstringfalse\edef\pmpvV{##1}%
+ \Hy@pdfstringtrue
+ \edef\eq@arg{##1}%
+ \if$\eq@arg$\else
+ \ifpdfmarkup
+ \edef\eq@V{/V(##1) cvn }\else
+ \edef\eq@V{/V/##1}\fi
+ \@eqAS{##1}\fi
+ \if$\eq@arg$%
+ \else
+ \csarg\xdef{OnVal@\Fld@name}{##1}\fi
+ \ifefpmpv
+ \gdef\ef@lateWidgetOpts{\if$\pmpvV$\else\def\pmpvV{\pmpv@mrk}\fi}%
+ \let\eq@V\@empty\else\global\let\ef@lateWidgetOpts\relax\fi
+ }%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
+ \def\ef@thisChoice{#5}%
\def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
@@ -3150,7 +3418,7 @@
% \begin{macrocode}
\newcommand{\ef@radiobutton}[5][]{\endgroup
\mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}}
+ \eq@Radio@driver}{\radioButtonDefaults\every@RadioButton}}}
% \end{macrocode}
% \end{macro}
%
@@ -4355,6 +4623,18 @@
\def\noPeek#1#2{\literalps@out{%
\AEB@psMrk{ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
% \end{macrocode}
+% We create an object definition for each field, there is an option for
+% the author to specify a objdef name, and for a calculation field, this
+% is done automatically.
+% \begin{macrocode}
+\def\ef@getobjdef{%
+ \HyField@AdvanceAnnotCount
+ \ifisCalculate\edef\eq@objdefName{\Fld@name}\else
+ \ifx\eq@objdef\@empty
+ \edef\eq@objdefName{\annot@type\HyField@TheAnnotCount}\fi\fi
+ \edef\eq@objdef{/_objdef \string{\eq@objdefName\string}}%
+}
+% \end{macrocode}
% Driver dependent code (distiller) for choice fields, list and combo.
% \begin{macrocode}
\def\eq@choice@driver
@@ -4364,13 +4644,14 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
- \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@choiceCode
- /ANN pdfmark
- \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@choiceCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
@@ -4384,38 +4665,113 @@
\ifx\@vertRotate\ef@One\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@pushButtonCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+ \common@pushButtonCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
% \end{macrocode}
% Driver dependent code (distiller) for radio and button fields.
% \begin{macrocode}
-\def\eq@RadioCheck@driver
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2}}
+\def\ef@radioData#1#2{\immediate
+ \write\@mainaux{\string\parentRef{#1}{#2}}}
+\def\eq@Radio@driver
{%
\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
+% \end{macrocode}
+% Additional code version dated 2019/06/14 or later.
+% \begin{macrocode}
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \literalps@out{\AEB@psMrk
+ /_objdef{parent@rad\HyField@TheAnnotCount}
+ /type/dict/OBJ pdfmark
+ \AEB@psMrk{parent@rad\HyField@TheAnnotCount}
+ << \radio@parent\space >>/PUT pdfmark
+ }\ef@radioData{\Fld@name}{{parent@rad\HyField@TheAnnotCount}}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+ \common@RadioCode
+ /ANN pdfmark
+ \ifuseNewRadios\else
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \fi
+ }\to@insertStrucTabOrder{Form}%
+% \end{macrocode}
+% Save the object reference to this kid
+% \begin{macrocode}
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{{\eq@objdefName}\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+\def\eq@Check@driver
+{%
+ \Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{\AEB@psMrk
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@CheckCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver
{%
+ \ef@getobjdef
\pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\endgroup
+ \common@CheckCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\endgroup
\dl@restorespcs
}
% \end{macrocode}
@@ -4426,13 +4782,14 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
- \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@TextFieldCode
- /ANN pdfmark
- \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@TextFieldCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
@@ -4445,11 +4802,13 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@SigFieldCode
- /ANN pdfmark
+ \common@SigFieldCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
@@ -4561,10 +4920,68 @@
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
\hbox{\pdfstartlink user{\common@pushButtonCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
-\def\eq@RadioCheck@driver
+% \end{macrocode}
+% \begin{macrocode}
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2 0 R}}
+\def\ef@radioData#1#2{\expandafter
+ \HyField@@AddToFields\expandafter{#2}%
+ \immediate\write\@mainaux{\string\parentRef{#1}{#2}}}
+\def\eq@Radio@driver{\Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+% \end{macrocode}
+% Additional code version dated 2019/06/14 or later.
+% \begin{macrocode}
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \immediate\pdfobj{<< \radio@parent\space >>}%
+ \ef@radioData{\Fld@name}{\the\pdflastobj}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \hbox{\pdfstartlink user{\common@RadioCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+% \end{macrocode}
+% Save the object reference to this kid
+% \begin{macrocode}
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{\the\pdflastlink\space 0 R\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \else
+ \HyField@AddToFields
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+\def\eq@Check@driver
{%
\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
@@ -4572,16 +4989,17 @@
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \hbox{\pdfstartlink user{\common@RadioCheckCode}%
+ \hbox{\pdfstartlink user{\common@CheckCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdfstartlink user{\common@RadioCheckCode}%
+ \pdfstartlink user{\common@CheckCode}%
\makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
- \pdfendlink\endgroup
+ \pdfendlink\HyField@AddToFields\endgroup
\dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
@@ -4603,6 +5021,7 @@
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
\leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
@@ -4673,24 +5092,99 @@
\endgroup
\dl@restorespcs
}
-\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
+% \end{macrocode}
+% \begin{macrocode}
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2}}
+\def\ef@radioData#1#2{%\expandafter
+% \HyField@@AddToFields\expandafter{#2}%
+ \immediate\write\@mainaux{\string\parentRef{#1}{#2}}}
+% \end{macrocode}
+% \begin{macrocode}
+\def\eq@Radio@driver{\ef@adjHWxetex\Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+% \end{macrocode}
+% Additional code version dated 2019/06/14 or later.
+% \begin{macrocode}
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \immediate\@pdfm@mark{obj @parentobj\HyField@TheAnnotCount
+ << \radio@parent\space >>}%
+ \ef@radioData{\Fld@name}{@parentobj\HyField@TheAnnotCount}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \HyField@AdvanceAnnotCount
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \ifx\annot@type\annot@type@checkbox\def\btn@type{check}\else
+ \def\btn@type{radio}\fi
+ \@pdfm@mark{ann @\btn@type\HyField@TheAnnotCount\space\dvipdfm@setdim
+ <<\common@RadioCode>>}\unhbox\pdfm@box\relax%
+% \end{macrocode}
+% Save the object reference to this kid
+% \begin{macrocode}
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{@parentobj\HyField@TheAnnotCount\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \else
+ \@pdfm@mark{put @afields @\btn@type\HyField@TheAnnotCount}%
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+% \end{macrocode}
+% \begin{macrocode}
+\def\eq@Check@driver{\ef@adjHWxetex\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \HyField@AdvanceAnnotCount
\setbox\pdfm@box=%
\hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann \dvipdfm@setdim
- <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
+ \ifx\annot@type\annot@type@checkbox\def\btn@type{check}\else
+ \def\btn@type{radio}\fi
+ \@pdfm@mark{ann @\btn@type\HyField@TheAnnotCount\space\dvipdfm@setdim
+ <<\common@CheckCode>>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\btn@type\HyField@TheAnnotCount}%
\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver{%
- \setbox\pdfm@box=%
- \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \@pdfm@mark{ann \dvipdfm@setdim<<\common@RadioCheckCode>>}%
- \unhbox\pdfm@box\relax\endgroup
+ \HyField@AdvanceAnnotCount
+ \setbox\pdfm@box=%
+ \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
+ \@pdfm@mark{ann @check\HyField@TheAnnotCount\space
+ \dvipdfm@setdim<<\common@CheckCode>>}%
+ \unhbox\pdfm@box\relax
+ \@pdfm@mark{put @afields @check\HyField@TheAnnotCount}%
+ \endgroup
}
\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
@@ -4715,6 +5209,7 @@
\hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
<< \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
\endgroup
\dl@restorespcs
}
@@ -4788,6 +5283,7 @@ ef_setCalcOrder(_EfCalcOrder);
% \begin{macrocode}
%<*package>
\inputCalcOrderJS
+\catcode`\$=\ef@CatChngs
%</package>
% \end{macrocode}
% \Finale
diff --git a/texmf-dist/source/latex/acrotex/exerquiz.dtx b/texmf-dist/source/latex/acrotex/exerquiz.dtx
index 5f7dc930..b2f61b78 100644
--- a/texmf-dist/source/latex/acrotex/exerquiz.dtx
+++ b/texmf-dist/source/latex/acrotex/exerquiz.dtx
@@ -4,7 +4,7 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -22,7 +22,7 @@
%<randomize>\ProvidesFile{aebrandom.def}
%<sumrytbls>\ProvidesFile{aebsumrytbls.def}
%<template>\ProvidesFile{template.def}
-%<package|driver|aebjs|eqexam|randomize|sumrytbls|template> [2019/02/11 v8.2.9 %
+%<package|driver|aebjs|eqexam|randomize|sumrytbls|template> [2019/08/13 v8.3 %
%<package> Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)]
%<driver> Exerquiz documentation driver file (dps)]
%<aebjs> Exerquiz document level JavaScript (dps)]
@@ -2415,7 +2415,7 @@
% yet to be determined, there are problems when using the \texttt{fortextbook}
% option when hiding solutions.
%}
-%\changes{v8.2.9}{2019/02/11}{\string\let\eqSavedComment\string\dlcomment, \string\dlcomment\space
+%\changes{v8.2.9}{2019/02/11}{\string\cs{eqSavedComment}\string\cs{dlcomment}, \string\cs{dlcomment}\space
%is not defined in \string\pkg{insdljs}}
% \begin{macrocode}
\let\eqSavedComment\dlcomment
@@ -3927,27 +3927,35 @@
%</package|eqexam>
%<*package>
\def\sq@IDTxtField{\makebox[0pt][l]{\textField[\autoCenter{n}\BC{}\BG{}
- \S{S}\textSize{0}\Ff{\FfReadOnly}
- \AA{\AAFormat{%
- 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}}%
+ \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{}
\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");
+ if (aQuizzesInDoc.indexOf("\oField"))
+ aQuizzesInDoc.push("\oField");\r
+% \end{macrocode}
+% (2019/06/22) Added in declaration of quiz object.
+%\changes{v8.2.12}{2019/06/22}{Added declaration of quiz object}
+% \begin{macrocode}
+ if (typeof \oField=="undefined")\r\t
+ var \oField=new Object;\r
}}]{qzID\oField}{2bp}{2bp}}}
%</package>
%<*package|eqexam>
@@ -4955,7 +4963,7 @@
\mbox{\check@@Box{#1\V{Yes}\DV{Yes}}%
{rbmarkup.\Fld@name}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}}%
% \end{macrocode}
% \end{macro}
@@ -5193,7 +5201,7 @@
% \begin{macrocode}
\def\DeclareQuiz#1{\edef\oField{#1}%
\edef\thisQuiz{#1}\edef\curr@quiz{#1}%
- \edef\currQuiz{#1}\edef\curr@quiz{#1}}
+ \edef\currQuiz{#1}}
\let\Quiz\DeclareQuiz
% \end{macrocode}
% \end{macro}
@@ -5957,7 +5965,8 @@
\def\@@Ans@sq@f@Defaults
{%
\BC{0 0 0}\Ff{\FfNoToggleToOff}\W{1}
- \F{\FPrint}\textSize{12}\textColor{0 g}
+% \F{\FPrint}
+ \textSize{12}\textColor{0 g}
}
% \end{macrocode}
% For short quizzes, refine the type of responses: turn off the alert
@@ -6072,16 +6081,13 @@
\Ans@sq@f@driver
%</eqexam>
%<*package>
-% \end{macrocode}
-%\changes{v6.7d}{2013/05/27}{new \cs{rbf@Opts} option.}
-% \begin{macrocode}
\mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
- {mc.\oField.\thequestionno}%
- {\RadioFieldSize}% 11/16/05 changed from \oField to mc.\oField
- {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
- \every@sqRadioButton}}%
+ {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}%
%</package>
%<*package|eqexam>
@@ -6170,7 +6176,7 @@
{mc.\oField.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}
{\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\@@Ans@ck@sq@f@Defaults\Ans@ck@sq@f@Actions\every@CheckBox
\every@sqCheckBox}}%
\Ans@proofing{\RadioFieldSize}%
@@ -6607,7 +6613,7 @@ if (_bOK) {\jsR\jsT
\mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
{mc.\curr@quiz.\thequestionno}%
{\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\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
@@ -6642,7 +6648,7 @@ if (_bOK) {\jsR\jsT
\makebox[0pt][r]{\check@@Box{}%
{mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
\every@qCheckBox\late@options}}%
\fi
@@ -6719,7 +6725,7 @@ if (_bOK) {\jsR\jsT
\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@RadioCheck@driver}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@Check@driver}%
{\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton
\every@qckCheckbox}}%
\ifnocorrections\else
@@ -6751,7 +6757,7 @@ if (_bOK) {\jsR\jsT
\makebox[0pt][r]{\check@@Box{}%
{mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
% \end{macrocode}
% (2012/12/22) Replace \cs{every@qRadioButton} with \cs{every@qCheckBox}.
@@ -8482,7 +8488,7 @@ if (!isQuizInitialized("@currQuiz")) {
% \par\medskip
% \noindent Usage:
%\begin{verbatim}
-% \RespBoxTxt[#1]#2[#3]#4[<num1>]{<word1>}...[<num_n>]{<word_n>}
+% \RespBoxTxtPC[#1]#2[#3]#4[<num1>]{<word1>}...[<num_n>]{<word_n>}
%\end{verbatim}
% \begin{description}
% \item[\ttfamily\#1 :] Optional parameter used to modify the appearance of the
@@ -8644,7 +8650,17 @@ if (!isQuizInitialized("@currQuiz")) {
% essay-type questions. This question will not be graded by JavaScript,
% of course; ideally, the response will be submitted to a CGI for storage
% in a database. The instructor can later bring up the student's response
-% and assign a grade.
+% and assign a grade. Syntax:
+%\begin{quote}\ttfamily
+% \string\RespBoxEssay[\ameta{opts}][\ameta{dest}]\darg{\ameta{wd}}\darg{\ameta{ht}}\\[3pt]
+% \string\RespBoxEssay[\ameta{opts}]*\darg{\ameta{wd}}\darg{\ameta{ht}}
+% \end{quote}
+% The second argument declares the problem has a \env{solution} file; we define the target
+% of the solution twh ways: an explicite \ameta{dest} string, or an star (\texttt*), where
+% the destination is automatically named. If you use \ameta{dest}, you must have
+% a frist optional, even if its only \texttt{[]}, to correctly parse this construction.
+% \changes{v8.3}{2019/08/13}{\string\env{solution} environment now defined for
+% \string\cs{RespBoxEssay}}
% \begin{macrocode}
\def\RespBoxEssayDefaults
{%
@@ -8656,10 +8672,10 @@ if (!isQuizInitialized("@currQuiz")) {
\AAKeystroke{%
if(event.willCommit){\jsR\jsT
RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT
- RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
+ RecordProblemType("\eqQT",\thequestionno);\jsR %\jsT
}\jsR
if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT
- @eqObjAlert\space eqAppAlert(%
+ \eqObjAlert\space eqAppAlert(%
InitMsg("\bqlabelISO"),3);\jsR\jsT
event.rc = false;\jsR
}%
@@ -8667,14 +8683,29 @@ if (!isQuizInitialized("@currQuiz")) {
\fi
}
}
-\newcommand\RespBoxEssay[3][]
+% \RespBoxEssay[opt][dest]|*{wd}{ht}
+\newcommand\RespBoxEssay[1][]{\def\rbe@rgi{#1}\RespBoxEssay@i}
+\def\RespBoxEssay@i{\@ifnextchar[%]
+ {\RespBoxEssay@ii}
+ {\@ifstar{\RespBoxEssay@ii[\curr@quiz.\thequestionno]}}%
+ {\RespBoxEssay@ii[]}%
+}
+% \RespBoxEssay#1[dest]{wd}{ht}
+\newcommand\RespBoxEssay@ii[3][]
{%
\smallskip\addtocounter{eqpointvalue}{\eqPTs}%
+% \end{macrocode}
+% (2019/06/26) Added \cs{eq@AddProbToQzQuesList} for \cs{RespBoxEssay}
+% \changes{v8.2.13}{2019/06/26}{Added \string\cs{eq@AddProbToQzQuesList} for \string\cs{RespBoxEssay}}
+% \begin{macrocode}
+ \eq@AddProbToQzQuesList
\stepcounter{questionno}%
- \mbox{\text@@Field{#1}{essay.\curr@quiz.\thequestionno}{#2}{#3}%
+ \xdef\@qzsolndest{#1}%
\edef\eqtmp{\aPointType}\xdef\aPointType{\eqtmp,[\eqPTs,"essay"]}%
- {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxEssayActions
- \eq@TextField}{\RespBoxEssayDefaults\every@eqTextField}}%
+ \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}}%
}
% \end{macrocode}
% \end{macro}
@@ -9192,8 +9223,13 @@ if (!isQuizInitialized("@currQuiz")) {
\let\eqQzQuesList\@empty
\def\eq@AddProbToQzQuesList{%
\edef\eq@tmpExp{\noexpand\g@addto@macro%
- \noexpand\eqQzQuesList{%
- \noexpand\@eqListExp{\@currentQues}{\thepage}}}%
+% \end{macrocode}
+% Cosmetic change replaced \cs{noexpand} with \cs{string}.
+% \changes{v8.2.15}{2019/08/06}{replace \string\cs{noexpand} with \string\cs{string}}
+% \begin{macrocode}
+ \noexpand\eqQzQuesList{\string
+ \@eqListExp{\@currentQues}{\the\c@page}}}%
+% \@eqListExp{\@currentQues}{\thepage}}}%
% \end{macrocode}
% We add to the list only if we are not within a \texttt{mathGrp} environment.
% \begin{macrocode}
@@ -9346,22 +9382,22 @@ if (!isQuizInitialized("@currQuiz")) {
\edef\eq@p{\the\@tempcnta}%
\@tempcnta=\eq@n
\advance\@tempcnta-\eq@p\relax
- \ifnum\@tempcnta=0
- \@tempcntb=\eq@q \advance\@tempcntb1
+ \ifnum\@tempcnta=\z@
+ \@tempcntb=\eq@q \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\eq@q\relax
\xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=1
- \@tempcntb=\eq@q \advance\@tempcntb1
+ \else\ifnum\@tempcnta=\@ne
+ \@tempcntb=\eq@q \advance\@tempcntb\@ne
\edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1\relax
+ \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\eq@q\relax
\xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=2
+ \else\ifnum\@tempcnta=2\relax
\@tempcntb=\eq@q \advance\@tempcntb1
\edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1
+ \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\nB@lCols
\xdef\@beginThrdCol{\the\@tempcntb}%
@@ -9397,8 +9433,7 @@ if (!isQuizInitialized("@currQuiz")) {
% \begin{macrocode}
\def\eq@begintab{%
\begin{tabular}[t]{lcc}\sumryTblQ&\sumryTblR&\sumryTblP\\\sthline
- {\Large\strut}%
-}
+ {\Large\strut}}
% \end{macrocode}
% \DescribeMacro{\sthline}\cmd{\sthline}
% is a user hook to change the appearance of the horizontal line, such
@@ -9512,12 +9547,10 @@ if (!isQuizInitialized("@currQuiz")) {
% total number of questions.
% \begin{macrocode}
\def\writeProListAux{%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz QzQuesList\string\endcsname
- {\eqQzQuesList}}%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz nQuestions\string\endcsname
- {\thequestionno}}%
+ \eq@IWAuxOut{\string
+ \csarg\string\gdef{\currQuiz QzQuesList}{\eqQzQuesList}}%
+ \eq@IWAuxOut{\string
+ \csarg\string\gdef{\currQuiz nQuestions}{\thequestionno}}%
}
% \end{macrocode}
% \end{macro}
@@ -12633,6 +12666,11 @@ partialColor:wrongColor;
// find the next non-null field
var g=this.getField(qtfield+"SanityCheckPts."+i);
var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+% \end{macrocode}
+% (2019/06/30) if negative points are not allowed, make qpts zero if necessary
+% \changes{v8.2.14}{2019/06/30}{Added a condition if negPointsAllowed}
+% \begin{macrocode}
+ if ( !negPointsAllowed && (qpts < 0) ) qpts=0;
var thesePts= qpts + (( qpts == 1 )?%
" \eqptLabel":" \eqptsLabel");
g.value = thesePts;
@@ -12648,6 +12686,7 @@ partialColor:wrongColor;
// find the next non-null field
var g=this.getField(qtfield+"SanityCheckOOPts."+i);
var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ if ( !negPointsAllowed && (qpts < 0) ) qpts=0;
var ptValue = oQName.PtValues[i];
var probPts = ptValue + (( ptValue == 1 )?%
" \eqptLabel":" \eqptsLabel");
diff --git a/texmf-dist/source/latex/acrotex/insdljs.dtx b/texmf-dist/source/latex/acrotex/insdljs.dtx
index 204a4b28..d6bc80b5 100644
--- a/texmf-dist/source/latex/acrotex/insdljs.dtx
+++ b/texmf-dist/source/latex/acrotex/insdljs.dtx
@@ -4,7 +4,7 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2018 D. P. Story %%
+%% Copyright (C) 2001-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -16,7 +16,7 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{insdljs}
-%<package> [2019/03/16 v2.4.2 Insert Document Level JavaScripts (dps)]
+%<package> [2019/08/06 v2.4.6 Insert Document Level JavaScripts (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}
@@ -475,14 +475,22 @@
\DeclareOptionX{debug}{\let\dljs@debug\dl@YES}
\let\dljs@debug\dl@NO
% \end{macrocode}
-% \IndexOpt{execJS}
-% If the execution of JavaScript code is permitted following distillation. The default is no.
-% \begin{macrocode}
-\DeclareOptionX{execJS}{\let\execjs\dl@YES}
-\let\execjs\dl@NO
+% If the option \IndexOpt{execJS}\opt{execJS} is taken, then the JavaScript code for any \env{execJS} environment
+% will be executed following PDF creation (\app{Acrobat} required). The default is no.
+% More recently (2019/08/06) \DescribeMacro\execJSOn\cs{execJSOn} and \DescribeMacro\execJSOff\cs{execJSOff}
+% were added to turn on (or off) execution of JS in this way. Useful when \pkg{insdljs} is loaded by other
+% packages and you cannot access the optional arguments of \cs{usepackage}. These commands are only effective
+% in the preamble.
+% \changes{v2.4.6}{2019/08/06}{Added \string\cs{execJSOn} and \string\cs{execJSOff}}
+% \begin{macrocode}
+\DeclareOptionX{execJS}{\execJSOn}
+\def\execJSOn{\let\execjs\dl@YES}
+\def\execJSOff{\let\execjs\dl@NO}
+\execJSOff
\DeclareOptionX{nopro}{\let\dl@gopro\dl@NO}
\let\dl@gopro\dl@YES
% \end{macrocode}
+% We set the driver, according to the following algorithm.
% \begin{macrocode}
\@ifpackageloaded{web}{%
\ExecuteOptionsX{\eq@driver@name}%
@@ -497,7 +505,7 @@
}%
}
% \end{macrocode}
-% \IndexOpt{reqjs}
+% \leavevmode\IndexOpt{reqjs}
% Beginning with PDF 1.7, a document can specify requirements, here we declare
% the document uses JavaScripts. The option \texttt{reqjs} is taken by default,
% that is, JavaScripts are required for this document
@@ -519,14 +527,18 @@
% function is the same, but begins with `\texttt{EF}'. For example, the keystroke function
% \texttt{AFNumber\_Keystroke} is also known under the name of \texttt{EFNumber\_Keystroke}.
% See \hyperref[s:AltAdbFncs]{Section~\ref*{s:AltAdbFncs}} for the list of functions.
+% \changes{v2.4.6}{2019/08/06}{Added switch \string\cs{usedAdbFuncs} to help detect
+% the usealtadobe option}
% \begin{macrocode}
-\DeclareOptionX{usealtadobe}{\def\inputAltAdbFncs{%
- \InputIfFileExists{altadbfncs.def}%
- {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}%
+\DeclareOptionX{usealtadobe}{\let\usedAdbFuncs\dl@YES
+ \def\inputAltAdbFncs{\InputIfFileExists{altadbfncs.def}
+ {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}
{\PackageWarning{insdljs}{Cannot find altadbfncs.def.\MessageBreak
Reinstall or refresh your file name database.}}}}
+\let\usedAdbFuncs\dl@NO
\let\inputAltAdbFncs\relax
-% \paragraph*{Process the package options}
+% \end{macrocode}
+% \textbf{Process the package options}
% \begin{macrocode}
\ProcessOptionsX
% \end{macrocode}
@@ -634,7 +646,8 @@
% do not. The \textbf{\textsf{Requirements}} dictionary goes in the document \textbf{\textsf{Catalog}}.
% \changes{v2.2d}{2016/04/06}{Code to support \texttt{reqjs} and \texttt{{\string\EXPT}reqjs} options.}
% \begin{macrocode}
-\def\AEB@psMrk{[\space}
+\def\AEB@psMrk{[%]
+ \space}
\ifx\dl@reqJS\dl@YES
\def\dl@@reqJS{/Type/Requirement/S/EnableJavaScripts}
\ifpdf\pdfcatalog{\dl@@reqJS}\else
@@ -1201,9 +1214,9 @@
\global\let\aebpFA\dl@YES
\let\@pdfstartview\@empty
\else
- \edef\aebp@dljstmp{\aebp@rightDelimiters}%
- \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
- \g@addto@macro\aebpopentoks{/Next << #1 }%
+ \edef\aebp@dljstmp{\aebp@rightDelimiters}%
+ \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
+ \g@addto@macro\aebpopentoks{/Next << #1 }%
\fi
}
\def\dljs@OpenActions{/OpenAction \addActionObj}
@@ -1680,10 +1693,9 @@
% \textsf{aeb\_pro}.
% \begin{macrocode}
\let\DLspecialDefs\@empty
-\def\fdfAfterheader
-{%
+\def\fdfAfterheader#1{%
\iwvo{\string\begingroup\string\efdlspecials}
- \iwvo{\string\DLspecialDefs}
+ \iwvo{\string\DLspecialDefs\string#1}
\iwvo{\string\isdljstrue}
\iwvo{\string\makeatletter}
\iwvo{\string\immediate\string\openout\string
@@ -1710,13 +1722,25 @@
}
% \end{macrocode}
% \begin{environment}{execJS}
-% The parameter \texttt{\#1} is the base name for this environment.
-% The base name will be used to create
-% a filename to save the \texttt{.fdf} file under.
-% \begin{macrocode}
-\newenvironment{execJS}[1]
+% \hskip-\marginparsep\texttt{[\ameta{\cs{cmd}}]\darg{\ameta{base-name}}}
+% The parameter \texttt{\#2} (\ameta{base-name}) is the base name for this environment.
+% The base name will be used to create a filename to save the \texttt{.fdf} file under.
+% \begin{macrocode}
+% \end{macrocode}
+% Added \DescribeMacro\restoreDLspecialsDefs\cs{restoreDLspecialsDefs} to restore
+% \DescribeMacro\DLspecialDefs\cs{DLspecialDefs} to its default of \cs{@empty}.
+% \changes{v2.4.4}{2019/07/14}{Added \string\cs{restoreDLspecialsDefs}}
+% The \env{execJS} environment now has an optional argument, the optional argument must be
+% a command (\ameta{\cs{cmd}}) that is then passed on to \cs{fdfAfterheader}, which then writes it to
+% \cs{dljsBase.djs}. The purpose is to make special definitions at the time the script
+% is expanded.
+% \changes{v2.4.5}{2019/07/15}{\string\env{execJS} now has an optional argument}
+% \begin{macrocode}
+\def\restoreDLspecialDefs{\let\DLspecialDefs\@empty}
+\newenvironment{execJS}[2][\relax]
{%
- \gdef\detectdljs{\string_#1}\gdef\dljsBase{#1}%
+ \def\x{#1}\ifx\x\@empty\def\x{\relax}\fi
+ \gdef\detectdljs{\string_#2}\gdef\dljsBase{#2}%
\global\dljsobjtoks={}%
\expandafter\gdef\csname dljs\dljsBase\endcsname{}%
\ifx\importdljs\dl@YES\ifx\execjs\dl@YES
@@ -1728,12 +1752,17 @@
\fi\fi
\fi\fi
\immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \fdfAfterheader
+ \expandafter\fdfAfterheader\expandafter{\x}%
\js@verbatimwrite
}{%
\fdfendstreamobj
\endjs@verbatimwrite
\fdftrailer
+% \end{macrocode}
+% Added \cs{restoreDLspecialsDefs} to restore \cs{DLspecialDefs} to its default of \cs{@empty}.
+% \changes{v2.4.4}{2019/07/14}{Added \string\cs{restoreDLspecialsDefs}}
+% \begin{macrocode}
+ \iwvo{\string\restoreDLspecialDefs}%
\closejs@verbatim@out
\expandafter\xdef\csname\dljsBase OBJ\endcsname{\the\dljsobjtoks}%
\edef\@dljstmp{\noexpand\AtBeginDocument{%
@@ -1840,7 +1869,7 @@
\edef\csname\p@r@m\the\c@dljs@cnt\endcsname{\the\JStoks}}}
% \end{macrocode}
% Beginning with \pkg{insdljs} dated 2019/03/16, we solve an age-old problem with \app{dvips}: This problem
-% is that is wraps code around to th next line, according to some unknown algorithm. Normally this is not
+% is that is wraps code around to the next line, according to some unknown algorithm. Normally this is not
% a problem, but occassionally it will wrap some JavaScript code that breaks the code. Solve this problem,
% we make the space character active, and replace it with \cs{pdfSP} (\cs{040}), which is octal for the space
% character. Now there are no free spaces for \app{dvips} to break the line at in the PS file. The feature
@@ -1850,10 +1879,21 @@
\def\pdfSpacesOn{\let\pdfSP\pdfSPDef}
\def\pdfSpacesOff{\let\pdfSP\dl@sp@ce}
% \end{macrocode}
+% \DescribeMacro{\dlcombine}\hskip-\marginparsep\texttt{(\#1)(\#2)}
+% Within the \env{defineJS} environment, spaces are obeyed, at time, we want to says
+% \verb*|@currQuiz MyField|, for example. which within \env{defineJS} gets expanded to
+% \verb*|q1 MyField|, not \texttt{q1MyField} as it should be. To solve this and other
+% problems like it, use \verb|@dlcombine(@currQuiz)(MyField)| which does expand
+% to the intended expression. (In this discussion, it is assumed \texttt{@} is the escape character
+% within \env{defineJS}.)
+% \changes{v2.4.3}{2019/06/27}{Added \string\cs{dlcombine}}
+% \begin{macrocode}
+\def\dlcombine(#1)(#2){#1#2}
+% \end{macrocode}
% When you declare a character to be an escape within the optional argument of \env{defineJS},
% that character may be needed in the code; for example if we say |\catcode`\!=0\relax|, and
% within the JavaScript code you have \texttt{if (x != 0 ) ...}, there is a problem: the JavaScript
-% code is broken. As a fix for this problem, you can declare \DescribeMacro\escIs|\escIS{!}|,
+% code is broken. As a fix for this problem, you can declare \DescribeMacro\escIs|\escIs{!}|,
% which in turn defines \DescribeMacro\Eschr\cs{Eschr}. the above code
% should then be written as \texttt{if (x !Eschr= 0 ) ...}; messy, but it works. The lines
% below is the recommended method of declaring \cs{escIs}:
@@ -1865,9 +1905,18 @@
% \begin{macrocode}
\def\escIs#1{\def\Eschr{#1}}
% \end{macrocode}
+% \DescribeMacro\makeesc\hskip-\marginparsep\texttt{\cs{\ameta{char}}}
+% \cs{dl@makeesc} is a helper command that sets the escape character,
+% Within the \env{defineJS} environments, it is \cs{let} to \DescribeMacro\makeesc\cs{makeesc};
+% eg, |\makeesc\@|
+% \changes{v2.4.3}{2019/06/27}{Added \string\cs{dl@makeesc}}
+% \begin{macrocode}
+\def\dl@makeesc#1{\catcode`#1=0\relax}
+% \end{macrocode}
% Finally, we get to the definition of \env{defineJS}, and its compatriates.
% \begin{macrocode}
\newenvironment{defineJS}[2][]{%
+ \let\makeesc\dl@makeesc
\expandafter\@ifundefined\expandafter{%
\expandafter\@gobble\string#2}{}{%
\PackageWarning{insdljs}{The command
@@ -1894,6 +1943,7 @@
% \begin{macrocode}
\newenvironment{@defineJS}[2][]
{%
+ \let\makeesc\dl@makeesc
\gdef\defineJSArg{#2}\JStoks={}%
\def\verbatim@processline{%
\xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
diff --git a/texmf-dist/source/latex/acrotex/web.dtx b/texmf-dist/source/latex/acrotex/web.dtx
index 605c2f52..de0477d5 100644
--- a/texmf-dist/source/latex/acrotex/web.dtx
+++ b/texmf-dist/source/latex/acrotex/web.dtx
@@ -2951,8 +2951,10 @@
% \end{macrocode}
% \begin{macrocode}
\def\aebwritelastpage{%
- \immediate\write\@auxout{\string\expandafter\string\gdef
- \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}%
+ \immediate\write\@auxout{%
+% \string\expandafter\string\gdef
+% \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}%
+ \string\w@csarg\string\gdef{aebLastPage}{\arabic{page}}}%
}
% \end{macrocode}
% \begin{macrocode}
diff --git a/texmf-dist/tex/latex/acrotex/aebjs.def b/texmf-dist/tex/latex/acrotex/aebjs.def
index ec071992..8c75a6f0 100644
--- a/texmf-dist/tex/latex/acrotex/aebjs.def
+++ b/texmf-dist/tex/latex/acrotex/aebjs.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebjs.def}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz document level JavaScript (dps)]
\def\aeb@array{new Array}
\def\refac#1{\\(#1\\)}\def\regrp#1{(#1)}\def\rechrclass#1{[#1]}
diff --git a/texmf-dist/tex/latex/acrotex/aebrandom.def b/texmf-dist/tex/latex/acrotex/aebrandom.def
index 66271ebd..10dbce06 100644
--- a/texmf-dist/tex/latex/acrotex/aebrandom.def
+++ b/texmf-dist/tex/latex/acrotex/aebrandom.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebrandom.def}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz support for randomization (dps)]
\@ifundefined{nextrandom}{\input{random.tex}}{}
\def\nextrandom{\begingroup
diff --git a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
index 64eac218..ce8636cd 100644
--- a/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
+++ b/texmf-dist/tex/latex/acrotex/aebsumrytbls.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{aebsumrytbls.def}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz support for summary tables (dps)]
\def\ccatCurrQzWith(#1){\currQuiz#1}
\def\pbPopulateSumTable{\pushButton[\W0\BG{}\BC{}\S{S}\autoCenter{n}
@@ -78,22 +78,22 @@
\edef\eq@p{\the\@tempcnta}%
\@tempcnta=\eq@n
\advance\@tempcnta-\eq@p\relax
- \ifnum\@tempcnta=0
- \@tempcntb=\eq@q \advance\@tempcntb1
+ \ifnum\@tempcnta=\z@
+ \@tempcntb=\eq@q \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\eq@q\relax
\xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=1
- \@tempcntb=\eq@q \advance\@tempcntb1
+ \else\ifnum\@tempcnta=\@ne
+ \@tempcntb=\eq@q \advance\@tempcntb\@ne
\edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1\relax
+ \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\eq@q\relax
\xdef\@beginThrdCol{\the\@tempcntb}%
- \else\ifnum\@tempcnta=2
+ \else\ifnum\@tempcnta=2\relax
\@tempcntb=\eq@q \advance\@tempcntb1
\edef\nB@lCols{\the\@tempcntb}%
- \advance\@tempcntb1
+ \advance\@tempcntb\@ne
\xdef\@beginSecCol{\the\@tempcntb}%
\advance\@tempcntb\nB@lCols
\xdef\@beginThrdCol{\the\@tempcntb}%
@@ -106,8 +106,7 @@
}
\def\eq@begintab{%
\begin{tabular}[t]{lcc}\sumryTblQ&\sumryTblR&\sumryTblP\\\sthline
- {\Large\strut}%
-}
+ {\Large\strut}}
\def\sthline{\hline}
\def\eq@endtab{\end{tabular}}
\def\sumrytblCkMUsep{\kern3bp}
@@ -142,12 +141,10 @@
\ifnum\eq@rowcnt=\thequestionno\relax\expandafter\eq@endtab\fi
}
\def\writeProListAux{%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz QzQuesList\string\endcsname
- {\eqQzQuesList}}%
- \eq@IWAuxOut{\string\expandafter\string\gdef
- \string\csname\space\currQuiz nQuestions\string\endcsname
- {\thequestionno}}%
+ \eq@IWAuxOut{\string
+ \csarg\string\gdef{\currQuiz QzQuesList}{\eqQzQuesList}}%
+ \eq@IWAuxOut{\string
+ \csarg\string\gdef{\currQuiz nQuestions}{\thequestionno}}%
}
\def\setParamSumryTblAux{%
\edef\eqQzQuesList{\@nameuse{\currQuiz QzQuesList}}%
@@ -214,6 +211,7 @@ partialColor:wrongColor;
// find the next non-null field
var g=this.getField(qtfield+"SanityCheckPts."+i);
var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ if ( !negPointsAllowed && (qpts < 0) ) qpts=0;
var thesePts= qpts + (( qpts == 1 )?%
" \eqptLabel":" \eqptsLabel");
g.value = thesePts;
@@ -225,6 +223,7 @@ partialColor:wrongColor;
// find the next non-null field
var g=this.getField(qtfield+"SanityCheckOOPts."+i);
var qpts=(ProbDist[i]==undefined) ? 0 : ProbDist[i];
+ if ( !negPointsAllowed && (qpts < 0) ) qpts=0;
var ptValue = oQName.PtValues[i];
var probPts = ptValue + (( ptValue == 1 )?%
" \eqptLabel":" \eqptsLabel");
diff --git a/texmf-dist/tex/latex/acrotex/altadbfncs.def b/texmf-dist/tex/latex/acrotex/altadbfncs.def
index 5c087517..b852cdfa 100644
--- a/texmf-dist/tex/latex/acrotex/altadbfncs.def
+++ b/texmf-dist/tex/latex/acrotex/altadbfncs.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2018 D. P. Story %%
+%% Copyright (C) 2001-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/dljscc.def b/texmf-dist/tex/latex/acrotex/dljscc.def
index 55f0b491..96e5de80 100644
--- a/texmf-dist/tex/latex/acrotex/dljscc.def
+++ b/texmf-dist/tex/latex/acrotex/dljscc.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2018 D. P. Story %%
+%% Copyright (C) 2001-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/edvipdfm.def b/texmf-dist/tex/latex/acrotex/edvipdfm.def
index 8f013a62..16c21749 100644
--- a/texmf-dist/tex/latex/acrotex/edvipdfm.def
+++ b/texmf-dist/tex/latex/acrotex/edvipdfm.def
@@ -48,24 +48,86 @@
\endgroup
\dl@restorespcs
}
-\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2}}
+\def\ef@radioData#1#2{%\expandafter
+ \immediate\write\@mainaux{\string\parentRef{#1}{#2}}}
+\def\eq@Radio@driver{\ef@adjHWxetex\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \immediate\@pdfm@mark{obj @parentobj\HyField@TheAnnotCount
+ << \radio@parent\space >>}%
+ \ef@radioData{\Fld@name}{@parentobj\HyField@TheAnnotCount}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \HyField@AdvanceAnnotCount
\setbox\pdfm@box=%
\hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann \dvipdfm@setdim
- <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
+ \ifx\annot@type\annot@type@checkbox\def\btn@type{check}\else
+ \def\btn@type{radio}\fi
+ \@pdfm@mark{ann @\btn@type\HyField@TheAnnotCount\space\dvipdfm@setdim
+ <<\common@RadioCode>>}\unhbox\pdfm@box\relax%
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{@parentobj\HyField@TheAnnotCount\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \else
+ \@pdfm@mark{put @afields @\btn@type\HyField@TheAnnotCount}%
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+\def\eq@Check@driver{\ef@adjHWxetex\Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \HyField@AdvanceAnnotCount
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \ifx\annot@type\annot@type@checkbox\def\btn@type{check}\else
+ \def\btn@type{radio}\fi
+ \@pdfm@mark{ann @\btn@type\HyField@TheAnnotCount\space\dvipdfm@setdim
+ <<\common@CheckCode>>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\btn@type\HyField@TheAnnotCount}%
\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver{%
- \setbox\pdfm@box=%
- \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \@pdfm@mark{ann \dvipdfm@setdim<<\common@RadioCheckCode>>}%
- \unhbox\pdfm@box\relax\endgroup
+ \HyField@AdvanceAnnotCount
+ \setbox\pdfm@box=%
+ \hbox{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
+ \@pdfm@mark{ann @check\HyField@TheAnnotCount\space
+ \dvipdfm@setdim<<\common@CheckCode>>}%
+ \unhbox\pdfm@box\relax
+ \@pdfm@mark{put @afields @check\HyField@TheAnnotCount}%
+ \endgroup
}
\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
@@ -90,6 +152,7 @@
\hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
<< \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
\endgroup
\dl@restorespcs
}
diff --git a/texmf-dist/tex/latex/acrotex/eforms.sty b/texmf-dist/tex/latex/acrotex/eforms.sty
index 3184371f..d29485b8 100644
--- a/texmf-dist/tex/latex/acrotex/eforms.sty
+++ b/texmf-dist/tex/latex/acrotex/eforms.sty
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{eforms}
- [2019/05/24 v2.11 Provides general eforms support (dps)]
+ [2019/06/14 v2.3 Provides general eforms support (dps)]
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
\RequirePackage{ifluatex}
@@ -111,6 +111,8 @@
\MessageBreak in the option list of the eforms package.}%
}{}
\fi
+\edef\ef@CatChngs{\the\catcode`\$}
+\@makeother\$\relax
\newlength\eflength
\@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse
\ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi
@@ -139,6 +141,7 @@
\let\to@usepdfmark\ef@Zero
\RequirePackage{taborder}
\fi
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
\@ifundefined{eq@tmpbox}{\newsavebox{\eq@tmpbox}}{}
\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{}
\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
@@ -159,6 +162,7 @@
\hb@xt@\noexpand\z@{\hss#1\hss}}\fi}
\let\@PMPV\@empty
\let\pmpvFmt\@empty
+\let\pmpvFmtCtrl\relax
\def\ef@Bbox#1#2{\hbox{\ifpreview
\setlength\fboxrule{\efPreviewOnRule}\setlength\fboxsep{0pt}%
\@tempdima=#1\relax
@@ -168,7 +172,7 @@
\ifdim\@tempdimb<2\fboxrule\else
\advance\@tempdimb by-2\fboxrule\fi
\ckbox@Color\fbox{\parbox[b][\@tempdimb][c]{\@tempdima}%
- {\vfil\hfil\pmpvFmt{\@PMPV}\hfil\vfil}}\else
+ {\vfil\hfil\pmpvFmtCtrl\pmpvFmt{\@PMPV}\hfil\vfil}}\else
\parbox[b][#2][c]{#1}{\vfil\hfil\hfil\vfil}\fi}%
}
\let\Bbox\ef@Bbox
@@ -199,6 +203,9 @@
\@tempcnta=\eq@FfValue
\def\eq@arg{#2}%
\ifx\eq@arg\@empty\else
+ \def\x{\FfRadiosInUnison}%
+ \ifx\eq@arg\x\let\isRadiosInUnison\ef@YES
+ \else\let\isRadiosInUnison\ef@NO\fi
\advance\@tempcnta by#2\fi
\edef\eq@Ff{/Ff \the\@tempcnta}%
\def\ef@next{\processAppArgs}%
@@ -211,7 +218,7 @@
\@tempcnta=\eq@FValue
\def\eq@arg{#2}%
\ifx\eq@arg\@empty\else
- \ifnum#2=2\relax % dpstoday
+ \ifnum#2=2\relax
\let\ef@isHidden\ef@YES\else
\ifnum#2=32\relax
\let\ef@isHidden\ef@YES\else
@@ -506,8 +513,14 @@
\let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
\let\pmpvV\@empty
\let\eq@VSAVE\@empty
+\let\ef@Vpv\ef@YES
+\def\pmpvVOff{\let\ef@Vpv\ef@NO\let\pmpvFmtCtrl\@gobble}
+\def\pmpvVOn{\let\ef@Vpv\ef@YES\let\pmpvFmtCtrl\relax}
+\def\noexpand@iii{\noexpand\noexpand\noexpand}
\def\@eqV#1{\Hy@pdfstringfalse
- \edef\pmpvV{#1}%
+ \let\x\protect
+ \let\protect\noexpand@iii\edef\pmpvV{#1}%
+ \edef\pmpvV{#1}\let\protect\x
\let\unicodeStrSAVE\unicodeStr
\Hy@pdfstringtrue\let\unicodeStr\relax
\edef\x{#1}\let\unicodeStr\unicodeStrSAVE
@@ -582,6 +595,9 @@
\fi
}\def\eq@BG{}
\let\pmpvCA\@empty
+\let\ef@CApv\ef@YES
+\def\pmpvCAOff{\let\ef@CApv\ef@NO\let\pmpvFmtCtrl\@gobble}
+\def\pmpvCAOn{\let\ef@CApv\ef@YES\let\pmpvFmtCtrl\relax}
\def\@eqCA#1{\let\unicodeStrSAVE\unicodeStr
\Hy@pdfstringtrue\let\unicodeStr\relax
\edef\x{#1}\let\unicodeStr\unicodeStrSAVE
@@ -591,7 +607,8 @@
\let\eq@CA\@empty\let\ef@kvCA\@empty
\else\ef@pdfCRLFTABDefns
\pdfstringdef\ef@uni@temp{#1}\Hy@pdfstringfalse
- \edef\pmpvCA{#1}\def\eq@CA{#1}%
+ \let\x\protect\let\protect\noexpand@iii
+ \edef\pmpvCA{#1}\def\eq@CA{#1}\let\protect\x
\edef\ef@kvCA{/CA(\ef@uni@temp)}%
\makespecialJS
\fi
@@ -791,6 +808,8 @@
\let\eq@mlcrackinsat\@empty
\def\@eqprotect#1{\eq@protect{#1}}
\def\eq@protect#1{\let#1\@empty}
+\def\@eqmultigroupradios#1{\let\ef@multigroupradios\ef@YES}
+\let\ef@multigroupradios\ef@NO
\def\ef@stop{\relax} %\def\ef@relax{\relax}
\def\protectedKeys#1#2{\ef@scratchtoks={}%
\@ifundefined{#1}{}{\PackageWarning{eforms}
@@ -1035,7 +1054,7 @@
\ifefpmpv\Hy@pdfstringfalse
\ifx\ef@isBGtransparent\ef@YES
\let\ef@kvCA\@empty\fi
- \PMPV{\eq@CA}\fi
+ \ifx\ef@CApv\ef@YES\PMPV{\eq@CA}\fi\fi
\ef@djXPD#1%
}
\def\eq@setWidgetProps#1#2{\makeJSspecials
@@ -1044,11 +1063,13 @@
\ifx\eq@BC\@empty\@eqW{}\else
\if\eq@W@value0\let\eq@BC\@empty\fi\fi
\fi
+ \ef@lateWidgetOpts
\ifefpmpv\Hy@pdfstringfalse
\ifx\ef@isHidden\ef@YES
\let\eq@V\eq@VSAVE\else
- \PMPV{\pmpvV}\fi
+ \ifx\ef@Vpv\ef@YES\PMPV{\pmpvV}\fi\fi
\fi
+ \global\let\ef@lateWidgetOpts\relax
\ef@djXPD#1%
}
\def\ef@sanitize@toks{\@makeother\~\@makeother\#\@makeother\&%
@@ -1182,7 +1203,47 @@
\eq@A\eq@AA
\eq@rawPDF
}
-\def\common@RadioCheckCode{%
+\def\radio@parent{%
+ /DA (\eq@DA)%
+ /FT/Btn%
+ \eq@Ff%
+ \eq@TU%
+ \eq@DV%
+\expandafter\ifx\csname kids@\Fld@name\endcsname\relax\else
+ /Kids [\@nameuse{kids@\Fld@name}]%
+\fi
+\ifx\ef@multigroupradios\ef@YES
+\expandafter\ifx\csname radio@\Fld@name\endcsname\relax\else
+ /Opt[\@nameuse{radio@\Fld@name}]\fi\fi
+ /T(\Fld@name)%
+ \eq@V
+}
+\def\common@RadioCode{%
+ /Subtype/Widget
+\ifuseNewRadios
+ \expandafter\ifx\csname radio@\Fld@name\endcsname\relax\else
+ /Parent \@nameuse{parent@\Fld@name}\fi
+\else
+ /T (\Fld@name)
+ /FT/Btn
+ \eq@Ff
+ \eq@F
+ \eq@TU
+ \eq@DV\eq@V
+ /DA (\eq@DA)
+\fi
+ /BS <<\eq@W\eq@S>>
+\ifx\eq@AP\@empty
+ /AP<< /N <<\eq@On<<>>>> >>
+ \eq@MK
+\else
+ \eq@AP
+\fi
+ \eq@AS
+ \eq@A\eq@AA
+ \eq@rawPDF
+}
+\def\common@CheckCode{%
/Subtype/Widget
/T (\Fld@name)
/FT/Btn
@@ -1244,27 +1305,115 @@
\@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
\@processEvery#8\end\noindent#6#7{#1}}
\def\checkBoxDefaults{\F{\FPrint}\W{1}\S{S}\BC{0 0 0}}
-\bgroup\obeyspaces
-\gdef\checkBox{\begingroup\global\let =\pdfSP
+\bgroup\obeyspaces%
+\gdef\checkBox{\begingroup\global\let =\pdfSP%
\ef@sanitize@toks\ef@checkbox}\egroup
\newcommand{\ef@checkbox}[5][]{\endgroup
\mbox{\check@@Box{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\checkBoxDefaults\every@CheckBox}}}
+ \eq@Check@driver}{\checkBoxDefaults\every@CheckBox}}}
+\newif\ifuseNewRadios \useNewRadiosfalse
+\def\useNewRadiosOn{\useNewRadiostrue}
+\def\useNewRadiosOff{\useNewRadiosfalse}
+\let\ef@OptArray\@empty
+\let\ef@KidsArray\@empty
+\let\ef@lateWidgetOpts\relax
\def\annot@type@radio{radiobtn}
+\def\ef@NewRadiosLateOpts{%
+ \ifuseNewRadios
+ \@nameuse{multigroup@\Fld@name}%
+ \ifx\ef@multigroupradios\ef@YES
+ \ifpdfmarkup
+ \def\eq@On{(\@nameuse{radioindex@\Fld@name}) cvn }\else
+ \def\eq@On{/\@nameuse{radioindex@\Fld@name}}\fi
+ \expandafter\ifx\csname OnVal@\Fld@name\endcsname\relax
+ \@eqAS{Off}\else % today
+ \ifnum\@nameuse{OnVal@\Fld@name}=%
+ \@nameuse{radioindex@\Fld@name}\relax
+ \@eqAS{\@nameuse{radioindex@\Fld@name}}\else\@eqAS{Off}\fi\fi
+ \else
+ \edef\x{\@nameuse{OnVal@\Fld@name}}%
+ \ifx\x\ef@thisChoice\@eqAS{\@nameuse{OnVal@\Fld@name}}\else
+ \@eqAS{Off}\fi
+ \fi
+ \@nameuse{uniradios@\Fld@name}%
+ \ifx\isRadiosInUnison\ef@YES
+ \edef\x{\@nameuse{value@\Fld@name}}%
+ \ifx\x\ef@thisChoice\expandafter\@eqAS
+ \expandafter{\ef@thisChoice}\else\@eqAS{Off}\fi
+ \fi
+ \fi
+}
+\def\ef@advanceRadioIndex#1{\bgroup
+ \@tempcnta\@nameuse{radioindex@#1}\relax
+ \advance\@tempcnta\@ne
+ \csarg\xdef{radioindex@#1}{\the\@tempcnta}\egroup}
+\def\radioChoices#1{\csarg\xdef{radio@#1}}
+\def\radioKids#1{\csarg\xdef{kids@#1}}
+\def\ef@radioWarning{\PackageWarningNoLine{eforms}
+ {Not all PDF object references have\MessageBreak
+ been resolved, keep compiling}}
+\def\ef@@radioWarning{%
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{kids@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{radio@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+ \ifx\ef@radioWarning\relax\else
+ \@ifundefined{parent@\Fld@name}
+ {\ef@radioWarning\global\let\ef@radioWarning\relax}{}\fi
+}
\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
\let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@radio}%
- \pdfstringdef\Fld@name{#2}\@eqAS{Off}\dl@paramlocal
+ \pdfstringdef\Fld@name{#2}%
+ \ifuseNewRadios
+ \ef@@radioWarning
+ \@ifundefined{rad@\Fld@name}{\let\isRadioParent\ef@YES
+ \global\let\ef@OptArray\@empty
+ \global\let\ef@KidsArray\@empty
+ \csarg\gdef{radioindex@\Fld@name}{-1}\expandafter
+ \global\csarg\let{rad@\Fld@name}\@empty}%
+ {\let\isRadioParent\ef@NO}%
+ \edef\ef@OptArray{\@nameuse{rad@\Fld@name}}%
+ \g@addto@macro\ef@OptArray{(#5)}% opt
+ \csarg\xdef{rad@\Fld@name}{\ef@OptArray}%
+ \ifx\isRadioParent\ef@YES
+ \def\y{\expandafter\string\noexpand}%
+ \edef\x{\noexpand\immediate\noexpand\write\noexpand\@auxout
+ {\y\radioChoices{\Fld@name}{\noexpand
+ \@nameuse{rad@\Fld@name}}}}%
+ \def\z{\expandafter\AtEndDocument\expandafter{\x}}\z
+ \edef\x{\noexpand\immediate\noexpand\write\noexpand\@auxout
+ {\y\radioKids{\Fld@name}{\noexpand
+ \@nameuse{kid@\Fld@name}}}}%
+ \def\z{\expandafter\AtEndDocument\expandafter{\x}}\z
+ \fi
+ \ef@advanceRadioIndex{\Fld@name}%
+ \@nameuse{multigroup@\Fld@name}%
+ \fi
+ \@eqAS{Off}\dl@paramlocal
\def\@eqDV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty\let\eq@DV\@empty
\else\ifpdfmarkup\def\eq@DV{/DV(##1) cvn }\else
\def\eq@DV{/DV/##1}\fi\fi}%
- \def\@eqV##1{\def\eq@arg{##1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\def\pmpvV{\pmpv@mrk}\ifpdfmarkup
- \def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi
- \ifefpmpv\let\eq@V\@empty\fi}%
+ \def\@eqV##1{\Hy@pdfstringfalse\edef\pmpvV{##1}%
+ \Hy@pdfstringtrue
+ \edef\eq@arg{##1}%
+ \if$\eq@arg$\else
+ \ifpdfmarkup
+ \edef\eq@V{/V(##1) cvn }\else
+ \edef\eq@V{/V/##1}\fi
+ \@eqAS{##1}\fi
+ \if$\eq@arg$%
+ \else
+ \csarg\xdef{OnVal@\Fld@name}{##1}\fi
+ \ifefpmpv
+ \gdef\ef@lateWidgetOpts{\if$\pmpvV$\else\def\pmpvV{\pmpv@mrk}\fi}%
+ \let\eq@V\@empty\else\global\let\ef@lateWidgetOpts\relax\fi
+ }%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
+ \def\ef@thisChoice{#5}%
\def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@eqMK{\eq@R\eq@BC\eq@BG/CA(\symbol@choice)\eq@mkIns}%
@@ -1275,7 +1424,7 @@
\ef@sanitize@toks\ef@radiobutton}\egroup
\newcommand{\ef@radiobutton}[5][]{\endgroup
\mbox{\radio@@Button{#1}{#2}{#3}{#4}{#5}{}{\eq@setWidgetProps
- \eq@RadioCheck@driver}{\radioButtonDefaults\every@RadioButton}}}
+ \eq@Radio@driver}{\radioButtonDefaults\every@RadioButton}}}
\def\common@TextFieldCode
{%
/Subtype/Widget
@@ -1433,6 +1582,7 @@
{}{\set@LinkPboxDefaults\every@Link}}
\input{\eq@drivercode}
\inputCalcOrderJS
+\catcode`\$=\ef@CatChngs
\endinput
%%
%% End of file `eforms.sty'.
diff --git a/texmf-dist/tex/latex/acrotex/epdfmark.def b/texmf-dist/tex/latex/acrotex/epdfmark.def
index 7e5a8068..1f1e04ad 100644
--- a/texmf-dist/tex/latex/acrotex/epdfmark.def
+++ b/texmf-dist/tex/latex/acrotex/epdfmark.def
@@ -20,6 +20,13 @@
\def\Rect#1{\pdf@rect{\textcolor{\@linkcolor}{#1}}}
\def\noPeek#1#2{\literalps@out{%
\AEB@psMrk{ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
+\def\ef@getobjdef{%
+ \HyField@AdvanceAnnotCount
+ \ifisCalculate\edef\eq@objdefName{\Fld@name}\else
+ \ifx\eq@objdef\@empty
+ \edef\eq@objdefName{\annot@type\HyField@TheAnnotCount}\fi\fi
+ \edef\eq@objdef{/_objdef \string{\eq@objdefName\string}}%
+}
\def\eq@choice@driver
{%
\Hy@pdfstringtrue
@@ -27,13 +34,14 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
- \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@choiceCode
- /ANN pdfmark
- \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@choiceCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
@@ -44,35 +52,104 @@
\ifx\@vertRotate\ef@One\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@pushButtonCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+ \common@pushButtonCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
-\def\eq@RadioCheck@driver
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2}}
+\def\ef@radioData#1#2{\immediate
+ \write\@mainaux{\string\parentRef{#1}{#2}}}
+\def\eq@Radio@driver
{%
\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \literalps@out{\AEB@psMrk
+ /_objdef{parent@rad\HyField@TheAnnotCount}
+ /type/dict/OBJ pdfmark
+ \AEB@psMrk{parent@rad\HyField@TheAnnotCount}
+ << \radio@parent\space >>/PUT pdfmark
+ }\ef@radioData{\Fld@name}{{parent@rad\HyField@TheAnnotCount}}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
+ \common@RadioCode
+ /ANN pdfmark
+ \ifuseNewRadios\else
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \fi
+ }\to@insertStrucTabOrder{Form}%
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{{\eq@objdefName}\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+\def\eq@Check@driver
+{%
+ \Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \literalps@out{\AEB@psMrk
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@CheckCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver
{%
+ \ef@getobjdef
\pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\endgroup
+ \common@CheckCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ }\endgroup
\dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
@@ -80,13 +157,14 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
- \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@TextFieldCode
- /ANN pdfmark
- \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \common@TextFieldCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
+ \ifisCalculate\AEB@psMrk{corder} {\Fld@name} /APPEND pdfmark\fi
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
@@ -95,11 +173,13 @@
\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ef@getobjdef
\pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
\literalps@out{\AEB@psMrk
\eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@SigFieldCode
- /ANN pdfmark
+ \common@SigFieldCode
+ /ANN pdfmark
+ \AEB@psMrk{afields} {\eq@objdefName} /APPEND pdfmark
}\to@insertStrucTabOrder{Form}\endgroup
\dl@restorespcs
}
diff --git a/texmf-dist/tex/latex/acrotex/epdftex.def b/texmf-dist/tex/latex/acrotex/epdftex.def
index d235584d..7022a519 100644
--- a/texmf-dist/tex/latex/acrotex/epdftex.def
+++ b/texmf-dist/tex/latex/acrotex/epdftex.def
@@ -52,10 +52,60 @@
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
\hbox{\pdfstartlink user{\common@pushButtonCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
-\def\eq@RadioCheck@driver
+\def\parentRef#1#2{\csarg\gdef{parent@#1}{#2 0 R}}
+\def\ef@radioData#1#2{\expandafter
+ \HyField@@AddToFields\expandafter{#2}%
+ \immediate\write\@mainaux{\string\parentRef{#1}{#2}}}
+\def\eq@Radio@driver{\Hy@pdfstringtrue
+ \ifx\@vertRotate\ef@One
+ \let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
+ \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
+ \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
+ \ifuseNewRadios
+ \ifx\isRadioParent\ef@YES\expandafter
+ \ifx\csname radio@\Fld@name\endcsname\relax\else
+ \immediate\pdfobj{<< \radio@parent\space >>}%
+ \ef@radioData{\Fld@name}{\the\pdflastobj}%
+ \ifx\eq@V\@empty\else
+ \csarg\xdef{value@\Fld@name}%
+ {\@nameuse{OnVal@\Fld@name}}%
+ \fi
+ \fi
+ \ifx\ef@multigroupradios\ef@YES
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@YES}%
+ \else
+ \csarg\gdef{multigroup@\Fld@name}%
+ {\let\ef@multigroupradios\ef@NO}%
+ \fi
+ \ifx\isRadiosInUnison\ef@YES
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@YES}%
+ \else
+ \csarg\gdef{uniradios@\Fld@name}%
+ {\let\isRadiosInUnison\ef@NO}%
+ \fi
+ \fi
+ \fi
+ \ef@NewRadiosLateOpts
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
+ \hbox{\pdfstartlink user{\common@RadioCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \ifuseNewRadios
+ \edef\x{\noexpand\g@addto@macro\noexpand
+ \ef@KidsArray{\the\pdflastlink\space 0 R\space}}\x
+ \csarg\xdef{kid@\Fld@name}{\ef@KidsArray}%
+ \else
+ \HyField@AddToFields
+ \fi
+ \endgroup
+ \dl@restorespcs
+}
+\def\eq@Check@driver
{%
\Hy@pdfstringtrue
\ifx\@vertRotate\ef@One
@@ -63,16 +113,17 @@
\edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
\ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\fi
- \hbox{\pdfstartlink user{\common@RadioCheckCode}%
+ \hbox{\pdfstartlink user{\common@CheckCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdfstartlink user{\common@RadioCheckCode}%
+ \pdfstartlink user{\common@CheckCode}%
\makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
- \pdfendlink\endgroup
+ \pdfendlink\HyField@AddToFields\endgroup
\dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
@@ -94,6 +145,7 @@
\ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
\leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
\endgroup
\dl@restorespcs
}
diff --git a/texmf-dist/tex/latex/acrotex/eqbr.def b/texmf-dist/tex/latex/acrotex/eqbr.def
index 4eac309c..0005db49 100644
--- a/texmf-dist/tex/latex/acrotex/eqbr.def
+++ b/texmf-dist/tex/latex/acrotex/eqbr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqcat.def b/texmf-dist/tex/latex/acrotex/eqcat.def
index 833a2e4a..fcb19511 100644
--- a/texmf-dist/tex/latex/acrotex/eqcat.def
+++ b/texmf-dist/tex/latex/acrotex/eqcat.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqcolor.def b/texmf-dist/tex/latex/acrotex/eqcolor.def
index 08548987..4fcc59ef 100644
--- a/texmf-dist/tex/latex/acrotex/eqcolor.def
+++ b/texmf-dist/tex/latex/acrotex/eqcolor.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqcz.def b/texmf-dist/tex/latex/acrotex/eqcz.def
index 60100616..d17dfdc6 100644
--- a/texmf-dist/tex/latex/acrotex/eqcz.def
+++ b/texmf-dist/tex/latex/acrotex/eqcz.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqda.def b/texmf-dist/tex/latex/acrotex/eqda.def
index 516dbb0a..f756884f 100644
--- a/texmf-dist/tex/latex/acrotex/eqda.def
+++ b/texmf-dist/tex/latex/acrotex/eqda.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqde.def b/texmf-dist/tex/latex/acrotex/eqde.def
index 58c58620..7d71b8bd 100644
--- a/texmf-dist/tex/latex/acrotex/eqde.def
+++ b/texmf-dist/tex/latex/acrotex/eqde.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqes.def b/texmf-dist/tex/latex/acrotex/eqes.def
index eee11979..5b228600 100644
--- a/texmf-dist/tex/latex/acrotex/eqes.def
+++ b/texmf-dist/tex/latex/acrotex/eqes.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqexam.def b/texmf-dist/tex/latex/acrotex/eqexam.def
index 1cdf0433..505fba81 100644
--- a/texmf-dist/tex/latex/acrotex/eqexam.def
+++ b/texmf-dist/tex/latex/acrotex/eqexam.def
@@ -7,7 +7,7 @@
%% exerquiz.dtx (with options: `eqexam')
%%
\ProvidesFile{eqexam.def}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz support file for eqexam (dps)]
\let\eq@YES=y \let\eq@NO=n
\let\eq@One=1 \let\eq@Zero=0
diff --git a/texmf-dist/tex/latex/acrotex/eqfin.def b/texmf-dist/tex/latex/acrotex/eqfin.def
index 0b30e6a9..3c5f874c 100644
--- a/texmf-dist/tex/latex/acrotex/eqfin.def
+++ b/texmf-dist/tex/latex/acrotex/eqfin.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqfr.def b/texmf-dist/tex/latex/acrotex/eqfr.def
index fc4dbd96..94a24e8b 100644
--- a/texmf-dist/tex/latex/acrotex/eqfr.def
+++ b/texmf-dist/tex/latex/acrotex/eqfr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqit.def b/texmf-dist/tex/latex/acrotex/eqit.def
index 779dc46a..7de47010 100644
--- a/texmf-dist/tex/latex/acrotex/eqit.def
+++ b/texmf-dist/tex/latex/acrotex/eqit.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqnl.def b/texmf-dist/tex/latex/acrotex/eqnl.def
index d9a69c2b..dc09dc2a 100644
--- a/texmf-dist/tex/latex/acrotex/eqnl.def
+++ b/texmf-dist/tex/latex/acrotex/eqnl.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqno.def b/texmf-dist/tex/latex/acrotex/eqno.def
index ec415737..db617a72 100644
--- a/texmf-dist/tex/latex/acrotex/eqno.def
+++ b/texmf-dist/tex/latex/acrotex/eqno.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqpo.def b/texmf-dist/tex/latex/acrotex/eqpo.def
index 8e323a98..e71a7fc5 100644
--- a/texmf-dist/tex/latex/acrotex/eqpo.def
+++ b/texmf-dist/tex/latex/acrotex/eqpo.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqru.def b/texmf-dist/tex/latex/acrotex/eqru.def
index 094b31e4..944eeb4c 100644
--- a/texmf-dist/tex/latex/acrotex/eqru.def
+++ b/texmf-dist/tex/latex/acrotex/eqru.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/eqtr.def b/texmf-dist/tex/latex/acrotex/eqtr.def
index 7dc32f92..b2cfd4ec 100644
--- a/texmf-dist/tex/latex/acrotex/eqtr.def
+++ b/texmf-dist/tex/latex/acrotex/eqtr.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/exerquiz.sty b/texmf-dist/tex/latex/acrotex/exerquiz.sty
index c25de9ca..a9c14748 100644
--- a/texmf-dist/tex/latex/acrotex/exerquiz.sty
+++ b/texmf-dist/tex/latex/acrotex/exerquiz.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{exerquiz}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz: Exercises and Quizzes for LaTeX/PDF package (dps)]
\usepackage{keyval}
\RequirePackage{ifpdf}[2006/02/20]
@@ -1702,27 +1702,31 @@
}
\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{%
- 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}}%
+ \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{}
\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");
+ if (aQuizzesInDoc.indexOf("\oField"))
+ aQuizzesInDoc.push("\oField");\r
+ if (typeof \oField=="undefined")\r\t
+ var \oField=new Object;\r
}}]{qzID\oField}{2bp}{2bp}}}
\let\eqQuizType\relax
\def\@@shortquiz[#1]{%\begingroup
@@ -2214,7 +2218,7 @@
\mbox{\check@@Box{#1\V{Yes}\DV{Yes}}%
{rbmarkup.\Fld@name}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\rbMarkup@Defaults\every@CheckBox\every@rbMarkup}}}%
\newcommand\minQuizResp{lowThreshold}
\newcommand\PTs{\@ifstar{\def\eq@star{*}\@PTs}{\def\eq@star{x}\@PTs}}
@@ -2316,7 +2320,7 @@
\global\let\eqOutOf\eq@OutOf}
\def\DeclareQuiz#1{\edef\oField{#1}%
\edef\thisQuiz{#1}\edef\curr@quiz{#1}%
- \edef\currQuiz{#1}\edef\curr@quiz{#1}}
+ \edef\currQuiz{#1}}
\let\Quiz\DeclareQuiz
\def\aeb@noindgobble{\noindent\@gobbletwo}
\let\startQuizHere\relax
@@ -2632,7 +2636,7 @@
\def\@@Ans@sq@f@Defaults
{%
\BC{0 0 0}\Ff{\FfNoToggleToOff}\W{1}
- \F{\FPrint}\textSize{12}\textColor{0 g}
+ \textSize{12}\textColor{0 g}
}
\def\sqTurnOffAlerts{\let\@sqTurnOffAlerts\eq@Zero}
\def\sqTurnOnAlerts{\let\@sqTurnOffAlerts\eq@One}
@@ -2712,12 +2716,12 @@
\hangindent=\eq@tmplength\hangafter=1\relax
\insertGrayLetters % 6.3d
\mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
- {mc.\oField.\thequestionno}%
- {\RadioFieldSize}% 11/16/05 changed from \oField to mc.\oField
- {\RadioFieldSize}{\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
- {\@@Ans@sq@f@Defaults\Ans@sq@f@Actions\every@RadioButton
- \every@sqRadioButton}}%
+ {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
@@ -2789,7 +2793,7 @@
{mc.\oField.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}
{\Ans@choice\alph{quizno}}{\eq@protect\A}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\@@Ans@ck@sq@f@Defaults\Ans@ck@sq@f@Actions\every@CheckBox
\every@sqCheckBox}}%
\Ans@proofing{\RadioFieldSize}%
@@ -3094,7 +3098,7 @@ if (_bOK) {\jsR\jsT
\mbox{\expandafter\radio@@Button\expandafter{\rbf@Opts}%
{mc.\curr@quiz.\thequestionno}%
{\RadioFieldSize}{\RadioFieldSize}{\Ans@choice\alph{quizno}}%
- {\eq@protect\A}{\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\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
@@ -3124,7 +3128,7 @@ if (_bOK) {\jsR\jsT
\makebox[0pt][r]{\check@@Box{}%
{mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
\every@qCheckBox\late@options}}%
\fi
@@ -3172,7 +3176,7 @@ if (_bOK) {\jsR\jsT
\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@RadioCheck@driver}%
+ {\eq@protect\A}{\eq@setWidgetProps\eq@Check@driver}%
{\Ans@ck@f@Defaults\Ans@ck@f@Actions\every@RadioButton
\every@qckCheckbox}}%
\ifnocorrections\else
@@ -3201,7 +3205,7 @@ if (_bOK) {\jsR\jsT
\makebox[0pt][r]{\check@@Box{}%
{mcq.\curr@quiz.\thequestionno.\arabic{quizno}}%
{\RadioFieldSize}{\RadioFieldSize}{Yes}{}%
- {\eq@setWidgetProps\eq@RadioCheck@driver}%
+ {\eq@setWidgetProps\eq@Check@driver}%
{\Ans@c@f@Defaults\Ans@c@f@Choice\every@CheckBox
\every@qCheckBox\late@options}}%
\fi
@@ -4039,10 +4043,10 @@ if (!isQuizInitialized("@currQuiz")) {
\AAKeystroke{%
if(event.willCommit){\jsR\jsT
RecordPointValue(\eqPTs,\thequestionno);\jsR\jsT
- RecordProblemType("\eqQT",\thequestionno);\jsR\jsT
+ RecordProblemType("\eqQT",\thequestionno);\jsR %\jsT
}\jsR
if (!isQuizInitialized("\curr@quiz")) {\jsR\jsT
- @eqObjAlert\space eqAppAlert(%
+ \eqObjAlert\space eqAppAlert(%
InitMsg("\bqlabelISO"),3);\jsR\jsT
event.rc = false;\jsR
}%
@@ -4050,14 +4054,23 @@ if (!isQuizInitialized("@currQuiz")) {
\fi
}
}
-\newcommand\RespBoxEssay[3][]
+\newcommand\RespBoxEssay[1][]{\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}%
- \mbox{\text@@Field{#1}{essay.\curr@quiz.\thequestionno}{#2}{#3}%
+ \xdef\@qzsolndest{#1}%
\edef\eqtmp{\aPointType}\xdef\aPointType{\eqtmp,[\eqPTs,"essay"]}%
- {\eq@protect\AA}{\eq@setWidgetProps\@@RespBoxEssayActions
- \eq@TextField}{\RespBoxEssayDefaults\every@eqTextField}}%
+ \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}{%
@@ -4414,8 +4427,8 @@ if (!isQuizInitialized("@currQuiz")) {
\let\eqQzQuesList\@empty
\def\eq@AddProbToQzQuesList{%
\edef\eq@tmpExp{\noexpand\g@addto@macro%
- \noexpand\eqQzQuesList{%
- \noexpand\@eqListExp{\@currentQues}{\thepage}}}%
+ \noexpand\eqQzQuesList{\string
+ \@eqListExp{\@currentQues}{\the\c@page}}}%
\ifx\grpquestions\eq@Zero\eq@tmpExp\fi
}
\LangRedefinitions
diff --git a/texmf-dist/tex/latex/acrotex/insdljs.sty b/texmf-dist/tex/latex/acrotex/insdljs.sty
index 3babe3d7..cf7089b5 100644
--- a/texmf-dist/tex/latex/acrotex/insdljs.sty
+++ b/texmf-dist/tex/latex/acrotex/insdljs.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% insdljs.sty package, %%
-%% Copyright (C) 2001-2018 D. P. Story %%
+%% Copyright (C) 2001-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{insdljs}
- [2019/03/16 v2.4.2 Insert Document Level JavaScripts (dps)]
+ [2019/08/06 v2.4.6 Insert Document Level JavaScripts (dps)]
\usepackage{xkeyval}
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
@@ -46,8 +46,10 @@
\let\dljspresent\dl@NO
\DeclareOptionX{debug}{\let\dljs@debug\dl@YES}
\let\dljs@debug\dl@NO
-\DeclareOptionX{execJS}{\let\execjs\dl@YES}
-\let\execjs\dl@NO
+\DeclareOptionX{execJS}{\execJSOn}
+\def\execJSOn{\let\execjs\dl@YES}
+\def\execJSOff{\let\execjs\dl@NO}
+\execJSOff
\DeclareOptionX{nopro}{\let\dl@gopro\dl@NO}
\let\dl@gopro\dl@YES
\@ifpackageloaded{web}{%
@@ -65,11 +67,12 @@
\DeclareOptionX{reqjs}{\let\dl@reqJS\dl@YES}
\let\dljs@reqJS\dl@YES
\DeclareOptionX{!reqjs}{\let\dl@reqJS\dl@NO}
-\DeclareOptionX{usealtadobe}{\def\inputAltAdbFncs{%
- \InputIfFileExists{altadbfncs.def}%
- {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}%
+\DeclareOptionX{usealtadobe}{\let\usedAdbFuncs\dl@YES
+ \def\inputAltAdbFncs{\InputIfFileExists{altadbfncs.def}
+ {\PackageInfo{insdljs}{Inputting code for usealtadobe option}}
{\PackageWarning{insdljs}{Cannot find altadbfncs.def.\MessageBreak
Reinstall or refresh your file name database.}}}}
+\let\usedAdbFuncs\dl@NO
\let\inputAltAdbFncs\relax
\ProcessOptionsX
\edef\dl@dquoteCat{\the\catcode`\"}
@@ -129,7 +132,8 @@
\ifnum\dljs@drivernum=1\relax
\RequirePackage{everyshi}
\fi
-\def\AEB@psMrk{[\space}
+\def\AEB@psMrk{[%]
+ \space}
\ifx\dl@reqJS\dl@YES
\def\dl@@reqJS{/Type/Requirement/S/EnableJavaScripts}
\ifpdf\pdfcatalog{\dl@@reqJS}\else
@@ -343,9 +347,9 @@
\global\let\aebpFA\dl@YES
\let\@pdfstartview\@empty
\else
- \edef\aebp@dljstmp{\aebp@rightDelimiters}%
- \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
- \g@addto@macro\aebpopentoks{/Next << #1 }%
+ \edef\aebp@dljstmp{\aebp@rightDelimiters}%
+ \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }%
+ \g@addto@macro\aebpopentoks{/Next << #1 }%
\fi
}
\def\dljs@OpenActions{/OpenAction \addActionObj}
@@ -552,10 +556,9 @@
\endgroup
\def\ckivspace#1{\if\noexpand#1\space\else\expandafter#1\fi}
\let\DLspecialDefs\@empty
-\def\fdfAfterheader
-{%
+\def\fdfAfterheader#1{%
\iwvo{\string\begingroup\string\efdlspecials}
- \iwvo{\string\DLspecialDefs}
+ \iwvo{\string\DLspecialDefs\string#1}
\iwvo{\string\isdljstrue}
\iwvo{\string\makeatletter}
\iwvo{\string\immediate\string\openout\string
@@ -576,9 +579,11 @@
\iwvo{<<>>}
\iwvo{stream}
}
-\newenvironment{execJS}[1]
+\def\restoreDLspecialDefs{\let\DLspecialDefs\@empty}
+\newenvironment{execJS}[2][\relax]
{%
- \gdef\detectdljs{\string_#1}\gdef\dljsBase{#1}%
+ \def\x{#1}\ifx\x\@empty\def\x{\relax}\fi
+ \gdef\detectdljs{\string_#2}\gdef\dljsBase{#2}%
\global\dljsobjtoks={}%
\expandafter\gdef\csname dljs\dljsBase\endcsname{}%
\ifx\importdljs\dl@YES\ifx\execjs\dl@YES
@@ -590,12 +595,13 @@
\fi\fi
\fi\fi
\immediate\openout \js@verbatim@out \js@Path\dljsBase.djs
- \fdfAfterheader
+ \expandafter\fdfAfterheader\expandafter{\x}%
\js@verbatimwrite
}{%
\fdfendstreamobj
\endjs@verbatimwrite
\fdftrailer
+ \iwvo{\string\restoreDLspecialDefs}%
\closejs@verbatim@out
\expandafter\xdef\csname\dljsBase OBJ\endcsname{\the\dljsobjtoks}%
\edef\@dljstmp{\noexpand\AtBeginDocument{%
@@ -614,8 +620,11 @@
\edef\csname\p@r@m\the\c@dljs@cnt\endcsname{\the\JStoks}}}
\def\pdfSpacesOn{\let\pdfSP\pdfSPDef}
\def\pdfSpacesOff{\let\pdfSP\dl@sp@ce}
+\def\dlcombine(#1)(#2){#1#2}
\def\escIs#1{\def\Eschr{#1}}
+\def\dl@makeesc#1{\catcode`#1=0\relax}
\newenvironment{defineJS}[2][]{%
+ \let\makeesc\dl@makeesc
\expandafter\@ifundefined\expandafter{%
\expandafter\@gobble\string#2}{}{%
\PackageWarning{insdljs}{The command
@@ -632,6 +641,7 @@
\global\let\space\dl@sp@ce\aftergroup\eq@JStemp}
\newenvironment{@defineJS}[2][]
{%
+ \let\makeesc\dl@makeesc
\gdef\defineJSArg{#2}\JStoks={}%
\def\verbatim@processline{%
\xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
diff --git a/texmf-dist/tex/latex/acrotex/template.def b/texmf-dist/tex/latex/acrotex/template.def
index e6055064..d729a131 100644
--- a/texmf-dist/tex/latex/acrotex/template.def
+++ b/texmf-dist/tex/latex/acrotex/template.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -18,7 +18,7 @@
%% License, or (at your option) any later version. %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesFile{template.def}
- [2019/02/11 v8.2.9 %
+ [2019/08/13 v8.3 %
Exerquiz template for language support (dps)]
%%------------- Instructions ------------------------------------
%% Make your language localizations to this file and rename it to
diff --git a/texmf-dist/tex/latex/acrotex/usemcfi.def b/texmf-dist/tex/latex/acrotex/usemcfi.def
index d9a38acf..7d032b47 100644
--- a/texmf-dist/tex/latex/acrotex/usemcfi.def
+++ b/texmf-dist/tex/latex/acrotex/usemcfi.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Exerquiz.sty package, %%
-%% Copyright (C) 1999-2018 D. P. Story %%
+%% Copyright (C) 1999-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/web.sty b/texmf-dist/tex/latex/acrotex/web.sty
index 0d0c8f29..15567251 100644
--- a/texmf-dist/tex/latex/acrotex/web.sty
+++ b/texmf-dist/tex/latex/acrotex/web.sty
@@ -1545,8 +1545,8 @@
}
\ifweb@sectioning\expandafter\web@inputsectiondefs\fi
\def\aebwritelastpage{%
- \immediate\write\@auxout{\string\expandafter\string\gdef
- \string\csname\space aebLastPage\string\endcsname{\arabic{page}}}%
+ \immediate\write\@auxout{%
+ \string\w@csarg\string\gdef{aebLastPage}{\arabic{page}}}%
}
\AtEndDocument{%
\clearpage\addtocounter{page}{-1}\aebwritelastpage