summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-02-23 14:52:17 +0900
committerNorbert Preining <norbert@preining.info>2021-02-23 14:52:17 +0900
commitfb44baf77ae7cff9203e19612ea59cfe55f982bc (patch)
treebef700186a4d6626ac5374c0792ae5f7840f5d61
parent001d2f268370febe53928de6bd985ed75ee4b68c (diff)
aeb-pro update
-rw-r--r--texmf-dist/doc/latex/aeb-pro/README.md9
-rw-r--r--texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.pdfbin0 -> 370603 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.tex232
-rw-r--r--texmf-dist/doc/latex/aeb-pro/aebpro_man.pdfbin464340 -> 719107 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/aebpro_man.tex217
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdfbin70199 -> 0 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex18
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdfbin763806 -> 794029 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex63
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex26
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdfbin256560 -> 261015 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex24
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdfbin713378 -> 719343 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex2
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.pdfbin0 -> 26192 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/test_install.pdfbin19205 -> 26896 bytes
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/test_install.tex11
-rw-r--r--texmf-dist/doc/latex/aeb-pro/install_jsfiles.tex312
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb_pro.dtx290
-rw-r--r--texmf-dist/source/latex/aeb-pro/aeb_pro.ins3
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aeb-pro.sty29
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aeb_pro.sty16
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aeblayers.def2
-rw-r--r--texmf-dist/tex/latex/aeb-pro/aebpro.def220
-rw-r--r--texmf-dist/tex/latex/aeb-pro/anime_support.def6
-rw-r--r--texmf-dist/tex/latex/aeb-pro/btnnanime.def2
-rw-r--r--texmf-dist/tex/latex/aeb-pro/create_icon.def2
-rw-r--r--texmf-dist/tex/latex/aeb-pro/linkto.def6
-rw-r--r--texmf-dist/tex/latex/aeb-pro/ocganime.def2
29 files changed, 1074 insertions, 418 deletions
diff --git a/texmf-dist/doc/latex/aeb-pro/README.md b/texmf-dist/doc/latex/aeb-pro/README.md
index e82882f8..322055fa 100644
--- a/texmf-dist/doc/latex/aeb-pro/README.md
+++ b/texmf-dist/doc/latex/aeb-pro/README.md
@@ -1,6 +1,6 @@
The AeB Pro Package
Author: D. P. Story
-Dated: 2019-03-21
+Dated: 2021-02-07
The AeB Pro Package complements and extends AcroTeX eDucation Bundle.
@@ -38,6 +38,13 @@ The AcroTeX Blog (http://blog.acrotex.net/) lists the distribution files at
http://www.acrotex.net/blog/?page_id=835, all demo files that use AeB Pro
are listed at http://www.acrotex.net/blog/?tag=aeb-pro.
+What's New (2021-02-07) Fix a long time bug of page events.
+
+What's New (2021-02-04) Updated documentation to reflect new security restriction
+by Adobe Acrobat DC (purchased or updated after December 2020). Authored the document
+acrobat-in-workflow.pdf to explain the procedure to configure Acrobat DC. Creating
+an altnernative name of aeb-pro, to conform to CTAN naming.
+
What's New (2019/03/21) This new version requires aeb-comment
(version 3.2 of the comment package). Changed the order of
loading of the insdljs package.
diff --git a/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.pdf b/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.pdf
new file mode 100644
index 00000000..9821c498
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.tex b/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.tex
new file mode 100644
index 00000000..bd12bdd6
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/acrobat-in-workflow.tex
@@ -0,0 +1,232 @@
+\RequirePackage[!use=preview,!use=efpmca,!use=usebw,!use=finalbuild]{spdef}
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+\usepackage[web,useacrobat]{aeb_pro}
+\usepackage{eforms}
+\usepackage{graphicx}
+\usepackage{fancyvrb}
+
+\ifpdf\else
+\def\x{%
+ \usepackage[altbullet]{lucidbry}
+ \usepackage[active]{srcltx}
+}\expandafter\x
+\fi
+
+\usepackage{pifont}
+
+%\usepackage{fancyvrb}
+
+\reversemarginpar
+
+\let\uif\textsf
+\let\env\texttt
+\def\cs#1{\texttt{\eqbs#1}}
+\let\tops\texorpdfstring
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}
+ {\normalfont\normalsize\bfseries}}
+\renewcommand{\subparagraph}
+ {\@startsection{subparagraph}{5}{\parindent}{6pt}{-3pt}%
+ {\normalfont\normalsize\bfseries}}
+\def\parboxValign{t}
+\newcommand{\FmtMP}[2][0pt]{\mbox{}\marginpar{%
+ \raisebox{.5\baselineskip+#1}{%
+ \expandafter\parbox\expandafter[\parboxValign]%
+ {\marginparwidth}{\aebbkFmtMp#2}}}}
+\def\aebbkFmtMp{\kern0pt\itshape\small
+ \ifusebw\color{gray}\else\color{blue}\fi
+ \raggedleft\hspace{0pt}}
+\newcommand{\BlogArticle}{%
+ \makebox[0pt][l]{\hspace{-1pt}\color{blue}\Pisymbol{webd}{254}%
+ }\raisebox{.5pt}{\ifusebw\color{black}\else
+ \color{red}\fi\ding{045}}}
+\def\dps{$\mbox{$\mathfrak D$\kern-.3em\mbox{$\mathfrak P$}%
+ \kern-.6em \hbox{$\mathcal S$}}$}
+
+\makeatother
+
+\setlength{\mathindent}{\the\parindent}
+
+\def\AEBP{\app{AeB Pro}}
+\def\AEB{\app{AeB}}
+\let\app\textsf
+\let\pkg\textsf
+\def\amtIndent{\parindent}
+\def\meta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\SC#1{{\small#1}}
+\def\PDF{\SC{PDF}}
+\let\opt\texttt
+
+%\reversemarginpar
+\def\jsSupInstr{\tops{{\AEB} and {\AEBP}\\[1ex]}{AeB and AeB Pro: }Including
+ \tops{\app}{}{Acrobat} in the \tops{\LaTeX}{LaTeX} workflow}
+\title{\jsSupInstr}
+\author{D. P. Story}
+\version{1.0}
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="Acrobat workflow";
+var manualfilename="Manual_BG_Print_acrobat.pdf";
+var manualtemplate="Manual_BG_Brown.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=false;
+if ( buildIt ) {
+ console.println("Creating new " + manualfilename + " file.");
+ doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+ var _path=this.path;
+ var pos=_path.lastIndexOf("/");
+ _path=_path.substring(0,pos)+"/"+manualfilename;
+ \docSaveAs\newDO ({ cPath: _path });
+ doc.closeDoc();
+ doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+ f=doc.getField("ManualTitle");
+ f.value=titleOfManual;
+ doc.flattenPages();
+ \docSaveAs\newDO({ cPath: manualfilename });
+ doc.closeDoc();
+} else {
+ console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+ bOnTop:false,
+ bOnPrint:false,
+ cDIPath:_path
+});
+\executeSave();
+\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+\app{Adobe Acrobat} (\app{AA}) is a desktop application that has many
+powerful features beyond the functionality of a PDF viewer. In this article
+the focus is a {\LaTeX} workflow that includes \app{AA} in its workflow.
+
+{\AEB} and {\AEBP}, as well as other packages written under the {\AEB}
+banner, use FDF files in various situations (as described in
+Section~4).\footnote{An FDF file is a file type that was created by
+\app{Adobe}. The \app{Acrobat} and \app{Adobe Reader} applications can use
+FDF files in various ways.} These packages use \app{Acrobat} to import the
+FDF files to perform designated JavaScript actions as required by the package
+or document author. The importing of FDF files is only needed during the PDF
+creation stage of document development; once the PDF file is created, the
+document can be viewed by \app{Adobe Reader} or any other PDF viewer.
+
+For FDF files to be imported, the \app{Acrobat} application may need to be
+configured.
+
+\section{Configuration of \tops{\app}{}{Acrobat}}\label{s:config}
+
+The current version of \app{AA} is \app{Adobe Acrobat DC}. In this and
+previous versions of \app{AA} no special configuration is needed; however if
+you purchased \app{AA} after December 2020, or you updated your \app{AA}
+after December 2020, you need to make one change in the \uif{Preferences}.
+
+\begin{figure}[htb]\fboxsep0pt\relax\centering
+ \fbox{\includegraphics[width=.5\linewidth]{figures/SecurityPrefs}}
+ \caption{\tops{\protect\uif}{}{Security (Enhanced) Preferences}}\label{fig:SP}
+\end{figure}
+
+Start \app{Acrobat} and open the menu \uif{Edit \ifpdf\texttt{>} \else> \fi
+Preferences} (\uif{Ctrl+K}). In the \uif{Preferences} dialog box, select
+\uif{Security (Enhanced)} category from the left panel; the top most line of
+the right panel is a checkbox labeled \uif{Enable Protected Mode at startup}.
+\emph{Clear this checkbox.}{\def\parboxValign{c}\FmtMP{\app{Acrobat DC}
+users, action required!}}\footnote{When the box is checked, importing FDF
+files, as described in the next two sections, is \emph{prohibited}. We want
+FDF files imported, so we clear the checkbox.} Refer to
+\hyperref[fig:SP]{Figure~\ref*{fig:SP}} for a visual. If this checkbox is not
+present in your \app{Acrobat}, there is nothing to do until this checkbox
+appears in a future updated version of your \uif{AA} application.
+
+\section{When FDF files are imported}
+
+It is important to be aware of when and how FDF files are imported, and to
+understand the actions required of the document author in response to this
+``import FDF event.''
+
+For a document that uses FDF files to perform tasks, the files are imported
+\emph{after} PDF creation when the newly created PDF document is \emph{first
+opened} in \app{Acrobat}, and \emph{before the PDF file is moved to another
+location and before any auxiliary files (the FDF files) are deleted}. Once
+the FDF files are imported, it is important \emph{to save}\FmtMP{Save the
+PDF} the PDF file, this incorporates the results of the actions taken by the
+imported FDF files into the document, actions, such as the embedding of
+document JavaScript.
+
+Another important point to realize is that the use of FDF files is not
+restricted to the
+\app{dvips\ifpdf\texttt{->}\,\else->\,\fi\app{Distiller}\,\ifpdf\texttt{->}\,\ignorespaces
+\else->\,\fi\app{Acrobat}} method of creating a PDF; indeed, any PDF creator
+used by the {\LaTeX} community may be used, for example,
+\app{pdftex\ifpdf\texttt{->}\allowbreak\,\else->\,\fi\app{Acrobat}}. The
+only prerequisite is to use {\LaTeX} markup that initiates the ``import FDF
+event.'' This markup is available through packages that support it; this
+includes, but not restricted to, {\AEB} and {\AEBP}.
+
+\section{Applications of FDF files to a \tops{\LaTeX}{LaTeX} workflow}
+
+With regard to producing a PDF file through a {\LaTeX} workflow, there are
+two important applications to importing FDF files: importing document
+JavaScript and post-PDF creation actions. These two applications to FDF files
+are covered in the next two subsections.
+
+\subsection{Document JavaScript}
+
+In this case, FDF files are required only for the \app{dvips\,\ignorespaces
+\ifpdf\texttt{->}\,\else->\,\fi\app{Distiller}\,\ifpdf\texttt{->}\,\else->\,\ignorespaces
+\fi\app{Acrobat}} workflow; the other PDF creators (\app{pdflatex},
+\app{lualatex}, and \app{xelatex}) have primitives that facilitate the
+creation of document JavaScript without FDF files or \app{Acrobat}.
+
+For the \pkg{exerquiz} package, part of the {Acro\!\TeX} eDucation Bundle
+(\AEB), creation of Document JavaScript is automatic and invisible for all
+PDF creators; it is only in the
+\texttt{tex\,->\,dvi\,->\,\app{dvips}\,->\,\ignorespaces
+\app{Distiller}\,->\,\app{Acrobat}} workflow that FDF files are used.
+
+Document JavaScript, by the way, is code that is embedded in the PDF and is
+available to be called throughout the document. Usually, Document JavaScript
+is general code that is repeatedly used.
+
+
+\subsection{Post PDF Creation actions}
+
+The {\AEBP} Bundle has many ``post PDF creation'' actions, such as auto
+saving the document, importing sounds, attaching documents, inserting pages,
+extracting pages, and many more. With proper {\LaTeX} markup, when the
+document is compiled, FDF files are written to the hard drive, when the
+document is then first opened in \app{Acrobat}, the FDF files are imported
+and the actions are executed. Again, for the FDF files to be imported, they
+must not have already been deleted, and \app{Acrobat} must be correctly
+configured (\hyperref[s:config]{Section~\ref*{s:config}}). One very simple
+example, is automatic saving of the document when \app{Acrobat} is first
+opened. For example, an \pkg{aeb\_pro} document has a \env{docassembly}
+environment that is placed in the preamble. Within this environment, place
+any post PDF creation JavaScript actions:
+\begin{Verbatim}[xleftmargin=\parindent]
+\begin{docassembly}
+console.show();
+console.println("Saving document");
+\executeSave();
+\end{docassembly}
+\end{Verbatim}
+The \verb~\executeSave~ command is defined by \pkg{aeb\_pro} and its action
+is to save the document. It is the \env{docassembly} environment that writes
+the FDF file that contains its contents. \app{Acrobat} inputs this command on
+opening and the PDF is saved.\footnote{\cs{executeSave} must be the last post PDF
+creation action; otherwise, as later actions may not be executed.}
+
+
+\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf b/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf
index a3d56bd3..1072bd80 100644
--- a/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf
+++ b/texmf-dist/doc/latex/aeb-pro/aebpro_man.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/aebpro_man.tex b/texmf-dist/doc/latex/aeb-pro/aebpro_man.tex
index 6c1dbd77..937318ce 100644
--- a/texmf-dist/doc/latex/aeb-pro/aebpro_man.tex
+++ b/texmf-dist/doc/latex/aeb-pro/aebpro_man.tex
@@ -36,7 +36,7 @@
email={dpstory@acrotex.net},
subject={Documentation for {\AEBP} from AcroTeX},
talksite={\url{www.acrotex.net}},
- version={2.9.5, 2019/03/21},
+ version={2.10, 2021/02/07},
Keywords={XMP, E4X, Adobe Acrobat, JavaScript},
copyrightStatus=True,
copyrightNotice={Copyright (C) \the\year, D. P. Story},
@@ -85,6 +85,7 @@
\newcommand\refctan[1]{\href{http://ctan.org/pkg/#1}{ctan.org/pkg/#1}}
\newlength{\aebdimen}
\def\anglemeta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\let\ameta\anglemeta
\def\meta#1{\textit{\texttt{#1}}}
\let\pkg\textsf
\let\env\texttt
@@ -101,7 +102,9 @@
\def\AcroTeX{Acro\!\TeX}
\def\HTML{HTML}\def\FDF{FDF}
\def\PDF{PDF}\def\URL{URL}
-\edef\amtIndent{\the\parindent} %\leftmargini
+%\let\amtIndent\leftmargini
+\edef\amtIndent{\the\parindent}
+\def\PDFM{\textsf{\textbf{pdfmark}}}
\def\bNH{\begin{NoHyper}}\def\eNH{\end{NoHyper}}
\def\nhnameref#1{\bNH\nameref{#1}\eNH}
\def\nhNameref#1{\bNH\Nameref{#1}\eNH}
@@ -111,8 +114,7 @@
\def\parboxValign{t}
\renewcommand*{\backrefalt}[4]{%
\ifcase #1\or
- See page~#2.\else See pages~#2.\fi
-}
+ See page~#2.\else See pages~#2.\fi}
\newenvironment{aebQuote}
{\list{}{\leftmargin\amtIndent}%
\item\relax}{\endlist}
@@ -121,19 +123,20 @@
\expandafter\parbox\expandafter[\parboxValign]%
{\marginparwidth}{\aebbkFmtMp#2}}}}
\def\aebbkFmtMp{\hfill\kern0pt\itshape\small
- \color{blue}\raggedright\hspace{0pt}}
+ \color{blue}\raggedleft\hspace{0pt}}
\newcommand{\BlogArticle}{\makebox[0pt][l]{\hspace{-1pt}\color{blue}\Pisymbol{webd}{254}%
}\raisebox{.5pt}{\color{red}\ding{045}}}
\def\dps{$\mbox{$\mathfrak D$\kern-.3em\mbox{$\mathfrak P$}%
\kern-.6em \hbox{$\mathcal S$}}$}
\def\FitItIn{\eq@fititin}
-\def\endredpoint{\FitItIn{{\large\ifusebw\color{black}\else\color{red}\fi$\blacktriangleleft$}}}
+\def\endredpoint{\FitItIn{{\large
+ \ifusebw\color{black}\else
+ \color{red}\fi$\blacktriangleleft$}}}
\reversemarginpar
\def\addWatermarkFromFile#1#2{%
-aebTrustedFunctions#1\theDocObject, aebAddWatermarkFromFile, #2}
-
+aebTrustedFunctions#1\theDocObject,aebAddWatermarkFromFile,#2}
%\definePath\bgPath{"C:/Users/Public/Documents/%
% ManualBGs/Manual_BG_Print_AeB.pdf"}
@@ -204,7 +207,7 @@ on this documentation. \verb!:-{)!
\begin{flushright}
Dr. D. P. Story\\[3pt]
-\today
+January 20, 2016
\end{flushright}
@@ -212,23 +215,23 @@ Dr. D. P. Story\\[3pt]
\AEBP, package file base name \texttt{aeb\_pro}
(\href{http://ctan.org/pkg/aeb-pro}{ctan.org/pkg/aeb-pro}), is an assortment
-of features (see Section~\ref*{features} below) implemented through a
-combination of \textbf{pdfmark} operators~\cite{tech:pdfmark}, which are
-native to a PostScript file, and JavaScript techniques, some of which require
-\textsf{Acrobat Professional}. These features were meant to be used with
-{\AEB} (\AcroEB); in particular, the \texttt{insdljs} and \texttt{eforms}
-packages are essential to {\AEBP}. To have access to all the features of
-{\AEBP}, the document author must have \textsf{Acrobat Pro}~7.0 or later and
-use \textsf{dvips/\penalty0 Distiller} workflow to create the {\PDF}. For the
-most part, once the document is assembled, it can be viewed by \app{Adobe
-Reader}~7.0 or later.
+of features (see \hyperref[features]{Section~\ref*{features}} below)
+implemented through a combination of {\PDFM} operators~\cite{tech:pdfmark},
+which are native to a Postscript file, and JavaScript techniques, some of
+which require \textsf{Acrobat Professional}. These features were meant to be
+used with {\AEB} (\AcroEB); in particular, the \texttt{insdljs} and
+\texttt{eforms} packages are essential to {\AEBP}. To have access to all the
+features of {\AEBP}, the document author must have \textsf{Acrobat Pro}~7.0
+or later and use \textsf{dvips/\penalty0Distiller} workflow to create the
+{\PDF}. For the most part, once the document is assembled, it can be viewed
+by \app{Adobe Reader}~7.0 or later.
Despite the declaration in the \textbf{Forward} to the
-contrary\marginpar{\small\raggedleft v2.1 notes}, this manual will be updated
+contrary, this manual will be updated
for Version~2.1 of {\AEBP} to reflect the creation of a significant new
feature, the \opt{useacrobat} option. For a document author who prefers
\app{pdflatex} (including \app{lualatex}) or
-\app{xelatex}\marginpar{\small\raggedleft non-\app{Distiller} workflow}, this
+\app{xelatex}\FmtMP{non-\app{Distiller} workflow}, this
option opens the features of {\AEBP} provided the document author has the
full \app{Acrobat} application and has set it up as the primary {\PDF} viewer
on his/\penalty0 her computer system. Continue reading about the
@@ -480,7 +483,7 @@ The next three packages are less important, some are ``novelty'' packages.
number of rows and columns.
\end{description}
These, as well as the {\AEBP} distribution itself, are available through CTAN
-or the {\AEBP} family website:
+or the {\AEBP} family web site:
\begin{equation*}
\text{\url{www.math.uakron.edu/~dpstory/aeb_pro.html}}
\end{equation*}
@@ -488,6 +491,12 @@ or the {\AEBP} family website:
\subsection{Package Options}
+The general syntax for \pkg{aeb\_pro} is,
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
+\usepackage[!ameta(options)]{aeb_pro}
+!strut!textsf(or)
+\usepackage[!ameta(options)]{aeb-pro}
+\end{Verbatim}
Below is a list of all options of the {\cAEBP} package:
\begin{description}
\item [\texttt{driver=\anglemeta{driver}}\enspace] The permissible values
@@ -501,7 +510,7 @@ Below is a list of all options of the {\cAEBP} package:
own the \app{Acrobat} application, use the \opt{useacrobat} option to
open all features of this package except for any features associated
with the \app{uselayers} option. The creation of layers is still only
- supported through the \textbf{pdfmark} operator.
+ supported through the {\PDFM} operator.
As you go through the examples provided by this package, all sample
files work except for the ones using the \opt{uselayers} or
@@ -699,6 +708,14 @@ installation of the JavaScript files by navigating to the \texttt{examples}
subfolder and opening the file \texttt{test\_install.pdf} in \app{Acrobat};
follow the directions contained on that one page document.
+\paragraph*{\app{Adobe Acrobat DC} authors.} If you have \app{Acrobat DC} that was purchased or updated after December 2020,
+\app{Acrobat} needs to be configured\FmtMP{Configure \app{Acrobat DC}} to
+function correctly. For detailed discussion, refer to the document
+\texttt{\href{acrobat-in-workflow.pdf}{acrobat-in-workflow.pdf}} found in the
+\texttt{doc} folder of this distribution.
+
+
+
\begin{comment}
The JavaScript methods used by the \texttt{docassemble} environment, see
@@ -815,33 +832,33 @@ for links to this resource.
option}\label{useacrobatOpt}
For document authors who have the full \app{Acrobat} application but prefer a
-non-\app{Distiller} workflow, use the \opt{useacrobat} option to declare to {\AEBP}
-that you have \app{Acrobat}. Traditionally, if neither \app{pdflatex}
+non-\app{Distiller} workflow, use the \opt{useacrobat} option to declare to
+{\AEBP} that you have \app{Acrobat}. Traditionally, if neither \app{pdflatex}
(including \app{lualatex}) nor \app{xelatex} are used, a \app{dvips/\penalty0
Distiller} workflow is assumed. Declaring the \opt{useacrobat} option opens
up all features except for those that depend on the use of layers (also
called {\EXT{OCG}s); in particular, the options \opt{uselayers} and
\opt{ocganime} are disallowed}. All features, therefore, described in this
-manual are available to \app{pdflatex} and \app{xelatex} document authors who
-have \app{Acrobat}, \emph{except for those features} described in
-Section~\ref{layers} and Section~\ref{ss:ocganime}.
+manual are available to \app{pdflatex}, \app{lualatex}, and \app{xelatex}
+document authors who have \app{Acrobat}, \emph{except for those features}
+described in \hyperref[layers]{Section~\ref*{layers}} and \hyperref[ss:ocganime]{Section~\ref*{ss:ocganime}}.
\paragraph*{Syntax.} The syntax for this option is simple:
\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
\usepackage[!textbf(useacrobat),
- !meta(options)
+!quad!ameta(options)
]{aeb_pro}
\end{Verbatim}
-where \meta{options} \emph{does not include} the
+where \ameta{options} \emph{does not include} the
\opt{uselayers} and \opt{ocganime} options.
\newtopic
-Regarding \app{{\AEB} Control Central} (Section~\ref*{AeBCC}), when you
+Regarding \app{{\AEB} Control Central} (\hyperref[AeBCC]{Section~\ref*{AeBCC}}), when you
specify \opt{useacrobat},\footnote{This implies you are not using
\opt{Distiller} as the {\PDF} creator.} the packages \pkg{graphicxsp} and \pkg{rmannot} of
-display~\eqref{display:ACCopts} are not allowed to be specified in the option
-list of \pkg{aeb\_pro}. These two packages use the \textbf{pdfmark} operator
-to implement their features; a \app{dvips/\penalty0 Distiller} workflow is
+\hyperref[display:ACCopts]{display~\bNH\eqref{display:ACCopts}\eNH} are not allowed to be specified in the option
+list of \pkg{aeb\_pro}. These two packages use the {\PDFM} operator
+to implement their features; a \app{dvips/\penalty0Distiller} workflow is
required in this case.
\section{The \texorpdfstring{\protect\opt{nopro}}{nopro} option}\label{s:noproOpt}
@@ -855,7 +872,7 @@ option.
in the option list:
\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
\usepackage[!textbf(nopro),
- !meta(options)
+!quad!ameta(options)
]{aeb_pro}
\end{Verbatim}
Specifying this option excludes the use of layers (the options
@@ -1085,7 +1102,7 @@ includes examples of the use of the \texttt{willClose},
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willClose}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{willClose}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{willClose}
\end{dCmd}
\EnvDescription The JS code in the body of the \texttt{willClose}
@@ -1096,7 +1113,7 @@ environment will execute just before the document closes.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willSave}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{willSave}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{willSave}
\end{dCmd}
\EnvDescription The JS code in the body of the \texttt{willSave}
@@ -1107,7 +1124,7 @@ environment will execute just before the document is saved.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{didSave}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{didSave}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{didSave}
\end{dCmd}
\EnvDescription The JS code in the body of the \texttt{didSave}
@@ -1118,7 +1135,7 @@ environment will execute just after the document is saved.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{willPrint}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{willPrint}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{willPrint}
\end{dCmd}
\EnvDescription The JS code in the body of the \texttt{willPrint}
@@ -1129,7 +1146,7 @@ environment will execute just before the document is Printed.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{didPrint}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{didPrint}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{didPrint}
\end{dCmd}
\EnvDescription The JS code in the body of the \texttt{didPrint}
@@ -1152,9 +1169,10 @@ behave as desired, while the document author can use the above environments to a
additional scripts.
The correct way of using these commands is
+
\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
\begin{defineJS}{\my@WillClose}
-!quad!anglemeta(some willClose script)
+ !anglemeta(some willClose script)
\end{defineJS}
\let\my@save@developer@will@Close\developer@will@Close
\def\developer@will@Close{%
@@ -1181,10 +1199,10 @@ independently of the page the document is opened at.
The following example gets the time the user first opens the document,
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily\small var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());\}\}}%
+\settowidth{\aebdimen}{\ttfamily\small\quad{var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());\}\}}}%
\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
\additionalOpenAction{\JS{%
- var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());}}
+!quad@var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());}}~
\end{dCmd*}
\egroup
\noindent\textcolor{red}{\textbf{Important:}} This open action takes place rather
@@ -1258,11 +1276,11 @@ to combine several actions, including an action for checking for the version num
\cs{afterRe\-quire\-ment\-PassedJS}. For example,
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily\small var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());\}\}}%
+\settowidth{\aebdimen}{\ttfamily\small\quad{var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());}}%
\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
\afterRequirementPassedJS
{%
- var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());
+!quad@var timestamp = util.printd("mm-dd-yy, H:MM:ss.", new Date());~
}
\end{dCmd*}
\egroup\noindent The above code will be executed if the version requirement is passed.
@@ -1310,38 +1328,39 @@ action, see the documentation of \texttt{insdljs} for some details.
\settowidth{\aebdimen}{\ttfamily\small console.println("Show the output of the page actions");}%
\begin{dCmd*}[fontsize=\small,commandchars=!@~]{\aebdimen+2\fboxsep+2\fboxrule}
\OpenAction{\JS{%
- console.show();\r
- console.clear();\r
- console.println("Show the output of the page actions");
+!quad@console.show();\r~
+!quad@console.clear();\r~
+!quad@console.println("Show the output of the page actions");~
}}
\end{dCmd*}
\egroup
-
+\noindent
In addition to \cs{OpenAction}, \texttt{addJSToPageOpen} and
\texttt{addJSToPageClose} are also defined by {\cAEBP}. The
-\meta{script} is executed each time the page is opened or
+\ameta{script} is executed each time the page is opened or
closed.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpen}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageOpen}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageOpen}
\end{dCmd}
-
+\noindent
For page close events, we have the \texttt{addJSToPageClose}
environment.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageClose}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageClose}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageClose}
\end{dCmd}
\EnvDescription When placed in the preamble, these provide
JavaScript support for page open/close events of the first page.
+\newtopic
Below are examples of usage. These appear in the document
\texttt{aebpro\_ex1}.
\bgroup\obeyspaces%
@@ -1377,14 +1396,14 @@ on.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpen}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageOpen}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageOpen}
\end{dCmd}
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageClose}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageClose}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageClose}
\end{dCmd}
@@ -1401,7 +1420,7 @@ open/close effects you want.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageOpenAt}\darg{\meta{page-ranges}}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageOpenAt}{!meta(page-ranges)}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageOpenAt}
\end{dCmd}
@@ -1411,7 +1430,7 @@ environment.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{addJSToPageCloseAt}\darg{\meta{page-ranges}}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{addJSToPageCloseAt}{!meta(page-ranges)}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{addJSToPageCloseAt}
\end{dCmd}
@@ -1489,7 +1508,7 @@ To cancel out the every page action you can use
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{everyPageOpen}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{everyPageOpen}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{everyPageOpen}
\end{dCmd}
@@ -1498,7 +1517,7 @@ For page close events, we have the \texttt{everyPageClose} environment.
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{everyPageClose}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{everyPageClose}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{everyPageClose}
\end{dCmd}
@@ -1565,7 +1584,7 @@ object.
\end{dCmd}
The command for setting how you want to viewer to behave in fullscreen.
This command is implemented through JavaScript, as opposed to the
-\textbf{pdfmark} operator. See \emph{JavaScript for Acrobat API Reference}
+{\PDFM} operator. See \emph{JavaScript for Acrobat API Reference}
\cite{tech:AcroJSRef}, the section on the \texttt{FullScreen} object.
\CmdLoc This command must be executed in the preamble.
@@ -1686,7 +1705,7 @@ effects of individual pages, use the \cs{setPageTransition} command.
\end{dCmd}
Sets the transition effect for the \emph{next page only}, viewer must be
in full screen mode. The command \cs{setPageTransition} is implemented
-using the \textbf{pdfmark} operator.
+using the {\PDFM} operator.
\CmdLoc This command should be used in the preamble for the first page,
and between slides for subsequent pages.
@@ -1887,9 +1906,9 @@ you to develop a list of attachments that are attached if the
\texttt{!optattachments} option is taken. {\AEBP} defines
\cs{ifoptattachments}, a Boolean switch, which is set to true by
\texttt{optattachments} and to false by \texttt{!optattachments}.
-\settowidth{\aebdimen}{\ttfamily\string\addtoOptAttachments\darg{\meta{list\_of\_files}}}%
+\settowidth{\aebdimen}{\ttfamily\string\addtoOptAttachments\darg{\meta{list-of-files}}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
-\addtoOptAttachments{!meta(list_of_files)}
+\addtoOptAttachments{!meta(list-of-files)}
\end{dCmd}
This command can be used anywhere in the document and adds the listed
files to the ones to be attached. The list is comma delimited.
@@ -1917,12 +1936,12 @@ of optional attachments, then passes the argument to the two user commands
Above you see the default definitions of these user commands. They may be
redefined as desired to achieve some special effect.
-\bgroup\obeyspaces%
+\bgroup\def\1{\quad}\obeyspaces%
\settowidth{\aebdimen}{\ttfamily \string\marginpar\darg{\string\fbox\darg{\string\footnotesize\string\ttfamily\#1}}}%
\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\renewcommand{\prjInputUser}[1]{%
- \marginpar{\fbox{\footnotesize\ttfamily#1}}
- \input{#1}}
+!1\marginpar{\fbox{\footnotesize\ttfamily#1}}
+!1\input{#1}}
\end{dCmd*}
\egroup
It is possible to define \cs{prjInputUser} to be a link or button that
@@ -1934,15 +1953,15 @@ two commands \cs{prjinput} and \cs{prjinclude} are \cs{prjInputUser} and
to the list of optional attachments. The switch \cs{ifoptattachments} can be
used, as needed, in a custom definition of \cs{prjInputUser} or
\cs{prjIncludeUser}; for example,
-\bgroup\obeyspaces%
+\bgroup\def\1{\quad}\def\2{\qquad}\obeyspaces%
\settowidth{\aebdimen}{ \ttfamily\string\marginpar%
\darg{\string\fbox\darg{\string\footnotesize\string\ttfamily\string\ifoptattachments}}}%
-\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\begin{dCmd*}[commandchars={!~@}]{\aebdimen+2\fboxsep+2\fboxrule}
\renewcommand{\prjInputUser}[1]{%
- \marginpar{\fbox{\footnotesize\ttfamily\ifoptattachments
- \setLink[\A{\JS{this.exportDataObject({%
- cName: "\getcNameFromFileName{#1}",nLaunch: 0});}}
- ]{\textcolor{\ahrefcolor}{#1}}\else#1\fi}}\input{#1}}
+!1\marginpar{\fbox{\footnotesize\ttfamily\ifoptattachments
+!1\setLink[\A{\JS{this.exportDataObject({%
+!1!1cName: "\getcNameFromFileName{#1}",nLaunch: 0});}}
+!1]{\textcolor{\ahrefcolor}{#1}}\else#1\fi}}\input{#1}}
\end{dCmd*}
\egroup This code creates a link that saves the attachment, if
\texttt{optattachments} is taken, and simply puts the file name the margin,
@@ -1966,7 +1985,7 @@ environment).
\settowidth{\aebdimen}{\ttfamily\string\begin\darg{docassembly}}%
\begin{dCmd}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{docassembly}
- !anglemeta(script)
+!quad!anglemeta(script)
\end{docassembly}
\end{dCmd}
\noindent
@@ -2170,12 +2189,12 @@ on these methods and their parameters.
background graphic on every page the document. This is the kind of code
that is executed for this document.
\bgroup\small\obeyspaces%
-\settowidth{\aebdimen}{\small\ttfamily cDIPath: "/C/AcroPackages/ManualBGs/Manual\_BG\_DesignV\_AeB.pdf"}%
-\begin{dCmd*}[fontsize=\small]{\aebdimen+2\fboxsep+2\fboxrule}
+\settowidth{\aebdimen}{\small\ttfamily\quad{cDIPath: "/C/AcroPackages/ManualBGs/Manual\_BG\_DesignV\_AeB.pdf"}}%
+\begin{dCmd*}[fontsize=\small,commandchars={!~@}]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{docassembly}
\addWatermarkFromFile({
- bOnTop:false,
- cDIPath: "/C/AcroPackages/ManualBGs/Manual_BG_DesignV_AeB.pdf"
+!quad~bOnTop:false,@
+!quad~cDIPath: "/C/AcroPackages/ManualBGs/Manual_BG_DesignV_AeB.pdf"@
});
\end{docassembly}
\end{dCmd*}
@@ -2332,11 +2351,11 @@ Multiple images can be imported and set by simply executing
arguments, or, by executing \cs{declare\-Multi\-Images}.
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily \darg{\meta{KV-pairs\_1}}\darg{\meta{KV-pairs\_2}}\darg{\meta{KV-pairs\_3}}...\darg{\meta{KV-pairs\_n}}}%
+\settowidth{\aebdimen}{\ttfamily\quad\darg{\meta{KV-pairs\_1}}\darg{\meta{KV-pairs\_2}}\darg{\meta{KV-pairs\_3}}...\darg{\meta{KV-pairs\_n}}}%
\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
\declareMultiImages
{
- {!meta(KV-pairs_1)}{!meta(KV-pairs_2)}{!meta(KV-pairs_3)}...{!meta(KV-pairs_n)}
+!quad{!meta(KV-pairs_1)}{!meta(KV-pairs_2)}{!meta(KV-pairs_3)}...{!meta(KV-pairs_n)}
}
\end{dCmd}
\egroup\CmdDescription This command calls the \cs{declareImageAndPlacement}
@@ -2348,13 +2367,13 @@ command \cs{declareMultiImages} loops through the list, calling
example follows.
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily \darg{path=graphics/girl.png,placement=\darg{Avatar3,Avatar4}}}%
-\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\settowidth{\aebdimen}{\ttfamily\quad\darg{path=graphics/girl.png,placement=\darg{Avatar3,Avatar4}}}%
+\begin{dCmd*}[commandchars=!()]{\aebdimen+2\fboxsep+2\fboxrule}
\declareMultiImages
{%
- {path=graphics/girl.png,placement={Avatar3,Avatar4}}
- {path=graphics/AcroFord.jpg,placement=AcroFord}
- {path=graphics/scot.gif,placement=Scot}
+!quad{path=graphics/girl.png,placement={Avatar3,Avatar4}}
+!quad{path=graphics/AcroFord.jpg,placement=AcroFord}
+!quad{path=graphics/scot.gif,placement=Scot}
}
\end{dCmd*}
\egroup
@@ -2427,13 +2446,13 @@ optional parameter allows you to specify what appearance state the icon is to be
The optional parameter is shown in the example below.
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily \darg{path=graphics/girl.png,placement=\darg{[2]Avatar1,[0]Avatar2}}}%
-\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
+\settowidth{\aebdimen}{\ttfamily\quad\darg{path=graphics/girl.png,placement=\darg{[2]Avatar1,[0]Avatar2}}}%
+\begin{dCmd*}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
\declareMultiImages
{%
- {path=graphics/man1.pdf,placement={Avatar1,[2]Avatar2}}
- {path=graphics/scot.gif,placement={[1]Avatar1,[1]Avatar2}}
- {path=graphics/girl.png,placement={[2]Avatar1,[0]Avatar2}}
+!quad{path=graphics/man1.pdf,placement={Avatar1,[2]Avatar2}}
+!quad{path=graphics/scot.gif,placement={[1]Avatar1,[1]Avatar2}}
+!quad{path=graphics/girl.png,placement={[2]Avatar1,[0]Avatar2}}
}
\end{dCmd*}
\egroup The optional argument precedes the field name and determines the
@@ -2528,6 +2547,7 @@ button appearances of the buttons used to control the button animation.
names of the anima created by \cs{btnAnima} that will be using these
appearance icons.
\end{description}
+
\textbf{Example:}
\settowidth{\aebdimen}{\ttfamily\string\placeAnimeCtrlBtnFaces\darg{btn\_anime\_icons1.pdf}\darg{myclock,mysine}}%
\begin{dCmd*}{\aebdimen+2\fboxsep+2\fboxrule}
@@ -2686,7 +2706,7 @@ in the \texttt{attachment\-Names} environment in the preamble.
\settowidth{\aebdimen}{\ttfamily \anglemeta{\string\autolabelNum{} and \string\labelName{} commands}}%
\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{attachmentNames}
- !anglemeta(\autolabelNum and \labelName commands)
+!quad!anglemeta(\autolabelNum and \labelName commands)
\end{attachmentNames}
\end{dCmd}
\egroup
@@ -2777,7 +2797,7 @@ left and right braces, and double quotes, or using unicode above
00FF (Basic Latin + Latin-1). To illustrate, suppose we wish the
description of \texttt{cooltarget} to be
\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
-"$|e^{\ln(17)}|$"
+ "$|e^{\ln(17)}|$"
\end{Verbatim}
All the bad characters!
\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small]
@@ -2934,9 +2954,9 @@ with \texorpdfstring{\protect\cs{ahyperref}}{\textbackslash ahyperref}}
the \cs{label} command we use the \textsf{xr-hyper} package that
comes with \texttt{hyperref}; the code might be
-\begin{Verbatim}[xleftmargin=\amtIndent]
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars=!()]
\ahyperref[dest=target1-s:intro]{attach1}
- {Section~\ref*{target1-s:intro}}
+!quad{Section~\ref*{target1-s:intro}}
\end{Verbatim}
we set \verb!dest=target1-s:intro!.
@@ -3230,7 +3250,7 @@ layer. This could be a button or a link that executes JavaScript.
\darg{\meta{layer\_name}}}%
\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
\xBld[true|false|print=!anglemeta(!upshape(true|false))]{!meta(layer_name)}
- !anglemeta(content of layer)
+!quad!anglemeta(content of layer)
\eBld
\end{dCmd}
@@ -3301,8 +3321,9 @@ provides help to the document consumer.
\exPDFSrc{aebpro_ex4} These topics are illustrated in the support
file \texttt{aebpro\_ex4}.
-\exAeBBlogPDF{tag=rollovers} Additional examples of \emph{rollover animation} using \cs{texHelp} can be found
-at the \mlhref{\urlAcroTeXBlog}{{\AcroTeX} Blog} web site.
+\exAeBBlogPDF{tag=rollovers} Additional examples of \emph{rollover animation}
+using \cs{texHelp} can be found at the \mlhref{\urlAcroTeXBlog}{{\AcroTeX}
+Blog} web site.
%See also \url{http://www.acrotex.net/blog/?p=1359}
@@ -3584,10 +3605,10 @@ is titled \textsl{\texttt{ocgAnime}: Animation using OCG (Layers) with \AEBP} ca
environment.
\bgroup\obeyspaces%
-\settowidth{\aebdimen}{\ttfamily \anglemeta{a set of ocg frames built using \string\animeBld/\string\eBld pairs}}%
+\settowidth{\aebdimen}{\ttfamily\quad\anglemeta{a set of ocg frames built using \string\animeBld/\string\eBld pairs}}%
\begin{dCmd}[commandchars={!()}]{\aebdimen+2\fboxsep+2\fboxrule}
\begin{ocgAnime}{!meta(KV-pairs)}
- !anglemeta(a set of ocg frames built using \animeBld/\eBld pairs)
+!quad!anglemeta(a set of ocg frames built using \animeBld/\eBld pairs)
\end{ocgAnime}
\end{dCmd}
\egroup\KVP The key-value pairs are the same ones described in
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf
deleted file mode 100644
index 4af04e42..00000000
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.pdf
+++ /dev/null
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
index 52404840..4123342c 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
@@ -2,13 +2,13 @@
% use nopro if you don't have acrobat
\documentclass{article}
\usepackage[%
- web={
- pro,
- designv,
- tight,
- centertitlepage,
- },
- aebxmp,
+ web={
+ pro,
+ designv,
+ tight,
+ centertitlepage,
+ },
+ aebxmp
]{aeb_pro}
@@ -222,12 +222,12 @@ Will the effects defined by these environments appear on this page or the next?
% of the same environment.
%
\begin{addJSToPageOpen}
-var str = "Local open action"
+var str = "Local open action";
console.println(str + ": page " + (this.pageNum+1));
\end{addJSToPageOpen}
\begin{addJSToPageClose}
-var str = "Local Close action!"
+var str = "Local Close action!";
console.println(str + ": page " + (this.pageNum+1));
\end{addJSToPageClose}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf
index e9b48043..0a5daae5 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex
index c20a15e0..26722e77 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex3.tex
@@ -2,6 +2,8 @@
% use useacrobat option with pdftex and xetex if you have acrobat
\documentclass{article}
\usepackage{graphicx,fancyvrb}
+% Edit this command as needed
+\def\pthToExtras{../extras}
\usepackage[%
web={
pro,
@@ -13,7 +15,7 @@
},
eforms,
%
-% Attach source file, and the tex log (I've renamed \jobname.log
+% Attach source file, and the tex log (renamed \jobname.log
% to \jobname.tex.log to avoid the distiller from overwriting it.
% The distiller only creates the log if there some sort of error message; consequently,
% the log for distiller is not attached (no error), but the tex log is destroyed by distiller
@@ -21,7 +23,7 @@
%
% Just for laughs, let's include Robot Man.
%
- attachments={extras.zip.txt, ../extras/robot_man.pdf},
+ attachments={extras.zip.txt, \pthToExtras/robot_man.pdf},
aebxmp,
]{aeb_pro}
@@ -42,15 +44,13 @@
}
\DeclareInitView{layoutmag={navitab=UseAttachments},windowoptions=fit}
+\newbox\aebpbox
\newcommand{\cs}[1]{\texttt{\char`\\#1}}
\newcommand\newtopic{\par\ifdim\lastskip>0pt\relax\vskip-\lastskip\fi
\vskip\medskipamount\noindent}
-\newenvironment{sverbatim}
-{\par\footnotesize\verbatim}{\endverbatim}
%
% As you do not have the necessary background files, the \addWatermarkFromFile
% will silently fail.
-%
\begin{forpaper}
\begin{docassembly}
var pos=this.path.indexOf(this.documentFileName,"/");
@@ -58,15 +58,15 @@ var myPath=this.path.substring(0,pos);
try {
\addWatermarkFromFile({
bOnTop:false,
- cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf"
+ cDIPath:myPath+"\pthToExtras/Manual_BG_Print_AeB.pdf"
}); } catch(e) { console.println(e.toString()) };
try {
- \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+ \importSound({cName: "StarTrek", cDIPath: "\pthToExtras/trek.wav" });
} catch(e) { console.println(e.toString()) };
try {
- \importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
- \importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
- \importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+ \importIcon({cName: "logo", cDIPath: "\pthToExtras/AeB_Logo.pdf"});
+ \importIcon({cName: "logopush", cDIPath: "\pthToExtras/AeB_Logo_bw15.pdf"});
+ \importIcon({cName: "logorollover", cDIPath: "\pthToExtras/AeB_Logo_bw50.pdf"});
var f = this.getField("cheesySound");
f.buttonPosition = position.iconOnly;
var oIcon = this.getIcon("logo");
@@ -76,7 +76,10 @@ try {
oIcon = this.getIcon("logorollover");
f.buttonSetIcon(oIcon,2);
} catch(e) { console.println(e.toString()) };
-try {\importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});} catch(e){}
+try {
+ \importDataObject({cName: "AeBProEx2",cDIPath: "aebpro_ex2.pdf"});
+ this.getDataObject("AeBProEx2").description="AeB Pro Example #2";
+} catch(e){}
\end{docassembly}
\end{forpaper}
\begin{forscreen}
@@ -86,16 +89,16 @@ var myPath=this.path.substring(0,pos);
try {
\addWatermarkFromFile({
bOnTop:false,
- cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf"
+ cDIPath:myPath+"\pthToExtras/Manual_BG_DesignV_AeB.pdf"
});
} catch(e) { console.println(e.toString()) };
try {
- \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+ \importSound({cName: "StarTrek", cDIPath: "\pthToExtras/trek.wav" });
} catch(e) { console.println(e.toString()) };
try {
- \importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
- \importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
- \importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+ \importIcon({cName: "logo", cDIPath: "\pthToExtras/AeB_Logo.pdf"});
+ \importIcon({cName: "logopush", cDIPath: "\pthToExtras/AeB_Logo_bw15.pdf"});
+ \importIcon({cName: "logorollover", cDIPath: "\pthToExtras/AeB_Logo_bw50.pdf"});
var f = this.getField("cheesySound");
f.buttonPosition = position.iconOnly;
var oIcon = this.getIcon("logo");
@@ -105,7 +108,10 @@ try {
oIcon = this.getIcon("logorollover");
f.buttonSetIcon(oIcon,2);
} catch(e) { console.println(e.toString()) };
-try {\importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});} catch(e){}
+try {
+ \importDataObject({cName: "AeBProEx2",cDIPath: "aebpro_ex2.pdf"});
+ this.getDataObject("AeBProEx2").description="AeB Pro Example #2";
+} catch(e){}
\end{docassembly}
\end{forscreen}
@@ -175,7 +181,7 @@ relative paths to the file required to attach. For example,
\usepackage[%
driver=dvips,
web={pro,usesf,...},
- attachments={extras.zip.txt,../extras/robot_man.pdf,
+ attachments={extras.zip.txt,\pthToExtras/robot_man.pdf,
/C/Documents and Settings/dps/My Documents/My Pictures/birthday17.jpg},
...
]{aeb_pro}
@@ -244,7 +250,7 @@ var myPath=this.path.substring(0,pos);
\begin{docassembly}
\addWatermarkFromFile({
bOnTop:false,
- cDIPath:myPath+"../extras/Manual_BG_Print_AeB.pdf"
+ cDIPath:myPath+"\pthToExtras/Manual_BG_Print_AeB.pdf"
});
\end{docassembly}
\end{Verbatim}
@@ -265,12 +271,12 @@ re-inserts \verb!({! in a different location. (See the
For another cheesy demonstration, let's import a sound, associate it
with a button. I leave it to you to press the button at your
discretion.
-\begin{center}
-\setbox0=\hbox{\includegraphics[height=16bp]{extras/AeB_Logo.eps}}
+\begin{center}%\previewOn
+\setbox\aebpbox=\hbox{\includegraphics[height=16bp]{\pthToExtras/AeB_Logo.eps}}
\newtopic\pushButton[\S{S}\W{0}\A{\JS{%
var s = this.getSound("StarTrek");\r
s.play();
-}}]{cheesySound}{\the\wd0 }{\the\ht0 }
+}}]{cheesySound}{\wd\aebpbox}{\ht\aebpbox}
\end{center}
\begin{Verbatim}
@@ -278,11 +284,11 @@ discretion.
try {
\addWatermarkFromFile({
bOnTop:false,
- cDIPath:myPath+"../extras/Manual_BG_DesignV_AeB.pdf"
+ cDIPath:myPath+"\pthToExtras/Manual_BG_DesignV_AeB.pdf"
});
} catch(e) { console.println(e.toString()) };
try {
- \importSound({cName: "StarTrek", cDIPath: "../extras/trek.wav" });
+ \importSound({cName: "StarTrek", cDIPath: "\pthToExtras/trek.wav" });
} catch(e) { console.println(e.toString()) };
\end{docassembly}
\end{Verbatim}
@@ -303,9 +309,9 @@ code, with some comments added.
...
...
// Import the sounds into the document
-\importIcon({cName: "logo", cDIPath: "../extras/AeB_Logo.pdf"});
-\importIcon({cName: "logopush", cDIPath: "../extras/AeB_Logo_bw15.pdf"});
-\importIcon({cName: "logorollover", cDIPath: "../extras/AeB_Logo_bw50.pdf"});
+\importIcon({cName: "logo", cDIPath: "\pthToExtras/AeB_Logo.pdf"});
+\importIcon({cName: "logopush", cDIPath: "\pthToExtras/AeB_Logo_bw15.pdf"});
+\importIcon({cName: "logorollover", cDIPath: "\pthToExtras/AeB_Logo_bw50.pdf"});
var f = this.getField("cheesySound"); // get the field object of the button
f.buttonPosition = position.iconOnly; // set it to receive icon appearances
var oIcon = this.getIcon("logo"); // get the "logo" icon
@@ -326,7 +332,8 @@ your own files using the \texttt{docassembly} environment.
...
...
try {
- \importDataObject({cName: "AeB Pro Example #2",cDIPath: "aebpro_ex2.pdf"});
+ \importDataObject({cName: "AeBProEx2",cDIPath: "aebpro_ex2.pdf"});
+ this.getDataObject("AeBProEx2").description="AeB Pro Example #2";
} catch(e){}
\end{docassembly}
\end{Verbatim}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex
index 81c83709..b0df8c3e 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex4.tex
@@ -2,18 +2,18 @@
\documentclass{article}
\usepackage{amsmath}
\usepackage[%
- web={
- pro,
- designv,
- tight,
-% forcolorpaper,
- centertitlepage,
- dvipsnames,
- usesf
- },
- uselayers,
- eforms,
- aebxmp,
+ web={
+ pro,
+ designv,
+ tight,
+% forcolorpaper,
+ centertitlepage,
+ dvipsnames,
+ usesf
+ },
+ uselayers,
+ eforms,
+ aebxmp
]{aeb_pro}
\usepackage{graphicx}
\usepackage[nomessages]{fp}
@@ -24,6 +24,8 @@
\usepackage{pstricks-add}
\usepackage[absolute,overlay]{textpos}
+\let\tops\texorpdfstring
+
\DeclareDocInfo
{
title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Layers and Rollovers,
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf
index 65ccfa04..2b1b3a0a 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex
index 66cbd350..bdcc080a 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex6.tex
@@ -14,6 +14,9 @@
linktoattachments,
eforms
]{aeb_pro}
+\usepackage{fancyvrb}
+\usepackage[active]{srcltx}
+
\DeclareDocInfo
{
@@ -126,19 +129,18 @@ accessed through the menu item \texttt{View > Portfolio > Cover Sheet}.
\newtopic\textbf{\textcolor{red}{TIP:}} Use the \cs{autolabelNum*}
command to assign a more informative description of the attachments,
like so.
-\begin{sverbatim}
- \autolabelNum*{1}{European Currency \u20AC}
- \autolabelNum*{2}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
- \autolabelNum*[AeST]{3}{The AeBST Components}
- \autolabelNum*[atease]{4}{The @EASE Control Panel}
-\end{sverbatim}
-
+\begin{Verbatim}[xleftmargin=\parindent,fontsize=\small]
+\autolabelNum*{1}{European Currency \u20AC}
+\autolabelNum*{2}{\u0022$|e^\u007B\u005Cln(17)\u007D|$\u0022}
+\autolabelNum*[AeST]{3}{The AeBST Components}
+\autolabelNum*[atease]{4}{The @EASE Control Panel}
+\end{Verbatim}
Note that there is an alternative that is commented out to the assignment of the
second attachment, it is
-\begin{sverbatim}
- \autolabelNum*
- {2}{\u\DQUOTE$|e^\u\LBRACE\u005Cln(17)\u\RBRACE|$\u\DQUOTE}
-\end{sverbatim}
+\begin{Verbatim}[xleftmargin=\parindent,fontsize=\small]
+\autolabelNum*{2}
+ {\u\DQUOTE$|e^\u\LBRACE\u005Cln(17)\u\RBRACE|$\u\DQUOTE}
+\end{Verbatim}
One can use the ``helper'' commands, as described in \texttt{aeb\_pro.tex}; however,
there is a slight problem. Within the \texttt{<description>} argument, we obey spaces, so
if we were to say \verb!\u\LBRACE\u\BSLASH ln(17)\u\RBRACE! there would be a space
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf
index 83ff4f23..54766e4d 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex
index 196eef6d..0f8941b5 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex8.tex
@@ -33,7 +33,7 @@
\defUniStr{myCoolIV}{\u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022}
\defUniStr{Reset myCoolIV}{Reset the \u0022\u20AC|e^\u007B\u005Cln(17)\u007D|$\u0022 field}
-\pdfSpacesOff
+%\pdfSpacesOff
\begin{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.pdf b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.pdf
new file mode 100644
index 00000000..e6667320
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_index_ex.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf b/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf
index 48b4888c..0734eb43 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf
+++ b/texmf-dist/doc/latex/aeb-pro/examples/test_install.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex b/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex
index 20a2216f..6f2bbf79 100644
--- a/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex
+++ b/texmf-dist/doc/latex/aeb-pro/examples/test_install.tex
@@ -24,4 +24,15 @@ haven't closed and opened \textsf{Acrobat} after you installed \texttt{aeb\_pro.
or the cover page document \texttt{myCoverPage.pdf} does not exist or has
been moved from this folder
+On failure, did you close \textsf{Acrobat} before opening this file? (The JS
+files are only read once when the \textsf{Acrobat} application is opened.)
+When all else fails, try rereading the installation instructions again
+(\texttt{install\_jsfiles.pdf}), found in the \texttt{doc} folder, but more
+carefully this time.
+
+Still failing? Do you have \textsf{Acrobat DC}? Perhaps your \textsf{Acrobat}
+needs to be configured. Try reading \texttt{acrobat-in-workflow.pdf}, found
+in the \texttt{doc} folder.
+
+
\end{document}
diff --git a/texmf-dist/doc/latex/aeb-pro/install_jsfiles.tex b/texmf-dist/doc/latex/aeb-pro/install_jsfiles.tex
new file mode 100644
index 00000000..56393183
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/install_jsfiles.tex
@@ -0,0 +1,312 @@
+\documentclass{article}
+\usepackage[fleqn]{amsmath}
+%
+% the driver line is not necessary if you
+% have aebpro.cfg configured to your driver.
+%
+\usepackage[web]{aeb_pro}
+\usepackage{eforms}
+\usepackage[altbullet]{lucidbry}
+\usepackage{pifont}
+
+\usepackage{fancyvrb}
+
+\makeatletter
+\renewcommand{\paragraph}
+ {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}
+ {\normalfont\normalsize\bfseries}}
+\renewcommand{\subparagraph}
+ {\@startsection{subparagraph}{5}{\parindent}{6pt}{-3pt}%
+ {\normalfont\normalsize\bfseries}}
+\makeatother
+
+\mathindent\parindent
+
+\def\AEBP{\app{AeB Pro}}
+\def\AEB{\app{AeB}}
+\def\app#1{\textsf{#1}}
+\def\amtIndent{\parindent}
+\def\meta#1{$\langle\textit{\texttt{#1}}\rangle$}
+\def\SC#1{{\small#1}}
+\def\PDF{\SC{PDF}}
+\let\opt\texttt
+
+\def\copyGetPath{\qquad\pushButton[\TU{Copy app.getPath to console}
+\CA{getPath}\A{\JS{console.show();\r
+console.println('\\napp.getPath("user");');
+}}]{cpyGtPth}{}{11bp}}
+
+\def\copyGetPathJS{\qquad\pushButton[\TU{Copy app.getPath to console}
+\CA{getPath}\A{\JS{console.show();\r
+console.println('\\napp.getPath("user", "javascript");');
+}}]{cpyGtPthJS}{}{11bp}}
+
+%\reversemarginpar
+\def\jsSupInstr{How to install JavaScript support files}
+\title{\jsSupInstr}
+\author{D. P. Story}
+\version{1.0}
+
+\chngDocObjectTo{\newDO}{doc}
+\begin{docassembly}
+var titleOfManual="How to install JavaScript files";
+var manualfilename="Manual_BG_Print_jsfiles.pdf";
+var manualtemplate="Manual_BG_Brown.pdf"; // Blue, Green, Brown
+var _pathToBlank="C:/Users/Public/Documents/ManualBGs/"+manualtemplate;
+var doc;
+var buildIt=true;
+if ( buildIt ) {
+ console.println("Creating new " + manualfilename + " file.");
+ doc = \appopenDoc({cPath: _pathToBlank, bHidden: true});
+ var _path=this.path;
+ var pos=_path.lastIndexOf("/");
+ _path=_path.substring(0,pos)+"/"+manualfilename;
+ \docSaveAs\newDO ({ cPath: _path });
+ doc.closeDoc();
+ doc = \appopenDoc({cPath: manualfilename, oDoc:this, bHidden: true});
+ f=doc.getField("ManualTitle");
+ f.value=titleOfManual;
+ doc.flattenPages();
+ \docSaveAs\newDO({ cPath: manualfilename });
+ doc.closeDoc();
+} else {
+ console.println("Using the current "+manualfilename+" file.");
+}
+var _path=this.path;
+var pos=_path.lastIndexOf("/");
+_path=_path.substring(0,pos)+"/"+manualfilename;
+\addWatermarkFromFile({
+ bOnTop:false,
+ bOnPrint:false,
+ cDIPath:_path
+});
+\executeSave();
+\end{docassembly}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+Because some of the \app{Acrobat} JavaScript methods have security
+restrictions, they can be only executed in the console window, or as part
+of a batch sequence, or from the JavaScript folder reserved by
+\app{Acrobat} for that use. The developer (of {\LaTeX} packages or {\PDF}
+form documents) may want to use these restricted JavaScript methods as
+part of document assembly. To use the restricted methods, they must be
+called from the user JavaScript folder. The scripts are contained in a
+\SC{JS} file that \app{Acrobat} reads when it first starts up.
+
+In this article, we provide detailed steps for locating the user
+JavaScript folder. For {\AEB} and {\AEBP}, the files \texttt{aeb.js} and
+\texttt{aeb\_pro.js} are placed in the folder. Other JavaScript files may
+be placed in the folder as well, for example, the \texttt{config.js} file
+is one that is commonly used for general purposes.
+
+Before we get started, if you are using a version of \app{Acrobat} prior
+to version~8.1, you need not read any further. The security restrictions
+described below were not in effect for those versions.
+
+\section{Installing the JavaScript support files}
+
+The functionality of {\AEB} and {\AEBP} depends, to some extent, on the
+proper installation of their JavaScript support files.
+\begin{itemize}
+ \item \AEB: For authors using the $\app{dvips}+\app{Acrobat Distiller}$
+ workflow, \texttt{aeb.js} is required; this file is not used by
+ \app{pdflatex} or \app{xelatex} users.
+
+ \item \AEBP: For authors using the $\app{dvips}+\app{Acrobat
+ Distiller}$ workflow, \texttt{aeb\_pro.js} is required; for authors
+ that prefer \app{pdflatex}, \app{lualatex}, or \app{xelatex} as the
+ {\PDF} creator \emph{and who own} the \app{Acrobat} application,
+ the \texttt{aeb\_pro.js} is required with the \opt{useacrobat}
+ option of \AEBP. When using the \opt{nopro} option of \AEBP, the
+ JavaScript file \texttt{aeb\_pro.js} is not used.
+
+\end{itemize}
+The placement of the JavaScript files has changed over the years and is a
+function of the version number \meta{ver}. Start \app{Acrobat} and open the
+console debugger window by pressing \texttt{Ctrl+J} (for \app{Windows OS})
+or \texttt{Cmd+J} (for \app{Mac OS}). Now execute the code
+\texttt{app.getPath("user")} in the console window. To do this, press the
+\textsf{getPath} button provided below, which copies the necessary code to
+the console window.
+\begin{equation}
+\begin{minipage}{.8\linewidth}
+\begin{Verbatim}[commandchars={!~@}]
+app.getPath("user");!copyGetPath
+\end{Verbatim}
+\end{minipage}\label{display:getPath}
+\end{equation}
+Now, with the cursor on the line containing the script, press the
+\texttt{Ctrl+Enter} (for \app{Windows OS}) or \texttt{Cmd+Enter} (for
+\app{Mac~OS}) key. This will execute the JavaScript and return the `root'
+path to the user's application data for \app{Acrobat}.
+
+The rest of the instructions depend on your operating system,
+\app{Windows} or \app{Mac}.
+
+\subsection{For users of \app{Windows OS}}
+
+There are several cases, jump to the numbered paragraph that describes your
+version (\meta{ver}) of \app{Acrobat}.
+
+%/C/Users/D. P. Story/AppData/Roaming/Adobe/Acrobat/11.0
+%/C/Users/D. P. Story/AppData/Roaming/Adobe/Acrobat/Privileged/11.0/JavaScripts
+
+\def\Stepi{\ding{182}\enspace}
+\def\Stepii{\ding{183}\enspace}
+\def\Stepiii{\ding{184}\enspace}
+
+\paragraph*{{\Stepi}For $\boldmath\text{\meta{ver}}$, $\boldmath 8.1 \le
+\text{\meta{ver}} < 10.1.1$.} For the \app{Windows OS}, executing the script
+in display~\eqref{display:getPath} returns a string of the
+form:\footnote{This string is for \app{Windows OS} beyond \app{WinXP}.}
+\begin{equation}
+\begin{minipage}{.8\linewidth}
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/Acrobat/!meta(ver)
+\end{Verbatim}
+\end{minipage}\label{display:path}
+\end{equation}
+Navigate to this folder location. The correct location for the \SC{JS}
+files is in the \texttt{JavaScripts} subfolder. If the folder does not
+exist, create it. The final path for the JavaScript support files is then
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/
+ Acrobat/!meta(ver)/JavaScripts
+\end{Verbatim}
+Finally, copy \texttt{aeb.js} (and \texttt{aeb\_pro.js}, if applicable)
+into this folder. Close \app{Acrobat}, the next time \app{Acrobat}
+is started, it will read in the \SC{JS} files.
+
+\paragraph*{{\Stepii}For $\boldmath\text{\meta{ver}}$, $\boldmath10.1.1 \le
+\text{\meta{ver}} < 12$.} For these versions of \app{Acrobat} security has
+have tightened up even more; the \texttt{JavaScripts} folder is now a
+subfolder of a special \texttt{Privileged} folder. Execute
+\texttt{app.getPath("user")} in the console window, as in
+display~\eqref{display:getPath}. The method brings back a string similar to
+the one in display~\eqref{display:path}. The correct path is obtained by
+simply inserting \texttt{Privileged} into the path in
+display~\eqref{display:path}, between \texttt{Acrobat} and \meta{ver}, as
+displayed below.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/
+ Acrobat/!textbf(Privileged)/!meta(ver)/JavaScripts
+\end{Verbatim}
+But this is a mere description of the correct location, the path must
+exist! The path must be created, if it does not already exist.
+
+Navigate to the folder, one folder above the path shown in
+display~\eqref{display:path}, that is, navigate to,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/Acrobat/
+\end{Verbatim}
+If a \texttt{Privileged} folder exists, enter into it; otherwise, create
+it, then enter it.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/Acrobat/Privileged
+\end{Verbatim}
+Now create a folder named \meta{ver}, unless it already exists, and enter
+it. The version is always the major release \texttt{8.0}, \texttt{9.0},
+\texttt{10.0}, or \texttt{11.0}.
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/
+ Acrobat/Privileged/!meta(ver)
+\end{Verbatim}
+Finally, create the \texttt{JavaScript} folder, unless it already exists,
+to obtain the final path to the user folder JavaScripts:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/
+ Acrobat/Privileged/!meta(ver)/JavaScripts
+\end{Verbatim}
+Copy \texttt{aeb.js} (and \texttt{aeb\_pro.js}, if applicable) into this
+folder. Close \textsf{Acrobat}, the next time \textsf{Acrobat} is started,
+it will read in the \SC{JS} files.
+
+\paragraph*{{\Stepiii}For $\boldmath\text{\meta{ver}}$, $\boldmath
+\text{\meta{ver}} > 12 $.} Beginning with the next major version following
+version~11, Adobe changed its versioning scheme. There are now two tracks,
+\emph{subscription} and \emph{classic} (also called \emph{perpetual}). For
+subscription, the version, as I understand it, will always be \texttt{DC}
+(Document Cloud), and for the classic, for which you've purchased a
+\emph{perpetual license}, the \meta{ver} is a calendar year. The first
+classic version is \texttt{2015}, the next one is most likely \texttt{2017},
+since major releases occur about every two years.
+
+Execute the code of display~\eqref{display:getPath} by pressing the button
+provided to obtain a path of the form,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/Acrobat/DC
+\end{Verbatim}
+for the subscription license or,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/C/Users/!meta(username)/AppData/Roaming/Adobe/Acrobat/2015
+\end{Verbatim}
+for the classic (or perpetual) license. Of course, this last path is for
+the first classic version.
+
+Now, to obtain the path to the \texttt{JavaScripts} folder, follow the
+instructions for numbered paragraph \ding{183}, but with \meta{ver} equal
+to either \texttt{DC} or \texttt{2015} (a calendar year).
+
+%/C/Users/D. P. Story/AppData/Roaming/Adobe/Acrobat/Privileged/11.0/JavaScripts
+
+\subsection{For users of \app{Mac OS}}
+
+\app{Mac OS} does not have the security restrictions that \app{Windows OS}
+does, as described in paragraphs \ding{183} and \ding{184}.
+
+Follow the instructions of paragraph \ding{182}, by first pressing the button
+provided in display~\eqref{display:getPath}, then, in the console window,
+execute this script as described in the paragraph following
+display~\eqref{display:getPath}. After working through \ding{182}, one
+obtains any of the following paths depending on the version (\meta{ver}) you
+are using:\medskip
+
+\noindent
+For $\text{\meta{ver}} = \texttt{8.0}, \texttt{9.0}, \texttt{10.0},
+\texttt{11.0}$:
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/Users/!meta(user)/Library/Application\ Support/Adobe/
+ Acrobat/!meta(ver)/JavaScripts
+\end{Verbatim}
+\medskip
+
+\noindent
+For $\text{\meta{ver}} > 12$, the path is,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/Users/!meta(user)/Library/Application\ Support/Adobe/
+ Acrobat/DC/JavaScripts
+\end{Verbatim}
+for a subscription license, and,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/Users/!meta(user)/Library/Application\ Support/Adobe/
+ Acrobat/2015/JavaScripts
+\end{Verbatim}
+or more generally,
+\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()]
+/Users/!meta(user)/Library/Application\ Support/Adobe/
+ Acrobat/!meta(year)/JavaScripts
+\end{Verbatim}
+for the perpetual license.
+
+In all cases, if the \texttt{JavaScripts} folder does not exist, it must
+be created. Copy any \SC{JS} support files into the \texttt{JavaScripts}
+folder. The script files are read the next time \app{Acrobat} is started.
+
+\section{Testing the placement of the JavaScript support files}
+
+Assuming you have successfully followed the instructions and created the
+\texttt{JavaScripts} folder, test the validity of what you have done by
+closing \app{Acrobat} then opening it again. Open the console window
+(\texttt{Ctrl+J} or \texttt{Cmd+J}, for \app{Mac OS}) and execute this
+command in the console window:
+\begin{Verbatim}[xleftmargin=\amtIndent,commandchars={!~@}]
+app.getPath("user","javascript");!quad!copyGetPathJS
+\end{Verbatim}
+If you have followed the instructions, the return string should read the
+complete path to the \texttt{JavaScripts} folder.
+\end{document}
diff --git a/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx b/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx
index 5ce34f64..a225c720 100644
--- a/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx
+++ b/texmf-dist/source/latex/aeb-pro/aeb_pro.dtx
@@ -2,7 +2,7 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -14,7 +14,7 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}[1997/12/01]
%<package>\ProvidesPackage{aeb_pro}
-%<package> [2019/03/21 v2.9.5 aeb_pro: A support package (dps)]
+%<package> [2021/02/07 v2.10 aeb_pro: A support package (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}
@@ -35,6 +35,9 @@
\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
\def\meta#1{\textsl{\texttt{#1}}}
\def\SUB#1{\ensuremath{{}_{\mbox{\scriptsize\ttfamily#1}}}}
+\makeatletter
+\let\@latex@warning@no@line\@gobble
+\makeatother
\InputIfFileExists{aebdocfmt.def}{\PackageInfo{aeb_pro}{Inputting aebdocfmt.def}}
{\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
\PackageInfo{aeb_pro}{aebdocfmt.def cannot be found}}
@@ -60,10 +63,27 @@
% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{aeb_pro}{Inputting aebdonotindex.def}}
% {\PackageInfo{aeb_pro}{cannot find aebdonotindex.def}}
%
+%
+% \section{Alternate package name: \texorpdfstring{\protect\pkg{aeb-pro}}{aeb-pro}}
+% CTAN lists this package (\pkg{aeb\_pro}) as \pkg{aeb-pro}, so we'll create
+% a dummy package by that name.
+% \changes{v1.2}{2018/04/26}{Added dummy package \string\pkg{annot-pro}}
+% \begin{macrocode}
+%<*altpkgname>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{aeb-pro}
+ [2021/02/04 v1.0 aeb-pro Alt-name (dps)]
+\RequirePackage{xkeyval}
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{aeb_pro}}
+\ProcessOptionsX\relax
+\RequirePackage{aeb_pro}
+% \end{macrocode}
% \begin{macrocode}
-% Begin package segment
+%</altpkgname>
%<*package>
% \end{macrocode}
+% \changes{v2.9.7}{2021/02/04}{Updated documentation to reflect new Acrobat security restriction,
+% Acrobat may have to be configured.}
% \changes{v2.9}{2017/08/25}{Extracted some of the code from unicode.def to create a new package, forms16be.
% This package now includes forms16be.}
% \changes{v1.9}{2016/03/03}{Allow users of pdftex and xetex to access JavaScript related
@@ -225,7 +245,7 @@
{\PackageInfo{aeb_pro}{Inputting code for the pro option}}%
{\PackageInfo{aeb_pro}{Cannot find aebpro.def.
Reinstall or refresh your file name database, as needed.}}}
-\AtEndOfPackage{\aeb@InputAeBPro}
+%\AtEndOfPackage{\aeb@InputAeBPro}
% \end{macrocode}
%
% \subsection{\texttt{uselayers} option}
@@ -292,10 +312,10 @@
% (2015/08/06) Added code so that the childof is read after linktoattachments
% \changes{v2.4}{2016/08/03}{Removed the \string\texttt{latin1} option as unworkable across some workflows}
% \begin{macrocode}
-\DeclareOptionX{linktoattachments}{% dps23
+\DeclareOptionX{linktoattachments}{%
\let\aeb@InputUnicodes\@aeb@InputUnicodes
}
-\def\ap@RequireUnicode{\RequirePackage{forms16be}} % dps23
+\def\ap@RequireUnicode{\RequirePackage{forms16be}}
\let\aeb@childofInput\@empty
\let\aeb@childof\@empty
\DeclareOptionX{childof}{\def\aeb@childof{#1}\def\aeb@childofInput{%
@@ -541,7 +561,7 @@
\@ifpackageloaded{eforms}{\let\execjs\aebp@YES}
{%
\@ifundefined{aeb@eforms@opts}{}
- {\ap@RP[execJS]{eforms}[2017/01/03]}%
+ {\ap@RP[execJS]{eforms}[2020/12/14]}%
}
% \end{macrocode}
% load \pkg{eforms} before \pkg{insdljs} so \pkg{eforms} can properly pass options
@@ -550,7 +570,7 @@
% \begin{macrocode}
\@ifpackageloaded{insdljs}{\let\execjs\aebp@YES}
{%
- \ap@RP[execJS]{insdljs}[2016/07/31]% incls conv-xkv
+ \ap@RP[execJS]{insdljs}[2021/02/07]%
}
\@ifpackageloaded{aebxmp}{\aebp@PkgWarningi{aebxmp}}
{%
@@ -586,7 +606,7 @@
% \changes{v2.9}{2017/08/25}{require \string\pkg{forms16be} as needed}
% \begin{macrocode}
\ifx\aeb@InputUnicodes\@empty\else\expandafter
-\ap@RequireUnicode\fi% dps23
+\ap@RequireUnicode\fi
\ifpdfmarkup\else\if\aebp@uselayers1
\excludecomment{printRollover}%
\excludecomment{rollover}%
@@ -2077,6 +2097,8 @@ try {
% \cs{maketitle}) is a special case: When setting the open and close
% page actions for the first page, these environments \emph{must go}
% in the preamble.
+% \changes{v2.10}{2021/02/07}{Fix a long standing problem with page open
+% and close events}
% \begin{macrocode}
\def\canceleveryPageOpen{\global\@everyPageOpenfalse
\global\let\every@PageOpen\@empty}
@@ -2085,14 +2107,14 @@ try {
\newenvironment{everyPageOpen}[1][]
{\global\@everyPageOpentrue\@defineJS[#1]{\every@PageOpen}}
{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\every@PageOpen}}{}}%
\expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
}
\newenvironment{everyPageClose}[1][]
{\global\@everyPageClosetrue\@defineJS[#1]{\every@PageClose}}
{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoCloseJS{\thisPageAction{}{\JS{\every@PageClose}}}%
\expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
}
@@ -2100,7 +2122,7 @@ try {
\let\every@PageClose\@empty
\newenvironment{addJSToPageOpen}[1][]
{\@defineJS[#1]{\addJST@PageOpen}}{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\addJST@PageOpen}}{}}%
\expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
}
@@ -2111,19 +2133,19 @@ try {
% The \texttt{addJSToPageOpenAt} and \texttt{addJSToPageCloseAt} can now be used
% in the preamble on the first page.
% \begin{macrocode}
- \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \ifnum\value{page}=\@ne\if\frstPageSpec\aebp@YES
\thisPageAction{\JS{\@nameuse{addJST@PageOpenAt1}}}{}\fi\fi
}
\newenvironment{addJSToPageClose}[1][]
-{\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
- \ifnum\value{page}=1\relax
+{\pdfSpacesOff\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoCloseJS{%
\thisPageAction{}{\JS{\addJST@PageClose}}}%
\expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
}
\newenvironment{addJSToPageCloseAt}[2][]
-{\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
- \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+{\pdfSpacesOff\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
+ \ifnum\value{page}=\@ne\if\frstPageSpec\aebp@YES
\thisPageAction{}{\JS{\@nameuse{addJST@PageCloseAt1}}}\fi\fi
}
\let\addJST@PageOpen\@empty
@@ -2138,18 +2160,20 @@ try {
% define how our page actions are to be inserted.
% \begin{macrocode}
\def\aebp@PageOpenCloseHandler{%
- \@ifundefined{addJST@PageOpenAt\arabic{page}}%
- {\global\let\thisOpenPageActionAt\@empty}%
- {\gdef\thisOpenPageActionAt{%
- \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
- \@ifundefined{addJST@PageCloseAt\arabic{page}}%
- {\global\let\thisClosePageActionAt\@empty}%
- {\gdef\thisClosePageActionAt{%
- \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
- \aebPageAction{\thisOpenPageActionAt\addJST@PageOpen}%
- {\thisClosePageActionAt\addJST@PageClose}%
- \global\let\addJST@PageOpen\@empty
- \global\let\addJST@PageClose\@empty
+ \@ifundefined{addJST@PageOpenAt\arabic{page}}%
+ {\global\let\thisOpenPageActionAt\@empty}%
+ {\gdef\thisOpenPageActionAt{%
+ \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
+ \@ifundefined{addJST@PageCloseAt\arabic{page}}%
+ {\global\let\thisClosePageActionAt\@empty}%
+ {\gdef\thisClosePageActionAt{%
+ \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
+ \ifx\addJST@PageOpen\@empty\def\x{}\else\def\x{^^J}\fi
+ \ifx\addJST@PageClose\@empty\def\y{}\else\def\y{^^J}\fi
+ \aebPageAction{\thisOpenPageActionAt\x\addJST@PageOpen}%
+ {\thisClosePageActionAt\y\addJST@PageClose}%
+ \global\let\addJST@PageOpen\@empty
+ \global\let\addJST@PageClose\@empty
}
% \end{macrocode}
% (2016/05/15) Added \cs{aebp@PageTransHandler} to handle the page
@@ -2158,48 +2182,42 @@ try {
% transitions}
% \begin{macrocode}
\def\aebp@PageTransHandler{\@ifundefined{aebpP@geTr@nsP@ge\arabic{page}}
- {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
+ {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
% \end{macrocode}
% The two handlers are executed on each page
% \changes{v2.1}{2016/05/15}{Added the command \string\cs{aebp@PageTransHandler}
% to the shipout cmd \string\cs{AddToShipoutPicture}.}
% \begin{macrocode}
-\AddToShipoutPicture{\aebp@PageOpenCloseHandler
- \aebp@PageTransHandler}
+\AddToShipoutPicture{\aebp@PageOpenCloseHandler\aebp@PageTransHandler}
% \end{macrocode}
% \end{macro}
-% \DescribeMacro{\@@defineJS} is a variation of \cs{@defineJS}, as defined in the \textsf{insdljs} package.
+% \DescribeEnv{@@defineJS} is a variation of \cs{@defineJS}, as defined in the \textsf{insdljs} package.
% This version, at the end of the environment, calls the \cs{aebp@rse} command to parse the
% complex command argument, then makes a series of definitions to be used in the open/close
% page events.
+% \changes{v2.10}{2021/02/07}{The \string\env{@@defineJS} uses macros
+% defined in \string\pkg{insdljs}, dated 2021/02/07 or later.}
% \begin{macrocode}
\newenvironment{@@defineJS}[3][]
{%
- \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}%
- \def\verbatim@processline
- {%
- \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
- \global\JStoks=\expandafter{\JS@temp}%
- }%
- \let\do\@makeother\dospecials\catcode`\^^M\active
- #1%
- \verbatim@start
+ \@initdfnJS
+ \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}\dlfortypesetfalse
+ \@vrbsetupdfnJS\b@vrbdfnJS{#1}%
}{%
- \expandafter\aebp@rse\expandafter{\defineJSArg}%
- \edef\shakeandbake{%
- \noexpand\@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
- \aeb@parsecnt=0 \shakeandbake \do {%
- \ifnum\aeb@parsecnt=0
- \edef\firsttok{\@mytoks}%
- \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
- \else
- \edef\letsmakelet{\global\let\expandafter\noexpand
- \csname\argType\@mytoks\endcsname=\expandafter\noexpand
- \csname\argType\firsttok\endcsname}%
- \letsmakelet
- \fi
- \advance\aeb@parsecnt1\relax
- }%
+ \expandafter\aebp@rse\expandafter{\defineJSArg}%
+ \edef\sh@keandbake{\noexpand
+ \@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
+ \aeb@parsecnt=\z@\sh@keandbake\do{%
+ \ifnum\aeb@parsecnt=\z@
+ \edef\firsttok{\@mytoks}%
+ \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
+ \else
+ \edef\letsmakelet{\global\let\expandafter\noexpand
+ \csname\argType\@mytoks\endcsname=\expandafter\noexpand
+ \csname\argType\firsttok\endcsname}\letsmakelet
+ \fi
+ \advance\aeb@parsecnt\@ne
+ }%
}
% \end{macrocode}
% \begin{macrocode}
@@ -2218,51 +2236,59 @@ try {
% environments. See \cs{aeb@addToPageOpenCloseActions} for usage by this package.
% \changes{v2.1}{2016/05/15}{Final changes to \string\cs{aebPageAction} to include non-Distiller
% workflows.}
+% \changes{v2.10}{2021/02/07}{Hack: redefine \string\cs{@acrivechar@in} from \string\cs{LaTeX}
+% core; this was disrupting the page events.}
% \begin{macrocode}
\newcommand\aebPageAction[3][ThisPage]{%
- \let\ispageactions=0\aeb@PageOpenfalse\aeb@PageClosefalse
- \def\@aebOpen{#2}%
- \if1\@aebOpen1%
- \if@everyPageOpen
- \aeb@PageOpentrue\let\ispageactions=1%
- \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
- \fi
- \else
- \let\ispageactions=1%
- \aeb@PageOpentrue
- \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
- \fi
- \def\@aebClose{#3}%
- \if1\@aebClose1%
- \if@everyPageClose
- \aeb@PageClosetrue\let\ispageactions=1%
- \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
- \fi
- \else
- \let\ispageactions=1%
- \aeb@PageClosetrue
- \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
- \fi
- \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions=1\fi
- \if@everyPageClose\@everyPageClosetrue\let\ispageactions=1\fi
- \if\ispageactions1%
- \xdef\aebp@PageActionCode{/AA <<
- \ifaeb@PageOpen\@aebOpen\space\fi
- \ifaeb@PageClose\@aebClose\space\fi >>}
+% \end{macrocode}
+% (2021/02/07) The core {\LaTeX} \cs{@activechar@info} macro was breaking the page open and
+% close events by inserting an unwanted message into the code. We
+% redefine this macro to remove the message and insert \cs{pdfSP}, which either
+% a normal space or \cs{pdfSPDef} depending on whether \cs{pdfSpacesOff} or
+% \cs{pdfSpacesOn}, respectively, is operational. This change is local (I hope).
+% \begin{macrocode}
+ \def\@activechar@info{\pdfSP\@gobbletwo}\let\ispageactions\aebp@Zero
+ \aeb@PageOpenfalse\aeb@PageClosefalse
+ \def\@aebOpen{#2}%
+ \if1\@aebOpen1%
+ \if@everyPageOpen
+ \aeb@PageOpentrue\let\ispageactions\aebp@One
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}\fi
+ \else
+ \let\ispageactions\aebp@One
+ \aeb@PageOpentrue
+ \def\@aebOpen{/O << \JS{\every@PageOpen^^J#2} >>}%
+ \fi
+ \def\@aebClose{#3}%
+ \if1\@aebClose1%
+ \if@everyPageClose
+ \aeb@PageClosetrue\let\ispageactions\aebp@One
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}\fi
+ \else
+ \let\ispageactions\aebp@One
+ \aeb@PageClosetrue
+ \def\@aebClose{/C << \JS{\every@PageClose^^J#3} >>}%
+ \fi
+ \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions\aebp@One\fi
+ \if@everyPageClose\@everyPageClosetrue\let\ispageactions\aebp@One\fi
+ \if\ispageactions\aebp@One
+ \xdef\aebp@PageActionCode{/AA <<
+ \ifaeb@PageOpen\@aebOpen\space\fi
+ \ifaeb@PageClose\@aebClose\space\fi >>}%
% \end{macrocode}
% For page 1, the open page is handled by \textsf{insdljs}
% \changes{v2.0a}{2016/05/11}{Let \string\textsf{insdljs} handle page open
% for page 1.}
% \begin{macrocode}
- \ifnum\value{page}=1\relax\else
- \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
- \aebp@PageActionCode\space >> /PUT pdfmark}\else
- \ifpdf\global\pdfpageattr=\expandafter
- {\aebp@PageActionCode}\else
- \ifxetex\@pdfm@mark{put @thispage <<
- \aebp@PageActionCode\space>>}\fi\fi\fi
- \fi
+ \ifnum\value{page}=\@ne\else
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
+ \aebp@PageActionCode\space >> /PUT pdfmark}\else
+ \ifpdf\global\pdfpageattr=\expandafter
+ {\aebp@PageActionCode}\else
+ \ifxetex\@pdfm@mark{put @thispage <<
+ \aebp@PageActionCode\space>>}\fi\fi\fi
\fi
+ \fi
}
% \end{macrocode}
% \end{macro}
@@ -2290,8 +2316,8 @@ try {
\def\ap@gobtonil#1\@nil{}
\def\ap@gettonil#1\@nil{\def\to@nilarg{#1}}
\def\ap@ifspc{\ifx\@let@token\@sptoken
- \let\ap@next\ap@xifspc\else
- \let\ap@next\ap@gettonil\fi\ap@next}
+ \let\ap@next\ap@xifspc\else
+ \let\ap@next\ap@gettonil\fi\ap@next}
\begingroup
\def\:{\ap@xifspc}
\expandafter\gdef\: {\futurelet\@let@token\ap@ifspc}
@@ -3216,13 +3242,13 @@ nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
% \changes{v2.9}{2017/08/25}{Test for \string\env{attachmentNames} environment}
% \begin{macrocode}
\let\aeb@isFromAutoLabelNum\aebp@Zero
-\def\attachmentNamesEnv{attachmentNames} % dps23
+\def\attachmentNamesEnv{attachmentNames}
% \end{macrocode}
% If \cs{labelName} is outside the \env{attachmentNames} environment, use
% \cs{defUniStr}, defined in \pkg{forms16be}.
% \changes{v2.9}{2017/08/25}{Pass control to \string\pkg{forms16be}}
% \begin{macrocode}
-\def\labelName{\ifx\attachNamesEnv\attachmentNamesEnv % dps23
+\def\labelName{\ifx\attachNamesEnv\attachmentNamesEnv
\def\ap@next{\labelName@Env}\else\def\ap@next{\defUniStr}\fi\ap@next}
\def\labelName@Env#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@Zero %dps23
\@for\x:=ABCDEFabcdef\do{\@makeother\x}%
@@ -3483,6 +3509,16 @@ nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
\DeclareJSHelper{\docSaveAs}{aebDocSaveAs}
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\browseForDoc}
+% Access to using the method \texttt{app.browseForDoc()}, for example,
+%\begin{verbatim}
+%var oRetn=\browseForDoc({bSave:true,cFilenameInit: "myNewDoc.pdf"});
+%\end{verbatim}
+% See the Acrobat JavaScript API reference for details on what is returned.
+% \begin{macrocode}
+\DeclareJSHelper{\browseForDoc}{aebBrowseForDoc}
+% \end{macrocode}
+% \end{macro}
% \begin{macro}{\insertPages}
% This is the method \texttt{Doc.insertPages}.
% \begin{macrocode}
@@ -3581,31 +3617,32 @@ nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
% gets the security handler object, logs into the handler, calls
% \texttt{signatureSetSeedValue} if the \texttt{sv} property is in the
% \texttt{oSigInfo} object, and signs the field.
+% \changes{v2.9.6}{2029/12/24}{Use \string\cs{dfnJSCR} of \string\pkg{insdljs}}
% \begin{macrocode}
-\begin{defineJS}[\def\defineJSjsR{^^J}]{\signatureSign}
+\begin{defineJS}[\makecmt\%\dfnJSCR{^^J}]{\signatureSign}
if ( typeof oSigInfo.oHandler=="undefined" )
- oSigInfo.oHandler=security.PPKLiteHandler;
-var engine=aebTrustedFunctions( security,
- aebSecurityGetHandler, oSigInfo.oHandler );
-var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ?
- aebTrustedFunctions( this, aebAppGetPath,
- {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert :
- oSigInfo.path2Cert;
-aebTrustedFunctions( engine, aebSecurityHandlerLogin,
- { cPassword: oSigInfo.password, cDIPath: path2Cert});
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,%
+aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ? %
+aebTrustedFunctions( this, aebAppGetPath,%
+{cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert : %
+oSigInfo.path2Cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,%
+{ cPassword: oSigInfo.password, cDIPath: path2Cert});
var oSigField = this.getField(oSigInfo.cSigFieldName);
oSigInfo.oInfo.password=oSigInfo.password;
if ( typeof oSigInfo.sv!="undefined" ) {
- for (var o in oSigInfo.sv )
- oSigInfo.oInfo[o]=oSigInfo.sv[o];
+ for (var o in oSigInfo.sv )
+ oSigInfo.oInfo[o]=oSigInfo.sv[o];
}
var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
if ( typeof oSigInfo.cLegalAttest!="undefined" )
- oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
if ( typeof oSigInfo.cDIPath!="undefined")
- oSigArgs.cDIPath=oSigInfo.cDIPath;
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
if ( typeof oSigInfo.bUI!="undefined")
- oSigArgs.bUI=oSigInfo.bUI;
+ oSigArgs.bUI=oSigInfo.bUI;
aebTrustedFunctions( oSigField, aebSignatureSign, oSigArgs );
\end{defineJS}
% \end{macrocode}
@@ -3628,23 +3665,23 @@ aebTrustedFunctions( oSigField, aebSignatureSign, oSigArgs );
%\end{docassembly}
%\end{verbatim}
% \begin{macrocode}
-\begin{defineJS}[\def\defineJSjsR{^^J}]{\certifyInvisibleSign}
+\begin{defineJS}[\makecmt\%\dfnJSCR{^^J}]{\certifyInvisibleSign}
if ( typeof oSigInfo.oHandler=="undefined" )
- oSigInfo.oHandler=security.PPKLiteHandler;
-var engine=aebTrustedFunctions( security,
- aebSecurityGetHandler, oSigInfo.oHandler );
-var path2Cert=aebTrustedFunctions( this, aebAppGetPath,
- {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
-aebTrustedFunctions( engine, aebSecurityHandlerLogin,
- { cPassword: oSigInfo.password, cDIPath: path2Cert});
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security, %
+aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert=aebTrustedFunctions( this, aebAppGetPath, %
+{cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin, %
+{ cPassword: oSigInfo.password, cDIPath: path2Cert});
oSigInfo.oInfo.password=oSigInfo.password;
var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
if ( typeof oSigInfo.cLegalAttest!="undefined" )
- oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
if ( typeof oSigInfo.cDIPath!="undefined")
- oSigArgs.cDIPath=oSigInfo.cDIPath;
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
if ( typeof oSigInfo.bUI!="undefined")
- oSigArgs.bUI=oSigInfo.bUI;
+ oSigArgs.bUI=oSigInfo.bUI;
aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
\end{defineJS}
% \end{macrocode}
@@ -4057,7 +4094,7 @@ aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
% \end{macrocode}
% Calculate the value of \cs{@btnanimerowsep}, the distance between rows
% \begin{macrocode}
- \edef\@btnanimerowsep{\btnanimerowsep}% dps10
+ \edef\@btnanimerowsep{\btnanimerowsep}%
% \setlength{\@tempdima}{\btnanimerowsep+2bp}%
% \edef\@btnanimerowsep{\the\@tempdima}%
% \end{macrocode}
@@ -4153,7 +4190,7 @@ aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
% \end{macrocode}
% A command to set the space between control buttons, uses \cs{btnanimebtnsep}
% \begin{macrocode}
-\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]} % dps10
+\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]}
% \end{macrocode}
% \begin{macro}{\btnanimebtnsep}
% The space between buttons
@@ -4752,6 +4789,7 @@ function btnAnimeNewFrame(fieldName, type)
% Begin package segment
%<*package>
\ap@restoreCats
+\aeb@InputAeBPro
%</package>
% \end{macrocode}
% \Finale
diff --git a/texmf-dist/source/latex/aeb-pro/aeb_pro.ins b/texmf-dist/source/latex/aeb-pro/aeb_pro.ins
index ae721ae4..946b62be 100644
--- a/texmf-dist/source/latex/aeb-pro/aeb_pro.ins
+++ b/texmf-dist/source/latex/aeb-pro/aeb_pro.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 1999-2018 D. P. Story
+%% Copyright 1999-2021 D. P. Story
%%
%% This file is part of the AcroTeX eDucation Bundle (AeB).
%% -------------------------------------------
@@ -45,6 +45,7 @@
\generate{%
\file{aeb_pro.sty}{\from{aeb_pro.dtx}{copyright,package}}
+ \file{aeb-pro.sty}{\from{aeb_pro.dtx}{copyright,altpkgname}}
\file{aeblayers.def}{\from{aeb_pro.dtx}{copyright,aeblayers}}
\file{aebpro.def}{\from{aeb_pro.dtx}{copyright,aebpro}}
\file{anime_support.def}{\from{aeb_pro.dtx}{copyright,animecommon}}
diff --git a/texmf-dist/tex/latex/aeb-pro/aeb-pro.sty b/texmf-dist/tex/latex/aeb-pro/aeb-pro.sty
new file mode 100644
index 00000000..01119491
--- /dev/null
+++ b/texmf-dist/tex/latex/aeb-pro/aeb-pro.sty
@@ -0,0 +1,29 @@
+%%
+%% This is file `aeb-pro.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% aeb_pro.dtx (with options: `copyright,altpkgname')
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% aeb_pro.sty package, %%
+%% Copyright (C) 2006--2021 D. P. Story %%
+%% dpstory@acrotex.net %%
+%% %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License %%
+%% Distributed from CTAN archives in directory %%
+%% macros/latex/base/lppl.txt; either version 1.2 of %%
+%% the License, or (at your option) any later version. %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{aeb-pro}
+ [2021/02/04 v1.0 aeb-pro Alt-name (dps)]
+\RequirePackage{xkeyval}
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{aeb_pro}}
+\ProcessOptionsX\relax
+\RequirePackage{aeb_pro}
+\endinput
+%%
+%% End of file `aeb-pro.sty'.
diff --git a/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty b/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty
index bb38876e..ee72e67a 100644
--- a/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty
+++ b/texmf-dist/tex/latex/aeb-pro/aeb_pro.sty
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[1997/12/01]
\ProvidesPackage{aeb_pro}
- [2019/03/21 v2.9.5 aeb_pro: A support package (dps)]
+ [2021/02/07 v2.10 aeb_pro: A support package (dps)]
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
\RequirePackage{xkeyval}
@@ -70,7 +70,6 @@
{\PackageInfo{aeb_pro}{Inputting code for the pro option}}%
{\PackageInfo{aeb_pro}{Cannot find aebpro.def.
Reinstall or refresh your file name database, as needed.}}}
-\AtEndOfPackage{\aeb@InputAeBPro}
\let\aebp@uselayers=0
\DeclareOptionX{uselayers}{%
\ifx\aebp@uselayers0\AtEndOfPackage{\aeb@InputAeBLayers}%
@@ -98,10 +97,10 @@
option}}{\PackageWarning{aeb_pro}{Cannot find linkto.def.
Reinstall or refresh your file name database, as needed.}}}
\let\aeb@InputUnicodes\@empty
-\DeclareOptionX{linktoattachments}{% dps23
+\DeclareOptionX{linktoattachments}{%
\let\aeb@InputUnicodes\@aeb@InputUnicodes
}
-\def\ap@RequireUnicode{\RequirePackage{forms16be}} % dps23
+\def\ap@RequireUnicode{\RequirePackage{forms16be}}
\let\aeb@childofInput\@empty
\let\aeb@childof\@empty
\DeclareOptionX{childof}{\def\aeb@childof{#1}\def\aeb@childofInput{%
@@ -263,11 +262,11 @@
\@ifpackageloaded{eforms}{\let\execjs\aebp@YES}
{%
\@ifundefined{aeb@eforms@opts}{}
- {\ap@RP[execJS]{eforms}[2017/01/03]}%
+ {\ap@RP[execJS]{eforms}[2020/12/14]}%
}
\@ifpackageloaded{insdljs}{\let\execjs\aebp@YES}
{%
- \ap@RP[execJS]{insdljs}[2016/07/31]% incls conv-xkv
+ \ap@RP[execJS]{insdljs}[2021/02/07]%
}
\@ifpackageloaded{aebxmp}{\aebp@PkgWarningi{aebxmp}}
{%
@@ -296,7 +295,7 @@
\RequirePackage{calc}
\RequirePackage{eso-pic}
\ifx\aeb@InputUnicodes\@empty\else\expandafter
-\ap@RequireUnicode\fi% dps23
+\ap@RequireUnicode\fi
\ifpdfmarkup\else\if\aebp@uselayers1
\excludecomment{printRollover}%
\excludecomment{rollover}%
@@ -348,6 +347,7 @@
\addtocounter{page}{1}}%
}
\ap@restoreCats
+\aeb@InputAeBPro
\endinput
%%
%% End of file `aeb_pro.sty'.
diff --git a/texmf-dist/tex/latex/aeb-pro/aeblayers.def b/texmf-dist/tex/latex/aeb-pro/aeblayers.def
index d863e27d..beec800a 100644
--- a/texmf-dist/tex/latex/aeb-pro/aeblayers.def
+++ b/texmf-dist/tex/latex/aeb-pro/aeblayers.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/aeb-pro/aebpro.def b/texmf-dist/tex/latex/aeb-pro/aebpro.def
index bfb53f2b..76ac133b 100644
--- a/texmf-dist/tex/latex/aeb-pro/aebpro.def
+++ b/texmf-dist/tex/latex/aeb-pro/aebpro.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -586,14 +586,14 @@ ZoomOutUp,CombHorizontal,CombVertical}[Replace]%
\newenvironment{everyPageOpen}[1][]
{\global\@everyPageOpentrue\@defineJS[#1]{\every@PageOpen}}
{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\every@PageOpen}}{}}%
\expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
}
\newenvironment{everyPageClose}[1][]
{\global\@everyPageClosetrue\@defineJS[#1]{\every@PageClose}}
{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoCloseJS{\thisPageAction{}{\JS{\every@PageClose}}}%
\expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
}
@@ -601,118 +601,111 @@ ZoomOutUp,CombHorizontal,CombVertical}[Replace]%
\let\every@PageClose\@empty
\newenvironment{addJSToPageOpen}[1][]
{\@defineJS[#1]{\addJST@PageOpen}}{\end@defineJS
- \ifnum\value{page}=1\relax
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoOpenJS{\thisPageAction{\JS{\addJST@PageOpen}}{}}%
\expandafter\aftergroup\expandafter\ap@AddtoOpenJS\fi
}
\newenvironment{addJSToPageOpenAt}[2][]
{\@@defineJS[#1]{addJST@PageOpenAt}{#2}}{\end@@defineJS
- \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+ \ifnum\value{page}=\@ne\if\frstPageSpec\aebp@YES
\thisPageAction{\JS{\@nameuse{addJST@PageOpenAt1}}}{}\fi\fi
}
\newenvironment{addJSToPageClose}[1][]
-{\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
- \ifnum\value{page}=1\relax
+{\pdfSpacesOff\@defineJS[#1]{\addJST@PageClose}}{\end@defineJS
+ \ifnum\value{page}=\@ne
\gdef\ap@AddtoCloseJS{%
\thisPageAction{}{\JS{\addJST@PageClose}}}%
\expandafter\aftergroup\expandafter\ap@AddtoCloseJS\fi
}
\newenvironment{addJSToPageCloseAt}[2][]
-{\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
- \ifnum\value{page}=1\relax\if\frstPageSpec\aebp@YES
+{\pdfSpacesOff\@@defineJS[#1]{addJST@PageCloseAt}{#2}}{\end@@defineJS
+ \ifnum\value{page}=\@ne\if\frstPageSpec\aebp@YES
\thisPageAction{}{\JS{\@nameuse{addJST@PageCloseAt1}}}\fi\fi
}
\let\addJST@PageOpen\@empty
\let\addJST@PageClose\@empty
\def\aebp@PageOpenCloseHandler{%
- \@ifundefined{addJST@PageOpenAt\arabic{page}}%
- {\global\let\thisOpenPageActionAt\@empty}%
- {\gdef\thisOpenPageActionAt{%
- \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
- \@ifundefined{addJST@PageCloseAt\arabic{page}}%
- {\global\let\thisClosePageActionAt\@empty}%
- {\gdef\thisClosePageActionAt{%
- \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
- \aebPageAction{\thisOpenPageActionAt\addJST@PageOpen}%
- {\thisClosePageActionAt\addJST@PageClose}%
- \global\let\addJST@PageOpen\@empty
- \global\let\addJST@PageClose\@empty
+ \@ifundefined{addJST@PageOpenAt\arabic{page}}%
+ {\global\let\thisOpenPageActionAt\@empty}%
+ {\gdef\thisOpenPageActionAt{%
+ \@nameuse{addJST@PageOpenAt\arabic{page}}}}%
+ \@ifundefined{addJST@PageCloseAt\arabic{page}}%
+ {\global\let\thisClosePageActionAt\@empty}%
+ {\gdef\thisClosePageActionAt{%
+ \@nameuse{addJST@PageCloseAt\arabic{page}}}}%
+ \ifx\addJST@PageOpen\@empty\def\x{}\else\def\x{^^J}\fi
+ \ifx\addJST@PageClose\@empty\def\y{}\else\def\y{^^J}\fi
+ \aebPageAction{\thisOpenPageActionAt\x\addJST@PageOpen}%
+ {\thisClosePageActionAt\y\addJST@PageClose}%
+ \global\let\addJST@PageOpen\@empty
+ \global\let\addJST@PageClose\@empty
}
\def\aebp@PageTransHandler{\@ifundefined{aebpP@geTr@nsP@ge\arabic{page}}
- {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
-\AddToShipoutPicture{\aebp@PageOpenCloseHandler
- \aebp@PageTransHandler}
+ {}{\@nameuse{aebpP@geTr@nsP@ge\arabic{page}}}}
+\AddToShipoutPicture{\aebp@PageOpenCloseHandler\aebp@PageTransHandler}
\newenvironment{@@defineJS}[3][]
{%
- \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}%
- \def\verbatim@processline
- {%
- \xdef\JS@temp{\the\JStoks\the\verbatim@line\defineJSjsR}%
- \global\JStoks=\expandafter{\JS@temp}%
- }%
- \let\do\@makeother\dospecials\catcode`\^^M\active
- #1%
- \verbatim@start
+ \@initdfnJS
+ \gdef\argType{#2}\gdef\defineJSArg{#3}\JStoks={}\dlfortypesetfalse
+ \@vrbsetupdfnJS\b@vrbdfnJS{#1}%
}{%
- \expandafter\aebp@rse\expandafter{\defineJSArg}%
- \edef\shakeandbake{%
- \noexpand\@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
- \aeb@parsecnt=0 \shakeandbake \do {%
- \ifnum\aeb@parsecnt=0
- \edef\firsttok{\@mytoks}%
- \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
- \else
- \edef\letsmakelet{\global\let\expandafter\noexpand
- \csname\argType\@mytoks\endcsname=\expandafter\noexpand
- \csname\argType\firsttok\endcsname}%
- \letsmakelet
- \fi
- \advance\aeb@parsecnt1\relax
- }%
+ \expandafter\aebp@rse\expandafter{\defineJSArg}%
+ \edef\sh@keandbake{\noexpand
+ \@for\noexpand\@mytoks:=\the\aeb@parsetoks}%
+ \aeb@parsecnt=\z@\sh@keandbake\do{%
+ \ifnum\aeb@parsecnt=\z@
+ \edef\firsttok{\@mytoks}%
+ \csarg\xdef{\argType\@mytoks}{\the\JStoks}%
+ \else
+ \edef\letsmakelet{\global\let\expandafter\noexpand
+ \csname\argType\@mytoks\endcsname=\expandafter\noexpand
+ \csname\argType\firsttok\endcsname}\letsmakelet
+ \fi
+ \advance\aeb@parsecnt\@ne
+ }%
}
\newif\ifaeb@PageOpen
\newif\ifaeb@PageClose
\newif\if@everyPageOpen\@everyPageOpenfalse
\newif\if@everyPageClose\@everyPageClosefalse
\newcommand\aebPageAction[3][ThisPage]{%
- \let\ispageactions=0\aeb@PageOpenfalse\aeb@PageClosefalse
- \def\@aebOpen{#2}%
- \if1\@aebOpen1%
- \if@everyPageOpen
- \aeb@PageOpentrue\let\ispageactions=1%
- \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
- \fi
- \else
- \let\ispageactions=1%
- \aeb@PageOpentrue
- \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}%
- \fi
- \def\@aebClose{#3}%
- \if1\@aebClose1%
- \if@everyPageClose
- \aeb@PageClosetrue\let\ispageactions=1%
- \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
- \fi
- \else
- \let\ispageactions=1%
- \aeb@PageClosetrue
- \def\@aebClose{/C << \JS{\every@PageClose#3} >>}%
- \fi
- \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions=1\fi
- \if@everyPageClose\@everyPageClosetrue\let\ispageactions=1\fi
- \if\ispageactions1%
- \xdef\aebp@PageActionCode{/AA <<
- \ifaeb@PageOpen\@aebOpen\space\fi
- \ifaeb@PageClose\@aebClose\space\fi >>}
- \ifnum\value{page}=1\relax\else
- \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
- \aebp@PageActionCode\space >> /PUT pdfmark}\else
- \ifpdf\global\pdfpageattr=\expandafter
- {\aebp@PageActionCode}\else
- \ifxetex\@pdfm@mark{put @thispage <<
- \aebp@PageActionCode\space>>}\fi\fi\fi
- \fi
+ \def\@activechar@info{\pdfSP\@gobbletwo}\let\ispageactions\aebp@Zero
+ \aeb@PageOpenfalse\aeb@PageClosefalse
+ \def\@aebOpen{#2}%
+ \if1\@aebOpen1%
+ \if@everyPageOpen
+ \aeb@PageOpentrue\let\ispageactions\aebp@One
+ \def\@aebOpen{/O << \JS{\every@PageOpen#2} >>}\fi
+ \else
+ \let\ispageactions\aebp@One
+ \aeb@PageOpentrue
+ \def\@aebOpen{/O << \JS{\every@PageOpen^^J#2} >>}%
+ \fi
+ \def\@aebClose{#3}%
+ \if1\@aebClose1%
+ \if@everyPageClose
+ \aeb@PageClosetrue\let\ispageactions\aebp@One
+ \def\@aebClose{/C << \JS{\every@PageClose#3} >>}\fi
+ \else
+ \let\ispageactions\aebp@One
+ \aeb@PageClosetrue
+ \def\@aebClose{/C << \JS{\every@PageClose^^J#3} >>}%
+ \fi
+ \if@everyPageOpen\aeb@PageOpentrue\let\ispageactions\aebp@One\fi
+ \if@everyPageClose\@everyPageClosetrue\let\ispageactions\aebp@One\fi
+ \if\ispageactions\aebp@One
+ \xdef\aebp@PageActionCode{/AA <<
+ \ifaeb@PageOpen\@aebOpen\space\fi
+ \ifaeb@PageClose\@aebClose\space\fi >>}%
+ \ifnum\value{page}=\@ne\else
+ \ifpdfmarkup\literalps@out{\AEB@psMrk{#1} <<
+ \aebp@PageActionCode\space >> /PUT pdfmark}\else
+ \ifpdf\global\pdfpageattr=\expandafter
+ {\aebp@PageActionCode}\else
+ \ifxetex\@pdfm@mark{put @thispage <<
+ \aebp@PageActionCode\space>>}\fi\fi\fi
\fi
+ \fi
}
\def\aeb@exiii{\expandafter\expandafter\expandafter}
\let\ahrefexafter\aeb@exiii
@@ -725,8 +718,8 @@ ZoomOutUp,CombHorizontal,CombVertical}[Replace]%
\def\ap@gobtonil#1\@nil{}
\def\ap@gettonil#1\@nil{\def\to@nilarg{#1}}
\def\ap@ifspc{\ifx\@let@token\@sptoken
- \let\ap@next\ap@xifspc\else
- \let\ap@next\ap@gettonil\fi\ap@next}
+ \let\ap@next\ap@xifspc\else
+ \let\ap@next\ap@gettonil\fi\ap@next}
\begingroup
\def\:{\ap@xifspc}
\expandafter\gdef\: {\futurelet\@let@token\ap@ifspc}
@@ -1039,6 +1032,7 @@ var pkto=app.setTimeOut("app.clearTimeOut(pkto);"
\DeclareJSHelper{\importSound}{aebImportSound}
\DeclareJSHelper{\appopenDoc}{aebAppOpenDoc}
\DeclareJSHelper{\docSaveAs}{aebDocSaveAs}
+\DeclareJSHelper{\browseForDoc}{aebBrowseForDoc}
\DeclareJSHelper{\insertPages}{aebInsertPages}
\DeclareJSHelper{\createTemplate}{aebCreateTemplate}
\DeclareJSHelper{\importDataObject}{aebImportDataObject}
@@ -1049,49 +1043,49 @@ var pkto=app.setTimeOut("app.clearTimeOut(pkto);"
\def\sigFieldObj(#1){var oSigField=this.getField(#1)}
\def\signatureSetSeedValue#1{%
\ap@TF( oSigField, aebSignatureSetSeedValue, }
-\begin{defineJS}[\def\defineJSjsR{^^J}]{\signatureSign}
+\begin{defineJS}[\makecmt\%\dfnJSCR{^^J}]{\signatureSign}
if ( typeof oSigInfo.oHandler=="undefined" )
- oSigInfo.oHandler=security.PPKLiteHandler;
-var engine=aebTrustedFunctions( security,
- aebSecurityGetHandler, oSigInfo.oHandler );
-var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ?
- aebTrustedFunctions( this, aebAppGetPath,
- {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert :
- oSigInfo.path2Cert;
-aebTrustedFunctions( engine, aebSecurityHandlerLogin,
- { cPassword: oSigInfo.password, cDIPath: path2Cert});
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security,%
+aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert = (typeof oSigInfo.path2Cert == "undefined") ? %
+aebTrustedFunctions( this, aebAppGetPath,%
+{cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert : %
+oSigInfo.path2Cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin,%
+{ cPassword: oSigInfo.password, cDIPath: path2Cert});
var oSigField = this.getField(oSigInfo.cSigFieldName);
oSigInfo.oInfo.password=oSigInfo.password;
if ( typeof oSigInfo.sv!="undefined" ) {
- for (var o in oSigInfo.sv )
- oSigInfo.oInfo[o]=oSigInfo.sv[o];
+ for (var o in oSigInfo.sv )
+ oSigInfo.oInfo[o]=oSigInfo.sv[o];
}
var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
if ( typeof oSigInfo.cLegalAttest!="undefined" )
- oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
if ( typeof oSigInfo.cDIPath!="undefined")
- oSigArgs.cDIPath=oSigInfo.cDIPath;
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
if ( typeof oSigInfo.bUI!="undefined")
- oSigArgs.bUI=oSigInfo.bUI;
+ oSigArgs.bUI=oSigInfo.bUI;
aebTrustedFunctions( oSigField, aebSignatureSign, oSigArgs );
\end{defineJS}
-\begin{defineJS}[\def\defineJSjsR{^^J}]{\certifyInvisibleSign}
+\begin{defineJS}[\makecmt\%\dfnJSCR{^^J}]{\certifyInvisibleSign}
if ( typeof oSigInfo.oHandler=="undefined" )
- oSigInfo.oHandler=security.PPKLiteHandler;
-var engine=aebTrustedFunctions( security,
- aebSecurityGetHandler, oSigInfo.oHandler );
-var path2Cert=aebTrustedFunctions( this, aebAppGetPath,
- {cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
-aebTrustedFunctions( engine, aebSecurityHandlerLogin,
- { cPassword: oSigInfo.password, cDIPath: path2Cert});
+ oSigInfo.oHandler=security.PPKLiteHandler;
+var engine=aebTrustedFunctions( security, %
+aebSecurityGetHandler, oSigInfo.oHandler );
+var path2Cert=aebTrustedFunctions( this, aebAppGetPath, %
+{cCategory:"user"} )+"/Security"+"/"+oSigInfo.cert;
+aebTrustedFunctions( engine, aebSecurityHandlerLogin, %
+{ cPassword: oSigInfo.password, cDIPath: path2Cert});
oSigInfo.oInfo.password=oSigInfo.password;
var oSigArgs={ oSig: engine, oInfo: oSigInfo.oInfo };
if ( typeof oSigInfo.cLegalAttest!="undefined" )
- oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
+ oSigArgs.cLegalAttest=oSigInfo.cLegalAttest;
if ( typeof oSigInfo.cDIPath!="undefined")
- oSigArgs.cDIPath=oSigInfo.cDIPath;
+ oSigArgs.cDIPath=oSigInfo.cDIPath;
if ( typeof oSigInfo.bUI!="undefined")
- oSigArgs.bUI=oSigInfo.bUI;
+ oSigArgs.bUI=oSigInfo.bUI;
aebTrustedFunctions( this, aebCertifyInvisibleSign, oSigArgs );
\end{defineJS}
\let\predocassemJS\@empty
diff --git a/texmf-dist/tex/latex/aeb-pro/anime_support.def b/texmf-dist/tex/latex/aeb-pro/anime_support.def
index 6dba2bfe..7612a897 100644
--- a/texmf-dist/tex/latex/aeb-pro/anime_support.def
+++ b/texmf-dist/tex/latex/aeb-pro/anime_support.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -57,7 +57,7 @@
\edef\@tmpExp{\noexpand\g@addto@macro%
\noexpand\animeSetupPresets{%
\noexpand\W{\btnAnimeCtrlBdryWidth}}}\@tmpExp\fi
- \edef\@btnanimerowsep{\btnanimerowsep}% dps10
+ \edef\@btnanimerowsep{\btnanimerowsep}%
\setlength{\@tempdima}{%
(\btnAnimeCtrlW+2bp)*\numWidgetsFirstRow+%
(\btnanimebtnsep*(\numWidgetsFirstRow-1))}%
@@ -107,7 +107,7 @@
{\edef\btnAnimeCtrlBdryColor{#1}}\fi
} % PDF color
\let\animeSetupPresets\@empty
-\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]} % dps10
+\newcommand{\@ctrlsbtnsep}{\cgBdry[\btnanimebtnsep]}
\newcommand{\btnanimebtnsep}{1bp}
\newcommand{\vspacectrlsep}{3bp}
\newcommand{\aep@vspacectrlsep}{\vspacectrlsep}
diff --git a/texmf-dist/tex/latex/aeb-pro/btnnanime.def b/texmf-dist/tex/latex/aeb-pro/btnnanime.def
index 5b33d3aa..0ac72fed 100644
--- a/texmf-dist/tex/latex/aeb-pro/btnnanime.def
+++ b/texmf-dist/tex/latex/aeb-pro/btnnanime.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/aeb-pro/create_icon.def b/texmf-dist/tex/latex/aeb-pro/create_icon.def
index f1b6e7b5..fb4b4ab2 100644
--- a/texmf-dist/tex/latex/aeb-pro/create_icon.def
+++ b/texmf-dist/tex/latex/aeb-pro/create_icon.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
diff --git a/texmf-dist/tex/latex/aeb-pro/linkto.def b/texmf-dist/tex/latex/aeb-pro/linkto.def
index 39f790f9..fbce524a 100644
--- a/texmf-dist/tex/latex/aeb-pro/linkto.def
+++ b/texmf-dist/tex/latex/aeb-pro/linkto.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -186,8 +186,8 @@ nLaunch: \ahref@launch@type})}}]{\ahypercolor{#3}}%
\gdef\getdscrptStrCont#1{\gdef\aebp@description{#1}%
\aeb@labelNamestar}}%
\let\aeb@isFromAutoLabelNum\aebp@Zero
-\def\attachmentNamesEnv{attachmentNames} % dps23
-\def\labelName{\ifx\attachNamesEnv\attachmentNamesEnv % dps23
+\def\attachmentNamesEnv{attachmentNames}
+\def\labelName{\ifx\attachNamesEnv\attachmentNamesEnv
\def\ap@next{\labelName@Env}\else\def\ap@next{\defUniStr}\fi\ap@next}
\def\labelName@Env#1{\bgroup\let\aeb@isFromAutoLabelNum\aebp@Zero %dps23
\@for\x:=ABCDEFabcdef\do{\@makeother\x}%
diff --git a/texmf-dist/tex/latex/aeb-pro/ocganime.def b/texmf-dist/tex/latex/aeb-pro/ocganime.def
index f5a13ea2..5e54051e 100644
--- a/texmf-dist/tex/latex/aeb-pro/ocganime.def
+++ b/texmf-dist/tex/latex/aeb-pro/ocganime.def
@@ -8,7 +8,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% aeb_pro.sty package, %%
-%% Copyright (C) 2006--2019 D. P. Story %%
+%% Copyright (C) 2006--2021 D. P. Story %%
%% dpstory@acrotex.net %%
%% %%
%% This program can redistributed and/or modified under %%