summaryrefslogtreecommitdiff
path: root/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2017-07-13 10:25:48 +0900
committerNorbert Preining <norbert@preining.info>2017-07-13 10:25:48 +0900
commitcfe306ba1b7ec40855a300580b7981845d56edeb (patch)
treee2feaf2adf8a8afe43a995528097913793874d01 /texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
parent32d0671418a3cc6ad0465b06539ed54d96f77784 (diff)
add aeb-mlink aeb-pro aebxmp graphicxsp annot-pro
Diffstat (limited to 'texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex')
-rw-r--r--texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex430
1 files changed, 430 insertions, 0 deletions
diff --git a/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
new file mode 100644
index 00000000..52404840
--- /dev/null
+++ b/texmf-dist/doc/latex/aeb-pro/examples/aebpro_ex1.tex
@@ -0,0 +1,430 @@
+% use useacrobat option with pdftex and xetex if you have acrobat
+% use nopro if you don't have acrobat
+\documentclass{article}
+\usepackage[%
+ web={
+ pro,
+ designv,
+ tight,
+ centertitlepage,
+ },
+ aebxmp,
+]{aeb_pro}
+
+
+\DeclareDocInfo
+{
+ title=The AeB Pro Package\texorpdfstring{\\[1ex]}{: }Doc/Page Events \& Fullscreen Support,
+ author=D. P. Story,
+ university=Acro\negthinspace\TeX.Net,
+ email=dpstory@acrotex.net,
+ subject=Test file for the AeB Pro package,
+ keywords={Adobe Acrobat, JavaScript},
+ talksite=\url{http://www.acrotex.net},
+ talkdate={January 12, 2007},
+ copyrightStatus=True,
+ copyrightNotice={Copyright (C) \the\year, D. P. Story},
+ copyrightInfoURL=http://www.acrotex.net
+}
+\talkdateLabel{Published:}
+
+\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}
+
+%
+% Environments for setting the will and did things
+% Advanced > Document Processing > Set Document Actions
+%
+\begin{willClose}
+console.println("willClose");
+\end{willClose}
+
+\begin{willSave}
+console.println("willSave");
+\end{willSave}
+
+\begin{didSave}
+console.println("didSave");
+\end{didSave}
+
+\begin{willPrint}
+console.println("willPrint");
+\end{willPrint}
+
+\begin{didPrint}
+console.println("didPrint");
+\end{didPrint}
+
+%
+% Set the default full screen transition behavior
+%
+\setDefaultFS
+{%
+ fullscreen,
+ cursor=delay,
+ Trans=Random,
+ loop,
+ escape
+}
+%
+% This command has been around from insDLJS for many years,
+% used for first page open actions
+%
+\OpenAction{\JS{%
+% console.show();\r
+ console.clear();\r
+ console.println("Show the output of the page actions");
+}}
+%
+% Here, you can add an event that occurs with every page open
+% There is a command to cancel this out
+%
+\begin{everyPageOpen}
+var str = "every page open";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+%
+% Here, you can add an event that occurs with every page close
+% There is a command to cancel this out
+%
+\begin{everyPageClose}
+var str = "every page close";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageClose}
+%
+% To add an additional page open event to the first page, you
+% can use either the \OpenAction of insdljs, or you can use
+% this command indirectly through the addJSToPageOpen environment
+% in the preamble.
+%
+\begin{addJSToPageOpen}
+var str = "This should be the first page"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+
+%
+% To add an additional page close event to the first page, use
+% the addJSToPageClose environment in the preamble.
+%
+\begin{addJSToPageClose}
+var str = "This is the close action for the first page!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+
+\begin{document}
+
+\setPageTransitionAt{1,\atPage{test}-\atPage{exam},7}{Trans=Blend,PageDur=20,TransDur=5}
+%
+% This environment allows you to set a page open event at a particular page
+% if known. We can specify page ranges by marking the page with a \label,
+% then referencing that page with a special command \atPage, like so.
+%
+\begin{addJSToPageOpenAt}{1,\atPage{test}-\atPage{exam}}
+var str = ("Add to open page at pages between \\\\atPage{test} and \\\\atPage{exam}; Page " + (this.pageNum+1));
+console.println(str);
+\end{addJSToPageOpenAt}
+%
+% This environment allows you to set a page close event at a particular page
+% if known.
+%
+\begin{addJSToPageCloseAt}{5-8,12,15-}
+var str = "Add to close page at page " + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageCloseAt}
+
+%------------------ \maketitle ---------------------------------------
+
+\maketitle
+
+\tableofcontents
+
+%------------------ Document Content ---------------------------------
+
+\section{Document Actions}
+
+In this section we outline the various commands and environments for
+creating document and page actions for a PDF document.
+
+\newtopic As you read through this section, keep the console
+window open to see the various page events reporting back to the
+console.
+
+\subsection{Document Level JavaScripts}
+
+Creating document level JavaScript has been part of AeB for many years, use the
+\texttt{insDLJS} environment, as documented in \texttt{webeqman.pdf}.
+
+\subsection{Set Document Actions}
+
+The AeB Pro provides environments for the events willClose,
+willSave, didSave, willPrint and didPrint JavaScript events.
+Corresponding {\LaTeX} environments are created: \texttt{willClose},
+\texttt{willSave}, \texttt{didSave}, \texttt{willPrint} and
+\texttt{didPrint}. These are illustrated in the preamble of this
+document.
+
+\subsection{Open/Close Page Actions}
+
+When a page opens or closes a JavaScript occurs. Predefined JavaScript can execute
+in reaction to these events. AeB Pro provides several commands and environments.
+
+\subsubsection{Open/Close Page Actions for First Page}
+
+Because of the way AeB was originally written---\textsf{exerquiz}, actually---,
+the first page is a special case.
+
+There is a command, \cs{OpenAction}, that is part of the \texttt{insdljs} package for several years, that
+is used to introduce open page actions:
+
+\begin{sverbatim}
+\OpenAction{\JS{%
+ console.show();\r
+ console.clear();\r
+ console.println("Show the output of the page actions");
+}}
+\end{sverbatim}
+This command goes in the preamble to define action for the first page. This command is capable of defining
+non-JavaScript action, see the documentation of \texttt{insdljs} for some details.
+
+Environments, defined in AeB Pro, but uses macros from \texttt{insdljs} are
+\texttt{addJSToPageOpen} and \texttt{addJSToPageClose}. When placed in the preamble, these
+provide JavaScript support for page open/close events of the first page. In the preamble of this document, you'll find
+
+\begin{sverbatim}
+\begin{addJSToPageOpen}
+var str = "This should be the first page"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+\end{sverbatim}
+and
+\begin{sverbatim}
+\begin{addJSToPageClose}
+var str = "This is the close action for the first page!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+\end{sverbatim}
+
+\subsubsection{Open/Close Page Actions for the other Pages}
+
+The same two environments \texttt{addJSToPageOpen} and \texttt{addJSToPageClose} can be used
+in the body of the text to generate open or close actions for the page on which they appear.
+It's a rather hit or miss proposition because the tex compiler may break the page at an unexpected location
+and the environments are processed on the page following the one you wanted them to appear on.
+
+\newtopic Just below this paragraph are \texttt{addJSToPageOpen} and \texttt{addJSToPageClose} environments.
+Will the effects defined by these environments appear on this page or the next?
+%
+% These two environments allow you to set the page open and page close actions for
+% the current page. They do not overwrite the action created by the At versions
+% of the same environment.
+%
+\begin{addJSToPageOpen}
+var str = "Local open action"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageOpen}
+
+\begin{addJSToPageClose}
+var str = "Local Close action!"
+console.println(str + ": page " + (this.pageNum+1));
+\end{addJSToPageClose}
+
+\newtopic Another approach to trying to place \texttt{addJSToPageOpen} or \texttt{addJSTo\-Page\-Close}
+on the page you want is to use the \texttt{addJSToPageOpenAt} or \texttt{addJSToPageCloseAt} environments.
+These are the same of their cousins, but are more powerful. Each of these takes an argument that specifies
+the page, pages, and/or page ranges of the open/close effects you want. These two commands can go in the
+preamble, but I recommend putting them just after the \verb!\begin{document}! and before \cs{maketitle}, as
+illustrated in this document.
+
+The two environments take a comma-delimited list of pages and page ranges, for example, an argument might
+be \verb!{2-6,9,12,15-}!. This argument states that the open or close JavaScript listed in the environment
+should execute on pages 2 through 6, page 9, page 11, and pages 15 through the end of the document. Very cool!
+
+This is all well and good if you know exactly which pages are the
+ones you want the effects to appear. What's even more cool is that
+you can use {\LaTeX}'s cross-referencing mechanism to specify the
+pages. By placing these environments after \verb!\begin{document}!,
+the cross referencing information (the \texttt{.aux}) has been input
+and you can use \cs{atPage}, a special simplified version of
+\cs{pageref}, to reference the pages. See the verbatim listing
+below.
+
+\begin{sverbatim}
+\begin{addJSToPageOpenAt}{1,\atPage{test}-\atPage{exam}}
+var str = "Add to open page at pages between \\\\atPage{test} and \\\\atPage{exam} "
+ + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageOpenAt}
+\end{sverbatim}
+In the above, we specify a range \verb!\atPage{test}-\atPage{exam}!, which when expanded
+becomes a range of \pageref*{test}-\pageref*{exam}. If the first page number is larger than
+the second number, the two numbers are switched; consequently, \verb!\atPage{exam}-\atPage{test}!
+yields the same results.
+\begin{sverbatim}
+\begin{addJSToPageCloseAt}{5-8,12,15-}
+var str = "Add to close page at page " + (this.pageNum+1);
+console.println(str);
+\end{addJSToPageCloseAt}
+\end{sverbatim}
+Notice that in the \texttt{addJSToPageOpenAt} environment above,
+page 1 was specified. This specification is ignored. You do remember
+that the first page events need to be defined in the preamble, don't
+you.
+
+\subsubsection{Every Page Open/Close Events}
+
+As an additional feature, there may be an occasion where you want to
+define an event for every page. These are handled separately from the earlier
+mentioned open/closed events so one does not overwrite the other. These environments
+are \texttt{everyPageOpen} and \texttt{everyPageClose}. They can go in the preamble, or anywhere.
+They will take effect on the page they are processed on. Using these environments a second time
+overwrites any earlier definition. To cancel out the every page action you can use
+\cs{canceleveryPageOpen} and \cs{canceleveryPageClose}. The environments that appear
+in the preamble are
+
+\begin{sverbatim}
+\begin{everyPageOpen}
+var str = "every page open";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+
+\begin{everyPageClose}
+var str = "every page close";
+console.println(str + ": page " + (this.pageNum+1));
+\end{everyPageClose}
+\end{sverbatim}
+
+\section{Fullscreen Control}
+
+In this section we present the controlling commands for default
+fullscreen mode and for defining page transition effects.
+
+\subsection{\texorpdfstring{\protect\cs{setDefaultFS}}{\textbackslash setDefaultFS}}
+
+Set the default fullscreen behavior of Adobe Reader/Acrobat by using \cs{setDefaultFS}
+in the preamble. This command takes a number of arguments using \texttt{xkeyval}, each key
+correspond to a JavaScript property of the fullscreen object.
+
+\newtopic In the preamble of this document, I have placed \cs{setDefaultFS} specifying
+that the document should go into fullscreen mode with a random transition for its default
+transition effect.
+
+\begin{sverbatim}
+\setDefaultFS
+{%
+ fullscreen,
+ cursor=delay,
+ Trans=Random,
+ loop,
+ escape
+}
+\end{sverbatim}
+See the AeB Pro documentation for full documentation on these properties.
+
+\subsection{Page Transition Effects}
+
+There are two commands \cs{setPageTransition} and
+\cs{setPageTransitionAt}. The former sets the transition effects for
+the page on which it is processed. It suffers from the same malady
+as do \texttt{addJSToPageOpen} and \texttt{addJSToPageClose}, you
+have to hit the page you want. The latter command is the same
+remedy, as illustrated below.
+
+\begin{sverbatim}
+\setPageTransitionAt{1,\atPage{test}-\atPage{exam},7}{Trans=Blend,PageDur=20,TransDur=5}
+\end{sverbatim}
+See the AeB Pro documentation for full documentation on these properties.
+
+\newpage
+\parindent0pt
+
+\section{Test}\label{test}
+
+Hi world! Page \thepage
+
+\newpage
+
+Again, hi! Page \thepage
+
+\newpage
+
+
+\begin{addJSToPageOpen}
+app.beep(0);
+\end{addJSToPageOpen}
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+
+\newpage
+
+
+Canceling every open page
+
+\canceleveryPageOpen
+
+\newpage
+\section{Exam}\label{exam}
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+\begin{everyPageOpen}
+var z = "every page open, reset";
+console.println(z + ": page " + (this.pageNum+1));
+\end{everyPageOpen}
+
+Introducing the AeB Pro Family!
+
+\newtopic Resetting every page open this page
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\newpage
+
+Introducing the AeB Pro Family!
+
+\end{document}