summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--texmf-dist/doc/latex/acrotex/README.md6
-rw-r--r--texmf-dist/doc/latex/acrotex/aeb_man.pdfbin1355808 -> 1355814 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/aeb_man.tex4
-rw-r--r--texmf-dist/doc/latex/acrotex/eformman.pdfbin1192097 -> 989810 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/eformman.tex171
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jquiztst.pdfbin353849 -> 353849 bytes
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jquiztst.tex3
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/jtxttst.tex2
-rw-r--r--texmf-dist/doc/latex/acrotex/examples/webeqtst.tex2
-rw-r--r--texmf-dist/source/latex/acrotex/eforms.dtx1420
-rw-r--r--texmf-dist/tex/latex/acrotex/edvipdfm.def129
-rw-r--r--texmf-dist/tex/latex/acrotex/eforms.sty710
-rw-r--r--texmf-dist/tex/latex/acrotex/epdfmark.def178
-rw-r--r--texmf-dist/tex/latex/acrotex/epdftex.def125
-rw-r--r--texmf-dist/tex/latex/acrotex/pdfdochex.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/setcorder.def2
-rw-r--r--texmf-dist/tex/latex/acrotex/uieforms.def2
17 files changed, 1556 insertions, 1200 deletions
diff --git a/texmf-dist/doc/latex/acrotex/README.md b/texmf-dist/doc/latex/acrotex/README.md
index 3f16d740..0ab4acdb 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-03-16
+Dated: 2019-05-24
AeB contains the following:
@@ -19,6 +19,10 @@ AeB contains the following:
6) Documentation for AeB (AcroTeX eDucatation Bundle) and eForms
(including insdljs and dljslib).
+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.
+
What's New (2019/03/16) minor bug fixes; added \bParams/\eParams command pair to pass
arguments to JS code snippets declared within the defineJS environment. Fixed the spacing
problem when dvips is used to compile a doc containing the defineJS environment.
diff --git a/texmf-dist/doc/latex/acrotex/aeb_man.pdf b/texmf-dist/doc/latex/acrotex/aeb_man.pdf
index c12efd3f..a9d5a9fc 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 ffee27d3..ecc2638b 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/03/16}
+\version{2019/05/24}
\copyrightyears{1999-\the\year}
\nocopyright
-\prepared{2019/03/16}
+\prepared{2019/05/24}
\revisionLabel{Distribution Dated:}
\copyrightStatus{True}
diff --git a/texmf-dist/doc/latex/acrotex/eformman.pdf b/texmf-dist/doc/latex/acrotex/eformman.pdf
index 6544303a..7bdd9b3f 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 803f841d..7538e0a2 100644
--- a/texmf-dist/doc/latex/acrotex/eformman.tex
+++ b/texmf-dist/doc/latex/acrotex/eformman.tex
@@ -12,7 +12,7 @@
\setlength{\marginparpush}{3pt}
-%\previewOn\pmcaOn
+%\previewOn\pmpvOn
\usepackage{graphicx,array,longtable}
%\usepackage[usecmtt]{myriadpro}
@@ -79,7 +79,7 @@
subject={Documentation for the eforms and insdljs packages},
talksite={\url{www.acrotex.net}},
version={2.0},
- prepared={2019/03/16},
+ prepared={2019/05/24},
preparedLabel={Distribution Dated:},
keywords={LaTeX, hyperref, PDF, exercises, quizzes},
copyrightStatus=True,
@@ -161,6 +161,7 @@
\def\AcroTeX{Acro\!\TeX}
\def\HTML{HTML}\def\FDF{FDF}
\def\PDF{PDF}\def\URL{URL}
+\def\DVI{DVI}
%\let\amtIndent\leftmargini
\edef\amtIndent{\the\parindent}
\def\bNH{\begin{NoHyper}}\def\eNH{\end{NoHyper}}
@@ -190,6 +191,7 @@
\def\endredpoint{\FitItIn{{\large\ifusebw\color{black}\else\color{red}\fi$\blacktriangleleft$}}}
\def\pb{pushbutton}
+\def\pbs{pushbuttons}
%\advance\marginparwidth16pt
@@ -307,6 +309,8 @@ _path=_path.substring(0,pos)+"/"+manualfilename;
bOnPrint:false,
cDIPath:_path
});
+this.removeField("topstxtR");
+this.removeField("pbDemoR");
\executeSave();
\end{docassembly}
\begin{document}
@@ -362,10 +366,10 @@ The field can be signed, either by using \app{Acrobat}, or programmatically
from a {\LaTeX} source, but you need to use \textsf{aeb\_pro} and to
create the PDF using \app{Acrobat} Distiller.
-The \textsf{hyperref} Package (Rahtz, Oberdiek \textit{et al})
+The \pkg{hyperref} Package (Rahtz, Oberdiek \textit{et al})
provides support for the same set of form fields; however, not all
features of these fields can be accessed through the
-\textsf{hyperref} commands. I was determined to write my own set
+\pkg{hyperref} commands. I was determined to write my own set
of commands which would be sufficiently comprehensive and
extendable to suit all the needs of the \cAcroB. All the quiz
environments have been modified to use this new set of form
@@ -400,7 +404,7 @@ an integral part of \textsf{Exerquiz}. I've now separated the two, making
\subsection{Package Requirements}
-The \textsf{eforms} package requires \textsf{hyperref} (a newer version)
+The \textsf{eforms} package requires \pkg{hyperref} (a newer version)
and \textsf{insdljs}, a package that is part of the {\cAcroB}.
\subsection{Package Options}
@@ -431,66 +435,99 @@ defined in these earlier included packages.
I fall down easily.
\end{document}
\end{Verbatim}
-\noindent The \textsf{eforms} package brings in the \textsf{hyperref} package
+\noindent The \textsf{eforms} package brings in the \pkg{hyperref} package
and passes it the driver, so there is no need to specify
-\textsf{hyperref}, usually. If you wish to introduce \textsf{hyperref}
+\pkg{hyperref}, usually. If you wish to introduce \pkg{hyperref}
yourself with specific options, place it before \textsf{eforms}.
If you use the \textsf{exerquiz} package, \textsf{exerquiz} brings in the
\textsf{eforms} package and passes the driver to it.
-\subsection{The \texttt{preview} option}
+\subsection{The \texttt{preview} option}\label{s:preview}
%Use the \texttt{preview} option if you use a \texttt{dvi} previewer
%to view your document.
When the \opt{preview} option is taken, a frame box is drawn around any form
field created by \pkg{eforms}, making the position of the field visible in
-the DVI previewer or {\PDF} viewer. Being see to view the position on a form
-element enables you to determine whether any additional adjustments are
-needed to the position of the field. \emph{Turn off this option} when you build the
-final version of your {\PDF} file.
-
-This option was originally developed for those using a DVI previewer, it is
-also useful for those using PDF creators \app{pdflatex}, \app{xelatex}, or
-\app{lualatex}. Modern {\LaTeX} users employ quicker {\PDF} viewers such as \app{sumatraPDF} or
-\app{PDF-Exchange}; these PDF viewers do not create form appearances as \app{Adobe Reader} and \app{Acrobat}
+the {\DVI} previewer or {\PDF} reader. Being able to view the position of a
+form element is important to determine whether any additional adjustments in
+position is. \emph{Turn off this option} when you build the final version of
+the document.
+
+This option was originally developed for those using a {\DVI} previewer, it
+is also useful for those using PDF creators \app{pdflatex}, \app{xelatex}, or
+\app{lualatex}. Modern {\LaTeX} users employ quicker {\PDF} readers such as
+\app{sumatraPDF} or \app{PDF-Exchange}; these non-conforming {\PDF} readers
+may not create form field appearances as \app{Adobe Reader} and \app{Acrobat}
do; consequently, an outline of the positions of the fields is most welcome.
The \texttt{preview} option just sets a switch (\cs{ifpreview}\FmtMP{\cs{ifpreview}}), which can conveniently be
turned off and on using the commands \cs{previewOn}\FmtMP{\cs{previewOn}} and \cs{previewOff}
within the document itself. Related to \cs{previewOn} and \cs{previewOff}\FmtMP{\cs{previewOff}} is
-the command \cs{pmcaOn}, covered in the next paragraph.
+the command \cs{pmpvOn} (poor man's preview), covered in the next paragraph.
-\paragraph*{Poor man's captions.}\label{para:pmca}
+\paragraph*{Enhanced preview (Poor man's preview).}\label{para:pmpv}
-The \cs{pushButton} command of \pkg{eforms} produces a push
-button;\footnote{Push buttons are covered in Section~\ref{s:BtnFlds}, beginning on
+The \cs{pushButton} command of \pkg{eforms} produces a \pb;\footnote{Pushbuttons are covered in Section~\ref{s:BtnFlds}, beginning on
page~\pageref{ss:Pbs}.} a common key to use is the \cs{CA} key, the
value of which captions the button. As a companion to \cs{previewOn},
-\pkg{eforms} defines \cs{pmcaOn}\FmtMP{\cs{pmcaOn}} and
-\cs{pmcaOff}\FmtMP{\cs{pmcaOff}}; when \cs{previewOn} is in effect,
-expanding \cs{pmcaOn} causes the value of the \cs{CA} key to be typeset into
+\pkg{eforms} defines \cs{pmpvOn}\FmtMP{\cs{pmpvOn}} and
+\cs{pmpvOff}\FmtMP{\cs{pmpvOff}}; when \cs{previewOn} is in effect,
+expanding \cs{pmpvOn} causes the value of the \cs{CA} key to be typeset into
the {\pb} preview; for example,\bgroup\makeatletter
-\def\@PMCA{Push Me}\settowidth{\@tempdima}{\,Push Me\,}\edef\x{\the\@tempdima}%
+\def\@PMPV{Push Me}\settowidth{\@tempdima}{\,Push Me\,}\edef\x{\the\@tempdima}%
\def\1{\makebox[0pt][l]{\hskip\linewidth\makebox[0pt][r]
-{\previewOff\pmcaOff\pushButton[\autoCenter{n}\CA{Push Me}]{pbDemo}{}{13bp}\quad
- \previewOn\pmcaOn\ef@Bbox{\x}{13bp}\hspace{40pt}}}}%
+{\previewOff\pmpvOff\pushButton[\autoCenter{n}\CA{Push Me}]{pbDemoL}{}{13bp}\quad
+ \previewOn\pmpvOn\pushButton[\autoCenter{n}\CA{Push Me}]{pbDemoR}{}{13bp}\hspace{40pt}}}}%\ef@Bbox{\x}{13bp}
\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+\previewOn\pmpvOn % <--!textsf(enhanced preview activated)
+...
!1\pushButton[\CA{Push Me}]{pbDemo}{}{13bp}
\end{Verbatim}
-The button on the left is the normal appearance of the push button after
+The button on the left is the normal appearance of the {\pb} after
\app{Reader/Acrobat} has supplied its appearance, the ``button'' on the right
is how the button would appear in \app{sumatraPDF}, for example, just after
{\PDF} creation using \app{pdflatex}, \app{xelatex}, or \app{lualatex}, or in
a DVI previewer after latexing.\egroup
+There are enhanced previews for other fields that support a \cs{V} or \cs{CA}
+key (\pbs, text fields, list boxes, combo boxes, check boxes and
+radio button fields). In each case, the argument of the key is \emph{typeset
+into the document} beneath the field when \cs{pmpvOn} is expanded prior. The
+arguments of \cs{V} and \cs{CA} recognize a local command
+\cs{tops}\FmtMP{\cs{tops}} (\cs{textorpdfstring}) to offer an alternate
+string that is typeset:
+\begin{quote}
+\textField[\V{\tops{preview value}{real value}}]{topstxtL}{1.5in}{13bp}\quad\previewOn\pmpvOn
+\textField[\V{\tops{preview value}{real value}}]{topstxtR}{1.5in}{13bp}\\[6bp]\small
+\verb|\textField[\V{\tops{preview value}{display value}}|\\
+\null\qquad\verb|\DV{real value}]{topstxt}{1.5in}{13bp}|
+\end{quote}
+The field on the left shows how the text field actually appears
+within \app{Adobe Reader}, and the rectangle on the right is how
+that same field appears in a non-conforming PDF reader, such as
+\app{sumatraPDF}. The alias \cs{tops} should only be used within
+the \cs{V} and \cs{CA} keys.
+
+For check box and radio button fields, the \cs{tops} command is not supported
+within the \cs{V} key. For these types of fields, the value key is typically
+a mark: a check, an cross, a star, and so on. The \pkg{eforms} package defines the
+declarative command \cs{pmpvMrk\darg{\ameta{mrk}}} that takes one argument \ameta{mrk}, the (preview) mark
+to be used. The package declares \verb|\pmpvMrk{X}|, another good choice is
+\verb|\pmpvMrk{$\checkmark$}|.
+
+\newtopic\textbf{\textcolor{red}{Final Preparation.}}
In the modern era of {\LaTeX}, it is customary by some to use
-\app{sumatraPDF} or some other {\PDF} viewer during development; however, you
-should always open your final {\PDF} (which was built with
-\cs{previewOff}\cs{pmcaOff}) in \app{Adobe Reader DC} (or in \app{Acrobat}),
-save it to obtain the correct appearances of the fields placed in the
-document.
+\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.
+
+%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
+details and examples; the article is found on the \href{\urlAcroTeXBlog}{\AcroBlog} website.
\subsection{The \texttt{useui} option}
@@ -502,10 +539,10 @@ more ``user-friendly'' to use. See
\hyperref[useui]{Section~\ref*{useui}}, page~\pageref*{useui}, for a
description of these key-value pairs.
-\subsection{The \texttt{unicode} option of \textsf{hyperref}}
+\subsection{The \texttt{unicode} option of \texorpdfstring{\protect\pkg}{}{hyperref}}
The \textsf{eforms} package will obey the \texttt{unicode} option of
-\textsf{hyperref}. Whenever this option is taken in hyperref, for
+\pkg{hyperref}. Whenever this option is taken in hyperref, for
certain keys (namely, \cs{V}, \cs{DV}, \cs{TU}, \cs{CA}, \cs{RC}, and
\cs{AC}), standard latex markup may be used to enter the values of
these keys, for example, in a text field, you might set
@@ -515,13 +552,15 @@ value of ``J\"{u}rgen'' in that text field.
\section{Form Fields}
-The \texttt{eforms} support for {\eForm} defines seven basic (and internal)
+The \pkg{eforms} support for {\PDF} forms defines seven basic (and internal)
commands for creating the seven types of form elements. These seven are used
as ``building blocks'' for defining all buttons, check boxes, radio buttons
and text fields used in the \texttt{exerquiz} quizzes; and for defining seven
user-commands: \cs{listBox}, \cs{comboBox}, \cs{pushButton}, \cs{checkBox},
\cs{radioButton}, \cs{textField}, and \cs{sigField}. These user commands are
-the topic of the subsequent sections.
+the topic of the subsequent sections. Note, viewing these form fields outside of
+\app{Adobe Reader} or \app{Acrobat} itself may be a problem, please review the paragraphs
+on titled \Nameref{s:preview}.
Each of the above listed field commands has an optional first
parameter that is used to modify the appearance of the field,
@@ -591,14 +630,14 @@ Within the first parameter, these three character can be used freely, without es
\subsection{Button Fields}\label{s:BtnFlds}
Buttons are form elements that the user interacts with using only a
-mouse. There are three types of buttons: push buttons, check boxes
+mouse. There are three types of buttons: {\pbs}, check boxes
and radio buttons.
-\subsubsection{Push Buttons}\label{ss:Pbs}
+\subsubsection{Pushbutton fields}\label{ss:Pbs}
-The push button is a button field that has no
-value, it is neither on nor off. Generally, push buttons are used
-to initiate some action, such as JavaScript action.
+The {\pb} is a button field that has no value, it is neither on nor off.
+Generally, {\pbs} are used to initiate some action, such as JavaScript
+action.
\settowidth{\aebdimen}{\cs{pushButton[\#1]\darg{\#2}\darg{\#3}\darg{\#4}}}
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
@@ -608,13 +647,13 @@ to initiate some action, such as JavaScript action.
\PD
\begin{enumerate}
\item[\texttt{\#1}:] optional, used to enter any modification of appearance/actions
-\item[\texttt{\#2}:] the title of the button field
+\item[\texttt{\#2}:] the title of the button field (also called the field name)
\item[\texttt{\#3}:] the width of the bounding rectangle
\item[\texttt{\#4}:] the height of the bounding rectangle
\end{enumerate}
\paragraph*{Default Appearance:} The default appearance of
-a push button is determined by the following:
+a {\pb} is determined by the following:
\begin{Verbatim}[xleftmargin=\amtIndent]
\W{1}\S{B}\F{\FPrint}\BC{0 0 0}
\H{P}\BG{.7529 .7529 .7529}
@@ -650,7 +689,7 @@ width based on the width of the text given by \Cs{CA}, \Cs{RC} and
\pushButton[\CA{Push}\AC{Me}\RC{Reset}\A{/S/ResetForm}]
{myButton}{}{12bp}
\end{Verbatim}
-Refer to the \pkg{icon-appr} package to supply icon appearances to push buttons created by
+Refer to the \pkg{icon-appr} package to supply icon appearances to {\pbs} created by
the \pkg{eforms} package.
\subsubsection{Check Boxes}\label{CheckBoxes}
@@ -1206,7 +1245,7 @@ and can perform a wide range of actions.
The borders of the link commands can be controlled through optional
parameter, their default appearance follow the same pattern of
hyperref: If the \texttt{colorlinks} option is used (in
-\textsf{hyperref}) then the border is invisible by default;
+\pkg{hyperref}) then the border is invisible by default;
otherwise, there is a visible border.
When the \texttt{colorlinks} option is chosen (in hyperref), the
@@ -1216,7 +1255,7 @@ is a named color. \cs{defaultlinkcolor} has a definition of
\newcommand{\defaultlinkcolor}{\@linkcolor}
\end{Verbatim}
\noindent where \cs{@linkcolor} is a command defined in
-\textsf{hyperref}, and is defined to be \texttt{red}. This can be
+\pkg{hyperref}, and is defined to be \texttt{red}. This can be
redefined as desired.\footnote{The {\Web} package redefines
\cs{@linkcolor} to be a flavor of green.}
@@ -1237,7 +1276,7 @@ parameter takes key-value pairs to change appearance and define
actions. The default appearance of this link is \verb!\S{S}\Border{0 0 0}!,
an invisible yet solid border line. (The visibility of the border is
actually controlled by the \texttt{colorlinks} option of
-\textsf{hyperref}, as explained above.) The second parameter is the
+\pkg{hyperref}, as explained above.) The second parameter is the
link text. This argument does not have to be text, it can be
anything that takes up space, such as a graphic or \cs{parbox}.
@@ -2045,7 +2084,7 @@ For example,
uptxt={Push Me}
}
\end{Verbatim}
-Later, a push button can use this preset, like so,
+Later, a {\pb} can use this preset, like so,
\begin{Verbatim}[xleftmargin=\amtIndent]
\pushButton[\ui{presets=\myFavFive,
js={app.alert("AcroTeX rocks!")}}]{pb1}{}{11bp}
@@ -2076,7 +2115,7 @@ border line width to zero \verb!\W{0}!. For forms, this key has no
counterpart in the user interface.
If this key is not specified, the \textsf{eforms}
-follows the rule: If \texttt{colorlinks} option of \textsf{hyperref} is used, the border is invisible;
+follows the rule: If \texttt{colorlinks} option of \pkg{hyperref} is used, the border is invisible;
otherwise, it is visible (and the default \texttt{linewidth} is 1). Use the border key to override
this behavior.
@@ -2173,7 +2212,7 @@ values are ``or-ed'' together.
Normally, a document author would not specify \texttt{radio},
\texttt{pushbutton} or \texttt{combo}. These properties are used by
-\textsf{eforms} to construct a radio button field, a push button and a combo
+\textsf{eforms} to construct a radio button field, a {\pb} and a combo
box. The others can be used as appropriate.
\settowidth{\aebdimen}{\ttfamily maxlength=\anglemeta{num}}%
@@ -2256,7 +2295,7 @@ If the \opt{unicode} option of \pkg{hyperref} is in effect, then setting
% \texttt{eqforms\_pro.tex}
-\newtopic \textbf{Push buttons only.} The following list of keys are used for
+\newtopic \textbf{Pushbuttons only.} The following list of keys are used for
creating custom appearances on button faces. \app{Acrobat} Distiller required for
this set. The example files
\marginpar{\mbox{\makebox[0pt][l]{\textcolor{blue}{\Pisymbol{webd}{254}}}\raisebox{-2pt}{\color{red}{{\zqacr
@@ -2976,7 +3015,7 @@ the \textsf{eforms} package defines its own \cs{pushButton} command.
\Example Here is the same example as above, but with \textsf{dvips} as the
driver and using the \textsf{eforms} package, which calls
\textsf{insdljs}. Note the use of the optional argument in the
-\texttt{insDLJS} environment, and the missing \textsf{hyperref} package
+\texttt{insDLJS} environment, and the missing \pkg{hyperref} package
statement and \texttt{Form} environment, the \textsf{eforms} package
automatically inserts this code.
\begin{Verbatim}[xleftmargin=\amtIndent]
@@ -3481,7 +3520,7 @@ FfMultiline? & For Multiline text field & text\\
FfPassword? & Password field & text \\
FfNoToggleToOff? & Used with Radio Buttons & Radio only\\
FfRadio? & Radio Button Flag & Radio if set\\
-FfPushButton? & Push Button Flag & Push button\\
+FfPushButton? & Push Button Flag & Pushbutton\\
FfCombo? & Combo Flag & choice\\
FfEdit? & Edit/NoEdit & combo\\
FfSort? & Sort List & choice\\
@@ -3593,38 +3632,38 @@ BC?& The boundary color, a list of 0 (transparent), 1 (gray), 3 (RGB) or 4 (CMYK
&\verb+\BC{}+\newline(transparent)\\
BG?& Background color. Color specification same as \cs{BC}&\verb+\BG{}+\newline(transparent)\\
CA?& Button fields (push, check, radio) The widget's normal caption; e.g. \verb+\CA{Push}+,
- in the case of a push button. For check boxes and radio, the value of
+ in the case of a {\pb}. For check boxes and radio, the value of
\cs{CA} is a code that indicates whether a check, circle, square, star, etc.
is used. These codes are introduced through \cs{symbolchoice}. Obeys \texttt{unicode} option.&\verb+\CA{}+\\
-RC?& Push button fields only. The roll over text caption. Obeys \texttt{unicode} option.&\verb+\RC{}+\\
-AC?& Push button fields only. The down button caption. Obeys \texttt{unicode} option.&\verb+\AC{}+\\
+RC?& Pushbutton fields only. The roll over text caption. Obeys \texttt{unicode} option.&\verb+\RC{}+\\
+AC?& Pushbutton fields only. The down button caption. Obeys \texttt{unicode} option.&\verb+\AC{}+\\
mkIns?& A variable for introducing into the \texttt{MK} dictionary any other key-value pairs not listed above.
Principle examples are \texttt{I}, \texttt{RI}, \texttt{IX}, \texttt{IF}, \texttt{TP},
which are used for displaying icons on a button field. See an
example in the demo file \textsf{eforms.tex} &\verb+\mkIns{}+\\
-I? & (push buttons only) an indirect reference to a form XObject defining the buttons's
+I? & ({\pbs} only) an indirect reference to a form XObject defining the buttons's
\emph{normal icon}&\verb+\I{nIcon}+\newline(example)\\
-RI? & (push buttons only) an indirect reference to a form XObject
+RI? & ({\pbs} only) an indirect reference to a form XObject
defining the buttons's \emph{rollover icon}&\verb+\RI{rIcon}+\newline(example)\\
-IX? & (push buttons only) an indirect reference to a form XObject
+IX? & ({\pbs} only) an indirect reference to a form XObject
defining the buttons's \emph{down icon}&\verb+\I{dIcon}+\newline(example)\\
-importIcons? & (push buttons only) a special key to signal that this button is the target
+importIcons? & ({\pbs} only) a special key to signal that this button is the target
of JavaScript that will supply the icons faces. Syntax: \cs{importIcons\darg{y|n}}&\verb|\importIcons{n}|\\
-TP? & \texttt{\darg{\ameta{\upshape{0|1|2|3|4|5|6}}}} (push buttons only; optional)
+TP? & \texttt{\darg{\ameta{\upshape{0|1|2|3|4|5|6}}}} ({\pbs} only; optional)
A code indicating the \texttt{layout} of the text and icon; these codes are
0~(label only); 1~(icon only); 2~(label below icon); 3~(label above icon); 4~(label to the right of icon);
5~(label to the left of icon); 6~(label overlaid on the icon). The default is 0.&\verb+\TP{0}+\\
-SW? & \texttt{\darg{\ameta{\upshape{A|B|S|N}}}} (push buttons only; optional) The \emph{scale when key}. Permissible values are \texttt{A} (always scale),
+SW? & \texttt{\darg{\ameta{\upshape{A|B|S|N}}}} ({\pbs} only; optional) The \emph{scale when key}. Permissible values are \texttt{A} (always scale),
\texttt{B} (scale when icon is too big), \texttt{S} (scale when icon is too small), \texttt{N}
(never scale). The default is \texttt{A}. &\verb+\SW{A}+\\
-ST? & \texttt{\darg{\ameta{\upshape{A|P}}}} (push buttons only; optional) The \emph{scaling type.} Permissible values are \texttt{A}
+ST? & \texttt{\darg{\ameta{\upshape{A|P}}}} ({\pbs} only; optional) The \emph{scaling type.} Permissible values are \texttt{A}
(anamorphic scaling); \texttt{P} (proportional scaling). The default is \texttt{P}.
&\verb+\ST{P}+\\
-PA? & \texttt{\darg{\ameta{num\SUB1\space num\SUB2}}} (push buttons only; optional) The \textit{position array.} An array of two numbers, each
+PA? & \texttt{\darg{\ameta{num\SUB1\space num\SUB2}}} ({\pbs} only; optional) The \textit{position array.} An array of two numbers, each
between 0 and 1 indicating the fraction of left-over space to allocate at the left and bottom
of the annotation rectangle. The two numbers should be separated by a space. The default value, \verb!\PA{.5 .5}!,
centers the icon in the rectangle. & \verb!\PA{.5 .5}!\\
-FB? & \texttt{\darg{true|false}} (push buttons only; optional) The \emph{fit bounds} Boolean. If \texttt{true}, the button appearance
+FB? & \texttt{\darg{true|false}} ({\pbs} only; optional) The \emph{fit bounds} Boolean. If \texttt{true}, the button appearance
is scaled to fit fully within the bounds of the annotation without taking into consideration
the line width of the border. &\verb+\FB{false}+\\\hline
%--------------------------------------------------------------
diff --git a/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf b/texmf-dist/doc/latex/acrotex/examples/jquiztst.pdf
index 3f604225..30175b4f 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 c1148c82..7bb46805 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex
+++ b/texmf-dist/doc/latex/acrotex/examples/jquiztst.tex
@@ -10,6 +10,8 @@
\usepackage[ImplMulti]{dljslib}
\usepackage{pifont}
+% \previewOn \pmpvOn
+
\title{Extending the Exerquiz Package Math Fillin Questions}
\author{D. P. Story}
\subject{Sample file}
@@ -231,6 +233,7 @@ Or, in the syntax of this quiz: \js{-2*t^(-3/2)}.
\sqClearButton\olBdry\sqTallyTotal
\end{flushright}
+
\subsection{Quiz Environment}\label{s:quiz}
The example below illustrates multiple choice questions
diff --git a/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex b/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
index 4d78e086..2311e217 100644
--- a/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
+++ b/texmf-dist/doc/latex/acrotex/examples/jtxttst.tex
@@ -5,6 +5,8 @@
\usepackage{exerquiz}
\usepackage[indefIntegral]{dljslib}
+% \previewOn \pmpvOn
+
\title{Extending the Exerquiz Package Text Fill-in Questions}
\author{D. P. Story}
\subject{Sample file}
diff --git a/texmf-dist/doc/latex/acrotex/examples/webeqtst.tex b/texmf-dist/doc/latex/acrotex/examples/webeqtst.tex
index eb9b806a..0662bd73 100644
--- a/texmf-dist/doc/latex/acrotex/examples/webeqtst.tex
+++ b/texmf-dist/doc/latex/acrotex/examples/webeqtst.tex
@@ -3,6 +3,8 @@
\usepackage[tight,designvi]{web}
\usepackage{exerquiz}
+% \previewOn \pmpvOn
+
\title{\texorpdfstring{Acro\!\TeX}{AcroTeX} eDucation Bundle
\texorpdfstring{\\[1ex]}{:}Exercises and Quizzes}
\author{D. P. Story}
diff --git a/texmf-dist/source/latex/acrotex/eforms.dtx b/texmf-dist/source/latex/acrotex/eforms.dtx
index c74dea98..dcfcbd78 100644
--- a/texmf-dist/source/latex/acrotex/eforms.dtx
+++ b/texmf-dist/source/latex/acrotex/eforms.dtx
@@ -4,7 +4,7 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-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{eforms}
-%<package> [2019/03/16 v2.10 Provides general eforms support (dps)]
+%<package> [2019/05/24 v2.11 Provides general eforms support (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}[2012/10/12]
@@ -42,7 +42,7 @@
\PackageInfo{eforms}{aebdocfmt.def cannot be found}}
\begin{document}
\GetFileInfo{eforms.sty}
- \title{eForm: PDF Form support for \LaTeX}
+ \title{\textsf{eforms}: PDF Form support for \LaTeX}
\author{D. P. Story\\
Email: \texttt{dpstory@uakron.edu}}
\date{processed \today}
@@ -72,9 +72,9 @@
%
% This {\LaTeX} code was originally part of the \textsf{exerquiz} package.
% I decided it would be useful to others if I separated the two and make
-% the forms part of \textsf{exerquiz} into a separate package. The
-% \textsf{eforms} Package is now a part of the \textsf{{Acro\TeX} eDucation
-% Bundle} and is called by \textsf{exerquiz}, but it is now a stand alone
+% the forms part of \pkg{exerquiz} into a separate package. The
+% \pkg{eforms} package is now a part of the \textsf{{Acro\TeX} eDucation
+% Bundle} and is called by \pkg{exerquiz}, but it is now a stand alone
% package for others who may want to use PDF form fields and JavaScript
% interactivity.
%
@@ -104,82 +104,73 @@
% \begin{macrocode}
\let\ef@driver\@empty
\DeclareOption{dvipsone}{\def\eq@drivernum{0}%
- \def\eq@drivername{0}\def\ef@driver{dvipsone}%
- \def\eq@drivercode{epdfmark.def}%
- \PassOptionsToPackage{dvipsone}{insdljs}%
- \PassOptionsToPackage{dvipsone}{hyperref}%
+ \def\eq@drivername{0}\def\ef@driver{dvipsone}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvipsone}{insdljs}%
+ \PassOptionsToPackage{dvipsone}{hyperref}%
}
\def\eq@drivername{2}
% \end{macrocode}
% Set the driver for \texttt{dvips}\IndexOpt{dvips}
% \begin{macrocode}
\DeclareOption{dvips}{\def\eq@drivernum{0}%
- \def\eq@drivername{1}\def\ef@driver{dvips}%
- \def\eq@drivercode{epdfmark.def}%
- \PassOptionsToPackage{dvips}{insdljs}%
- \PassOptionsToPackage{dvips}{hyperref}%
+ \def\eq@drivername{1}\def\ef@driver{dvips}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvips}{insdljs}%
+ \PassOptionsToPackage{dvips}{hyperref}%
}
% \end{macrocode}
% Set the driver for \texttt{pdftex}\IndexOpt{pdftex}
-% \begin{macrocode}
-\DeclareOption{pdftex}{%
- \def\eq@drivernum{1}\def\eq@driver{pdftex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
-% \end{macrocode}
% \changes{v2.9b}{2016/07/22}{Do not pass pdftex driver to insdljs or hyperref}
% \begin{macrocode}
-% \PassOptionsToPackage{pdftex}{insdljs}
-% \PassOptionsToPackage{pdftex}{hyperref}
+\DeclareOption{pdftex}{%
+ \def\eq@drivernum{1}\def\eq@driver{pdftex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
}
% \end{macrocode}
% Added \textsf{luatex} option
% \changes{v2.9m}{2017/09/03}{Add luatex option}
% \begin{macrocode}
\DeclareOption{luatex}{%
- \def\eq@drivernum{1}\def\eq@driver{luatex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
+ \def\eq@drivernum{1}\def\eq@driver{luatex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
}
% \end{macrocode}%
% Set the drivers for \texttt{dvipdfm}\IndexOpt{dvipdfm}. \texttt{dvipdfmx}\IndexOpt{dvipdfmx},
% and \texttt{xetex}\IndexOpt{xetex}.
+% \changes{v2.9b}{2016/07/22}{Do not pass xetex driver to insdljs or hyperref}
% \begin{macrocode}
\DeclareOption{dvipdfm}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
- \PassOptionsToPackage{dvipdfm}{insdljs}
- \PassOptionsToPackage{dvipdfm}{hyperref}
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
+ \PassOptionsToPackage{dvipdfm}{insdljs}
+ \PassOptionsToPackage{dvipdfm}{hyperref}
}
\DeclareOption{dvipdfmx}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
- \PassOptionsToPackage{dvipdfmx}{insdljs}
- \PassOptionsToPackage{dvipdfmx}{hyperref}
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
+ \PassOptionsToPackage{dvipdfmx}{insdljs}
+ \PassOptionsToPackage{dvipdfmx}{hyperref}
}
\DeclareOption{xetex}{%
- \def\eq@drivernum{2}\def\eq@driver{xetex}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
-% \end{macrocode}
-% \changes{v2.9b}{2016/07/22}{Do not pass xetex driver to insdljs or hyperref}
-% \begin{macrocode}
-% \PassOptionsToPackage{xetex}{insdljs}
-% \PassOptionsToPackage{xetex}{hyperref}
+ \def\eq@drivernum{2}\def\eq@driver{xetex}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
}
% \end{macrocode}
% \IndexOpt{textures}
% This option, and testing are due to Ross Moore 3/6/02
% \begin{macrocode}
\DeclareOption{textures}{%
- \def\eq@drivernum{3}\def\eq@driver{textures}%
- \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
- \PassOptionsToPackage{textures}{insdljs}%
- \PassOptionsToPackage{textures}{hyperref}
+ \def\eq@drivernum{3}\def\eq@driver{textures}%
+ \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
+ \PassOptionsToPackage{textures}{insdljs}%
+ \PassOptionsToPackage{textures}{hyperref}
}
% \end{macrocode}
% If no driver is passed, assume it is
% \textsf{dvipsone} or \textsf{dvips}---\textsf{hyperref} defines the specials.
% Default driver dvipsone/dvips
% \begin{macrocode}
-% \def\eq@drivernum{0}
\def\eq@driver{dvipsone/dvips}
\def\eq@drivercode{epdfmark.def}
% \end{macrocode}
@@ -197,8 +188,12 @@
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{insdljs}}
\@ifundefined{ifpreview}{\newif\ifpreview\previewfalse}{}
% \end{macrocode}
-% (2017/01/01) Added two convenience commands.
+% (2017/01/01) Added two convenience commands, these are \DescribeMacro\previewOn\cs{previewOn}
+% and \DescribeMacro\previewOff\cs{previewOff}. Beginning with 2019/05/24, `enhanced preview'
+% is introduced, see comments \hyperref[pmpv]{below}.
% \changes{v2.9f}{2017/01/01}{Added \string\cs{previewOn} and \string\cs{previewOff}}
+% \changes{v2.11}{2019/05/24}{Introduce `enhanced preview' targeted at users of non-conforming
+% PDF viewer.}
% \begin{macrocode}
\providecommand{\previewOn}{\previewtrue}
\providecommand{\previewOff}{\previewfalse}
@@ -213,18 +208,18 @@
% \begin{macrocode}
\DeclareOption{useui}{\AtEndOfPackage{\ef@InputUIeForms}}
\def\ef@InputUIeForms{\InputIfFileExists{uieforms.def}%
- {\PackageInfo{eforms}{Inputting code for useui option}}%
- {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
- Reinstall or refresh your file name database.}}}
+ {\PackageInfo{eforms}{Inputting code for useui option}}%
+ {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}
% \end{macrocode}
% The \texttt{setcorder} option\IndexOpt{setcorder} is used to set the calculation order
% in a forms document. Normally, the calculation order is the order the fields are created.
% \begin{macrocode}
\DeclareOption{setcorder}{\def\inputCalcOrderJS{%
- \InputIfFileExists{setcorder.def}%
- {\PackageInfo{eforms}{Inputting code for setcorder option}}%
- {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
- Reinstall or refresh your file name database.}}}}
+ \InputIfFileExists{setcorder.def}%
+ {\PackageInfo{eforms}{Inputting code for setcorder option}}%
+ {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}}
\let\inputCalcOrderJS\relax
% \end{macrocode}
% \changes{v2.5o}{2012/06/18}{Added automatic test for \string\textsf{pdftex}.}
@@ -247,13 +242,13 @@
% \begin{macrocode}
\ProcessOptions
\ifx\ef@driver\@empty
- \PackageError{eforms}%
- {You have not specified dvips, dvipsone, pdftex,\MessageBreak
- dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
- the eforms package}
- {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the eforms package.}%
+ \PackageError{eforms}%
+ {You have not specified dvips, dvipsone, pdftex,\MessageBreak
+ dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
+ the eforms package}
+ {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the eforms package.}%
}{}
\fi
\newlength\eflength
@@ -291,11 +286,11 @@
\AtEndDocument{\csname endForm\endcsname}
}
\@ifpackageloaded{aeb_pro}{}{%
- \newcommand{\taggedPDF}{%
- \ifnum\eq@drivernum=0\relax
- \literalps@out{[{Catalog} <<%
- /MarkInfo<</Marked true>>%
- >> /PUT pdfmark}\fi}%
+ \newcommand{\taggedPDF}{%
+ \ifnum\eq@drivernum=0\relax
+ \literalps@out{\AEB@psMrk{Catalog} <<%
+ /MarkInfo<</Marked true>>%
+ >> /PUT pdfmark}\fi}%
}
\let\ef@YES=y \let\ef@NO=n
\let\ef@One=1 \let\ef@Zero=0
@@ -327,7 +322,7 @@
% \DescribeMacro{\makePDasXDOff}\cs{makePDasXDOff} to set the switch to true and false, respectively.
% \changes{v2.9d}{2016/12/22}{Added switches \string\cs{ifmakeXasPD} and \string\cs{ifmakePDasX}}
% \begin{macrocode}
-\newif\ifmakeXasPD \makeXasPDtrue % 12/22
+\newif\ifmakeXasPD \makeXasPDtrue
\newif\ifmakePDasX \makePDasXfalse
\def\makeXasPDOn{\makeXasPDtrue\makePDasXfalse}
\def\makeXasPDOff{\makeXasPDfalse}
@@ -345,7 +340,9 @@
\let\ckbox@Color\relax\else
\def\ckbox@Color{\color{#1}}\fi}\let\ckbox@Color\relax
% \end{macrocode}
-% The \DescribeMacro\ef@Bbox\cs{ef@Bbox} command places a rule of width
+% \leavevmode
+% \DescribeMacro\ef@Bbox\hskip-\marginparsep\texttt{\darg{\ameta{width}}\darg{\ameta{height}}}
+% places a rule of width
% \DescribeMacro\efPreviewOnRule\cs{efPreviewOnRule}. When the specified
% dimensions of the bounding rectangle is less than \texttt{2\cs{fboxrule}},
% we \emph{do not} reduce the dimensions; otherwise, we reduce the width and height
@@ -354,9 +351,22 @@
% \cs{ef@Bbox} is let to \cs{Bbox}.
% \begin{macrocode}
\def\efPreviewOnRule{0.4pt}
-\def\PMCA#1{\def\@rgi{#1}\ifx\@rgi\@empty
- \let\@PMCA\@empty\else\def\@PMCA{\hb@xt@\z@{\hss#1\hss}}\fi}
-\let\@PMCA\@empty
+% \end{macrocode}
+% \leavevmode
+% \DescribeMacro\PMPV\hskip-\marginparsep\texttt{\darg{\ameta{text}}} provides \ameta{text}
+% as preview text for a field. Its argument is used to define the text macro \cs{@PMPV}
+%\changes{v2.11}{2019/05/24}{Define \string\cs{PMPV} to enhance preview}
+% \begin{macrocode}
+\def\PMPV#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\@PMPV\@empty\else\edef\@PMPV{\noexpand
+ \hb@xt@\noexpand\z@{\hss#1\hss}}\fi}
+\let\@PMPV\@empty
+\let\pmpvFmt\@empty
+% \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});
+% while \cs{@PMPV} is a text macro defined by \cs{PMPV} that displays, normally, nothing, or \cs{eq@V} or \cs{eq@CA}.
+% \begin{macrocode}
\def\ef@Bbox#1#2{\hbox{\ifpreview
\setlength\fboxrule{\efPreviewOnRule}\setlength\fboxsep{0pt}%
\@tempdima=#1\relax
@@ -366,9 +376,12 @@
\ifdim\@tempdimb<2\fboxrule\else
\advance\@tempdimb by-2\fboxrule\fi
\ckbox@Color\fbox{\parbox[b][\@tempdimb][c]{\@tempdima}%
- {\vfil\hfil\@PMCA\hfil\vfil}}\else
+ {\vfil\hfil\pmpvFmt{\@PMPV}\hfil\vfil}}\else
\parbox[b][#2][c]{#1}{\vfil\hfil\hfil\vfil}\fi}%
}
+% \end{macrocode}
+% The public version of \cs{ef@Bbox} is simply \DescribeMacro\Bbox\cs{Bbox}.
+% \begin{macrocode}
\let\Bbox\ef@Bbox
%</package>
% \end{macrocode}
@@ -405,19 +418,23 @@
% process the optional arguments of a form field.
%
% All legal arguments (see \nameref{eformvariables} for a detailed
-% listing) are of the form |\<name>{arg}|.
+% listing) are of the form \cs{\ameta{name}\darg{\ameta{arg}}}.
% The macro takes two tokens at a time and constructs a macro
-% |\@eq<name>{arg}|. Each of the macros |\@eq<name>| must be
+% \cs{@eq\ameta{name}\darg{\ameta{arg}}}. Each of the macros \cs{@eq\ameta{name}} must be
% defined. Such a macro defines another macro as follows
-% |\def\eq@<name>{arg}|. For example if the user enters the token
+% \cs{def\string\eq@\ameta{name}\darg{\ameta{arg}}}. For example if the user enters the token
% pair |\RC{Users}|, \cmd{\processAppArgs} will construct
-% |\@eqRC|, with argument \verb+{arg}+, this macro will be
-% executed, which expands to \verb+\def\eq@RC{arg}+. The macro
+% |\@eqRC|, with argument |{Users}|, this macro will be
+% executed, which expands to |\def\eq@RC{Users}|. The macro
% \cmd{\eq@RC} may then be used within the construction of the
-% widget object.
+% widget object.\medskip
%
-% The macro \cs{processAppArgs} also does the addition operation for
-% \texttt{/F} and \texttt{/Ff} keys.
+% \noindent
+% \DescribeMacro\proccessAppArgs\hskip-\marginparsep\texttt{\darg{\ameta{key}}\darg{\ameta{value}}}
+% The macro takes pairs of key-values and constructs auxiliary macros, as described above.
+% It also does an addition operation for \textsf{\textbf{F}} (\cs{F}) and \textsf{\textbf{Ff}} (\cs{Ff}) entries.
+% Initially, it is called by |\processAppArgs|\texttt{\ameta{KV-pairs}}|\end\@nil|, \cs{end} being the detected
+% end of the stream of key-values.
% \begin{macrocode}
\let\ef@passedArgs\@empty
\def\processAppArgs#1#2{%
@@ -430,6 +447,8 @@
% this is done for \cs{A} and \cs{AA} to prevent overwriting critical functionality.
% \begin{macrocode}
\ifx#1\@empty
+% \@getCmdName{#1}\PackageWarning{eforms}
+% {Redefining the \eqbs\@CmdName\space key is not allowed}%
\def\ef@next{\processAppArgs}%
\else
% \end{macrocode}
@@ -468,16 +487,27 @@
\else
% \end{macrocode}
% If current key is |\F|, we add its value to the current value of |\F|.
-% We basically are ```or-ing'' new value with the old value in the bit field.
+% We basically are `or-ing' the new value with the old value in the bit field.
% \begin{macrocode}
\@getCmdName{\F}\edef\arg@F{\@CmdName}%
\@getCmdName{#1}%
- \ifx\arg@F\@CmdName % if \Ff, let's add arguments
+ \ifx\arg@F\@CmdName % if \F, let's add arguments
\ifx\eq@F\@empty\def\eq@FValue{0}\else
\expandafter\getFValue\eq@F\@nil\fi
\@tempcnta=\eq@FValue
\def\eq@arg{#2}%
\ifx\eq@arg\@empty\else
+% \end{macrocode}
+% Something included in for `enhanced previews' is we test if this field is hidden
+% (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
+ \let\ef@isHidden\ef@YES\else
+ \ifnum#2=32\relax
+ \let\ef@isHidden\ef@YES\else
+ \let\ef@isHidden\ef@NO
+ \fi\fi
\advance\@tempcnta by#2\fi
\edef\eq@F{/F \the\@tempcnta}%
\def\ef@next{\processAppArgs}%
@@ -492,6 +522,26 @@
\ifx\arg@presets\@CmdName
\def\ef@next{\expandafter\processAppArgs#2}%
\else
+% \end{macrocode}
+% (2019/01/22) Here, we process the \cs{epresets} key. For \cs{epresets}, all
+% \pkg{eforms} keys should be protected, as we expand fully. This is useful when
+% the argument of \cs{presets} is a macro of the form \cs{csname}/\cs{endcsname}.
+% An ordinary \cs{presets} does not work, we must use \cs{epresets}:
+%\begin{verbatim}
+% \expandafter\def\csname fld1\endcsname#1{\protect\BG{#1}}
+% \textField[\epresets{\nameuse{fld1}{yellow}}]{mytxt}{2in}{13bp}
+%\end{verbatim}
+%In the above example we use \cs{nameuse} rather than \cs{@nameuse}, since in a recent
+%version of \pkg{eforms}, we \cs{let} \cs{nameuse} to \cs{@nameuse}.
+%We can also say,
+%\begin{verbatim}
+% \protectedKeys{pKeys}{\BG{red}\BC{blue}}
+%% \nameuse is expanded within the argument below, where it is defined
+% \expandafter\def\csname fld2\endcsname{\nameuse{pKeys}}
+% \pushButton[\CA{Push Me}\epresets{\nameuse{fld2}}]{pb1}{}{13bp}
+%\end{verbatim}
+%where \cs{protectedKeys} is used to protected each of the keys in its argument.
+% \begin{macrocode}
\@getCmdName{\epresets}%
\edef\arg@epresets{\@CmdName}\@getCmdName{#1}%
\ifx\arg@epresets\@CmdName
@@ -500,8 +550,8 @@
\processAppArgs\x}% dps27
\else
% \end{macrocode}
-% This is the last, and the most frequent case. We process a common key, one
-% that is not |\presets|, |\ui|, |\Ff| or |\F|.
+% This is the last, and the most frequent case. We process an ordinary key, one
+% that is not |\presets|, |\epresets|, |\ui|, |\Ff| or |\F|.
% \begin{macrocode}
\csname @eq%
\expandafter\@gobble\string#1\endcsname{#2}%
@@ -571,7 +621,10 @@
}
% \end{macrocode}
%
-% \subsection{eForm Variables}\label{eformvariables}
+% \subsection{\textsf{eforms} key-values}\label{eformvariables}
+%
+% We maintain two key-value systems: (1) \pkg{eforms} key-values, (2) user-friendly
+% key-value system. The latter requires the option \opt{useui}.
%
% \subsubsection{Key-Value Definitions}
%
@@ -582,7 +635,7 @@
% appearance.
%
% You'll notice, for example, the macros listed are not actually defined. For example
-% \cmd{\CA} is never actually defined; we define instead \cmd{\@eqCA} and \cmd{\eq@CA}.
+% \cmd{\CA} is never defined, we define instead \cmd{\@eqCA} and \cmd{\eq@CA}.
% The macros \cmd{\processAppArgs} treats \cmd{\CA} as a token, and prefixes with
% \texttt{@eq} in a clever sort of way. It's done so that these macros cannot be used
% outside the optional macro arguments of the button and text field macros.
@@ -598,12 +651,12 @@
% \DescribeMacro{\BS}The \textbf{Border Style} key, \texttt{BS}: \texttt{W}, \texttt{S}, \texttt{D} (dictionary, optional)
% \begin{macrocode}
\def\@eqBS#1{%
- \let\eq@BS=0\relax
- \ifx\eq@W\@empty\else\let\eq@BS=1\fi
- \ifx\eq@S\@empty\else\let\eq@BS=1\fi
- \ifx\eq@D\@empty\else\let\eq@BS=1\fi
- \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
- \ifx\eq@W\@empty\let\link@BS\@empty\fi
+ \let\eq@BS=0\relax
+ \ifx\eq@W\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@S\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@D\@empty\else\let\eq@BS=1\fi
+ \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
+ \ifx\eq@W\@empty\let\link@BS\@empty\fi
}\def\link@BS{}
% \end{macrocode}
% \changes{v1.0e}{2008/03/04}
@@ -622,13 +675,13 @@
% \DescribeMacro{\W} The width of the boundary line.
% \begin{macrocode}
\def\@eqW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@W\@empty\def\eq@W@value{0}\else
- \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
+ \let\eq@W\@empty\def\eq@W@value{0}\else
+ \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
% \end{macrocode}
% (2016/12/22) Add a global value for boundary width, used to adjust the spacing between form fields
% \changes{v2.9d}{2016/12/22}{Add a global value for boundary width}
% \begin{macrocode}
- \xdef\g@eq@W@value@bp{\eq@W@value bp}}
+ \xdef\g@eq@W@value@bp{\eq@W@value bp}}
\def\eq@W{}\def\eq@W@value{0}
\def\g@eq@W@valu@bp{0bp} % dps 12/22
% \end{macrocode}
@@ -636,17 +689,17 @@
% \texttt{B} (beveled), \texttt{I} (inset), \texttt{U} (underlined)
% \begin{macrocode}
\def\@eqS#1{\def\eq@S@value{#1}\ifx\eq@S@value\@empty
- \let\eq@S\@empty\else
- \def\eq@S{/S/#1}\def\eq@temp{D}%
- \ifx\eq@S@value\eq@temp
- \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
- \fi\fi}\def\eq@S{}
+ \let\eq@S\@empty\else
+ \def\eq@S{/S/#1}\def\eq@temp{D}%
+ \ifx\eq@S@value\eq@temp
+ \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
+ \fi\fi}\def\eq@S{}
% \end{macrocode}
% \DescribeMacro{\D} The dash array.
% \begin{macrocode}
\def\@eqD#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@D\@empty\else
- \def\eq@D{/D [#1]}\fi}\def\eq@D{}
+ \let\eq@D\@empty\else
+ \def\eq@D{/D [#1]}\fi}\def\eq@D{}
% \end{macrocode}
% \DescribeMacro{\Border} Used with \emph{link annotations}, an array of three numbers and an optional dash array.
% If all three numbers are 0, no border is drawn
@@ -731,67 +784,67 @@
% number and decrement it.
% \begin{macrocode}
\long\def\ef@searchrPage#1\rPage#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
+ \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
% \end{macrocode}
% When the user specifies |\mlLink{true}| in the option list, we branch off to
% \cs{mlhypertext}.
% \begin{macrocode}
\def\ef@searchmlLink#1\mlLink#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
- \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
- \let\ef@mlLink\ef@Zero\fi\fi}
+ \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
+ \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
+ \let\ef@mlLink\ef@Zero\fi\fi}
% \end{macrocode}
% Search for \texttt{/GoToR}, if found, change the link color to |\@filecolor|
% \begin{macrocode}
\def\ef@searchGoToR#1/GoToR#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@filecolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@filecolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
% \end{macrocode}
% Search for \texttt{/URI}, if found, change the link color to |\@urlcolor|
% \begin{macrocode}
\def\ef@searchURI#1/URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchCmdURI#1\URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
% \end{macrocode}
% Search for \texttt{/Named}, if found, change the link color to |\@menucolor|
% \begin{macrocode}
\def\ef@searchNamed#1/Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchCmdNamed#1\Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
% \end{macrocode}
% Search for \texttt{/Launch}, if found, change the link color to |\@runcolor|
% \begin{macrocode}
\def\ef@searchLaunch#1/Launch#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@runcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@runcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
% \end{macrocode}
% Executed by |\eq@A|, which calls the search routines defined above, at least
% in the case of links. It also searches for |\rPage|.
% \begin{macrocode}
\def\ef@preprocessA#1{%
- \let\rPage\relax\edef\ef@argi{#1}%
- \ifx\annot@type\annot@type@link
- \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
- \expandafter\ef@searchURI\ef@argi/URI\end\@nil
- \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
- \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
- \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
- \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
- \ef@endmarker\fi
- \let\rPage\ef@rPage
- \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
+ \let\rPage\relax\edef\ef@argi{#1}%
+ \ifx\annot@type\annot@type@link
+ \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
+ \expandafter\ef@searchURI\ef@argi/URI\end\@nil
+ \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
+ \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
+ \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
+ \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
+ \ef@endmarker\fi
+ \let\rPage\ef@rPage
+ \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
}
% \end{macrocode}
% \DescribeMacro{\A} This is the \emph{action dictionary} (used by links and forms). If the argument
@@ -799,15 +852,15 @@
% the \texttt{/A <<...>>} dictionary.
% \begin{macrocode}
\def\@eqA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@A\@empty\else\ef@preprocessA{#1}%
- \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
+ \let\eq@A\@empty\else\ef@preprocessA{#1}%
+ \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
% \end{macrocode}
% \DescribeMacro{\mlLink} This is a key for the \cs{setLink} command. If
% we say \verb!\mlLink{true}! in the \cs{setLink} option list, we use
% \cs{mlhypertext} from \texttt{aeb\_mlink}, if that package is loaded.
% \begin{macrocode}
\def\@eqmlLink#1{\def\eq@arg{#1}\ifx\eq@arg\ef@true
- \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
+ \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
% \end{macrocode}
% \DescribeMacro{\Lock} The Lock key is used with signature fields, currently, there is
% no nice user interface to this key. Typical entries are
@@ -820,8 +873,8 @@
%\end{verbatim}
% \begin{macrocode}
\def\@eqLock#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
- \def\eq@Lock{}
+ \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
+\def\eq@Lock{}
% \end{macrocode}
%\paragraph*{Additional Actions.}
% We search for \cs{AACalculate}.
@@ -833,7 +886,7 @@
% \begin{macrocode}
\newif\ifisCalculate\isCalculatefalse
\def\ef@searchCalc#1\AACalculate#2\@nil{%
- \ifx#2\end\else\aftergroup\isCalculatetrue\fi
+ \ifx#2\end\else\aftergroup\isCalculatetrue\fi
}
% \end{macrocode}
% \DescribeMacro{\AA} (02/06/09) The argument of \cs{@eqAA} is nonempty, we search for the token \cs{AACalculate}
@@ -843,15 +896,15 @@
% that are either empty or expand to the correct code.
% \begin{macrocode}
\def\@eqAA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty\let\eq@AA\@empty
- \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
- \def\eq@AA{/AA <<#1>>}\fi}
+ \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
+ \def\eq@AA{/AA <<#1>>}\fi}
% \end{macrocode}
% Begin some additional action definitions for the user interface option
% \begin{macrocode}
\def\eq@AA{/AA <<\eq@AAmouseup\eq@AAmousedown\eq@AAmouseenter%
- \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
- \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
- \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
+ \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
+ \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
+ \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
% \end{macrocode}
% \begin{macro}{AAmouseup}
% \begin{macro}{AAmousedown}
@@ -863,33 +916,33 @@
% the uses specifies actions using the user interface (|\ui|).
% \begin{macrocode}
\def\@eqAAmouseup#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
\let\eq@AAmouseup\@empty
\def\@eqAAmousedown#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmousedown\@empty\else
- \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
+ \let\eq@AAmousedown\@empty\else
+ \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
\let\eq@AAmousedown\@empty
\def\@eqAAmouseenter#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseenter\@empty\else
- \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseenter\@empty\else
+ \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
\let\eq@AAmouseenter\@empty
\def\@eqAAmouseexit#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseexit\@empty\else
- \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseexit\@empty\else
+ \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
\let\eq@AAmouseexit\@empty
\def\@eqAAonfocus#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonfocus\@empty\else
- \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
+ \let\eq@AAonfocus\@empty\else
+ \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
\def\@eqAAmousefocus{\@eqAAonfocus}
\let\eq@AAonfocus\@empty
\def\@eqAAonblur#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonblur\@empty\else
- \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
+ \let\eq@AAonblur\@empty\else
+ \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
\def\@eqAAmouseblur{\def\@eqAAonblur}
\let\eq@AAonblur\@empty
\def\@eqAAformat#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAformat\@empty\else
- \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
+ \let\eq@AAformat\@empty\else
+ \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
% \end{macrocode}
% \begin{macro}{AAformat}
% \begin{macro}{AAkeystroke}
@@ -899,12 +952,12 @@
% \begin{macrocode}
\let\eq@AAformat\@empty
\def\@eqAAkeystroke#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAkeystroke\@empty\else
- \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
+ \let\eq@AAkeystroke\@empty\else
+ \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
\let\eq@AAkeystroke\@empty
\def\@eqAAvalidate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAvalidate\@empty\else
- \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
+ \let\eq@AAvalidate\@empty\else
+ \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
\let\eq@AAvalidate\@empty
% \end{macrocode}
%Additional calculate code, used to add on prior to the user's code
@@ -928,20 +981,20 @@
% Page related additional actions.
% \begin{macrocode}
\def\@eqAApageopen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageopen\@empty\else
- \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
+ \let\eq@AApageopen\@empty\else
+ \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
\let\eq@AApageopen\@empty
\def\@eqAApageclose#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageclose\@empty\else
- \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
+ \let\eq@AApageclose\@empty\else
+ \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
\let\eq@AApageclose\@empty
\def\@eqAApagevisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApagevisible\@empty\else
- \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
+ \let\eq@AApagevisible\@empty\else
+ \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
\let\eq@AApagevisible\@empty
\def\@eqAApageinvisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageinvisible\@empty\else
- \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
+ \let\eq@AApageinvisible\@empty\else
+ \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
\let\eq@AApageinvisible\@empty
% \end{macrocode}
% \end{macro}
@@ -988,27 +1041,27 @@
%}
% \begin{macrocode}
\def\eq@RV@Body{<?xml version="1.0"?><body %
- xfa:APIVersion="Acroform:2.7.0.0" %
- xfa:contentType="text/html" %
- xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
- xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
+ xfa:APIVersion="Acroform:2.7.0.0" %
+ xfa:contentType="text/html" %
+ xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
+ xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
\def\eq@RV@endBody{</body>}
\def\@eqRV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
- \eq@RV@endBody)\fi}}\def\eq@RV{}
+ \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
+ \eq@RV@endBody)\fi}}\def\eq@RV{}
% \end{macrocode}
% \DescribeMacro{\DS} Rich text default style
% \begin{macrocode}
\def\@eqDS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
+ \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
% \end{macrocode}
% \DescribeMacro{\textColor} Text color
% \begin{macrocode}
\def\@eqtextColor#1{\ef@parsePDFColor{#1}%
- \HyColor@IfXcolor{%
- \expandafter\HyColor@FieldColor%
- \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
- }{\edef\eq@textColor{\ef@colorSpec@out}}%
+ \HyColor@IfXcolor{%
+ \expandafter\HyColor@FieldColor%
+ \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
+ }{\edef\eq@textColor{\ef@colorSpec@out}}%
}
\def\eq@textColor{0 g}
% \end{macrocode}
@@ -1016,7 +1069,7 @@
% \texttt{Q=2} right-justified.
% \begin{macrocode}
\def\@eqQ#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
+ \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
% \end{macrocode}
% \paragraph*{Entries common to all fields:} \texttt{TU, Ff, V, DV, A, AA}
% \par\medskip\noindent
@@ -1034,14 +1087,22 @@
% and \cs{@equV}, respectively.
% \begin{macrocode}
\def\ef@isunicode#1\unicodeStr#2\@nil{\def\argi{#1}%
- \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
- \def\ifbool@ef{iffalse}\fi}
+ \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
+ \def\ifbool@ef{iffalse}\fi}
\def\@eqDV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@DV{/DV(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@DV{}
+ \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DV\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@DV{/DV(\ef@uni@temp)}%
+% \end{macrocode}
+% Google Chrome uses the \textsf{\textbf{DV}} entry to display as the initial value
+% of the combo box (only), the code below \cs{let}s \cs{eq@DV} to \cs{@empty} in enhanced
+% preview mode, for combo boxes only.
+% \begin{macrocode}
+% \ifx\annot@type\annot@type@combobox
+% \ifefpmpv\let\eq@DV\@empty\fi\fi
+ \makespecialJS\fi\fi}\def\eq@DV{}
% \end{macrocode}
% \DescribeMacro{\nuDV} \cs{@eqnuDV} is the old definition of DV. This version does not
% use hyperref's unicode option. This version comes in handy
@@ -1049,23 +1110,62 @@
% the default (and initial values).
% \begin{macrocode}
\def\ef@pdfCRLFTABDefns{%
- \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
+ \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
\def\@eqnuDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
+ \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
% \end{macrocode}
% \DescribeMacro{\uDV} Unicoded DV, used in \textsf{acroflex.dtx}
% \begin{macrocode}
\def\@equDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
+ \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
% \end{macrocode}
-% \DescribeMacro{\V} |\V| is the field value (optional)
+% \DescribeMacro{\V} |\V| is the field value (optional). Beginning with 2019/05/24,
+% the preview is enhanced to show the value in PDF previewers such as \app{sumatraPDF};
+% when \cs{pmpvOn} is expanded, the value of the field is typeset into the document.
+% \cs{eq@Vpv} shall hold the enhanced preview value for \cs{V}.
+% \changes{v2.11}{2019/05/24}{Modified \string\cs{@eqV} to enhance preview}
% \begin{macrocode}
-\def\@eqV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@V{/V(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@V{}
+\let\pmpvV\@empty
+\let\eq@VSAVE\@empty
+\def\@eqV#1{\Hy@pdfstringfalse
+% \end{macrocode}
+% We define \DescribeMacro\pmpvV\cmd{\pmpvV} to hold the preview value of the field.
+% \begin{macrocode}
+ \edef\pmpvV{#1}%
+% \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
+% the use of \cs{tops} (\cs{texorpdfstring}), so we must first remove the
+% tex string, if there is one. We save the definition of \cs{unicodeStr}
+% then let it to \cs{relax} to prevent its expansion. \cs{x} holds the
+% pdf string part of the argument of \cs{texorpdfstring}.
+% \begin{macrocode}
+ \let\unicodeStrSAVE\unicodeStr
+ \Hy@pdfstringtrue\let\unicodeStr\relax
+ \edef\x{#1}\let\unicodeStr\unicodeStrSAVE
+ \expandafter\ef@isunicode\x\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\Hy@pdfstringtrue
+% \end{macrocode}
+% At this point, we have a unicode string. As a design decision, if
+% \cs{ifefpmpv} is true, the value of the fields will be empty,
+% otherwise, it is what the value of \cs{V} key.
+% \begin{macrocode}
+ \ifefpmpv\def\x{FEFF}\let\eq@V\@empty\else\edef\x{#1}\fi
+ \@equV{\x}%
+ \else
+ \def\eq@arg{#1}%
+ \ifx\eq@arg\@empty
+ \let\eq@V\@empty
+ \else
+ \Hy@pdfstringtrue
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \Hy@pdfstringtrue\edef\eq@V{/V(\ef@uni@temp)}%
+ \let\eq@VSAVE\eq@V
+ \ifefpmpv\let\eq@V\@empty\fi
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@V{}
% \end{macrocode}
% \DescribeMacro{\nuV} No Unicode V
% \begin{macrocode}
@@ -1075,28 +1175,28 @@
% \DescribeMacro{\uV} Unicode version of V
% \begin{macrocode}
\def\@equV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\def\eq@V{/V<#1>}\fi}%
+ \let\eq@V\@empty\else\edef\eq@V{/V<#1>}\fi}%
% \end{macrocode}
% \DescribeMacro{\TU} Tool tip (optional, PDF 1.3)
% \begin{macrocode}
\def\@eqTU#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
- \def\eq@arg{#1}\let\r@save\r\let\r\textCR
- \ifx\eq@arg\@empty\let\eq@TU\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
- \let\r\r@save}\def\eq@TU{}
+ \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
+ \def\eq@arg{#1}\let\r@save\r\let\r\textCR
+ \ifx\eq@arg\@empty\let\eq@TU\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
+ \let\r\r@save}\def\eq@TU{}
% \end{macrocode}
% \DescribeMacro{\uTU} Tool tip (optional, PDF 1.3), unicode version
% \begin{macrocode}
\def\@equTU#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
+ \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
% \end{macrocode}
% \DescribeMacro{\Ff} The Field flags bit field, these values are listed below.
% \begin{macrocode}
\def\@eqFf#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
- \def\eq@Ff{}
+ \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
+\def\eq@Ff{}
% \end{macrocode}
% \paragraph*{keys specific to text fields:} \texttt{MaxLen}
% \begin{macrocode}
@@ -1105,8 +1205,8 @@
% input. Required if a comb field.
% \begin{macrocode}
\def\@eqMaxLen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
- \def\eq@MaxLen{}
+ \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
+ \def\eq@MaxLen{}
% \end{macrocode}
% \DescribeMacro{\H} Highlight, used in button fields and link annotation. Possible values
% are None, Push, Outline, Invert (respectively, \verb!\H{N}!, \verb!\H{P}!,
@@ -1114,7 +1214,7 @@
% The default highlighting is invert (I).
% \begin{macrocode}
\def\@eqH#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
+ \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
% \end{macrocode}
% \paragraph*{Appearance characteristics dictionary:}
% \texttt{MK=R, BC, BG, CA, RC, AC, I, RI, IX, IF, TP}
@@ -1123,24 +1223,24 @@
% \DescribeMacro{\MK} A dictionary containing other keys
% \begin{macrocode}
\def\@eqMK#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
- \def\eq@MK{}
+ \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
+\def\eq@MK{}
% \end{macrocode}
% \DescribeMacro{\R} Rotation of field, values 0, 90, 180, 270.
% \begin{macrocode}
- \let\@vertRotate=0
- \def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
- \let\eq@R\@empty\else
+\let\@vertRotate=0
+\def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
+ \let\eq@R\@empty\else
% \end{macrocode}
-% Determine if we are rotating 90 or 270, if so, set a weak switch
-% \cs{@vertRotate} to 1
+% Determine if we are rotating 90 or 270, if so, set the weak switch
+% \cs{@vertRotate} to~1
% \begin{macrocode}
- \@tempcnta=\eq@R@value\relax
- \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
- \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
- \let\@vertRotate=1\fi\fi
- \def\eq@R{/R #1}\fi}
- \def\eq@R{}
+ \@tempcnta=\eq@R@value\relax
+ \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
+ \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
+ \let\@vertRotate\ef@One\fi\fi
+ \def\eq@R{/R #1}\fi}
+\def\eq@R{}
% \end{macrocode}
% \DescribeMacro{\BC} Boundary color
% \changes{v2.5j}{2011/01/18 }{%
@@ -1149,81 +1249,101 @@
% we can exceed {\string\TeX} capacity.
%}
% \begin{macrocode}
- \def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BC\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
- \edef\eq@BC{/BC [\eq@BC]}\else
- \def\eq@BC{/BC [#1]}\fi
- \fi}
- \def\eq@BC{}
+\def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BC\@empty\else
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
+ \edef\eq@BC{/BC [\eq@BC]}\else
+ \def\eq@BC{/BC [#1]}\fi
+ \fi
+}\def\eq@BC{}
% \end{macrocode}
% \DescribeMacro{\BG} Background color
+% \changes{v2.11}{2019/05/24}{Added test for transparency for \string\cs{BG}}
+% \begin{macrocode}
+\def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BG\@empty\let\ef@isBGtransparent\ef@YES
+ \else\let\ef@isBGtransparent\ef@NO
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
+ \edef\eq@BG{/BG [\eq@BG]}\else
+ \def\eq@BG{/BG [#1]}\fi
+ \fi
+}\def\eq@BG{}
+\let\pmpvCA\@empty
+% \end{macrocode}
+% \DescribeMacro{\CA} normal appearance text. Beginning with 2019/05/24 we have
+% 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}
+\def\@eqCA#1{\let\unicodeStrSAVE\unicodeStr
+ \Hy@pdfstringtrue\let\unicodeStr\relax
+ \edef\x{#1}\let\unicodeStr\unicodeStrSAVE
+ \expandafter\ef@isunicode\x\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@CA\@empty\let\ef@kvCA\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}\Hy@pdfstringfalse
+% \end{macrocode}
+% We define \DescribeMacro\pmpvCA\cs{pmpvCA} as a local macro to hold
+% the caption. It should be something that can be typeset, if not use
+% \cs{tops} to offer an alternative.
% \begin{macrocode}
- \def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BG\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
- \edef\eq@BG{/BG [\eq@BG]}\else
- \def\eq@BG{/BG [#1]}\fi
- \fi}
- \def\eq@BG{}
-% \end{macrocode}
-% \DescribeMacro{\CA} normal appearance text
-% \begin{macrocode}
- \def\@eqCA#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@CA{#1}\edef\ef@kvCA{/CA(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@CA{}\def\ef@kvCA{}
+ \edef\pmpvCA{#1}\def\eq@CA{#1}%
+ \edef\ef@kvCA{/CA(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@CA{}\def\ef@kvCA{}
% \end{macrocode}
% \DescribeMacro{\uCA} normal appearance text, unicode version
% \begin{macrocode}
- \def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
+\def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@CA\@empty\let\ef@kvCA\@empty
+ \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
% \end{macrocode}
% \DescribeMacro{\RC} Roll over text
% \begin{macrocode}
- \def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@RC{}\def\ef@kvRC{}
+\def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@RC{}\def\ef@kvRC{}
% \end{macrocode}
% \DescribeMacro{\uRC} Roll over text, unicode version
% \begin{macrocode}
- \def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
+\def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
% \end{macrocode}
% \DescribeMacro{\AC} Push text
% \begin{macrocode}
- \def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@AC{}\def\ef@kvAC{}
+\def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@AC{}\def\ef@kvAC{}
% \end{macrocode}
% \DescribeMacro{\uAC} Push text, unicode version
% \begin{macrocode}
- \def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
+\def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
% \end{macrocode}
% Other keys of \texttt{MK} include: \texttt{I}, \texttt{RI}, \texttt{IX}, \texttt{IF} and \texttt{TP}
% If I haven't covered everything, use this macro to insert
@@ -1232,12 +1352,12 @@
% button with an icon appearance, the entries in the \texttt{MK} dictionary that
% effect an icon of the push button has this form:
%\begin{verbatim}
-% \ifx\eq@AP\@empty
-% /MK <<\eq@R\eq@BC\eq@BG%
-% \ef@kvCA\ef@kvRC\ef@kvAC\eq@IconMK\eq@mkIns>>
-% \else
-% \eq@AP
-% \fi
+% \ifx\eq@AP\@empty
+% /MK <<\eq@R\eq@BC\eq@BG%
+% \ef@kvCA\ef@kvRC\ef@kvAC\eq@IconMK\eq@mkIns>>
+% \else
+% \eq@AP
+% \fi
%\end{verbatim}
% The \cs{eq@IconMK} macro inserts the appropriate code for an icon appearance.
% \begin{macrocode}
@@ -1278,8 +1398,7 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@I{}
+}\def\eq@I{}
% \end{macrocode}
% \DescribeMacro{\RI} an indirect reference to a form XObject defining
% the buttons's \emph{rollover icon}
@@ -1296,8 +1415,7 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@RI{}
+}\def\eq@RI{}
% \end{macrocode}
% \DescribeMacro{\IX} an indirect reference to a form XObject defining
% the buttons's \emph{down icon}
@@ -1314,15 +1432,14 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@IX{}
+}\def\eq@IX{}
% \end{macrocode}
% \DescribeMacro{\TP} A code indicating the \texttt{layout} of the text and icon; these codes are
% 0 (label only); 1 (icon only); 2 (label below icon); 3 (label above icon); 4 (label to the right of icon);
% 5 (label to the left of icon); 6 (label overlaid on the icon). The default is 0.
% \begin{macrocode}
\def\@eqTP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
+ \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
\def\eq@TP{/TP 0} % default 0
% \end{macrocode}
% \DescribeMacro{\SW} The \emph{scale when key}. Permissible values are \texttt{A} (always scale),
@@ -1330,14 +1447,14 @@
% (never scale). The default is \texttt{A}.
% \begin{macrocode}
\def\@eqSW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
+ \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
\def\eq@SW{/SW/A} % the default, always scale
% \end{macrocode}
% \DescribeMacro{\ST} The \emph{scaling type.} Permissible values are \texttt{A}
% (anamorphic scaling); \texttt{P} (proportional scaling). The default is \texttt{P}.
% \begin{macrocode}
\def\@eqST#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
+ \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
\def\eq@ST{/S/P} % the default, proportional scaling
% \end{macrocode}
% \DescribeMacro{\PA} The \textit{position array.} An array of two numbers, each
@@ -1345,7 +1462,7 @@
% of the annotation rectangle. The two numbers should be separated by a space. The default value, \verb!\PA{.5 .5}!
% \begin{macrocode}
\def\@eqPA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
+ \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
\def\eq@PA{/A [0.5 0.5]} % the default
% \end{macrocode}
% \DescribeMacro{\FB} The \emph{fit bounds} Boolean. If \texttt{true}, the button appearance
@@ -1353,7 +1470,7 @@
% the line width of the border. The default is \texttt{false}.
% \begin{macrocode}
\def\@eqFB#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
+ \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
\def\eq@FB{/FB false} % the default
% \end{macrocode}
% \DescribeMacro{\mkIns} used for miscellaneous entries for \texttt{MK} dictionary.
@@ -1364,14 +1481,14 @@
% An array of options in the list
% \begin{macrocode}
\def\@eqOpt#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Opt\@empty\else\def\eq@Opt{/Opt [#1]}\fi}
- \def\eq@Opt{}
+ \let\eq@Opt\@empty\else\ifefpmpv\let\eq@Opt\@empty\else
+ \def\eq@Opt{/Opt [#1]}\fi\fi}\def\eq@Opt{}
% \end{macrocode}
% For scrollable list boxes, the top index.
% \begin{macrocode}
\def\@eqTI#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
- \def\eq@TI{}
+ \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
+\def\eq@TI{}
% \end{macrocode}
% When all else fails, use the \cs{rawPDF} command to modify the widget.
% \begin{macrocode}
@@ -1390,25 +1507,25 @@
% package to create multi-line links.
% \begin{macrocode}
\def\@eqQuadPoints#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@QuadPoints\@empty\else
- \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
+ \let\eq@QuadPoints\@empty\else
+ \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
\def\eq@QuadPoints{}
% \end{macrocode}
% \DescribeMacro{\Color} Changed |\def\eq@arg| to |\edef\eq@arg| (01/18/11)
% \begin{macrocode}
\def\@eqColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Color\@empty\else
- \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
- \edef\eq@Color{/C[\eq@Color]}\fi}
+ \let\eq@Color\@empty\else
+ \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
+ \edef\eq@Color{/C[\eq@Color]}\fi}
\def\eq@Color{}
% \end{macrocode}
% \DescribeMacro{linktxtcolor} key to set the color of the link through
% the option list.
% \begin{macrocode}
\def\@eqlinktxtcolor#1{%
- \def\ef@argi{#1}\ifHy@colorlinks
- \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
- \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
+ \def\ef@argi{#1}\ifHy@colorlinks
+ \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
+ \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
}\let\ef@linktxtcolor@set=0
% \end{macrocode}
% \paragraph*{Specialized, non-PDF Spec, commands}
@@ -1419,9 +1536,9 @@
% Use to set the height and width of a widget.
% \begin{macrocode}
\def\@eqrectH#1{\def\eq@rectH{#1}\ifx\eq@rectH\@empty\else
- \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
+ \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
\def\@eqrectW#1{\def\eq@rectW{#1}\ifx\eq@rectW\@empty\else
- \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
+ \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1431,8 +1548,8 @@
% used with setting the tab order using the structure.
% \begin{macrocode}
\def\@eqobjdef#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
- \def\eq@objdef{/_objdef {#1}}\fi
+ \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
+ \def\eq@objdef{/_objdef {#1}}\fi
}
\let\eq@objdef\@empty
% \end{macrocode}
@@ -1441,8 +1558,8 @@
% determined through structure.
% \begin{macrocode}
\def\@eqtaborder#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@taborder\@empty\else
- \def\eq@taborder{#1}\fi
+ \let\eq@taborder\@empty\else
+ \def\eq@taborder{#1}\fi
}
\let\eq@taborder\@empty
% \end{macrocode}
@@ -1451,12 +1568,12 @@
% \begin{macrocode}
\def\ef@y{y}\def\ef@n{n}
\def\@eqautoCenter#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
- \let\autoCenter\ef@n\else\let\autoCenter\ef@y
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\autoCenter.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
+ \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
+ \let\autoCenter\ef@n\else\let\autoCenter\ef@y
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\autoCenter.\MessageBreak
+ Using the default of 'y'}\fi
+\fi}
\let\autoCenter\ef@y
% \end{macrocode}
% \DescribeMacro{\inline} If |\inline{y}|, then we attempt to
@@ -1467,13 +1584,13 @@
\newif\ifeq@inlineCenter \eq@inlineCenterfalse
\let\inlineCenter=n
\def\@eqinline#1{\eq@inlineCenterfalse
- \def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\inlineCenter\ef@y\eq@inlineCentertrue\else
- \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\inline.\MessageBreak
- Using the default of 'n'}%
- \fi\fi}
+ \def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \let\inlineCenter\ef@y\eq@inlineCentertrue\else
+ \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\inline.\MessageBreak
+ Using the default of 'n'}\fi
+\fi}
% \end{macrocode}
% \DescribeMacro{\symbolchoice} The symbol used for a check box or radio button.
% Elsewhere, we have defined,
@@ -1489,14 +1606,14 @@
% \texttt{cross}, \texttt{diamond}, \texttt{square}, and \texttt{star}.
% \begin{macrocode}
\def\@eqsymbolchoice#1{\expandafter\ifx\csname eq@#1\endcsname\relax
- \typeout{exerquiz: `#1' is not an acceptable option
- for \string\symbolechoice, inserting default, `check'.}
- \edef\symbol@choice{\eq@check}\else
+ \typeout{exerquiz: `#1' is not an acceptable option
+ for \string\symbolechoice, inserting default, `check'.}
+ \edef\symbol@choice{\eq@check}\else
% \end{macrocode}
% We take \texttt{\#1} and form the command \cs{eq@\#1}, to match one of
% the definitions listed above.
% \begin{macrocode}
- \edef\symbol@choice{\csname eq@#1\endcsname}\fi
+ \edef\symbol@choice{\csname eq@#1\endcsname}\fi
}
% \end{macrocode}
%\DescribeMacro{\mlfix} When set to \texttt{y}, contiguous boxes are combined. This is for
@@ -1511,12 +1628,12 @@
\def\mlfixOn{\fixmlinkstrue}
\def\mlfixOff{\fixmlinksfalse}
\def\@eqmlfix#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \mlfixOn\else\ifx\ef@arg\ef@n
- \mlfixOff\else\mlfixOn
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlfix.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
+ \mlfixOn\else\ifx\ef@arg\ef@n
+ \mlfixOff\else\mlfixOn
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlfix.\MessageBreak
+ Using the default of 'y'}\fi
+\fi}
\newbox\mlstrutbox
% \end{macrocode}
% \DescribeMacro{\mlstrut}\hskip-\marginparsep\texttt{\darg{\ameta{strut-amt}}}
@@ -1549,12 +1666,12 @@
% \changes{v2.9.19}{2018/03/22}{Added \string\cs{mlhyph}}
% \begin{macrocode}
\def\@eqmlhyph#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
- \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlhyph.\MessageBreak
- Using the default of 'n'}\fi\fi}
-\let\eq@mlhyph\@empty
+ \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
+ \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlhyph.\MessageBreak
+ Using the default of 'n'}\fi
+\fi}\let\eq@mlhyph\@empty
% \end{macrocode}
% \leavevmode
% \DescribeMacro{\mlignore}\hskip-\marginparsep\texttt{\darg{\upshape0\string|1\string|empty}}
@@ -1582,6 +1699,7 @@
% \DescribeMacro{\protect} A key for protecting a key from begin changed
% by the user through the optional arguments.
% \begin{macrocode}
+\def\@eqprotect#1{\eq@protect{#1}}
\def\eq@protect#1{\let#1\@empty}
% \end{macrocode}
% \leavevmode
@@ -1602,8 +1720,7 @@
\def\protectedKeys@gettwo#1#2{%
\ifx#1\ef@stop\else\ef@scratchtoks=\expandafter
{\the\ef@scratchtoks\protect#1{#2}}\expandafter
- \protectedKeys@gettwo
- \fi}
+ \protectedKeys@gettwo\fi}
% \end{macrocode}
%
% \subsubsection{Support for Hex escapes in PDF names}
@@ -1617,10 +1734,10 @@
\def\efHxError{\PackageError{eforms}{The glyph is not supported}{}}
\def\HGERROR{efHxError}
\ifpdfmarkup
- \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
- \global\@namedef{efHex#1}{\csname#2\endcsname}\else
- \global\@namedef{efHex#1}{\expandafter
- \string\csname#2\endcsname}\fi}
+ \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex#1}{\csname#2\endcsname}\else
+ \global\@namedef{efHex#1}{\expandafter
+ \string\csname#2\endcsname}\fi}
\else
\begingroup\catcode`\#=12 \catcode`*=6
\gdef\HexGlyph*1*2{\def\arg@ii{*2}\ifx\arg@ii\HGERROR
@@ -2188,10 +2305,10 @@
% \end{macrocode}
%\paragraph*{Notes:}\par
%\noindent\begin{tabular}{ll}
-% Visible (and printable) &|\F\FPrint|\\
-%Hidden but printable &|\F\FNoView\F\FPrint|\\
+% Visible (and printable) &|\F\FPrint|\\
+%Hidden but printable &|\F\FNoView|\\
%Visible but doesn't print &|\F\FNoPrint|\\
-%Hidden (and does not print) &|\F\FHidden\F\FPrint|
+%Hidden (and does not print) &|\F\FHidden|
%\end{tabular}
%
%\subsubsection{Field Flags /Ff Definitions}\label{Ff}
@@ -2314,16 +2431,67 @@
%\def\ef@btnspcr{\ }
\def\ef@btnspcr{}
% \end{macrocode}
-% For those that do not use Adobe Acrobat products (AA/AR), we offer a `poor man's'
-% alternative. When \cs{previewOn} is active, outlines of the form fields are seen
-% (been around for years); when \cs{pmcaOn} is active, the caption of the push buttons
-% are typeset into the document, centered within the buttons. If opened in AR, AR will
-% supply an appearance and these typeset captions are not seen.
-%\changes{v2.10}{2019/03/16}{Added \string\cs{pmcaOn} and \string\cs{pmcaOff}}
+% \subsubsection{Enhanced preview}\label{pmpv}
+%\changes{v2.10}{2019/03/16}{Added \string\cs{pmpvOn} and \string\cs{pmpvOff}, changed from
+% \string\cs{pmcaOn} and \string\cs{pmcaOff}}
+%\changes{v2.10}{2019/03/16}{Alias for \string\cs{pmcaOn} and \string\cs{pmpvOn}, etc.}
+% \begin{macrocode}
+\@ifundefined{ifefpmpv}{\newif\ifefpmpv\efpmpvfalse}{}
+\def\pmpvOn{\efpmpvtrue\PackageInfo{eforms}
+ {Turning on enhanced preview (\string\pmpvOn)}}\let\pmcaOn\pmpvOn
+\def\pmpvOff{\efpmpvfalse\PackageInfo{eforms}
+ {Turning off enhanced preview (\string\pvpmOff)}}\let\pmcaOff\pmpvOff
+% \end{macrocode}
+% Enhanced preview attempts to typeset into the document the value of the \cs{CA} key (for push buttons)
+% and the \cs{V} key for text fields and choice fields. This is useful for those using a non-conforming
+% PDF reader such as \app{sumatraPDF}. The enhanced preview is activated by expanding \cs{pmpvOn}
+% (\textbf{p}oor \textbf{m}an's \textbf{p}re\textbf{v}iew). A summary of the effects is describe below.\medskip
+% \begin{description}
+% \item[push buttons] The \cs{CA} entry is always
+% displayed; however, when the \emph{background color \emph{(\cs{BG})} is transparent}, the key-value entry generated by \cs{CA}
+% \emph{is removed}. This is to avoid two overlaying captions, one typeset into the document, the other part
+% of the button appearance.
+% \item[text and choice fields] The \cs{V} entry \emph{is set to empty} (when \cs{pmpvOn} is active),
+% but the value of the \cs{V} key is typeset into the document; this is to avoid two overlaying
+% values within the field. There is one special case, when the field is \emph{hidden}; in this case,
+% the value of the field is restored. Hidden text fields are used by the \pkg{acrotex} packages to hold
+% information that can later be retrieved.
+% \item[check box and radio button fields] These two cases are handled similar to \textbf{choice fields}. For these
+% types of fields, the values is typically a mark: a check, an cross, a star, and so on. For preview purposes,
+% \pkg{eforms} defines the declarative command \cs{pmpvMrk} that takes one argument, the mark to be used. The
+% package declares |\pmpvMrk{X}|, another good choice is |\pmpvMrk{$\checkmark$}|.
+% \end{description}
+% With respect to the enhanced preview, the local command \cs{tops}, used within the argument of \cs{V} or \cs{CA}, is
+% \cs{let} to \cs{texorpdfstring}. Use \DescribeMacro\tops\cs{tops} to offer an alternate text to the value of \cs{CA}
+% of \cs{V}. The \cs{V} key of radio button and check box fields do not handle the \cs{tops} command.
+%
+% For example,
+% \begin{quote}\small
+% |\pushButton[\CA{\tops{Tap Me}{Push Me}}]{pbFld}{}{11bp}|
+% \end{quote}
+% This button will preview with the caption as `Tap Me', but will appear within
+% a conforming PDF reader as `Push Me'; however, if the background color is
+% transparent (|\BG{}|), `Tap Me' will be the (typeset) caption even in a
+% conforming PDF reader. (This is to avoid overlaying captions.) It is
+% important\marginpar{\raggedleft \textbf{Important!}} to say that the final
+% document should be compiled with \cs{previewOff} and \cs{pmpvOff} opened in
+% \app{Adobe Reader} and saved to obtain proper appearances of the form
+% fields.
+%
+% The arguments of \cs{CA} and \cs{V} should be text, and must note have any {\TeX} formatting
+% like \cs{textbf}, \cs{textit}, and so on. That's not to say such formatting cannot be obtained.
+% There is an undocumented macro, \DescribeMacro\pmpvFmt\cs{pmpvFmt} that takes one argument, the argument being the
+% enhanced preview text. To illustrate its usage, we use the above example,
+% \begin{quote}\small
+% |\pushButton[\cmd{\let\pmpvFmt\textbf}|\\
+% \null\quad|\CA{\tops{Tap Me}{Push Me}}]{pbFld}{}{11bp}|
+% \end{quote}
+% Now, the enhanced preview will read `\textbf{Tap Me}'. Pass |\let\pmpvFmt\textbf| through
+% the \cs{cmd} key, the changes are local to the field.
+% \changes{v2.11}{2019/05/24}{Enhanced preview introduced}
+%
+% \subsubsection{Set push button properties}
% \begin{macrocode}
-\@ifundefined{ifefpmca}{\newif\ifefpmca\efpmcafalse}{}
-\def\pmcaOn{\efpmcatrue}
-\def\pmcaOff{\efpmcafalse}
\def\eq@setButtonProps#1#2{\makeJSspecials
\processAppArgs#2\end\@nil % set widget properties
% \end{macrocode}
@@ -2337,7 +2505,7 @@
\ifx\eq@rectW\@empty
\ifnum\eq@textSize=0 \else
% \end{macrocode}
-% If rectW is nonempty, and textSize is not zero, we calculate with
+% If \cs{rectW} is nonempty, and \cs{textSize} is not zero, we calculate with
% width of the caption on the button by first adjusting the font size
% to properly gauge the width of the text. This may not be really accurate
% because the font used by tex will no doubt be different from the font used
@@ -2358,6 +2526,7 @@
\else
\def\eq@btn@sp{\hbox to\dimen@{\hfill}}%
\fi
+ \Hy@pdfstringtrue
\expandafter\def\expandafter
\ef@btnspcr\expandafter{\ef@btnspcr\eq@btn@sp}%
\sbox{\eq@tmpbox}{\ef@btnspcr\eq@CA\ef@btnspcr}%
@@ -2379,13 +2548,22 @@
\fi
% \end{macrocode}
% (2016/12/22) \cs{ef@djXPD} adjusts the size of the field dimensions, if \cs{makeXasPD} is true.\\
-% (2019/03/16) Insert \cs{PMCA} if \cs{if@efpmca} is true.
-% \changes{v2.10}{2019/03/16}{Insert \string\cs{PMCA} if \string\cs{if@efpmca} is true}
+% (2019/03/16) Insert \cs{PMPV} if \cs{if@efpmpv} is true.
+% \changes{v2.10}{2019/03/16}{Insert \string\cs{PMPV} if \string\cs{if@efpmpv} is true}
+% \changes{v2.11}{2019/05/24}{Added \string\cs{ef@isBGtransparent}}
+% \begin{macrocode}
+ \ifefpmpv\Hy@pdfstringfalse
+% \end{macrocode}
+% If this push button has a transparent background, we remove the \texttt{/CA} key.
% \begin{macrocode}
- \ifefpmca\PMCA{\eq@CA}\fi\ef@djXPD#1%
+ \ifx\ef@isBGtransparent\ef@YES
+ \let\ef@kvCA\@empty\fi
+ \PMPV{\eq@CA}\fi
+ \ef@djXPD#1%
}
% \end{macrocode}
% \end{macro}
+% \subsubsection{Set other properties of other fields}
% \begin{macro}{\eq@setWidgetProps}
% Same as \cmd{\eq@setButtonProps} but does not measure the width of the
% field. Simply lays in the optional parameters that modify the appearance
@@ -2409,6 +2587,21 @@
% \end{macrocode}
% (2016/12/22) \cs{ef@djXPD} adjusts the size of the field dimensions, if \cs{makeXasPD} is true.
% \begin{macrocode}
+ \ifefpmpv\Hy@pdfstringfalse
+% \end{macrocode}
+% Having an enhanced preview generates several problems. Text fields are sometimes hidden and their values
+% are used to store information. So, if the field is hidden, we give no enhanced preview.
+% \changes{v2.11}{2019/05/24}{Enhanced preview for text and choice fields}
+% \begin{macrocode}
+ \ifx\ef@isHidden\ef@YES
+% \end{macrocode}
+% This is a tricky part. The value \cs{eq@VSAVE} was earlier \cs{let} to the original value
+% of \cs{eq@V} (at that time, we set \cs{eq@V} to \cs{@empty}), now we restore its original
+% value now that we know this field is hidden.
+% \begin{macrocode}
+ \let\eq@V\eq@VSAVE\else
+ \PMPV{\pmpvV}\fi
+ \fi
\ef@djXPD#1%
}
% \end{macrocode}
@@ -2500,7 +2693,9 @@
%
% \subsection{Choice Fields}\label{choice}
%
-% This is the form template used for all choice fields, list box and combo box.
+% This is the form template used for all choice fields, list box and combo box. Within
+% the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.
% \begin{macrocode}
\def\common@choiceCode{%
/Subtype/Widget
@@ -2641,17 +2836,20 @@
% \end{macrocode}
% \subsubsection{List Box}\label{listbox}
% The main list box code that can be used to build list box commands, such as
-% \cs{listBox}, defined below.
+% \cs{listBox}, defined below. Within
+% the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.
% \begin{macrocode}
\def\annot@type@listbox{listbox}
\newcommand\list@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@listbox}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
% \end{macrocode}
% Run \texttt{\#5} through \cs{ef@pdfstrCLOpt}.
% \begin{macrocode}
\expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \ifefpmpv\let\eq@Opt\@empty\fi
\eqf@setDimens{#3}{#4}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@processEvery#8\end\noindent#6#7{#1}}
@@ -2691,16 +2889,19 @@
% \end{macrocode}
% \end{macro}
% \subsubsection{Combo Box}\label{combobox}
+% Within the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.
% \begin{macrocode}
\def\annot@type@combobox{combobox}
\newcommand\combo@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@combobox}%
\@eqFf{\FfCombo}\pdfstringdef\Fld@name{#2}\dl@paramlocal
% \end{macrocode}
% Run \texttt{\#5} through \cs{ef@pdfstrCLOpt}.
% \begin{macrocode}
\expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \ifefpmpv\let\eq@Opt\@empty\fi
\eqf@setDimens{#3}{#4}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@processEvery#8\end\noindent#6#7{#1}}
@@ -2732,7 +2933,9 @@
% \end{macrocode}
% \end{macro}
% \subsection{Button Fields}\label{button}
-% Here is the field template for push button fields.\par\medskip\noindent
+% Here is the field template for push button fields. Within
+% the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.\par\medskip\noindent
% (2018/11/10) \cs{eq@APX} determines if \cs{eq@I} is empty, if not we supply the normal appearance
% for the button to be the same appearance as set by \cs{eq@I}.
% \changes{v2.9.21}{2018/11/10}{Introduce \string\cs{eq@APX} an `intelligent' AP key}
@@ -2806,7 +3009,7 @@
% \begin{macrocode}
\def\annot@type@button{pushbtn}
\newcommand\push@@Button[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@button}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\makeJSspecials\ef@preProcDefns
@@ -2844,19 +3047,28 @@
% \end{macrocode}
% \end{macro}
% \subsubsection{Check Box}\label{checkbox}
-% The basic command for creating check boxes.
+% The basic command for creating check boxes. For \emph{enhanced preview} we define
+% \DescribeMacro\pmpvMrk\cs{pmpvMrk\darg{mrk}}, which defines \cs{pmpv@mrk} that is eventually
+% used in the core of \cs{ef@Bbox}.
% \begin{macrocode}
+\def\pmpvMrk#1{\def\pmpv@mrk{#1}}
+\pmpvMrk{X}
\def\annot@type@checkbox{checkbox}
\newcommand\check@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\let\#\ef@Hx\edef\annot@type{\annot@type@checkbox}%
\pdfstringdef\Fld@name{#2}\@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}%
+ \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\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+% \end{macrocode}
+% Provide enhanced preview for checkboxes
+% \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}%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else
\def\eq@On{/#5}\fi\@eqtextFont{ZaDb}%
@@ -2894,15 +3106,20 @@
% \begin{macrocode}
\def\annot@type@radio{radiobtn}
\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@radio}%
\pdfstringdef\Fld@name{#2}\@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\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+% \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}%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
\def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
@@ -2939,7 +3156,9 @@
%
% \subsection{Text Field}\label{textfield}
%
-% The template for a text field.
+% The template for a text field. Within
+% the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.
% \begin{macrocode}
\def\common@TextFieldCode
{%
@@ -2964,7 +3183,7 @@
% \begin{macrocode}
\def\annot@type@text{textfld}
\newcommand\text@@Field[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@text}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\def\eq@Title{#2}\eqf@setDimens{#3}{#4}%
@@ -3005,7 +3224,9 @@
%
% \subsection{Signature Field}\label{sigfield}
%
-% The template for a signature field.
+% The template for a signature field. Within
+% the optional argument, the following aliases are used: \cs{nameuse} for \cs{@nameuse}
+% and \cs{tops} for \cs{texorpdfstring}.
% \begin{macrocode}
\def\common@SigFieldCode
{%
@@ -3026,7 +3247,7 @@
% \begin{macrocode}
\def\annot@type@sig{sigfld}
\newcommand\sig@@Field[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@sig}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\def\eq@Title{#2}\eqf@setDimens{#3}{#4}%
@@ -3087,7 +3308,7 @@
% \begin{macrocode}
\def\annot@type@link{link}
\newcommand\set@@Link[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\dl@paramlocal
\makeJSspecials
\edef\annot@type{\annot@type@link}%
@@ -4132,102 +4353,105 @@
% Code to hide the solutions page to a quiz that has solutions.
% \begin{macrocode}
\def\noPeek#1#2{\literalps@out{%
- [ {ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
+ \AEB@psMrk{ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
% \end{macrocode}
% Driver dependent code (distiller) for choice fields, list and combo.
% \begin{macrocode}
\def\eq@choice@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@choiceCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
% \end{macrocode}
% Driver dependent code (distiller) for push button fields.
% \begin{macrocode}
\def\eq@Button@driver
{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@pushButtonCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \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
+ \dl@restorespcs
}
% \end{macrocode}
% Driver dependent code (distiller) for radio and button fields.
% \begin{macrocode}
\def\eq@RadioCheck@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ \dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\endgroup
- \dl@restorespcs
+ \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
+ \dl@restorespcs
}
% \end{macrocode}
% Driver dependent code for text fields.
% \begin{macrocode}
\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@TextFieldCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
% \end{macrocode}
% \changes{v2.5p}{2012/09/25}{Corrected a bug in \string\cs{eq@SigField} for
% the dvipdfm-type drivers}
% \begin{macrocode}
\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1\let\W@temp\eq@rectW\edef\eq@rectW{\eq@rectH}%
- \edef\eq@rectH{\W@temp}\fi\centerWidget\eq@rectH
-% \centerWidget\eq@rectH
- \ifx\autoCenter\ef@n\eqcenterWidget=0pt\fi
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@SigFieldCode
- /ANN pdfmark
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
% \end{macrocode}
% For processing the \texttt{pdfmark} with distiller, the key \texttt{/Action} is
@@ -4240,17 +4464,17 @@
% \begin{macrocode}
\def\setLink@driver
{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \pdf@rect{\link@@Box}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \eq@Border
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}%
- \to@insertStrucTabOrder{Link}\endgroup
- \dl@restorespcs
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \pdf@rect{\link@@Box}%
+ \literalps@out{\AEB@psMrk
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \eq@Border
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}%
+ \to@insertStrucTabOrder{Link}\endgroup
+ \dl@restorespcs
}
% \end{macrocode}
% (2018/03/22) Defined \cs{pboxRect} to support
@@ -4266,17 +4490,17 @@
\def\mllnkcontainer#1{#1}
\def\setLinkPbox@driver
{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \literalps@out{\mllnkcontainer{%
- [ \eq@objdef\pboxRect
- \eq@Border
- \eq@QuadPoints % QuadPoints
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}}%
- \to@insertStrucTabOrder{Link}\endgroup
- \dl@restorespcs
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \literalps@out{\mllnkcontainer{%
+ \AEB@psMrk\eq@objdef\pboxRect
+ \eq@Border
+ \eq@QuadPoints % QuadPoints
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}}%
+ \to@insertStrucTabOrder{Link}\endgroup
+ \dl@restorespcs
}
% \end{macrocode}
% \begin{macrocode}
@@ -4315,83 +4539,88 @@
% \begin{macrocode}
\def\eq@choice@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@choiceCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
- \dl@restorespcs
+ \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
+ \hbox{\pdfstartlink user{\common@choiceCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+ \dl@restorespcs
}
\def\eq@Button@driver
{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@pushButtonCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \hbox{\pdfstartlink user{\common@pushButtonCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@RadioCheck@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@RadioCheckCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \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
+ \hbox{\pdfstartlink user{\common@RadioCheckCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdfstartlink user{\common@RadioCheckCode}%
- \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
- \pdfendlink\endgroup
- \dl@restorespcs
+ \pdfstartlink user{\common@RadioCheckCode}%
+ \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
+ \pdfendlink\endgroup
+ \dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode
- \hbox{\pdfstartlink user{\common@TextFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode
+ \hbox{\pdfstartlink user{\common@TextFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+ \dl@restorespcs
}
\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\setLink@driver
{%
- \@eqBS{}%
- \leavevmode\pdfstartlink
- attr {\eq@Border}%
- user{/Subtype/Link \common@LinkCode}%
- \Hy@colorlink{\@linkcolor}\link@@Box
- \close@pdflink
- \endgroup
- \dl@restorespcs
+ \@eqBS{}%
+ \leavevmode\pdfstartlink
+ attr {\eq@Border}%
+ user{/Subtype/Link \common@LinkCode}%
+ \Hy@colorlink{\@linkcolor}\link@@Box
+ \close@pdflink
+ \endgroup
+ \dl@restorespcs
}
\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
- \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
- \fi\endgroup
+ \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
+ \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
+ \fi\endgroup
}
% \end{macrocode}
% \begin{macrocode}
@@ -4413,46 +4642,49 @@
% \begin{macrocode}
\def\eq@choice@driver{\ef@adjHWxetex
\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
- \dl@restorespcs
- \endgroup
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+ \dl@restorespcs
+ \endgroup
}
% \end{macrocode}
% (2013/06/09) xelatex apparently includes the boundary in its width and height
% calculations. So we must too.
% \begin{macrocode}
\def\eq@Button@driver{\Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi % 12/22
- \if\@vertRotate1\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
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \endgroup
- \dl@restorespcs
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \endgroup
+ \dl@restorespcs
}
\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann \dvipdfm@setdim
- <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
- \endgroup
- \dl@restorespcs
+ \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
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann \dvipdfm@setdim
+ <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@l@check@driver{%
\setbox\pdfm@box=%
@@ -4461,41 +4693,43 @@
\unhbox\pdfm@box\relax\endgroup
}
\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+ \endgroup
+ \dl@restorespcs
}
\def\eq@SigField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
+ \endgroup
+ \dl@restorespcs
}
\def\setLink@driver{%
- \@eqBS{}\leavevmode
- \@pdfm@mark{bann
- <</Subtype/Link\eq@Border\common@LinkCode>>}%
- \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
- \@pdfm@mark{eann}%
- \endgroup
- \dl@restorespcs
+ \@eqBS{}\leavevmode
+ \@pdfm@mark{bann
+ <</Subtype/Link\eq@Border\common@LinkCode>>}%
+ \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
+ \@pdfm@mark{eann}%
+ \endgroup
+ \dl@restorespcs
}
\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
- \fi\endgroup
+ \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
+ \fi\endgroup
}
%</edvipdfm>
% \end{macrocode}
diff --git a/texmf-dist/tex/latex/acrotex/edvipdfm.def b/texmf-dist/tex/latex/acrotex/edvipdfm.def
index a10fdde7..8f013a62 100644
--- a/texmf-dist/tex/latex/acrotex/edvipdfm.def
+++ b/texmf-dist/tex/latex/acrotex/edvipdfm.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -21,42 +21,45 @@
\let\ef@adjHWxetex\relax
\def\eq@choice@driver{\ef@adjHWxetex
\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
- \dl@restorespcs
- \endgroup
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ <<\common@choiceCode>>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+ \dl@restorespcs
+ \endgroup
}
\def\eq@Button@driver{\Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi % 12/22
- \if\@vertRotate1\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
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \endgroup
- \dl@restorespcs
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@pushButtonCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \endgroup
+ \dl@restorespcs
}
\def\eq@RadioCheck@driver{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann \dvipdfm@setdim
- <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
- \endgroup
- \dl@restorespcs
+ \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
+ \setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann \dvipdfm@setdim
+ <<\common@RadioCheckCode>>}\unhbox\pdfm@box\relax%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@l@check@driver{%
\setbox\pdfm@box=%
@@ -65,41 +68,43 @@
\unhbox\pdfm@box\relax\endgroup
}
\def\eq@TextField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
- \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
- \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@TextFieldCode >>}\unhbox\pdfm@box\relax%
+ \@pdfm@mark{put @afields @\Fld@name}% record in @afields array
+ \ifisCalculate\@pdfm@mark{put @corder @\Fld@name}\fi
+ \endgroup
+ \dl@restorespcs
}
\def\eq@SigField{\ef@adjHWxetex\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\setbox\pdfm@box=%
- \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
- << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\setbox\pdfm@box=%
+ \hbox{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
+ \@pdfm@mark{ann @\Fld@name\space\dvipdfm@setdim
+ << \common@SigFieldCode >>}\unhbox\pdfm@box\relax%
+ \endgroup
+ \dl@restorespcs
}
\def\setLink@driver{%
- \@eqBS{}\leavevmode
- \@pdfm@mark{bann
- <</Subtype/Link\eq@Border\common@LinkCode>>}%
- \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
- \@pdfm@mark{eann}%
- \endgroup
- \dl@restorespcs
+ \@eqBS{}\leavevmode
+ \@pdfm@mark{bann
+ <</Subtype/Link\eq@Border\common@LinkCode>>}%
+ \Hy@colorlink{\@linkcolor}\link@@Box\Hy@endcolorlink
+ \@pdfm@mark{eann}%
+ \endgroup
+ \dl@restorespcs
}
\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
- \fi\endgroup
+ \@pdfm@mark{ put @thispage << /Tabs/\ef@taborder >> }%
+ \fi\endgroup
}
\endinput
%%
diff --git a/texmf-dist/tex/latex/acrotex/eforms.sty b/texmf-dist/tex/latex/acrotex/eforms.sty
index b0ff4b6b..3184371f 100644
--- a/texmf-dist/tex/latex/acrotex/eforms.sty
+++ b/texmf-dist/tex/latex/acrotex/eforms.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,54 +19,54 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{eforms}
- [2019/03/16 v2.10 Provides general eforms support (dps)]
+ [2019/05/24 v2.11 Provides general eforms support (dps)]
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
\RequirePackage{ifluatex}
\RequirePackage{calc}
\let\ef@driver\@empty
\DeclareOption{dvipsone}{\def\eq@drivernum{0}%
- \def\eq@drivername{0}\def\ef@driver{dvipsone}%
- \def\eq@drivercode{epdfmark.def}%
- \PassOptionsToPackage{dvipsone}{insdljs}%
- \PassOptionsToPackage{dvipsone}{hyperref}%
+ \def\eq@drivername{0}\def\ef@driver{dvipsone}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvipsone}{insdljs}%
+ \PassOptionsToPackage{dvipsone}{hyperref}%
}
\def\eq@drivername{2}
\DeclareOption{dvips}{\def\eq@drivernum{0}%
- \def\eq@drivername{1}\def\ef@driver{dvips}%
- \def\eq@drivercode{epdfmark.def}%
- \PassOptionsToPackage{dvips}{insdljs}%
- \PassOptionsToPackage{dvips}{hyperref}%
+ \def\eq@drivername{1}\def\ef@driver{dvips}%
+ \def\eq@drivercode{epdfmark.def}%
+ \PassOptionsToPackage{dvips}{insdljs}%
+ \PassOptionsToPackage{dvips}{hyperref}%
}
\DeclareOption{pdftex}{%
- \def\eq@drivernum{1}\def\eq@driver{pdftex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
+ \def\eq@drivernum{1}\def\eq@driver{pdftex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{pdftex}%
}
\DeclareOption{luatex}{%
- \def\eq@drivernum{1}\def\eq@driver{luatex}%
- \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
+ \def\eq@drivernum{1}\def\eq@driver{luatex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
}
\DeclareOption{dvipdfm}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
- \PassOptionsToPackage{dvipdfm}{insdljs}
- \PassOptionsToPackage{dvipdfm}{hyperref}
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfm}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfm}%
+ \PassOptionsToPackage{dvipdfm}{insdljs}
+ \PassOptionsToPackage{dvipdfm}{hyperref}
}
\DeclareOption{dvipdfmx}{%
- \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
- \PassOptionsToPackage{dvipdfmx}{insdljs}
- \PassOptionsToPackage{dvipdfmx}{hyperref}
+ \def\eq@drivernum{2}\def\eq@driver{dvipdfmx}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{dvipdfmx}%
+ \PassOptionsToPackage{dvipdfmx}{insdljs}
+ \PassOptionsToPackage{dvipdfmx}{hyperref}
}
\DeclareOption{xetex}{%
- \def\eq@drivernum{2}\def\eq@driver{xetex}%
- \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
+ \def\eq@drivernum{2}\def\eq@driver{xetex}%
+ \def\eq@drivercode{edvipdfm.def}\def\ef@driver{xetex}%
}
\DeclareOption{textures}{%
- \def\eq@drivernum{3}\def\eq@driver{textures}%
- \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
- \PassOptionsToPackage{textures}{insdljs}%
- \PassOptionsToPackage{textures}{hyperref}
+ \def\eq@drivernum{3}\def\eq@driver{textures}%
+ \def\eq@drivercode{epdfmark.def}\def\ef@driver{textures}%
+ \PassOptionsToPackage{textures}{insdljs}%
+ \PassOptionsToPackage{textures}{hyperref}
}
\def\eq@driver{dvipsone/dvips}
\def\eq@drivercode{epdfmark.def}
@@ -78,14 +78,14 @@
\providecommand{\previewOff}{\previewfalse}
\DeclareOption{useui}{\AtEndOfPackage{\ef@InputUIeForms}}
\def\ef@InputUIeForms{\InputIfFileExists{uieforms.def}%
- {\PackageInfo{eforms}{Inputting code for useui option}}%
- {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
- Reinstall or refresh your file name database.}}}
+ {\PackageInfo{eforms}{Inputting code for useui option}}%
+ {\PackageInfo{eforms}{Cannot find uieforms.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}
\DeclareOption{setcorder}{\def\inputCalcOrderJS{%
- \InputIfFileExists{setcorder.def}%
- {\PackageInfo{eforms}{Inputting code for setcorder option}}%
- {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
- Reinstall or refresh your file name database.}}}}
+ \InputIfFileExists{setcorder.def}%
+ {\PackageInfo{eforms}{Inputting code for setcorder option}}%
+ {\PackageWarning{eforms}{Cannot find setcorder.def.\MessageBreak
+ Reinstall or refresh your file name database.}}}}
\let\inputCalcOrderJS\relax
\@ifpackageloaded{web}{%
\ExecuteOptions{\eq@driver@name}%
@@ -102,13 +102,13 @@
}
\ProcessOptions
\ifx\ef@driver\@empty
- \PackageError{eforms}%
- {You have not specified dvips, dvipsone, pdftex,\MessageBreak
- dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
- the eforms package}
- {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
- dvipdfmx, or xetex
- \MessageBreak in the option list of the eforms package.}%
+ \PackageError{eforms}%
+ {You have not specified dvips, dvipsone, pdftex,\MessageBreak
+ dvipdfm, dvipdfmx, or xetex in the option list of\MessageBreak
+ the eforms package}
+ {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm,
+ dvipdfmx, or xetex
+ \MessageBreak in the option list of the eforms package.}%
}{}
\fi
\newlength\eflength
@@ -125,11 +125,11 @@
\AtEndDocument{\csname endForm\endcsname}
}
\@ifpackageloaded{aeb_pro}{}{%
- \newcommand{\taggedPDF}{%
- \ifnum\eq@drivernum=0\relax
- \literalps@out{[{Catalog} <<%
- /MarkInfo<</Marked true>>%
- >> /PUT pdfmark}\fi}%
+ \newcommand{\taggedPDF}{%
+ \ifnum\eq@drivernum=0\relax
+ \literalps@out{\AEB@psMrk{Catalog} <<%
+ /MarkInfo<</Marked true>>%
+ >> /PUT pdfmark}\fi}%
}
\let\ef@YES=y \let\ef@NO=n
\let\ef@One=1 \let\ef@Zero=0
@@ -144,7 +144,7 @@
\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
\newlength\ef@dimena
\newtoks\ef@scratchtoks
-\newif\ifmakeXasPD \makeXasPDtrue % 12/22
+\newif\ifmakeXasPD \makeXasPDtrue
\newif\ifmakePDasX \makePDasXfalse
\def\makeXasPDOn{\makeXasPDtrue\makePDasXfalse}
\def\makeXasPDOff{\makeXasPDfalse}
@@ -154,9 +154,11 @@
\let\ckbox@Color\relax\else
\def\ckbox@Color{\color{#1}}\fi}\let\ckbox@Color\relax
\def\efPreviewOnRule{0.4pt}
-\def\PMCA#1{\def\@rgi{#1}\ifx\@rgi\@empty
- \let\@PMCA\@empty\else\def\@PMCA{\hb@xt@\z@{\hss#1\hss}}\fi}
-\let\@PMCA\@empty
+\def\PMPV#1{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\@PMPV\@empty\else\edef\@PMPV{\noexpand
+ \hb@xt@\noexpand\z@{\hss#1\hss}}\fi}
+\let\@PMPV\@empty
+\let\pmpvFmt\@empty
\def\ef@Bbox#1#2{\hbox{\ifpreview
\setlength\fboxrule{\efPreviewOnRule}\setlength\fboxsep{0pt}%
\@tempdima=#1\relax
@@ -166,7 +168,7 @@
\ifdim\@tempdimb<2\fboxrule\else
\advance\@tempdimb by-2\fboxrule\fi
\ckbox@Color\fbox{\parbox[b][\@tempdimb][c]{\@tempdima}%
- {\vfil\hfil\@PMCA\hfil\vfil}}\else
+ {\vfil\hfil\pmpvFmt{\@PMPV}\hfil\vfil}}\else
\parbox[b][#2][c]{#1}{\vfil\hfil\hfil\vfil}\fi}%
}
\let\Bbox\ef@Bbox
@@ -203,12 +205,18 @@
\else
\@getCmdName{\F}\edef\arg@F{\@CmdName}%
\@getCmdName{#1}%
- \ifx\arg@F\@CmdName % if \Ff, let's add arguments
+ \ifx\arg@F\@CmdName % if \F, let's add arguments
\ifx\eq@F\@empty\def\eq@FValue{0}\else
\expandafter\getFValue\eq@F\@nil\fi
\@tempcnta=\eq@FValue
\def\eq@arg{#2}%
\ifx\eq@arg\@empty\else
+ \ifnum#2=2\relax % dpstoday
+ \let\ef@isHidden\ef@YES\else
+ \ifnum#2=32\relax
+ \let\ef@isHidden\ef@YES\else
+ \let\ef@isHidden\ef@NO
+ \fi\fi
\advance\@tempcnta by#2\fi
\edef\eq@F{/F \the\@tempcnta}%
\def\ef@next{\processAppArgs}%
@@ -218,6 +226,7 @@
\ifx\arg@presets\@CmdName
\def\ef@next{\expandafter\processAppArgs#2}%
\else
+%% \nameuse is expanded within the argument below, where it is defined
\@getCmdName{\epresets}%
\edef\arg@epresets{\@CmdName}\@getCmdName{#1}%
\ifx\arg@epresets\@CmdName
@@ -279,30 +288,30 @@
\def\@eqF#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
\let\eq@F\@empty\else\def\eq@F{/F #1}\fi}\def\eq@F{}
\def\@eqBS#1{%
- \let\eq@BS=0\relax
- \ifx\eq@W\@empty\else\let\eq@BS=1\fi
- \ifx\eq@S\@empty\else\let\eq@BS=1\fi
- \ifx\eq@D\@empty\else\let\eq@BS=1\fi
- \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
- \ifx\eq@W\@empty\let\link@BS\@empty\fi
+ \let\eq@BS=0\relax
+ \ifx\eq@W\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@S\@empty\else\let\eq@BS=1\fi
+ \ifx\eq@D\@empty\else\let\eq@BS=1\fi
+ \edef\link@BS{\if\eq@BS1/BS<<\eq@W\eq@S\eq@D>>\fi}%
+ \ifx\eq@W\@empty\let\link@BS\@empty\fi
}\def\link@BS{}
\def\@eqpresets#1{#1}%
\def\@eqepresets#1{#1}
\def\@eqW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@W\@empty\def\eq@W@value{0}\else
- \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
- \xdef\g@eq@W@value@bp{\eq@W@value bp}}
+ \let\eq@W\@empty\def\eq@W@value{0}\else
+ \def\eq@W@value{#1}\def\eq@W{/W #1}\fi
+ \xdef\g@eq@W@value@bp{\eq@W@value bp}}
\def\eq@W{}\def\eq@W@value{0}
\def\g@eq@W@valu@bp{0bp} % dps 12/22
\def\@eqS#1{\def\eq@S@value{#1}\ifx\eq@S@value\@empty
- \let\eq@S\@empty\else
- \def\eq@S{/S/#1}\def\eq@temp{D}%
- \ifx\eq@S@value\eq@temp
- \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
- \fi\fi}\def\eq@S{}
+ \let\eq@S\@empty\else
+ \def\eq@S{/S/#1}\def\eq@temp{D}%
+ \ifx\eq@S@value\eq@temp
+ \ifx\eq@D\@empty\def\eq@D{/D [3]}\fi
+ \fi\fi}\def\eq@S{}
\def\@eqD#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@D\@empty\else
- \def\eq@D{/D [#1]}\fi}\def\eq@D{}
+ \let\eq@D\@empty\else
+ \def\eq@D{/D [#1]}\fi}\def\eq@D{}
\def\@eqBorder#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
\let\eq@Border\@empty\else\def\eq@Border{/Border [#1]}\fi}%
\def\eq@Border{/Border [0 0 0]}
@@ -328,103 +337,103 @@
\def\ef@rPage#1{\@tempcnta=#1\relax\advance\@tempcnta-1
\edef\rPage##1{\the\@tempcnta}}
\long\def\ef@searchrPage#1\rPage#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
+ \ifx\ef@argii\ef@end\else\rPage{#2}\fi}
\def\ef@searchmlLink#1\mlLink#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
- \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
- \let\ef@mlLink\ef@Zero\fi\fi}
+ \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
+ \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
+ \let\ef@mlLink\ef@Zero\fi\fi}
\def\ef@searchGoToR#1/GoToR#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@filecolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@filecolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchURI#1/URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchCmdURI#1\URI#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@urlcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@urlcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchNamed#1/Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchCmdNamed#1\Named#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@menucolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@menucolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@searchLaunch#1/Launch#2\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
- \def\ef@thislinkcolor{\@runcolor}\fi
- \expandafter\ef@gobbleToendmarker\fi}
+ \ifx\ef@argii\ef@end\else\ifx\ef@linktxtcolor@set0%
+ \def\ef@thislinkcolor{\@runcolor}\fi
+ \expandafter\ef@gobbleToendmarker\fi}
\def\ef@preprocessA#1{%
- \let\rPage\relax\edef\ef@argi{#1}%
- \ifx\annot@type\annot@type@link
- \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
- \expandafter\ef@searchURI\ef@argi/URI\end\@nil
- \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
- \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
- \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
- \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
- \ef@endmarker\fi
- \let\rPage\ef@rPage
- \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
+ \let\rPage\relax\edef\ef@argi{#1}%
+ \ifx\annot@type\annot@type@link
+ \expandafter\ef@searchGoToR\ef@argi/GoToR\end\@nil
+ \expandafter\ef@searchURI\ef@argi/URI\end\@nil
+ \expandafter\ef@searchCmdURI\ef@argi\URI\end\@nil
+ \expandafter\ef@searchNamed\ef@argi/Named\end\@nil
+ \expandafter\ef@searchCmdNamed\ef@argi\Named\end\@nil
+ \expandafter\ef@searchLaunch\ef@argi/Launch\end\@nil
+ \ef@endmarker\fi
+ \let\rPage\ef@rPage
+ \expandafter\ef@searchrPage\ef@argi\rPage\end\@nil
}
\def\@eqA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@A\@empty\else\ef@preprocessA{#1}%
- \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
+ \let\eq@A\@empty\else\ef@preprocessA{#1}%
+ \def\eq@A{/A <<#1>>}\fi}\def\eq@A{}
\def\@eqmlLink#1{\def\eq@arg{#1}\ifx\eq@arg\ef@true
- \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
+ \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
\def\@eqLock#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
- \def\eq@Lock{}
+ \let\eq@Lock\@empty\else\def\eq@Lock{/Lock <<#1>>}\fi}
+\def\eq@Lock{}
\newif\ifisCalculate\isCalculatefalse
\def\ef@searchCalc#1\AACalculate#2\@nil{%
- \ifx#2\end\else\aftergroup\isCalculatetrue\fi
+ \ifx#2\end\else\aftergroup\isCalculatetrue\fi
}
\def\@eqAA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty\let\eq@AA\@empty
- \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
- \def\eq@AA{/AA <<#1>>}\fi}
+ \else\begingroup\ef@searchCalc#1\AACalculate\end\@nil\endgroup
+ \def\eq@AA{/AA <<#1>>}\fi}
\def\eq@AA{/AA <<\eq@AAmouseup\eq@AAmousedown\eq@AAmouseenter%
- \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
- \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
- \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
+ \eq@AAmouseexit\eq@AAonfocus\eq@AAonblur\eq@AAformat%
+ \eq@AAkeystroke\eq@AAvalidate\eq@AAcalculate\eq@AApageopen%
+ \eq@AApageclose\eq@AApagevisible\eq@AApageinvisible>>}
\def\@eqAAmouseup#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseup\@empty\else\def\eq@AAmouseup{/U<<\JS{#1}>>}\fi}
\let\eq@AAmouseup\@empty
\def\@eqAAmousedown#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmousedown\@empty\else
- \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
+ \let\eq@AAmousedown\@empty\else
+ \def\eq@AAmousedown{/D<<\JS{#1}>>}\fi}
\let\eq@AAmousedown\@empty
\def\@eqAAmouseenter#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseenter\@empty\else
- \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseenter\@empty\else
+ \def\eq@AAmouseenter{/E<<\JS{#1}>>}\fi}
\let\eq@AAmouseenter\@empty
\def\@eqAAmouseexit#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAmouseexit\@empty\else
- \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
+ \let\eq@AAmouseexit\@empty\else
+ \def\eq@AAmouseexit{/X<<\JS{#1}>>}\fi}
\let\eq@AAmouseexit\@empty
\def\@eqAAonfocus#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonfocus\@empty\else
- \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
+ \let\eq@AAonfocus\@empty\else
+ \def\eq@AAonfocus{/Fo<<\JS{#1}>>}\fi}
\def\@eqAAmousefocus{\@eqAAonfocus}
\let\eq@AAonfocus\@empty
\def\@eqAAonblur#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAonblur\@empty\else
- \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
+ \let\eq@AAonblur\@empty\else
+ \def\eq@AAonblur{/Bl<<\JS{#1}>>}\fi}
\def\@eqAAmouseblur{\def\@eqAAonblur}
\let\eq@AAonblur\@empty
\def\@eqAAformat#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAformat\@empty\else
- \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
+ \let\eq@AAformat\@empty\else
+ \def\eq@AAformat{/F<<\JS{#1}>>}\fi}
\let\eq@AAformat\@empty
\def\@eqAAkeystroke#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAkeystroke\@empty\else
- \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
+ \let\eq@AAkeystroke\@empty\else
+ \def\eq@AAkeystroke{/K<<\JS{#1}>>}\fi}
\let\eq@AAkeystroke\@empty
\def\@eqAAvalidate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AAvalidate\@empty\else
- \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
+ \let\eq@AAvalidate\@empty\else
+ \def\eq@AAvalidate{/V<<\JS{#1}>>}\fi}
\let\eq@AAvalidate\@empty
\def\@eqAddAAcalculate#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
\else\def\eq@AAcalculate{;}\fi\def\eq@AddAAcalculate{#1}}
@@ -437,20 +446,20 @@
}
\let\eq@AAcalculate\@empty
\def\@eqAApageopen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageopen\@empty\else
- \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
+ \let\eq@AApageopen\@empty\else
+ \def\eq@AApageopen{/PO<<\JS{#1}>>}\fi}
\let\eq@AApageopen\@empty
\def\@eqAApageclose#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageclose\@empty\else
- \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
+ \let\eq@AApageclose\@empty\else
+ \def\eq@AApageclose{/PC<<\JS{#1}>>}\fi}
\let\eq@AApageclose\@empty
\def\@eqAApagevisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApagevisible\@empty\else
- \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
+ \let\eq@AApagevisible\@empty\else
+ \def\eq@AApagevisible{/PV<<\JS{#1}>>}\fi}
\let\eq@AApagevisible\@empty
\def\@eqAApageinvisible#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AApageinvisible\@empty\else
- \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
+ \let\eq@AApageinvisible\@empty\else
+ \def\eq@AApageinvisible{/PI<<\JS{#1}>>}\fi}
\let\eq@AApageinvisible\@empty
\def\@eqDA#1{\def\eq@DA{#1}}
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
@@ -460,133 +469,165 @@
\def\eq@textSizeDefault{9}
\edef\eq@textSize{\eq@textSizeDefault}
\def\eq@RV@Body{<?xml version="1.0"?><body %
- xfa:APIVersion="Acroform:2.7.0.0" %
- xfa:contentType="text/html" %
- xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
- xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
+ xfa:APIVersion="Acroform:2.7.0.0" %
+ xfa:contentType="text/html" %
+ xfa:spec="2.1" xmlns="http://www.w3.org/1999/xhtml" %
+ xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">}
\def\eq@RV@endBody{</body>}
\def\@eqRV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
- \eq@RV@endBody)\fi}}\def\eq@RV{}
+ \let\eq@RV\@empty\else\def\eq@RV{/RV(\eq@RV@Body#1%
+ \eq@RV@endBody)\fi}}\def\eq@RV{}
\def\@eqDS#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
+ \let\eq@DS\@empty\else\def\eq@DS{/DS(#1)\fi}}\def\eq@DS{}
\def\@eqtextColor#1{\ef@parsePDFColor{#1}%
- \HyColor@IfXcolor{%
- \expandafter\HyColor@FieldColor%
- \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
- }{\edef\eq@textColor{\ef@colorSpec@out}}%
+ \HyColor@IfXcolor{%
+ \expandafter\HyColor@FieldColor%
+ \expandafter{\ef@colorSpec@out}{\eq@textColor}{}{}%
+ }{\edef\eq@textColor{\ef@colorSpec@out}}%
}
\def\eq@textColor{0 g}
\def\@eqQ#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
+ \let\eq@Q\@empty\else\def\eq@Q{/Q #1}\fi}\def\eq@Q{}
\def\ef@isunicode#1\unicodeStr#2\@nil{\def\argi{#1}%
- \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
- \def\ifbool@ef{iffalse}\fi}
+ \ifx\argi\@empty\def\ifbool@ef{iftrue}\else
+ \def\ifbool@ef{iffalse}\fi}
\def\@eqDV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@DV{/DV(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@DV{}
+ \expandafter\csname\ifbool@ef\endcsname\@equDV{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@DV\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@DV{/DV(\ef@uni@temp)}%
+ \makespecialJS\fi\fi}\def\eq@DV{}
\def\ef@pdfCRLFTABDefns{%
- \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
+ \def\r{\textCR}\def\t{\textHT}\def\n{\textLF}}
\def\@eqnuDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
+ \let\eq@DV\@empty\else\def\eq@DV{/DV(#1)}\fi}
\def\@equDV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
-\def\@eqV#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equV{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@V{/V(\ef@uni@temp)}\makespecialJS\fi\fi}\def\eq@V{}
+ \let\eq@DV\@empty\else\def\eq@DV{/DV<#1>}\fi}
+\let\pmpvV\@empty
+\let\eq@VSAVE\@empty
+\def\@eqV#1{\Hy@pdfstringfalse
+ \edef\pmpvV{#1}%
+ \let\unicodeStrSAVE\unicodeStr
+ \Hy@pdfstringtrue\let\unicodeStr\relax
+ \edef\x{#1}\let\unicodeStr\unicodeStrSAVE
+ \expandafter\ef@isunicode\x\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\Hy@pdfstringtrue
+ \ifefpmpv\def\x{FEFF}\let\eq@V\@empty\else\edef\x{#1}\fi
+ \@equV{\x}%
+ \else
+ \def\eq@arg{#1}%
+ \ifx\eq@arg\@empty
+ \let\eq@V\@empty
+ \else
+ \Hy@pdfstringtrue
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \Hy@pdfstringtrue\edef\eq@V{/V(\ef@uni@temp)}%
+ \let\eq@VSAVE\eq@V
+ \ifefpmpv\let\eq@V\@empty\fi
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@V{}
\def\@eqnuV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
\let\eq@V\@empty\else\def\eq@V{/V(#1)}\fi}
\def\@equV#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@V\@empty\else\def\eq@V{/V<#1>}\fi}%
+ \let\eq@V\@empty\else\edef\eq@V{/V<#1>}\fi}%
\def\@eqTU#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
- \def\eq@arg{#1}\let\r@save\r\let\r\textCR
- \ifx\eq@arg\@empty\let\eq@TU\@empty\else
- \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
- \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
- \let\r\r@save}\def\eq@TU{}
+ \expandafter\csname\ifbool@ef\endcsname\@equTU{#1}\else
+ \def\eq@arg{#1}\let\r@save\r\let\r\textCR
+ \ifx\eq@arg\@empty\let\eq@TU\@empty\else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \edef\eq@TU{/TU(\ef@uni@temp)}\makespecialJS\fi\fi
+ \let\r\r@save}\def\eq@TU{}
\def\@equTU#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
+ \let\eq@TU\@empty\else\def\eq@TU{/TU<#1>}\fi}
\def\@eqFf#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
- \def\eq@Ff{}
+ \let\eq@Ff\@empty\else\def\eq@Ff{/Ff #1}\fi}
+\def\eq@Ff{}
\def\@eqMaxLen#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
- \def\eq@MaxLen{}
+ \let\eq@MaxLen\@empty\else\def\eq@MaxLen{/MaxLen #1}\fi}%
+ \def\eq@MaxLen{}
\def\@eqH#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
+ \let\eq@H\@empty\else\def\eq@H{/H/#1}\fi}\def\eq@H{}
\def\@eqMK#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
- \def\eq@MK{}
- \let\@vertRotate=0
- \def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
- \let\eq@R\@empty\else
- \@tempcnta=\eq@R@value\relax
- \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
- \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
- \let\@vertRotate=1\fi\fi
- \def\eq@R{/R #1}\fi}
- \def\eq@R{}
- \def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BC\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
- \edef\eq@BC{/BC [\eq@BC]}\else
- \def\eq@BC{/BC [#1]}\fi
- \fi}
- \def\eq@BC{}
- \def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@BG\@empty\else % 2010/07/23
- \expandafter\ef@isitnamed\eq@arg\ef@nil
- \ifx\ef@latex@color\ef@y\expandafter
- \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
- \edef\eq@BG{/BG [\eq@BG]}\else
- \def\eq@BG{/BG [#1]}\fi
- \fi}
- \def\eq@BG{}
- \def\@eqCA#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@CA{#1}\edef\ef@kvCA{/CA(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@CA{}\def\ef@kvCA{}
- \def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@CA\@empty\let\ef@kvCA\@empty
- \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
- \def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@RC{}\def\ef@kvRC{}
- \def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@RC\@empty\let\ef@kvRC\@empty
- \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
- \def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
- \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
- \def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\ef@pdfCRLFTABDefns
- \pdfstringdef\ef@uni@temp{#1}%
- \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
- \makespecialJS\fi\fi}
- \def\eq@AC{}\def\ef@kvAC{}
- \def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@AC\@empty\let\ef@kvAC\@empty
- \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
+ \let\eq@MK\@empty\else\def\eq@MK{/MK << #1 >> }\fi}%
+\def\eq@MK{}
+\let\@vertRotate=0
+\def\@eqR#1{\def\eq@R@value{#1}\ifx\eq@R@value\@empty
+ \let\eq@R\@empty\else
+ \@tempcnta=\eq@R@value\relax
+ \ifnum\@tempcnta<0 \@tempcnta=-\@tempcnta\fi
+ \ifnum\@tempcnta=0 \else\ifnum\@tempcnta=180 \else
+ \let\@vertRotate\ef@One\fi\fi
+ \def\eq@R{/R #1}\fi}
+\def\eq@R{}
+\def\@eqBC#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BC\@empty\else
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BC}{}{}%
+ \edef\eq@BC{/BC [\eq@BC]}\else
+ \def\eq@BC{/BC [#1]}\fi
+ \fi
+}\def\eq@BC{}
+\def\@eqBG#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@BG\@empty\let\ef@isBGtransparent\ef@YES
+ \else\let\ef@isBGtransparent\ef@NO
+ \expandafter\ef@isitnamed\eq@arg\ef@nil
+ \ifx\ef@latex@color\ef@y\expandafter
+ \HyColor@XZeroOneThreeFour\expandafter{\eq@arg}{\eq@BG}{}{}%
+ \edef\eq@BG{/BG [\eq@BG]}\else
+ \def\eq@BG{/BG [#1]}\fi
+ \fi
+}\def\eq@BG{}
+\let\pmpvCA\@empty
+\def\@eqCA#1{\let\unicodeStrSAVE\unicodeStr
+ \Hy@pdfstringtrue\let\unicodeStr\relax
+ \edef\x{#1}\let\unicodeStr\unicodeStrSAVE
+ \expandafter\ef@isunicode\x\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equCA{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \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}%
+ \edef\ef@kvCA{/CA(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@CA{}\def\ef@kvCA{}
+\def\@equCA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@CA\@empty\let\ef@kvCA\@empty
+ \else\def\eq@CA{#1}\def\ef@kvCA{/CA<#1>}\fi}
+\def\@eqRC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equRC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else
+ \ef@pdfCRLFTABDefns\pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@RC{#1}\edef\ef@kvRC{/RC(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@RC{}\def\ef@kvRC{}
+\def\@equRC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@RC\@empty\let\ef@kvRC\@empty
+ \else\def\eq@RC{#1}\def\ef@kvRC{/RC<#1>}\fi}
+\def\@eqAC#1{\ef@isunicode#1\unicodeStr\@nil
+ \expandafter\csname\ifbool@ef\endcsname\@equAC{#1}\else
+ \def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\ef@pdfCRLFTABDefns
+ \pdfstringdef\ef@uni@temp{#1}%
+ \def\eq@AC{#1}\edef\ef@kvAC{/AC(\ef@uni@temp)}%
+ \makespecialJS
+ \fi
+ \fi
+}\def\eq@AC{}\def\ef@kvAC{}
+\def\@equAC#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
+ \let\eq@AC\@empty\let\ef@kvAC\@empty
+ \else\def\eq@AC{#1}\def\ef@kvAC{/AC<#1>}\fi}
\def\eq@define@IconMK{\def\eq@IconMK{\eq@I\eq@RI\eq@IX\eq@TP
/IF<<\eq@SW\eq@ST\eq@PA\eq@FB>>}}
\let\eq@IconMK\@empty
@@ -611,8 +652,7 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@I{}
+}\def\eq@I{}
\def\@eqRI#1{%
\ifx\annot@type\annot@type@button
\def\eq@arg{#1}%
@@ -625,8 +665,7 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@RI{}
+}\def\eq@RI{}
\def\@eqIX#1{%
\ifx\annot@type\annot@type@button
\def\eq@arg{#1}%
@@ -639,95 +678,94 @@
\fi
\eq@define@IconMK
\fi
-}
-\def\eq@IX{}
+}\def\eq@IX{}
\def\@eqTP#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
+ \let\eq@TP\@empty\else\def\eq@TP{/TP #1}\fi}
\def\eq@TP{/TP 0} % default 0
\def\@eqSW#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
+ \let\eq@SW\@empty\else\def\eq@SW{/SW/#1}\fi}
\def\eq@SW{/SW/A} % the default, always scale
\def\@eqST#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
+ \let\eq@ST\@empty\else\def\eq@ST{/S/#1}\fi}
\def\eq@ST{/S/P} % the default, proportional scaling
\def\@eqPA#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
+ \let\eq@PA\@empty\else\def\eq@PA{/A [#1]}\fi}
\def\eq@PA{/A [0.5 0.5]} % the default
\def\@eqFB#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
+ \let\eq@PA\@empty\else\def\eq@FB{/FB #1}\fi}
\def\eq@FB{/FB false} % the default
\def\@eqmkIns#1{\def\eq@mkIns{#1}}\def\eq@mkIns{}
\def\@eqOpt#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Opt\@empty\else\def\eq@Opt{/Opt [#1]}\fi}
- \def\eq@Opt{}
+ \let\eq@Opt\@empty\else\ifefpmpv\let\eq@Opt\@empty\else
+ \def\eq@Opt{/Opt [#1]}\fi\fi}\def\eq@Opt{}
\def\@eqTI#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
- \def\eq@TI{}
+ \let\eq@TI\@empty\else\def\eq@TI{/TI #1}\fi}
+\def\eq@TI{}
\def\@eqrawPDF#1{\def\eq@rawPDF{#1}}\def\eq@rawPDF{}
\def\@eqcmd#1{#1}
\def\@eqQuadPoints#1{\def\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@QuadPoints\@empty\else
- \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
+ \let\eq@QuadPoints\@empty\else
+ \def\eq@QuadPoints{/QuadPoints {#1}}\fi}
\def\eq@QuadPoints{}
\def\@eqColor#1{\edef\eq@arg{#1}\ifx\eq@arg\@empty
- \let\eq@Color\@empty\else
- \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
- \edef\eq@Color{/C[\eq@Color]}\fi}
+ \let\eq@Color\@empty\else
+ \HyColor@XZeroOneThreeFour{#1}{\eq@Color}{}{}%
+ \edef\eq@Color{/C[\eq@Color]}\fi}
\def\eq@Color{}
\def\@eqlinktxtcolor#1{%
- \def\ef@argi{#1}\ifHy@colorlinks
- \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
- \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
+ \def\ef@argi{#1}\ifHy@colorlinks
+ \ifx\ef@argi\@empty\let\ef@colorthislink\normalcolor\else
+ \let\ef@linktxtcolor@set=1\def\ef@thislinkcolor{#1}\fi\fi
}\let\ef@linktxtcolor@set=0
\def\@eqrectH#1{\def\eq@rectH{#1}\ifx\eq@rectH\@empty\else
- \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
+ \setlength\eflength\eq@rectH\edef\eq@rectH{\the\eflength}\fi}
\def\@eqrectW#1{\def\eq@rectW{#1}\ifx\eq@rectW\@empty\else
- \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
+ \setlength\eflength\eq@rectW\edef\eq@rectW{\the\eflength}\fi}
\def\@eqobjdef#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
- \def\eq@objdef{/_objdef {#1}}\fi
+ \let\eq@objdef\@empty\else\def\eq@objdefName{#1}%
+ \def\eq@objdef{/_objdef {#1}}\fi
}
\let\eq@objdef\@empty
\def\@eqtaborder#1{\def\ef@arg{#1}\ifx\ef@arg\@empty
- \let\eq@taborder\@empty\else
- \def\eq@taborder{#1}\fi
+ \let\eq@taborder\@empty\else
+ \def\eq@taborder{#1}\fi
}
\let\eq@taborder\@empty
\def\ef@y{y}\def\ef@n{n}
\def\@eqautoCenter#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
- \let\autoCenter\ef@n\else\let\autoCenter\ef@y
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\autoCenter.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
+ \let\autoCenter\ef@y\else\ifx\ef@arg\ef@n
+ \let\autoCenter\ef@n\else\let\autoCenter\ef@y
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\autoCenter.\MessageBreak
+ Using the default of 'y'}\fi
+\fi}
\let\autoCenter\ef@y
\newif\ifeq@inlineCenter \eq@inlineCenterfalse
\let\inlineCenter=n
\def\@eqinline#1{\eq@inlineCenterfalse
- \def\ef@arg{#1}\ifx\ef@arg\ef@y
- \let\inlineCenter\ef@y\eq@inlineCentertrue\else
- \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\inline.\MessageBreak
- Using the default of 'n'}%
- \fi\fi}
+ \def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \let\inlineCenter\ef@y\eq@inlineCentertrue\else
+ \ifx\ef@arg\ef@n\let\inlineCenter\ef@n\else\let\inlineCenter\ef@n
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\inline.\MessageBreak
+ Using the default of 'n'}\fi
+\fi}
\def\@eqsymbolchoice#1{\expandafter\ifx\csname eq@#1\endcsname\relax
- \typeout{exerquiz: `#1' is not an acceptable option
- for \string\symbolechoice, inserting default, `check'.}
- \edef\symbol@choice{\eq@check}\else
- \edef\symbol@choice{\csname eq@#1\endcsname}\fi
+ \typeout{exerquiz: `#1' is not an acceptable option
+ for \string\symbolechoice, inserting default, `check'.}
+ \edef\symbol@choice{\eq@check}\else
+ \edef\symbol@choice{\csname eq@#1\endcsname}\fi
}
\newif\iffixmlinks \fixmlinkstrue
\def\mlfixOn{\fixmlinkstrue}
\def\mlfixOff{\fixmlinksfalse}
\def\@eqmlfix#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \mlfixOn\else\ifx\ef@arg\ef@n
- \mlfixOff\else\mlfixOn
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlfix.\MessageBreak
- Using the default of 'y'}%
- \fi\fi}
+ \mlfixOn\else\ifx\ef@arg\ef@n
+ \mlfixOff\else\mlfixOn
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlfix.\MessageBreak
+ Using the default of 'y'}\fi
+\fi}
\newbox\mlstrutbox
\def\@eqmlstrut#1{\setbox\mlstrutbox\hbox{#1}%
\def\ml@strut{\vrule \@height\ht\mlstrutbox
@@ -739,18 +777,19 @@
\def\@eqmlcrackat#1{\def\eq@mlcrackat{#1}}
\let\eq@mlcrackat\@empty
\def\@eqmlhyph#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
- \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
- \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
- \PackageWarning{eforms}{The value of '#1' is not a
- supported value\MessageBreak for \string\mlhyph.\MessageBreak
- Using the default of 'n'}\fi\fi}
-\let\eq@mlhyph\@empty
+ \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
+ \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlhyph.\MessageBreak
+ Using the default of 'n'}\fi
+\fi}\let\eq@mlhyph\@empty
\def\@eqmlignore#1{\def\eq@mlchunk{#1}\ifx\eq@mlchunk\@empty
\def\eq@mlchunk{0}\fi\let\eq@mlignore\ef@YES}
\def\eq@mlchunk{0}
\let\eq@mlignore\ef@NO
\def\@eqmlcrackinsat#1{\def\eq@mlcrackinsat{#1}}
\let\eq@mlcrackinsat\@empty
+\def\@eqprotect#1{\eq@protect{#1}}
\def\eq@protect#1{\let#1\@empty}
\def\ef@stop{\relax} %\def\ef@relax{\relax}
\def\protectedKeys#1#2{\ef@scratchtoks={}%
@@ -761,8 +800,7 @@
\def\protectedKeys@gettwo#1#2{%
\ifx#1\ef@stop\else\ef@scratchtoks=\expandafter
{\the\ef@scratchtoks\protect#1{#2}}\expandafter
- \protectedKeys@gettwo
- \fi}
+ \protectedKeys@gettwo\fi}
\begingroup\catcode`\#=12 \catcode`*=6
\ifpdfmarkup
\gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
@@ -771,10 +809,10 @@
\def\efHxError{\PackageError{eforms}{The glyph is not supported}{}}
\def\HGERROR{efHxError}
\ifpdfmarkup
- \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
- \global\@namedef{efHex#1}{\csname#2\endcsname}\else
- \global\@namedef{efHex#1}{\expandafter
- \string\csname#2\endcsname}\fi}
+ \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex#1}{\csname#2\endcsname}\else
+ \global\@namedef{efHex#1}{\expandafter
+ \string\csname#2\endcsname}\fi}
\else
\begingroup\catcode`\#=12 \catcode`*=6
\gdef\HexGlyph*1*2{\def\arg@ii{*2}\ifx\arg@ii\HGERROR
@@ -955,9 +993,11 @@
\def\ef@djXPD{\ifxetex\ifmakeXasPD\ef@adjrectWH{2bp}\fi
\else\ifmakePDasX\ef@adjrectWH{-2bp}\fi\fi}
\def\ef@btnspcr{}
-\@ifundefined{ifefpmca}{\newif\ifefpmca\efpmcafalse}{}
-\def\pmcaOn{\efpmcatrue}
-\def\pmcaOff{\efpmcafalse}
+\@ifundefined{ifefpmpv}{\newif\ifefpmpv\efpmpvfalse}{}
+\def\pmpvOn{\efpmpvtrue\PackageInfo{eforms}
+ {Turning on enhanced preview (\string\pmpvOn)}}\let\pmcaOn\pmpvOn
+\def\pmpvOff{\efpmpvfalse\PackageInfo{eforms}
+ {Turning off enhanced preview (\string\pvpmOff)}}\let\pmcaOff\pmpvOff
\def\eq@setButtonProps#1#2{\makeJSspecials
\processAppArgs#2\end\@nil % set widget properties
\ifx\eq@BC\@empty\@eqW{}\else
@@ -976,6 +1016,7 @@
\else
\def\eq@btn@sp{\hbox to\dimen@{\hfill}}%
\fi
+ \Hy@pdfstringtrue
\expandafter\def\expandafter
\ef@btnspcr\expandafter{\ef@btnspcr\eq@btn@sp}%
\sbox{\eq@tmpbox}{\ef@btnspcr\eq@CA\ef@btnspcr}%
@@ -991,7 +1032,11 @@
\else % if \eq@rectW is not \@empty
\wd\eq@tmpbox=\eq@rectW
\fi
- \ifefpmca\PMCA{\eq@CA}\fi\ef@djXPD#1%
+ \ifefpmpv\Hy@pdfstringfalse
+ \ifx\ef@isBGtransparent\ef@YES
+ \let\ef@kvCA\@empty\fi
+ \PMPV{\eq@CA}\fi
+ \ef@djXPD#1%
}
\def\eq@setWidgetProps#1#2{\makeJSspecials
\processAppArgs#2\end\@nil % set widget properties
@@ -999,6 +1044,11 @@
\ifx\eq@BC\@empty\@eqW{}\else
\if\eq@W@value0\let\eq@BC\@empty\fi\fi
\fi
+ \ifefpmpv\Hy@pdfstringfalse
+ \ifx\ef@isHidden\ef@YES
+ \let\eq@V\eq@VSAVE\else
+ \PMPV{\pmpvV}\fi
+ \fi
\ef@djXPD#1%
}
\def\ef@sanitize@toks{\@makeother\~\@makeother\#\@makeother\&%
@@ -1079,10 +1129,11 @@
\ef@pdfstrCLOpti}
\def\annot@type@listbox{listbox}
\newcommand\list@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@listbox}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \ifefpmpv\let\eq@Opt\@empty\fi
\eqf@setDimens{#3}{#4}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@processEvery#8\end\noindent#6#7{#1}}
@@ -1097,10 +1148,11 @@
\eq@choice@driver}{\listBoxDefaults\every@listBox}}}
\def\annot@type@combobox{combobox}
\newcommand\combo@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@combobox}%
\@eqFf{\FfCombo}\pdfstringdef\Fld@name{#2}\dl@paramlocal
\expandafter\ef@pdfstrCLOpt#5\ef@@nil
+ \ifefpmpv\let\eq@Opt\@empty\fi
\eqf@setDimens{#3}{#4}%
\def\eq@DA{\eq@textFont\space\eq@textSize\space Tf \eq@textColor}%
\@processEvery#8\end\noindent#6#7{#1}}
@@ -1152,7 +1204,7 @@
}
\def\annot@type@button{pushbtn}
\newcommand\push@@Button[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@button}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\makeJSspecials\ef@preProcDefns
@@ -1170,17 +1222,21 @@
\mbox{\push@@Button{#1}{#2}{#3}{#4}{}{%
\eq@setButtonProps\eq@Button@driver}%
{\pushButtonDefaults\every@PushButton}}}
+\def\pmpvMrk#1{\def\pmpv@mrk{#1}}
+\pmpvMrk{X}
\def\annot@type@checkbox{checkbox}
\newcommand\check@@Box[8]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\let\#\ef@Hx\edef\annot@type{\annot@type@checkbox}%
\pdfstringdef\Fld@name{#2}\@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}%
+ \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\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+ \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}%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else
\def\eq@On{/#5}\fi\@eqtextFont{ZaDb}%
@@ -1196,15 +1252,17 @@
\eq@RadioCheck@driver}{\checkBoxDefaults\every@CheckBox}}}
\def\annot@type@radio{radiobtn}
\newcommand\radio@@Button[8]{\begingroup\let\#\ef@Hx
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@radio}%
\pdfstringdef\Fld@name{#2}\@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\ifpdfmarkup\def\eq@V{/V(##1) cvn }\else
- \def\eq@V{/V/##1}\fi\@eqAS{##1}\fi}%
+ \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}%
\eqf@setDimens{#3}{#4}%
\ifpdfmarkup\def\eq@On{(#5) cvn }\else\def\eq@On{/#5}\fi
\def\eq@Ff{/Ff \FfRadio}\@eqtextFont{ZaDb}%
@@ -1238,7 +1296,7 @@
}
\def\annot@type@text{textfld}
\newcommand\text@@Field[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@text}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\def\eq@Title{#2}\eqf@setDimens{#3}{#4}%
@@ -1270,7 +1328,7 @@
}
\def\annot@type@sig{sigfld}
\newcommand\sig@@Field[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\edef\annot@type{\annot@type@sig}%
\pdfstringdef\Fld@name{#2}\dl@paramlocal
\def\eq@Title{#2}\eqf@setDimens{#3}{#4}%
@@ -1293,7 +1351,7 @@
}
\def\annot@type@link{link}
\newcommand\set@@Link[7]{\begingroup
- \let\nameuse\@nameuse
+ \let\nameuse\@nameuse\let\tops\texorpdfstring
\dl@paramlocal
\makeJSspecials
\edef\annot@type{\annot@type@link}%
diff --git a/texmf-dist/tex/latex/acrotex/epdfmark.def b/texmf-dist/tex/latex/acrotex/epdfmark.def
index cac5bc72..7e5a8068 100644
--- a/texmf-dist/tex/latex/acrotex/epdfmark.def
+++ b/texmf-dist/tex/latex/acrotex/epdfmark.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,116 +19,120 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\Rect#1{\pdf@rect{\textcolor{\@linkcolor}{#1}}}
\def\noPeek#1#2{\literalps@out{%
- [ {ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
+ \AEB@psMrk{ThisPage} << \noPeekAction{#1}{#2} >> /PUT pdfmark}}
\def\eq@choice@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@choiceCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
\def\eq@Button@driver
{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@pushButtonCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \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
+ \dl@restorespcs
}
\def\eq@RadioCheck@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ \dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdf@rect{\makebox[\eq@tmpdima]{\phantom{\link@@Content}}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@RadioCheckCode
- /ANN pdfmark}\endgroup
- \dl@restorespcs
+ \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
+ \dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \ifisCalculate/_objdef {\Fld@name}\else\eq@objdef\fi
- /Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@TextFieldCode
- /ANN pdfmark
- \ifisCalculate[ {corder} {\Fld@name} /APPEND pdfmark\fi
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \pdf@rect{\lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \common@SigFieldCode
- /ANN pdfmark
- }\to@insertStrucTabOrder{Form}\endgroup
- \dl@restorespcs
+ \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
+ \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
+ }\to@insertStrucTabOrder{Form}\endgroup
+ \dl@restorespcs
}
\def\convertAToAction/A#1\@nil{\def\eq@A{/Action#1}}
\def\setLink@driver
{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \pdf@rect{\link@@Box}%
- \literalps@out{%
- [ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
- \eq@Border
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}%
- \to@insertStrucTabOrder{Link}\endgroup
- \dl@restorespcs
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \pdf@rect{\link@@Box}%
+ \literalps@out{\AEB@psMrk
+ \eq@objdef/Rect [pdf@llx pdf@lly pdf@urx pdf@ury]
+ \eq@Border
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}%
+ \to@insertStrucTabOrder{Link}\endgroup
+ \dl@restorespcs
}
\def\pboxRect{/Rect [\par@@Rect]}
\def\mllnkcontainer#1{#1}
\def\setLinkPbox@driver
{%
- \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
- \@eqBS{}%
- \literalps@out{\mllnkcontainer{%
- [ \eq@objdef\pboxRect
- \eq@Border
- \eq@QuadPoints % QuadPoints
- \common@LinkCode
- /Subtype /Link
- /ANN pdfmark}}%
- \to@insertStrucTabOrder{Link}\endgroup
- \dl@restorespcs
+ \ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
+ \@eqBS{}%
+ \literalps@out{\mllnkcontainer{%
+ \AEB@psMrk\eq@objdef\pboxRect
+ \eq@Border
+ \eq@QuadPoints % QuadPoints
+ \common@LinkCode
+ /Subtype /Link
+ /ANN pdfmark}}%
+ \to@insertStrucTabOrder{Link}\endgroup
+ \dl@restorespcs
}
\endinput
%%
diff --git a/texmf-dist/tex/latex/acrotex/epdftex.def b/texmf-dist/tex/latex/acrotex/epdftex.def
index 0c36ec23..d235584d 100644
--- a/texmf-dist/tex/latex/acrotex/epdftex.def
+++ b/texmf-dist/tex/latex/acrotex/epdftex.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -30,83 +30,88 @@
}%
\def\eq@choice@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@choiceCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
- \dl@restorespcs
+ \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
+ \hbox{\pdfstartlink user{\common@choiceCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+ \dl@restorespcs
}
\def\eq@Button@driver
{%
- \Hy@pdfstringtrue
- \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@pushButtonCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \Hy@pdfstringtrue
+ \ifx\eq@rectW\@empty\def\eq@rectW{\wd\eq@tmpbox}\ef@djXPD\fi
+ \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
+ \hbox{\pdfstartlink user{\common@pushButtonCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@RadioCheck@driver
{%
- \Hy@pdfstringtrue
- \if\@vertRotate1\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
- \hbox{\pdfstartlink user{\common@RadioCheckCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \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
+ \hbox{\pdfstartlink user{\common@RadioCheckCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\eq@l@check@driver
{%
- \pdfstartlink user{\common@RadioCheckCode}%
- \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
- \pdfendlink\endgroup
- \dl@restorespcs
+ \pdfstartlink user{\common@RadioCheckCode}%
+ \makebox[\eq@tmpdima]{\phantom{\link@@Content}}%
+ \pdfendlink\endgroup
+ \dl@restorespcs
}
\def\eq@TextField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode
- \hbox{\pdfstartlink user{\common@TextFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \HyField@AddToFields
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode
+ \hbox{\pdfstartlink user{\common@TextFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \HyField@AddToFields
+ \endgroup
+ \dl@restorespcs
}
\def\eq@SigField{\Hy@pdfstringtrue
- \if\@vertRotate1\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
- \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
- \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
- \endgroup
- \dl@restorespcs
+ \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
+ \leavevmode\hbox{\pdfstartlink user{\common@SigFieldCode}%
+ \lower\eqcenterWidget\ef@Bbox{\eq@rectW}{\eq@rectH}\pdfendlink}%
+ \endgroup
+ \dl@restorespcs
}
\def\setLink@driver
{%
- \@eqBS{}%
- \leavevmode\pdfstartlink
- attr {\eq@Border}%
- user{/Subtype/Link \common@LinkCode}%
- \Hy@colorlink{\@linkcolor}\link@@Box
- \close@pdflink
- \endgroup
- \dl@restorespcs
+ \@eqBS{}%
+ \leavevmode\pdfstartlink
+ attr {\eq@Border}%
+ user{/Subtype/Link \common@LinkCode}%
+ \Hy@colorlink{\@linkcolor}\link@@Box
+ \close@pdflink
+ \endgroup
+ \dl@restorespcs
}
\def\ef@setTabOrder{\ifx\ef@taborder\@empty\else
- \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
- \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
- \fi\endgroup
+ \edef\ef@tmp@toks{\the\pdfpageattr\space/Tabs/\ef@taborder}%
+ \global\pdfpageattr=\expandafter{\ef@tmp@toks}%
+ \fi\endgroup
}
\endinput
%%
diff --git a/texmf-dist/tex/latex/acrotex/pdfdochex.def b/texmf-dist/tex/latex/acrotex/pdfdochex.def
index 758789df..14ff0a80 100644
--- a/texmf-dist/tex/latex/acrotex/pdfdochex.def
+++ b/texmf-dist/tex/latex/acrotex/pdfdochex.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/setcorder.def b/texmf-dist/tex/latex/acrotex/setcorder.def
index 3826d623..6f215b0a 100644
--- a/texmf-dist/tex/latex/acrotex/setcorder.def
+++ b/texmf-dist/tex/latex/acrotex/setcorder.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/acrotex/uieforms.def b/texmf-dist/tex/latex/acrotex/uieforms.def
index 28a40bba..b441ba55 100644
--- a/texmf-dist/tex/latex/acrotex/uieforms.def
+++ b/texmf-dist/tex/latex/acrotex/uieforms.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2018 D. P. Story %%
+%% Copyright (C) 2002-2019 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%